Files
rm-ventas/ROADMAP.md
T
Nurfog 9c1eb20132 fix: 27 bugs corregidos en auditoria f1+f2
CRITICAL:
- JWT Secret vacio -> fallback seguro en Program.cs
- QuestPDF License -> inicializada como Community
- Transbank SPs en MySQL (no PostgreSQL) + MySqlConnector package
- GrabarVoucher: 15 parametros (estaban 8)

ALTO:
- JwtMiddleware registrado en pipeline
- AuthController.Perfil con [Authorize]
- LeadRepository.IngresarAsync: ExecuteReader -> Execute
- Casts directos en LeadQueryRepository -> double cast IDictionary
- EmailService: try-finally con DisconnectAsync
- DteController ruta: parametro codigo no usado -> corregido

MEDIO:
- Schema prefix faltante en Buscar_LeadDiarios
- appsettings secretos movidos a env vars
- http template eliminado
- Fono string en vez de int en EmpresaController
- model validation faltante
2026-07-08 10:46:01 -04:00

140 lines
6.1 KiB
Markdown

# 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)
- [ ] **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, 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: JWT secret, QuestPDF license, schema SPs, Transbank MySQL, JwtMiddleware pipeline, Email disconnect, model validation, casts | Fase 3 |
| | | | |
| | | | |
---
## 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`