Pular para conteúdo

Matriz de auditoria de integração — v1.9.5

Documento histórico preservado. Para o estado atual, consulte a matriz verificável de capacidades e a auditoria de dados e integração.

Auditoria executada sobre o commit inicial 354fbca e atualizada após as correções da v1.9.5. A matriz diferencia integração real, integração parcial deliberada e roadmap. “Parcial” não significa tela falsa: indica que a continuidade ainda exige colar/selecionar dados ou revisão humana.

Fluxo central validado

Perfil Profissional Universal
  -> ProfileContextOrchestrator
  -> CareerContextEngine
  -> evidências confirmadas + RAG local + proveniência
  -> Match / ATS / Tailor / Radar / Fontes / Extensão / GitHub / Editais / Tracker
  -> histórico, notificações, deduplicação e novos candidatos revisáveis

O Perfil Universal é preferido ao perfil legado quando contém dados. O legado permanece como fallback compatível. Contexto sensível é marcado e omitido de payload externo; a extensão recebe somente disponibilidade, resumo curto, fluxos, versão e status do provider.

Matriz por superfície

Superfície Entradas e saídas Store Identidade / dedupe Proveniência e consumidores Perfil / Context / RAG / IA Extensão / Radar / Tracker Estado e gap real
Dashboard KPIs de Perfil, Tracker, Radar, editais, notificações e capturas Agrega stores existentes; não cria store IDs dos stores de origem Links para entidades e totais derivados Consulta Perfil; métricas de IA/fallback ainda não têm agregador histórico Resume pendências dos três fluxos Completo para resumo local; histórico longitudinal de IA fica em roadmap
Currículo Texto -> ResumeProfileSchema Resultado transitório Conteúdo e request ID Provider/modelo/prompt/fallback no retorno Extração não altera Perfil automaticamente Pode seguir para Match/ATS/Tailor Parcial deliberado: confirmação no Perfil continua manual
Vaga Texto/URL -> JobPostingSchema Resultado transitório; Caixa/Tracker quando solicitado URL normalizada + título/empresa + conteúdo source_url, trace de IA Extração é neutra; Match usa Context Captura/extensão/Radar convergem para Vaga/Tracker Completo
Match Currículo/vaga -> scores/evidências/gaps Pode ser salvo no Tracker Request ID + entidade da vaga evidence_used, source refs e trace de IA Usa Perfil e RAG; sensível não sai sem permissão Alimenta ATS/Tailor/Tracker Completo
ATS Currículo/vaga/keywords -> revisão segura Transitório Request ID Separa evidência existente e keyword sem evidência Usa CareerContextPurpose.ATS Resultado pode orientar Tailor/Tracker Completo
Tailor Vaga + evidências -> bullets condicionais Exportação/Tracker sob ação Request ID Evidências e warnings preservados Usa Perfil/RAG; não inventa fatos Continuidade manual para currículo/Tracker Completo
GitHub / Portfólio URL/captura -> relatório e candidatos project-analyses.jsonl, memória owner/repo ou URL normalizada URL, arquivos amostrados, candidato revisável Usa contexto confirmado quando local/autorizado; IA rastreável Extensão captura; candidatos seguem ao Perfil Completo
Fontes / Captura Texto, URL, CSV, JSON, Radar, extensão source-imports.json URL, semântica, hash, duplicate_of Origem, batch, URL, notas e metadata Contexto orienta próximos passos; IA opcional Importa para Vaga/Tracker/Edital Completo
Extensão Página visível/projeto/lote -> Companion/site/provider captures.jsonl, fila/cache/preferências; segredo isolado no service worker URL normalizada, título/empresa, owner/repo capture ID, URLs/domínios, provider/modelo/prompt/fallback Local, IA do SotuHire ou Gemini/OpenAI próprios; recebe contexto seguro Funciona sem React; site importa Vaga/Edital/GitHub/Tracker Completo v0.9.1; catálogo oficial tem cache/fallback
Radar / Wishlist Wishlist + fontes -> resultados/alertas stores de Radar dedupe_key e identidade de oportunidade source/result/wishlist/run IDs Perfil opcional e Context aplicados; IA só explica Resultado segue à Caixa/Tracker Completo
Scheduler Agenda -> run/notificação schedule store schedule/run IDs + cooldown entidade relacionada na notificação Reconstrói contexto na execução Aciona Radar; não aplica automaticamente Completo enquanto API está ativa
Notificações Eventos do Radar -> central local notification store notification ID + related entity related_entity_type/id Contexto vem da execução que originou o evento Abre entidade relacionada Parcial: notificações nativas do SO são roadmap
Tracker / Kanban Vaga/captura/Radar -> candidatura manual history JSON oportunidade + source URL + record ID collection method, origem, requisitos Retorna contexto e gaps recorrentes Convergência de Fontes/Radar/Extensão Completo
Inteligência Tracker -> funil/requisitos/fontes Agregação do Tracker IDs/status de candidatura Métricas derivadas dos registros Evidência do Perfil classifica gaps Consome Tracker Completo; série histórica avançada é roadmap
Perfil CRUD/importação/confirmação -> contexto profiles.json atômico tipo + DOI/ORCID/URL/source ref/conteúdo source, source_ref, confidence e confirmação Fonte central preferida pelo Context Engine Recebe Lattes/GitHub/Extensão somente após revisão Completo
Lattes Texto -> candidatos -> Perfil Draft transitório; Perfil confirmado DOI, ORCID, Lattes ID e source ref Trecho, fonte, provider e revisão Parser local/IA; nada é salvo por inferência Perfil atualiza Context Completo para texto; PDF/HTML direto é roadmap
Editais / Concursos Texto/captura -> edital, Exam Fit e estudo notices.json atômico URL, número/órgão/banca ou hash fontes mescladas e motivo de consolidação Perfil/Context entram no score determinístico Captura da extensão e continuidade para estudo Completo na fundação; inscrição permanece fora de escopo
Plano de estudo Edital/cargo/horas -> blocos iniciais Transitório notice/role IDs matérias e trechos do edital Não depende de IA crítica Ligado ao edital Parcial deliberado: calendário avançado é roadmap
Configurações / IA Provider/modelo/permissões -> runtime app: secret no backend; extensão: service worker/session opt-in provider + modelo requested/used, prompt, fallback e request ID Gemini/OpenAI/local sem mistura silenciosa Chave do app nunca sai do backend; chave própria nunca sai do service worker Completo
Privacidade Regras e controles locais Flags e stores locais N/A warnings e indicação de sensível Compartilhamento externo é opt-in Sem cookies/sessão/headers capturados Completo para o escopo local

