Version: 1.0
Fecha: 16 de Marzo, 2026
Origen: Reunion "Definicion Nebula Vault" del 16-Mar-2026
Arquitecto: Carlos Alberto Torres Camargo
Clasificacion: Interno — Arquitectura
Documento de referencia: Analisis de Funcionalidades DataVault
Este plan define la estrategia para migrar el frontend del sistema DataVault (Next.js 15 / React 19) a la arquitectura frontend de Nebula (Angular 21 / Nx Monorepo) y adaptar el backend (FastAPI/Python) para integrarse con el ecosistema Simappe (OAuth2, Gateway, Eureka, tenancy database-based).
- SI incluye: 6 modulos Core-GD + 5 Complementarios-GD + 8 de Infraestructura adaptada = 19 modulos
- NO incluye: 6 modulos RRHH (pertenecen al dominio
people de Nebula ERP)
- Esfuerzo estimado: Peso 56 de 71 (79% del sistema, sin RRHH)
| Aspecto |
Estado |
Observacion |
| DataVault frontend funcional |
100% Operativo |
Next.js 15 + React 19 en produccion |
| DataVault backend funcional |
100% Operativo |
FastAPI + PostgreSQL en produccion |
| Arquitectura Nebula frontend documentada |
100% Documentada |
Nx Monorepo, @nebula/ui-kit, patron definido |
| Ecosistema Simappe backend operativo |
100% Operativo |
Gateway (:8090), OAuth2 (:8787), Eureka (:8761), ConfigServer (:8890) |
| Inventario funcionalidades DataVault |
100% Completado |
Analisis de Funcionalidades |
| Core frontend Nebula implementado |
0% — No existe |
Nx workspace + shell sin crear |
- Frontend-First: Migrar primero el frontend a Angular/Nx, manteniendo el backend Python como API temporal
- Backend-Adapt: Adaptar el backend Python para integrarse al ecosistema Simappe (OAuth2, Eureka, Gateway) sin reescribirlo
- Modulo por Modulo: Migrar un modulo a la vez, validando cada uno antes de avanzar
- Contract-First: Definir interfaces TypeScript desde los DTOs Pydantic existentes antes de codificar componentes
- Sin RRHH: Los modulos de Recursos Humanos quedan fuera del alcance
Track A — Frontend Angular/Nx
(Migracion de componentes React a Angular, modulo por modulo)
Track B — Backend Adaptacion
(Integracion FastAPI con Simappe: OAuth2, Eureka, Gateway, tenancy)
Track C — Infraestructura & QA
(CI/CD, despliegue, testing, documentacion)
[Track B: OAuth2 + Gateway integrado] ─────────┐
├──> [Track A: Primer modulo funcional E2E]
[Track A: Nx workspace + shell + ui-kit] ───────┘
[Track A: Modulos Core completados] ────────────┐
├──> [UAT y despliegue]
[Track B: Eureka + Config adaptados] ───────────┘
[Core Frontend Nebula (nebula-erp + ui-kit)] ──> [BLOQUEANTE para Track A]
BLOQUEANTE: El Core Frontend Nebula (workspace Nx + @nebula/ui-kit publicado en Nexus) debe existir antes de iniciar Track A. Si no existe, la Semana 1 del plan incluye su creacion.
| Semana |
Fechas |
Track A (Frontend) |
Track B (Backend) |
Track C (Infra/QA) |
| S1 |
16-21 Mar |
Analisis + Nx workspace setup |
Analisis integ. Simappe |
Pipeline CI/CD DataVault |
| S2 |
23-28 Mar |
Infraestructura modulos (domain, data-access) |
OAuth2 adapter + JWT |
Docker + Eureka registro |
| S3 |
30 Mar - 4 Abr |
Modulo Ingesta (frontend) |
Gateway routing DataVault |
Testing framework setup |
| S4 |
7-11 Abr |
Modulo Repositorio + Preservacion |
Tenancy adapter (database-based) |
Tests E2E Ingesta |
| S5 |
14-18 Abr |
Modulo Retencion + Legal Hold |
Permisos granulares adaptados |
Tests E2E Repositorio + Preservacion |
| S6 |
21-25 Abr |
Modulo Cloud + Dashboard + Notificaciones |
ConfigServer integracion |
Tests E2E Retencion + Legal Hold |
| S7 |
28 Abr - 2 May |
Auditoria + Reportes + Asignacion Archivos |
Estabilizacion backend |
Tests E2E completos |
| S8 |
5-9 May |
Pulido UI/UX + Performance + Deuda tecnica |
Hardening + Documentacion |
UAT + Despliegue DEV |
Objetivo: Entender el sistema actual, preparar el workspace Nx y analizar la integracion backend.
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| A1.1 |
Inventario de funcionalidades DataVault |
2 |
ANALISIS_FUNCIONALIDADES_DATAVAULT.md |
Ninguna |
| A1.2 |
Mapeo de componentes React a Angular |
3 |
Documento de mapeo componente por componente con equivalencias |
A1.1 |
| A1.3 |
Definicion de dominios DataVault en Nx |
2 |
Estructura de librerias: vault/, preservation/, retention/, legal-hold/, cloud/, shared-vault/ |
A1.1 |
| A1.4 |
Creacion workspace Nx nebula-vault (o integracion en nebula-erp) |
3 |
Workspace Nx funcional con shell app |
A1.3 |
| A1.5 |
Verificacion @nebula/ui-kit disponible |
1 |
Confirmacion de componentes disponibles vs faltantes |
A1.4 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| B1.1 |
Analisis de endpoints DataVault actuales |
2 |
Mapa completo de ~124 endpoints con DTOs |
Ninguna |
| B1.2 |
Analisis de integracion con SimappeOAuth2 |
3 |
Documento de adaptacion: JWT DataVault a JWT Simappe |
Ninguna |
| B1.3 |
Analisis de modelo de tenancy actual vs Simappe |
3 |
Decision: BD-por-tenant vs schema-unico con adaptador |
B1.2 |
| B1.4 |
Definicion de contratos (interfaces TypeScript) desde Pydantic schemas |
3 |
Archivo domain/ con todas las interfaces tipadas |
B1.1 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| C1.1 |
Configuracion pipeline CI/CD para Nx |
2 |
Pipeline de build/test/lint |
A1.4 |
| C1.2 |
Configuracion SonarQube para frontend Angular |
1 |
Reglas de calidad configuradas |
C1.1 |
| C1.3 |
Docker Compose adaptado (Angular dev + FastAPI + PostgreSQL) |
2 |
docker-compose.dev.yml funcional |
Ninguna |
Objetivo: Tener la infraestructura de modulos lista y el backend integrado con OAuth2.
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| A2.1 |
Crear libreria shared-vault/domain (interfaces compartidas) |
2 |
Interfaces: Tenant, User, Project, File, etc. |
S1-B1.4 |
| A2.2 |
Crear libreria shared-vault/data-access (auth, http, tenant-context) |
4 |
AuthService, HttpInterceptor (JWT Simappe), TenantContextService |
A2.1, S1-B1.2 |
| A2.3 |
Crear nebula-vault-shell (layout: sidebar + header + router-outlet) |
3 |
Shell funcional con lazy-loading, menu de navegacion, guards |
A2.2 |
| A2.4 |
Mapeo sidebar DataVault a Angular (menu por rol) |
2 |
Sidebar con 25 items de navegacion segun rol activo |
A2.3 |
| A2.5 |
Crear librerias domain por modulo core |
2 |
vault/domain, preservation/domain, retention/domain, legal-hold/domain, cloud/domain |
A2.1 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| B2.1 |
Implementar adaptador JWT Simappe en FastAPI |
4 |
Middleware que valida JWT de SimappeOAuth2 (puerto 8787) en lugar de JWT propio |
S1-B1.2 |
| B2.2 |
Implementar endpoint de salud + registro Eureka |
2 |
/actuator/health compatible + registro automatico en Eureka (puerto 8761) |
B2.1 |
| B2.3 |
Configurar ruta en SimappeGateway |
2 |
Rutas /api/vault/** redirigen al microservicio DataVault via Gateway (puerto 8090) |
B2.2 |
| B2.4 |
Adaptar modelo de roles DataVault a roles Simappe |
3 |
Mapeo: superadmin=SUPER_ADMIN, admin_empresa=ADMIN, rh=USER, archivista=USER+permisos, auditor=AUDITOR |
B2.1 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| C2.1 |
Configurar Eureka client para FastAPI (py-eureka) |
2 |
Servicio registrado y visible en dashboard Eureka (:8761) |
B2.2 |
| C2.2 |
Configurar ConfigServer para DataVault |
2 |
Variables externalizadas en ConfigServer (:8890) — DB URL, SFTP, etc. |
Ninguna |
Objetivo: Tener el primer modulo migrado de extremo a extremo.
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| A3.1 |
Crear vault/data-access (IngestService, ProjectService) |
3 |
Services con Signals, consumiendo API via Gateway |
S2-A2.2 |
| A3.2 |
Crear vault/feature-projects (list, form, detail) |
4 |
ProjectListComponent, ProjectFormComponent, ProjectDetailComponent |
A3.1 |
| A3.3 |
Crear vault/feature-upload (upload dialog, progress, status) |
5 |
UploadDialogComponent, ProgressBarComponent, StatusTrackerComponent, BatchUploadComponent |
A3.1 |
| A3.4 |
Crear vault/feature-files (file browser, subfolder navigation) |
3 |
FileBrowserComponent, SubfolderTreeComponent, FileListComponent |
A3.1 |
| A3.5 |
Crear vault/shell (rutas de ingesta) |
1 |
Routes: /vault, /vault/projects, /vault/projects/:id, /vault/upload |
A3.2, A3.3, A3.4 |
| A3.6 |
Integrar con @nebula/ui-kit (DataTable, FormField, Modal, FileUpload) |
2 |
Componentes UI-kit integrados en features de ingesta |
A3.2 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| B3.1 |
Adaptar endpoints de Ingest para flujo OAuth2/Gateway |
2 |
Endpoints funcionales via https://gateway:8090/api/vault/ingest/* |
S2-B2.3 |
| B3.2 |
Adaptar modelo de permisos por carpeta |
3 |
FolderPermission funcional con JWT Simappe |
S2-B2.4 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| C3.1 |
Tests unitarios feature-projects + feature-upload |
2 |
Cobertura minima 80% |
A3.2, A3.3 |
| C3.2 |
Test E2E: Crear proyecto, subir archivo, verificar estado |
3 |
Playwright/Cypress E2E passing |
A3.5 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| A4.1 |
Crear vault/feature-repository (FileBrowser, Search, Preview, Download) |
4 |
FileBrowserComponent, SearchBarComponent, FilePreviewComponent, DownloadDialogComponent, ZipExplorerComponent |
S2-A2.5 |
| A4.2 |
Crear preservation/data-access (PreservationService) |
2 |
Service con Signals para estado de preservacion |
S2-A2.5 |
| A4.3 |
Crear preservation/feature-dashboard (status, metrics, critical list) |
4 |
PreservationDashboardComponent, FileStatusComponent, StatisticsChartComponent, CriticalListComponent |
A4.2 |
| A4.4 |
Crear preservation/feature-diagnostic (diagnose, repair) |
3 |
DiagnosticPanelComponent, RepairDialogComponent |
A4.2 |
| A4.5 |
Crear preservation/shell + vault/shell actualizado |
1 |
Rutas: /repository, /preservation, /preservation/file/:path |
A4.1, A4.3, A4.4 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| B4.1 |
Adaptar tenant-awareness en Repository endpoints |
3 |
Navegacion de archivos filtrada por tenant via JWT |
S3-B3.1 |
| B4.2 |
Evaluar migracion tenancy: schema unico a BD-por-tenant |
3 |
Documento de decision + PoC si procede |
S2-B2.1 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| A5.1 |
Crear retention/data-access (RetentionPolicyService, DocumentRetentionService) |
3 |
Services con Signals |
S2-A2.5 |
| A5.2 |
Crear retention/feature-policies (CRUD politicas) |
3 |
PolicyListComponent, PolicyFormComponent, PolicyDetailComponent |
A5.1 |
| A5.3 |
Crear retention/feature-documents (documentos bajo retencion, calendario, suspension) |
4 |
DocumentRetentionListComponent, RetentionCalendarComponent, SuspensionDialogComponent, ExpiringListComponent |
A5.1 |
| A5.4 |
Crear legal-hold/data-access (LegalHoldService) |
2 |
Service con Signals |
S2-A2.5 |
| A5.5 |
Crear legal-hold/feature-cases (CRUD casos, asignacion documentos) |
4 |
CaseListComponent, CaseFormComponent, CaseDetailComponent, DocumentAssignmentComponent, DocumentSearchComponent |
A5.4 |
| A5.6 |
Crear shells de retencion y legal-hold |
1 |
Rutas completas para ambos modulos |
A5.2, A5.3, A5.5 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| B5.1 |
Adaptar Legal Hold para documentos cross-module |
2 |
Legal Hold funcional sin dependencia de modulos HR excluidos |
S4-B4.1 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| C5.1 |
Tests E2E Repositorio + Preservacion |
3 |
Playwright E2E passing |
S4-A4.5 |
| C5.2 |
Tests unitarios Retencion + Legal Hold |
2 |
Cobertura minima 80% |
A5.3, A5.5 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| A6.1 |
Crear cloud/data-access + cloud/feature-status |
3 |
CloudStatusComponent, DaemonControlComponent, SyncStatsComponent, LogViewerComponent |
S2-A2.5 |
| A6.2 |
Crear shared-vault/feature-dashboard (Dashboard Nebula Vault) |
3 |
DashboardComponent con StatCards, DocumentStats, ActivityFeed, TaskList |
S2-A2.2 |
| A6.3 |
Crear shared-vault/feature-notifications |
2 |
NotificationBellComponent, NotificationListComponent, NotificationItemComponent |
S2-A2.2 |
| A6.4 |
Integrar Dashboard con metricas reales de todos los modulos |
2 |
Dashboard conectado a API stats |
A6.2, S5 completada |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| B6.1 |
Integrar ConfigServer para variables DataVault |
2 |
Variables de BD, SFTP, S3 externalizadas en ConfigServer (:8890) |
S2-C2.2 |
| B6.2 |
Dashboard stats endpoint adaptado (sin HR stats) |
2 |
/api/vault/dashboard/stats sin metricas RRHH |
S5-B5.1 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| C6.1 |
Tests E2E Retencion + Legal Hold |
3 |
Playwright E2E passing |
S5-A5.6 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| A7.1 |
Crear shared-vault/feature-audit (log, filtros, exportacion) |
3 |
AuditLogComponent, FilterPanelComponent, ExportButton, DetailModal |
S2-A2.2 |
| A7.2 |
Crear shared-vault/feature-reports (reportes personalizados) |
3 |
ReportListComponent, ReportGeneratorComponent, ReportViewerComponent |
S2-A2.2 |
| A7.3 |
Crear shared-vault/feature-file-assignments (asignacion archivos) |
2 |
AssignmentDialogComponent, AssignedFilesListComponent, PermissionSelectorComponent |
S2-A2.2 |
| A7.4 |
Crear modulo admin: permisos de modulos + config servidores + mensajes preservacion |
3 |
ModulePermissionListComponent, ServerConfigComponent, PreservationMessagesComponent |
S2-A2.2 |
| A7.5 |
Perfil de usuario + configuracion tenant |
1 |
ProfileFormComponent, ChangePasswordComponent, SettingsComponent |
S2-A2.2 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| B7.1 |
Estabilizacion: Revision completa de endpoints con JWT Simappe |
3 |
Todos los endpoints validados E2E con tokens de OAuth2 |
Todas S anteriores |
| B7.2 |
Hardening de permisos: Validacion de roles en todos los endpoints |
2 |
Decoradores/middleware de autorizacion revisados |
B7.1 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| C7.1 |
Tests E2E Cloud + Dashboard + Notificaciones |
2 |
Playwright E2E passing |
S6-A6.4 |
| C7.2 |
Tests E2E completos (regression suite) |
3 |
Suite completa de 20+ tests E2E |
Todas S anteriores |
| C7.3 |
Revision de seguridad (OWASP Top 10) |
2 |
Reporte de seguridad |
B7.2 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| A8.1 |
Pulido UI/UX: Responsive, accesibilidad, estados de error |
3 |
Todos los componentes revisados para UX consistente |
Todas S anteriores |
| A8.2 |
Performance: Lazy loading verificado, bundle analysis, lighthouse score |
2 |
Lighthouse score >90, bundles <250KB por modulo |
A8.1 |
| A8.3 |
Deuda tecnica: Refactoring de codigo duplicado, linting clean |
2 |
0 warnings ESLint, 0 violaciones de boundaries Nx |
A8.1 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| B8.1 |
Documentacion API (OpenAPI/Swagger actualizado) |
2 |
Swagger UI funcional en /api/vault/docs |
B7.1 |
| B8.2 |
Configuracion para ambiente DEV Nebula |
2 |
Variables ConfigServer para DEV |
B7.1 |
| # |
Tarea |
Peso |
Entregable |
Dependencia |
| C8.1 |
UAT con usuarios piloto |
3 |
Reporte de aceptacion con feedback |
A8.1, B8.2 |
| C8.2 |
Despliegue en ambiente DEV Nebula |
2 |
DataVault Angular corriendo en infraestructura Nebula |
C8.1 |
| C8.3 |
Documentacion de migracion completada |
2 |
GUIA_DESPLIEGUE_DATAVAULT_NEBULA.md |
C8.2 |
libs/
├── shared-vault/ (scope:shared-vault)
│ ├── domain/ Interfaces compartidas (File, Project, Tenant, User, Notification)
│ ├── data-access/ AuthService, HttpInterceptor, TenantContextService
│ ├── feature-dashboard/ Dashboard principal Nebula Vault
│ ├── feature-notifications/ Sistema de notificaciones
│ ├── feature-audit/ Log de auditoria
│ ├── feature-reports/ Reportes avanzados
│ ├── feature-file-assignments/ Asignacion de archivos a usuarios/roles
│ └── feature-admin/ Permisos modulos, config servidores, mensajes
│
├── vault/ (scope:vault) — Ingesta de archivos
│ ├── domain/ Interfaces: Project, Ingest, UploadStatus
│ ├── data-access/ IngestService, ProjectService
│ ├── feature-projects/ CRUD de proyectos de digitalizacion
│ ├── feature-upload/ Carga de archivos (individual, masiva, directorio)
│ ├── feature-files/ Navegacion de archivos y subcarpetas
│ ├── feature-repository/ Repositorio documental (browsing, search, download)
│ └── shell/ Rutas lazy-loaded de vault
│
├── preservation/ (scope:preservation) — Preservacion digital
│ ├── domain/ Interfaces: PreservationStatus, DiagnosticResult
│ ├── data-access/ PreservationService
│ ├── feature-dashboard/ Dashboard de preservacion (status, metrics)
│ ├── feature-diagnostic/ Diagnostico y reparacion de archivos
│ └── shell/ Rutas lazy-loaded de preservacion
│
├── retention/ (scope:retention) — Retencion documental
│ ├── domain/ Interfaces: RetentionPolicy, DocumentRetention
│ ├── data-access/ RetentionPolicyService, DocumentRetentionService
│ ├── feature-policies/ CRUD de politicas de retencion
│ ├── feature-documents/ Documentos bajo retencion, calendario, suspension
│ └── shell/ Rutas lazy-loaded de retencion
│
├── legal-hold/ (scope:legal-hold) — Retencion legal
│ ├── domain/ Interfaces: LegalHold, LegalHoldDocument
│ ├── data-access/ LegalHoldService
│ ├── feature-cases/ CRUD casos legales + asignacion documentos
│ └── shell/ Rutas lazy-loaded de legal-hold
│
└── cloud/ (scope:cloud) — Cloud storage
├── domain/ Interfaces: CloudStatus, DaemonStatus, SyncStats
├── data-access/ CloudService
├── feature-status/ Status, daemon control, logs
└── shell/ Rutas lazy-loaded de cloud
Total: 6 scopes, ~30 librerias Nx
shared-vault --> @nebula/ui-kit (OK)
vault --> shared-vault (OK)
preservation --> shared-vault, vault (OK — accede a archivos)
retention --> shared-vault, vault (OK — aplica a documentos)
legal-hold --> shared-vault, vault, retention (OK — suspende retencion)
cloud --> shared-vault, vault (OK — sincroniza archivos)
vault -X-> preservation (PROHIBIDO)
vault -X-> retention (PROHIBIDO)
vault -X-> legal-hold (PROHIBIDO)
preservation -X-> retention (PROHIBIDO)
retention -X-> preservation (PROHIBIDO)
| # |
Cambio |
Descripcion |
Esfuerzo |
Semana |
| 1 |
JWT Adapter |
Reemplazar validacion JWT propia por validacion de tokens SimappeOAuth2 (:8787). Extraer sub, tenantId, roles del JWT Simappe. |
Alto |
S2 |
| 2 |
Eureka Client |
Implementar registro automatico en Eureka (:8761) usando py-eureka-client. Heartbeat cada 30s. |
Medio |
S2 |
| 3 |
Gateway Route |
Configurar ruta en SimappeGateway (:8090) para redirigir /api/vault/** al servicio DataVault. |
Bajo |
S2 |
| 4 |
Role Mapping |
Mapear roles DataVault (superadmin, admin_empresa, rh, archivista, auditor, consulta) a roles del JWT Simappe. Mantener permisos granulares por modulo internamente. |
Medio |
S2 |
| 5 |
ConfigServer Client |
Externalizar configuracion (DB URL, SFTP, S3, secrets) a SimappeConfigServer (:8890). |
Medio |
S6 |
| 6 |
Health Endpoint |
Implementar /actuator/health compatible con el patron Simappe para monitoreo. |
Bajo |
S2 |
| 7 |
CORS Update |
Actualizar CORS para permitir origen desde Angular dev server y desde Gateway. |
Bajo |
S2 |
| 8 |
Remove HR Endpoints |
Deshabilitar o eliminar endpoints de RRHH (employees, contracts, certifications, trainings, absences, hr-documents). |
Bajo |
S3 |
| 9 |
Dashboard Adapt |
Modificar dashboard stats para excluir metricas HR. |
Bajo |
S6 |
- Logica de negocio de gestion documental (ingesta, preservacion, retencion, legal hold)
- Modelo de datos PostgreSQL (tablas de documentos, proyectos, politicas)
- Logica de almacenamiento (local, SFTP, S3)
- Integracion con Cloud (Azure)
- Sistema de auditoria
- Sistema de notificaciones
| # |
Riesgo |
Probabilidad |
Impacto |
Mitigacion |
| 1 |
@nebula/ui-kit no publicado a tiempo |
Alta |
BLOQUEANTE |
Crear componentes minimos locales y migrar a ui-kit cuando este listo |
| 2 |
Incompatibilidad JWT Simappe con permisos granulares DataVault |
Media |
Alto |
Mantener capa de permisos propia en backend, usar JWT solo para auth base |
| 3 |
Tenancy database-based requiere rewrite significativo del backend |
Media |
Alto |
Mantener schema unico + filtro por tenant_id. Adaptar solo el JWT claim |
| 4 |
Performance de Angular vs React en file browsing pesado |
Baja |
Medio |
Virtual scrolling con CDK, lazy loading agresivo |
| 5 |
Equipo sin experiencia en Angular 21 / Nx |
Alta |
Alto |
Capacitacion acelerada (1 semana) + pair programming con ejemplo DataVault como caso real |
| Metrica |
Target |
Medicion |
| Modulos Core migrados |
6/6 (100%) |
Semana 6 |
| Modulos Complementarios migrados |
5/5 (100%) |
Semana 7 |
| Cobertura de tests unitarios |
>80% |
SonarQube |
| Tests E2E passing |
>95% |
Playwright |
| Lighthouse Performance Score |
>90 |
Chrome DevTools |
| Bundle size por modulo lazy-loaded |
<250KB |
Nx build analysis |
| Endpoints backend funcionales via Gateway |
100% (sin HR) |
Postman collection |
| Tiempo de login OAuth2 a Dashboard |
<3s |
Medicion manual |
| # |
Decision |
Opciones |
Responsable |
Fecha Limite |
| 1 |
DataVault como app separada en Nx o como dominio dentro de nebula-erp? |
A) Repositorio separado nebula-vault / B) Dominio dentro de nebula-erp |
Arquitecto + Gerencia |
2026-03-21 |
| 2 |
Backend Python se mantiene o se reescribe en Java/Simappe? |
A) Mantener FastAPI adaptado / B) Reescribir en Spring Boot |
Arquitecto |
2026-03-21 |
| 3 |
Tenancy: BD-por-tenant o schema-unico adaptado? |
A) BD-por-tenant (estandar Simappe) / B) Schema unico + adaptador |
Arquitecto |
2026-03-28 |
| 4 |
Modulos RRHH se eliminan o se deshabilitan? |
A) Eliminar codigo / B) Feature flag para desactivar |
Arquitecto + PO |
2026-03-21 |
| 5 |
Repositorio HR se generaliza como "Repo por Entidad"? |
A) Generalizar / B) Eliminar |
Arquitecto + PO |
2026-03-28 |
| Version |
Fecha |
Autor |
Descripcion |
| 1.0.0 |
2026-03-16 |
Carlos Torres |
Creacion del plan de migracion |