Plataforma de helpdesk Flask integrada ao Firebase.
Project description
HelpNow – Plataforma de Helpdesk Inteligente
Aplicação web construída com Flask e Firebase Firestore para orquestrar o ciclo completo de atendimento interno. O projeto une padrões de projeto clássicos (Singleton, Template Method e Observer) com módulos de governança de SLA, inventário de ativos e retroalimentação dos solicitantes.
📌 Sumário
- Visão geral
- Principais recursos
- Arquitetura e padrões
- Pré-requisitos
- Configuração do ambiente
- Estrutura do projeto
- Fluxo por perfil de usuário
- Módulos de SLA e inventário
- Coleções no Firestore
- Execução e rotinas úteis
- Próximos passos sugeridos
🌐 Visão geral
| Item | Descrição |
|---|---|
| Stack | Python 3 · Flask · Jinja2 · Firebase Admin SDK · Firestore |
| Público-alvo | Equipes de suporte interno (Service Desk) com necessidade de controle de SLA e ativos |
| Padrões de projeto | Singleton (configuração), Template Method (provisionamento/relatórios), Observer (notificações de ticket) |
| Autenticação | Sessão Flask com hash de senhas via Passlib (bcrypt) |
| Deploy sugerido | App Flask com variáveis de ambiente apontando para credenciais Firebase |
🚀 Principais recursos
- Perfis diferenciados: Solicitanes abrem e acompanham tickets; Agentes tratam chamados; Administradores gerenciam cadastros, SLAs e ativos.
- Fluxo de tickets completo: abertura, atribuição, mensagens, troca de status e fechamento com histórico preservado.
- Painel do agente: visão dos tickets em andamento com destaque para chamados atribuídos ao usuário logado.
- Governança de SLA: cadastro, edição e (des)ativação de acordos de nível de serviço com tempos de resposta e resolução.
- Inventário de ativos: controle de equipamentos/recursos com status operacional e vínculo opcional a categorias de ticket.
- Gestão administrativa: telas para categorias, especialidades, usuários e agentes.
- Feedback pós-atendimento: solicitantes avaliam tickets encerrados; administradores analisam notas e comentários em um painel dedicado.
- Relatórios prontos: geração de relatório de tickets por status utilizando Template Method.
🧱 Arquitetura e padrões
firebase_config.py: inicializa o Firestore utilizando Singleton para evitar múltiplas inicializações do SDK.template_methods.py: define ganchos reutilizáveis para provisionamento de perfis e geração de relatórios.modelos_helpdesk.py: concentra as entidades (Usuario, Ticket, SLA, Ativo, etc.) com conversão automática para Firestore.daos.py: encapsula o acesso às coleções do Firestore, garantindo isolamento da camada de dados.- Observers (
LogObserver,NotificacaoEmailObserver,PainelDashboardObserver) respondem a mudanças de estado dos tickets.
🛠️ Pré-requisitos
- Python 3.9 ou superior.
- Credencial de serviço do Firebase com acesso ao Firestore (
helpnow-89742-firebase-adminsdk-fbsvc-c93ddd8230.json). - Conta Firebase habilitada para o Firestore no modo nativo.
- (Opcional) Git para versionamento.
🧪 Configuração do ambiente
# 1. Crie e ative um ambiente virtual
python -m venv .venv
source .venv/bin/activate # Windows PowerShell: .venv\Scripts\Activate.ps1
# 2. Instale as dependências
pip install -r requirements.txt
# 3. Exporta variáveis (ajuste o caminho da credencial)
export FLASK_APP=app.py
export FLASK_ENV=development # habilita recarregamento automático
export GOOGLE_APPLICATION_CREDENTIALS="$(pwd)/helpnow-89742-firebase-adminsdk-fbsvc-c93ddd8230.json"
# 4. Executa o servidor
flask run --port 5001 --debug
💡 O módulo
firebase_config.pytambém aceita que você altere o caminho do arquivo de credencial, caso prefira carregá-lo via variável de ambiente.
Semeando um administrador padrão
Ao executar python app.py, a função seed_admin() cria (caso não exista) o usuário:
| Senha | |
|---|---|
admin@helpnow.local |
admin123 |
Utilize essas credenciais para acessar o painel administrativo na primeira execução.
🗂️ Estrutura do projeto
├── app.py # Rotas Flask e orquestração do fluxo de tickets
├── daos.py # Data Access Objects para Firestore
├── firebase_config.py # Inicialização do Firebase Admin SDK
├── modelos_helpdesk.py # Entidades e lógica de domínio
├── template_methods.py # Implementações do padrão Template Method
├── seguranca.py # Funções de hash/verificação de senhas
├── configuracao_sistema.py # Singleton para configurações gerais
├── static/
│ └── style.css # Estilos das páginas
├── templates/ # Telas em Jinja2
│ ├── login.html
│ ├── painel_agente.html
│ ├── gerenciar_slas.html
│ ├── gerenciar_ativos.html
│ ├── ...
└── requirements.txt # Dependências do projeto
👥 Fluxo por perfil de usuário
Solicitanes
- Cadastram-se em
/usuarios/novo. - Abrem tickets em
/tickets/novo, selecionando categoria e descrevendo o problema. - Acompanham o status em
/tickets/meus, interagem via mensagens e avaliam o atendimento após o fechamento.
Agentes
- Visualizam tickets abertos em
/tickets/ativos. - Recebem atribuição via
/tickets/atribuir(feita por administradores/agentes autorizados). - Adicionam mensagens e encerram os chamados quando resolvidos.
Administradores
- Gerenciam usuários, categorias e especialidades.
- Mantêm cadastros de SLA (
/admin/slas) e inventário (/admin/ativos). - Acompanham feedbacks em
/admin/feedbackse geram relatórios em/relatorios/status.
📈 Módulos de SLA e inventário
| Tela | Objetivo | Destaques |
|---|---|---|
/admin/slas |
Criar e atualizar acordos de nível de serviço | Definição de tempos de resposta/resolução, ativação em um clique, edição in-line |
/admin/ativos |
Controlar recursos de TI | Cadastro rápido, quantidades, status operacional (em uso, estoque, manutenção, descarte) |
Além dessas telas, os cadastros podem ser relacionados às categorias e aos tickets conforme a evolução das regras de negócio.
🗃️ Coleções no Firestore
| Coleção | Propósito | Entidade |
|---|---|---|
usuarios |
Perfis de solicitantes, agentes e administradores | Usuario, Agente, Solicitante, Admin |
categorias |
Assuntos dos tickets e setor responsável | Categoria |
especialidades |
Habilidades técnicas dos agentes | Especialidade |
tickets |
Chamados com histórico de mensagens, status e atribuições | Ticket |
slas |
Acordos de nível de serviço | SLA |
ativos |
Inventário de hardware/software | Ativo |
feedbacks |
Avaliações dos solicitantes após o fechamento | FeedbackTicket |
🏃 Execução e rotinas úteis
- Executar em modo script:
python app.py(executa seed do admin e roda em modo debug na porta 5001). - Relatório por status: acesse
/relatorios/statuspara gerar a visão consolidada de chamados. - Exportar dependências: mantenha o arquivo
requirements.txtatualizado compip freeze > requirements.txtsempre que adicionar novas bibliotecas.
🔮 Próximos passos sugeridos
- Integrar SLAs automaticamente na criação de tickets, calculando prazos estimados de resposta/resolução.
- Permitir vincular ativos diretamente a tickets e gerar alertas de baixa disponibilidade.
- Adicionar testes automatizados (PyTest) para fluxos críticos.
- Publicar o frontend com estética responsiva (Bootstrap/Tailwind) e internacionalização.
Feito com 💙 para apoiar times de suporte na disciplina de Linha de Produto de Software. Ajuste, estenda e recombine os módulos conforme as variações desejadas da plataforma HelpNow.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file helpnow-0.1.0.tar.gz.
File metadata
- Download URL: helpnow-0.1.0.tar.gz
- Upload date:
- Size: 41.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aedc4f4420c9bb091dbd4aba8ecd1ac2f239e805bbe331662dffd7478380d058
|
|
| MD5 |
42ed6b6cff1908921fd9c854c2ae67e4
|
|
| BLAKE2b-256 |
f15c0a98ca448295f0e304b5d3350619b151e74f6c9fe442d0f53441fbfee77b
|
File details
Details for the file helpnow-0.1.0-py3-none-any.whl.
File metadata
- Download URL: helpnow-0.1.0-py3-none-any.whl
- Upload date:
- Size: 51.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdca41b7fd46001786933d4b0e574a91202828aba888c4f19ef80c596f01a78a
|
|
| MD5 |
b5c358c747af86a62bfabbb5b8d58d7e
|
|
| BLAKE2b-256 |
5b41a22b9a7c824b87b3262e3cf266a1e5f3ce9830d926b290847b6a86b9b3d1
|