erp-mecanicas-diesel/docs/02-definicion-modulos/MMD-001-fundamentos/historias-usuario/US-MMD001-003-catalogo-servicios.md

4.8 KiB

US-MMD001-003: Configurar Catalogo de Servicios

Metadata

Campo Valor
ID US-MMD001-003
Epica EPIC-MMD-001 - Fundamentos
Modulo fundamentos
Prioridad P0
Story Points 8
Sprint Sprint 1
Estado Backlog
Asignado a Por asignar

Historia de Usuario

Como administrador del taller, quiero configurar un catalogo de servicios con precios estandar, para cotizar rapidamente y mantener consistencia en precios.

Descripcion Detallada

El catalogo de servicios permite definir todos los tipos de trabajo que ofrece el taller con sus precios base. Esto agiliza la creacion de cotizaciones y ordenes de servicio, evitando errores de precio.


Criterios de Aceptacion

Escenario 1: Ver catalogo de servicios predefinido

DADO que accedo al catalogo de servicios
CUANDO veo la lista inicial
ENTONCES veo servicios predefinidos para talleres diesel:
  | Codigo | Servicio | Unidad | Precio |
  | SRV-001 | Diagnostico Computarizado | Evento | $500 |
  | SRV-002 | Cambio de Aceite | Evento | $350 |
  | SRV-003 | Afinacion Mayor | Evento | $2,500 |
  | SRV-004 | Reparacion Bomba Inyeccion | Hora | $450 |

Escenario 2: Crear nuevo servicio

DADO que quiero agregar un servicio nuevo
CUANDO completo el formulario:
  | Campo | Valor |
  | Codigo | SRV-020 |
  | Nombre | Calibracion Turbo |
  | Categoria | Motor |
  | Unidad | Evento |
  | Precio | $1,200 |
  | Tiempo estimado | 2 horas |
ENTONCES el sistema guarda el servicio
Y aparece en el catalogo

Escenario 3: Modificar precio de servicio

DADO que selecciono el servicio "Cambio de Aceite"
CUANDO modifico el precio de $350 a $400
ENTONCES el sistema actualiza el precio
Y guarda historial del precio anterior

Escenario 4: Buscar servicio

DADO que tengo 50+ servicios en el catalogo
CUANDO busco "inyector"
ENTONCES veo solo servicios que contienen "inyector" en nombre o descripcion
Y la busqueda responde en menos de 200ms

Escenario 5: Categorizar servicios

DADO que tengo servicios de diferentes tipos
CUANDO filtro por categoria "Motor"
ENTONCES veo solo servicios de esa categoria

Categorias de Servicio

Categoria Descripcion
DIAGNOSTICO Pruebas y evaluaciones
MOTOR Reparaciones de motor
INYECCION Bombas, inyectores, turbo
ELECTRICO Sistema electrico
FRENOS Sistema de frenos
SUSPENSION Suspension y direccion
TRANSMISION Caja y embrague
MANTENIMIENTO Servicios preventivos
OTROS Servicios varios

Tareas Tecnicas

Database:

  • DB-006: Crear tabla service_catalog en schema workshop_core
  • DB-007: Crear tabla service_categories
  • DB-008: Crear tabla service_price_history para historial
  • DB-009: Insert de servicios predefinidos (seed)

Backend:

  • BE-009: Crear ServiceCatalogEntity
  • BE-010: Crear ServiceCatalogService con CRUD
  • BE-011: Crear ServiceCatalogController
  • BE-012: Implementar busqueda full-text

Frontend:

  • FE-009: Crear ServiceCatalogPage
  • FE-010: Crear ServiceCard y ServiceForm components
  • FE-011: Implementar busqueda y filtros
  • FE-012: Crear catalogStore

Tests:

  • TEST-005: Test CRUD servicios
  • TEST-006: Test busqueda < 200ms

Dependencias

Depende de:

  • US-MMD001-001: Configurar taller

Bloquea:

  • MMD-002: Ordenes de Servicio (usa catalogo)
  • MMD-006: Cotizaciones (usa catalogo)

Notas Tecnicas

Endpoints involucrados:

Metodo Endpoint Descripcion
GET /api/services Listar servicios (paginado)
POST /api/services Crear servicio
GET /api/services/:id Detalle servicio
PATCH /api/services/:id Actualizar servicio
DELETE /api/services/:id Desactivar servicio
GET /api/services/search Busqueda full-text
GET /api/service-categories Listar categorias
POST /api/services/import Import desde Excel

Estructura de Servicio:

interface ServiceCatalog {
  id: string;
  code: string;         // SRV-001
  name: string;         // Nombre del servicio
  description?: string; // Descripcion detallada
  category_id: string;  // Categoria
  unit: 'evento' | 'hora' | 'km';
  price: number;        // Precio actual
  estimated_time?: number; // Minutos estimados
  requires_parts: boolean; // Requiere refacciones tipicamente
  status: 'active' | 'inactive';
}

Definition of Done (DoD)

  • CRUD de servicios funcionando
  • Categorias configurables
  • Busqueda full-text < 200ms
  • Import desde Excel
  • Historial de precios
  • Tests pasando

Creada por: Requirements-Analyst Fecha: 2025-12-06