2025-07-01 13:42:56 -03:00
# Sistema de Controles OCI
Sistema de gerenciamento para a Organização Comunista Internacionalista (OCI) com controle de militantes, cotas, pagamentos e materiais.
2026-02-20 17:19:15 -03:00
## Trilha Recomendada de Leitura
2025-07-01 13:42:56 -03:00
2026-02-20 17:19:15 -03:00
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`
2025-07-01 13:42:56 -03:00
2026-02-20 17:19:15 -03:00
## Índice por Tema
2025-07-01 13:42:56 -03:00
2026-02-20 17:19:15 -03:00
### Arquitetura
2025-07-01 13:42:56 -03:00
2026-02-20 17:19:15 -03:00
- `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.
2025-07-01 13:42:56 -03:00
### 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
2026-02-20 17:19:15 -03:00
2025-07-01 13:42:56 -03:00
```bash
# Status do cache
make cache-status
# Logs da aplicação
make docker-logs
# Logs do Redis
docker-compose logs redis
```
## 📋 Recommended Next Steps
2025-04-03 15:58:07 -03:00
2025-07-01 13:42:56 -03:00
### 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
2025-04-03 15:58:07 -03:00
2025-07-01 13:42:56 -03:00
### 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
2025-04-03 15:58:07 -03:00
2025-07-01 13:42:56 -03:00
### 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
2025-04-03 15:58:07 -03:00
2025-07-01 13:42:56 -03:00
## 🔧 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.
2025-04-03 15:58:07 -03:00
2025-07-01 13:42:56 -03:00
### 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
2025-04-03 15:58:07 -03:00
2025-07-01 13:42:56 -03:00
### 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
2025-04-03 15:58:07 -03:00
2025-07-01 13:42:56 -03:00
### 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 )
2025-04-03 15:58:07 -03:00
2025-07-01 13:42:56 -03:00
---
**Última atualização**: Julho 2025
**Versão**: 1.0.0
**Status**: ✅ Produção