Pular para conteúdo

v1.7.0 - Public Sources, Importers & Capture History

A v1.7.0 transforma Fontes e Captura em um fluxo pratico de entrada de oportunidades. O foco foi importar vagas por texto, link publico simples, CSV, JSON e capturas da extensao/local companion, manter historico persistente, detectar duplicatas e conectar os itens ao fluxo Vaga -> Analise -> Candidaturas.

Nota v1.7.1: upload CSV/JSON pelo navegador, mescla visual de duplicatas, exportacao CSV/JSON e Diretório de Fontes foram adicionados em v1.7.1-intake-polish-source-discovery.md.

Objetivo

  • reduzir trabalho manual repetitivo ao organizar vagas;
  • preservar origem, texto original e link da oportunidade;
  • revisar antes de analisar ou salvar no tracker;
  • manter tudo local-first, sem banco remoto ou Supabase;
  • preparar fontes publicas seguras sem crawler amplo nem login automatico.

Implementado

Area Status
Modelos JobSource, JobImport, CaptureRecord, OpportunityInboxItem, ImportBatch, DuplicateCandidate Real
Store local em data/sources/imports.json Real
Importacao por texto Real
Importacao por link publico simples Real, com fallback manual
Importacao CSV Real
Importacao JSON Real
Caixa de Entrada em /sources Real
Busca/filtros por status e origem Real
Deduplicacao local explicavel Real
Importar para tela Vaga Real via API
Salvar em Candidaturas/Kanban Real via API
Historico da extensao/local companion Real, sem automacao sensivel
Fontes publicas recorrentes Roadmap/planejado
IA para enriquecer importacoes Parcial/planejado

Limites de seguranca

  • Nao foi criado login automatico.
  • Nao foi criado bypass de CAPTCHA.
  • Nao foi criado auto-apply.
  • Nao foi alterada a logica sensivel de authenticated browser, Chromium ou CDP.
  • O importador de URL tenta apenas leitura publica simples da URL informada.
  • Se a pagina bloquear acesso, exigir login ou nao permitir leitura simples, a API orienta colar o texto da vaga manualmente.
  • O usuario revisa o item antes de salvar em Candidaturas ou usar em analises.
  • Dados e capturas ficam em armazenamento local ignorado pelo Git.

Endpoints

GET    /api/v1/sources/imports
POST   /api/v1/sources/imports/text
POST   /api/v1/sources/imports/url
POST   /api/v1/sources/imports/csv
POST   /api/v1/sources/imports/json
GET    /api/v1/sources/captures
PATCH  /api/v1/sources/captures/{capture_id}
POST   /api/v1/sources/captures/{capture_id}/import-job
POST   /api/v1/sources/captures/{capture_id}/save-tracker
POST   /api/v1/sources/dedupe
GET    /api/v1/sources/stats

Tambem foi adicionado:

PATCH /api/v1/extension/captures/{capture_id}

Esse endpoint altera apenas status local de captura da Local Companion API.

Fontes e origens

Origens suportadas:

manual_text
manual_url
csv_import
json_import
extension_capture
companion_capture
public_source
official_api_future

public_source e official_api_future existem como preparacao de modelo/UX. A v1.7.0 nao implementa busca massiva nem varredura recorrente.

Importadores

Texto

POST /sources/imports/text recebe texto da vaga, URL opcional, empresa opcional, cargo opcional e notas. O backend usa parser local, preserva o texto original e cria um item na Caixa de Entrada.

POST /sources/imports/url recebe uma URL e tenta leitura publica simples. Em bloqueio/login/erro, cria item com status error e warning amigavel para colar texto manualmente.

CSV

Campos esperados:

cargo,empresa,link,local,descricao,fonte,status,observacoes
Analista de Dados,Empresa Exemplo,https://example.com/jobs/123,Remoto,"Python, SQL e dashboards",CSV Manual,nova,"vaga ficticia"
Desenvolvedor Backend,Tech Exemplo,https://example.com/jobs/456,Hibrido,"APIs, testes e bancos de dados",CSV Manual,nova,"vaga ficticia"

Aliases aceitos:

cargo/title
empresa/company
link/url
local/location
descricao/descrição/description
fonte/source
observacoes/observações/notes

JSON

Formato esperado:

[
  {
    "cargo": "Analista de Dados",
    "empresa": "Empresa Exemplo",
    "link": "https://example.com/jobs/123",
    "local": "Remoto",
    "descricao": "Python, SQL e dashboards.",
    "fonte": "JSON Manual",
    "status": "nova",
    "observacoes": "vaga ficticia"
  }
]

Deduplicacao

A deduplicacao v1.7.0 e local e explicavel. Criterios:

  • URL normalizada igual;
  • empresa + cargo + localidade;
  • empresa + cargo com similaridade simples;
  • hash de texto normalizado.

Decisoes modeladas:

possible_duplicate
confirmed_duplicate
not_duplicate

Na UI v1.7.0, o usuario pode arquivar/ignorar/manter separado. A v1.7.1 adiciona mescla visual preservando historico e origem.

Integracao com tracker e Kanban

Ao salvar um item em Candidaturas:

  • o backend cria uma entrada no tracker local;
  • preserva link e origem;
  • mapeia origem para collection method seguro;
  • o Kanban mostra fonte/origem nos cards e na lista.

IA nas importacoes

A v1.7.0 nao depende de IA para importar. A v1.7.1 adiciona o prompt source_import_enrichment_v1 para IA opcional e fallback local quando o provider falha ou nao esta configurado. Assim:

  • tudo funciona com IA desligada;
  • nao ha segredo no frontend;
  • nenhuma API key retorna ao navegador;
  • requisitos nao sao inventados.

Testes

Backend:

  • importacao texto;
  • link publico mockado;
  • link bloqueado com orientacao manual;
  • CSV valido e CSV com campos faltantes;
  • JSON valido e invalido;
  • dedupe por URL/empresa+cargo;
  • patch/archive/review de captura;
  • captura para Vaga;
  • captura para tracker;
  • stats;
  • extensao/local companion patch seguro.

Frontend:

  • abre Fontes e Captura;
  • Caixa de Entrada aparece;
  • importa texto/CSV/JSON fake;
  • mostra duplicata fake;
  • importa para Vaga;
  • salva em Candidaturas;
  • origem aparece no Kanban;
  • companion offline orienta .\start-sotuhire.ps1 -WithCompanion;
  • nao aparece Career Compass ou Match Engine 2.0.

Roadmap

  • mescla visual de duplicatas preservando historico;
  • importacao de arquivo real por upload no browser;
  • conectores recorrentes para RSS/feed publico com revisao manual;
  • APIs oficiais quando houver contrato claro;
  • IA opcional para tags, dominio e explicacao de duplicatas;
  • exportacao da Caixa de Entrada.