Projeto: SigaAutoBot. Fonte principal: /www/wwwroot/sigaautobot.com.br/docs/CHANGELOG.md.
CHANGELOG - SigaAutoBot
Histórico de mudanças.
[2026-06-03] - BK-22 Atualização PNCP Automática
Fixed
- Scanner automático deixou de ignorar pregões PNCP já existentes e agora completa/atualiza órgão, local, objeto, datas, URLs e itens.
- Match de oportunidade existente passou a considerar
cnpj_orgao, órgão antigo com CNPJ e URL PNCP, evitando duplicata depois que o nome do órgão é limpo.
Added
- Task Celery
refresh_incomplete_pncp_auctionspara reparar pregões PNCP parcialmente salvos sem depender do botão manual. - Agenda Beat horária
refresh-incomplete-pncp-auctions-hourly, no minuto 10, com limite de 100 pregões por execução.
Validated
python3 -m py_compile app/services/scanner_service.py app/workers/comprasnet_tasks.py app/core/celery_app.py app/workers/__init__.pysem erros.git diff --checksem erros.- Execução manual da task encontrou 3 candidatos, atualizou 3 e retornou 0 erros.
- Banco ficou com
0pregões PNCP incompletos; IDs 1, 2 e 4 foram enriquecidos com órgão limpo, local e objeto. web,workerebeatreiniciados e saudáveis;/system/healthe/metricsretornaram 200.
[2026-06-03] - BK-21 Sync PNCP de Itens
Fixed
- Botão
Atualizar via PNCPdeixou de acessarPNCPItemData.valor_total, atributo que não existe no DTO centralizado. - Sincronização de itens agora usa
valor_total_estimadocom fallback para homologado e também aplica fallback equivalente no valor unitário. - Workflow
Deploy to VPSpassou a preservar corretamente o exit code do retry SSH/rsync e aumentou o timeout do restart remoto.
Validated
python3 -m py_compile app/api/routes/auctions.pyegit diff --checksem erros.POST /auctions/12/fetch-pncpretornou200comitens_sincronizados=4eitens_atualizados=3./auctions/12autenticado retornou200 text/htmle exibiu 7 itens doPE 2477/2025.- Run
26914919214evidenciou timeout TCP dos runners GitHub para SSH da VPS e bug de captura de exit code no retry anterior.
[2026-06-03] - BK-20 Detalhe de Pregão
Fixed
/auctions/{id}agora renderiza a tela de detalhes/itens para navegação normal do usuário.- A resposta JSON foi preservada para clientes que pedem
Accept: application/jsone também em/auctions/{id}/json. - Workflow
Deploy to VPSpassou a tentar o passo SSH/rsync até 4 vezes para reduzir falhas transitórias de conectividade do runner GitHub.
Validated
python3 -m py_compile app/api/routes/auctions.pyegit diff --checksem erros./auctions/12sem sessão redireciona para/login; com sessão retorna200 text/htmle mostraPE 2477/2025./auctions/12comAccept: application/jsone/auctions/12/jsoncontinuam retornando JSON200./system/healthe/loginretornaram200; containersweb,workerebeatsaudáveis após rebuild.- Run
26913256298aplicou o commit namain, mas o deploy automático falhou por timeout TCP no SSH antes de chegar aosshd; UFW, fail2ban e blacklist local não indicaram bloqueio na VPS.
[2026-06-03] - BK-19 Deploy GitHub Actions
Fixed
- Workflow
Deploy to VPSdeixou de usarappleboy/scp-actionpara cópia de arquivos e passou a sincronizar porrsyncvia SSH. - O deploy agora aplica exclusões efetivas para
.git,.env, backups, caches e artefatos locais, sem apagar o estado vivo remoto.
Validated
- Log da run
26902162248confirmou falha anterior no passoCopy Files (SCP)pordial tcp ... i/o timeoute warning de inputexcludeinesperado. - YAML do workflow validado localmente e
git diff --checksem erros. - Revisão externa OpenCode não encontrou bloqueadores no diff; Gemini excedeu timeout na segunda revisão.
- Run
26906496959confirmou falha posterior nossh-keyscan; o workflow deixou de depender desse preflight de 5s e passou a usarStrictHostKeyChecking=accept-newno SSH real.
[2026-06-03] - BK-18 Scanner por Favoritos
Added
- Task Celery
scan_favorite_org_opportunitiespara varrer somente CNPJs favoritos. - Botão
Buscar agora nos favoritosno Banco de Oportunidades. - Agenda diária
scan-favorite-org-opportunities-dailyàs 04:45.
Fixed
- Salvamento de inteligência competitiva passou a aceitar itens PNCP sem preço final homologado, usando
0quando o PNCP não informa valor.
Validated
- Execução manual por favoritos processou 15 CNPJs favoritos, encontrou 27 alvos PNCP, salvou 12 oportunidades em
auctions, 16 itens e 18 registros de inteligência, sem erro na task.
[2026-06-03] - BK-17 Banco de Oportunidades
Changed
/tools/opportunitiesagora inicia com escopoMeus favoritosquando o usuário possui CNPJs/órgãos favoritos.- A tela mostra contadores de oportunidades salvas, órgãos favoritos e oportunidades favoritas.
- O estado vazio diferencia base sem oportunidades salvas de filtro sem resultado.
[2026-06-03] - BK-16 Favoritos e Base RJ
Added
- Tabela
user_favorite_orgspara favoritos persistentes por usuário/CNPJ. - Ações de favoritar/remover órgão na base municipal e cadastro manual de favorito por CNPJ.
- Filtro de pregões por órgãos favoritos em
/auctionse/auctions/search. - Agendamentos Celery focados no RJ: descoberta diária, carga profunda semanal 2025/2026 e CAPAG diário RJ.
Changed
- Descoberta PNCP municipal deixou de exigir
poderId = E, porque municípios RJ de 2025/2026 aparecem no PNCP compoderId = N. update_capag_batchpassou a aceitar filtroufs.
Validated
- Migration
20260603_001aplicada em produção. - Carga RJ 2025/2026 salvou 26 CNPJs RJ reais, todos válidos pelo validador de CNPJ.
- CAPAG RJ processou 24 registros novos/pendentes, com 23 atualizados e 0 erros.
/system/healthe/metricsretornaram 200 após restart.
[2026-05-29] - Evolução em 5 Ondas
Added
Onda 1: Anti-Detecção
patchrightpara automação de browser com fingerprinting nativocurl_cffipara requisições com suporte a perfis reais de clientecamoufoxcomo engine alternativa (flagCAMOUFOX_ENABLED)- Flag
SCRAPER_ENGINE_VERSION=3.1para versionamento da engine anti-detecção
Onda 2: Extração LLM-Powered
- Firecrawl
/extractcom schemas Pydantic para scraping estruturado - Crawl4AI on-premise como alternativa (flag
CRAWL4AI_ENABLED) - LLMParser com cascade: Groq (Llama-3.3-70b) → fallback Google Gemini Flash
- Flags:
LLM_PARSER_ENABLED,LLM_PARSER_MAX_TOKENS,GROQ_API_KEY,GROQ_MODEL,GEMINI_API_KEY,GEMINI_MODEL
Onda 3: Cache Distribuído & Observabilidade
- RedisScraperCache substitui SQLite single-file (
SCRAPER_CACHE_BACKEND=redis) - Redis com namespace segregado (
SCRAPER_CACHE_REDIS_PREFIX) - Prometheus para métricas (
/metrics, porta 9090) - HTMX dashboard em
/admin/scraping/livecom atualização em tempo real
Onda 4: Sniper Avançado
- WebSocketSniffer (módulo
app/services/websocket_sniffer.py) para captura de eventos em tempo real via WS - CompetitorIntelligence com análise numpy de padrões de lance
- Endpoint
/api/analytics/competitor/{cnpj}com inteligência de concorrentes
Onda 5: Resiliência Avançada
- Golden HTML Tests para validação de frames capturados contra padrões esperados
- CaptchaSolver com suporte a 2Captcha e AntiCaptcha (flags
CAPTCHA_TWOCAPTCHA_KEY,CAPTCHA_ANTICAPTCHA_KEY) - pgvector + PregaoEmbeddings: Embeddings de pregões via Gemini para similaridade semântica
- Flag
CAPTCHA_DEFAULT_TIMEOUT=120para timeout de resolução
Changed
- Arquitetura de cache modernizada para escala horizontal (Redis)
- Engine de scraping passou de Selenium para Playwright com patchright
- Estratégia LLM para parsing mudou de single-provider para multi-provider cascade
[2026-03-11] - Documentacao
Changed
AGENTS.mdpassou a exigir validacao tecnica obrigatoria antes de commit, merge ou fechamento:php -lpara PHP alterado;node --check/node -cpara JS alterado;- validacao de JavaScript inline renderizado;
- validacao ponta a ponta de fluxos AJAX.
[2026-03-16] - Manutencao
Changed
.gitignorepassou a ignorar novos backups operacionais embackups/, evitando que artefatos locais comobackups/2026-03-11-runtime-docs/aparecam como sujeira no checkout da VPS.- Os backups historicos ja rastreados permaneceram preservados no Git e nao foram removidos.
[2026-03-30] - BK-04 Governanca de VPS
Changed
AGENTS.mdpassou a reconhecer explicitamente a camada global em/root.AGENTS.mddeixou de induzirgit pullautomatico na VPS como preflight.docs/GIT_WORKFLOW.mdpassou a removergit pulldo preflight e a tratar o estado local da VPS como potencialmente mais atual que o remoto.