# 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 ```typescript // 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 ```typescript // Reutilizar de erp-core/backend/src/shared/services/base.service.ts abstract class BaseService { constructor(protected tableName: string) {} async findAll(tenantId: string, filters?: any): Promise async findById(tenantId: string, id: string): Promise async create(tenantId: string, data: Partial): Promise async update(tenantId: string, id: string, data: Partial): Promise async delete(tenantId: string, id: string): Promise } ``` ### 3. Auth Middleware ```typescript // 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 ```typescript // 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) ```bash # 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