- 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
162 lines
4.8 KiB
Markdown
162 lines
4.8 KiB
Markdown
# 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
|
|
|
|
1. `docs/architecture_summary.md`
|
|
2. `docs/rbac.md`
|
|
3. `docs/permission_strategy.md`
|
|
4. `docs/redis_cache_setup.md`
|
|
5. `docs/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
|
|
|
|
```mermaid
|
|
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
|
|
|
|
```bash
|
|
# 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
|
|
1. **Add Unit Tests**: Create comprehensive test coverage for models and services
|
|
2. **API Documentation**: Add OpenAPI/Swagger documentation
|
|
3. **Logging**: Implement structured logging throughout the application
|
|
4. **Configuration Management**: Centralize configuration management
|
|
|
|
### Medium Priority
|
|
1. **Repository Pattern**: Implement for better data access abstraction
|
|
2. **Caching**: Add Redis caching for frequently accessed data
|
|
3. **Background Jobs**: Implement Celery for background task processing
|
|
4. **Monitoring**: Add application monitoring and health checks
|
|
|
|
### Low Priority
|
|
1. **Event System**: Implement for decoupled component communication
|
|
2. **API Versioning**: Add support for multiple API versions
|
|
3. **GraphQL**: Consider GraphQL for more flexible data querying
|
|
4. **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 retorna `True`
|
|
- **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](docs/permission_fixes_summary.md)
|
|
|
|
---
|
|
|
|
**Última atualização**: Julho 2025
|
|
**Versão**: 1.0.0
|
|
**Status**: ✅ Produção |