Skip to main content

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

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.py també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:

E-mail 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

  1. Cadastram-se em /usuarios/novo.
  2. Abrem tickets em /tickets/novo, selecionando categoria e descrevendo o problema.
  3. Acompanham o status em /tickets/meus, interagem via mensagens e avaliam o atendimento após o fechamento.

Agentes

  1. Visualizam tickets abertos em /tickets/ativos.
  2. Recebem atribuição via /tickets/atribuir (feita por administradores/agentes autorizados).
  3. Adicionam mensagens e encerram os chamados quando resolvidos.

Administradores

  1. Gerenciam usuários, categorias e especialidades.
  2. Mantêm cadastros de SLA (/admin/slas) e inventário (/admin/ativos).
  3. Acompanham feedbacks em /admin/feedbacks e 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/status para gerar a visão consolidada de chamados.
  • Exportar dependências: mantenha o arquivo requirements.txt atualizado com pip freeze > requirements.txt sempre 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

helpnow-0.1.0.tar.gz (41.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

helpnow-0.1.0-py3-none-any.whl (51.7 kB view details)

Uploaded Python 3

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

Hashes for helpnow-0.1.0.tar.gz
Algorithm Hash digest
SHA256 aedc4f4420c9bb091dbd4aba8ecd1ac2f239e805bbe331662dffd7478380d058
MD5 42ed6b6cff1908921fd9c854c2ae67e4
BLAKE2b-256 f15c0a98ca448295f0e304b5d3350619b151e74f6c9fe442d0f53441fbfee77b

See more details on using hashes here.

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

Hashes for helpnow-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fdca41b7fd46001786933d4b0e574a91202828aba888c4f19ef80c596f01a78a
MD5 b5c358c747af86a62bfabbb5b8d58d7e
BLAKE2b-256 5b41a22b9a7c824b87b3262e3cf266a1e5f3ce9830d926b290847b6a86b9b3d1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page