# 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.