# 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 / DTOs / Interfaces (Ventas.Core) | ✅ CREADO | | Infrastructure (EF Core + Dapper + Repos) | ✅ PARCIAL (DbContext + LeadRepository listos) | | Services (lógica de negocio) | ❌ PENDIENTE | | API Controllers | ❌ PENDIENTE | | Auth JWT | ❌ PENDIENTE | | Reportes QuestPDF (17 reportes) | ❌ PENDIENTE | | ServicesExternos.API | ❌ PENDIENTE | | 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** (~1 sem) - [x] Lead.cs + resto entidades (25 clases desde `Datos/`) - [x] DTOs request/response (LeadDto, LoginRequest, etc.) - [x] Enums (EstadoLead, TipoPago, TipoDocumento, TipoDescuento) - [x] Interfaces repositorios (ILeadRepository, ILeadQueryRepository, IAlumnoRepository, IUsuarioRepository, IContratoRepository, ICotizacionRepository) - [x] **1.3 Ventas.Infrastructure — Acceso a Datos** (~2-3 sem) - [x] VentasDbContext.cs (EF Core + Npgsql) - [x] LeadRepository.cs (SPs INSERT/UPDATE con Dapper) - [x] LeadQueryRepository.cs (SPs SELECT con Dapper) - [ ] Configurations/ (EF mapping) - [ ] Resto repos (Alumno, Contrato, Cotizacion, etc.) - [ ] SpComplexQueries.cs (Dapper multi-resultset) - [ ] **1.4 Ventas.Services — Lógica de Negocio** (~2 sem) - [ ] LeadService.cs + resto servicios (~15) - [ ] **1.5 Ventas.API — Controladores REST** (~1 sem) - [ ] AuthController.cs - [ ] LeadController.cs + resto controllers (~20) - [ ] Program.cs completo (DI, JWT, CORS) - [ ] appsettings.json con connection strings - [ ] **1.6 Auth JWT** (~3 días) - [ ] JwtMiddleware.cs - [ ] Login endpoint funcional - [ ] Claims → cookies HttpOnly - [ ] **1.7 Reportes QuestPDF** (~2-3 sem) - [ ] ReportService.cs (base) - [ ] 17 reportes (Contrato, Cotización, Arqueo, etc.) - [ ] Dockerfile Backend ### FASE 2: SERVICES EXTERNOS API (~2-3 semanas) - [ ] **2.0 Setup** - [ ] ServicesExternos.sln + proyectos - [ ] Program.cs + Dockerfile - [ ] **2.1 LibreDTE** (~1 sem) - [ ] **2.2 Transbank Webpay** (~1 sem) - [ ] **2.3 Email con MailKit** (~2 días) ### FASE 3: FRONTEND NEXT.JS (~6-8 semanas) - [ ] **3.1 Setup** (create-next-app, packages, config) - [ ] **3.2 Layout Principal** (~1 sem) - [ ] layout.tsx (sidebar + header = SAM.Master) - [ ] Sidebar.tsx, Header.tsx - [ ] CSS original (style.css, ichn.css, etc.) - [ ] **3.3 Login + Auth** (~3 días) - [ ] **3.4 Dashboard** (~3 días) - [ ] **3.5 Módulo Leads** (~1 sem) — 3 páginas - [ ] **3.6 Módulo Cotizaciones/Pagos** (~1 sem) - [ ] **3.7 Módulo Empresas** (~1 sem) — 3 páginas - [ ] **3.8 Resto páginas** (~2-3 sem) - Arqueo, Cursos, Alumnos - Reportes (3), Autorizador, Contacto - [ ] Dockerfile Frontend ### 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 (4), DTOs, Interfaces (6), DbContext, LeadRepository, LeadQueryRepository, DI setup, appsettings | Resto repos (Contrato, Cotizacion, Alumno) + Controllers | | | | | | | | | | | --- ## 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`