Dados órfãos, duplicados ou inconsistentes encontrados

  • source_ref existia no Perfil/Lattes, mas era descartado em ProfileContextItem; corrigido até CareerContextEvidence e trace de API.
  • Memória deduplicava somente por ID; agora também usa origem canônica/conteúdo e preserva source_refs.
  • Editais com tracking diferente podiam virar registros duplicados; agora consolidam identidade, fontes e motivo sem apagar histórico confirmado.
  • URL de oportunidade removia toda query, inclusive IDs úteis; agora remove apenas tracking e conserva parâmetros de entidade.
  • Settings mantinha um componente antigo de IA não consumido; removido após confirmar que a tela usava somente a implementação atual.
  • Mock de health anunciava v1.8.1 e catálogo incompleto; alinhado à v1.9.5.
  • A extensão tinha lista de ações pouco hierárquica, provider único e chave standalone sem isolamento; redesenhada com tabs, service worker, Gemini/OpenAI, storage de sessão por padrão, catálogo oficial, seleção de modelo funcional e análise pública avançada do GitHub.

Pontas mantidas por decisão

  • Perfil legado e Streamlit continuam como compatibilidade, não como segunda fonte preferencial.
  • Resultados transitórios de currículo/vaga/ATS/Tailor não são persistidos automaticamente.
  • Upload direto de PDF/HTML, plano de estudo avançado, notificações do sistema e histórico agregado de custo/latência de IA ficam no roadmap.
  • O fluxo authenticated-browser foi somente auditado; nenhum arquivo ou comportamento foi alterado.