Saltar a contenido

US-037 — Catálogo de niveles corporativos

Detalle de la historia

Historia

Como administrador de FleteChat, quiero configurar los niveles corporativos (Silver, Gold, Premium u otros) y asociar a cada uno su lista de precios, para diferenciar condiciones comerciales por tipo de cliente sin tocar código ni catálogos operativos cada vez.

Persona de usuario

Aplica únicamente a los administradores de FleteChat (rol admin). No aplica a operator ni a price_manager: operator asigna niveles a clientes (ver historia de asignación de nivel) y price_manager mantiene las listas de precios (ver Epic 8), pero la definición del catálogo de niveles es responsabilidad del admin.

Contexto de negocio

FleteChat atiende desde clientes que llegan por WhatsApp por primera vez hasta cuentas corporativas con contratos anuales. Cada segmento tiene condiciones comerciales distintas: lista de precios, descuentos implícitos, disponibilidad de servicios. Nombrar estos segmentos "Silver", "Gold", "Premium" (u otros que la operación comercial defina) permite que el resto del sistema —motor de cotización, reportes, alertas— razone sobre "nivel corporativo" como un concepto de negocio y no sobre reglas ad-hoc dispersas.

El catálogo de niveles es estable: pocos niveles, cambios infrecuentes (típicamente alta al inicio del proyecto y altas puntuales cuando se abre un nuevo segmento comercial). Por eso vive en el backoffice bajo control del admin, no como parámetro conversacional ni modificable por el cliente.

Criterios de aceptación

Acceso y campos

  1. El backoffice ofrece una sección "Niveles corporativos" visible únicamente al rol admin; operator y price_manager reciben 403 si intentan acceder.
  2. Cada nivel tiene los siguientes campos: nombre (texto corto único), descripción (texto libre), lista de precios asociada (referencia a una lista definida en Epic 8), estado activo/inactivo y timestamps de creación y última modificación.
  3. El nombre es único dentro del catálogo; al intentar crear o renombrar a un nombre ya usado, la UI rechaza con mensaje claro.

Ciclo de vida

  1. El admin puede crear, editar y desactivar niveles desde la sección. No hay borrado físico: desactivar conserva el registro y el historial asociado (ver PR-153).
  2. Un nivel desactivado no se puede asignar a nuevos clientes (ver historia de asignación de nivel), pero sigue siendo visible en asignaciones históricas y reportes con la etiqueta "desactivado".
  3. Cambiar la lista de precios de un nivel activo afecta únicamente a cotizaciones emitidas a partir de ese cambio. Cotizaciones ya emitidas mantienen la lista que tenían en su snapshot (ver historia de vigencia y expiración de cotizaciones).

Audit log

  1. Cada alta, edición, desactivación y reactivación queda registrada en el audit log con actor, timestamp y diff de campos modificados.

Edge cases

  • Admin desactiva un nivel con asignaciones activas. La desactivación queda registrada; las asignaciones activas siguen funcionando hasta su fecha de vencimiento; no se pueden crear nuevas asignaciones a ese nivel. La UI avisa al admin antes de confirmar.
  • Admin intenta crear un nivel con el nombre de uno desactivado. El sistema rechaza si el nombre ya está en uso (activo o desactivado) para preservar trazabilidad histórica. El admin debe elegir un nombre distinto o reactivar el existente.
  • Admin cambia la lista de precios de un nivel con muchas asignaciones activas. El cambio se aplica a cotizaciones nuevas; las ya emitidas conservan su precio. La UI muestra un resumen de impacto (cuántas asignaciones activas usan el nivel) antes de confirmar el cambio.
  • Admin reactiva un nivel previamente desactivado. Vuelve a estar disponible para asignar; los registros históricos siguen intactos.

Tamaño, prioridad y tipo

  • Tamaño: S
  • Prioridad: P1 — habilita todo el Epic 7; sin catálogo de niveles no hay asignación de niveles ni lógica corporativa en cotización.
  • Tipo: feature

Premisas

La historia está redactada bajo las siguientes premisas. Si alguna cambia, la historia debe revisarse y ajustarse en consecuencia. Todas deben ser confirmadas por el cliente antes de cerrar la historia.

  • PR-153 — Soft delete de niveles corporativos. Un nivel nunca se borra físicamente: se desactiva. El registro y los vínculos históricos (asignaciones, cotizaciones, embarques) se preservan para auditoría y reportes.
  • PR-154 — Gestión sólo por admin. El catálogo de niveles corporativos es mantenido exclusivamente por el rol admin. Operator y price_manager no tienen acceso de escritura ni de lectura al catálogo.
  • PR-155 — Nivel apunta a una lista de precios. Cada nivel está asociado a exactamente una lista de precios definida en el Epic 8. Un cambio de lista afecta sólo a cotizaciones emitidas desde ese momento; las cotizaciones ya emitidas mantienen la lista de su snapshot.

Refinamiento y Definition of Ready

Notas

Fecha Participantes Acuerdo / Nota
2026-04-19 Kaeus Versión inicial.
2026-04-19 Kaeus Aprobación interna: pase a 🔵 Refinada.

Checklist

  • ✅ Historia escrita en formato Como / Quiero / Para
  • ✅ Persona de usuario identificada
  • ✅ Contexto de negocio documentado
  • ✅ Criterios de aceptación observables y pass/fail
  • ✅ Edge cases relevantes listados
  • ✅ Tamaño y prioridad asignados
  • ⬜ Premisas PR-153 a PR-155 confirmadas por el cliente
  • ⬜ Reglas de negocio aplicables aprobadas
  • ⬜ Requerimientos funcionales aplicables aprobados
  • ⬜ Historia aprobada formalmente por el cliente