464 lines
17 KiB
Markdown
464 lines
17 KiB
Markdown
# Final Implementation Plan - Modulos 8, 9 y 10
|
|
|
|
## 1. Objetivo
|
|
Implementar M08, M09 y M10 como una cadena operativa completa:
|
|
|
|
- M08 Gestion Estrategica de Contratos: registro de contratos, entregables, pagos y carga inteligente de PDF.
|
|
- M09 Proteccion Legal: diagnostico guiado, gestion de casos, ruta de escalada, generador de escritos y directorio.
|
|
- M10 Expediente Preventivo: simulador de auditoria y expediente institucional centralizado.
|
|
|
|
El alcance sigue exactamente la UX mostrada en las referencias y se integra con M5 y M7 ya existentes.
|
|
|
|
## 2. Principios de implementacion
|
|
- Reusar patrones actuales: App Router, Prisma, componentes estilo M7, endpoints administrativos autenticados.
|
|
- Mantener trazabilidad completa: cada caso legal y cada auditoria debe poder rastrear contrato, entregable, pago y evidencia origen.
|
|
- Diseñar para escalamiento nacional: iniciar con seed federal + NL y permitir extender por estado/municipio.
|
|
- Regla conservadora legal: donde no haya certeza normativa, marcar "requiere validacion legal".
|
|
|
|
## 3. M08 - Gestion Estrategica de Contratos
|
|
|
|
### 3.1 Ruta y UI
|
|
- Nueva ruta: `/gestion-contratos`.
|
|
- Header de flujo:
|
|
- back: `M7: Alertas`
|
|
- next: `M9: Legal`
|
|
- KPIs:
|
|
- Contratos activos
|
|
- Total cobrado
|
|
- Entregables pendientes
|
|
- Entregables vencidos
|
|
- Tabs:
|
|
- Subir Contrato
|
|
- Contratos
|
|
- Entregables
|
|
- Pagos
|
|
|
|
### 3.2 Dominio y modelo de datos
|
|
Agregar en Prisma:
|
|
|
|
- `ContractRecord`
|
|
- `id, userId, sourceProposalId?`
|
|
- `title, counterpartyEntity, contractNumber, contractType`
|
|
- `startDate, endDate, totalAmount, currency`
|
|
- `status` (`ACTIVE|COMPLETED|PAUSED|CANCELLED`)
|
|
- `description, createdAt, updatedAt`
|
|
- `ContractDeliverable`
|
|
- `id, contractId, title, dueDate, amountLinked?`
|
|
- `status` (`PENDING|DELIVERED|APPROVED|REJECTED|OVERDUE`)
|
|
- `deliveredAt?, approvedAt?, notes`
|
|
- `ContractPayment`
|
|
- `id, contractId, amount, paymentDate, invoiceNumber?, concept`
|
|
- `status` (`REGISTERED|CONFIRMED|DISPUTED`)
|
|
- `ContractDocument`
|
|
- `id, contractId, fileName, filePath, mimeType, sizeBytes, checksumSha256`
|
|
- `kind` (`SIGNED_CONTRACT|ADDENDUM|DELIVERABLE_EVIDENCE|PAYMENT_EVIDENCE|OTHER`)
|
|
- `ContractExtractionHistory`
|
|
- `id, contractId?, userId, engine, model, resultJson, warningsJson, analyzedAt`
|
|
|
|
Indices:
|
|
- `ContractRecord(userId,status,endDate)`
|
|
- `ContractDeliverable(contractId,status,dueDate)`
|
|
- `ContractPayment(contractId,paymentDate)`
|
|
|
|
### 3.3 APIs
|
|
- `GET /api/contracts` list + filtros.
|
|
- `POST /api/contracts` crear contrato manual (modal Nuevo Contrato).
|
|
- `PATCH /api/contracts/:id` editar estado y datos clave.
|
|
- `POST /api/contracts/upload` subir PDF firmado.
|
|
- `POST /api/contracts/extract` OCR + IA y crear/actualizar contrato.
|
|
- `GET /api/contracts/kpis` dataset de M08.
|
|
- `POST /api/contracts/:id/deliverables` crear entregable (modal).
|
|
- `PATCH /api/deliverables/:id` cambiar estado.
|
|
- `POST /api/contracts/:id/payments` registrar pago (modal).
|
|
- `GET /api/contracts/:id/payments` historial.
|
|
|
|
### 3.4 IA para "Subir Contrato"
|
|
Reusar pipeline de PDF existente:
|
|
- `analyzePdf` para texto/OCR.
|
|
- Nuevo extractor IA `extractContractWithAi`:
|
|
- campos: titulo, entidad contratante, numero, tipo, fechas, monto total.
|
|
- lista de entregables detectados.
|
|
- hitos de pago detectados.
|
|
- clausulas de riesgo contractual (para alimentar M9).
|
|
- Guardar trazabilidad en `ContractExtractionHistory`.
|
|
|
|
### 3.5 Reglas funcionales
|
|
- Contrato activo: `status=ACTIVE` y fecha fin no vencida (o sin fecha fin).
|
|
- Entregable vencido: `status=PENDING` y `dueDate < now`.
|
|
- Total cobrado: sumatoria pagos confirmados.
|
|
- Barra de avance por contrato: `entregables completados / entregables totales`.
|
|
|
|
## 4. M09 - Proteccion Legal
|
|
|
|
### 4.1 Ruta y UI
|
|
- Nueva ruta: `/proteccion-legal`.
|
|
- Header de flujo:
|
|
- back: `M8: Contratos`
|
|
- next: `M10: Auditorias`
|
|
- KPIs:
|
|
- Casos abiertos
|
|
- Alta severidad
|
|
- Monto en riesgo
|
|
- Casos resueltos
|
|
- Tabs:
|
|
- Diagnostico
|
|
- Casos
|
|
- Escalada
|
|
- Escritos
|
|
- Directorio
|
|
|
|
### 4.2 Dominio y modelo de datos
|
|
Agregar en Prisma:
|
|
|
|
- `LegalCase`
|
|
- `id, userId, contractId?`
|
|
- `caseType` (`CONTRACT_BREACH|PAYMENT_RETENTION|UNJUST_SANCTION|CONTRACT_DISPUTE`)
|
|
- `severity` (`LOW|MEDIUM|HIGH`)
|
|
- `counterparty, description`
|
|
- `amountAtRisk`
|
|
- `status` (`OPEN|IN_PROGRESS|ESCALATED|RESOLVED|CLOSED`)
|
|
- `openedAt, resolvedAt?`
|
|
- `LegalDiagnosis`
|
|
- `id, userId, legalCaseId?`
|
|
- `stepIndex, totalSteps, answersJson, recommendedRouteJson`
|
|
- `LegalEscalationStepLog`
|
|
- `id, legalCaseId, routeStepKey, completedAt?, notes`
|
|
- `LegalDocument`
|
|
- `id, legalCaseId?, userId, templateKey?, aiGenerated`
|
|
- `title, content, createdAt`
|
|
- `LegalDirectoryEntity`
|
|
- `id, jurisdictionLevel, name, scopeTagsJson`
|
|
- `websiteUrl?, phone?, email?, stateCode?, municipalityCode?`
|
|
- `isActive`
|
|
|
|
### 4.3 APIs
|
|
- `GET /api/legal/kpis`
|
|
- `POST /api/legal/diagnosis/start`
|
|
- `POST /api/legal/diagnosis/answer`
|
|
- `POST /api/legal/cases`
|
|
- `GET /api/legal/cases`
|
|
- `PATCH /api/legal/cases/:id` (resolver/escalar)
|
|
- `GET /api/legal/escalation/:caseId`
|
|
- `POST /api/legal/documents/generate` (IA)
|
|
- `GET /api/legal/templates`
|
|
- `GET /api/legal/directory`
|
|
|
|
### 4.4 Motor de diagnostico
|
|
Wizard de 4 pasos como referencia:
|
|
1. Tipo de incumplimiento.
|
|
2. Estado procesal y evidencia disponible.
|
|
3. Impacto economico y urgencia.
|
|
4. Objetivo legal (pago, correccion, impugnacion, mediacion).
|
|
|
|
Salida:
|
|
- severidad sugerida
|
|
- tipo de caso sugerido
|
|
- ruta escalada sugerida
|
|
- lista de escritos recomendados
|
|
|
|
### 4.5 Ruta Escalada (tab Escalada)
|
|
Catalogo base de pasos:
|
|
1. Requerimiento formal
|
|
2. Conciliacion administrativa
|
|
3. Queja ante OIC
|
|
4. Inconformidad ante SFP/Organo estatal
|
|
5. Via jurisdiccional
|
|
|
|
Cada paso incluye:
|
|
- ventana estimada de tiempo
|
|
- checklist de acciones
|
|
- bandera de "requiere abogado"
|
|
- dependencias del paso previo
|
|
|
|
### 4.6 Escritos (IA + plantillas)
|
|
- Selector de tipo de caso y severidad.
|
|
- Inputs: contraparte, empresa, monto, descripcion.
|
|
- Generador IA produce borrador estructurado y editable.
|
|
- Plantillas predefinidas por categoria (como en referencia):
|
|
- General: Acta entrega-recepcion.
|
|
- Incumplimiento: Carta de inconformidad.
|
|
- Retencion de pagos: Solicitud de liberacion.
|
|
- Sanciones: Recurso de inconformidad.
|
|
- Guardar documento y boton copiar/exportar.
|
|
|
|
### 4.7 Directorio
|
|
Seed inicial federal + estatal:
|
|
- SFP, TFJA, ASF, OIC, CompraNet, sistemas anticorrupcion estatales, etc.
|
|
- Filtros por jurisdiccion y tipo de autoridad.
|
|
|
|
## 5. M10 - Expediente Preventivo
|
|
|
|
### 5.1 Ruta y UI
|
|
- Nueva ruta: `/expediente-preventivo`.
|
|
- Header de flujo:
|
|
- back: `M9: Legal`
|
|
- KPIs:
|
|
- Auditorias completadas
|
|
- Ultima calificacion
|
|
- Contratos registrados (desde M08)
|
|
- PDFs resguardados (M08 + M5)
|
|
- Tabs:
|
|
- Simulador
|
|
- Expediente
|
|
|
|
### 5.2 Dominio y modelo de datos
|
|
Agregar en Prisma:
|
|
|
|
- `AuditSimulation`
|
|
- `id, userId, name, auditType`
|
|
- `status` (`DRAFT|COMPLETED`)
|
|
- `overallScore, completedAt?`
|
|
- `AuditSimulationSection`
|
|
- `id, simulationId, key`
|
|
- `score, status` (`READY|WARNING|CRITICAL`)
|
|
- `findingsJson, recommendationsJson`
|
|
- `AuditChecklistResponse`
|
|
- `id, simulationId, questionKey, answer, evidenceRefsJson`
|
|
- `InstitutionalDossierSnapshot`
|
|
- `id, userId, generatedAt, payloadJson`
|
|
|
|
Secciones del simulador v1:
|
|
- Cumplimiento fiscal
|
|
- Cumplimiento laboral
|
|
- Documentacion legal
|
|
- Control operativo
|
|
- Transparencia financiera
|
|
|
|
### 5.3 APIs
|
|
- `POST /api/audits/simulations`
|
|
- `GET /api/audits/simulations`
|
|
- `POST /api/audits/simulations/:id/score`
|
|
- `GET /api/audits/simulations/:id`
|
|
- `GET /api/audits/expediente`
|
|
- `POST /api/audits/expediente/refresh`
|
|
|
|
### 5.4 Logica del expediente
|
|
Consolidar automaticamente:
|
|
- M5: propuestas, workflow, documentos.
|
|
- M8: contratos, entregables, pagos, contratos PDF.
|
|
- M9: casos, escritos, evidencia de escalada.
|
|
- M7: alertas activas de cumplimiento para semaforo preventivo.
|
|
|
|
Resultado:
|
|
- vista de historial institucional lista para auditoria.
|
|
- estado por componente (completo/incompleto).
|
|
|
|
## 6. Integraciones entre modulos
|
|
- M5 -> M8: crear contrato desde propuesta adjudicada.
|
|
- M8 -> M9: boton "abrir caso legal" desde contrato/entregable/pago.
|
|
- M8 -> M10: contratos y PDFs alimentan expediente.
|
|
- M9 -> M10: casos, escritos y escalada alimentan expediente.
|
|
- M7 <-> M8/M9: alertas por entregables vencidos, pagos disputados, casos alta severidad.
|
|
|
|
## 7. Tipos de dominio (frontend/backend)
|
|
Crear `src/lib/contracts/types.ts`, `src/lib/legal/types.ts`, `src/lib/audits/types.ts` con:
|
|
- snapshots KPI por modulo
|
|
- enums de estado
|
|
- payloads de formularios (modales)
|
|
- DTOs para tabs
|
|
- contratos de IA (input/output) para extractor de contrato y generador de escritos
|
|
|
|
## 8. Plan de implementacion por fases
|
|
|
|
### Fase A (base de datos + navegacion)
|
|
- Prisma models, migraciones, seeds.
|
|
- Rutas vacias M08/M09/M10 con header y tabs.
|
|
- Linkear dashboard (Plan 3) a rutas reales.
|
|
|
|
### Fase B (M08 operativo)
|
|
- CRUD contratos + entregables + pagos.
|
|
- KPIs y tabs funcionales.
|
|
- Upload PDF + extraccion IA + guardado en expediente.
|
|
|
|
### Fase C (M09 operativo)
|
|
- Diagnostico wizard y creacion de casos.
|
|
- Registro/seguimiento de casos.
|
|
- Escalada guiada con checklist por paso.
|
|
- Generador IA de escritos + plantillas + copiar/exportar.
|
|
- Directorio con seed inicial.
|
|
|
|
### Fase D (M10 operativo)
|
|
- Simulador de auditoria con scoring por seccion.
|
|
- Expediente centralizado con agregacion M5/M8/M9.
|
|
- KPIs finales y acciones correctivas sugeridas.
|
|
|
|
### Fase E (hardening)
|
|
- permisos por plan, auditoria de cambios, logs de errores IA.
|
|
- observabilidad de pipelines OCR/IA.
|
|
- refinamiento de UX responsive y accesibilidad.
|
|
|
|
## 9. Plan de pruebas
|
|
|
|
### Unit
|
|
- Formulas KPI M08/M09/M10.
|
|
- Reglas de estado (vencido, resuelto, escalado, activo).
|
|
- Scoring del simulador.
|
|
- Seleccion de ruta legal por diagnostico.
|
|
|
|
### Integration
|
|
- Flujo completo: contrato (M08) -> caso (M09) -> expediente (M10).
|
|
- Extraccion IA de contrato -> creacion de entregables/pagos.
|
|
- Generacion de escrito IA + guardado en caso.
|
|
|
|
### UI/E2E
|
|
- Paridad visual de tabs y KPI cards con referencias.
|
|
- Modales: Nuevo Contrato, Nuevo Entregable, Registrar Pago.
|
|
- Estados vacios y poblados.
|
|
- Responsive movil/escritorio.
|
|
|
|
## 10. Criterios de aceptacion
|
|
- M08 permite crear contrato, registrar entregable y pago, y ver KPIs actualizados en tiempo real.
|
|
- M09 permite abrir caso desde diagnostico, escalarlo por pasos, y generar escritos IA reutilizables.
|
|
- M10 muestra simulaciones con score y expediente consolidado de evidencia documental.
|
|
- Navegacion lineal operativa M7 -> M8 -> M9 -> M10.
|
|
- Build, test y lint sin errores bloqueantes.
|
|
|
|
## 11. Defaults V1
|
|
- Sin firma digital de escritos dentro del sistema (solo generacion y exportacion).
|
|
- Sin integracion externa de tribunales/SFP para envio automatico (solo preparacion guiada).
|
|
- Directorio legal inicial federal + NL, extensible por seed.
|
|
- Clasificacion de riesgo legal conservadora si faltan evidencias.
|
|
|
|
## 12. Master Checklist de Implementacion
|
|
|
|
### 12.1 Preparacion
|
|
- [ ] Confirmar alcance funcional final con producto (M08, M09, M10 + integraciones).
|
|
- [ ] Validar naming final de rutas: `/gestion-contratos`, `/proteccion-legal`, `/expediente-preventivo`.
|
|
- [ ] Confirmar permisos por plan (Plan 3) y reglas de acceso admin/pago.
|
|
|
|
### 12.2 Fase A - Data + Navegacion Base
|
|
- [ ] Crear modelos Prisma M08/M09/M10.
|
|
- [ ] Crear enums Prisma para estados de contratos, casos y auditorias.
|
|
- [ ] Crear migraciones SQL + seeds iniciales (directorio legal, catalogos base).
|
|
- [ ] Ejecutar `npm run prisma:generate`.
|
|
- [ ] Crear paginas base de rutas M08, M09 y M10 con layout y header de flujo.
|
|
- [ ] Conectar dashboard (tarjetas M08/M09/M10) a rutas reales.
|
|
|
|
### 12.3 Fase B - M08 Operativo
|
|
- [ ] Implementar dominio `contracts` (`types.ts`, validadores, mappers).
|
|
- [ ] Implementar endpoints CRUD de contratos.
|
|
- [ ] Implementar endpoints de entregables y pagos.
|
|
- [ ] Implementar endpoint KPI de M08.
|
|
- [ ] Implementar tab Subir Contrato (upload PDF + persistencia de archivo).
|
|
- [ ] Implementar extraccion IA de contrato y guardado de `ContractExtractionHistory`.
|
|
- [ ] Implementar UI tabs M08 (Subir Contrato, Contratos, Entregables, Pagos).
|
|
- [ ] Implementar modales: Nuevo Contrato, Nuevo Entregable, Registrar Pago.
|
|
- [ ] Implementar reglas de negocio: activo, vencido, total cobrado, progreso.
|
|
|
|
### 12.4 Fase C - M09 Operativo
|
|
- [ ] Implementar dominio `legal` (`types.ts`, enums, validaciones).
|
|
- [ ] Implementar wizard Diagnostico (4 pasos) y recomendacion de ruta.
|
|
- [ ] Implementar CRUD de casos legales.
|
|
- [ ] Implementar tab Casos con acciones de resolver/escalar.
|
|
- [ ] Implementar tab Escalada (pasos, checklist, estatus por caso).
|
|
- [ ] Implementar generador de escritos IA y persistencia.
|
|
- [ ] Implementar repositorio de plantillas predefinidas y accion copiar/exportar.
|
|
- [ ] Implementar tab Directorio con filtros de jurisdiccion/autoridad.
|
|
|
|
### 12.5 Fase D - M10 Operativo
|
|
- [ ] Implementar dominio `audits` (`types.ts`, scoring, snapshots).
|
|
- [ ] Implementar CRUD de simulaciones de auditoria.
|
|
- [ ] Implementar motor de scoring por seccion.
|
|
- [ ] Implementar tab Simulador con historial y detalle de resultados.
|
|
- [ ] Implementar agregador de expediente institucional (M5 + M8 + M9 + M7).
|
|
- [ ] Implementar tab Expediente con estados vacios/poblados y trazabilidad.
|
|
- [ ] Implementar KPIs de M10.
|
|
|
|
### 12.6 Fase E - Hardening
|
|
- [ ] Reglas de autorizacion por plan en rutas y APIs.
|
|
- [ ] Auditoria de cambios (logs funcionales por entidad critica).
|
|
- [ ] Manejo robusto de errores IA/OCR con mensajes accionables.
|
|
- [ ] Validacion de performance en listados y agregadores (paginacion/indices).
|
|
- [ ] Reforzar accesibilidad (labels, focus, teclado, contraste).
|
|
|
|
## 13. Task Backlog (Orden de Ejecucion)
|
|
|
|
### 13.1 Arquitectura y Persistencia
|
|
1. [ ] Crear schema Prisma para M08 (contratos, entregables, pagos, documentos, extraccion).
|
|
2. [ ] Crear schema Prisma para M09 (casos, diagnostico, escalada, documentos, directorio).
|
|
3. [ ] Crear schema Prisma para M10 (simulaciones, respuestas, snapshots).
|
|
4. [ ] Agregar indices y constraints de integridad.
|
|
5. [ ] Generar y revisar migraciones.
|
|
6. [ ] Ejecutar seeds base (directorio legal + catalogos).
|
|
|
|
### 13.2 Backend APIs
|
|
1. [ ] Crear `src/app/api/contracts/*`.
|
|
2. [ ] Crear `src/app/api/legal/*`.
|
|
3. [ ] Crear `src/app/api/audits/*`.
|
|
4. [ ] Implementar servicios en `src/lib/contracts`, `src/lib/legal`, `src/lib/audits`.
|
|
5. [ ] Agregar validaciones de entrada/salida y manejo de errores uniforme.
|
|
|
|
### 13.3 Frontend M08
|
|
1. [ ] Crear pantalla principal M08 con 4 KPIs y tabs.
|
|
2. [ ] Implementar tab Contratos (cards, progreso, estado).
|
|
3. [ ] Implementar tab Entregables (pendiente/vencido/completado).
|
|
4. [ ] Implementar tab Pagos (registro e historial).
|
|
5. [ ] Implementar tab Subir Contrato + drag/drop + estado de analisis IA.
|
|
6. [ ] Conectar modales a APIs y refresco de dataset.
|
|
|
|
### 13.4 Frontend M09
|
|
1. [ ] Crear pantalla principal M09 con KPIs y tabs.
|
|
2. [ ] Implementar wizard Diagnostico con barra de progreso.
|
|
3. [ ] Implementar tab Casos con filtros por severidad/estado.
|
|
4. [ ] Implementar tab Escalada con timeline de pasos.
|
|
5. [ ] Implementar tab Escritos (formulario IA + plantillas).
|
|
6. [ ] Implementar tab Directorio (cards de entidades + acciones contacto).
|
|
|
|
### 13.5 Frontend M10
|
|
1. [ ] Crear pantalla principal M10 con KPIs y tabs.
|
|
2. [ ] Implementar tab Simulador (nueva simulacion, scoring y resultados).
|
|
3. [ ] Implementar tab Expediente (contratos, PDFs, propuestas, casos, escritos).
|
|
4. [ ] Implementar navegacion back/next M9 <-> M10 y Dashboard.
|
|
|
|
### 13.6 Integraciones Cross-Module
|
|
1. [ ] Habilitar handoff M5 -> M8 para crear contrato desde propuesta adjudicada.
|
|
2. [ ] Habilitar handoff M8 -> M9 para abrir caso legal contextual.
|
|
3. [ ] Habilitar agregacion M8 + M9 en M10.
|
|
4. [ ] Publicar alertas M8/M9 relevantes para M7 (vencimientos y riesgo legal).
|
|
|
|
## 14. Master Test Plan
|
|
|
|
### 14.1 Unit Tests
|
|
- [ ] Reglas de calculo KPI M08.
|
|
- [ ] Reglas de calculo KPI M09.
|
|
- [ ] Reglas de calculo KPI M10.
|
|
- [ ] Motor de scoring del simulador.
|
|
- [ ] Clasificacion de severidad y rutas legales.
|
|
- [ ] Normalizacion de extraccion IA de contrato.
|
|
|
|
### 14.2 Integration Tests
|
|
- [ ] Flujo M5 -> M8 (creacion de contrato desde propuesta).
|
|
- [ ] Flujo M08 completo (contrato -> entregable -> pago -> KPI).
|
|
- [ ] Flujo M8 -> M9 (apertura de caso legal).
|
|
- [ ] Flujo M9 -> M10 (caso/escrito visibles en expediente).
|
|
- [ ] Flujo M7 con alertas de entregables vencidos y casos severos.
|
|
|
|
### 14.3 UI/E2E
|
|
- [ ] Paridad visual de M08 (tabs, cards, modales, empty/data states).
|
|
- [ ] Paridad visual de M09 (diagnostico, casos, escalada, escritos, directorio).
|
|
- [ ] Paridad visual de M10 (simulador y expediente).
|
|
- [ ] Responsive movil/escritorio en M08/M09/M10.
|
|
- [ ] Accesibilidad basica de formularios y modales.
|
|
|
|
## 15. Release Gate (Definition of Done)
|
|
|
|
### 15.1 Calidad Tecnica
|
|
- [ ] Migraciones aplicadas sin errores en entorno objetivo.
|
|
- [ ] Seeds ejecutados y datos base disponibles.
|
|
- [ ] Sin errores TypeScript en build.
|
|
- [ ] Sin errores de lint bloqueantes.
|
|
- [ ] Tests unitarios/integracion/UI en verde.
|
|
|
|
### 15.2 Verificaciones por Comando (orden recomendado)
|
|
1. [ ] `npm run prisma:generate`
|
|
2. [ ] `npm run prisma:migrate`
|
|
3. [ ] `npm test`
|
|
4. [ ] `npm run lint`
|
|
5. [ ] `npm run build` (FINAL CHECK OBLIGATORIO)
|
|
|
|
### 15.3 Aprobacion Funcional Final
|
|
- [ ] Demo E2E: M8 -> M9 -> M10 con datos reales de prueba.
|
|
- [ ] Validacion de KPIs contra datos de ejemplo.
|
|
- [ ] Validacion de guardado y recuperacion de evidencia/documentos.
|
|
- [ ] Sign-off final de producto.
|