workspace/projects/erp-suite/apps/verticales/mecanicas-diesel/docs/90-transversal/PLAN-IMPLEMENTACION-2025-12.md
Adrian Flores Cortes 7ed5c5ab45
Some checks are pending
CI Pipeline / changes (push) Waiting to run
CI Pipeline / core (push) Blocked by required conditions
CI Pipeline / trading-backend (push) Blocked by required conditions
CI Pipeline / trading-data-service (push) Blocked by required conditions
CI Pipeline / trading-frontend (push) Blocked by required conditions
CI Pipeline / erp-core (push) Blocked by required conditions
CI Pipeline / erp-mecanicas (push) Blocked by required conditions
CI Pipeline / gamilit-backend (push) Blocked by required conditions
CI Pipeline / gamilit-frontend (push) Blocked by required conditions
changes on project erp-suite documentation
2025-12-12 08:18:01 -06:00

16 KiB

Plan de Implementacion - Mecanicas Diesel

Fecha: 2025-12-12 Version: 2.0.0 Estado: LISTO PARA DESARROLLO


Resumen Ejecutivo

Este documento presenta el plan actualizado de implementacion para el proyecto mecanicas-diesel, considerando el estado actual del proyecto erp-core y las especificaciones tecnicas disponibles.

Estado Actual

Proyecto Estado Avance
erp-core DDL completo, Backend parcial 60%
mecanicas-diesel Documentacion completa, DDL completo Listo para desarrollo

Decision Arquitectonica

mecanicas-diesel es un proyecto independiente que:

  • NO depende de erp-core para ejecutarse
  • Implementa sus propios schemas y tablas
  • Adapta patrones similares a erp-core para su dominio especifico
  • Opera de forma completamente standalone

Analisis de erp-core (Diciembre 2025)

Estructura de erp-core

erp-core/
├── backend/                    # 15 modulos implementados (104 archivos TS)
│   └── src/modules/
│       ├── auth/               # JWT, API Keys, sessions
│       ├── users/              # CRUD usuarios
│       ├── companies/          # Empresas multi-tenant
│       ├── partners/           # Clientes, proveedores
│       ├── inventory/          # Productos, stock
│       ├── financial/          # Contabilidad
│       ├── purchases/          # Ordenes de compra
│       ├── sales/              # Ordenes de venta
│       └── ...
│
├── frontend/                   # 3 features completas (React + Vite)
│   └── src/features/
│       ├── companies/
│       ├── users/
│       └── partners/
│
├── database/ddl/              # 15 archivos SQL (~10,000 lineas)
│   ├── 00-prerequisites.sql   # Extensions
│   ├── 01-auth.sql            # Autenticacion
│   ├── 01-auth-extensions.sql # Extensiones auth
│   ├── 02-core.sql            # Partners, catalogos
│   ├── 03-analytics.sql       # Contabilidad analitica
│   ├── 04-financial.sql       # Contabilidad financiera
│   ├── 05-inventory.sql       # Inventario
│   ├── 06-purchase.sql        # Compras
│   ├── 07-sales.sql           # Ventas
│   ├── 08-projects.sql        # Proyectos
│   ├── 09-system.sql          # Sistema, mensajes
│   ├── 10-billing.sql         # SaaS billing
│   ├── 11-crm.sql             # CRM
│   └── 12-hr.sql              # RRHH
│
└── docs/                      # 829 archivos Markdown
    └── 04-modelado/especificaciones-tecnicas/transversal/
        └── 30 especificaciones tecnicas

Modulos de erp-core (19 totales)

Fase Modulos Estado
P0 Foundation MGN-001 Auth, MGN-002 Users, MGN-003 Roles, MGN-004 Tenants En desarrollo
P1 Core Business MGN-005 Catalogs, MGN-010 Financial, MGN-011 Inventory, MGN-012 Purchasing, MGN-013 Sales, MGN-006 Settings Planificado
P2 Extended MGN-007 Audit, MGN-008 Notifications, MGN-009 Reports, MGN-014 CRM, MGN-015 Projects Planificado
P3 SaaS MGN-016 Billing, MGN-017 Payments, MGN-018 WhatsApp, MGN-019 AI Agents Planificado

Especificaciones Transversales Disponibles (30)

