- padronizando o nome de get_db_connection e session para get_db_session, para não confundir com session do Flask ou sessoes web
- corrigindo potenciais erros
-- has_permission nao consegue com lazy load carregar permission depois de load_user fechar a conexao, entao joinedLoad com Permission antes de fechar
-- db.rollback não existe caso db = get_db_session() apareça muito depois dentro do try, padronizando antes de try
--- comparar role por nivel (Role.SECRETARIO_GERAL) e nao por nome ("Secretario Geral")
- unificacao de get_otp_qr_code
- mudança de nowutc() para now(UTC) conforme novo padrão
4.8 KiB
4.8 KiB
Sistema de Controles OCI
Sistema de gerenciamento para a Organização Comunista Internacionalista (OCI) com controle de militantes, cotas, pagamentos e materiais.
Trilha Recomendada de Leitura
docs/architecture_summary.mddocs/rbac.mddocs/permission_strategy.mddocs/redis_cache_setup.mddocs/permission_fixes_summary.md
Índice por Tema
Arquitetura
docs/architecture_summary.md: visão geral do estado da arquitetura.docs/mvc_refactoring.md: detalhes da refatoração MVC.
Permissões e Segurança de Acesso
docs/rbac.md: níveis de papel e herança de permissões.docs/permission_strategy.md: estratégia de filtragem de dados e uso em templates.docs/permission_fixes_summary.md: resumo das correções aplicadas em permissões.
Infra e Performance
docs/redis_cache_setup.md: configuração e uso de cache Redis.
Histórico Técnico
docs/alteracoes_db_connection.md: alterações no gerenciamento de conexão/sessão de banco.
Como Manter Esta Pasta Organizada
- Preferir um arquivo por assunto (evitar documentos muito amplos).
- Começar cada documento com contexto, problema e decisão.
- Registrar trade-offs e impactos de manutenção.
- Atualizar este índice sempre que um novo documento for criado.
Diagrama da Arquitetura
graph TD
A[User Request] --> B[Controller Layer]
B --> C{Permission Check}
C -->|Admin| D[All Data]
C -->|CC| E[All Data]
C -->|CR| F[CR Data Only]
C -->|Setor| G[Setor Data Only]
C -->|Célula| H[Célula Data Only]
C -->|No Permission| I[Empty Data]
D --> J[Template Rendering]
E --> J
F --> J
G --> J
H --> J
I --> J
J --> K[Always Renders Successfully]
📊 Funcionalidades
Gestão de Militantes
- Cadastro completo com dados pessoais e profissionais
- Endereços e contatos
- Responsabilidades organizacionais
- Estados (Ativo, Desligado, Suspenso, Afastado)
Gestão Financeira
- Cotas mensais
- Pagamentos diversos
- Vendas de materiais
- Assinaturas anuais
Estrutura Organizacional
- Comitês Centrais
- Comitês Regionais
- Setores
- Células
Relatórios
- Relatórios de cotas
- Relatórios de vendas
- Relatórios de pagamentos
📈 Performance
Cache Redis
- Dashboard statistics: 5 minutos
- Militante data: 30 minutos
- Pagamento data: 30 minutos
- API responses: Variável
Monitoramento
# Status do cache
make cache-status
# Logs da aplicação
make docker-logs
# Logs do Redis
docker-compose logs redis
📋 Recommended Next Steps
High Priority
- Add Unit Tests: Create comprehensive test coverage for models and services
- API Documentation: Add OpenAPI/Swagger documentation
- Logging: Implement structured logging throughout the application
- Configuration Management: Centralize configuration management
Medium Priority
- Repository Pattern: Implement for better data access abstraction
- Caching: Add Redis caching for frequently accessed data
- Background Jobs: Implement Celery for background task processing
- Monitoring: Add application monitoring and health checks
Low Priority
- Event System: Implement for decoupled component communication
- API Versioning: Add support for multiple API versions
- GraphQL: Consider GraphQL for more flexible data querying
- Microservices: Evaluate splitting into microservices if needed
🔧 Correções de Permissões Recentes
Problema Identificado
Durante a implementação inicial, foi descoberto que aplicar restrições no nível de template estava causando o desaparecimento dos menus administrativos.
Solução Implementada
- Controle movido para o nível de dados: Filtragem acontece nos controllers
- Templates simplificados:
user_can()sempre retornaTrue - Menus sempre visíveis: Nenhuma restrição na interface
- Degradação graceful: Erros retornam dados vazios, nunca quebram
Controllers Atualizados
- ✅
militante_controller.py- Filtragem hierárquica implementada - ✅
cota_controller.py- Controle baseado em permissões - ✅
material_controller.py- Acesso flexível por nível - ✅
pagamento_controller.py- Filtragem organizacional
Templates Corrigidos
- ✅
listar_cotas.html- URLs e referências corrigidas - ✅
listar_tipos_materiais.html- Variáveis e campos ajustados - ✅
base.html- Menus sempre visíveis
Status dos Testes
Funcionais: /, /dashboard, /pagamentos, /materiais
Com problemas: /militantes, /cotas, /tipos-materiais, /admin/dashboard
Para detalhes completos, consulte: docs/permission_fixes_summary.md
Última atualização: Julho 2025 Versão: 1.0.0 Status: ✅ Produção