diff --git a/CHANGELOG.md b/CHANGELOG.md index 65f9903..f981f24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,9 @@ Tudo o que muda de relevante no ESPDocs está aqui. O formato segue o - Internacionalização do link de acessibilidade "Pular para o conteúdo" (`skipToContent`) no layout raiz e trilhas de navegação (breadcrumbs). - Conversão de layouts de páginas (`series`, `comparacao`, `catalogo`, `componentes`, `seletor`, `diagnostico`, `glossario`) para `generateMetadata` dinâmico por locale com títulos, descrições e dados estruturados JSON-LD estritamente em inglês. - Implementação de checagem automatizada estrita em `scripts/check-i18n.mjs` que bloqueia strings idênticas entre `pt` e `en` fora da allowlist de termos técnicos. + - Correção de `headline`, propriedades, identificadores e âncoras `@id` (`#article`, `#about`, `#glossary`, `#organization`, `#author`) em todos os blocos de dados estruturados JSON-LD (`TechArticle`, `DefinedTermSet`, `AboutPage`, `WebSite`) nas páginas em inglês. + - Correção do `PageHero` em Server Components para suportar a propriedade `isEn` explicitamente, eliminando o texto "Início" no breadcrumb das rotas inglesas. + - Adição do script de verificação permanente `scripts/verifica-vazamentos.py` ao `smoke-imagem.sh`, validando todas as 36 rotas públicas em inglês contra vazamentos em texto visível e blocos `ld+json`. ## [1.2.0] - 2026-11-01 diff --git a/app/[locale]/catalogo/page.jsx b/app/[locale]/catalogo/page.jsx index ce32f9a..eda051c 100644 --- a/app/[locale]/catalogo/page.jsx +++ b/app/[locale]/catalogo/page.jsx @@ -167,6 +167,7 @@ export default function PlacasPage() { const hero = ( ", raw, re.DOTALL) + for i, s in enumerate(scripts): + try: + data = json.loads(s) + issues = check_jsonld(data, f"script[{i}]") + for p, v in issues: + print(f" ✖ JSON-LD vazamento em {u} -> {p}: \"{v}\"") + falhas += 1 + except Exception as e: + print(f" ✖ Erro no parse de JSON-LD em {u}: {e}") + falhas += 1 + + # 2. Verifica texto visível + clean = re.sub(r"<(script|style)[\s\S]*?", "", raw) + clean = html.unescape(re.sub(r"<[^>]+>", "\n", clean)) + hits = [l.strip() for l in clean.split("\n") if l.strip() and pt_regex.search(l)] + for h in hits: + print(f" ✖ Texto visível vazamento em {u}: \"{h[:120]}\"") + falhas += 1 + +if falhas == 0: + print(f" ✔ Todas as {len(urls)} rotas em inglês verificadas com ZERO vazamentos (texto e JSON-LD).") + sys.exit(0) +else: + print(f" ✖ Total de falhas detectadas: {falhas}") + sys.exit(1)