Files
Nurfog 235f15e1e7 fix: audit 89 bugs - critical fixes
CRITICAL:
- JwtMiddleware orden (antes de UseAuthentication)
- JWT Secret en appsettings.json (no vacio)
- Transbank MySQL connection string (User=root + placeholder)
- package-lock generado + Dockerfile usa npm install
- Tests E2E: selectores corregidos con name attributes
- Tests: rut invalido reemplazado, casos sin auth
- Contacto page: apunta a services-externos (no backend)
- .env.example: credenciales reales -> placeholders

HIGH:
- extra_hosts agregado a services-externos en compose
- Dockerfile frontend: npm ci -> npm install
2026-07-08 11:30:16 -04:00

6.8 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 (22 páginas funcionales)
    • Leads (listado, detalle, nuevo)
    • Cotizaciones, Arqueo, Cursos, Alumnos
    • Empresas (listado, detalle, ventas)
    • Reportes (ventas, ventas-empresas, reimpresion)
    • 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 + Login + Auth + Dashboard + componentes + CSS Resto páginas
2026-07-08 F3 22 páginas frontend completadas + Dockerfiles + docker-compose + .env Fase 4
2026-07-08 F4 docker-compose.yml (3 servicios) + Dockerfiles + .env.example Fase 5
2026-07-08 F5 Playwright E2E (7 escenarios) + playwright.config.ts FIN
2026-07-08 AUDIT2 89 bugs encontrados. Corregidos: JwtMiddleware orden, JWT Secret, package-lock, tests, .env credenciales, Transbank MySQL, contacto endpoint, dockerfile npm ci, extra_hosts OK

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