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_refexistia no Perfil/Lattes, mas era descartado emProfileContextItem; corrigido atéCareerContextEvidencee 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.
Settingsmantinha 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-browserfoi somente auditado; nenhum arquivo ou comportamento foi alterado.