# TECH_DEBT.md — Deuda técnica registrada

> Ítems identificados durante el desarrollo. Cada ítem documenta qué falta, por qué
> no se hizo ahora, y qué trigger habilitaría su resolución.

---

## [TECH-DEBT-001] Ranking widget para 6.2

- **Estado:** 6.2 es actualmente `multiple_choice` max_select=3. El widget muestra
  frecuencia simple (top 8).
- **Deuda:** cuando el tipo pase a `ranking` con JSONB `{rank1, rank2, rank3}`, el
  widget debe reescribirse para mostrar ponderación por posición.
- **Trigger:** decisión del director sobre el tipo de 6.2 en próxima versión del
  instrumento (anotada en SEED_SPEC.md § Decisiones pendientes).

---

## [TECH-DEBT-002] KPI NPS Cuidador

- **Estado:** el instrumento actual no tiene pregunta NPS. El KPI fue eliminado del
  dashboard en Etapa 2E.
- **Para implementar:** agregar en próxima versión del instrumento:
  "En una escala de 0 a 10, ¿qué tan probable es que recomiendes esta empresa a otra
  persona cuidadora?"
- **Trigger:** decisión de incluir NPS en el instrumento v2.

---

## [TECH-DEBT-003] Brecha de políticas (oferta vs. demanda)

- **Estado:** el instrumento captura solo demanda (6.2 = apoyos que ayudarían).
  No captura qué políticas la empresa ya ofrece. W6 muestra solo demanda.
- **Para implementar:** agregar en próxima versión del instrumento:
  "¿Qué apoyos para el cuidado ofrece tu empresa hoy?" (multi-select con las mismas
  opciones de 6.2 + "Ninguno" + "No lo sé").
- **Trigger:** decisión de agregar la pregunta de oferta al instrumento.

---

## [TECH-DEBT-004] Intención directa de salida laboral

- **Estado:** el instrumento no pregunta directamente por intención de dejar el
  empleo. W8 usa indicador compuesto (4.3 + 5.1 + 5.2) renombrado a "Saturación".
- **Para implementar:** agregar en próxima versión:
  "En los últimos 6 meses, ¿pensaste en dejar este empleo por razones relacionadas
  al cuidado?" (Sí/Frecuentemente · Sí/A veces · No · Prefiero no decir).
- **Trigger:** validación metodológica de que el indicador compuesto no es suficiente
  para medir intención de salida.

---

## [TECH-DEBT-005] qi_city / qi_country — migración pendiente

- **Estado:** A1 (Departamento) y A2 (Ciudad) se guardan en `answers`. Las columnas
  `qi_city` y `qi_country` en `responses` son NULL. Sprint 3 las necesita para
  segmentación avanzada.
- **Para implementar:** migration futura que agregue extracción de A1/A2 en el insert
  y extienda la whitelist de `agg_segment`.
- **Trigger:** inicio de Sprint 3 (dashboard avanzado con filtros de ciudad).

---

## [TECH-DEBT-006] Ranking widget para 2.1

- **Estado:** Etapa 3I2 (Cambio 5) cambió 2.1 ("¿Quién es el/la responsable principal
  del cuidado?") de `single_choice` a `multiple_choice`. Permite selección múltiple
  pero sin orden de prioridad — pierde la noción de "responsable principal" cuando
  el respondente marca más de una opción.
- **Deuda:** implementar widget de ranking para 2.1 con el orden:
  Principal cuidador soy yo > secundario instituto > principal pagado > secundario
  familiar (mismo patrón que TECH-DEBT-001 para 6.2).
- **Trigger:** decisión del director sobre el tipo de 2.1 en próxima versión del
  instrumento.

---

## [TECH-DEBT-008] /admin/responses sin autenticación

- **Estado:** ABIERTO.
- **Descripción:** la vista de control `/admin/responses` no tiene auth. Por diseño
  explícito, excluye preguntas `is_sensitive=true` (14 preguntas de salud/
  discapacidad) y `text_long`. Para mostrar esas preguntas en la vista, primero
  implementar un gate de autenticación para staff (Basic Auth con env var como
  mínimo viable).
- **Impacto actual:** ninguno en producción — la URL no está publicada.
- **Bloqueante para:** ampliar visibilidad de datos en la vista de control.
