Version: 1.0
Fecha: 16 de Marzo, 2026
Contexto: Reunion "Definicion Nebula Vault" del 16-Mar-2026
Arquitecto: Carlos Alberto Torres Camargo
El sistema DataVault es un aplicativo de gestion documental y preservacion digital desarrollado con Next.js 15 + FastAPI + PostgreSQL. La reunion del 13-Mar-2026 introdujo una linea paralela de trabajo para migrar el frontend de DataVault a la arquitectura frontend de Nebula (Angular 21 + Nx Monorepo) y adaptar el backend (solo lo necesario) para soportar las configuraciones de operacion (tenant) del ecosistema Simappe.
| Aspecto | DataVault (Actual) | Nebula/Simappe (Target) |
|---|---|---|
| Frontend | Next.js 15 + React 19 + TypeScript | Angular 21 + Nx Monorepo + TypeScript |
| Backend | FastAPI (Python 3.11) + SQLAlchemy | Spring Boot (Java) + Simappe Framework |
| Estado | Zustand | Angular Signals |
| UI Kit | Radix UI + Tailwind CSS | @nebula/ui-kit (Bootstrap + componentes custom) |
| Multi-tenant | Header X-Tenant-ID (localStorage) |
JWT claim sub + database_config_v2 (database-based) |
| Auth | JWT simple (access + refresh) | SimappeOAuth2Server + Gateway |
| API Gateway | NGINX directo | SimappeGatewayServer (routing + circuit breaker) |
| BD | PostgreSQL 15 (schema unico) | PostgreSQL (BD por tenant via HikariCP dinamico) |
| Categoria | Descripcion | Indicador |
|---|---|---|
| CORE-GD | Funcionalidad nuclear de un sistema de gestion documental | Verde |
| COMPLEMENTARIO-GD | Funcionalidad que complementa la gestion documental pero no es el nucleo | Amarillo |
| FUERA-DE-CONTEXTO | Funcionalidad que NO pertenece a un sistema de gestion documental | Rojo |
| INFRAESTRUCTURA | Funcionalidad transversal necesaria para cualquier sistema (auth, tenants, etc.) | Azul |
| Peso | Descripcion |
|---|---|
| 1 | Bajo — CRUD simple, pocos componentes, sin logica compleja |
| 2 | Medio-Bajo — CRUD con filtros/busqueda, logica moderada |
| 3 | Medio — Logica de negocio significativa, integracion con otros modulos |
| 4 | Medio-Alto — Workflows, procesamiento de archivos, integraciones externas |
| 5 | Alto — Logica compleja, multiples integraciones, procesamiento batch |
| # | Modulo | Funcionalidad | Categoria | Peso | Componentes Frontend | Endpoints Backend | Justificacion |
|---|---|---|---|---|---|---|---|
| 1 | Ingesta de Archivos | Carga individual y masiva, proyectos de digitalizacion, subcarpetas, seguimiento de estado, integracion SFTP | CORE-GD | 5 | ~8 componentes (ProjectList, ProjectDetail, UploadDialog, FileList, StatusTracker, SubfolderTree, BatchUpload, ProgressBar) | 6 endpoints (CRUD projects + upload + status) | Funcionalidad principal de cualquier sistema de gestion documental |
| 2 | Repositorio Documental | Navegacion de archivos, busqueda avanzada (incluye dentro de ZIPs), descarga individual/masiva, vista previa | CORE-GD | 4 | ~6 componentes (FileBrowser, SearchBar, FilePreview, DownloadDialog, BreadcrumbNav, ZipExplorer) | 6 endpoints (config, list, search, download, zip/list, zip/download) | Nucleo de consulta y recuperacion documental |
| 3 | Preservacion Digital | Monitoreo de integridad (checksums), diagnostico de problemas, reparacion, estadisticas por extension | CORE-GD | 5 | ~7 componentes (PreservationDashboard, FileStatus, DiagnosticPanel, RepairDialog, StatisticsChart, CriticalList, MessagesBanner) | 8 endpoints (status, file, diagnose, repair, critical, attention, optimal, statistics) | Esencial para la preservacion a largo plazo de documentos digitales |
| 4 | Retencion Documental | Politicas de retencion configurables, disposicion automatica, calendario, suspension, notificaciones, estadisticas | CORE-GD | 5 | ~8 componentes (PolicyList, PolicyForm, DocumentRetentionList, RetentionCalendar, SuspensionDialog, ExpiringList, StatsPanel, DocumentSelector) | 12 endpoints (CRUD policies + CRUD documents + suspend/resume + stats + expiring + available + from-server + by-path) | Cumplimiento normativo de gestion documental (tablas de retencion) |
| 5 | Legal Hold | Casos legales, asignacion de documentos (HR + Ingest), historial, contadores | CORE-GD | 4 | ~6 componentes (CaseList, CaseForm, CaseDetail, DocumentAssignment, DocumentSearch, HistoryLog) | 10 endpoints (CRUD cases + close/reopen + documents CRUD + check + available + from-server + by-path) | Requerimiento legal para preservar documentos bajo litigio |
| 6 | Cloud Storage | Integracion Azure, daemon de sincronizacion, control de estado, logs | CORE-GD | 3 | ~4 componentes (CloudStatus, DaemonControl, SyncStats, LogViewer) | 6 endpoints (status, upload, daemon start/stop/stats/logs) | Respaldo y disponibilidad de documentos en la nube |
Subtotal CORE-GD: 6 modulos, Peso total: 26, ~39 componentes, ~48 endpoints
| # | Modulo | Funcionalidad | Categoria | Peso | Componentes Frontend | Endpoints Backend | Justificacion |
|---|---|---|---|---|---|---|---|
| 7 | Auditoria | Log de acciones (CRUD, LOGIN, LOGOUT), filtrado por entidad/usuario/fecha, exportacion | COMP-GD | 3 | ~4 componentes (AuditLog, FilterPanel, ExportButton, DetailModal) | 3 endpoints (audit, global, export) | Trazabilidad es requisito normativo de gestion documental |
| 8 | Dashboard | Estadisticas globales, metricas HR, metricas documentales, actividades recientes, tareas pendientes | COMP-GD | 3 | ~6 componentes (StatCards, HRStats, DocumentStats, ActivityFeed, TaskList, ChartPanel) | 2 endpoints (stats, tasks) | Vista ejecutiva del estado del repositorio |
| 9 | Notificaciones | Notificaciones en tiempo real, tipos (alert, info, warning, success), marcado como leido | COMP-GD | 2 | ~3 componentes (NotificationBell, NotificationList, NotificationItem) | 4 endpoints (CRUD + mark-read + mark-all-read) | Alertas de vencimiento de retencion, preservacion, etc. |
| 10 | Reportes Avanzados | Generacion de reportes personalizados, acceso por permisos | COMP-GD | 3 | ~3 componentes (ReportList, ReportGenerator, ReportViewer) | Endpoints por definir | Componente analitico para gestion documental |
| 11 | Asignacion de Archivos | Asignacion de archivos/carpetas a usuarios/roles, expiracion temporal | COMP-GD | 2 | ~3 componentes (AssignmentDialog, AssignedFilesList, PermissionSelector) | 3 endpoints (assign, assigned, unassign) | Control de acceso granular a documentos |
Subtotal COMPLEMENTARIO-GD: 5 modulos, Peso total: 13, ~19 componentes, ~12 endpoints
| # | Modulo | Funcionalidad | Categoria | Peso | Componentes Frontend | Endpoints Backend | Justificacion |
|---|---|---|---|---|---|---|---|
| 12 | Gestion de Empleados | CRUD empleados, busqueda, filtrado, importacion Excel, fotos | FUERA | 3 | ~5 componentes (EmployeeList, EmployeeForm, EmployeeDetail, ImportDialog, PhotoUpload) | 5 endpoints | RRHH — Pertenece a un modulo de Recursos Humanos, no a gestion documental |
| 13 | Gestion de Contratos Laborales | CRUD contratos, tipos (indefinido, fijo, obra_labor), seguimiento fechas, alertas vencimiento | FUERA | 2 | ~4 componentes (ContractList, ContractForm, ContractDetail, ExpiringAlert) | 5 endpoints | RRHH — Gestion contractual laboral |
| 14 | Certificaciones y Competencias | CRUD certificaciones profesionales, seguimiento vencimientos, alertas | FUERA | 2 | ~4 componentes (CertificationList, CertificationForm, CertificationDetail, ExpiringAlert) | 5 endpoints | RRHH — Gestion de competencias del personal |
| 15 | Capacitaciones y Entrenamientos | CRUD capacitaciones, tipos, duracion, estado | FUERA | 2 | ~4 componentes (TrainingList, TrainingForm, TrainingDetail, StatusBadge) | 5 endpoints | RRHH — Gestion de formacion del personal |
| 16 | Gestion de Ausencias | CRUD ausencias, workflow aprobacion, importacion Excel, calculo dias | FUERA | 3 | ~5 componentes (AbsenceList, AbsenceForm, ApprovalWorkflow, ImportDialog, CalendarView) | 7 endpoints | RRHH — Gestion de novedades de nomina |
| 17 | Repositorio HR | Almacenamiento documentos por empleado, tipos (hoja_vida, cedula, diploma, etc.), vista previa, descarga | COMP-GD* | 3 | ~5 componentes (HRDocumentList, UploadForm, DocumentPreview, FavoritesList, RecentFiles) | 4 endpoints | Zona gris — Es almacenamiento documental pero acoplado a RRHH. La funcionalidad de almacenamiento SI es GD, pero el contexto HR NO. |
Nota sobre Repositorio HR: Este modulo tiene una naturaleza dual. La funcionalidad tecnica (carga, almacenamiento, vista previa, descarga de documentos) es 100% gestion documental. Sin embargo, su modelo de datos esta acoplado a empleados (entidad RRHH). La recomendacion es generalizar esta funcionalidad como "Repositorio por Entidad" en la migracion, desacoplandola de HR.
Subtotal FUERA-DE-CONTEXTO: 6 modulos, Peso total: 15, ~27 componentes, ~31 endpoints
| # | Modulo | Funcionalidad | Categoria | Peso | Componentes Frontend | Endpoints Backend | Justificacion |
|---|---|---|---|---|---|---|---|
| 18 | Autenticacion | Login, registro, refresh token, logout, reset password | INFRA | 3 | ~5 componentes (LoginForm, RegisterForm, ResetPasswordForm, ConfirmResetForm, AuthGuard) | 8 endpoints | Reemplazado por SimappeOAuth2 en la migracion |
| 19 | Gestion de Tenants | CRUD tenants, configuracion (colores, logo, cuota), solicitudes | INFRA | 3 | ~5 componentes (TenantList, TenantForm, TenantConfig, RequestList, StorageQuota) | 7 endpoints | Reemplazado por SimappeAdmin — Gestion de tenants ya existe en Simappe |
| 20 | Gestion de Usuarios | CRUD usuarios, asignacion a tenants, gestion de roles | INFRA | 3 | ~5 componentes (UserList, UserForm, TenantAssignment, RoleSelector, DomainConfig) | 8 endpoints | Parcialmente reemplazado — Roles Simappe cubren parte, pero DataVault tiene roles especificos (archivista, auditor) |
| 21 | Permisos de Modulos | Permisos granulares por modulo, permisos por carpeta (project + subfolder) | INFRA | 3 | ~4 componentes (PermissionList, ModuleToggle, FolderPermissionList, FolderSelector) | 7 endpoints | Nuevo para Simappe — Simappe no tiene permisos granulares por carpeta |
| 22 | Seleccion de Tenant | Pagina de seleccion post-login | INFRA | 1 | ~2 componentes (TenantSelector, TenantCard) | 1 endpoint | Existe en Simappe pero con flujo diferente |
| 23 | Perfil de Usuario | Actualizacion de perfil, cambio de contrasena | INFRA | 1 | ~2 componentes (ProfileForm, ChangePasswordForm) | 2 endpoints | Basico |
| 24 | Configuracion de Servidores | Gestion servidores de archivos, SFTP config, variables | INFRA | 2 | ~3 componentes (ServerList, ServerForm, TestConnection) | Variable | Especifico de DataVault — No existe en Simappe |
| 25 | Mensajes Preservacion | Mensajes a usuarios por rol/tenant, fechas inicio/fin | INFRA | 1 | ~2 componentes (MessageList, MessageForm) | Variable | Especifico de DataVault |
Subtotal INFRAESTRUCTURA: 8 modulos, Peso total: 17, ~28 componentes, ~33 endpoints
| Categoria | Modulos | Peso Total | % del Esfuerzo | Componentes | Endpoints | Decision |
|---|---|---|---|---|---|---|
| CORE-GD | 6 | 26 | 37% | ~39 | ~48 | MIGRAR — Prioridad P0 |
| COMPLEMENTARIO-GD | 5 | 13 | 18% | ~19 | ~12 | MIGRAR — Prioridad P1 |
| FUERA-DE-CONTEXTO | 6 | 15 | 21% | ~27 | ~31 | EXCLUIR de la migracion inicial |
| INFRAESTRUCTURA | 8 | 17 | 24% | ~28 | ~33 | ADAPTAR a ecosistema Simappe |
| TOTAL | 25 | 71 | 100% | ~113 | ~124 | — |
| Fase | Alcance | Peso | Modulos |
|---|---|---|---|
| Fase 1 — Core | CORE-GD + INFRAESTRUCTURA adaptada | 43 | Ingesta, Repositorio, Preservacion, Retencion, Legal Hold, Cloud + Auth/Tenants/Permisos adaptados a Simappe |
| Fase 2 — Complementarios | COMPLEMENTARIO-GD | 13 | Auditoria, Dashboard, Notificaciones, Reportes, Asignacion Archivos |
| Excluido | FUERA-DE-CONTEXTO (RRHH) | 15 | Empleados, Contratos, Certificaciones, Capacitaciones, Ausencias, Repo HR — Estos modulos pertenecen al dominio people de Nebula ERP, NO a DataVault |
Los modulos de RRHH (Empleados, Contratos, Certificaciones, Capacitaciones, Ausencias) no son funcionalidades de un sistema de gestion documental. Estos modulos:
people (nebula-hr-core) y payroll (nebula-payroll-settlement)Excepcion — Repositorio HR:
La funcionalidad de almacenar documentos asociados a un empleado (hoja de vida, cedula, diplomas) SI puede abstraerse como una funcionalidad generica de DataVault:
people de Nebula consumiria| Aspecto | DataVault (Python/FastAPI) | Nebula (Java/Simappe) | Accion |
|---|---|---|---|
| Multi-tenancy | Header X-Tenant-ID + filtro en queries |
JWT claim + database_config_v2 + HikariCP dinamico |
Adaptar — El servicio DataVault debe integrarse al modelo de tenancy de Simappe |
| Autenticacion | JWT propio (access + refresh) | SimappeOAuth2Server | Reemplazar — Eliminar auth propia, consumir tokens de OAuth2 |
| API Gateway | NGINX directo | SimappeGatewayServer (puerto 8090) | Integrar — Registrar rutas DataVault en Gateway |
| Base de datos | PostgreSQL schema unico | BD por tenant (HikariCP dinamico) | Evaluar — Se migra a BD por tenant o se mantiene schema unico con filtro? |
| Almacenamiento | Local + SFTP + S3 | Local + SFTP + S3 (similar) | Mantener — Logica de almacenamiento es compatible |
| Service Discovery | No aplica | Eureka (puerto 8761) | Registrar — DataVault como microservicio en Eureka |
Opcion A — Mantener FastAPI (Python): El backend DataVault se mantiene en Python/FastAPI pero se adapta para:
Opcion B — Reescribir en Java/Simappe: Se reescribe el backend usando el framework Simappe (Controller - Service - Component - Repository). Mayor esfuerzo pero consistencia total con el ecosistema.
Recomendacion: Opcion A para Fase 1 (time-to-market), evaluar Opcion B como deuda tecnica futura.
| Version | Fecha | Autor | Descripcion |
|---|---|---|---|
| 1.0.0 | 2026-03-16 | Carlos Torres | Creacion del analisis de funcionalidades |