EMTA - Manual Tecnico

Guia de arquitectura, mantenimiento, integraciones, datos, diagramas y operacion para continuidad del desarrollo.

Ir al manual de usuario

1) Vision general

EMTA es una aplicacion web multi-tenant para activar, coordinar, controlar y cerrar emergencias con trazabilidad completa. El sistema integra la declaracion inicial del evento, la asignacion de acciones por rol y grupo, la ejecucion operativa, la gestion documental, la auditoria y la administracion del tenant.

Stack Laravel 12, Sanctum, React, TypeScript, React Query, Vite y MySQL.
Principio rector Todo flujo critico deja rastro funcional y tecnico en auditoria legible.
Usuarios clave Director, recurso, recurso-visor, auditor, admin y tenant_admin.
Objetivo de este manual Reducir curva de mantenimiento y permitir que otros programadores operen con seguridad.
Enfoque de mantenimiento: este documento esta orientado a soporte tecnico, refactorizacion, onboarding y evolucion controlada. Todas las secciones se apoyan en la estructura real de rutas, controladores, pantallas y tablas vigentes en el proyecto.

2) Arquitectura de alto nivel

Capas

  1. Presentacion: SPA React con guards por perfil y etapas del flujo.
  2. Aplicacion: controladores Laravel que concentran reglas de activacion, respuesta, control, cierre y auditoria.
  3. Persistencia: MySQL con tablas maestras, configuracion, transaccionales y logs.
  4. Integraciones: SMTP, WhatsApp/SMS via Brevo o webhook, almacenamiento documental y rutas publicas de branding.

Principios de diseƱo

  • Aislamiento por tenant desde middleware y filtros automaticos.
  • Seguridad por perfil, ruta, etapa y permisos puntuales de panel.
  • Separacion entre configuracion estructural y tablas transaccionales de emergencia.
  • Trazabilidad centralizada en audit_log_trs con exportacion amigable.
  • Parametrizacion de acciones por riesgo, nivel y set de accion.
Convencion de tablas: _cat para catalogos, _cfg para configuracion, _mst para maestras y _trs para transaccionales. Esta taxonomia es clave para no mezclar reglas permanentes con informacion del evento activo.

3) Diagrama de contexto

El diagrama de contexto muestra a EMTA como sistema central y ubica actores, sistemas externos y repositorios de datos. Es la vista recomendada para cualquier desarrollador nuevo antes de profundizar en controladores o pantallas.

Actores

Director Recurso Recurso-visor Auditor Admin Tenant Admin
->

Capa de presentacion

Login / 2FA / Reset Pantalla 1 Pantalla 2 Pantalla 3 Pantalla 4 Admin Auditoria
->

Capa de aplicacion

AuthController ActivationController TenantDocumentController TenantPersonnelController TenantUsersController TenantBulkImportController AuditController TableCrudController
->

Persistencia e integraciones

MySQL multi-tenant Documentos y enlaces SMTP Brevo / Webhooks

Lectura operativa: el frontend concentra experiencia de usuario y validaciones de interfaz; la API centraliza la logica, la persistencia y las integraciones; la base de datos conserva configuracion, transacciones del evento y auditoria.

4) Backend Laravel (estructura tecnica)

Controladores principales

  • AuthController: login, codigo de activacion director, 2FA, reset y activacion de credenciales.
  • ActivationController: preview, store, control panel, cambio de nivel, notificaciones, delegaciones, documentos y cierre.
  • TenantDocumentController: carpetas, archivos, enlaces, descargas y relacion con riesgos.
  • AuditController: consultas, filtros y dataset de responsabilidades.
  • TenantUsersController y TenantPersonnelController: administracion de usuarios y personal.
  • TenantBulkImportController: mapeo archivo-tabla y ejecucion de importacion inicial.
  • TableCrudController: CRUD generico por tabla y soporte de mantenimiento.

