Notas
LaIA dentro: planes, asistencia y contraseñas
Viernes de dos frentes: se cierra la fase 4 de LaIA (planes semanales, verificación
2 min de lectura
Fase 4 cerrada, fase 5 encendida
Viernes de dos frentes dentro del rediseño de Panxing —el del fantasma de la home y 19.000 imágenes en cola. Por la mañana, cerrar la fase 4 de LaIA (el lado de IA del proyecto): el plan semanal de contenidos funciona de arriba abajo, con cuenta o sin ella. Por la tarde, abrir la 5: la asistencia de IA entra en el admin (el panel de gestión).
Planes anónimos que acaban atados a alguien
T4.4: si alguien genera un plan sin registrarse, puede pedirlo con su correo. Recibe un enlace de verificación y, al visitarlo, el plan queda ligado a su usuario. Detrás hay un par de horas de sesión: los endpoints (las puertas de la API) de LaIA comprobaban la identidad con payload.auth() leyendo la cookie directamente, y dentro de un route handler de Next (el código que responde a una URL) eso no resuelve. La forma que funciona es llamar a /api/users/me. Un detalle sutil: el JWT (el testimonio que te acredita) traía en caché el estado _verified antiguo, así que también se refresca desde la base de datos.
La contraseña corta
El mínimo de 8 caracteres fue un viaje. Primero lo puse en beforeValidate (un gancho: código que se ejecuta solo en un momento concreto), y el registro lo respetaba. El restablecimiento no: el flujo de reset pasa por un camino que se salta ese gancho. Migra a beforeOperation, dejé logs (el diario del sistema) de depuración por el camino y al final: mínimo 8 tanto al crear como al restablecer, y los logs fuera.
Los tokens de verificación también cambiaron de sitio. El adaptador de correo escribe los emails al log, y el test los iba a buscar a la salida de next dev — que con Docker (el sistema de contenedores) no existe. Ahora lee docker logs.
El gestor de IA
Por la tarde, T5.1 a T5.4: /api/ai/assist con avisos SEO (lo que posiciona en los buscadores) para el editor, y las colecciones ia_proveedores, ia_modelos e ia_tareas con un hook que detecta modelos automáticamente y un log de consumo en ia_consum. Tres detalles: encrypt: true no va sin el plugin de cifrado (fuera), la tabla payload_locked_documents_rels necesitaba las columnas ia_* nuevas, y el rol que llega en el JWT cacheado puede ser viejo — se refresca desde la BD.
Para desarrollar sin quemar tokens hay un stub: sin API key válida responde siempre igual y los tests pasan igual.
Qué queda
Fase 4, cerrada. Fase 5, encendida: asistencia, avisos SEO y gestor de IA ya tienen sitio dentro del admin. Al día siguiente: El sábado más denso: editor, ingesta y un DNS que se apagó.