Frontend
Next.js 14 + TypeScript + Tailwind
Interfaz web, experiencias de chat y paneles administrativos. Mantiene rutas API de compatibilidad para no romper clientes mientras se migra al core.
Plataforma y Operacion
Este front consolida como funciona Aeternus, que migramos al core Python, cuales son los servicios activos en AWS y como resolver incidentes sin perder tiempo en diagnosticos dispersos.
Objetivo: que cualquier desarrollador nuevo pueda desplegar, observar, depurar y escalar el sistema sin depender de conocimiento tribal del equipo.
Next.js 14 + TypeScript + Tailwind
Interfaz web, experiencias de chat y paneles administrativos. Mantiene rutas API de compatibilidad para no romper clientes mientras se migra al core.
FastAPI + Uvicorn + Python 3.12
Orquesta chat, TTS, rasgos afectivos, estado Neo4j y persistencia de sesiones/mensajes. Es el backend canonicamente escalable en ECS Fargate.
PostgreSQL + Neo4j Aura
PostgreSQL almacena conversaciones y sesiones. Neo4j modela relaciones, rasgos y dinamica afectiva para continuidad narrativa.
OpenAI + ElevenLabs
OpenAI responde con contexto conversacional completo. ElevenLabs sintetiza voz y usa reintentos controlados cuando hay limites de concurrencia.
Este flujo describe lo que ocurre desde que un usuario envia un mensaje hasta que Aeternus responde con texto o audio. Es la referencia principal para depurar regresiones funcionales.
El usuario escribe en la UI de Next.js. Si NEXT_PUBLIC_CORE_API_BASE_URL esta definido, las llamadas migradas se enrutan al core en AWS.
El route de chat en Next.js arma el historial completo (incluyendo system-init) y lo delega al core para evitar respuestas genericas.
El core consulta Neo4j para rasgos y relacion, y aplica reglas de estado para modular tono, humor y cercania de la respuesta.
El core responde con OpenAI, y luego persiste eventos/mensajes en PostgreSQL para continuidad entre sesiones.
La respuesta vuelve al cliente. Si se solicita audio, el core llama a ElevenLabs y entrega stream/audio listo para reproducir.
| Servicio | Nombre | Uso |
|---|---|---|
| ECR | aeternus-core | Repositorio de imagenes del core. |
| ECS Cluster | aeternus-core-cluster | Cluster Fargate para ejecucion del servicio. |
| ECS Service | aeternus-core-service | Replica activa del core; despliegues rolling. |
| Task Family | aeternus-core | Definicion versionada de contenedor y secretos. |
| CloudWatch Log Group | /ecs/aeternus-core | Logs runtime para debug y operacion. |
| Target Group | aeternus-core-tg | Health check en /v1/health (puerto 8080). |
| Load Balancer | aeternus-core-alb | Entrada publica HTTP/HTTPS al core. |
| Task SG | aeternus-core-task-sg | Permite 8080 solo desde ALB SG. |
Esta tabla evita configuraciones ambiguas entre Vercel, Next.js server y ECS. Si algo falla por entorno, empezar aqui suele ahorrar horas de debug.
| Variable | Ambito | Proposito |
|---|---|---|
| NEXT_PUBLIC_CORE_API_BASE_URL | Vercel (frontend) | Rutea llamadas migradas al core publicado en AWS. |
| CORE_API_BASE_URL | Next.js server | Permite delegacion server-to-server para chat y compatibilidad. |
| OPENAI_API_KEY | Secrets Manager -> ECS Task | Autenticacion con OpenAI para respuestas de chat. |
| DATABASE_URL | Secrets Manager -> ECS Task | Conexion a PostgreSQL para sesiones y mensajes. |
| NEO4J_URI / USERNAME / PASSWORD | Secrets Manager -> ECS Task | Acceso al grafo afectivo y de relaciones. |
| ELEVENLABS_API_KEY / VOICE_ID / MODEL_ID | Secrets Manager -> ECS Task | Sintesis de voz en endpoints TTS. |
En Vercel, define la variable de entorno para que los clientes web apunten al core desplegado.
NEXT_PUBLIC_CORE_API_BASE_URL=https://core.tudominio.com CORE_API_BASE_URL=https://core.tudominio.com
Si quieres mantener compatibilidad gradual, deja el route de chat en Next.js y delega al core solo cuando la variable este definida.
Cada caso incluye sintomas observables, causa probable, comandos de validacion y remediacion concreta. La idea es convertir incidentes repetitivos en procedimientos deterministas.
Sintoma: El deploy registra task definition nueva, pero falla al actualizar el servicio.
Causa probable: El servicio aun no existe en el cluster; update-service no crea recursos.
Validacion
Remediacion
Sintoma: Las tareas no arrancan y ECS reporta ResourceInitializationError.
Causa probable: ECS intenta resolver secretos como SSM parameters porque valueFrom no usa ARN valido de Secrets Manager.
Validacion
Remediacion
Sintoma: La tarea inicia y cae antes de levantar Uvicorn.
Causa probable: ecsTaskExecutionRole no tiene permisos para resolver secretos al bootstrap del contenedor.
Validacion
Remediacion
Sintoma: ECS no puede descargar imagen aunque ECR exista y la tag sea correcta.
Causa probable: La imagen fue construida para arquitectura distinta a la de Fargate.
Validacion
Remediacion
Sintoma: curl a la IP publica de tarea queda en timeout aunque el servicio parece running.
Causa probable: Security Group incorrecto o prueba contra IP vieja por rotacion de tasks en Fargate.
Validacion
Remediacion
Sintoma: Falla la creacion del ALB aun con subnets y SG validos.
Causa probable: La cuenta no tiene creado AWSServiceRoleForElasticLoadBalancing.
Validacion
Remediacion
Antes de anunciar una release en produccion, ejecutar este checklist reduce el riesgo de rollback.