Middleware y servicios

  • Authenticate: autentica sesiones via Sanctum.
  • ResolveTenant: resuelve tenant por contexto de usuario/cabecera.
  • SetLocale: idioma por usuario o tenant.
  • RestrictAuditor: reduce superficie de acceso para auditor y tenant_admin.
  • AuditLogger: persistencia uniforme en audit_log_trs.
  • TableSchemaService: metadata de tablas y etiquetas multilenguaje.
  • TenantContext y LanguageService: contexto transversal de tenant e idioma.

Rutas relevantes para mantenimiento

routes/api.php
routes/api_db.php
routes/web.php
routes/console.php
Punto de entrada funcional: la mayoria de casos de negocio del ciclo de emergencia pasan por ActivationController. Cualquier cambio transversal en activacion, delegaciones, panel de control o cierre debe evaluarse primero alli y luego en las pantallas afectadas.

5) Frontend React (estructura tecnica)

Paginas de negocio

  • Login, ResetPassword, ChangePassword.
  • Pantalla1: activacion del plan.
  • Pantalla2: respuesta operativa y acciones del usuario.
  • Pantalla3: control central, delegaciones, riesgos y evidencias.
  • Pantalla4: fin de emergencia y consolidado.
  • Admin: tenant, usuarios, personal, documentos e importacion.
  • Auditoria: exploracion y exportacion de eventos.

Guards y layout

  • ProtectedRoute y PublicRoute separan acceso autenticado/no autenticado.
  • AdminGate, DirectorGate, ResourceGate, AuditorGate aplican autorizacion por perfil.
  • ControlGate valida acceso al panel via permiso puntual y activacion.
  • DirectorFlowGate mantiene la secuencia funcional Pantalla1 - Pantalla4.
  • MainLayout construye la navegacion superior, el menu contextual y la visibilidad por estado.

Rutas SPA vigentes

/login
/reset-password
/pantalla1
/pantalla2
/pantalla3
/pantalla4
/admin
/auditoria
/change-password

6) Autenticacion, permisos y sesiones

Perfiles soportados

  • admin: administracion global del tenant.
  • tenant_admin: mantenimiento operativo acotado.
  • director: flujo completo de emergencia.
  • recurso: confirmacion y ejecucion de acciones.
  • recurso-visor: respuesta mas consulta del panel de control.
  • auditor: trazabilidad y cumplimiento.

Controles de seguridad

  • Autenticacion Bearer via Sanctum.
  • 2FA configurable por tenant.
  • Flujo de reseteo y activacion de credenciales.
  • Permisos sobre panel por activacion y usuario.
  • Restriccion de endpoints por middleware y guards de frontend.
Regla importante: una ruta visible en el menu no sustituye la autorizacion real. EMTA valida permisos tanto en frontend como en backend; cualquier nueva pantalla debe respetar ambas capas.

7) Flujo funcional detallado

  1. Activacion: el director selecciona riesgo, criterio y nivel; el backend genera la activacion y el set de acciones.
  2. Respuesta: cada recurso confirma disponibilidad y ejecuta las acciones asignadas.
  3. Control: el panel centraliza semaforos, delegaciones, documentos, notas y elementos vulnerables.
  4. Cierre: se finaliza la emergencia, se consolidan metricas y se notifican resultados.

Reglas de negocio relevantes

  • Si el nivel corresponde a normalidad, no se envian notificaciones.
  • La auto-delegacion excluye al Director.
  • La delegacion de titularidad impacta tablas transaccionales y no tablas de configuracion.
  • Los usuarios con titularidad delegada en transaccionales pueden delegar acciones en operacion.
  • Los grupos inactivos no deben aparecer en selectores de delegacion.
  • Las exportaciones de auditoria deben ser legibles para usuario no tecnico.

8) Diagramas por modulo y pantalla

Esta seccion modela cada modulo principal desde la perspectiva de mantenimiento. Los diagramas no sustituyen la lectura de codigo, pero permiten entender rapidamente entradas, decisiones, persistencia y salidas visibles.

8.1 Modulo de autenticacion y acceso

Usuario -> Login / 2FA / Reset -> AuthController -> users + tenants + Sanctum

