Pular para conteúdo

SotuHire v1.9.6 — Data Reliability, Migrations, Backups, Snapshots & Documentation Integrity

Destaques

  • Repository abstraction e SQLite local versionado.
  • Migração segura dos stores JSON/JSONL, sempre preservando os originais.
  • Backup, export, restore e data health com validação de integridade.
  • Snapshots imutáveis de vagas, currículos, editais e análises.
  • Tracker ligado à vaga, ao currículo e às análises realmente usados.
  • Deduplicação, identidade canônica e proveniência reforçadas.
  • Perfil Universal e Career Context auditados por finalidade.
  • Capabilities manifest e matriz de integração verificável.
  • AiRunStore para rastreabilidade sem segredos.
  • Extensão com handshake, snapshots, JSON-LD e fila offline confiável.
  • Painel de Dados e Privacidade, README e documentação reorganizados.
  • CI com matriz Windows/Ubuntu, Python 3.11/3.12 e testes frontend unitários.

Segurança

  • Nenhuma chave exposta foi usada ou validada.
  • Testes reais de IA continuam opt-in por variável local temporária.
  • Nenhuma chave deve entrar em Git, frontend, site, extensão empacotada, log, screenshot, backup ou release.
  • Sem auto-apply, candidatura ou inscrição automática.
  • Sem pagamento, boleto ou envio automático de documentos.
  • Sem scraping autenticado novo.
  • Sem alteração no fluxo authenticated-browser.

Migração

Primeiro execute:

python scripts/migrate_local_data.py --dry-run

O dry-run detecta stores, contagens, duplicatas, rejeições e warnings sem criar banco ou backup. Para aplicar:

python scripts/migrate_local_data.py --apply
python scripts/migrate_local_data.py --verify

O apply cria backup completo antes da transação, registra migration_history, valida schema/FKs e não apaga JSON/JSONL. Registros legados sem texto original não recebem snapshot inventado.

Para voltar aos arquivos antigos, mantenha os stores preservados e configure a versão anterior para lê-los. Para restaurar um backup:

python scripts/restore_data.py data/backups/ARQUIVO.zip
python scripts/restore_data.py data/backups/ARQUIVO.zip --apply

A primeira chamada valida sem gravar. O painel web exige confirmação textual e cria backup preventivo antes do restore.

Validações

Resultados locais antes da tag, todos sem chave externa:

  • ruff check . e ruff format --check .: aprovados;
  • pyright: aprovado, sem erros;
  • pytest: 483 aprovados e 2 ignorados por opt-in de IA externa;
  • cobertura: 86% de 16.105 statements, sem threshold artificial;
  • extensão: 46 testes direcionados aprovados e ZIP 0.9.2 validado;
  • frontend: 6 testes Vitest/Testing Library/MSW aprovados;
  • Playwright: 55 aprovados em Chromium, Firefox e WebKit; 5 skips intencionais;
  • build, lint e typecheck do frontend: aprovados;
  • mkdocs build --strict, compileall, contratos de capabilities/matriz/prompts e verificação de schema: aprovados;
  • instalação limpa a partir de git archive HEAD: aprovada, incluindo pytest, extensão, docs, frontend e E2E Chromium;
  • CI remoto: aprovado na matriz Ubuntu/Windows, Python 3.11/3.12, frontend, extensão e cobertura;
  • CodeQL remoto: aprovado para Python e JavaScript/TypeScript;
  • dry-run local: 1 perfil, 112 memórias, 3 candidaturas e 2 projetos; 69 memórias duplicadas detectadas;
  • data health: saudável, com um warning de oportunidade sem referência de origem;
  • backup local: seis arquivos com checksums e schema 3; restore validado em dry-run sem sobrescrita.

Nenhuma migração --apply foi executada sobre os dados pessoais da instalação auditada. O apply foi validado apenas em fixtures temporárias.

Gaps corrigidos

  • health check agora é read-only inclusive para banco pré-schema;
  • restore valida checksum, formato, versão, schema, SQLite e FKs;
  • manifest registra schema real e máximo suportado;
  • snapshots bloqueiam update/delete e usam FKs RESTRICT;
  • timelines legadas de edital seguem o contrato de lista;
  • scripts de dados executam corretamente fora da raiz;
  • Tracker preserva eventos e vínculos de snapshots;
  • permissões de IA, fallback OpenAI e warnings do frontend foram corrigidos;
  • fila e fallback da extensão deixam de ser decorativos/silenciosos.
  • teste GitHub deixou de depender da existência de evidências pessoais na máquina e agora passa em checkout limpo.
  • notificações do frontend aguardam o navegador ficar ocioso e não atualizam o Sonner durante renderizações concorrentes.
  • lockfile frontend inclui dependências opcionais necessárias ao npm ci em Linux;
  • instalação limpa sem navegador fica no job Python, enquanto Chromium/E2E permanece obrigatório no job frontend.

Pendências

  • benchmark completo e baseline humano de IA ficam para o ciclo de avaliação;
  • Exam Fit e plano de estudo ainda são resultados transitórios;
  • candidatos da análise GitHub direta precisam de revisão integrada mais completa na tela;
  • stores legados continuam durante a adoção gradual do SQLite;
  • a migração dos dados pessoais deve ser acionada conscientemente pela pessoa usuária.