Reparar daño delta 2026-05-24: metas pisados por offset fijo en fix_imported_k2_metas e import_new_cartas #51

Closed
opened 2026-06-28 19:13:43 +00:00 by rafa · 0 comments
Owner

Resumen

Durante la sesión del 2026-05-24 se ejecutó el delta Joomla .com → WP local. Los scripts fix_imported_k2_metas.py e import_new_cartas.py usan un offset fijo wp_id = k2_id + 26040 que ya no es válido para deltas sucesivos. Resultado: 59 posts del delta anterior (2026-05-04) tienen metas pisados, y los 60 K2 nuevos no recibieron metas correctos.

import_new_content.py NO se ejecutó — paré antes para evitar más daño. Tiene el mismo bug por resolver.

Lo que se ejecutó hoy

  1. import_new_k2_items.py (live) → 60 nuevos K2 items 18043-18102 importados como WP posts 44160-44219 (correctos, pero sin metas)
  2. fix_imported_k2_metas.py (live) → asignó metas con offset fijo a posts 44083-44142 (rango erróneo, esos posts ya eran del delta anterior)
  3. import_new_cartas.py (live) → creó 11 cartas nuevas como posts 44220-44230 (correctos) + asignó _carta_id a posts 44083-44142 con offset (erróneo)
  4. import_new_content.pyNO ejecutado

Bug raíz

  • scripts/fix_imported_k2_metas.py:168wp_id = k2_id + WP_ID_OFFSET (WP_ID_OFFSET=26040)
  • scripts/import_new_cartas.py usa misma fórmula para mapear _carta_id a posts K2

El offset 26040 sólo era válido en el primer delta (2026-05-04) cuando MAX(wp_posts.ID) = 43913 = 17873 + 26040 justo antes del INSERT. En deltas sucesivos el MAX cambia (43913 → 44159 → 44219...) y la fórmula deja de cuadrar.

Estado actual del daño

  • 59 posts en rango 44083-44142 (cartas + content del delta 2026-05-04) con metas pisados:
    • _fgj2wp_old_k2_id con valores 18043-18102 (no debería tener ese meta — son ew4r_content)
    • _carta_id = 44230 (mal apuntado)
    • Posibles Idioma, categorías sobreescritas
  • 60 posts en rango 44160-44219 (K2 nuevos): existen y tienen post_content correcto, pero sin metas asignados (sin cats, sin lang, sin _carta_id)
  • 11 posts en rango 44220-44230 (cartas nuevas): correctos, dejar como están

Backup disponible

/home/rafa/joomla-migration/wordpress/wp-content/updraft/backup_2026-05-24-0400_Fe_Adulta_88c6bfc7cc45-db.gz (48 MB, generado a las 04:00 UTC del 2026-05-24, antes del delta). Estado limpio pre-daño.

Plan de reparación

  1. Extraer wp_postmeta y wp_term_relationships del backup para posts 44083-44219
  2. DELETE metas actuales y term_relationships de posts 44083-44159; restaurar los del backup
  3. Corregir scripts:
    • fix_imported_k2_metas.py: detectar wp_id por SELECT post_id FROM wp_postmeta WHERE meta_key='_fgj2wp_old_k2_id' AND meta_value=K2_ID en lugar de offset
    • import_new_cartas.py: misma corrección para el matching K2→WP
  4. Reaplicar lógica corregida sobre posts 44160-44219:
    • Categorías (Feadulta 71 + Artículos 1650 / Eucaristía 1648 / Evangelio 1647 según extra_fields)
    • Lang Polylang (extra_field 16: 1=es 2=en 3=fr 4=it 5=pt)
    • _fgj2wp_old_k2_id con K2 ID original
    • _carta_id por matching de fecha con cartas (incluye las 11 nuevas 44220-44230)
  5. Ejecutar import_new_content.py corregido (delta ew4r_content 9044-9133)
  6. Commit scripts corregidos al repo