erp-core/docs/04-modelado/especificaciones-tecnicas/transversal/
├── SPEC-ALERTAS-PRESUPUESTO.md
├── SPEC-BLANKET-ORDERS.md
├── SPEC-CONCILIACION-BANCARIA.md
├── SPEC-CONSOLIDACION-FINANCIERA.md
├── SPEC-CONTABILIDAD-ANALITICA-MULTIDIMENSIONAL.md
├── SPEC-FIRMA-ELECTRONICA-NOM151.md
├── SPEC-GASTOS-EMPLEADOS.md
├── SPEC-IMPUESTOS-AVANZADOS.md
├── SPEC-INTEGRACION-CALENDAR.md
├── SPEC-INVENTARIOS-CICLICOS.md
├── SPEC-LOCALIZACION-PAISES.md
├── SPEC-MAIL-THREAD-TRACKING.md
├── SPEC-NOMINA-BASICA.md
├── SPEC-OAUTH2-SOCIAL-LOGIN.md
├── SPEC-PLANTILLAS-CUENTAS.md
├── SPEC-PORTAL-PROVEEDORES.md
├── SPEC-PRESUPUESTOS-REVISIONES.md
├── SPEC-PRICING-RULES.md
├── SPEC-PROYECTOS-DEPENDENCIAS-BURNDOWN.md
├── SPEC-REPORTES-FINANCIEROS.md
├── SPEC-RRHH-EVALUACIONES-SKILLS.md
├── SPEC-SCHEDULER-REPORTES.md
├── SPEC-SEGURIDAD-API-KEYS-PERMISOS.md
├── SPEC-SISTEMA-SECUENCIAS.md
├── SPEC-TAREAS-RECURRENTES.md
├── SPEC-TASAS-CAMBIO-AUTOMATICAS.md
├── SPEC-TRAZABILIDAD-LOTES-SERIES.md
├── SPEC-TWO-FACTOR-AUTHENTICATION.md
├── SPEC-VALORACION-INVENTARIO.md
└── SPEC-WIZARD-TRANSIENT-MODEL.md

Estado Actual de mecanicas-diesel

DDL Implementados (11 archivos)

mecanicas-diesel/database/init/
├── 00-extensions.sql                 # Extensiones PostgreSQL
├── 01-create-schemas.sql             # 7 schemas propios
├── 02-rls-functions.sql              # Multi-tenant RLS
├── 03-service-management-tables.sql  # Ordenes, diagnosticos
├── 04-parts-management-tables.sql    # Inventario refacciones
├── 05-vehicle-management-tables.sql  # Vehiculos, flotas
├── 06-seed-data.sql                  # Datos iniciales
├── 07-notifications-schema.sql       # Tracking, followers, actividades
├── 08-analytics-schema.sql           # Contabilidad analitica
├── 09-purchasing-schema.sql          # Compras, proveedores
├── 10-warranty-claims.sql            # Garantias
└── 11-quote-signature.sql            # Firma electronica

Schemas de mecanicas-diesel (7)

Schema Tablas Equivalente Core
workshop_core 9 auth + core
service_management 14+ sales + projects
parts_management 12+ inventory
vehicle_management 8 (especifico)
notifications 6 system (messages)
analytics 4 analytics
purchasing 5 purchase

Modulos Documentados (6 MVP)

Codigo Modulo User Stories Story Points
MMD-001 Fundamentos 9 42
MMD-002 Ordenes de Servicio 11 55
MMD-003 Diagnosticos 8 42
MMD-004 Inventario 10 42
MMD-005 Vehiculos 8 34
MMD-006 Cotizaciones 7 26
Total 6 modulos 55 US 241 SP

Mapeo: mecanicas-diesel → erp-core

Equivalencia de Funcionalidades

Funcionalidad mecanicas-diesel erp-core Equivalente Spec Aplicable
Multi-tenant (taller = tenant) MGN-004 Tenants -
Autenticacion JWT MGN-001 Auth SPEC-TWO-FACTOR-AUTHENTICATION
Usuarios y roles MGN-002/003 Users/Roles SPEC-SEGURIDAD-API-KEYS-PERMISOS
Catalogos (servicios, partes) MGN-005 Catalogs -
Inventario de refacciones MGN-011 Inventory SPEC-VALORACION-INVENTARIO, SPEC-TRAZABILIDAD-LOTES-SERIES
Ordenes de compra MGN-012 Purchasing SPEC-BLANKET-ORDERS
Cotizaciones MGN-013 Sales SPEC-PRICING-RULES
Sistema de tracking MGN-008 Notifications SPEC-MAIL-THREAD-TRACKING
Contabilidad analitica financialanalytics SPEC-CONTABILIDAD-ANALITICA-MULTIDIMENSIONAL
Firma electronica - SPEC-FIRMA-ELECTRONICA-NOM151
Garantias (especifico) -
Vehiculos/flotas (especifico) -
Diagnosticos diesel (especifico) -

Specs de erp-core Aplicables a mecanicas-diesel

Spec Aplicabilidad Implementado en MMD
SPEC-MAIL-THREAD-TRACKING Alta Si - 07-notifications
SPEC-CONTABILIDAD-ANALITICA Alta Si - 08-analytics
SPEC-VALORACION-INVENTARIO Alta Parcial
SPEC-TRAZABILIDAD-LOTES-SERIES Media No
SPEC-PRICING-RULES Media No
SPEC-FIRMA-ELECTRONICA-NOM151 Media Basico - 11-quote-signature
SPEC-SISTEMA-SECUENCIAS Alta No (usar directamente)
SPEC-SEGURIDAD-API-KEYS Alta No (usar directamente)
SPEC-TWO-FACTOR-AUTHENTICATION Baja No (Fase 2)

