|
Equipo — The Good App
Mail 13 — Continuación del Mail 12 (bilingüe + operaciones en admin)
|
|
Hola equipo,
Este correo continúa la línea del Mail 12 (plan-frontend/mailtwelve.html, sindicación de noticias desde portales US). En este ciclo cerramos dos frentes de alto impacto: (1) noticias en inglés y español de forma automática y (2) eliminación masiva de noticias antiguas desde el panel de administración para optimizar recursos del servidor.
Nota de numeración: maileleven.html = Mail 11; mailtwelve.html = Mail 12; este archivo = Mail 13 (mailthirteen.html).
|
1. Noticias bilingües EN ↔ ES (cambio de alta complejidad)
Fue un requerimiento transversal y difícil (API + base de datos + admin + app móvil). La importación del Mail 12 trae artículos en inglés; muchos usuarios hispanos residentes en Estados Unidos aún no dominan el inglés con fluidez. Con este cambio ofrecemos el mismo contenido en español (y viceversa para noticias creadas en español), lo que nos da una ventaja táctica clara frente a feeds que solo publican un idioma.
- Modelo de datos: cada noticia guarda
originalLanguage (en | es), titleEn/titleEs, excerptEn/excerptEs, bodyEn/bodyEs. Los campos legacy title, excerpt, body siguen siendo el espejo del idioma original (compatibilidad).
- Traducción automática (API): módulo
translation con LibreTranslate (URL y API key opcional en BD, Setting news_translation). Detección de idioma con franc-min. Se traduce al crear noticia (usuario en app), al actualizar y al importar por sindicación (hint inglés en portales US).
- Endpoints admin:
POST /api/v1/translation/news/retranslate y POST /api/v1/translation/news/backfill (cabecera X-Admin-Translation-Key, clave en BD). Script: npm run translate:backfill-news.
- Admin: pestaña Configuración → Traducción; formularios de noticias con pestañas English / Español; badge de idioma original en listados; auto-traducción al guardar si ambos idiomas son idénticos.
- Flutter: listados y detalle muestran el idioma del teléfono; chip Ver original / Ver traducción cuando hay texto distinto en el otro idioma.
- Commits (rama
staging): API e9eb471, admin 001f828, Flutter 57e488b.
|
Experiencia de usuario (bilingüe)
- Teléfono en español → título y cuerpo en español (traducidos automáticamente si el origen era inglés, p. ej. noticia sindicada).
- Teléfono en inglés → versión en inglés.
- El usuario puede pulsar Ver original para leer el texto tal como se publicó o se importó (
originalLanguage).
- Noticias antiguas (solo un idioma en BD): usar en admin Traducir noticias con EN/ES idénticos o el script de backfill.
|
2. Eliminación masiva de noticias (y otros contenidos) en admin
Las noticias importadas y publicadas acumulan texto largo e imágenes en base64 en PostgreSQL. Para un mejor aprovechamiento de recursos del servidor (espacio, backups, tiempos de consulta), añadimos herramientas de limpieza en el panel sin tocar la base a mano.
- Modo «Eliminar varios»: en listados de Noticias, Noticias importadas, Comentarios y Proyectos — checkboxes + confirmación + borrado por lote.
- «Eliminar anteriores a fecha»: elimina registros creados antes de una fecha elegida (útil para vaciar noticias antiguas de prueba o imports acumulados).
- Implementación: trait
BulkDestroysRecords, partial bulk-delete.blade.php, rutas bulk-destroy y destroy-older-than por entidad.
- Commit admin (rama
staging): dc61507 (incluido en el despliegue reciente junto al bilingüe).
Recomendación operativa: antes de borrar en masa en producción, exportar o revisar el rango de fechas en staging; las imágenes base64 no se recuperan sin backup.
|
Despliegue en staging / producción
- API:
npx prisma migrate deploy (migración 20260524120000_news_bilingual) y despliegue del build.
- Admin:
php artisan migrate (columnas bilingües en News).
- Traducción: admin → Configuración → Traducción (revisar URL LibreTranslate; opcional backfill de noticias existentes).
- App: build Flutter con campos bilingües en el JSON de noticias; probar detalle con toggle y feed en ES/EN.
- Limpieza: admin → Noticias → activar Eliminar varios o Eliminar anteriores a fecha según política de retención acordada.
Archivo: good-app/plan-frontend/mailthirteen.html. Enlace en plan-frontend/index.html.
|
|
En resumen: el Mail 12 nos trae volumen de noticias positivas en inglés; el Mail 13 las hace accesibles en español y nos da herramientas para mantener la base de datos bajo control. Cualquier duda de configuración (clave de traducción, backfill o fechas de borrado masivo), la vemos en la próxima sync.
Saludos,
|
Correo interno — avance técnico (Mail 13)
|