Entradas

  • Credenciales
  • Codigo de activacion
  • Desafio 2FA

Procesos

  • Validacion de tenant y perfil
  • Emision de token
  • Reset y activacion de password

Persistencia

  • users
  • tenants
  • Tokens de login / reset / 2FA

Salida

  • Sesion autenticada
  • Redireccion por perfil
  • Error de acceso controlado

8.2 Modulo de activacion

Director -> Pantalla 1 -> ActivationController::preview() / store() -> Emergencia activa

Lecturas base

  • riesgo_cat
  • nivel_alerta_cat
  • tipo_emergencia_cat
  • riesgo_nivel_accion_set_cfg

Escrituras

  • activacion_del_plan_trs
  • activacion_nivel_hist_trs
  • ejecucion_accion_trs
  • notificacion_envio_trs
  • audit_log_trs

Riesgos de cambio

  • Generacion del set de acciones
  • Textos de notificacion inicial
  • Normalidad sin envio

Salida funcional

  • Plan activado
  • Acciones instanciadas
  • Avance a Pantalla 2

8.3 Modulo de respuesta operativa

Recurso / Director -> Pantalla 2 -> myActions() / confirmMyActions() -> Acciones y confirmaciones

Lecturas

  • ejecucion_accion_trs
  • asignacion_en_funciones_trs
  • Documentos por activacion

Escrituras

  • ejecucion_accion_trs
  • notificacion_confirmacion_trs
  • notas_operativas_trs

Decisiones

  • Disponibilidad del recurso
  • Estado de cada accion
  • Notas y soporte documental

Impacto

  • Semaforo de control
  • Tiempos de ejecucion
  • Seguimiento de cumplimiento

8.4 Modulo de control y delegaciones

Director / usuario autorizado -> Pantalla 3 -> controlPanel() + grantControlPanelAccess() -> Panel, delegaciones y repositorio

Lecturas

  • activacion_del_plan_trs
  • ejecucion_accion_trs
  • persona_rol_grupo_cfg
  • tenant_documents

Escrituras

  • asignacion_en_funciones_trs
  • ejecucion_accion_trs por delegacion
  • control_panel_access_trs
  • audit_log_trs

Submodulos internos

  • Semaforo operativo
  • Delegacion de titularidad
  • Delegacion de acciones
  • Repositorio por riesgo
  • Elementos vulnerables

Riesgos de mantenimiento

  • No tocar configuracion al delegar titularidad
  • Respetar grupos activos
  • Mantener auditoria legible

8.5 Modulo de cierre

Director -> Pantalla 4 -> finalizeActivation() / sendEndNotifications() -> Resumen final del evento

Lecturas

  • ejecucion_accion_trs
  • notas_operativas_trs
  • activacion_nivel_hist_trs

Escrituras

  • Cambio de estado del plan
  • Nuevo historico de nivel / cierre
  • notificacion_envio_trs
  • audit_log_trs

Salidas

  • Cronologia consolidada
  • Tiempos redondeados
  • Resumen por persona

Puntos sensibles

  • Mensajes finales sin codigos
  • Nombre de riesgo y nivel
  • Consistencia de cronologia

8.6 Modulo de administracion

Admin / Tenant Admin -> AdminPage -> Settings + Users + Personnel + Documents + Bulk Import -> Configuracion del tenant

Submodulos

  • Tenant y branding
  • Usuarios
  • Personal
  • Documentos
  • Importacion masiva

Controladores

  • TenantSettingsController
  • TenantUsersController
  • TenantPersonnelController
  • TenantDocumentController
  • TenantBulkImportController

Tablas

  • users, tenants
  • persona_mst, persona_rol_cfg
  • persona_rol_grupo_cfg
  • tenant_documents
  • bulk_import_file_map_cfg

Riesgos de cambio

  • Permisos de tenant_admin
  • Consistencia entre persona y usuario
  • Mantenibilidad del catalogo de importacion

8.7 Modulo de auditoria

