v1.4.0 - Web-first Launcher + AI Settings¶
Objetivo¶
A v1.4.0 torna o frontend moderno em apps/web o fluxo local principal e completa a pendência mais
importante da v1.3: a tela Configurações → IA e Providers agora conversa com endpoints reais do
backend local.
Launcher local¶
Comando principal:
.\start-sotuhire.ps1
O launcher:
- verifica Python, Node e npm;
- valida que está na raiz do repositório;
- configura CORS local para Vite dev/preview;
- inicia
python scripts/run_api.py; - inicia
npm run devemapps/web; - roda
npm installapenas quandonode_modulesnão existe; - aguarda
http://127.0.0.1:8787/api/v1/health; - aguarda
http://localhost:5173; - abre o navegador, exceto com
-NoBrowser; - encerra API e frontend com
Ctrl+C.
Flags:
.\start-sotuhire.ps1 -NoBrowser
.\start-sotuhire.ps1 -SkipInstall
.\start-sotuhire.ps1 -ApiOnly
.\start-sotuhire.ps1 -WebOnly
.\start-sotuhire.ps1 -Production
URLs:
API: http://127.0.0.1:8787
API docs: http://127.0.0.1:8787/docs
Frontend: http://localhost:5173
Streamlit legado/dev¶
Streamlit não foi removido e continua em app.py:
streamlit run app.py
Ele fica documentado como modo legado/dev/local debug. O fluxo principal para uso local é
.\start-sotuhire.ps1.
Endpoints de IA¶
Implementados:
GET /api/v1/settings/ai
GET /api/v1/settings/ai/status
POST /api/v1/settings/ai
POST /api/v1/settings/ai/test
DELETE /api/v1/settings/ai
Providers:
local: pronto sem chave e sem chamada externa.gemini: usa a integração backend existente quando uma chave foi salva localmente.openai_future: status planejado.
Segurança dos segredos¶
A chave de IA:
- nunca é salva no frontend;
- nunca é salva em
localStorage; - nunca é salva em
sessionStorage; - nunca é retornada pela API;
- não deve aparecer em logs, docs, prints ou mocks;
- fica backend-side em arquivo local ignorado pelo Git.
Arquivos locais:
data/settings/ai-settings.json
data/secrets/ai-provider.local.json
O response seguro expõe apenas provider, modelo, status, configured, toggles, warnings e
updated_at.
Frontend¶
A tela Configurações → IA e Providers agora:
- carrega status ao abrir;
- salva provider, modelo, toggles e chave no backend local;
- limpa o campo da chave após salvar;
- testa conexão;
- remove chave;
- mantém modo Demo/mock quando a API está offline.
Smoke/E2E¶
Foi adicionado Playwright em apps/web.
Comando:
cd apps/web
npm run test:e2e
Cobertura inicial:
- Home renderiza;
- Dashboard renderiza;
- menu navega para Currículo;
- menu navega para Vaga;
- menu navega para Análise de Compatibilidade;
- menu navega para Fontes e Captura;
- menu navega para Configurações;
- botão Demo em Compatibilidade mostra resultado;
- Configurações mostra IA e Providers;
- texto público
Career Compassnão aparece.
Coleta autenticada¶
A v1.4.0 não altera:
- authenticated browser;
- Chromium/CDP;
- crawler logado;
- scraper autenticado;
- auto-apply;
- docs protegidos de compliance/coleta autenticada.
GitHub Pages¶
GitHub Pages continua estático/demo-oriented. Ele não roda Python, FastAPI, Streamlit, IA, storage local ou segredos.
Pendências¶
- Ligar as permissões de IA (
allow_match,allow_ats,allow_tailor,allow_github) ao roteamento real dos providers nos fluxos de análise. - Implementar provider
openai_futurequando houver decisão de contrato e segurança. - Adicionar testes E2E com API real rodando para salvar/testar/remover IA em ambiente temporário.