- App FastAPI (main.py, app/): rotas /health e /dados_retorno, middleware anti-scanner, logging configurado - Config via configs.json (Pydantic); segredos fora do codigo e do git (.gitignore) - Dockerfile (oracledb thin, HEALTHCHECK) + requirements.txt + .dockerignore - Deploy Podman/Quadlet + Caddy em deploy/ - Docs: CLAUDE.md + docs/ (arquitetura, deploy, known-issues) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.9 KiB
1.9 KiB
Problemas conhecidos / TODO — API-Scardua
Segurança
- ✅ Senha do Holmes movida pro config (2026-07-23): agora é
settings.holmes.usuario/settings.holmes.senha, lidos doconfigs.json(gitignored). Saiu do código. Recomendado ainda trocar a senha, já que ficou em texto claro antes. /dados_retornoestá público e sem autenticação — qualquer um pode postar (enche o log). OK pra teste; proteger com token na API real./docs,/redoc,/openapi.jsonficam expostos quandoambiente != prod(atrás de basic auth). Fechar de vez comambiente = prodno config, se não precisar deles.- Log mostra o IP do Caddy (10.89.0.x), não o real. Pra ver o IP de origem: rodar o uvicorn com
--proxy-headers --forwarded-allow-ips=*(seguro aqui, porque a porta 8000 não é publicada no host).
Código incompleto
app/infra/database.pynão existe —app/security.pyimportadb_instancedele e quebraria. Não há camada de conexão Oracle funcional ainda (nada chamacreate_poolno caminho que roda).app/security.pyusasettings.api.jwt_secret, que não existe emapp/config.py(ApiConfigsó temport/ambiente/workers).PyJWTé importado emsecurity.pymas não está nas dependências.app/v1/holmes/holmes.py→obter_dados_comprasé um stub (pass), sem tipo no parâmetro.pyproject.tomlapontareadme = "README.md", mas o arquivo não existe (quebrapip install .; por isso o Docker usarequirements.txt).
Middleware
block_scannersé denylist + heurística, não allowlist estrita: qualquer path fora da blocklist, com User-Agent normal, passa e vira 404 na app (ex.:/robots.txt). Não vaza nada, mas é mais permissivo do que parece. Dá pra inverter pra allowlist estrita (403 em tudo fora da lista permitida) — lembrar de incluir/docs,/redoc,/openapi.jsonna lista.