Auditor / Admin / Director -> AuditoriaPage -> AuditController -> audit_log_trs + exportacion

Entradas

  • Filtros por modulo y fechas
  • Filtros por riesgo, plan o usuario
  • Solicitud de exportacion

Procesos

  • Consulta de filtros
  • Normalizacion de payloads
  • Exportacion amigable

Persistencia

  • audit_log_trs
  • Datos enriquecidos por responsabilidad

Salida

  • Consulta legible
  • CSV entendible por negocio
  • Trazabilidad de delegaciones y documentos

8.8 Modulo de importacion masiva

Admin / Tenant Admin -> Admin - Importacion masiva -> TenantBulkImportController -> Tablas destino

Entradas

  • Archivos CSV, XLSX o XLS
  • Check de limpieza previa
  • Catalogo editable de mapeo

Procesos

  • Deteccion del tipo real
  • Orden por dependencia
  • Parseo e insercion por lotes

Persistencia

  • bulk_import_file_map_cfg
  • Tablas maestras y de configuracion destino
  • audit_log_trs

Salida

  • Resumen por archivo
  • Errores de carga
  • Trazabilidad del onboarding

9) Modelo de auditoria

Tabla base: audit_log_trs. Es la bitacora transversal de EMTA y el primer lugar a revisar ante incidencias funcionales.

Campos clave

  • event_type, module, entity_type, entity_id.
  • previous_value y new_value en JSON.
  • plan_id, user_id, tenant_id.
  • Timestamp alineado con timezone del tenant.

Eventos principales

  • Plan: plan_activated, plan_status_changed, level_changed.
  • Acciones: action_created, action_status_changed.
  • Delegaciones: delegation_created, delegation_updated, delegation_auto, delegation_action.
  • Documentos: document_uploaded, document_viewed, document_downloaded.

Criterios de legibilidad actuales

  • Las delegaciones priorizan nombres de accion, rol, grupo y personas en lugar de codigos internos.
  • Las exportaciones omiten campos tecnicos como module, event_type, entity_id, IP y payload crudo.
  • Los eventos de documentos muestran nombre amigable y accion visible: visualizado o descargado.
  • Cuando la delegacion es manual, el actor debe ser el usuario real y no APP.

10) Modelo de datos por dominios

Dominio de emergencia

  • activacion_del_plan_trs
  • activacion_nivel_hist_trs
  • asignacion_en_funciones_trs
  • ejecucion_accion_trs
  • notas_operativas_trs

Dominio de comunicaciones

  • notificacion_envio_trs
  • notificacion_confirmacion_trs
  • control_panel_access_trs
  • audit_log_trs

Dominio organizacional

  • persona_mst
  • persona_rol_cfg
  • persona_rol_grupo_cfg
  • rol_cat
  • grupo_operativo_cfg

Dominio de configuracion y soporte

  • riesgo_cat, nivel_alerta_cat, tipo_emergencia_cat
  • accion_set_cfg, accion_set_detalle_cfg, riesgo_nivel_accion_set_cfg
  • tenant_documents, tenant_document_links, tenant_document_riesgo_trs
  • bulk_import_file_map_cfg

11) Diccionario de datos

El siguiente diccionario sintetiza las entidades mas relevantes para mantenimiento funcional. Combina proposito, claves, relaciones y puntos de lectura/escritura para acelerar analisis de impacto.

