Frontend Deployment
Frontend deployment
Section titled “Frontend deployment”El frontend vive en F:\HemiaAssistantGlobal\hemia-assistance-front-legacy. Es Vue 2 + Vue CLI. Las variables VUE_APP_* se resuelven en build time: cambiar env requiere recompilar.
Scripts reales
Section titled “Scripts reales”| Script | Comando | Uso |
|---|---|---|
serve | npm run serve:d2 | Desarrollo/local default con D2 cookie auth HTTP. |
serve:d2 | node scripts/dev-auth-mode.js d2 | Desarrollo/local explicito con cookies D2. |
serve:legacy | node scripts/dev-auth-mode.js legacy | Regresion local opt-in con Authorization legacy. |
serve:lan | node scripts/dev-auth-mode.js d2 --host 0.0.0.0 --port 8081 | Desarrollo LAN con D2. |
build | set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build | Build production default. |
build-stage | set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode staging | Build staging. |
lint | set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service lint | Lint. |
Build production-like con cookies
Section titled “Build production-like con cookies”Configura las variables antes del build:
NODE_ENV=productionVUE_APP_CORE_URL_API=https://api.<dominio>/VUE_APP_AUTH_COOKIE_MODE=d2VUE_APP_BROWSER_AUTH_TRANSPORT=cookieVUE_APP_CSRF_ENABLED=trueDespues:
npm installnpm run lintnpm run buildEl artefacto generado vive en dist/.
Servir estaticos
Section titled “Servir estaticos”No hay Dockerfile ni config Nginx real en repo. El archivo htaccess.txt muestra una regla Apache para SPA fallback a index.html.
Requisitos para cualquier servidor estatico:
- Servir solo por HTTPS.
- Activar fallback SPA a
index.html. - No cachear
index.htmlde forma que impida rollback rapido. - Cachear assets con hash de
dist/si la plataforma lo soporta. - No inyectar scripts inline no aprobados.
- No exponer sourcemaps en produccion salvo decision formal.
Validaciones frontend con cookies
Section titled “Validaciones frontend con cookies”| Validacion | Como comprobar |
|---|---|
| Flags de cookies activas | Revisar build env y, si hay tooling, getSafeAuthClientConfigSummary(). |
| API URL correcta | Network apunta a https://api.<dominio>/. |
withCredentials | Requests del navegador envian cookies. |
Sin Authorization | DevTools Network no muestra Authorization para auth navegador. |
| CSRF | Mutaciones incluyen X-CSRF-Token. |
| Session hydration | Reload llama /api/auth/session y rehidrata runtime. |
| Storage limpio | localStorage y sessionStorage sin token, refreshtoken, refresh_token, permissions, business, tenantOperational. |
| Cookies | Access/refresh no visibles en document.cookie; CSRF visible. |
| Logout | Llama /api/auth/close, limpia runtime y redirige a login. |
| 401 | Limpia runtime/storage y evita loops con /api/auth/session y /api/auth/csrf. |
Variables legacy a vigilar
Section titled “Variables legacy a vigilar”El frontend aun conserva ramas legacy por compatibilidad. En produccion con autenticacion por cookies:
VUE_APP_AUTH_COOKIE_MODEdebe serd2.VUE_APP_BROWSER_AUTH_TRANSPORTdebe sercookie.VUE_APP_CSRF_ENABLEDdebe sertrue.
Si cualquiera falta, el frontend puede volver al contrato legacy y construir Authorization desde $session.
Desarrollo local
Section titled “Desarrollo local”Local normal usa D2:
npm run serveLegacy se conserva solo para regresion opt-in:
npm run serve:legacyEl backend local esperado para serve es http://127.0.0.1:3009/.
VUE_APP_SECRET_KEY
Section titled “VUE_APP_SECRET_KEY”VUE_APP_SECRET_KEY se usa para armar secretkey/timestamp/signature del payload legacy de login. Al vivir en el bundle, no es secreto real. No lo uses para proteger datos productivos ni lo trates como reemplazo de TLS, CSRF, JWT secrets o controles backend.
Rollback frontend
Section titled “Rollback frontend”Rollback frontend debe publicar el artefacto anterior conocido como bueno, pero no debe convertirse en retorno permanente a tokens legibles por JavaScript. Si se apaga temporalmente el modo de cookies:
- Documentar aceptacion de riesgo.
- Limpiar cookies de autenticacion.
- Mantener CORS cerrado.
- No desactivar CSRF si backend sigue autenticando por cookies.
- Repetir smoke tests de login/logout/session.