Painel da Rede Alimenta.
A precisão da AI, o desperdício num cenário de São Paulo, a segurança do código e as doações reais. Cada número leva um selo dizendo de onde vem.
- Real vem do banco, ao vivo. Zero até a primeira doação de verdade.
- Modelo medido no teste separado, com versão e amostra.
- Simulado dado inventado, marcado. Não é impacto real.
Qualidade da AI Modelo
O modelo discard_risk-v1 (HistGradientBoostingClassifier) estima a chance de um lote de comida ser descartado, pra quem tem mais risco sair primeiro. Treinado com dado simulado: aprendeu em 4.800 lotes simulados e testado em outros 1.200 que ele nunca viu.
Acurácia comparada
O modelo ganha das três comparações no mesmo teste. Acurácia sozinha engana, por isso a matriz ao lado.
Matriz de confusão (1.200 lotes de teste)
| Real × previsto | Previsto: aproveitado | Previsto: descartado |
|---|---|---|
| Real: aproveitado | 597 | 100 |
| Real: descartado | 153 | 350 |
Rótulo e dados simulados por um processo escondido com ruído, não por uma regra de prazo (dicionário). O CI retreina e confere estes números a cada commit.
Cenário de São Paulo Simulado
6.000 lotes simulados, 200.677 kg. No histórico simulado, 41,9% dos lotes foram descartados. O que não foi daria cerca de 226.472 refeições (estimativa).
Refeições estimadas por região
Descarte por tipo de comida
Alertas de validade crítica Simulado
Numa manhã simulada com 400 lotes, 225 vencem em até 48 horas e 106 têm risco alto pelo modelo. Os que mais precisam sair primeiro:
| Lote | Comida | Região | kg | Vence em | Risco de descarte |
|---|---|---|---|---|---|
| H05194 | Refeição pronta · refrigerado | Sul | 2,9 | 3,1 h | alto 99,4% |
| H03603 | Refeição pronta · ambiente | Norte | 11,9 | 4,9 h | alto 99,4% |
| H01387 | Refeição pronta · refrigerado | Leste | 31 | 2,7 h | alto 99,2% |
| H01339 | Refeição pronta · refrigerado | Sul | 28,4 | 6 h | alto 99,2% |
| H02611 | Refeição pronta · ambiente | Leste | 3,6 | 4 h | alto 99,1% |
| H05019 | Refeição pronta · ambiente | Centro | 6,1 | 4,2 h | alto 99,0% |
| H03692 | Refeição pronta · refrigerado | Sul | 30,3 | 2,1 h | alto 99,0% |
| H00381 | Refeição pronta · refrigerado | Centro | 2,1 | 5,5 h | alto 99,0% |
O risco é uma estimativa do modelo, não laudo sanitário. Comida vencida nunca entra: o servidor recusa validade no passado.
Segurança e entrega contínua Real
Por ferramenta
- Bandit (código Python)1 → 1
- Trivy fs (dependências, segredos, Dockerfile)1 → 0 (1 corrigida)
- Trivy config (IaC do repositório)1 → 0 (1 corrigida)
- Trivy imagem (rede-alimenta)173 → 164 (9 corrigidas)
Gates do pipeline
Bandit: reprova severidade >= MEDIUM e confiança >= MEDIUM.
Trivy: reprova HIGH/CRITICAL com correção disponível (--ignore-unfixed).
Testes e retreino: pytest e o retreino do modelo conferido com o metrics.json.
Deploy: a main só publica depois de tudo isso verde, e a API em api.pontape.org segue a main.
Esta versão do site é do commit 94cc72e. Ver a última execução do pipeline no GitHub, com os relatórios de cada scan. Riscos aceitos e por quê estão no resumo; a análise de ameaças está no STRIDE.
Impacto real Real
Buscando os números no servidor da Rede Alimenta.
Refeições estimadas: kg entregues ÷ 0,544 kg por refeição (Feeding America). Tempo até o destino: do registro da doação até a escolha de quem recebe. Contas de teste ficam fora. Ver os dados crus
Entregas por cidade do distribuidor
Por dentro
- API com Swagger FastAPI em Docker no servidor próprio, banco Postgres no Supabase.
- Código do servidor e do modelo Python, scikit-learn, Docker e Compose.
- Como funciona e como rodar no seu computador com docker compose up.