|
| 1 | +# Human Rights Impact Assessment (HRIA) — OpenRoute |
| 2 | + |
| 3 | +> **Estado**: borrador en revisión por el equipo. La autoevaluación completa, generada con la herramienta del Programa de las Naciones Unidas para el Desarrollo (PNUD) disponible en <https://hria.eu/#use-cases>, se incorpora a este documento como anexo antes del **29 de mayo de 2026 a las 23:59** (entregable 4 del reglamento del hackathon). |
| 4 | +> |
| 5 | +> Este documento responde al apartado **12. Uso de inteligencia artificial** y al **entregable 4 del apartado 9.2** de los [términos y condiciones del hackathon](../README.md#hackathon). |
| 6 | +
|
| 7 | +--- |
| 8 | + |
| 9 | +## 1. Resumen ejecutivo |
| 10 | + |
| 11 | +OpenRoute es un sistema de optimización de rutas logísticas para PYMEs que combina: |
| 12 | + |
| 13 | +- Un **microservicio Python** (FastAPI + Google OR-Tools) que resuelve un VRP con time windows y capacidades reales. |
| 14 | +- Un **frontend conversacional Next.js** con un **LLM local (Ollama + `llama3.1:8b`)** como copiloto del despachador. |
| 15 | + |
| 16 | +La herramienta del PNUD se aplica al sistema completo, no a cada componente por separado. La evaluación se centra en: |
| 17 | + |
| 18 | +- El uso de IA generativa (LLM) como interfaz operativa. |
| 19 | +- El uso de IA de decisión (OR-Tools) para asignar pedidos a conductores. |
| 20 | +- El tratamiento de datos personales y operativos de PYMEs, clientes finales y trabajadores (conductores). |
| 21 | + |
| 22 | +## 2. Caso de uso evaluado |
| 23 | + |
| 24 | +| Aspecto | Descripción | |
| 25 | +|---|---| |
| 26 | +| **Sector** | Logística de última milla (PYME). | |
| 27 | +| **Dominio del sistema** | Asistente al despachador para planificar rutas, asignar conductores, gestionar averías y comunicar cambios al cliente. | |
| 28 | +| **Decisiones automatizadas** | Orden óptimo de paradas, asignación pedido↔vehículo, diferimiento de pedidos infactibles, reasignación tras una avería. | |
| 29 | +| **Decisión final** | Humana. Todo plan generado por OR-Tools o sugerido por el LLM **requiere aprobación explícita del despachador** antes de ejecutarse en el frontend. | |
| 30 | +| **Datos tratados** | Direcciones de clientes, ventanas horarias, peso de los pedidos, prioridad, identidad del conductor, matrícula del vehículo. **Sin datos especialmente protegidos** (ni salud, ni biometría, ni orientación, ni convicciones). | |
| 31 | +| **Audiencia afectada** | Empleados del despacho (despachador, conductores) y clientes finales que reciben la entrega. | |
| 32 | +| **Tipo de riesgo predominante** | Operacional y de transparencia, no fundamental. | |
| 33 | + |
| 34 | +## 3. Dimensiones evaluadas con la herramienta HRIA del PNUD |
| 35 | + |
| 36 | +La herramienta del PNUD evalúa el impacto del sistema sobre los siguientes derechos humanos. A continuación, anticipamos cómo OpenRoute se posiciona en cada uno (la puntuación numérica final saldrá de la herramienta y se anexará a este documento): |
| 37 | + |
| 38 | +### 3.1 Privacidad y protección de datos (Art. 12 DUDH, RGPD) |
| 39 | + |
| 40 | +- **Riesgo**: bajo. El LLM corre **100% local con Ollama**; los datos de pedidos no se envían a servidores de terceros. |
| 41 | +- **Mitigaciones aplicadas**: |
| 42 | + - Almacenamiento en SQLite local (Prisma), migrable a Postgres del cliente. |
| 43 | + - Caché OSRM/Nominatim local; las direcciones se geocodifican una vez y se cachean. |
| 44 | + - JWT en cookie `httpOnly` con `sameSite=lax`. |
| 45 | +- **Pendiente para producción**: rotación de `JWT_SECRET`, multi-tenant con aislamiento de datos por organización, política de retención. |
| 46 | + |
| 47 | +### 3.2 No discriminación e igualdad (Art. 7 DUDH, AI Act art. 5 y 6) |
| 48 | + |
| 49 | +- **Riesgo**: medio. El motor OR-Tools optimiza por coste/distancia/CO₂; podría sistemáticamente perjudicar barrios periféricos si la matriz de distancias los penaliza. |
| 50 | +- **Mitigaciones aplicadas**: |
| 51 | + - Prioridad del pedido (1–3) influye en el score y permite al despachador imponer "atender primero esta zona". |
| 52 | + - DISJUNCTIONS de OR-Tools reportan los pedidos diferidos, evitando que se descarten en silencio. |
| 53 | + - La heurística baseline ordena por urgencia de ventana, no por valor económico. |
| 54 | +- **Pendiente**: añadir un test específico de equidad geográfica sobre el dataset de demo (¿se reparten las paradas de manera proporcional al volumen de pedidos por zona?). |
| 55 | + |
| 56 | +### 3.3 Transparencia y derecho a una explicación (AI Act art. 13, Art. 19 DUDH) |
| 57 | + |
| 58 | +- **Riesgo**: medio. Los LLMs pueden alucinar y los solvers VRP son opacos por naturaleza. |
| 59 | +- **Mitigaciones aplicadas**: |
| 60 | + - El motor devuelve siempre métricas comparables contra un **baseline manual realista** (km, €, CO₂, retrasos evitados). El usuario ve el "por qué" cuantitativo. |
| 61 | + - Cuando OR-Tools no encuentra solución factible, el sistema **avisa explícitamente** (`used_fallback=true`) y el system prompt obliga al chatbot a comunicarlo. |
| 62 | + - El módulo `src/ai_assistant.py` genera informes XAI en lenguaje natural sobre las decisiones del solver. |
| 63 | + - **Auditoría completa**: cada turno del chatbot queda persistido (`ChatSession` + `ChatMessage` con `toolCalls`). Reproducibilidad asegurada. |
| 64 | +- **Pendiente**: exponer el informe XAI también en la UI del frontend, no solo en la consola del backend. |
| 65 | + |
| 66 | +### 3.4 Trabajo digno (Art. 23 DUDH) |
| 67 | + |
| 68 | +- **Riesgo**: medio. La asignación automática de rutas puede degradar las condiciones del conductor (jornadas más largas, presión por ETAs ajustadas). |
| 69 | +- **Mitigaciones aplicadas**: |
| 70 | + - Las **horas de inicio/fin de jornada** son un parámetro duro del vehículo (`hora_inicio`, `hora_fin`); OR-Tools no asigna trabajo fuera de esas horas. |
| 71 | + - La capacidad en kg también es un límite duro; no se carga al conductor por encima de lo legal. |
| 72 | + - El conductor puede **reportar incidencias y averías** desde el chat; el sistema reoptimiza sin penalizarle por la incidencia. |
| 73 | +- **Pendiente**: incluir tiempo de descanso obligatorio (>4h conducción → 30 min) como restricción del solver. |
| 74 | + |
| 75 | +### 3.5 Seguridad personal (Art. 3 DUDH) |
| 76 | + |
| 77 | +- **Riesgo**: bajo. El sistema **no genera rutas en tiempo real ni dicta cómo conducir**, sólo el orden de paradas. |
| 78 | +- **Mitigaciones aplicadas**: |
| 79 | + - Distancias y tiempos por OSRM real, no por línea recta — la ETA es realista y no presiona al conductor a saltarse normas. |
| 80 | + |
| 81 | +### 3.6 Acceso a un recurso efectivo (Art. 8 DUDH) |
| 82 | + |
| 83 | +- **Riesgo**: bajo (sistema de soporte, decisión final humana). |
| 84 | +- **Mitigaciones aplicadas**: |
| 85 | + - Toda acción modificable por el chatbot (asignar ruta, marcar entregada, reprogramar) queda registrada en la base de datos con `userId` y timestamp. |
| 86 | + - El cliente final puede reclamar al despachador, que tiene auditoría completa de la asignación. |
| 87 | + |
| 88 | +## 4. Cumplimiento normativo de referencia |
| 89 | + |
| 90 | +- **Reglamento (UE) 2024/1689 (AI Act)** — OpenRoute encaja en *riesgo limitado / mínimo*: es un sistema de soporte a la decisión humana en logística, no listado entre los usos de alto riesgo del Anexo III. |
| 91 | +- **Reglamento (UE) 2016/679 (RGPD)** — base de tratamiento: interés legítimo de la PYME para gestionar entregas; pendiente añadir política de privacidad y registro de actividades de tratamiento al desplegar. |
| 92 | +- **Directiva (UE) 2019/1937 (whistleblowing)** — fuera del alcance del MVP. |
| 93 | + |
| 94 | +## 5. Roadmap de mejoras priorizadas tras la HRIA |
| 95 | + |
| 96 | +Las mejoras que la herramienta del PNUD recomiende se incorporarán a [`docs/ROADMAP.md`](ROADMAP.md) en la sección "Corto plazo". Las que ya tenemos en mente: |
| 97 | + |
| 98 | +1. **Test de equidad geográfica** sobre el dataset de demo: ningún barrio del bbox queda sistemáticamente postergado. |
| 99 | +2. **Descansos obligatorios** del conductor como restricción dura del solver. |
| 100 | +3. **Informe XAI visible en la UI** del frontend, no solo en logs del backend. |
| 101 | +4. **Política de privacidad** explícita al instalar OpenRoute en una PYME. |
| 102 | +5. **Multi-tenant** con aislamiento de datos por organización. |
| 103 | +6. **Retención**: los `ChatMessage` con datos personales se anonimizan tras N días configurables. |
| 104 | + |
| 105 | +## 6. Anexos |
| 106 | + |
| 107 | +- **A. Resultado completo de la herramienta HRIA del PNUD** (https://hria.eu/#use-cases) — pendiente de adjuntar antes del 29-may-2026 23:59. |
| 108 | +- **B. Referencias normativas** — DUDH 1948, RGPD, AI Act, Ley 15/2022. |
| 109 | +- **C. Contacto del equipo** — ver [README.md](../README.md#contacto). |
| 110 | + |
| 111 | +--- |
| 112 | + |
| 113 | +*Última actualización del borrador: 2026-05-27. Versión final con el resultado de la herramienta del PNUD se incorporará antes del 29-may-2026 23:59 (entregable 4 del reglamento).* |
0 commit comments