Desenvolvimento¶
Tudo que um novo dev precisa para contribuir.
Páginas¶
- Onboarding — primeiros 60 minutos: clonar, configurar, rodar
- Ambiente Local — Docker, .env, dependências, troubleshooting
- Retreino de Modelos — como rodar
run_training.py, ler MLflow - Debug de Modelos — meta.json, predição zerada, demoção manual
Convenções¶
| Camada | Padrão |
|---|---|
| Python | 3.11+, type hints, from __future__ import annotations |
| SQL | asyncpg parametrizado ($1, $2), EXPLAIN ANALYZE antes de query nova em prod |
| MQL5 | snake_case para functions, PascalCase para structs, prefixo g_ para globais |
| Frontend | Vanilla JS sem framework (mantém build-free), CSS variables em site.css |
| Configs | YAML em configs/, com comentários inline explicando cada parâmetro |
| Logs | logging.info/warning/error com contexto suficiente para grep posterior |
Workflow de feature¶
- Branch:
feat/<descricao-curta>oufix/<bug> - Implementar + testes (se for feature crítica)
- Atualizar
MATURITY_ANALYSIS.mdse gap fechou - Atualizar
docs/se mudou comportamento documentado - Commit com mensagem descritiva (não "fix" só)
- PR → revisar em produção pequena → merge → deploy
Áreas críticas (high blast radius)¶
Tocar aqui exige cuidado extra:
| Arquivo | Motivo |
|---|---|
configs/model.yaml |
Quality gates afetam quais modelos rodam em produção |
docker/init.sql |
Schema; migrations devem ser idempotentes (ALTER TABLE IF NOT EXISTS) |
app/api/main.py (auth) |
Bug aqui = sistema todo afetado |
app/db/repository.py::insert_execution |
EA reporta aqui; mudar interface quebra retro |
ea/ML_Sensorial_Scanner.mq5 |
Roda na máquina do cliente; bugs viram suporte 24/7 |
.env |
Secrets; nunca commitado |