Plan de Desarrollo

Fase 1: Backend Foundation (Semanas 1-2)

Objetivo: Implementar APIs core basadas en patrones de erp-core

Sprint 1.1: Auth y Usuarios

Tareas:
1. Configurar proyecto NestJS
   - Estructura de modulos
   - Configuracion de DB
   - Middleware de autenticacion

2. Implementar modulo Auth (basado en erp-core/backend/src/modules/auth/)
   - Login/Register endpoints
   - JWT tokens (access + refresh)
   - Password hashing con bcrypt

3. Implementar modulo Users
   - CRUD de usuarios
   - Roles por defecto (admin, jefe_taller, mecanico, recepcion)

4. Implementar RLS middleware
   - Inyeccion de tenant_id
   - Validacion de permisos

Entregables:
- [ ] POST /api/auth/login
- [ ] POST /api/auth/register
- [ ] POST /api/auth/refresh
- [ ] GET /api/users
- [ ] GET /api/users/:id
- [ ] POST /api/users
- [ ] PUT /api/users/:id
- [ ] DELETE /api/users/:id

Sprint 1.2: Catalogos y Configuracion

Tareas:
1. Implementar modulo workshop_core
   - Talleres (tenants)
   - Clientes
   - Servicios
   - Bahias de trabajo

2. Implementar sistema de secuencias (SPEC-SISTEMA-SECUENCIAS)
   - Folios de ordenes
   - Folios de cotizaciones

Entregables:
- [ ] CRUD Talleres
- [ ] CRUD Clientes
- [ ] CRUD Servicios
- [ ] CRUD Bahias
- [ ] Sistema de folios automaticos

Fase 2: Modulos de Negocio (Semanas 3-5)

Sprint 2.1: Ordenes de Servicio (MMD-002)

Tareas:
1. CRUD de ordenes de servicio
2. Estados y transiciones (maquina de estados)
3. Asignacion a mecanicos y bahias
4. Integracion con sistema de tracking (notifications schema)

Entregables:
- [ ] POST /api/service-orders
- [ ] GET /api/service-orders
- [ ] PUT /api/service-orders/:id/status
- [ ] POST /api/service-orders/:id/assign
- [ ] GET /api/service-orders/:id/history (tracking)

Sprint 2.2: Diagnosticos (MMD-003)

Tareas:
1. CRUD de diagnosticos
2. Tipos de prueba configurables
3. Asociacion con ordenes de servicio
4. Upload de fotos de evidencia

Entregables:
- [ ] POST /api/diagnostics
- [ ] GET /api/diagnostics/:id
- [ ] POST /api/diagnostics/:id/tests
- [ ] POST /api/diagnostics/:id/photos

Sprint 2.3: Inventario (MMD-004)

Tareas:
1. CRUD de refacciones
2. Movimientos de stock (siguiendo SPEC-VALORACION-INVENTARIO)
3. Solicitudes desde ordenes de servicio
4. Alertas de stock minimo

Entregables:
- [ ] CRUD /api/parts
- [ ] POST /api/stock-moves
- [ ] GET /api/stock-levels
- [ ] POST /api/part-requests

Fase 3: Cotizaciones y Compras (Semanas 6-7)

Sprint 3.1: Cotizaciones (MMD-006)

Tareas:
1. CRUD de cotizaciones
2. Generacion desde diagnosticos
3. Aprobacion con firma electronica (basico)
4. Conversion a orden de servicio

Entregables:
- [ ] POST /api/quotes
- [ ] GET /api/quotes/:id
- [ ] POST /api/quotes/:id/sign
- [ ] POST /api/quotes/:id/convert

Sprint 3.2: Compras (purchasing schema)

Tareas:
1. CRUD de proveedores
2. Ordenes de compra
3. Recepciones de mercancia
4. Integracion con inventario

Entregables:
- [ ] CRUD /api/suppliers
- [ ] CRUD /api/purchase-orders
- [ ] POST /api/purchase-receipts

Fase 4: Frontend (Semanas 8-10)

Sprint 4.1: Setup y Layout

Tareas:
1. Configurar proyecto React + Vite
2. Implementar layout principal
3. Sistema de rutas
4. Autenticacion frontend

Estructura (basada en erp-core/frontend):
src/
├── features/
│   ├── auth/
│   ├── service-orders/
│   ├── diagnostics/
│   ├── inventory/
│   └── quotes/
├── components/
├── hooks/
├── stores/
└── services/

Sprint 4.2: Modulos Core

