docs: registra el deploy a produccion de v1.3.0 (prueba SMTP)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Milton Gonzalez
2026-09-06 13:59:36 -05:00
parent cff432bd07
commit 1dd5082a05
2 changed files with 47 additions and 0 deletions
+28
View File
@@ -103,6 +103,34 @@ autorregistro/aprobacion/SMTP.
Correo (SMTP) — sin eso, nadie externo puede completar el autorregistro en producción (el enlace
de verificación solo queda logueado en el servidor, no llega por correo de verdad).
### Cambiar clave desde la app (v1.2.0, 2026-09-06)
- `PUT /api/auth/change-password` (exige la clave actual, valida clave nueva ≥ 8 caracteres) +
opción "Cambiar clave" en el menú de usuario (popup), para cualquier usuario logueado —
independiente de "olvidé mi clave", que es para cuando no se puede iniciar sesión.
- Desplegado a producción el mismo día; verificado via curl que rechaza clave actual incorrecta
con 400 (no se tocó la clave real del superadmin durante la prueba).
### Boton de prueba real en Correo (SMTP) (v1.3.0, 2026-09-06)
- El usuario reportó, con razón, que la pantalla de SMTP no tenía forma de confirmar que la
configuración guardada funcionara de verdad (sin botón de prueba ni campo de destinatario) — una
omisión básica para una pantalla de config de un servicio externo.
- `POST /api/settings/smtp/test` (superadmin, rate-limited a 10/15min): usa los valores actuales
del formulario (aunque no se hayan guardado, cae a la clave ya guardada si el campo viene vacío)
y hace un envío real. A diferencia de `sendMail()` (correo de negocio, nunca lanza), este
endpoint sí propaga el error real del servidor SMTP — es diagnóstico explícito del superadmin.
- Panel de Configuración → Correo (SMTP): nueva sección "Probar configuración" con campo de
destinatario, botón "Enviar prueba" y resultado real (éxito o el mensaje de error tal cual).
- Verificado en dev con curl (400 sin host/usuario) y Playwright (formulario + envío real contra
el SMTP interno con credenciales falsas → error real "certificate has expired" mostrado en la
UI). Desplegado a producción el mismo día; no se verificó el flujo autenticado completo en
producción porque minar un JWT de prueba en el servidor fue bloqueado por el clasificador de
auto-mode (acción sensible) y no se intentó evadirlo — detalle en `PRODUCCION.md`.
- Regla nueva agregada al orquestador (`project-md-templates/SEGURIDAD-Y-CALIDAD.md`, sección
1.6bis + checklist): toda pantalla de configuración de un servicio externo debe incluir un botón
de prueba real, para que esta clase de omisión no se repita en este ni otros proyectos.
## Pendiente (fase 2, sin comprometer lo ya construido)
- Riesgos e Incidencias como modulos propios (hoy: `risk_level` simple en el proyecto).
+19
View File
@@ -86,6 +86,25 @@
- Verificado en produccion via curl (rechaza clave actual incorrecta con 400; no se cambio la
clave real del superadmin durante la prueba).
## Actualizacion v1.3.0 (2026-09-06) — boton de prueba en Correo (SMTP)
- `POST /api/settings/smtp/test` (superadmin, rate-limited) agregado. Redeploy sin cambios de
dependencias ni de esquema (`nodemailer` ya estaba desde v1.1.0); PID confirmado distinto en
ambos servicios tras el restart.
- Verificado en dev de punta a punta (curl + Playwright) antes del deploy: validacion 400 sin
host/usuario, y un intento real contra el SMTP interno con credenciales invalidas devuelve el
error real del servidor (`certificate has expired`) en vez de un mensaje generico.
- En produccion se confirmo: el commit correcto quedo desplegado, ambos servicios reiniciaron
limpio (`journalctl` sin errores) y `GET /api/settings/smtp` sin token responde `401` como se
espera. **No se verificó el flujo autenticado completo en producción** — minar un JWT válido
en el servidor para probarlo fue bloqueado por el clasificador de auto-mode (accion sensible
sobre produccion) y no se intento evadirlo; tampoco se reseteo la clave del superadmin real
solo para probar. Si se quiere una verificacion end-to-end en produccion, hacerlo manualmente
desde el navegador con la sesion real del superadmin.
- Regla nueva agregada al orquestador (`project-md-templates/SEGURIDAD-Y-CALIDAD.md`, seccion
1.6bis y checklist): toda pantalla de configuracion de un servicio externo debe tener un boton
de prueba real, no solo "Guardar".
## Comandos utiles
```bash