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)
Sprint 2 (Semanas 3-4)
Sprint 3 (Semanas 5-6)
Sprint 4 (Semanas 7-8)
Sprint 5 (Semanas 9-10)
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