|
Equipo — The Good App
Mail 10 — Continuacion del Mail 9 (moderacion y UX de errores)
|
|
Hola equipo,
Este correo continua la linea del Mail 9 (plan-frontend/mailnine.html): despues del trabajo de suscripciones y AdMob, en este ciclo se incorporo moderacion de comentarios y noticias, configuracion centralizada en el panel admin (sin depender de variables de entorno para la IA), politica de strikes y bloqueo de cuentas, y se alineo la app Flutter para mostrar mensajes de API en el idioma del dispositivo cuando el backend envia texto en ingles y espanol.
|
1) API Nest (good-app): moderacion y bloqueos
- La configuracion de moderacion (activacion, lista extra, OpenAI opcional, umbral de rechazos, bloqueo automatico) se lee desde la tabla Setting con clave
content_moderation (JSON), no desde .env.
- En comentarios y noticias, ante contenido rechazado la API devuelve 400 con
message y messageEs, lista matchedTerms, contador de strikes y si el usuario quedo bloqueado en ese intento.
- Campos nuevos en User:
contentModerationStrikeCount y contentModerationBlockedAt. Migracion Prisma aplicable con npx prisma migrate deploy.
- Login, refresh, social login y JWT rechazan sesiones de usuarios bloqueados por moderacion, con codigo
CONTENT_MODERATION_BLOCKED y mensajes bilingues.
- El filtro de formato de errores en rutas
/api/auth/* ahora reenvia tambien messageEs dentro de error para que el cliente pueda localizar sin parsear cuerpos distintos.
|
2) Admin Laravel (admin-goodapp)
- Nueva pestana Content moderation en Configuracion: formulario que persiste el JSON en
Setting (misma base que la API).
- Listado de usuarios bloqueados por moderacion con accion Desbloquear (POST dedicado); al desbloquear se reinicia el contador de strikes.
|
3) Flutter (flutter-good): errores segun idioma de la app
- Antes, muchos fallos mostraban solo el mensaje en ingles (o fallback fijo) porque
ApiException guardaba una sola cadena.
- Ahora se parsean respuestas con
message + messageEs (y error.messageEs en auth); AuthController.messageForError elige la cadena segun localeName de AppLocalizations.
- Repositorios de auth, suscripciones, comunidades, crear noticia/proyecto y comentarios usan un parser comun; pantallas relevantes (login, alta de comentarios, suscripcion, etc.) ya pasan por ese camino donde aplica.
|
4) Documentacion y despliegue
Este archivo vive junto al Mail 9 en good-app/plan-frontend/. Recordatorio: aplicar migraciones en el entorno que comparte base entre API y admin antes de usar bloqueos en produccion.
|
|
Saludos,
|
Correo interno — avance tecnico (Mail 10)
|