API-Scardua/CLAUDE.md
Ricardo Leite 15c89c9038 Deploy inicial: API FastAPI + infra Podman/Caddy + docs
- 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>
2026-07-28 16:37:13 -03:00

2.3 KiB

API-Scardua

API FastAPI de integração da Scardua com serviços externos (Holmes, Apollo) e banco Oracle. No ar: https://api-scardua.flstecnologia.tech

Visão e roadmap

Ideia, arquitetura e roadmap completos: docs/arquitetura.md. Resumo: a API roda na nossa VPS (FLS), não na do cliente — recebe dados do Holmes do cliente (Scardua), trata, e devolve pro Oracle dele via um conector no server do cliente (o Oracle está em rede privada 10.16.x, inalcançável direto da VPS).

Stack

  • Python ≥3.10 · FastAPI + Uvicorn (ASGI)
  • Pydantic v2 (validação e config)
  • httpx (chamadas às APIs externas)
  • oracledb — driver Oracle em thin mode (sem Instant Client)
  • Deps em pyproject.toml (extra dev: pytest, ruff). requirements.txt = só runtime (usado no Dockerfile).

Estrutura

  • main.py — app FastAPI, middleware, rotas raiz (/health, /dados_retorno, /docs protegido), config de logging
  • app/config.py — carrega configs.json (Pydantic) no import (precisa existir ou a app não sobe)
  • app/middleware.pyblock_scanners: denylist + heurística anti-scanner (NÃO é allowlist estrita)
  • app/security.py — JWT + auth via Oracle (⚠️ incompleto — ver docs/known-issues.md)
  • app/services/holmes.py — integração com a API do Holmes
  • app/services/controle_api.py — grava telemetria/contadores no Oracle
  • app/v1/ — router versionado (/v1/...)

Rodar local (Windows)

Precisa do configs.json na raiz (NÃO versionado — ver configs.example.json).

uvicorn main:app --reload --port 8000

Config e segredos

  • Tudo vem de configs.json, lido em app/config.py. Está no .gitignore e .dockerignorenunca commitar.
  • Template seguro e versionável: configs.example.json.

Deploy

Container Podman na VPS (Debian 13, rootless + Quadlet + Caddy). Runbook: docs/deploy.md.

Convenções

  • Código, nomes e comentários em português.
  • Lint/format: ruff (config no pyproject.toml — linha 120, aspas duplas).
  • Logging: use logging.info/error; o nível é configurado em main.py via settings.log_level.

Problemas conhecidos

Lista completa em docs/known-issues.md. (A senha do Holmes já saiu do código pro configs.json — feito em 2026-07-23.)