seo_exceptions: ámbito por sitio — los dos blogs, independientes de verdad
Los waivers se indexaban SOLO por slug. Hoy no hay colisiones (los slugs ES van en español), pero nada lo impedía: un slug repetido entre blogs habría aplicado en silencio la excepción del sitio equivocado, y ese post habría dejado de auditarse sin que nadie se enterara. Riesgo latente, no activo — pero 'no pasa hoy' no es lo mismo que 'no puede pasar'. EXCEPTIONS[site][familia][slug] = razón accepted_reason(rule, slug, site='en') El default 'en' mantiene funcionando a seo_audit.py sin tocarlo (es EN-only). seo_watch y seo_finish pasan el sitio activo explícitamente. Añadido collisions(): lista los slugs waiveados en más de un sitio. Debe estar siempre vacío; si algo aparece ahí, hay una excepción ambigua que revisar. Verificado: mismo slug waiveado en EN se audita con normalidad en ES; los 16 waivers EN intactos; seo_audit, seo_watch (ambos sitios) y seo_finish (ambos sitios) siguen dando los mismos resultados que antes del cambio. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
f9f90f8999
commit
7b92079c41
+4
-4
@@ -89,10 +89,10 @@ def fetch(slug, cli):
|
||||
sys.exit(f"ERROR: no encuentro el post '{slug}' en {cli}")
|
||||
|
||||
|
||||
def violations_of(post):
|
||||
def violations_of(post, site):
|
||||
out = []
|
||||
for v in R.check_post(post):
|
||||
if v.severity == R.INFO or X.accepted_reason(v.rule, post.get("slug")):
|
||||
if v.severity == R.INFO or X.accepted_reason(v.rule, post.get("slug"), site):
|
||||
continue
|
||||
out.append(v)
|
||||
return out
|
||||
@@ -142,7 +142,7 @@ def cmd_prep(a):
|
||||
if v:
|
||||
print(f" {v[:150]}")
|
||||
|
||||
viol = violations_of(p)
|
||||
viol = violations_of(p, a.site)
|
||||
print(f"\n─── violaciones vigentes: {len(viol)} ───")
|
||||
for v in viol:
|
||||
print(f" [{v.severity}] {v.rule}: {v.message}")
|
||||
@@ -199,7 +199,7 @@ def cmd_apply(a):
|
||||
print("✓ aplicado")
|
||||
|
||||
after = fetch(a.slug, cfg["cli"])
|
||||
viol = violations_of(after)
|
||||
viol = violations_of(after, a.site)
|
||||
if viol:
|
||||
print(f"\n⚠ el post SIGUE con {len(viol)} violación(es):")
|
||||
for v in viol:
|
||||
|
||||
Reference in New Issue
Block a user