15 Commits

Author SHA1 Message Date
ealmeida e7adb65d40 docs(okf): frontmatter OKF + rich abstracts nas descriptions
Normalizacao OKF dos .md: type/title/description/timestamp/layer +
descriptions factuais (rich abstracts). Apenas .md tracked; corpos intactos.
Parte da aplicacao OKF a /Dados/Dev (28-06-2026).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 22:55:40 +01:00
ealmeida 3752238699 feat(okf-hub): Fase F — converter fence-aware (path-style/acentos/pipe escapado) + validador fence-aware 2026-06-28 22:39:23 +01:00
ealmeida 0094b45bcf feat(okf-hub): adicionar okf-normalize-types.sh (normalizador taxonomia, Fase D) 2026-06-28 22:19:59 +01:00
ealmeida 88d2a7d78e fix(okf-hub): excluir ijfw/ (store memória) e .sync-conflict do validador/classify 2026-06-28 22:15:38 +01:00
ealmeida 4d3583b81a fix(okf-normalize): so tratar bloco --- como frontmatter se for mapa YAML valido
Bug: parse_frontmatter aceitava qualquer bloco ---...--- inicial como frontmatter.
Ficheiros que comecam com --- como regua/separador (ex: MEMORY.md seguido de
## heading) tinham o corpo tratado como frontmatter, e o ramo 'tem frontmatter'
injectava campos OKF la dentro -> YAML partido (5 casos no run do Cloud).

Fix: _looks_like_yaml_mapping() valida via PyYAML (isinstance dict) com fallback
heuristico (1a linha = chave, sem heading markdown no topo). Tambem: report_path
passou a escrever no dir do script (era path Hub hardcoded inexistente).

Validado: caso-bug + regressao (com/sem frontmatter) -> 0 erros, YAML valido.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 22:00:36 +01:00
ealmeida b78cc9c465 fix(okf-hub): excluir variantes MEMORY-*.md no validador e classify 2026-06-28 21:22:53 +01:00
ealmeida 8d4988ad3f fix(okf-hub): adoptar validador layer-aware (Fase D) + corrigir bugs (reserved-skip, folded-scalar desc, tr range); classify exclui index.md/log.md 2026-06-28 21:14:39 +01:00
ealmeida 6035542b67 feat: scripts de projectos vindos do Hub (podcast, alojadamaria, clip, ocr, etc.)
Movidos do vault Hub para centralizar scripts. Hub mantem symlinks.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 20:53:29 +01:00
ealmeida e810bbb114 feat(okf-hub): relocar tooling OKF do Hub para Dev/Scripts (regra: scripts fora do vault) 2026-06-28 20:46:17 +01:00
ealmeida e11b237a1e fix(beszel): webhook cria tickets em tbltickets, dept 7 Tecnologia
- Tabela correcta: tbltickets (não tbltasks)
- department: 7 (Tecnologia)
- project_id: 65 (DES Stack Workflow)
- assigned: Izito (staff 28)
- userid: 0 (interno)
- Auto-fecho via tblticket_replies
2026-06-24 06:03:49 +01:00
ealmeida ab3384c961 fix(beszel): webhook cria tarefas projecto 65, milestone 355, Izito
- Renomeado 'ticket' → 'tarefa' em todo o código
- Projecto: 65 (DES Stack Workflow)
- Milestone: 355 (Sistemas de Apoio — Tecnologia)
- Atribuído: Izito (staff 28)
- Criado por: Claude/AIkTop (staff 25)
- Corrigido Content-Length header bug
2026-06-24 05:35:47 +01:00
ealmeida 8e0dbbeca0 feat(bizin): scraper final com bypass Cloudflare + monitor de auto-reinício
- bizin_scraper_final.py: scraper híbrido curl_cffi + undetected-chromedriver
  com suporte a distritos e categorias, escrita segura (fsync) e enriquecimento externo
- monitor_scraper.sh: watchdog que reinicia o processo automaticamente em crash
- IMPLEMENTADO.md + README.md: actualizados para reflectir estado Abril 2026
- GEMINI.md: instruções técnicas de automação
- test_curl.py, test_curl_clean.py, test_playwright.py: scripts de teste/diagnóstico

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 17:16:48 +01:00
ealmeida 865a9459a6 feat(scraper): adicionar scrapers Bizin.eu v1+v2 + triangulação Desk #2055
- bizin_scraper.py: undetected-chromedriver + Selenium headless
- bizin_scraper_v2.py: curl_cffi impersonação Chrome110
- .desk-project: triangulação task #2055 / projecto DES 360º

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 11:52:17 +01:00
ealmeida 44e2250eb7 feat(v1.1.0): validação de base de dados SQLite
- Verificação de integridade ao conectar (PRAGMA integrity_check)
- Validação de esquema completo (4 tabelas, todas as colunas)
- Migração automática de colunas em falta
- Tabela translation_backups para guardar originais antes de traduzir
- CLI --verify-db e --restore-backup
- WAL mode para melhor concorrência

Tarefa #419, Discussão #33, Projecto #65
2026-03-12 14:43:09 +00:00
ealmeida 6ac6f4be2a init: scripts diversos (crawlers, conversores, scrapers) 2026-03-05 20:38:36 +00:00