# Roadmap — Migración ModuloVentas > **Proyecto:** rm-ventas > **Original:** `/home/juan/dev/ventas` (.NET Framework 4.7.2 / WebForms / MySQL) > **Destino:** .NET 10 + PostgreSQL + Next.js > **Inicio:** Julio 2026 --- ## Estado Actual | Componente | Estado | |-----------|--------| | Backend .NET 10 — Skeleton (sln + 4 proyectos + NuGet) | ✅ CREADO | | Entidades (20) + DTOs + Enums + Interfaces | ✅ COMPLETO | | Infrastructure (EF Core + Dapper + Repos + SpComplex) | ✅ COMPLETO | | Services (lógica de negocio) | ✅ COMPLETO (8 services) | | API Controllers | ✅ COMPLETO (21 controllers) | | Auth JWT (service + middleware) | ✅ COMPLETO | | Reportes QuestPDF (17 reportes Crystal) | ✅ COMPLETO | | Reportes empresa (variantes) + controller | ✅ COMPLETO | | Reportes QuestPDF (17 reportes) | ❌ PENDIENTE | | ServicesExternos.API | ✅ COMPLETO | | Frontend Next.js | ❌ PENDIENTE | | Contenedores (Docker) | ❌ PENDIENTE | | Tests E2E | ❌ PENDIENTE | --- ## Checklist por Fase ### FASE 1: BACKEND .NET 10 — API REST (~6-8 semanas) - [x] **1.1** Crear solución + proyectos base - [x] **1.2 Ventas.Core — Entidades y DTOs** - [x] 20 entidades del plan + Ejecutivo.cs + extras - [x] DTOs, Enums (4), Interfaces (7) - [x] **1.3 Ventas.Infrastructure — Acceso a Datos** - [x] VentasDbContext (EF Core + Npgsql) - [x] 7 repositorios (Lead, LeadQuery, Contrato, Cotizacion, Alumno, Usuario, Informe) - [x] SpComplexQueries.cs (Dapper multi-resultset) - [x] Configurations/ + Dapper/ directories - [x] **1.4 Ventas.Services — Lógica de Negocio** (~2 sem) - [x] LeadService.cs, UsuarioService.cs, JwtService.cs (refactored to use repos) - [x] ContratoService.cs, CotizacionService.cs, AlumnoService.cs, InformeService.cs (refactored to use repos) - [x] **1.5 Ventas.API — Controladores REST** (21 controllers) - [x] Auth, Lead, Contrato, Cotizacion, Alumno - [x] Arqueo, Curso, Descuento, Documento, Empresa - [x] Horario, Jornada, Programa, Propuesta, Region - [x] Sala, Sede, Tarifa, Usuario, Informe, Report - [x] **1.6 Auth JWT** (~3 días) - [x] JwtService.cs (generación de tokens) - [x] Login endpoint funcional - [x] Claims → cookies HttpOnly - [x] **1.7 Reportes QuestPDF** (17/17 Crystal Reports migrados) - [x] Contrato, ContratoBlack, Cotización, Arqueo, Anexo, Presupuesto - [x] CAEMP (ContratoAbiertoSinSence), CAEMPSNC (ContratoAbiertoConSence), CAEMPV2 - [x] CC_EMP, CC_EMPCSD, CC_PRS, CC_SNC, CotizacionCursoCerrado, CotizacionPlanCentral - [x] PropuestaComercial - [ ] Dockerfile Backend ### FASE 2: SERVICES EXTERNOS API (~2-3 semanas) - [x] **2.0 Setup** - [x] ServicesExternos.slnx + API project + Dockerfile - [x] Program.cs con DI (HttpClient factory + servicios) - [x] appsettings.json con config de servicios - [x] **2.1 LibreDTE** (~1 sem) - [x] DteService (emitir, generar PDF, consultar folio) - [x] DteController (emitir endpoint with PDF download) - [x] **2.2 Transbank Webpay** (~1 sem) - [x] TransbankService (crear transacción, confirmar, voucher) - [x] TransbankController + Voucher SP integration - [x] **2.3 Email con MailKit** (~2 días) - [x] EmailService (send with HTML templates + attachments) - [x] EmailController (send endpoint) ### FASE 3: FRONTEND NEXT.JS (~6-8 semanas) - [x] **3.1 Setup** (Next.js 15, TypeScript, packages) - [x] **3.2 Layout Principal** - [x] layout.tsx (sidebar + header = SAM.Master) - [x] Sidebar.tsx, Header.tsx, LoadingSpinner, ModalConfirmacion - [x] CSS original copiado + globals.css con sidebar styles - [x] Assets (favicon, ichnHD, samito, Invertido_ICN) - [x] **3.3 Login + Auth** (login page + useAuth hook + JWT) - [x] **3.4 Dashboard** (cards layout) - [x] **3.5 JS migration** (validarRut.ts, utils.ts, useInactividad) - [x] **3.6 api.ts** (centralized HTTP client with cookies) - [x] **Dockerfile Frontend** (multi-stage build) - [ ] **3.5-3.8 Páginas restantes** (~20 páginas) - Leads (listado, detalle, nuevo) - Cotizaciones, Arqueo, Cursos, Alumnos - Empresas (listado, detalle, ventas) - Reportes (3), Autorizador, Contacto ### FASE 4: CONTENEDORES (~1 semana) - [ ] docker-compose.yml (backend-api + services-externos + frontend) - [ ] .env.example - [ ] .gitignore ### FASE 5: PRUEBAS (~2-3 semanas) - [ ] Unit tests backend (xUnit + Moq) - [ ] Integration tests (TestContainers + PostgreSQL) - [ ] Playwright E2E (20 escenarios) - [ ] Visual regression tests --- ## Bitácora Diaria | Fecha | Fase | Qué se hizo | Siguiente paso | |-------|------|-------------|----------------| | 2026-07-07 | F1 | Entities (25), Enums, DTOs, Interfaces, DbContext, LeadRepository + LeadQueryRepository, DI, JWT, appsettings | Resto repos + Controllers | | 2026-07-07 | F1 | LeadService, UsuarioService, JwtService, AuthController, LeadController | Resto Services + Controllers | | 2026-07-07 | F1 | ContratoService, CotizacionService, AlumnoService, InformeService + Controllers | Reportes QuestPDF | | 2026-07-07 | F1.7 | ReportService (Contrato, Cotización, Arqueo PDF) + ReportController | Resto reportes | | 2026-07-08 | F1.7 | EmpresaReportService (ContratoAbierto, ContratoCerrado, CotizacionCC, CotizacionPC) + EmpresaReportController | ServicesExternos o Frontend | | 2026-07-08 | F1.3-1.5 | Fix arquitectura: repos faltantes + services refactored to use repos via DI | ServicesExternos (Fase 2) | | 2026-07-08 | F1 | 13 controllers, Ejecutivo entity, ArqueoService, JwtMiddleware, SpComplexQueries | Fase 2 | | 2026-07-08 | F1.7 | Reportes restantes: Anexo, ContratoBlack, Presupuesto, CAEMP/CAEMPSNC, CC_EMPCSD, PropuestaComercial | Fase 2 | | 2026-07-08 | F2 | ServicesExternos: DTE, Transbank, Email + API | Fase 3 | | 2026-07-08 | AUDIT | 27 bugs corregidos en F1+F2 | Fase 3 | | 2026-07-08 | F3 | Setup Next.js + Layout + Sidebar + Login + Auth + Dashboard + componentes + CSS | Resto páginas frontend | | | | | | | | | | | --- ## Próximos Pasos Inmediatos 1. ~~Completar `Ventas.Core/Entities/`~~ ✅ 2. ~~Configurar `VentasDbContext`~~ ✅ 3. ~~Crear `LeadRepository` + `LeadQueryRepository`~~ ✅ 4. **Agregar referencia Infrastructure a Ventas.API** ✅ 5. **Configurar JWT + CORS + DI en Program.cs** ✅ 6. **Actualizar `appsettings.json`** con connection string ✅ 7. **Seguir repositorios** por prioridad: Contrato → Cotizacion → Alumno → Usuario → Auth 8. **Crear Controllers** (empezar con AuthController + LeadController) 9. **Probar compilación** con `dotnet build`