Commit Graph
3 Commits
Author SHA1 Message Date
Uriel JarethandClaude Opus 5 20eb73d4aa Pruebas: apuntar a cualquier despliegue con BASE y no fijar el orden del tabulador
playwright.config.mjs toma BASE del entorno, y cuando no es local no arranca
ningun servidor. Asi la misma suite verifica el portal ya desplegado.

La prueba de teclado esperaba que el segundo Tab cayera en una tarjeta de
acceso; contra un servidor remoto las tarjetas todavia no estaban pintadas y
el foco caia en otra cosa. Ahora espera a que existan, tabula hasta
alcanzarlas y comprueba ademas que el foco se vea.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-07-30 00:02:17 -06:00
Uriel JarethandClaude Opus 5 1ae2e9c010 Despliegue: usar los nombres nativos de MySQL en lugar de interpolar
Coolify escribe `null` al inlinear una variable marcada como `mostrar una
sola vez`, asi que `MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}` se resolvia a
vacio, MySQL se negaba a inicializar y el contenedor entraba en bucle de
reinicio; `web` abortaba con `dependency failed to start`.

Ahora el compose declara las variables en lista y por nombre pelado, sin
interpolacion, y el portal acepta MYSQL_DATABASE / MYSQL_USER / MYSQL_PASSWORD
como alternativa a los DB_*. Un solo juego de variables alimenta a los dos
contenedores.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-07-29 23:34:28 -06:00
Uriel JarethandClaude Opus 5 0b9c9c1dc2 Portal interno INSTA: base de conocimiento con Magic Login y permisos por rol
Base de conocimiento para el personal del Instituto Santiago Tapia: oferta
educativa (en tarjetas y en tabla), requisitos y titulacion, becas y fechas
de inscripcion, links de clases de Google Meet, preguntas frecuentes,
mensajes listos y datos del instituto.

Acceso con Magic Login: enlace de un solo uso, 15 minutos de vigencia, y en
la base solo se guarda el SHA-256 del token. El canje es atomico, asi que dos
canjes simultaneos del mismo enlace no pueden crear dos sesiones.

Tres roles con 19 permisos. El catalogo lo edita direccion; los links de
clases, direccion y administracion; el resto del equipo consulta. El menu se
pinta con lo que el servidor autoriza y cada endpoint exige la misma clave,
asi que no hay pantallas alcanzables escribiendo la direccion a mano.

Toda edicion pasa por una lista blanca de campos validados y queda en la
bitacora. Un precio vacio no se guarda como cero, un link que no es una
direccion se rechaza, y no se puede marcar una validez oficial como
confirmada sin numero de acuerdo.

Pensado para leerse comodo: texto de 17 px, contraste AA, areas de toque de
44 px, tema claro y bloques plegados en telefono.

La oferta, los costos, las becas, los requisitos y el contacto son los reales
del instituto, tomados del CSV de oferta educativa y de la base de
conocimiento. Los usuarios de acceso y los links de Meet son de demostracion.

Verificado: 103 comprobaciones de API y 51 pruebas en WebKit escritorio y
iPhone 13.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-07-29 23:20:34 -06:00