Files
feadulta/docs/revision-issues-live-gitea-2026-07-15.md
rafa 5055e92143 Rescatar 10 docs/ del main local que nunca llegaron a Gitea (issue #194)
main local y origin/main son dos historias sin ancestro comun (ver #194).
Analisis del agente: de las 46 commits solo-en-local, el unico contenido que
no esta ya reflejado en origin/main via el snapshot de julio (PR #179) son
estos 10 ficheros de docs/ (guias, handoffs, planes, benchmark, revisiones de
issues). Copiados tal cual desde main con "git show main:docs/X > docs/X".

Redactada una password SSH y una password cPanel/FTP en texto plano que
tenia handoff-carta-46956-2026-06-17.md (servidor CDMON antiguo) antes de
subirlo -- ver .env, nunca en docs versionados.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 08:39:06 -04:00

6.2 KiB

Segunda pasada — issues correctos en Gitea vivo (gitea.feadulta.com) — 2026-07-15

Alcance

Revisión en modo diagnóstico + preparación sobre la instancia viva:

  • Repo: https://gitea.feadulta.com/rafa/feadulta
  • Issues revisados: #166, #168, #170, #174, #175
  • Sin cambios en producción
  • Sin edición de issues

Corrección del desajuste anterior

La pasada previa consultó el Gitea local archivado (localhost:3000), que se queda en #146. La fuente correcta para el trabajo actual es gitea.feadulta.com, tal como ya reflejan:

  • la skill feadulta-editorial-workflows
  • feadulta/webmaster/references/environment.md

Estado por issue

#166 — Alta de autores / crear-autor

Estado funcional real: resuelto e integrado.

Verificado en el issue vivo:

  • Rafa comentó que decidió la opción B (endpoint acotado).
  • Rafa comentó después: "Desplegado en prod y verificado en vivo".
  • Inma comentó el 14-jul que ya está integrado en Mixbot.

Verificado además en el repo local:

  • existe wordpress/wp-content/mu-plugins/fea-crear-autor-api.php
  • registra POST /wp-json/fea/v1/crear-autor
  • fuerza rol fijo author
  • es idempotente si el slug ya existe

Conclusión:

  • No hay trabajo técnico pendiente aquí.
  • Si queréis limpieza de tablero, este issue ya está para cerrar cuando Rafa quiera.

#168 — Bots en Joomla viejo / Cloudflare

Estado funcional real: resuelto lado Cloudflare, aunque el issue sigue abierto.

Verificado en el issue vivo:

  • el body ya documenta la parte técnica previa (cache Joomla activada y diagnóstico del fatal)
  • Inma añadió comentario 14-jul: "HECHO y verificado" ajustando una regla existente de Cloudflare por el límite de 5 custom rules del plan free

Conclusión:

  • Operativamente está resuelto.
  • Si no queda ningún fleco de observabilidad, este issue también está para cerrar.

#170 — Crawlers sociales / preview Facebook

Estado funcional real: resuelto lado Cloudflare, aunque el issue sigue abierto.

Verificado en el issue vivo:

  • Inma comentó 14-jul que ya existía una regla "Permitir Facebook" y que el crawler de Facebook ya pasa con 200

Conclusión:

  • Operativamente está resuelto.
  • Igual que #168, parece issue de cierre administrativo, no técnico.

#174 — Cierre autónomo de la carta (publicar + rotar)

Estado funcional real: abierto, esperando OK de Rafa. Aquí sí hay trabajo útil preparado, pero no conviene aplicar nada aún.

Lo importante que he verificado localmente:

1) Ya existe lógica de rotación en scripts

En el repo local existe:

  • scripts/rotate_cartas.php
  • scripts/demote_old_cartasemana.php

rotate_cartas.php implementa esta cascada:

  1. la que estaba en "semana pasada" → queda solo en "otras semanas"
  2. la que estaba en "semana actual" → pasa a "semana pasada"
  3. la nueva → pasa a "semana actual"

2) Pero la implementación actual rota todos los idiomas, no solo ES

Esto es importante porque en #174 justo se pregunta si:

  • solo se rota ES al cerrar la carta, y
  • las traducciones no se rotan hasta que estén publicadas

El script actual no sigue ese criterio: deriva y actúa sobre es/en/fr/it/pt.

3) Dry-run local ejecutado

He ejecutado rotate_cartas.php en el WordPress local Docker en modo dry-run.

Resultado:

  • el script funciona como dry-run
  • pero el espejo local no está alineado con el caso exacto de la carta 735 en ES (el mirror local va por otro estado / otra numeración viva en esa parte)
  • por tanto, sirve para validar la mecánica del script, pero no para afirmar que ya resuelva #174 tal cual

Conclusión técnica:

  • #174 no es greenfield: ya hay base.
  • Pero hay que adaptar la lógica si la decisión final es "rotar solo ES y dejar derivados/traducciones para después".
  • No he preparado parche porque todavía falta el OK funcional de Rafa, y sin eso sería fácil codificar la lógica equivocada.

Recomendación:

  • cuando Rafa confirme la regla exacta, el siguiente paso bueno es preparar un wrapper ES-only + dry-run en local, en vez de reaprovechar rotate_cartas.php tal cual.

#175 — Endpoint subir-avatar

Estado funcional real: abierto, esperando OK de Rafa. También tiene muy buena base técnica ya hecha.

Lo verificado localmente:

1) El frontend ya usa foto_perfil

En wordpress/wp-content/mu-plugins/fea-homepage.php:

  • el avatar del autor usa el meta de usuario foto_perfil
  • ese meta guarda un attachment ID

2) Ya existen las piezas de procesamiento

En el repo hay:

  • scripts/face_crop_avatar.py
  • scripts/regen_avatars.php

O sea: el flujo de recorte / regeneración ya existe; faltaría encapsularlo detrás de un endpoint seguro.

3) El caso concreto mencionado en el issue existe y está sin foto en local

Verificado en el WP local:

  • usuario 1112 existe
  • login: silvia-mtnz
  • display: Silvia Martínez Cano
  • foto_perfil está vacío

Conclusión técnica:

  • #175 tampoco es greenfield.
  • El endpoint encaja bien como hermano de fea/v1/crear-autor (#166).
  • La decisión pendiente no es "si se puede", sino qué contrato exacto quiere Rafa:
    • user_id vs slug
    • multipart vs base64
    • si el endpoint recorta o exige imagen ya preparada

Recomendación:

  • en cuanto Rafa dé el OK de contrato, el trabajo lógico es clonar el patrón de fea-crear-autor-api.php y dejar un endpoint mínimo, acotado e idempotente.

Resumen ejecutivo

  • #166: hecho
  • #168: hecho pero sigue abierto
  • #170: hecho pero sigue abierto
  • #174: esperando OK funcional de Rafa; hay base técnica, pero la actual rota todos los idiomas
  • #175: esperando OK funcional de Rafa; hay base técnica muy clara y el caso Silvia está identificado

Qué hice en esta pasada

  • Reapunté la revisión a gitea.feadulta.com
  • Leí los issues correctos por API pública
  • Verifiqué localmente la existencia del endpoint crear-autor
  • Ejecuté un dry-run de la lógica de rotación existente
  • Verifiqué en local el caso Silvia Martínez Cano / 1112 / foto_perfil vacío

Qué NO hice

  • No toqué producción
  • No cerré issues
  • No comenté en Gitea
  • No modifiqué código del repo