Pular para conteúdo

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 dev em apps/web;
  • roda npm install apenas quando node_modules nã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 Compass nã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_future quando houver decisão de contrato e segurança.
  • Adicionar testes E2E com API real rodando para salvar/testar/remover IA em ambiente temporário.