Entregables:
- [ ] Login/Dashboard
- [ ] Lista de ordenes (Kanban)
- [ ] Formulario de orden
- [ ] Vista de diagnostico
- [ ] Gestion de inventario

Patrones de erp-core a Reutilizar

1. Estructura de Modulo Backend

// Patron de erp-core/backend/src/modules/{module}/
{module}/
├── {module}.controller.ts    // Endpoints
├── {module}.service.ts       // Logica de negocio
├── {module}.routes.ts        // Definicion de rutas
├── {module}.dto.ts           // Data Transfer Objects (Zod)
└── index.ts                  // Exports

2. BaseService Pattern

// Reutilizar de erp-core/backend/src/shared/services/base.service.ts
abstract class BaseService<T> {
  constructor(protected tableName: string) {}

  async findAll(tenantId: string, filters?: any): Promise<T[]>
  async findById(tenantId: string, id: string): Promise<T | null>
  async create(tenantId: string, data: Partial<T>): Promise<T>
  async update(tenantId: string, id: string, data: Partial<T>): Promise<T>
  async delete(tenantId: string, id: string): Promise<boolean>
}

3. Auth Middleware

// Reutilizar patron de erp-core/backend/src/shared/middleware/auth.middleware.ts
export const authMiddleware = async (req, res, next) => {
  const token = req.headers.authorization?.split(' ')[1];
  const payload = verifyJWT(token);
  req.user = payload;
  req.tenantId = payload.tenantId;
  next();
};

4. Feature Frontend Pattern

// Patron de erp-core/frontend/src/features/{feature}/
{feature}/
├── api/{feature}.api.ts          // Llamadas HTTP
├── types/{feature}.types.ts      // Interfaces
├── hooks/use{Feature}.ts         // Custom hooks
└── components/
    ├── {Feature}Form.tsx
    ├── {Feature}List.tsx
    └── {Feature}FiltersPanel.tsx

Configuracion de Entorno

Variables de Entorno (.env)

# Server
NODE_ENV=development
PORT=3021                          # Puerto asignado por DEVENV
API_PREFIX=/api/v1

# Database
DB_HOST=localhost
DB_PORT=5432
DB_NAME=mecanicas_diesel_db        # Base de datos propia
DB_USER=mecanicas_user
DB_PASSWORD=mecanicas_secret_2024

# JWT
JWT_SECRET=mmd-super-secret-jwt-key-change-in-production
JWT_EXPIRES_IN=24h
JWT_REFRESH_EXPIRES_IN=7d

# Logging
LOG_LEVEL=debug

# CORS
CORS_ORIGIN=http://localhost:3020

Puertos (Consultar con DEVENV)

Servicio Puerto Sugerido Descripcion
Backend API 3021 APIs REST NestJS
Frontend 3020 React + Vite
PostgreSQL 5432 Compartido (DB propia)

IMPORTANTE: Antes de confirmar puertos, consultar con perfil DEVENV para evitar conflictos.


Entregables por Sprint

Sprint 1 (Semanas 1-2)

  • Proyecto NestJS configurado
  • Modulo Auth funcional
  • Modulo Users funcional
  • RLS implementado
  • Tests unitarios auth

Sprint 2 (Semanas 3-4)

  • Modulo ServiceOrders
  • Modulo Diagnostics
  • Sistema de tracking
  • Tests de integracion

Sprint 3 (Semanas 5-6)

  • Modulo Inventory
  • Modulo Quotes
  • Firma basica
  • Tests E2E

Sprint 4 (Semanas 7-8)

  • Modulo Purchasing
  • Integracion completa
  • Documentacion API (Swagger)

Sprint 5 (Semanas 9-10)

  • Frontend React
  • Vistas principales
  • Integracion backend
  • Deploy staging

Metricas de Exito

Metrica Objetivo
Cobertura de tests >70%
Endpoints documentados 100%
User Stories implementadas 55/55
Tiempo de respuesta API <200ms
Build sin errores 100%

Riesgos y Mitigaciones

Riesgo Probabilidad Impacto Mitigacion
Complejidad de ordenes de servicio Media Alto Empezar con flujo simplificado
Integracion con tracking Baja Medio DDL ya probado
Firma electronica avanzada Media Bajo Implementar basico primero
Performance inventario Baja Medio Indices optimizados en DDL

Referencias

Documento Ubicacion
DDL mecanicas-diesel database/init/*.sql
Specs transversales erp-core/docs/04-modelado/especificaciones-tecnicas/transversal/
Backend patterns erp-core/backend/src/
Frontend patterns erp-core/frontend/src/
User Stories docs/02-definicion-modulos/*/historias-usuario/
Epicas docs/08-epicas/

Documento creado por: Architecture-Analyst Fecha: 2025-12-12 Version: 2.0.0 Para uso de: TECH-LEADER