# Sistema de Controles Sistema de gestão para controle de militantes, pagamentos, cotas e relatórios. ## Arquitetura MVC O projeto segue a arquitetura Model-View-Controller (MVC) para separação de responsabilidades: ### Models Os modelos representam as entidades do sistema e estão organizados em: - **models/entities/**: Classes de entidades do banco de dados (SQLAlchemy) - `base.py`: Configuração do SQLAlchemy e classe Base - `usuario.py`: Modelo de usuário - `militante.py`: Modelo de militante - `cota_mensal.py`: Modelo de cota mensal - etc. ### Controllers Os controladores contêm a lógica de negócio e manipulam os dados dos modelos: - **controllers/**: Implementação dos controladores - `auth_controller.py`: Controle de autenticação - `usuario_controller.py`: Operações com usuários - `militante_controller.py`: Operações com militantes - `home_controller.py`: Controlador da página inicial - etc. ### Views As views são os templates que exibem os dados para o usuário: - **templates/**: Templates Jinja2 - Organizados por funcionalidade (admin, militantes, cotas, etc.) ### Services Camada adicional para encapsular a lógica de acesso a dados: - **services/**: Serviços para acesso a dados - `database_service.py`: Gerenciamento de conexões com o banco - `usuario_service.py`: Acesso a dados de usuários - `militante_service.py`: Acesso a dados de militantes - etc. ### Routes Rotas da aplicação organizadas em blueprints: - **routes/**: Módulos de rotas (Flask Blueprints) - `main.py`: Rotas principais - `auth.py`: Rotas de autenticação - `admin.py`: Rotas administrativas - `militante.py`: Rotas para gerenciamento de militantes - etc. ## Instalação 1. Clone o repositório: ``` git clone [URL_DO_REPOSITORIO] ``` 2. Crie e ative um ambiente virtual: ``` python -m venv myenv source myenv/bin/activate # Linux/Mac myenv\Scripts\activate # Windows ``` 3. Instale as dependências: ``` pip install -r requirements.txt ``` 4. Inicialize o banco de dados: ``` python app.py --init ``` 5. Execute a aplicação: ``` python app.py ``` ## Credenciais padrão - **Administrador**: - Usuário: admin - Senha: admin123 ## Desenvolvimento Para adicionar novos recursos, siga a arquitetura MVC: 1. Crie modelos necessários em `models/entities/` 2. Implemente serviços para acesso a dados em `services/` 3. Crie controladores com lógica de negócio em `controllers/` 4. Adicione rotas em módulos existentes ou crie novos em `routes/` 5. Desenvolva templates em `templates/` ## Testes Execute os testes usando pytest: ``` python -m pytest ``` Ou use o script de teste: ``` ./run_tests.sh ```