# Despliegue DH V2 — Fase A2 ## Precondiciones - A1 desplegada y validada; - backup posterior a A1 conservado; - ZIP A2 subido manualmente a `/var/www/dhv2.korexlabs.com`; - no modificar `dh.korexlabs.com`; - no reemplazar el `.env` existente. ## Orden 1. validar el ZIP; 2. extraer el código sin `.env`; 3. agregar las variables A2 faltantes; 4. validar Compose; 5. compilar API, migrador y Web; 6. ejecutar la migración A2; 7. recrear API y Web; 8. validar health, protección y footer; 9. crear el primer administrador mediante CLI interactiva; 10. generar backup posterior a A2. ## Resultados esperados Después de migrar: ```text Applied migrations: 1 - PhaseA2SessionSecurityIndexes1786548005000 ``` Después de reiniciar: ```json { "status": "ok", "service": "dhv2-api", "api": "v3", "version": "0.2.1", "phase": "A2", "database": "ok" } ``` `GET /api/v3/auth/me` sin cookies debe responder `401 UNAUTHORIZED` con un `requestId` y nunca devolver datos internos. ## Rollback Si la API nueva no inicia, restaurar el código y `.env` del backup A1 y recrear API/Web con esas fuentes. La migración A2 sólo agrega dos índices, por lo que no es necesario revertirla para volver temporalmente al código A1.