Entidad Tipo Proposito PK / FK principales Escritura principal Lectura principal
activacion_del_plan_trs Transaccional Cabecera de la emergencia activa o finalizada. PK ac_de_pl-id; FK a tipo emergencia, riesgo, nivel inicial y persona activadora. ActivationController::store() Pantallas 1, 3, 4; guards de flujo; auditoria.
activacion_nivel_hist_trs Transaccional Historico de niveles, decisiones y cambios de estado durante el evento. PK ac_ni_hi-id; FK a activacion, nivel, set de accion y registrador. store(), changeLevel(), finalizeActivation() Pantalla 1, Pantalla 4, reportes y cronologia.
asignacion_en_funciones_trs Transaccional Delegaciones temporales de titularidad o rol en una activacion concreta. PK as_en_fu-id; FK a activacion, grupo, persona y delegador. Delegaciones desde control panel y procesos de auto-delegacion. Pantalla 2, Pantalla 3, auditoria y control de visibilidad.
ejecucion_accion_trs Transaccional Instancia ejecutable de cada accion asignada dentro del evento. PK ej_ac-id; FK a activacion, grupo, detalle de accion y asignacion en funciones. Generacion inicial del plan y cambios desde respuesta/control. Pantallas 2, 3 y 4; resumen y metricas.
notas_operativas_trs Transaccional Observaciones operativas por persona y grupo durante la emergencia. PK no_op-id; FK a activacion, grupo y persona. Pantalla 2 y procesos de cierre. Pantalla 3, Pantalla 4 y reportes.
notificacion_envio_trs Transaccional Registro de mensajes emitidos por canal y destinatario. PK no_en-id; FK a activacion, persona, grupo, rol y canal. sendNotifications(), sendEndNotifications(), cambios de titularidad. Auditoria, seguimiento de notificaciones y confirmaciones.
notificacion_confirmacion_trs Transaccional Respuesta a un envio notificado, con marca de confirmacion y mensaje. PK no_co-id; FK a notificacion_envio_trs. confirmMyActions() Pantalla 2, metricas de respuesta y auditoria.
control_panel_access_trs Transaccional Permisos puntuales de acceso al panel de control por activacion y usuario. PK autonumerica; FK a usuario, tenant y activacion. grantControlPanelAccess() ControlGate y checks de acceso.
audit_log_trs Transaccional Bitacora tecnica y funcional para trazabilidad, exportacion y revision forense. PK autonumerica; FK funcionales a tenant, usuario y plan. AuditLogger y controladores de negocio. Modulo Auditoria, exportaciones y soporte.
persona_mst Maestra Identidad base de personas operativas y administrativas. PK per-id; datos de nombre, documento, email, movil y activo. TenantPersonnelController y carga inicial. Admin, asignaciones, notificaciones y paneles operativos.
persona_rol_cfg Configuracion Relacion estructural persona-rol a nivel del tenant. PK pe_ro-id; FK a persona y rol. Admin / Personal Pantallas operativas y mantenimiento.
persona_rol_grupo_cfg Configuracion Relacion estructural persona-rol-grupo y tipo de asignacion. PK pe_ro_gr-id; FK a persona, rol y grupo operativo. Admin / Personal Pantallas operativas, conformacion y semaforos base.
rol_cat Catalogo Catalogo de roles funcionales del plan. PK rol-id. Migraciones, CRUD y carga inicial. Admin, asignaciones, activacion y delegaciones.
grupo_operativo_cfg Configuracion Estructura de grupos operativos y su estado activo. PK propia; relaciones funcionales con personal, acciones y panel. Admin / Conformacion Pantallas 2 y 3, filtros y semaforos.
riesgo_cat Catalogo Catalogo de riesgos del tenant. PK rie-id; FK a tipo de riesgo. Configuracion base y carga inicial. Pantalla 1, EV, documentos por riesgo e informes.
nivel_alerta_cat Catalogo Niveles de alerta disponibles, vinculados al nivel de emergencia. PK ni_al-id; FK a nivel_emergencia_cat. Configuracion y diccionario. Activacion, cambios de nivel y cierre.
tipo_emergencia_cat Catalogo Tipo formal del evento o simulacro. PK ti_em-id. Configuracion base. Pantalla 1, notificaciones y reportes.
accion_set_cfg Configuracion Conjunto de acciones operativas reutilizable. PK propia; relacionado con riesgo/nivel por tabla puente. Carga inicial y CRUD. Activacion y mantenimiento de planificacion.
accion_set_detalle_cfg Configuracion Detalle de acciones por set, con granularidad ejecutable. PK propia; FK a accion_set_cfg y accion operativa. Carga inicial y CRUD. Generacion de ejecucion_accion_trs.
riesgo_nivel_accion_set_cfg Configuracion Tabla puente que define que set corresponde a un riesgo y nivel. FK a riesgo, nivel y set. Configuracion y importacion inicial. Preview y store de activacion.
tenant_documents Maestra/operativa Documentos almacenados por tenant con metadatos de carga. PK propia; relacion con carpetas y riesgos. TenantDocumentController Admin, Pantalla 2, Pantalla 3, descargas y auditoria.
tenant_document_links Maestra/operativa Enlaces externos asociados a carpetas documentales. PK propia; FK a carpeta documental. TenantDocumentController Admin y repositorio por riesgo.
tenant_document_riesgo_trs Relacion Tabla de asociacion entre documentos y riesgos. FK a documento y riesgo. Subida/edicion documental. Pantallas operativas, filtrado por riesgo.
bulk_import_file_map_cfg Configuracion Catalogo de nombre de archivo, tabla destino y orden de carga. PK autonumerica; clave unica por file_name. TenantBulkImportController Admin / Importacion masiva y scripts de hosting.

