Factor de Inteligencia Artificial y Ética
Evaluación crítica de co-creación y control ético de datos
ENTREGABLE C: EL FACTOR DE INTELIGENCIA ARTIFICIAL Y ÉTICA (EVALUACIÓN CRÍTICA)
- Asignatura: Sistemas de Información
- Institución: Facultad Experimental de Ciencias y Tecnología (FaCyT) — Universidad de Carabobo
- Autor: Guillermo Cedeño
- Tecnología de Asistencia: Agentes de Antigravity (Socio de Co-creación Lógica y Arquitectónica)
- Fecha: Julio 2026
1. Bitácora de Uso de IA: Enfoque, Prompts y Toma de Decisiones
El desarrollo de la plataforma FaCyT Events se concibió bajo un modelo de co-creación híbrido. En lugar de delegar la escritura pasiva de código estático, los agentes de IA funcionaron como consultores técnicos integrados al flujo de trabajo, asistiendo en el diseño de la arquitectura relacional, la implementación de reglas de negocio en el backend y el desarrollo de interfaces responsivas y accesibles en Next.js.
1.1 Metodología de Prompts Utilizada
La interacción con la IA se estructuró mediante prompts contextualizados de asignación de rol, restricciones de dominio, contratos técnicos y resolución iterativa de problemas:
- Prompt de Diseño de Persistencia (PostgreSQL + Drizzle):
users, spaces, events, registrations, certificates, date_change_requests y la tabla intermedia de asignación de moderadores moderator_requests). Asegúrate de que las claves foráneas tengan restricciones estrictas de integridad referencial y de definir los índices óptimos para consultas temporales rápidas."*- Prompt de Validación Horaria (La Golden Rule en NestJS):
EventsService encargado de crear y actualizar eventos. Implementa un método que verifique mediante una consulta de Drizzle ORM que no existan conflictos horarios en el mismo espacio físico para eventos aprobados, aplicando la condición clásica de solapamiento: un nuevo evento no puede iniciar antes de que termine uno existente, ni terminar después de que inicie uno activo en el mismo space_id."*- Prompt de Escáner QR de Entrada Continuo y Cooldown:
- Prompt de Notificaciones por Email y Plantillas Dinámicas:
MailsService) acoplado a Nodemailer. El sistema debe reaccionar de forma automática ante eventos del ciclo de vida de la aplicación: notificar al Organizador cuando su solicitud es aprobada o rechazada (incluyendo el motivo), despachar el código QR inline en formato PNG adjunto al inscribirse, advertir de la cancelación de una actividad, y enviar el diploma en PDF. Diseña las plantillas HTML con un estilo minimalista y profesional usando CSS inline compatible con clientes de correo estrictos."*Prompt:
> *Sumados a multiples prompts de creación del vistas, correcciones visuales y de lógica de negocio, cambios pequeños, y resolución de errores, los cuales no son relevantes para el entregable, sin embargo son la mayoría.*
1.2 Proceso de Filtrado y Toma de Decisiones
Cada propuesta generada por la IA fue sometida a un riguroso proceso de control de calidad por parte del desarrollador:
- Decisiones Aceptadas:
pdfkit.- Decisiones Descartadas o Modificadas:
useConfirm) para que el Organizador tomara una decisión consciente.solicitado. Se descartó esta lógica para permitir la coexistencia de propuestas en revisión, restringiendo el bloqueo estrictamente a eventos ya aprobados.2. Control Crítico de la IA: Errores, Alucinaciones y Verificación
Se documenta la capacidad del desarrollador para auditar, detectar y corregir desviaciones lógicas y técnicas provocadas por las herramientas de IA durante el desarrollo y despliegue del sistema:
2.1 Caso 1: Alucinación Sintáctica en la API de Drizzle ORM
- El Error de la IA: Al solicitarle estructurar la consulta SQL de solapamiento temporal para la "Golden Rule" en NestJS, el agente alucinó con la existencia de métodos de consulta relacional cruzados directos de alto nivel en Drizzle ORM que solo están presentes en otros ORMs. El código provisto por la IA intentaba realizar una consulta directa usando funciones inexistentes del tipo
findOverlappingEvents(...), provocando fallos inmediatos de compilación en el tipado de TypeScript. - Detección y Corrección: El desarrollador identificó el fallo al analizar los logs del compilador de TS. La corrección se aplicó reescribiendo la lógica con los operadores de comparación lógica nativos y estrictos de Drizzle (
and,eq,lt,gt), estructurando la consulta SQL pura bajo la condición de solapamiento exacto de rangos temporales.
2.2 Caso 2: Desfase de Zonas Horarias (Timezones) en Docker
- El Error de la IA: El servicio de validación de eventos generado por la IA guardaba y consultaba las horas en formato local de la máquina en desarrollo. Sin embargo, al dockerizar la base de datos PostgreSQL 17 y desplegar el backend NestJS en la VPS bajo PM2, el servidor VPS utilizaba la hora del sistema configurada en UTC neutro. Esto provocó una "alucinación lógica": el motor de validación permitía el registro de eventos que colisionaban físicamente en el Auditorio de la FaCyT porque calculaba un desfase de 4 horas respecto a la hora local de Venezuela.
- Detección y Corrección: El desarrollador detectó la deconexión al auditar los registros y logs del contenedor de PostgreSQL (
docker logs facyt-postgres) y notar que las inserciones SQL se registraban con desfase. La solución consistió en dos pasos:
timestamp({ withTimezone: true }) para forzar a PostgreSQL a guardar las marcas en formato ISO 8601 con zona horaria explícita.America/Caracas).2.3 Caso 3: Fallo en la Ruta Estática de Archivos para Multer en Producción
- El Error de la IA: Al implementar la subida de imágenes locales mediante Multer en NestJS, el agente de IA propuso una ruta de guardado fija y dependiente del sistema de desarrollo (ej.
E:/SISTEMAS DE INFORMACIÓN/.../uploads). Esto provocaba un colapso en la VPS Linux, ya que la ruta física no existía, impidiendo que los organizadores guardaran eventos con imágenes. - Detección y Corrección: El desarrollador identificó el error al observar la pila de excepciones de PM2 (
pm2 logs facyt-events-backend) en la VPS. Se solucionó configurando una ruta de resolución dinámica basada en el directorio del proceso (path.join(process.cwd(), 'uploads')), y garantizando que la carpeta uploads fuera mapeada y creada correctamente por el script de despliegue.
2.4 Caso 4: Bloqueo de Hilos por Envío Sincrónico de Correos de Notificación
- El Error de la IA: En la primera versión del sistema de inscripciones, la IA propuso un flujo lineal y síncrono para el envío de correos electrónicos. El endpoint del backend abría la conexión con el servidor SMTP, cargaba el template HTML, compilaba la imagen del código QR y enviaba el correo antes de retornar una respuesta HTTP exitosa al cliente.
- El Impacto en Producción: Cuando múltiples usuarios intentaban registrarse simultáneamente, el hilo único de ejecución de Node.js se bloqueaba en la VPS esperando la latencia externa del servidor de correo de Google (que tardaba entre 2 y 5 segundos por petición). Esto disparó tiempos de respuesta inaceptables en el frontend, cancelaciones de peticiones por timeout y caídas temporales del backend.
- Detección y Corrección: El desarrollador identificó este cuello de botella analizando los reportes de rendimiento y los picos de uso de CPU de PM2 en la VPS. La solución consistió en implementar un desacoplamiento asíncrono y no bloqueante de la responsabilidad de envío de correo utilizando el módulo de eventos nativo de NestJS (
@nestjs/event-emitter):
this.eventEmitter.emit('registration.completed', data).HTTP 201 Created al navegador de Next.js, liberando al usuario.@OnEvent('registration.completed')) captura el evento de forma independiente, compilando y despachando el correo en segundo plano sin interrumpir los recursos principales del servidor.2.5 Caso 5: Bucle Infinito de Lectura del Lector QR Continuo
- El Error de la IA: Al diseñar el escáner QR continuo, la IA recomendó que al leer exitosamente un código QR se reactivara el escaneo de forma inmediata tras cerrar el modal. El código original carecía de un período de gracia o memoria de lectura.
- El Impacto en Producción: Cuando el moderador escaneaba un QR y posteriormente cerraba el modal o confirmaba la asistencia, la cámara (que seguía apuntando físicamente a la pantalla del dispositivo del participante) leía instantáneamente el mismo código QR en el siguiente frame. Esto provocaba que el modal de *"Registro Ya Procesado"* se abriera en un bucle infinito del que el moderador no podía salir.
- Detección y Corrección: El desarrollador detectó este comportamiento durante las pruebas físicas de aceptación en dispositivos móviles. Para solucionarlo, implementó una ventana de cooldown (tiempo de enfriamiento) de 4 segundos controlada mediante referencias en el hook del escáner:
lastScannedValue y lastScannedTime) el valor y la hora del último código QR leído.2.6 Caso 6: Alucinación en la Validación de Capacidad de Aforo
- El Error de la IA: Al solicitar validación para evitar que el aforo estimado de una solicitud superara la capacidad total del espacio físico, el agente de IA generó un validador en el DTO que impedía el submit del formulario mediante un error HTTP de tipo bloqueante.
- Detección y Corrección: El desarrollador identificó que un bloqueo estricto afectaba negativamente la experiencia de usuario y la flexibilidad administrativa (ya que los profesores organizadores a veces estiman un aforo superior previendo inasistencias o habilitando sillas adicionales). La solución consistió en revertir el bloqueo estricto en el backend y mover la regla al frontend, diseñando una advertencia blanda interactiva:
useConfirm) en lugar de diálogos nativos del navegador.3. Consideraciones Éticas y Privacidad de Datos
El diseño de FaCyT Events incorpora la reflexión ética como un pilar fundamental de la arquitectura de la información, protegiendo los derechos de los miembros de la comunidad universitaria:
3.1 Garantía de Privacidad de Datos Personales Sensibles
El sistema procesa información de identificación personal sensible (Nombres, Cédulas de Identidad, Correos Electrónicos y Roles organizacionales). Para evitar la exposición o el uso indebido de esta información, se implementan las siguientes capas de seguridad:
- Cifrado de Credenciales: Todas las contraseñas de los usuarios con acceso al sistema (Coordinadores, Moderadores, Organizadores) se someten a un algoritmo de hash criptográfico de alta entropía (bcrypt con 12 rondas de sal) antes de ingresar a la base de datos, garantizando que ni los administradores del servidor puedan visualizarlas en texto plano.
- Seguridad en Perfil: Para robustecer la autogestión de perfil, la plataforma incorpora validación doble de contraseñas y visibilidad interactiva con iconos de ojo (
Eye/EyeOff), previniendo errores de tipeo accidentales por parte del docente. - Principio de Minimización de Datos: En el módulo de registro, los datos recopilados de participantes anónimos (invitados) se guardan estrictamente con el propósito operativo de controlar el aforo, generar el token QR único y despachar el certificado por correo electrónico. Estos datos están aislados y nunca se exponen en endpoints de la API pública.
3.2 Responsabilidad Ética de la Comunicación y Prevención del Spam
En entornos institucionales, el correo electrónico es una herramienta de trabajo formal susceptible de verse saturada por comunicaciones innecesarias. El sistema de correos de FaCyT Events se rige por un código ético estricto:
- Exclusión de Fines Promocionales: La plataforma tiene prohibido el envío de boletines o correos masivos que no correspondan a una interacción explícita y consentida del usuario.
- Filtro de Triggers Críticos Organizacionales: Los correos informativos automáticos se limitan única y exclusivamente a notificaciones de carácter operativo y logístico:
3.3 El Límite de la Automatización frente al Control Humano
Un principio ético clave en el diseño de sistemas de información es que el software debe servir de apoyo a la toma de decisiones, pero nunca suplantar la gobernanza ni la responsabilidad humana.
- El Factor Humano sobre el Algoritmo (Límite de la Automatización): Aunque el backend previene automáticamente las colisiones horas-espacios para evitar incidentes logísticos cotidianos en la facultad, existen situaciones institucionales de fuerza mayor (emergencias nacionales, consejos rectorales imprevistos, asambleas de decanato) que demandan la anulación manual del algoritmo. Un sistema de información inmutable que impidiera resolver estas contingencias sería inútil para la administración universitaria real.
- Implementación: El sistema delega la decisión final de anulación de forma exclusiva al rol de Coordinador. Si el Decanato necesita reservar de emergencia un espacio físico pese a existir un taller agendado previamente, el Coordinador (humano), tras deliberar y reasignar las prioridades institucionales, puede anular administrativamente el bloqueo temporal del software, notificando asíncronamente por correo a los participantes afectados y reprogramando el evento en conflicto, respetando la estructura de gobernanza y la soberanía del Decanato.
4. Limitaciones Actuales y Plan de Escalabilidad (Mejoras Futuras)
En concordancia con el principio de control y honestidad técnica de la asignación, se declaran los límites actuales de la versión estable y su ruta de crecimiento modular:
4.1 Limitaciones del Sistema (Versión 1.4.0)
- Dependencia de Red in situ: El escaneo de códigos QR mediante smartphones por parte del Moderador requiere una conexión de datos móvil estable o acceso a la red WiFi institucional en el punto de acceso del auditorio o laboratorio para validar el token asíncronamente contra la API de NestJS en tiempo real.
- Restricción de Almacenamiento VPS: La subida de imágenes de portadas y galerías para evidencias del historial de eventos se almacena físicamente en la VPS del desarrollador, lo que impone un límite de espacio que requiere mantenimiento de depuración periódico por parte del administrador para evitar colapsos del servidor.
4.2 Plan de Escalabilidad (Mejoras Futuras)
- Módulo de Pagos Flexibles (`PaymentsModule`): Habilitar la pasarela de pagos integrada cuyos campos de base de datos (
is_paidyprice) ya se encuentran estructurados de forma nativa en la tabla de eventos para eventos de extensión autofinanciados. - Sincronización en Tiempo Real mediante WebSockets: Integrar tecnología de WebSockets en NestJS para notificar de forma reactiva e instantánea a las pantallas de los estudiantes inscritos si un evento cambia de estado, se cancela o se reprograma de última hora.
- Módulo de Reportes Avanzados: Automatizar la exportación de análisis estadísticos avanzados de uso de los espacios de la facultad directamente al buzón del Decanato para optimizar los presupuestos de mantenimiento.
5. Declaración Formal de Propiedad Intelectual y Autoría
- Responsable y Propietario Único del Proyecto: Guillermo Cedeño.
- Declaración de Autoría: Se hace constar que el diseño conceptual, el análisis sistémico de procesos, el diseño del esquema de datos relacional y su normalización, la configuración e implementación física del servidor VPS, el despliegue con PM2, HTTPS y Nginx, y la validación de todas las pruebas funcionales pertenecen en su totalidad al autor del proyecto. Las herramientas de Inteligencia Artificial (agentes de Antigravity) se utilizaron exclusivamente como copilotos de asistencia sintáctica y aceleración tecnológica, asumiendo el desarrollador la responsabilidad técnica absoluta sobre la totalidad del código fuente de FaCyT Events.