# 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** ```gherkin 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** ```gherkin 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** ```gherkin 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** ```gherkin 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** ```gherkin 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:** ```typescript 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