# 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<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

```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
