Commit Graph

12 Commits

Author SHA1 Message Date
rafa 14b94be5ea fix: reescribir generador del calendario litúrgico 2026-2040 (issue #20)
Retira el commit 2713e13, que tenía 3 causas raíz confirmadas por Opix y
Claudix (ver issue #20, comment-676 y siguientes): domingos de TO/Pascua
desplazados -1 semana, Cuaresma contada mal en bloques de 7 desde Ceniza, y
Adviento evaluado antes que Navidad (fuga el 26-31 de diciembre, rompe la
Sagrada Familia). Además special() daba precedencia a fiestas fijas sobre
domingos y hasta sobre la Pascua misma (2035: la Anunciación se comía el
Domingo de Resurrección).

Reescritura completa:
- Numeración de Tiempo Ordinario con omisión de semanas según la norma real
  (Normas Universales sobre el Año Litúrgico, 1969): se cuenta hacia atrás
  desde Cristo Rey = semana 34.
- Las 3 semanas tapadas por Pentecostés/Trinidad/Corpus llevan ferias de TO
  en sus días laborables (el TO arranca el lunes después de Pentecostés).
- Ascensión y Corpus trasladados al domingo (práctica CEE); Bautismo del
  Señor, Sagrada Familia, Cristo Rey y Ascensión tienen índice propio (antes
  se disolvían en la etiqueta genérica del domingo vecino).
- 26 dic-Bautismo indexado por fecha fija (como el libro), no por día de la
  semana.
- Precedencia real para las 11 solemnidades de fecha fija: ceden ante
  domingos de Adviento/Cuaresma/Pascua, Ramos, lunes-jueves de Semana Santa,
  Triduo, Ascensión y Pentecostés; entre solemnidades "del Señor" > "de un
  Santo" (Corpus gana a San Juan Bautista en 2038, no al revés). Anunciación
  con la regla de traslado específica documentada.

Cambio de diseño: cada fecha referencia directamente `book_index` (1-500)
sobre entradas-libro.json en vez de una clave de texto libre — evita que el
vocabulario del calendario diverja del contenido real del libro.

Test de aceptación (tests/test_liturgical_calendar_coverage.py): cobertura
bidireccional contra las 500 entradas + fechas móviles verificadas con un
cómputo de Pascua independiente. 497/500 entradas alcanzadas en 2026-2040;
las 3 restantes (34, 62, 134) están documentadas en el propio JSON como
aritmética real del rango, no fallo del generador.

Metodología de validación con fuentes no-CEE: horariosdemisa.com y
archisevilla.org (traslado de la Ascensión), remitly.com/aciprensa/nacion.com
(traslado de Corpus), catholicvirginian.org/diocesetucson (regla de traslado
de la Anunciación). Detalle completo en issue #20.

Co-authored-by: rafa <rcalvotorrejon@gmail.com>
2026-08-18 11:03:47 -04:00
rafa 2713e13470 feat: generate 2026-2040 liturgical calendar
Co-authored-by: rafa <rcalvotorrejon@gmail.com>
Signed-off-by: rafa <rcalvotorrejon@gmail.com>
2026-08-17 05:33:09 -04:00
rafa 5807151a99 fix: preserve daily Gospel editorial metadata
Co-authored-by: rafa <rcalvotorrejon@gmail.com>
Signed-off-by: rafa <rcalvotorrejon@gmail.com>
2026-08-17 01:26:06 -04:00
rafa 293cd86896 feat: add canonical daily Gospel book data
Co-authored-by: rafa <rcalvotorrejon@gmail.com>
Signed-off-by: rafa <rcalvotorrejon@gmail.com>
2026-08-17 01:22:06 -04:00
rafa 06d7057e76 fix: support explicit backfill apply mode
Co-authored-by: rafa <rcalvotorrejon@gmail.com>
Signed-off-by: rafa <rcalvotorrejon@gmail.com>
2026-08-12 09:56:10 -04:00
rafa 754915b91f feat: show gospel in editorial comments
Co-authored-by: rafa <rcalvotorrejon@gmail.com>
Signed-off-by: rafa <rcalvotorrejon@gmail.com>
2026-08-12 09:30:43 -04:00
rafa 908188ddf2 Añadir evangelio plegable a comentarios
Co-authored-by: rafa <rcalvotorrejon@gmail.com>
Signed-off-by: rafa <rcalvotorrejon@gmail.com>
2026-08-11 07:48:28 -04:00
rafa 638f5b70c7 Apuntar sync_translations/audio/carta_from_prod.py al Hetzner nuevo
Los tres scripts asumian el CDMON viejo (134.0.10.170, sin Docker): host y
password hardcodeados, y el helper PHP ejecutandose directamente en el host.
Desde el cutover a Hetzner (Coolify/Docker, 2026-08-03) eso ya no aplica.

- FEA_PROD_HOST/FEA_PROD_PASS pasan a FEA_PROD_SSH_HOST/FEA_PROD_SSH_PASS
  (mismo nombre en los tres scripts; sync_carta_from_prod.py ya los usaba).
- Nueva FEA_PROD_DOCKER_CONTAINER: si esta definida, el helper se sube y se
  ejecuta con "docker exec -i" dentro del contenedor en vez de en el host.
- Auth por clave (ed25519 claude-code@feadulta): sshpass solo se usa si
  FEA_PROD_SSH_PASS no esta vacia.
- Fix del gotcha de "docker exec CONTENEDOR cmd < ruta": esa redireccion la
  resuelve el HOST, no el contenedor. El wrapping va dentro de "sh -c" para
  que la redireccion se resuelva en el sitio correcto (afecta a la subida
  del helper y a la verificacion de tamano del mp3 en audio).

Verificado: dry-run de los tres contra el WP local, y una lectura real de
prod (sync_carta_from_prod.py --carta 55487 --dry-run) que recupero
correctamente el cluster de la carta 738 y el contenido de un post concreto.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 07:32:38 -04:00
rafa 6b61250b0b Sincronizar mu-plugins/ y scripts/ con el estado real del sitio (2026-07-16)
Este repo llevaba desde el 28-jun sin actualizarse (salvo sync_carta_from_prod.py).
Se pone al dia con 3 semanas de trabajo que solo vivian en el checkout local
completo del proyecto:

- Fix del buscador (issue #178): AND obligatorio en FULLTEXT (antes devolvia
  practicamente todo el sitio con cualquier busqueda), exclusion de paginas
  indice residuales de la migracion K2, soporte de frase exacta entre comillas.
- Nuevos mu-plugins ya desplegados a prod: fea-carta-id-api, fea-cloudflare-realip,
  fea-crear-autor-api, fea-gsc-verification, fea-legacy-redirect (cutover
  Joomla->WP, ver issue #162).
- TTS multi-voz por autor, scripts de traduccion, sync de audio a prod,
  homenajes Mardones/Galarreta.

Se mantiene la estructura plana del repo (mu-plugins/ + scripts/, sin el
wordpress/wp-content/ del checkout completo) tal y como documenta el README:
es la convencion establecida para este repo, mas limpia para quien solo
necesita leer el codigo. Anadido .gitignore (cache de Python que no debia
commitearse).

Fuente: checkout local completo del proyecto, rama main (commit 69e849d).
2026-07-15 20:26:43 -04:00
rafa 2d03f5510c feat: sync_carta_from_prod.py para copiar el cluster de una carta prod->local (#174) 2026-07-15 03:20:49 +00:00
rafa 130a3292e4 feat: sync_carta_from_prod.py para copiar el cluster de una carta prod->local (#174) 2026-07-15 03:20:48 +00:00
rafa b6116b066d Añadir mu-plugins y scripts de feadulta 2026-06-28 15:10:46 -04:00