Campos criticos que conviene conocer

Tabla Campos Interpretacion operativa
activacion_del_plan_trs ac_de_pl-rie_id-fk, ac_de_pl-ni_al_id-fk-inicial, ac_de_pl-estado Determinan el riesgo activo, el nivel base y el estado de vida del plan.
activacion_nivel_hist_trs ac_ni_hi-fuente_decision, ac_ni_hi-justificacion Explican por que se subio o bajo el nivel y quien lo registro.
asignacion_en_funciones_trs as_en_fu-tipo_asignacion, as_en_fu-per_id-fk-delegador, as_en_fu-estado Modelan delegaciones temporales efectivas durante una activacion concreta.
ejecucion_accion_trs ej_ac-estado, ej_ac-ts_ini, ej_ac-ts_fin Permiten medir avance, ejecucion y duracion de acciones.
notificacion_envio_trs no_en-ca_co_id-fk, no_en-estado, no_en-num_de_intento Describen por que canal se envio, si tuvo exito y cuantos reintentos hubo.
persona_rol_grupo_cfg pe_ro_gr-tipo_asignacion, pe_ro_gr-gr_op_id-fk Define titular, suplente o lider dentro del grupo operativo.
bulk_import_file_map_cfg file_name, destination_table, upload_order Gobiernan el orden correcto de la carga inicial y la tabla objetivo.

12) Diagrama entidad-relacion

En lugar de un ER unico y saturado, el modelo se divide por modulos de datos. Esta representacion es mas util para mantenimiento porque permite analizar impacto por dominio sin perder legibilidad.

12.1 ER del modulo de emergencia

activacion_del_plan_trsCabecera del evento
activacion_nivel_hist_trsHistorico de nivel y decisiones
asignacion_en_funciones_trsDelegaciones transaccionales
ejecucion_accion_trsAcciones instanciadas
notas_operativas_trsNotas de operacion
  • activacion_del_plan_trs 1:N activacion_nivel_hist_trs para guardar la cronologia del nivel.
  • activacion_del_plan_trs 1:N asignacion_en_funciones_trs para titularidades y delegaciones vigentes por evento.
  • activacion_del_plan_trs 1:N ejecucion_accion_trs como detalle ejecutable de las acciones generadas.
  • asignacion_en_funciones_trs 1:N ejecucion_accion_trs cuando una accion se reasigna por delegacion.
  • activacion_del_plan_trs 1:N notas_operativas_trs para trazabilidad textual del evento.

12.2 ER del modulo organizacional

persona_mstPersonas base
persona_rol_cfgRelacion persona-rol
persona_rol_grupo_cfgRelacion persona-rol-grupo
rol_catCatalogo de roles
grupo_operativo_cfgEstructura operativa
  • persona_mst 1:N persona_rol_cfg para asignar roles funcionales.
  • rol_cat 1:N persona_rol_cfg como catalogo maestro de referencia.
  • persona_mst 1:N persona_rol_grupo_cfg para ubicar a la persona en la operacion.
  • rol_cat 1:N persona_rol_grupo_cfg para distinguir titular, suplente o lider.
  • grupo_operativo_cfg 1:N persona_rol_grupo_cfg para encuadre operativo permanente.

