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>
This commit is contained in:
Ricardo Leite 2026-07-28 16:37:13 -03:00
commit 15c89c9038
22 changed files with 1397 additions and 0 deletions

View file

@ -0,0 +1,33 @@
# app/services/api_tracker.py
import logging
def registrar_contador(
conn, api, endpoint, metodo, status_code, sucesso, duracao_ms, erro=None
):
"""Grava uma linha na tabela contadores_api."""
cursor = conn.cursor()
try:
cursor.execute(
"""
INSERT INTO orvel_ti.contadores_api
(api, endpoint, metodo_http, status_code, sucesso, duracao_ms, mensagem_erro)
VALUES
(:api, :endpoint, :metodo, :status, :sucesso, :duracao, :erro)
""",
{
"api": api,
"endpoint": endpoint,
"metodo": metodo,
"status": status_code,
"sucesso": "S" if sucesso else "N",
"duracao": duracao_ms,
"erro": erro[:500] if erro else None,
},
)
conn.commit()
except Exception as e:
conn.rollback()
logging.error(f"Falha ao gravar contador: {e}")
finally:
cursor.close()