# US-MMD003-004: Comparar Resultados vs Referencias

## Metadata

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

---

## Historia de Usuario

**Como** mecanico,
**quiero** comparar automaticamente los resultados de pruebas contra valores de referencia,
**para** determinar rapidamente si un componente esta dentro de especificaciones.

## Descripcion Detallada

El sistema tiene una base de datos de especificaciones por marca y modelo de motor. Al registrar resultados, compara automaticamente y muestra semaforo visual.

---

## Criterios de Aceptacion

**Escenario 1: Comparacion automatica**
```gherkin
DADO que registro prueba de inyector Cummins ISX15
CUANDO ingreso presion de apertura: 2950 PSI
ENTONCES el sistema busca referencia ISX15:
  | Min | Max |
  | 2800 | 3200 |
Y muestra: ✅ OK (dentro de rango)
```

**Escenario 2: Semaforo de estado**
```gherkin
DADO que tengo multiples parametros
CUANDO veo el resumen
ENTONCES cada parametro tiene indicador:
  | Parametro | Valor | Ref | Estado |
  | Presion | 2950 | 2800-3200 | ✅ Verde |
  | Caudal | 58 | 45-55 | ⚠️ Amarillo |
  | Retorno | 35 | 0-20 | ❌ Rojo |
```

**Escenario 3: Valor fuera de rango**
```gherkin
DADO que un valor esta fuera de rango
CUANDO el sistema detecta la desviacion
ENTONCES:
  - Muestra indicador rojo
  - Calcula porcentaje de desviacion: "+75%"
  - Sugiere accion: "Retorno excesivo - revisar sellos"
```

**Escenario 4: Sin referencia disponible**
```gherkin
DADO que no hay referencia para el componente
CUANDO registro el valor
ENTONCES el sistema muestra:
  - Indicador gris "Sin referencia"
  - Permite guardar el valor
  - Sugiere agregar referencia
```

**Escenario 5: Tolerancia configurable**
```gherkin
DADO que un valor esta en zona limite
CUANDO esta a 5% del limite
ENTONCES muestra indicador amarillo "Cerca del limite"
```

---

## Logica de Semaforo

| Estado | Condicion | Color |
|--------|-----------|-------|
| OK | Dentro de rango | Verde |
| Atencion | 90-100% del limite | Amarillo |
| Fuera | Fuera de rango | Rojo |
| Sin ref | No hay especificacion | Gris |

---

## Tareas Tecnicas

**Database:**
- [ ] DB-067: Crear tabla `reference_specs`
- [ ] DB-068: Poblar con especificaciones comunes

**Backend:**
- [ ] BE-133: Servicio de comparacion
- [ ] BE-134: Calcular desviacion porcentual
- [ ] BE-135: Sugerencias automaticas

**Frontend:**
- [ ] FE-134: Crear ComparisonBadge component
- [ ] FE-135: Crear ResultsTable con semaforo
- [ ] FE-136: Tooltip con detalles de referencia

---

## Especificaciones Base (Ejemplo)

```yaml
cummins_isx15:
  injector:
    opening_pressure:
      min: 2800
      max: 3200
      unit: PSI
    return:
      min: 0
      max: 20
      unit: ml/min
    flow:
      min: 45
      max: 55
      unit: ml/100
  pump:
    max_pressure:
      value: 1800
      tolerance: 5%
      unit: PSI
```

---

## Definition of Done (DoD)

- [ ] Comparacion automatica al registrar
- [ ] Semaforo visual
- [ ] Calculo de desviacion
- [ ] Manejo de sin referencia
- [ ] Tests pasando

---

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