# US-MMD003-001: Registrar Diagnostico Computarizado

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | US-MMD003-001 |
| **Epica** | EPIC-MMD-003 - Diagnosticos |
| **Modulo** | diagnosticos |
| **Prioridad** | P0 |
| **Story Points** | 8 |
| **Sprint** | Sprint 3 |
| **Estado** | Backlog |

---

## Historia de Usuario

**Como** mecanico,
**quiero** registrar los codigos de error (DTC) obtenidos del scanner,
**para** documentar las fallas detectadas y tener historial de diagnosticos.

## Descripcion Detallada

El mecanico conecta el scanner al vehiculo y obtiene codigos de falla (DTC - Diagnostic Trouble Codes). Estos codigos deben registrarse en el sistema con su descripcion, sistema afectado y gravedad.

---

## Criterios de Aceptacion

**Escenario 1: Agregar codigo DTC**
```gherkin
DADO que realizo un escaneo del vehiculo
CUANDO agrego el codigo "P0201"
ENTONCES el sistema muestra:
  | Codigo | P0201 |
  | Descripcion | Inyector Cilindro 1 - Circuito Abierto |
  | Sistema | Inyeccion |
  | Gravedad | Critico |
Y se agrega a la lista de codigos encontrados
```

**Escenario 2: Agregar multiples codigos**
```gherkin
DADO que el vehiculo tiene varias fallas
CUANDO agrego codigos: P0201, P0300, P0171
ENTONCES todos se agregan al diagnostico
Y veo resumen de fallas por sistema
```

**Escenario 3: Marcar codigo como resuelto**
```gherkin
DADO que repare la falla P0201
CUANDO marco el codigo como "Resuelto"
ENTONCES el codigo cambia de estado
Y se registra fecha de resolucion
```

**Escenario 4: Buscar codigo en base de datos**
```gherkin
DADO que quiero buscar un codigo
CUANDO escribo "P02"
ENTONCES el sistema sugiere codigos que inician con P02
Y muestra descripcion de cada uno
```

**Escenario 5: Registrar freeze frame**
```gherkin
DADO que el codigo tiene datos congelados
CUANDO registro freeze frame:
  | RPM | 2500 |
  | Temp Motor | 92C |
  | Carga | 65% |
ENTONCES se guarda junto al codigo
```

---

## Codigos DTC Comunes Diesel

| Codigo | Descripcion | Sistema |
|--------|-------------|---------|
| P0087 | Presion riel combustible baja | Inyeccion |
| P0088 | Presion riel combustible alta | Inyeccion |
| P0201-P0208 | Circuito inyector cil 1-8 | Inyeccion |
| P0300 | Multiples cilindros - falla | Motor |
| P0401 | EGR flujo insuficiente | Emision |
| P0404 | EGR rango/rendimiento | Emision |
| P2146 | Inyector grupo A - circuito | Inyeccion |
| P2263 | Turbo - rendimiento | Turbo |

---

## Tareas Tecnicas

**Database:**
- [ ] DB-030: Crear tabla `diagnostics` en schema `service_management`
- [ ] DB-031: Crear tabla `diagnostic_dtc` para codigos
- [ ] DB-032: Crear tabla `dtc_catalog` con codigos conocidos
- [ ] DB-033: Cargar catalogo de codigos DTC diesel

**Backend:**
- [ ] BE-070: Crear DiagnosticEntity
- [ ] BE-071: Crear DiagnosticDtcEntity
- [ ] BE-072: Endpoint POST /api/diagnostics
- [ ] BE-073: Endpoint POST /api/diagnostics/:id/dtc
- [ ] BE-074: Busqueda de codigos en catalogo

**Frontend:**
- [ ] FE-070: Crear DiagnosticForm component
- [ ] FE-071: Crear DtcInput con autocompletado
- [ ] FE-072: Crear DtcList component
- [ ] FE-073: Crear FreezeFrameForm

---

## Dependencias

**Depende de:**
- [ ] MMD-001: Fundamentos
- [ ] MMD-005: Vehiculos (vinculado a vehiculo)

**Bloquea:**
- [ ] US-MMD003-006: Recomendaciones

---

## Definition of Done (DoD)

- [ ] Agregar codigos DTC
- [ ] Busqueda con autocompletado
- [ ] Registro de freeze frame
- [ ] Marcar como resuelto
- [ ] Tests pasando

---

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