19 KiB
19 KiB
Status de Implementação do Sistema de Controles
Gerado em: 2026-03-05 Baseado na análise do código-fonte e na demanda original.
Legenda de Status
| Ícone | Significado |
|---|---|
| ✅ | Implementado e funcional |
| ⚠️ | Parcialmente implementado |
| ❌ | Não implementado |
Resumo Geral
| Requisito | Status | Progresso |
|---|---|---|
| 1. Gerenciamento de Militantes | ⚠️ Parcial | 80% |
| 2. Gestão de Células e Setores | ⚠️ Parcial | 75% |
| 3. Registros de Depósitos | ⚠️ Parcial | 50% |
| 4. Cadastro de Objetivos | ❌ Não iniciado | 0% |
| 5. Relatórios Financeiros | ⚠️ Parcial | 40% |
| 6. Controle Hierárquico (RBAC) | ✅ Implementado | 90% |
| 7. Alterações de Responsáveis | ⚠️ Parcial | 60% |
| 8. Auditoria e Rastreabilidade | ❌ Não iniciado | 5% |
| 9. Segurança | ⚠️ Parcial | 70% |
| 10. Compatibilidade com Planilhas | ❌ Não iniciado | 0% |
| 11. Usabilidade / Responsividade | ⚠️ Parcial | 65% |
| 12. Carteirinha do Militante | ❌ Não iniciado | 0% |
| 13. Desacoplamento | ✅ Implementado | 90% |
Detalhamento por Requisito
1. Gerenciamento de Militantes
Status: ⚠️ Parcial (80%)
| Funcionalidade | Status | Observações |
|---|---|---|
| Cadastro de militantes | ✅ | Formulário completo com dados pessoais, profissionais, acadêmicos e sindicais |
| Edição de militantes | ✅ | Rota e modal de edição funcionais |
| Listagem de militantes | ✅ | Tabela com filtros e ordenação |
| Exclusão de militantes | ✅ | Com confirmação via modal |
| Níveis de permissão (8 níveis) | ✅ | RBAC hierárquico implementado com 8 níveis |
| Hierarquias de usuários | ✅ | Estrutura Célula → Setor → CR → CC |
| Status do militante (ativo, suspenso, etc.) | ✅ | 4 estados: ATIVO, DESLIGADO, SUSPENSO, AFASTADO |
| Status de Aspirante | ✅ | Período mínimo de 3 meses com avaliação obrigatória |
| Quadro-Orientador | ✅ | Responsabilidade especial implementada |
| Alterar nível do usuário | ✅ | Rota /usuarios/<id>/alterar_nivel |
| Avaliação do aspirante | ⚠️ | Modelo prevê, mas interface de avaliação pode estar incompleta |
| Histórico de avaliações | ⚠️ | Registro existe no modelo, verificar completude da UI |
O que falta:
- Verificar se a interface de avaliação do aspirante está completa com todos os campos (participação, desenvolvimento político, pontos fortes, recomendações)
2. Gestão de Células e Setores
Status: ⚠️ Parcial (75%)
| Funcionalidade | Status | Observações |
|---|---|---|
| Cadastro de células | ✅ | Formulário e rotas funcionais |
| Cadastro de setores | ✅ | Formulário e rotas funcionais |
| Cadastro de CRs | ✅ | Comitês Regionais cadastráveis |
| Cadastro de CC | ✅ | Comitê Central cadastrável |
| Organização hierárquica | ✅ | Células → Setores → CRs → CC |
| Responsável geral da célula | ✅ | Campo responsavel no modelo |
| Responsável de finanças | ✅ | Adicionado via migration recente |
| Responsável de imprensa | ✅ | Adicionado via migration recente |
| Edição de células | ✅ | Template editar_celula.html existe |
| Edição de setores | ⚠️ | Template de edição de setor não foi confirmado |
| Listagem hierárquica visual | ⚠️ | Listagens existem, mas visualização em árvore pode estar incompleta |
| Atribuição de responsáveis via UI | ⚠️ | Funcionalidade adicionada no banco, verificar interface |
O que falta:
- Confirmar que a UI de atribuição dos responsáveis de finanças e imprensa está completa
- Verificar se a edição de setores está implementada
- Adicionar visualização hierárquica em árvore (Célula → Setor → CR → CC)
3. Registros de Depósitos
Status: ⚠️ Parcial (50%)
| Funcionalidade | Status | Observações |
|---|---|---|
| Registro de cotas mensais | ✅ | Modelo CotaMensal com cálculo automático |
| Registro de pagamentos gerais | ✅ | Modelo Pagamento multi-tipo |
| Pagamento por PIX | ✅ | Modelo TransacaoPIX com QR code |
| Depósitos por célula | ✅ | Modelo PagamentoCelula |
| Depósitos por setor | ⚠️ | Rota existe, verificar completude do modelo |
| Depósitos por CR | ⚠️ | Rota existe, verificar completude do modelo |
| Valor, data e fonte do depósito | ✅ | Campos presentes nos modelos |
| Depósito vinculado a objetivo/material | ⚠️ | Parcialmente via TipoMaterial, mas sem Objetivo |
| Depósitos em eventos específicos | ❌ | Não há modelo de Evento com depósitos vinculados |
| Registro de coletas em plenárias | ❌ | Não implementado |
| Registro de coletas em formações | ❌ | Não implementado |
| Contribuintes permanentes (CF) | ⚠️ | Existe como tipo de pagamento, mas sem funcionalidade específica |
O que falta:
- Criar modelo
Evento(plenária, formação, célula) para vincular depósitos/coletas a eventos específicos - Implementar registro de coletas por evento com informação de "para qual objetivo"
- Separar claramente o registro de contribuintes permanentes (CF)
4. Cadastro de Objetivos
Status: ❌ Não implementado (0%)
| Funcionalidade | Status | Observações |
|---|---|---|
| Modelo de Objetivos | ❌ | Não existe no banco de dados |
| Objetivos por militante | ❌ | Não implementado |
| Objetivos gerais por evento | ❌ | Não implementado |
| Objetivos de venda de materiais | ❌ | Não implementado |
| Objetivos de coleta em eventos | ❌ | Não implementado |
| Objetivos por nível (Nacional, Regional, Setor, Célula) | ❌ | Não implementado |
| Acompanhamento de progresso | ❌ | Não implementado |
| Interface de cadastro de objetivos | ❌ | Nenhum template existe |
| Relatório de atingimento de objetivos | ❌ | Não implementado |
O que falta (tudo):
- Criar modelo
Objetivocom campos: tipo_evento, instancia (Célula/Setor/CR/CC/Nacional), militante (opcional), valor_meta, data_evento - Criar rotas CRUD para objetivos
- Criar interface para cadastro e acompanhamento
- Vincular depósitos/coletas a objetivos
- Criar relatório de progresso por objetivo
5. Relatórios Financeiros
Status: ⚠️ Parcial (40%)
| Funcionalidade | Status | Observações |
|---|---|---|
| Modelo de relatório de cotas | ✅ | RelatorioCotasMensais existe |
| Modelo de relatório de vendas | ✅ | RelatorioVendasMateriais existe |
| Template de criação de relatório | ✅ | Templates novo_relatorio_*.html existem |
| Template de listagem de relatórios | ✅ | Templates listar_relatorios_*.html existem |
| Lógica de geração de relatórios | ❌ | functions/relatorio.py está vazio |
| Relatório por célula | ❌ | Não implementado na lógica |
| Relatório por setor | ❌ | Não implementado na lógica |
| Relatório por CR | ❌ | Não implementado na lógica |
| Relatório por CC (nacional) | ❌ | Não implementado na lógica |
| Filtro por período | ⚠️ | Parcialmente nos templates |
| Cotas detalhadas | ⚠️ | Modelo existe, lógica de aggregação ausente |
| Contribuintes financeiros (CF) | ⚠️ | Tipo de pagamento existe, sem relatório específico |
| Contribuintes permanentes | ⚠️ | Sem segmentação clara nos relatórios |
| Coletas para eventos | ❌ | Depende do módulo de Eventos/Objetivos |
| Exportação (PDF/CSV/Excel) | ❌ | Não implementado |
O que falta:
- Prioridade máxima: Implementar
functions/relatorio.pycom toda a lógica de aggregação de dados - Criar queries de aggregação por nível hierárquico (célula, setor, CR, CC)
- Adicionar exportação em PDF e/ou CSV
- Criar relatórios consolidados com breakdown por categoria (cotas, CF, materiais, coletas)
6. Controle Hierárquico (RBAC)
Status: ✅ Implementado (90%)
| Funcionalidade | Status | Observações |
|---|---|---|
| 8 níveis de permissão | ✅ | De Militante Básico a Secretário Geral |
| Tabelas RBAC no banco | ✅ | roles, permissions, role_permissions, user_roles |
| Decorators de acesso | ✅ | @require_login, @require_permission, @require_role, etc. |
| Permissões por instância | ✅ | @require_instance_permission, @require_instance_access |
| Herança de permissões | ✅ | Nível superior herda permissões dos níveis abaixo |
| Filtragem de dados por hierarquia | ✅ | Queries filtradas por nível de acesso |
| Verificação de hierarquia entre usuários | ✅ | user.is_higher_or_equal_than() |
| Permissões de finanças e imprensa | ✅ | Roles específicos por instância |
| Testes de permissões | ✅ | tests/test_permissions.py existe |
O que falta:
- Garantir que o RBAC cobre os novos módulos a serem criados (Objetivos, Eventos, Auditoria)
7. Alterações de Responsáveis
Status: ⚠️ Parcial (60%)
| Funcionalidade | Status | Observações |
|---|---|---|
| Alterar responsável de célula | ✅ | Campo responsavel_id editável |
| Alterar responsável financeiro | ✅ | Adicionado via migration |
| Alterar responsável de imprensa | ✅ | Adicionado via migration |
| Rota para alterar nível do usuário | ✅ | /usuarios/<id>/alterar_nivel |
| Registro histórico de mudanças | ❌ | Não há tabela de histórico de responsáveis |
| Interface de histórico | ❌ | Sem template para visualizar mudanças |
| Notificação ao alterar responsável | ❌ | Não implementado |
O que falta:
- Criar modelo
HistoricoResponsavelcom: instancia_tipo, instancia_id, responsavel_anterior_id, responsavel_novo_id, tipo_responsabilidade, data_mudanca, alterado_por_id - Criar interface para visualizar histórico de responsáveis por instância
8. Auditoria e Rastreabilidade
Status: ❌ Não iniciado (5%)
| Funcionalidade | Status | Observações |
|---|---|---|
| Log de sessões | ⚠️ | last_activity e logout_reason no modelo Usuario |
| Log de alterações | ❌ | Sem modelo de AuditLog |
| Rastrear quem fez o quê e quando | ❌ | Não implementado |
| Log de criação/edição/exclusão | ❌ | Não implementado |
| Log de alterações financeiras | ❌ | Não implementado |
| Interface de auditoria para admins | ❌ | Não implementado |
| Filtro por usuário, data, ação | ❌ | Não implementado |
O que falta (tudo):
- Criar modelo
AuditLogcom: user_id, acao, modelo_afetado, registro_id, dados_anteriores (JSON), dados_novos (JSON), ip_address, timestamp - Implementar hooks automáticos nos modelos SQLAlchemy (usando
event.listen) para capturar INSERT, UPDATE, DELETE - Criar interface de auditoria no painel admin
- Adicionar filtros por usuário, data, entidade
9. Segurança
Status: ⚠️ Parcial (70%)
| Funcionalidade | Status | Observações |
|---|---|---|
| Autenticação com usuário e senha | ✅ | bcrypt para hash de senha |
| OTP / 2FA (autenticação em dois fatores) | ✅ | pyotp + QR code implementados |
| Proteção CSRF | ✅ | Flask-WTF com tokens CSRF |
| Timeout de sessão | ✅ | 30 minutos configurável |
| Reset de OTP pelo admin | ✅ | Rota /admin/users/<id>/reset-otp |
| Reset de senha pelo admin | ✅ | Rota /admin/users/<id>/reset-password |
| Ativar/desativar usuários | ✅ | Toggle de status |
| Criptografia de dados sensíveis | ⚠️ | cryptography está nas dependências, uso não confirmado |
| HTTPS / TLS | ⚠️ | Dependente de configuração de produção (Nginx/gunicorn) |
| Validação de CPF | ✅ | functions/validations.py |
| Rate limiting (anti-brute force) | ❌ | Não implementado |
| Logs de tentativas de login | ❌ | Não implementado |
O que falta:
- Implementar rate limiting nas rotas de login
- Garantir que dados financeiros sensíveis (valores, CPF) estejam criptografados no banco
- Documentar configuração de HTTPS para produção
10. Compatibilidade com Planilhas dos CRs
Status: ❌ Não iniciado (0%)
| Funcionalidade | Status | Observações |
|---|---|---|
| Importação de planilhas Excel | ❌ | Não implementado |
| Importação de planilhas CSV | ❌ | Não implementado |
| Exportação para Excel | ❌ | Não implementado |
| Exportação para CSV | ❌ | Não implementado |
| Mapeamento de colunas da planilha | ❌ | Não implementado |
| Validação de dados importados | ❌ | Não implementado |
| Interface de importação/exportação | ❌ | Nenhum template existe |
O que falta (tudo):
- Adicionar biblioteca
openpyxloupandaspara leitura/escrita de Excel - Criar rota de importação com preview e validação antes de confirmar
- Criar rota de exportação com filtros (por período, instância, tipo)
- Documentar o formato esperado das planilhas dos CRs
11. Usabilidade e Responsividade
Status: ⚠️ Parcial (65%)
| Funcionalidade | Status | Observações |
|---|---|---|
| Framework CSS responsivo | ✅ | Bootstrap via Bootstrap-Flask |
| Templates com layout responsivo | ✅ | base.html usa Bootstrap grid |
| Ordenação de tabelas | ✅ | table_sort.js implementado |
| Formulários com validação | ✅ | forms.js implementado |
| Modais para ações rápidas | ✅ | Modais para criar/editar/excluir militantes |
| Navegação por breadcrumb | ⚠️ | Verificar se está completo em todas as páginas |
| Otimização para mobile | ⚠️ | Bootstrap ajuda, mas tabelas complexas podem quebrar no mobile |
| Feedback visual de ações (toast/alert) | ⚠️ | Parcialmente implementado |
| Loading states | ⚠️ | Não confirmado |
| Suporte a múltiplos idiomas | ❌ | Sistema apenas em português (OK para o caso de uso) |
O que falta:
- Revisar tabelas grandes para mobile (considerar scroll horizontal ou layout card)
- Garantir feedback visual (mensagens de sucesso/erro) em todas as ações
- Testar em dispositivos móveis reais
12. Carteirinha do Militante
Status: ❌ Não iniciado (0%)
| Funcionalidade | Status | Observações |
|---|---|---|
| Geração de imagem PNG | ❌ | Pillow está nas dependências, mas sem uso para carteirinha |
| Logo da organização na carteirinha | ❌ | Não implementado |
| Número de cadastro do militante | ❌ | Verificar se existe campo de número único |
| QR Code com chave de recuperação | ❌ | qrcode está nas dependências, mas sem uso para carteirinha |
| Download da carteirinha | ❌ | Não implementado |
| Geração automática no cadastro | ❌ | Não implementado |
| Template visual da carteirinha | ❌ | Não implementado |
O que falta (tudo):
- Verificar/criar campo de número único de cadastro no modelo
Militante - Criar função em
functions/para gerar o PNG usando Pillow:- Fundo com template da organização
- Nome do militante
- Número de cadastro
- QR code com token de recuperação de senha
- Criar rota
/militantes/<id>/carteirinhaque gera e faz download do PNG - Adicionar botão "Baixar Carteirinha" na tela de visualização do militante
13. Desacoplamento
Status: ✅ Implementado (90%)
| Funcionalidade | Status | Observações |
|---|---|---|
| Mínimo de frameworks | ✅ | Flask + SQLAlchemy + bibliotecas padrão |
| Sem dependência de cloud | ✅ | Roda localmente com SQLite |
| Containerização com Docker | ✅ | Dockerfile e docker-compose.yml presentes |
| Build automatizado | ✅ | Makefile para comandos comuns |
| Configuração via .env | ✅ | python-dotenv utilizado |
| Banco de dados portável | ✅ | SQLite sem necessidade de servidor externo |
O que falta:
- Avaliar se
openpyxl/pandas(para planilhas) adicionaria dependência pesada demais - Documentar como compilar e rodar do zero no README
Backlog Priorizado
🔴 Alta Prioridade (bloqueadores de uso em produção)
| # | Tarefa | Requisito | Esforço |
|---|---|---|---|
| 1 | Implementar functions/relatorio.py com lógica de geração |
Req. 5 | Alto |
| 2 | Criar módulo de Objetivos (modelo, rotas, templates) | Req. 4 | Alto |
| 3 | Criar módulo de Eventos com registro de coletas/depósitos | Req. 3 | Médio |
| 4 | Implementar Auditoria (AuditLog automático) | Req. 8 | Médio |
🟡 Média Prioridade (funcionalidades importantes)
| # | Tarefa | Requisito | Esforço |
|---|---|---|---|
| 5 | Histórico de mudança de responsáveis | Req. 7 | Baixo |
| 6 | Carteirinha do militante em PNG | Req. 12 | Médio |
| 7 | Exportação de relatórios para PDF/CSV | Req. 5 | Médio |
| 8 | Rate limiting no login | Req. 9 | Baixo |
🟢 Baixa Prioridade (melhorias e integrações)
| # | Tarefa | Requisito | Esforço |
|---|---|---|---|
| 9 | Importação/exportação de planilhas Excel | Req. 10 | Alto |
| 10 | Revisão de responsividade mobile | Req. 11 | Médio |
| 11 | Completar interface de avaliação do aspirante | Req. 1 | Baixo |
| 12 | Verificar e completar edição de setores | Req. 2 | Baixo |
Arquitetura de Arquivos — O que existe
controles/
├── app.py ✅ 44 rotas implementadas
├── functions/
│ ├── database.py ✅ 25+ modelos SQLAlchemy
│ ├── rbac.py ✅ Sistema RBAC completo
│ ├── permissions.py ✅ Funções de checagem de permissão
│ ├── decorators.py ✅ Decorators de autorização
│ ├── auth.py ✅ Utilitários de autenticação
│ ├── cota_calculator.py ✅ Cálculo automático de cotas
│ ├── validations.py ✅ Validação de CPF
│ └── relatorio.py ❌ ARQUIVO VAZIO — precisa ser implementado
├── routes/
│ └── admin.py ✅ Rotas do painel admin
├── templates/ ✅ ~64 templates HTML
├── static/
│ └── js/ ✅ 9 módulos JavaScript
├── tests/ ✅ Testes de permissão e rotas admin
└── docs/ ✅ Documentação RBAC e hierarquia
Novos Arquivos a Criar
| Arquivo | Propósito |
|---|---|
functions/relatorio.py |
Lógica de geração de relatórios (já existe vazio) |
functions/audit.py |
Sistema de auditoria e log |
functions/carteirinha.py |
Geração de carteirinha em PNG |
routes/objetivos.py |
Blueprint para CRUD de objetivos |
routes/eventos.py |
Blueprint para CRUD de eventos/coletas |
routes/relatorios.py |
Blueprint para geração/download de relatórios |
templates/novo_objetivo.html |
Interface de cadastro de objetivo |
templates/listar_objetivos.html |
Listagem de objetivos |
templates/novo_evento.html |
Interface de cadastro de evento |
templates/listar_eventos.html |
Listagem de eventos |
templates/relatorio_consolidado.html |
Relatório financeiro consolidado |
templates/auditoria.html |
Interface de auditoria para admin |
Documento gerado automaticamente com base na análise do código-fonte em 2026-03-05.