# US-MMD005-001: Registrar Vehiculo

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | US-MMD005-001 |
| **Epica** | EPIC-MMD-005 - Vehiculos |
| **Modulo** | vehiculos |
| **Prioridad** | P0 |
| **Story Points** | 5 |
| **Sprint** | Sprint 2 |
| **Estado** | Backlog |

---

## Historia de Usuario

**Como** recepcionista,
**quiero** registrar un vehiculo con datos basicos (placas, marca, modelo),
**para** identificarlo en el sistema y crear ordenes de servicio.

## Descripcion Detallada

El registro de vehiculo es el primer paso cuando un cliente nuevo llega. Se capturan datos basicos de identificacion y se asocia a un cliente (propietario o empresa).

---

## Criterios de Aceptacion

**Escenario 1: Registrar vehiculo nuevo**
```gherkin
DADO que un vehiculo nuevo llega al taller
CUANDO registro sus datos:
  | Campo | Valor |
  | Placas | ABC-123 |
  | Marca | Kenworth |
  | Modelo | T680 |
  | Ano | 2020 |
  | Tipo | TRACTO |
  | Color | Blanco |
  | VIN | 1XKAD49X1LJ123456 |
ENTONCES el vehiculo se registra en el sistema
Y se asocia al cliente seleccionado
```

**Escenario 2: Placas unicas**
```gherkin
DADO que intento registrar placas existentes "ABC-123"
CUANDO guardo
ENTONCES el sistema muestra "Vehiculo ya existe"
Y me lleva al registro existente
```

**Escenario 3: Validar formato VIN**
```gherkin
DADO que ingreso VIN
CUANDO el VIN tiene menos de 17 caracteres
ENTONCES el sistema muestra error de formato
Y no permite guardar
```

**Escenario 4: Registrar sin VIN**
```gherkin
DADO que el vehiculo no tiene VIN visible
CUANDO dejo el campo vacio
ENTONCES el sistema permite guardar
Y marca el campo como "pendiente"
```

---

## Campos del Vehiculo

| Campo | Tipo | Requerido |
|-------|------|-----------|
| placas | string | Si |
| vin | string(17) | No |
| marca | string | Si |
| modelo | string | Si |
| anio | number | Si |
| tipo | enum | Si |
| color | string | No |
| cliente_id | FK | Si |

---

## Tareas Tecnicas

**Database:**
- [ ] DB-050: Crear schema `vehicle_management`
- [ ] DB-051: Crear tabla `vehicles`
- [ ] DB-052: Indice unico por placas

**Backend:**
- [ ] BE-090: Crear VehicleEntity
- [ ] BE-091: Crear VehicleService
- [ ] BE-092: Crear VehicleController
- [ ] BE-093: Validacion de VIN

**Frontend:**
- [ ] FE-090: Crear VehiclesListPage
- [ ] FE-091: Crear VehicleForm
- [ ] FE-092: Selector de cliente

---

## Definition of Done (DoD)

- [ ] CRUD de vehiculos
- [ ] Placas unicas
- [ ] Validacion VIN
- [ ] Asociacion a cliente
- [ ] Tests pasando

---

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