12.3 ER del modulo de parametrizacion

riesgo_catCatalogo de riesgos
nivel_alerta_catNiveles de alerta
tipo_emergencia_catTipo del evento
accion_set_cfgSets de acciones
accion_set_detalle_cfgDetalle ejecutable
riesgo_nivel_accion_set_cfgPuente riesgo-nivel-set
  • riesgo_cat 1:N riesgo_nivel_accion_set_cfg para determinar acciones por escenario.
  • nivel_alerta_cat 1:N riesgo_nivel_accion_set_cfg para distinguir severidad.
  • accion_set_cfg 1:N accion_set_detalle_cfg para definir cada accion del set.
  • accion_set_cfg 1:N riesgo_nivel_accion_set_cfg para reutilizar el mismo set en multiples escenarios.
  • tipo_emergencia_cat se referencia desde activacion_del_plan_trs como clasificacion formal del evento.

12.4 ER del modulo de comunicaciones y auditoria

notificacion_envio_trsMensajes enviados
notificacion_confirmacion_trsConfirmaciones de recepcion
control_panel_access_trsPermisos de panel
audit_log_trsTrazabilidad global
  • activacion_del_plan_trs 1:N notificacion_envio_trs para registrar mensajes emitidos durante el evento.
  • notificacion_envio_trs 1:N notificacion_confirmacion_trs para confirmar recepcion o disponibilidad.
  • activacion_del_plan_trs 1:N control_panel_access_trs cuando se comparte el panel con otros usuarios.
  • audit_log_trs referencia funcionalmente activaciones, usuarios, documentos y delegaciones.

12.5 ER del modulo documental

tenant_document_foldersCarpetas del tenant
tenant_documentsArchivos
tenant_document_linksEnlaces externos
tenant_document_riesgo_trsRelacion con riesgos
  • tenant_document_folders 1:N tenant_documents para organizar repositorio documental.
  • tenant_document_folders 1:N tenant_document_links para soportar modo enlaces.
  • tenant_documents 1:N tenant_document_riesgo_trs para filtrar por riesgo activo.
  • riesgo_cat 1:N tenant_document_riesgo_trs como clasificador funcional del repositorio.

12.6 ER del modulo de importacion

bulk_import_file_map_cfgCatalogo archivo-tabla
Tablas destinoCatalogos, configuracion y maestras
audit_log_trsRegistro de la carga
  • bulk_import_file_map_cfg 1:N logico con archivos subidos segun file_name.
  • bulk_import_file_map_cfg.destination_table determina la tabla de escritura del proceso.
  • bulk_import_file_map_cfg.upload_order gobierna la dependencia de carga entre tablas.
  • Cada ejecucion genera trazabilidad funcional en audit_log_trs.

13) API por dominios (resumen operacional)

Autenticacion

POST /api/v1/auth/login
POST /api/v1/auth/activation-code/validate
POST /api/v1/auth/activation-code/activate
POST /api/v1/auth/password/forgot
POST /api/v1/auth/password/reset
POST /api/v1/auth/2fa/verify
POST /api/v1/auth/2fa/resend

Activacion y operacion

POST /api/v1/activacion
GET  /api/v1/activacion/preview
GET  /api/v1/activacion/{activationId}/control
GET  /api/v1/activacion/{activationId}/control/access
POST /api/v1/activacion/{activationId}/control/access
PUT  /api/v1/activacion/{activationId}/nivel
POST /api/v1/activacion/{activationId}/finalizar
GET  /api/v1/acciones/mias
POST /api/v1/acciones/confirmar

Documentos y auditoria