Contexto crítico (para sesión nueva)

  • .org desmontado (2026-05-24). WP local Docker es la única fuente.
  • .com Joomla vivo — SSH feadulta@134.0.10.170 / 6Rm2qOF@eundwpda (validado hoy). DB fejoomla3 / 5FF-}5^[>7^pK4W9 / db fejoomla3. Shell muy restringido (sin which, uname); sí mysql, bash, ls. HOME=/entrada.
  • Joomla MAX(ids) hoy: ew4r_k2_items=18102, ew4r_content=9133. Último importado al WP: K2=17873 (pre-delta), 18102 (post-delta de hoy con daño); content=9043.
  • WP local docker: container wordpress-mysql, db wordpress_db, user wordpress_user, pass wordpress_pass.
  • Issue #29 cerrado hoy: templates page (26550) y single (42359) — eliminado margin-top:spacing--60 del <main> (doble espacio). Cambio queda en local hasta redeploy.

Cómo verificar daño

-- 59 posts pisados
SELECT COUNT(*) FROM wp_postmeta WHERE post_id BETWEEN 44083 AND 44142 AND meta_key='_fgj2wp_old_k2_id' AND CAST(meta_value AS UNSIGNED) > 18042;
-- 0 posts nuevos con K2 meta
SELECT COUNT(*) FROM wp_postmeta pm JOIN wp_posts p ON p.ID=pm.post_id WHERE p.ID BETWEEN 44160 AND 44219 AND pm.meta_key='_fgj2wp_old_k2_id';
## Resumen Durante la sesión del 2026-05-24 se ejecutó el delta Joomla `.com` → WP local. Los scripts `fix_imported_k2_metas.py` e `import_new_cartas.py` usan un offset fijo `wp_id = k2_id + 26040` que **ya no es válido** para deltas sucesivos. Resultado: 59 posts del delta anterior (2026-05-04) tienen metas pisados, y los 60 K2 nuevos no recibieron metas correctos. **`import_new_content.py` NO se ejecutó** — paré antes para evitar más daño. Tiene el mismo bug por resolver. ## Lo que se ejecutó hoy 1. `import_new_k2_items.py` (live) → 60 nuevos K2 items 18043-18102 importados como WP posts **44160-44219** (correctos, pero sin metas) 2. `fix_imported_k2_metas.py` (live) → asignó metas con offset fijo a posts **44083-44142** (rango erróneo, esos posts ya eran del delta anterior) 3. `import_new_cartas.py` (live) → creó 11 cartas nuevas como posts **44220-44230** (correctos) + asignó `_carta_id` a posts **44083-44142** con offset (erróneo) 4. `import_new_content.py` → **NO ejecutado** ## Bug raíz - `scripts/fix_imported_k2_metas.py:168` → `wp_id = k2_id + WP_ID_OFFSET` (WP_ID_OFFSET=26040) - `scripts/import_new_cartas.py` usa misma fórmula para mapear `_carta_id` a posts K2 El offset 26040 sólo era válido en el primer delta (2026-05-04) cuando `MAX(wp_posts.ID) = 43913 = 17873 + 26040` justo antes del INSERT. En deltas sucesivos el MAX cambia (43913 → 44159 → 44219...) y la fórmula deja de cuadrar. ## Estado actual del daño - **59 posts en rango 44083-44142** (cartas + content del delta 2026-05-04) con metas pisados: - `_fgj2wp_old_k2_id` con valores 18043-18102 (no debería tener ese meta — son `ew4r_content`) - `_carta_id = 44230` (mal apuntado) - Posibles `Idioma`, categorías sobreescritas - **60 posts en rango 44160-44219** (K2 nuevos): existen y tienen post_content correcto, pero sin metas asignados (sin cats, sin lang, sin _carta_id) - **11 posts en rango 44220-44230** (cartas nuevas): correctos, dejar como están ## Backup disponible `/home/rafa/joomla-migration/wordpress/wp-content/updraft/backup_2026-05-24-0400_Fe_Adulta_88c6bfc7cc45-db.gz` (48 MB, generado a las 04:00 UTC del 2026-05-24, **antes** del delta). Estado limpio pre-daño. ## Plan de reparación 1. Extraer `wp_postmeta` y `wp_term_relationships` del backup para posts 44083-44219 2. `DELETE` metas actuales y term_relationships de posts 44083-44159; restaurar los del backup 3. Corregir scripts: - `fix_imported_k2_metas.py`: detectar `wp_id` por `SELECT post_id FROM wp_postmeta WHERE meta_key='_fgj2wp_old_k2_id' AND meta_value=K2_ID` en lugar de offset - `import_new_cartas.py`: misma corrección para el matching K2→WP 4. Reaplicar lógica corregida sobre posts 44160-44219: - Categorías (Feadulta 71 + Artículos 1650 / Eucaristía 1648 / Evangelio 1647 según extra_fields) - Lang Polylang (extra_field 16: 1=es 2=en 3=fr 4=it 5=pt) - `_fgj2wp_old_k2_id` con K2 ID original - `_carta_id` por matching de fecha con cartas (incluye las 11 nuevas 44220-44230) 5. Ejecutar `import_new_content.py` corregido (delta ew4r_content 9044-9133) 6. Commit scripts corregidos al repo ## Contexto crítico (para sesión nueva) - **`.org` desmontado** (2026-05-24). WP local Docker es la única fuente. - **`.com` Joomla vivo** — SSH `feadulta@134.0.10.170` / `6Rm2qOF@eundwpda` (validado hoy). DB `fejoomla3` / `5FF-}5^[>7^pK4W9` / db `fejoomla3`. Shell muy restringido (sin `which`, `uname`); sí `mysql`, `bash`, `ls`. HOME=`/entrada`. - **Joomla MAX(ids) hoy:** `ew4r_k2_items=18102`, `ew4r_content=9133`. Último importado al WP: K2=17873 (pre-delta), 18102 (post-delta de hoy con daño); content=9043. - **WP local docker:** container `wordpress-mysql`, db `wordpress_db`, user `wordpress_user`, pass `wordpress_pass`. - **Issue #29 cerrado hoy:** templates page (26550) y single (42359) — eliminado `margin-top:spacing--60` del `<main>` (doble espacio). Cambio queda en local hasta redeploy. ## Cómo verificar daño ```sql -- 59 posts pisados SELECT COUNT(*) FROM wp_postmeta WHERE post_id BETWEEN 44083 AND 44142 AND meta_key='_fgj2wp_old_k2_id' AND CAST(meta_value AS UNSIGNED) > 18042; -- 0 posts nuevos con K2 meta SELECT COUNT(*) FROM wp_postmeta pm JOIN wp_posts p ON p.ID=pm.post_id WHERE p.ID BETWEEN 44160 AND 44219 AND pm.meta_key='_fgj2wp_old_k2_id'; ```
rafa closed this issue 2026-06-28 19:13:43 +00:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rafa/feadulta#51