Pular para conteúdo

v1.2.0 - API Layer / FastAPI Foundation

Objetivo

Implementar uma FastAPI local, frontend-ready, sem quebrar o Streamlit nem a Local Companion API.

A v1.2.0 cria a ponte real entre o core Python e um frontend moderno futuro. A camada HTTP fica em apps/api, mas as regras continuam em modules/.

Como rodar

python scripts/run_api.py

Defaults:

http://127.0.0.1:8787

OpenAPI:

http://127.0.0.1:8787/openapi.json
http://127.0.0.1:8787/docs

Variaveis opcionais:

SOTUHIRE_API_HOST=127.0.0.1
SOTUHIRE_API_PORT=8787
SOTUHIRE_API_ALLOWED_ORIGINS=http://localhost:5173,http://127.0.0.1:5173

Endpoints implementados

  • GET /api/v1/health
  • POST /api/v1/resume/extract
  • POST /api/v1/job/extract
  • POST /api/v1/match/analyze
  • POST /api/v1/ats/analyze
  • POST /api/v1/resume/tailor
  • POST /api/v1/github/repo/analyze
  • GET /api/v1/tracker/jobs
  • POST /api/v1/tracker/jobs
  • PATCH /api/v1/tracker/jobs/{id}
  • GET /api/v1/tracker/metrics
  • GET /api/v1/tracker/requirements
  • GET /api/v1/tracker/funnel
  • GET /api/v1/tracker/sources

Arquivos principais

  • apps/api/main.py
  • apps/api/config.py
  • apps/api/routes/
  • apps/api/schemas/
  • apps/api/services/
  • scripts/run_api.py
  • modules/tracker/dashboard.py

Testes adicionados

  • tests/test_api_health.py
  • tests/test_api_resume.py
  • tests/test_api_job.py
  • tests/test_api_match.py
  • tests/test_api_ats.py
  • tests/test_api_tailor.py
  • tests/test_api_github.py
  • tests/test_api_tracker.py
  • tests/test_application_intelligence.py

Decisoes

  • FastAPI e local por default.
  • CORS restrito, configuravel por env.
  • OpenAPI e fonte de verdade para clients HTTP.
  • ApiEnvelope padroniza ok, data, warnings e request_id.
  • raw_text nao volta nas respostas de extracao, exceto quando include_raw_text=true.
  • GitHub Analyzer pode usar fallback_payload para cenarios sem API disponivel.
  • Tracker usa o mesmo JobTracker e o mesmo store local.
  • Application Intelligence fica em funcoes puras no backend, nao no frontend.

Fora do escopo

  • autenticacao SaaS;
  • deploy publico da API;
  • banco remoto;
  • frontend moderno completo;
  • migracao do Streamlit para legacy mode;
  • envio automatico de candidaturas.

Proximo marco

v1.3.0 deve conectar um frontend moderno real aos contratos v1.2.0, priorizando:

  • client HTTP tipado;
  • estados loading/empty/error;
  • telas de resume extraction, job extraction, match, ATS, Tailor, GitHub Analyzer e tracker;
  • consumo dos endpoints reais sem recalcular regra critica no frontend.