POST /api/v1/activacion/{activationId}/documentos
POST /api/v1/activacion/{activationId}/documentos/visto
GET  /api/v1/tenant/documents/folders
POST /api/v1/tenant/documents/folders
GET  /api/v1/tenant/documents/{documentId}/download
GET  /api/v1/audit
GET  /api/v1/audit/filters
GET  /api/v1/audit/responsibilities

Administracion e importacion

GET  /api/v1/tenant/settings
PUT  /api/v1/tenant/settings
GET  /api/v1/tenant/users
GET  /api/v1/tenant/personnel
GET  /api/v1/tenant/import/mappings
POST /api/v1/tenant/import/mappings/sync
POST /api/v1/tenant/import/mappings/upsert
POST /api/v1/tenant/import/run

14) Importacion masiva inicial

El modulo de importacion masiva inicial permite poblar la informacion base de un nuevo cliente desde Admin, usando un catalogo de mapeo archivo-tabla y un orden de carga que respeta dependencias relacionales.

Objetivo tecnico

  • Eliminar cargas manuales tabla por tabla.
  • Detectar el tipo real del archivo y no solo su extension.
  • Permitir limpieza previa o adicion de registros.
  • Registrar auditoria del proceso y resultado por archivo.

Componentes implementados

  • bulk_import_file_map_cfg
  • TenantBulkImportController
  • Pestana Importacion masiva en Admin
  • Script de hosting 2026-05-04_bulk_import_file_map_cfg_hosting.sql

Algoritmo operativo

  1. Se sincroniza o mantiene el catalogo de archivos esperados.
  2. El usuario sube uno o varios archivos.
  3. El backend detecta si el contenido real es CSV, XLSX o XLS.
  4. Se ordena la carga por upload_order.
  5. Se aplica limpieza opcional por tabla destino.
  6. Se insertan lotes y se registra el resultado en auditoria.
Recomendacion de mantenimiento: si se agregan nuevos archivos de onboarding, la primera extension natural es actualizar bulk_import_file_map_cfg y no modificar la logica central del importador.

15) Operacion, despliegue y observabilidad

Ambientes

  • Local: Laravel + Vite con VITE_API_URL.
  • Produccion: frontend compilado y backend con caches de framework.
  • Hosting: scripts SQL versionados en emta-backend/SQL.

Artefactos de operacion

  • Rutas web/API y comandos artisan agendados.
  • Logs de Laravel y auditoria en BD.
  • Repositorio documental por tenant y branding publico.

Checklist de despliegue

  1. Backup de base de datos y documentos.
  2. Aplicar migraciones y scripts SQL pendientes.
  3. Desplegar backend y limpiar/reconstruir cache.
  4. Desplegar frontend compilado.
  5. Ejecutar smoke tests de login, activacion, notificaciones, panel, auditoria y documentos.

16) QA, pruebas y validacion funcional

Pruebas minimas obligatorias

  • Autenticacion por perfil y guards de ruta.
  • Activacion con preview y generacion de acciones.
  • Respuesta operativa y confirmaciones.
  • Delegaciones manuales y automaticas.
  • Cierre de emergencia y consolidado final.
  • Visualizacion/descarga de documentos con auditoria.
  • Importacion masiva con y sin limpieza previa.

Pruebas de regresion recomendadas

  • i18n de mensajes y notificaciones.
  • Acceso al panel sin caducidad durante emergencia activa.
  • Visibilidad del boton Delegar cuando la titularidad fue delegada en transaccionales.
  • Exportacion amigable de auditoria.
  • Filtros de grupos operativos activos e EV dependientes.

17) Riesgos tecnicos y roadmap sugerido

  • Versionar contratos API con OpenAPI/Swagger.
  • Agregar pruebas automatizadas por dominio critico.
  • Separar mas claramente servicios de notificaciones e importacion en capas propias.
  • Fortalecer observabilidad con metricas de latencia, fallos y reintentos por canal.
  • Generar runbooks operativos por incidente y por mantenimiento.
  • Publicar ADRs para decisiones estructurales sensibles: delegaciones, auditoria y seguridad multi-tenant.