664 lines
19 KiB
Markdown
664 lines
19 KiB
Markdown
# Plan de Resolucion de GAPs - Mecanicas Diesel
|
|
|
|
**Fecha:** 2025-12-12
|
|
**Proyecto:** mecanicas-diesel
|
|
**Estado:** Pre-desarrollo
|
|
**Responsable:** Architecture-Analyst
|
|
|
|
---
|
|
|
|
## Resumen Ejecutivo
|
|
|
|
Este documento detalla el plan para resolver los 12 GAPs identificados en el analisis arquitectonico antes de iniciar el desarrollo de backend/frontend del proyecto mecanicas-diesel.
|
|
|
|
### Clasificacion de GAPs
|
|
|
|
| Criticidad | Cantidad | Descripcion |
|
|
|------------|----------|-------------|
|
|
| **CRITICA (P0)** | 3 | Bloquean desarrollo, deben resolverse primero |
|
|
| **ALTA (P1)** | 5 | Importantes para MVP completo |
|
|
| **MEDIA (P2)** | 3 | Mejoras significativas |
|
|
| **BAJA (P3)** | 1 | Opcionales/simplificadas |
|
|
|
|
---
|
|
|
|
## GAPs Criticos (P0) - Semana 1
|
|
|
|
### GAP-01: Sistema de Tracking de Cambios (mail.thread)
|
|
|
|
**Problema:** No existe sistema automatico de auditoria/tracking de cambios en documentos (ordenes, cotizaciones, diagnosticos).
|
|
|
|
**Impacto:**
|
|
- Pierde historial de modificaciones
|
|
- No hay trazabilidad de quien cambio que
|
|
- No cumple con auditorias
|
|
|
|
**Solucion:** Implementar patron mail.thread de Odoo adaptado
|
|
|
|
**SPEC de Referencia:** `erp-core/docs/04-modelado/especificaciones-tecnicas/transversal/SPEC-MAIL-THREAD-TRACKING.md`
|
|
|
|
**Acciones:**
|
|
1. Crear schema `notifications` en mecanicas-diesel
|
|
2. Crear tablas:
|
|
- `notifications.messages` - Mensajes y tracking
|
|
- `notifications.message_subtypes` - Tipos de mensaje
|
|
- `notifications.tracking_values` - Valores trackeados
|
|
3. Implementar decorator `@Tracked` para campos
|
|
4. Agregar tracking a tablas criticas:
|
|
- `service_management.service_orders`
|
|
- `service_management.quotes`
|
|
- `service_management.diagnostics`
|
|
|
|
**DDL Requerido:**
|
|
```sql
|
|
-- Schema de notificaciones
|
|
CREATE SCHEMA IF NOT EXISTS notifications;
|
|
|
|
-- Tabla de mensajes (chatter)
|
|
CREATE TABLE notifications.messages (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
tenant_id UUID NOT NULL,
|
|
res_model VARCHAR(100) NOT NULL,
|
|
res_id UUID NOT NULL,
|
|
message_type VARCHAR(20) NOT NULL DEFAULT 'notification',
|
|
subtype_code VARCHAR(50),
|
|
author_id UUID,
|
|
subject VARCHAR(500),
|
|
body TEXT,
|
|
tracking_values JSONB DEFAULT '[]',
|
|
is_internal BOOLEAN NOT NULL DEFAULT false,
|
|
parent_id UUID REFERENCES notifications.messages(id),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
CONSTRAINT chk_message_type CHECK (message_type IN ('comment', 'notification', 'note'))
|
|
);
|
|
|
|
-- Indices
|
|
CREATE INDEX idx_messages_resource ON notifications.messages(res_model, res_id);
|
|
CREATE INDEX idx_messages_tenant ON notifications.messages(tenant_id);
|
|
CREATE INDEX idx_messages_created ON notifications.messages(created_at DESC);
|
|
```
|
|
|
|
**Esfuerzo:** 8 horas
|
|
**Entregable:** DDL + Documentacion
|
|
|
|
---
|
|
|
|
### GAP-02: Sistema de Followers/Suscriptores
|
|
|
|
**Problema:** No hay manera de suscribirse a documentos para recibir notificaciones automaticas.
|
|
|
|
**Impacto:**
|
|
- Usuarios no se enteran de cambios importantes
|
|
- Comunicacion manual requerida
|
|
- Pierde eficiencia operativa
|
|
|
|
**Solucion:** Implementar sistema de followers
|
|
|
|
**SPEC de Referencia:** `SPEC-MAIL-THREAD-TRACKING.md` (seccion Followers)
|
|
|
|
**Acciones:**
|
|
1. Crear tabla `notifications.followers`
|
|
2. Crear tabla `notifications.follower_subtypes`
|
|
3. Implementar auto-suscripcion:
|
|
- Mecanico asignado sigue su orden
|
|
- Cliente sigue sus cotizaciones
|
|
- Jefe de taller sigue ordenes de su bahia
|
|
|
|
**DDL Requerido:**
|
|
```sql
|
|
-- Seguidores de documentos
|
|
CREATE TABLE notifications.followers (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
tenant_id UUID NOT NULL,
|
|
res_model VARCHAR(100) NOT NULL,
|
|
res_id UUID NOT NULL,
|
|
partner_id UUID NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
UNIQUE(tenant_id, res_model, res_id, partner_id)
|
|
);
|
|
|
|
-- Suscripciones a tipos de mensaje
|
|
CREATE TABLE notifications.follower_subtypes (
|
|
follower_id UUID NOT NULL REFERENCES notifications.followers(id) ON DELETE CASCADE,
|
|
subtype_code VARCHAR(50) NOT NULL,
|
|
PRIMARY KEY (follower_id, subtype_code)
|
|
);
|
|
|
|
CREATE INDEX idx_followers_resource ON notifications.followers(res_model, res_id);
|
|
CREATE INDEX idx_followers_partner ON notifications.followers(partner_id);
|
|
```
|
|
|
|
**Esfuerzo:** 4 horas
|
|
**Entregable:** DDL + Documentacion
|
|
|
|
---
|
|
|
|
### GAP-03: Actividades Programadas
|
|
|
|
**Problema:** No hay sistema de recordatorios/actividades asociadas a documentos.
|
|
|
|
**Impacto:**
|
|
- No hay seguimiento de llamadas pendientes
|
|
- No hay recordatorios de mantenimientos
|
|
- Clientes olvidados
|
|
|
|
**Solucion:** Implementar sistema de actividades (mail.activity)
|
|
|
|
**SPEC de Referencia:** `SPEC-MAIL-THREAD-TRACKING.md` (seccion Activities)
|
|
|
|
**Acciones:**
|
|
1. Crear tabla `notifications.activities`
|
|
2. Crear tabla `notifications.activity_types`
|
|
3. Configurar tipos predeterminados:
|
|
- `call` - Llamar al cliente
|
|
- `meeting` - Cita de entrega
|
|
- `todo` - Tarea pendiente
|
|
- `reminder` - Recordatorio de mantenimiento
|
|
|
|
**DDL Requerido:**
|
|
```sql
|
|
-- Tipos de actividad
|
|
CREATE TABLE notifications.activity_types (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
code VARCHAR(50) NOT NULL UNIQUE,
|
|
name VARCHAR(100) NOT NULL,
|
|
icon VARCHAR(50) DEFAULT 'fa-tasks',
|
|
default_days INTEGER DEFAULT 0,
|
|
is_active BOOLEAN NOT NULL DEFAULT true,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
-- Actividades programadas
|
|
CREATE TABLE notifications.activities (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
tenant_id UUID NOT NULL,
|
|
res_model VARCHAR(100) NOT NULL,
|
|
res_id UUID NOT NULL,
|
|
activity_type_id UUID NOT NULL REFERENCES notifications.activity_types(id),
|
|
user_id UUID NOT NULL,
|
|
date_deadline DATE NOT NULL,
|
|
summary VARCHAR(500),
|
|
note TEXT,
|
|
state VARCHAR(20) NOT NULL DEFAULT 'planned',
|
|
date_done TIMESTAMPTZ,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
created_by UUID NOT NULL,
|
|
CONSTRAINT chk_activity_state CHECK (state IN ('planned', 'today', 'overdue', 'done', 'canceled'))
|
|
);
|
|
|
|
-- Seed de tipos predeterminados
|
|
INSERT INTO notifications.activity_types (code, name, icon, default_days) VALUES
|
|
('call', 'Llamar cliente', 'fa-phone', 0),
|
|
('meeting', 'Cita de entrega', 'fa-calendar', 0),
|
|
('todo', 'Tarea pendiente', 'fa-tasks', 1),
|
|
('reminder', 'Recordatorio mantenimiento', 'fa-bell', 30),
|
|
('followup', 'Seguimiento cotizacion', 'fa-envelope', 3);
|
|
|
|
CREATE INDEX idx_activities_resource ON notifications.activities(res_model, res_id);
|
|
CREATE INDEX idx_activities_user ON notifications.activities(user_id);
|
|
CREATE INDEX idx_activities_deadline ON notifications.activities(date_deadline);
|
|
CREATE INDEX idx_activities_state ON notifications.activities(state) WHERE state NOT IN ('done', 'canceled');
|
|
```
|
|
|
|
**Esfuerzo:** 4 horas
|
|
**Entregable:** DDL + Documentacion + Seed
|
|
|
|
---
|
|
|
|
## GAPs Alta Prioridad (P1) - Semana 2-3
|
|
|
|
### GAP-04: Facturacion Integrada (MMD-007)
|
|
|
|
**Problema:** No hay modulo de facturacion, no se generan asientos contables.
|
|
|
|
**Impacto:**
|
|
- No hay CFDI
|
|
- Proceso de facturacion manual
|
|
- Sin integracion contable
|
|
|
|
**Solucion:** Documentar e implementar MMD-007
|
|
|
|
**SPEC de Referencia:**
|
|
- `SPEC-FIRMA-ELECTRONICA-NOM151.md` (para CFDI)
|
|
- `erp-core/docs/02-definicion-modulos/ALCANCE-POR-MODULO.md` (MGN-004)
|
|
|
|
**Acciones:**
|
|
1. Crear documentacion de EPIC-MMD-007-facturacion.md
|
|
2. Crear documentacion de modulo MMD-007
|
|
3. Definir historias de usuario (8-10 US)
|
|
4. Disenar schema `billing`
|
|
5. Integrar con PAC para timbrado
|
|
|
|
**Fases:**
|
|
- Fase 2a: Pre-factura desde orden de servicio
|
|
- Fase 2b: Timbrado CFDI con PAC
|
|
- Fase 2c: Reportes de facturacion
|
|
|
|
**Esfuerzo:** 40 horas (distribuido en Fase 2)
|
|
**Entregable:** Documentacion completa + DDL
|
|
|
|
---
|
|
|
|
### GAP-05: Contabilidad Analitica
|
|
|
|
**Problema:** No hay P&L por orden de servicio, no se puede medir rentabilidad.
|
|
|
|
**Impacto:**
|
|
- No se sabe cuanto gana o pierde por orden
|
|
- No hay control de costos por servicio
|
|
- Decisiones sin datos financieros
|
|
|
|
**Solucion:** Implementar cuentas analiticas simplificadas
|
|
|
|
**SPEC de Referencia:** `SPEC-CONTABILIDAD-ANALITICA-MULTIDIMENSIONAL.md`
|
|
|
|
**Acciones:**
|
|
1. Agregar `analytic_account_id` a `service_orders`
|
|
2. Crear tabla `analytics.accounts` simplificada
|
|
3. Crear tabla `analytics.lines` para costos/ingresos
|
|
4. Generar lineas automaticas al:
|
|
- Usar refacciones (costo)
|
|
- Facturar (ingreso)
|
|
- Registrar mano de obra (costo)
|
|
|
|
**DDL Requerido:**
|
|
```sql
|
|
CREATE SCHEMA IF NOT EXISTS analytics;
|
|
|
|
CREATE TABLE analytics.accounts (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
tenant_id UUID NOT NULL,
|
|
code VARCHAR(20) NOT NULL,
|
|
name VARCHAR(100) NOT NULL,
|
|
account_type VARCHAR(20) NOT NULL DEFAULT 'service_order',
|
|
service_order_id UUID,
|
|
is_active BOOLEAN NOT NULL DEFAULT true,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
UNIQUE(tenant_id, code)
|
|
);
|
|
|
|
CREATE TABLE analytics.lines (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
tenant_id UUID NOT NULL,
|
|
account_id UUID NOT NULL REFERENCES analytics.accounts(id),
|
|
date DATE NOT NULL,
|
|
name VARCHAR(256),
|
|
amount DECIMAL(20,6) NOT NULL,
|
|
unit_amount DECIMAL(20,6),
|
|
ref VARCHAR(100),
|
|
source_model VARCHAR(100),
|
|
source_id UUID,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX idx_analytics_lines_account ON analytics.lines(account_id);
|
|
CREATE INDEX idx_analytics_lines_date ON analytics.lines(date);
|
|
```
|
|
|
|
**Esfuerzo:** 16 horas
|
|
**Entregable:** DDL + Documentacion
|
|
|
|
---
|
|
|
|
### GAP-06: Portal de Clientes
|
|
|
|
**Problema:** Cliente no puede ver el avance de su vehiculo en linea.
|
|
|
|
**Impacto:**
|
|
- Llamadas constantes preguntando estado
|
|
- Menor satisfaccion del cliente
|
|
- Proceso ineficiente
|
|
|
|
**Solucion:** Implementar portal basico para clientes
|
|
|
|
**SPEC de Referencia:** `ALCANCE-POR-MODULO.md` (MGN-013)
|
|
|
|
**Acciones:**
|
|
1. Documentar MMD-Portal en Fase 2
|
|
2. Crear rol `portal_cliente`
|
|
3. Implementar vistas de solo lectura:
|
|
- Mis vehiculos
|
|
- Mis ordenes de servicio
|
|
- Estado actual
|
|
- Cotizaciones pendientes de aprobar
|
|
4. Implementar aprobacion online de cotizaciones
|
|
|
|
**Esfuerzo:** 32 horas (Fase 2)
|
|
**Entregable:** Documentacion + DDL permisos
|
|
|
|
---
|
|
|
|
### GAP-09: Compras con RFQ Completo
|
|
|
|
**Problema:** Solo hay recepciones, no hay ordenes de compra ni solicitudes de cotizacion.
|
|
|
|
**Impacto:**
|
|
- No hay control de compras
|
|
- No hay historial de proveedores
|
|
- No hay aprobaciones de compra
|
|
|
|
**Solucion:** Implementar modulo de compras simplificado
|
|
|
|
**SPEC de Referencia:** `ALCANCE-POR-MODULO.md` (MGN-006)
|
|
|
|
**Acciones:**
|
|
1. Crear schema `purchasing`
|
|
2. Crear tablas:
|
|
- `purchasing.purchase_orders`
|
|
- `purchasing.purchase_order_lines`
|
|
- `purchasing.suppliers` (o usar partners existentes)
|
|
3. Integrar con recepciones de inventario
|
|
|
|
**DDL Requerido:**
|
|
```sql
|
|
CREATE SCHEMA IF NOT EXISTS purchasing;
|
|
|
|
CREATE TABLE purchasing.purchase_orders (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
tenant_id UUID NOT NULL,
|
|
order_number VARCHAR(50) NOT NULL,
|
|
supplier_id UUID NOT NULL,
|
|
status VARCHAR(20) NOT NULL DEFAULT 'draft',
|
|
order_date DATE NOT NULL DEFAULT CURRENT_DATE,
|
|
expected_date DATE,
|
|
subtotal DECIMAL(20,6) NOT NULL DEFAULT 0,
|
|
tax_amount DECIMAL(20,6) NOT NULL DEFAULT 0,
|
|
total DECIMAL(20,6) NOT NULL DEFAULT 0,
|
|
notes TEXT,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
created_by UUID NOT NULL,
|
|
CONSTRAINT chk_po_status CHECK (status IN ('draft', 'sent', 'confirmed', 'received', 'cancelled'))
|
|
);
|
|
|
|
CREATE TABLE purchasing.purchase_order_lines (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
purchase_order_id UUID NOT NULL REFERENCES purchasing.purchase_orders(id) ON DELETE CASCADE,
|
|
part_id UUID NOT NULL,
|
|
quantity DECIMAL(20,6) NOT NULL,
|
|
unit_price DECIMAL(20,6) NOT NULL,
|
|
subtotal DECIMAL(20,6) NOT NULL,
|
|
received_quantity DECIMAL(20,6) NOT NULL DEFAULT 0,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX idx_po_tenant ON purchasing.purchase_orders(tenant_id);
|
|
CREATE INDEX idx_po_supplier ON purchasing.purchase_orders(supplier_id);
|
|
CREATE INDEX idx_po_status ON purchasing.purchase_orders(status);
|
|
```
|
|
|
|
**Esfuerzo:** 24 horas
|
|
**Entregable:** DDL + Documentacion
|
|
|
|
---
|
|
|
|
### GAP-10: Reporte de Garantias
|
|
|
|
**Problema:** No hay tracking formal de garantias de refacciones usadas.
|
|
|
|
**Impacto:**
|
|
- No se sabe cuales piezas estan en garantia
|
|
- Perdida de dinero por no reclamar garantias
|
|
- Sin historial para cliente
|
|
|
|
**Solucion:** Agregar tracking de garantias
|
|
|
|
**Acciones:**
|
|
1. Agregar campos de garantia a `parts_management.parts`:
|
|
- `warranty_months`
|
|
- `warranty_policy`
|
|
2. Crear tabla `parts_management.warranty_claims`
|
|
3. Crear vista de piezas en garantia
|
|
|
|
**DDL Requerido:**
|
|
```sql
|
|
-- Ajuste a parts (si no existe)
|
|
ALTER TABLE parts_management.parts
|
|
ADD COLUMN IF NOT EXISTS warranty_months INTEGER DEFAULT 0;
|
|
|
|
-- Claims de garantia
|
|
CREATE TABLE parts_management.warranty_claims (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
tenant_id UUID NOT NULL,
|
|
part_id UUID NOT NULL,
|
|
service_order_id UUID,
|
|
serial_number VARCHAR(100),
|
|
installation_date DATE NOT NULL,
|
|
expiration_date DATE NOT NULL,
|
|
claim_date DATE,
|
|
claim_status VARCHAR(20) DEFAULT 'active',
|
|
claim_notes TEXT,
|
|
resolution TEXT,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
CONSTRAINT chk_warranty_status CHECK (claim_status IN ('active', 'claimed', 'approved', 'rejected', 'expired'))
|
|
);
|
|
|
|
-- Vista de garantias activas
|
|
CREATE VIEW parts_management.v_active_warranties AS
|
|
SELECT
|
|
wc.*,
|
|
p.sku,
|
|
p.name as part_name,
|
|
so.order_number,
|
|
c.name as customer_name
|
|
FROM parts_management.warranty_claims wc
|
|
JOIN parts_management.parts p ON p.id = wc.part_id
|
|
LEFT JOIN service_management.service_orders so ON so.id = wc.service_order_id
|
|
LEFT JOIN workshop_core.customers c ON c.id = so.customer_id
|
|
WHERE wc.claim_status = 'active'
|
|
AND wc.expiration_date >= CURRENT_DATE;
|
|
```
|
|
|
|
**Esfuerzo:** 8 horas
|
|
**Entregable:** DDL + Vista
|
|
|
|
---
|
|
|
|
## GAPs Media Prioridad (P2) - Semana 4+
|
|
|
|
### GAP-07: Integracion Calendario
|
|
|
|
**Problema:** No hay agendamiento de citas de servicio.
|
|
|
|
**Impacto:**
|
|
- No se pueden programar citas
|
|
- Overbooking de bahias
|
|
- Sin vista de calendario
|
|
|
|
**Solucion:** Integrar con sistema de calendario (opcional)
|
|
|
|
**SPEC de Referencia:** `SPEC-INTEGRACION-CALENDAR.md`
|
|
|
|
**Acciones:**
|
|
1. Evaluar necesidad real del taller
|
|
2. Si se requiere:
|
|
- Crear tabla `scheduling.appointments`
|
|
- Integrar con bahias de trabajo
|
|
- Vista de calendario por bahia
|
|
|
|
**Esfuerzo:** 8 horas (si se requiere)
|
|
**Entregable:** Evaluacion + DDL opcional
|
|
|
|
---
|
|
|
|
### GAP-08: Pricing Rules Avanzado
|
|
|
|
**Problema:** No hay descuentos escalonados ni reglas de precios complejas.
|
|
|
|
**Impacto:**
|
|
- Precios manuales
|
|
- Sin descuentos por volumen
|
|
- Sin promociones
|
|
|
|
**Solucion:** Implementar pricing basico
|
|
|
|
**SPEC de Referencia:** `SPEC-PRICING-RULES.md`
|
|
|
|
**Acciones:**
|
|
1. Evaluar necesidad (talleres normalmente tienen precios fijos)
|
|
2. Si se requiere:
|
|
- Crear tabla `pricing.pricelists`
|
|
- Crear tabla `pricing.pricelist_items`
|
|
- Integrar con cotizaciones
|
|
|
|
**Esfuerzo:** 16 horas (si se requiere)
|
|
**Entregable:** Evaluacion + DDL opcional
|
|
|
|
---
|
|
|
|
### GAP-12: Firma Electronica
|
|
|
|
**Problema:** Aprobacion de cotizaciones sin firma legal.
|
|
|
|
**Impacto:**
|
|
- Sin respaldo legal
|
|
- Disputas de aprobacion
|
|
- Proceso informal
|
|
|
|
**Solucion:** Implementar firma basica
|
|
|
|
**SPEC de Referencia:** `SPEC-FIRMA-ELECTRONICA-NOM151.md`
|
|
|
|
**Acciones:**
|
|
1. Para MVP: Firma canvas simple (HTML5)
|
|
2. Agregar campos a cotizaciones:
|
|
- `signature_data` (base64)
|
|
- `signed_at`
|
|
- `signed_by_ip`
|
|
3. Para Fase 2+: Evaluar NOM-151 completa
|
|
|
|
**DDL Requerido:**
|
|
```sql
|
|
-- Agregar campos de firma a cotizaciones
|
|
ALTER TABLE service_management.quotes
|
|
ADD COLUMN IF NOT EXISTS signature_data TEXT,
|
|
ADD COLUMN IF NOT EXISTS signed_at TIMESTAMPTZ,
|
|
ADD COLUMN IF NOT EXISTS signed_by_ip VARCHAR(45),
|
|
ADD COLUMN IF NOT EXISTS signed_by_name VARCHAR(256);
|
|
```
|
|
|
|
**Esfuerzo:** 8 horas (firma basica)
|
|
**Entregable:** DDL + Documentacion
|
|
|
|
---
|
|
|
|
## GAPs Baja Prioridad (P3) - Post-MVP
|
|
|
|
### GAP-11: Contratos de Empleados
|
|
|
|
**Problema:** Empleados (mecanicos) sin gestion de contratos formal.
|
|
|
|
**Impacto:**
|
|
- Sin historial laboral
|
|
- Sin control de documentos
|
|
- Riesgo legal
|
|
|
|
**Solucion:** Simplificado para taller
|
|
|
|
**Decision:** Para MVP, mantener simplificado con campos basicos en `users`. Implementar HR completo en Fase 3 si el taller lo requiere.
|
|
|
|
**Esfuerzo:** 0 horas (mantener simplificado)
|
|
**Entregable:** N/A
|
|
|
|
---
|
|
|
|
## Cronograma de Implementacion
|
|
|
|
```
|
|
SEMANA 1 (Gaps Criticos P0)
|
|
├── Dia 1-2: GAP-01 Sistema de tracking (8h)
|
|
├── Dia 3: GAP-02 Followers (4h)
|
|
├── Dia 4: GAP-03 Actividades (4h)
|
|
└── Dia 5: Pruebas y documentacion
|
|
|
|
SEMANA 2 (Gaps P1 - Parte 1)
|
|
├── Dia 1-2: GAP-05 Contabilidad analitica (16h)
|
|
└── Dia 3-5: GAP-10 Garantias (8h) + Documentacion GAP-04
|
|
|
|
SEMANA 3 (Gaps P1 - Parte 2)
|
|
├── Dia 1-3: GAP-09 Compras basico (24h)
|
|
└── Dia 4-5: GAP-12 Firma basica (8h)
|
|
|
|
SEMANA 4+ (Evaluacion Gaps P2)
|
|
├── GAP-07 Calendario - Evaluar necesidad
|
|
├── GAP-08 Pricing - Evaluar necesidad
|
|
└── Documentacion GAP-04/GAP-06 para Fase 2
|
|
```
|
|
|
|
---
|
|
|
|
## Entregables por Semana
|
|
|
|
### Semana 1
|
|
- [ ] `database/init/07-notifications-schema.sql`
|
|
- [ ] `docs/03-modelo-datos/SCHEMA-NOTIFICATIONS.md`
|
|
- [ ] Actualizacion de `PROJECT-STATUS.md`
|
|
|
|
### Semana 2
|
|
- [ ] `database/init/08-analytics-schema.sql`
|
|
- [ ] `docs/03-modelo-datos/SCHEMA-ANALYTICS.md`
|
|
- [ ] `docs/02-definicion-modulos/MMD-007-facturacion/README.md` (estructura)
|
|
|
|
### Semana 3
|
|
- [ ] `database/init/09-purchasing-schema.sql`
|
|
- [ ] `docs/03-modelo-datos/SCHEMA-PURCHASING.md`
|
|
- [ ] Actualizacion DDL cotizaciones (firma)
|
|
|
|
### Semana 4
|
|
- [ ] Evaluacion y decision de Gaps P2
|
|
- [ ] Documentacion completa para desarrollo
|
|
|
|
---
|
|
|
|
## Metricas de Exito
|
|
|
|
| Metrica | Objetivo | Validacion |
|
|
|---------|----------|------------|
|
|
| Gaps P0 resueltos | 3/3 | DDL ejecutable |
|
|
| Gaps P1 documentados | 5/5 | Documentacion completa |
|
|
| DDL sin errores | 100% | Scripts de validacion |
|
|
| Cobertura documentacion | 100% | Review |
|
|
|
|
---
|
|
|
|
## Riesgos y Mitigaciones
|
|
|
|
| Riesgo | Probabilidad | Impacto | Mitigacion |
|
|
|--------|--------------|---------|------------|
|
|
| Complejidad tracking | Media | Alto | Usar SPEC existente de erp-core |
|
|
| Integracion con existente | Baja | Medio | Probar incrementalmente |
|
|
| Cambios de alcance | Media | Medio | Documentar decisiones |
|
|
|
|
---
|
|
|
|
## Aprobaciones
|
|
|
|
- [ ] **Product Owner:** Aprobacion de priorizacion
|
|
- [ ] **Tech Lead:** Revision tecnica de DDL
|
|
- [ ] **QA:** Plan de validacion
|
|
|
|
---
|
|
|
|
## Estado de Implementacion
|
|
|
|
| GAP | DDL Creado | Fecha |
|
|
|-----|------------|-------|
|
|
| GAP-01 | 07-notifications-schema.sql | 2025-12-12 |
|
|
| GAP-02 | 07-notifications-schema.sql | 2025-12-12 |
|
|
| GAP-03 | 07-notifications-schema.sql | 2025-12-12 |
|
|
| GAP-04 | Fase 2 (documentado) | - |
|
|
| GAP-05 | 08-analytics-schema.sql | 2025-12-12 |
|
|
| GAP-06 | Fase 2 (documentado) | - |
|
|
| GAP-07 | Evaluado - Opcional | - |
|
|
| GAP-08 | Evaluado - Opcional | - |
|
|
| GAP-09 | 09-purchasing-schema.sql | 2025-12-12 |
|
|
| GAP-10 | 10-warranty-claims.sql | 2025-12-12 |
|
|
| GAP-11 | Simplificado (Post-MVP) | - |
|
|
| GAP-12 | 11-quote-signature.sql | 2025-12-12 |
|
|
|
|
---
|
|
|
|
**Documento creado por:** Architecture-Analyst
|
|
**Fecha:** 2025-12-12
|
|
**Version:** 1.1.0
|
|
**Estado:** IMPLEMENTADO - DDL creados
|