Files
controles/docs/README.md
Mateus Tavares 2b1668206d - inits centralizados, READMEs atualizados
- 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
2026-02-20 17:19:15 -03:00

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