cf2349ef2f
- Next.js 15 + TypeScript + Bootstrap 5 + FontAwesome - Layout replica SAM.Master (sidebar collapsable + header) - Sidebar, Header, LoadingSpinner, ModalConfirmacion components - Login page with RUT validation - Dashboard page with summary cards - AuthContext + JWT auth with cookies - api.ts centralized HTTP client - useInactividad hook (30min timeout) - validarRut.ts + utils.ts migrated - Original CSS + images copied from project - Dockerfile multi-stage build
6.4 KiB
6.4 KiB
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)
- 1.1 Crear solución + proyectos base
- 1.2 Ventas.Core — Entidades y DTOs
- 20 entidades del plan + Ejecutivo.cs + extras
- DTOs, Enums (4), Interfaces (7)
- 1.3 Ventas.Infrastructure — Acceso a Datos
- VentasDbContext (EF Core + Npgsql)
- 7 repositorios (Lead, LeadQuery, Contrato, Cotizacion, Alumno, Usuario, Informe)
- SpComplexQueries.cs (Dapper multi-resultset)
- Configurations/ + Dapper/ directories
- 1.4 Ventas.Services — Lógica de Negocio (~2 sem)
- LeadService.cs, UsuarioService.cs, JwtService.cs (refactored to use repos)
- ContratoService.cs, CotizacionService.cs, AlumnoService.cs, InformeService.cs (refactored to use repos)
- 1.5 Ventas.API — Controladores REST (21 controllers)
- Auth, Lead, Contrato, Cotizacion, Alumno
- Arqueo, Curso, Descuento, Documento, Empresa
- Horario, Jornada, Programa, Propuesta, Region
- Sala, Sede, Tarifa, Usuario, Informe, Report
- 1.6 Auth JWT (~3 días)
- JwtService.cs (generación de tokens)
- Login endpoint funcional
- Claims → cookies HttpOnly
- 1.7 Reportes QuestPDF (17/17 Crystal Reports migrados)
- Contrato, ContratoBlack, Cotización, Arqueo, Anexo, Presupuesto
- CAEMP (ContratoAbiertoSinSence), CAEMPSNC (ContratoAbiertoConSence), CAEMPV2
- CC_EMP, CC_EMPCSD, CC_PRS, CC_SNC, CotizacionCursoCerrado, CotizacionPlanCentral
- PropuestaComercial
- Dockerfile Backend
FASE 2: SERVICES EXTERNOS API (~2-3 semanas)
- 2.0 Setup
- ServicesExternos.slnx + API project + Dockerfile
- Program.cs con DI (HttpClient factory + servicios)
- appsettings.json con config de servicios
- 2.1 LibreDTE (~1 sem)
- DteService (emitir, generar PDF, consultar folio)
- DteController (emitir endpoint with PDF download)
- 2.2 Transbank Webpay (~1 sem)
- TransbankService (crear transacción, confirmar, voucher)
- TransbankController + Voucher SP integration
- 2.3 Email con MailKit (~2 días)
- EmailService (send with HTML templates + attachments)
- EmailController (send endpoint)
FASE 3: FRONTEND NEXT.JS (~6-8 semanas)
- 3.1 Setup (Next.js 15, TypeScript, packages)
- 3.2 Layout Principal
- layout.tsx (sidebar + header = SAM.Master)
- Sidebar.tsx, Header.tsx, LoadingSpinner, ModalConfirmacion
- CSS original copiado + globals.css con sidebar styles
- Assets (favicon, ichnHD, samito, Invertido_ICN)
- 3.3 Login + Auth (login page + useAuth hook + JWT)
- 3.4 Dashboard (cards layout)
- 3.5 JS migration (validarRut.ts, utils.ts, useInactividad)
- 3.6 api.ts (centralized HTTP client with cookies)
- 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
Completar✅Ventas.Core/Entities/Configurar✅VentasDbContextCrear✅LeadRepository+LeadQueryRepository- Agregar referencia Infrastructure a Ventas.API ✅
- Configurar JWT + CORS + DI en Program.cs ✅
- Actualizar
appsettings.jsoncon connection string ✅ - Seguir repositorios por prioridad: Contrato → Cotizacion → Alumno → Usuario → Auth
- Crear Controllers (empezar con AuthController + LeadController)
- Probar compilación con
dotnet build