Skip to content
Usuario

Prerequisitos

Antes de desplegar MedSync en un ambiente production-like, infraestructura debe cerrar estos requisitos. Si falta alguno, el ambiente puede servir para pruebas, pero no debe tratarse como release candidate ni como produccion.

Piensa esta pagina como una puerta de entrada:

  • Si todo esta completo, puedes pasar a rollout controlado.
  • Si algo falta, primero se corrige o se documenta como bloqueo.
  • Si una prueba requiere credenciales, SMTP real o acceso infra, no se inventa: se pide al responsable humano.
AreaEstado esperado antes de la validacion production-like
Dominioshttps://app.<dominio> y https://api.<dominio> definidos.
TLSCertificados validos y HTTP redirigido a HTTPS.
SecretsSecret manager o mecanismo seguro equivalente.
BackendEnv production-like de autenticacion por cookies listo.
FrontendBuild con flags de cookies listo.
DBBackup previo y usuario de minimo privilegio.
SMTPSandbox o mecanismo humano autorizado para reset password.
ObservabilidadLogs y alertas minimas para auth/CORS/CSRF/DB/SMTP.
RollbackPlan para expirar cookies, revocar sesiones y volver atras sin debilitar seguridad.
AreaRequisitoEvidencia en repo
BackendNode.js compatible con el proyecto. package.json declara 12.16.2, pero validar version soportada por seguridad antes de produccion.hemia-assistance-back-legacy/package.json
Backend depsnpm install o npm ci segun politica de release.package-lock.json existe.
FrontendVue CLI con NODE_OPTIONS=--openssl-legacy-provider en scripts Windows.hemia-assistance-front-legacy/package.json
DocsAstro + Starlight.medsync-docs/package.json
DBMySQL accesible desde backend.src/db/Sequelize.connection.js usa dialect mysql.
SMTPProveedor SMTP real o sandbox productivo.src/services/email/providers/nodemailer.provider.js
Reverse proxyProxy/LB con TLS, headers forward y limites.No hay config real en repo.
ObservabilidadLogs centralizados y alertas.No hay stack real definido.
BackupsBackups cifrados y restore probado.No hay sistema real definido.
  • Dominio final de frontend: https://app.<dominio>.
  • Dominio final de API: https://api.<dominio>.
  • Decision same-site vs cross-site.
  • Certificados TLS emitidos y renovacion automatizada.
  • Secret manager o mecanismo equivalente para secretos.
  • Usuario DB con privilegios minimos.
  • Credenciales SMTP rotables y no compartidas.
  • CORS allowlist exacta por ambiente.
  • CSRF habilitado y probado.
  • Cookies de autenticacion con Secure, HttpOnly donde corresponde, SameSite definido y Path=/.
  • REQUIRE_ACTIVE_SESSION=true en production-like.
  • No secretos default.
  • No valores reales en documentacion, tickets ni logs.

El estado actual autoriza preparar una validacion production-like o release candidate, pero no declarar production-ready. Antes de produccion:

ValidacionEstado al preparar este manualAccion requerida
Refresh cookie-onlyCubierto localmente.Repetir smoke production-like con cookies Secure=true.
Browser realCubierto localmente con Playwright Chromium.Repetir con Browser/Playwright/DevTools en production-like HTTPS/domain.
Reset password invalidationPendiente end-to-end con OTP/SMTP.Usar SMTP sandbox o intervencion humana autorizada.
Tenant restrictedDecision CTO/Product aprobada: hard-block en login para tenant restricted/suspended/inactive y usuario inactivo/bloqueado.Validar que no emite sesion, access cookie, refresh cookie ni datos clinicos; /tenant-restricted queda para sesiones existentes con tenantOperational.allowed=false.

No marcar production-ready si cualquiera de estas validaciones queda pendiente.

Para el MVP/productivo inicial, no existe login limitado para tenant restricted. El comportamiento esperado es:

  • Tenant restricted/suspended/inactive en login: hard-block.
  • Usuario inactivo/bloqueado en login: hard-block.
  • Sin sesion.
  • Sin access cookie.
  • Sin refresh cookie.
  • Sin datos clinicos.
  • Error generico de login.

La pantalla /tenant-restricted sigue siendo valida para sesiones ya existentes que detecten tenantOperational.allowed=false. El backlog futuro es Limited restricted tenant session for billing/self-service UX; no debe implementarse como parte del rollout inicial.

AccesoPara que se usaRegla de seguridad
Infra/cloudDNS, TLS, proxy, servidores, red y storage.MFA y principio de minimo privilegio.
DB adminCrear usuario/app schema, backups, restore y migraciones SQL.No usar cuenta root de DB para la app.
SMTP adminCrear credenciales y validar envio.Usar sandbox para QA; rotar si se expone.
Secret managerCrear/rotar secretos.Nunca copiar secretos a docs ni chats.
Super Admin QACierre de sesiones y pruebas operativas.Usar usuario QA ficticio, no cuenta humana real.
ResponsableConfirma
InfraDNS, TLS, proxy, headers, secrets, logs y rollback.
BackendEnv de cookies auth, CSRF, CORS, session, refresh, reset password y Super Admin close.
FrontendBuild con cookies, withCredentials, sin Authorization, cleanup 401/logout y browser QA.
DBA/owner DBBackup, restore, migraciones y usuario de minimo privilegio.
QA/ProductLogin, tenant hard-block, usuario inactivo, flujo clinico minimo y evidencia sin datos reales.
RepoArchivo o carpetaMotivo
Backend.env.example, .env.localUsar solo como fuente de nombres de variables; no copiar valores.
Backendpackage.jsonScripts reales: dev, dev:d2, dev:legacy, start.
Backendsrc/config/security.jsStartup validation de auth, CORS, CSRF y secretos.
Backendsrc/config/authCookie.config.jsNombres y flags de cookies auth.
Backendsrc/routes/mysql/auth.jsEndpoints auth y middleware CSRF.
Backendsrc/middleware/corsCredentialed.middleware.jsCORS credentialed allowlist.
BackendScripts_SQL manual existente; no hay migracion automatica por package script.
Frontend.env.local, .env.production, .env.stagingVariables de build; contienen valores que no deben copiarse sin revision.
Frontendpackage.jsonScripts reales: serve, serve:d2, serve:legacy, serve:lan, build, build-stage, lint.
Frontendsrc/services/config/authTransport.config.jsFlags de autenticacion por cookies.
Frontendsrc/services/config/axios.helper.jswithCredentials, CSRF y ausencia de Authorization en navegador.
Docspackage.json, astro.config.mjsBuild docs y sidebar Starlight.
  • No editar .env.production del frontend con datos no aprobados.
  • No subir .env con secretos al repositorio.
  • No levantar backend con NODE_ENV=production si falta un secreto fuerte.
  • No configurar CORS_ALLOWED_ORIGINS=* con CORS_CREDENTIALS=true.
  • No servir API production-like por HTTP.
  • No usar fixtures QA contra datos reales.
  • No ejecutar scripts QA con flags de escritura contra produccion.