# US-MMD002-001: Crear Orden de Servicio

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | US-MMD002-001 |
| **Epica** | EPIC-MMD-002 - Ordenes de Servicio |
| **Modulo** | ordenes-servicio |
| **Prioridad** | P0 |
| **Story Points** | 5 |
| **Sprint** | Sprint 4 |
| **Estado** | Backlog |

---

## Historia de Usuario

**Como** recepcionista,
**quiero** crear una orden de servicio con datos del vehiculo y cliente,
**para** iniciar el proceso de atencion y darle seguimiento.

## Descripcion Detallada

Cuando un cliente llega al taller, la recepcionista debe poder crear rapidamente una orden de servicio. Si el vehiculo ya existe, se selecciona. Si es nuevo, se registra. La orden se crea en estado "RECIBIDO".

---

## Criterios de Aceptacion

**Escenario 1: Crear orden con vehiculo existente**
```gherkin
DADO que un cliente llega con un vehiculo ya registrado
CUANDO busco por placas "ABC-123"
ENTONCES el sistema encuentra el vehiculo
Y muestra sus datos y el cliente asociado
Y puedo crear la orden con un clic
```

**Escenario 2: Crear orden con vehiculo nuevo**
```gherkin
DADO que llega un vehiculo no registrado
CUANDO no encuentro las placas en el sistema
ENTONCES puedo registrar el vehiculo nuevo inline
Y asociarlo a un cliente existente o nuevo
Y crear la orden de servicio
```

**Escenario 3: Generar folio automatico**
```gherkin
DADO que creo una nueva orden
CUANDO confirmo la creacion
ENTONCES el sistema genera folio automatico: "OS-2025-0001"
Y el folio es unico y consecutivo
```

**Escenario 4: Registrar kilometraje de entrada**
```gherkin
DADO que recibo un vehiculo
CUANDO creo la orden
ENTONCES registro el kilometraje actual: 125,000 km
Y el sistema lo guarda en el historial del vehiculo
```

**Escenario 5: Imprimir comprobante de recepcion**
```gherkin
DADO que creo la orden exitosamente
CUANDO hago clic en "Imprimir comprobante"
ENTONCES se genera PDF con:
  | Folio orden | Fecha/hora | Vehiculo | Cliente | Km entrada |
Y el cliente puede firmarlo
```

---

## Datos de la Orden

| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| folio | string | Auto | OS-YYYY-NNNN |
| vehicle_id | FK | Si | Vehiculo |
| client_id | FK | Si | Cliente |
| received_at | datetime | Si | Fecha/hora recepcion |
| km_entry | number | Si | Kilometraje de entrada |
| reported_issues | text | No | Sintomas reportados |
| received_by | FK | Auto | Usuario que recibe |
| status | enum | Auto | RECIBIDO |
| bay_id | FK | No | Bahia asignada |
| mechanic_id | FK | No | Mecanico asignado |

---

## Tareas Tecnicas

**Database:**
- [ ] DB-020: Crear tabla `service_orders` en schema `service_management`
- [ ] DB-021: Crear secuencia para folios
- [ ] DB-022: Indices por folio, vehiculo, cliente, status

**Backend:**
- [ ] BE-040: Crear ServiceOrderEntity
- [ ] BE-041: Crear ServiceOrderService.create()
- [ ] BE-042: Crear ServiceOrderController POST /api/orders
- [ ] BE-043: Generar folio con formato configurable
- [ ] BE-044: Endpoint PDF comprobante

**Frontend:**
- [ ] FE-040: Crear OrderCreatePage
- [ ] FE-041: Crear VehicleSearchInput component
- [ ] FE-042: Crear OrderForm component
- [ ] FE-043: Integracion con impresion PDF

---

## Dependencias

**Depende de:**
- [ ] MMD-001: Fundamentos (taller, bahias)
- [ ] MMD-005: Vehiculos (busqueda, registro)

**Bloquea:**
- [ ] Resto del flujo de ordenes

---

## Definition of Done (DoD)

- [ ] Crear orden con vehiculo existente
- [ ] Crear orden con vehiculo nuevo
- [ ] Folio automatico unico
- [ ] Comprobante PDF imprimible
- [ ] Tests pasando

---

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