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/healthPOST /api/v1/resume/extractPOST /api/v1/job/extractPOST /api/v1/match/analyzePOST /api/v1/ats/analyzePOST /api/v1/resume/tailorPOST /api/v1/github/repo/analyzeGET /api/v1/tracker/jobsPOST /api/v1/tracker/jobsPATCH /api/v1/tracker/jobs/{id}GET /api/v1/tracker/metricsGET /api/v1/tracker/requirementsGET /api/v1/tracker/funnelGET /api/v1/tracker/sources
Arquivos principais¶
apps/api/main.pyapps/api/config.pyapps/api/routes/apps/api/schemas/apps/api/services/scripts/run_api.pymodules/tracker/dashboard.py
Testes adicionados¶
tests/test_api_health.pytests/test_api_resume.pytests/test_api_job.pytests/test_api_match.pytests/test_api_ats.pytests/test_api_tailor.pytests/test_api_github.pytests/test_api_tracker.pytests/test_application_intelligence.py
Decisoes¶
- FastAPI e local por default.
- CORS restrito, configuravel por env.
- OpenAPI e fonte de verdade para clients HTTP.
ApiEnvelopepadronizaok,data,warningserequest_id.raw_textnao volta nas respostas de extracao, exceto quandoinclude_raw_text=true.- GitHub Analyzer pode usar
fallback_payloadpara cenarios sem API disponivel. - Tracker usa o mesmo
JobTrackere 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.