← Documentos

Matriz de trazabilidad

Matriz de Trazabilidad — Requerimientos a Implementación

Documento normativo que cruza cada requerimiento del Caso Práctico 6 (SOFTWARE) con su modelado UML, su componente arquitectónico, las tablas de base de datos involucradas, los endpoints o rutas que lo realizan, las pantallas que lo exponen y los tests que lo cubren.

Generado: 2026-05-05. Convenciones: los identificadores siguen el patrón R-FUNC-NNN para requerimientos funcionales, R-NF-NNN para no funcionales, R-ARQ-NNN para arquitectónicos, R-BD-NNN para diseño de base de datos, R-UX-NNN para experiencia e interfaz, R-MET-NNN para metodología de desarrollo y R-DEP-NNN para pruebas y despliegue. El estado se reporta como implementado, parcial o pendiente, alineado con case-study-validation-report.md.


1. Requerimientos funcionales (R-FUNC)

ID Descripción Caso de uso UML Componente UML Tabla(s) BD Endpoint / Ruta Pantalla(s) UI Test(s) Estado
R-FUNC-001 Registro de cliente con email, contraseña, teléfono y verificación. uml-use-case-cliente-prestador.puml mobile-client, web (route handlers) auth.users, usuarios, user_credentials POST /api/v1/mobile/register mobile-client/(auth)/register packages/validations/src/__tests__/mobile-register.test.ts, apps/web/src/__tests__/integration/register.test.ts implementado
R-FUNC-002 Registro de prestador exclusivamente vía código de invitación (con CURP y mayoría de edad). uml-use-case-cliente-prestador.puml, uml-sequence-onboarding-prestador.puml mobile-provider, web usuarios, auth.users, invitaciones_prestadores, documentos_prestador POST /api/v1/mobile/register (rama prestador), trigger handle_new_auth_user mobile-provider/(auth)/register packages/validations/src/__tests__/mobile-register.test.ts implementado
R-FUNC-003 Inicio de sesión por canal (cliente, prestador, admin) con JWT. uml-sequence-login-rbac-dashboard.puml web, packages/auth usuarios, usuarios_admin, user_credentials POST /api/v1/auth/login, POST /api/v1/mobile/login web/(auth)/login, mobile-{client,provider}/(auth)/login apps/web/src/__tests__/integration/auth.test.ts, packages/validations/src/__tests__/auth.test.ts implementado
R-FUNC-004 Recuperación de contraseña con token efímero por correo. uml-use-case-cliente-prestador.puml web, Resend password_reset_tokens, usuarios, user_credentials POST /api/v1/auth/password/forgot, POST /api/v1/auth/password/reset web/(auth)/forgot, web/(auth)/reset packages/validations/src/__tests__/auth.test.ts implementado
R-FUNC-005 Catálogo navegable de categorías y servicios. uml-use-case-overview.puml, uml-class-catalogo.puml mobile-client, web categorias_servicio, servicios GET /api/v1/mobile/services, GET /api/services mobile-client/(tabs)/home, web/dashboard/servicios apps/web/src/__tests__/integration/services.test.ts implementado
R-FUNC-006 Solicitud de servicio por el cliente (selección, dirección, fecha, método de pago). uml-use-case-cliente-prestador.puml, uml-sequence-cliente-solicita-orden.puml mobile-client, web ordenes_servicio, direcciones, cupones, pagos POST /api/v1/mobile/orders mobile-client/service-request packages/validations/src/__tests__/mobile-orders.test.ts, apps/web/src/__tests__/integration/orders.test.ts implementado
R-FUNC-007 Asignación automática de prestador disponible al crear la orden. uml-activity-asignacion-auto-orden.puml Postgres functions ordenes_servicio, servicios_prestador, historial_estatus_orden, usuarios función asignar_prestador_auto, trigger trg_asignar_prestador_auto_after_insert indirecto en mobile-client/order-tracking covered by integration apps/web/src/__tests__/integration/orders.test.ts (creación dispara trigger) parcial (existe trigger, sin servicio aplicativo independiente)
R-FUNC-008 Asignación manual / reasignación por administrador. uml-use-case-admin-soporte.puml web ordenes_servicio, historial_estatus_orden PATCH /api/orders/[id] web/dashboard/ordenes/[id] — implementado
R-FUNC-009 Seguimiento de la orden por cliente y prestador (timeline + estatus). uml-state-orden.puml mobile-client, mobile-provider ordenes_servicio, historial_estatus_orden GET /api/v1/mobile/orders/[id] mobile-client/order-tracking, mobile-provider/job-active — implementado
R-FUNC-010 Cierre de orden con doble PIN (cliente y prestador). uml-state-orden.puml mobile-provider, Postgres functions ordenes_servicio función cerrar_orden_con_pines(uuid, text, text) mobile-provider/job-active — implementado
R-FUNC-011 Subida de evidencias fotográficas por el prestador. uml-use-case-cliente-prestador.puml mobile-provider evidencias_orden POST /api/v1/mobile/provider/jobs/[id]/evidencias mobile-provider/job-active — implementado
R-FUNC-012 Cargo extra propuesto por prestador y resuelto por cliente. uml-state-cargo-extra.puml mobile-provider, mobile-client, Postgres functions cargos_extra_orden, ordenes_servicio POST /api/v1/mobile/provider/jobs/[id]/cargos-extra, función resolver_cargo_extra mobile-provider/job-active, mobile-client/order-tracking — implementado
R-FUNC-013 Calificación bidireccional al cierre de la orden (1–5 estrellas). uml-use-case-cliente-prestador.puml mobile-client, mobile-provider calificaciones, ordenes_servicio POST /api/v1/mobile/ratings mobile-client/order-rating, mobile-provider/reviews — implementado
R-FUNC-014 Procesamiento de pago del cliente con conciliación a prestador (split). uml-sequence-cliente-paga-orden.puml, uml-activity-procesamiento-pago-facturacion.puml web pagos, transacciones_prestador POST /api/v1/mobile/orders/[id]/pay (UI mockup) mobile-client/payment — parcial (UI mockup; gateway externo Stripe/Conekta no integrado por alcance)
R-FUNC-015 Aplicación de cupón con validación de vigencia y tope. uml-use-case-cliente-prestador.puml web cupones, ordenes_servicio POST /api/v1/mobile/orders (rama cupón) mobile-client/service-request — implementado
R-FUNC-016 Generación de cortes de pago quincenales al prestador. uml-activity-corte-pago-quincenal.puml, uml-state-corte-pago.puml web, cron cortes_pago, transacciones_prestador GET /api/payouts, POST /api/payouts/run web/dashboard/cortes — implementado
R-FUNC-017 Emisión de facturas CFDI asociadas a orden o corte. uml-state-factura.puml web, PAC externo facturas POST /api/facturas web/dashboard/facturas — implementado
R-FUNC-018 Solicitud y aprobación de reembolsos con segregación de funciones (SoD). uml-state-reembolso.puml, uml-sequence-reembolso-sod.puml, uml-activity-aprobacion-reembolso-sod.puml web reembolsos, pagos, tickets_soporte POST /api/refunds, PATCH /api/refunds/[id] web/dashboard/reembolsos — implementado
R-FUNC-019 Apertura, mensajería y cierre de tickets de soporte. uml-use-case-admin-soporte.puml, uml-state-ticket.puml web, mobile-client tickets_soporte, mensajes_ticket POST /api/tickets, GET /api/tickets/[id] web/dashboard/soporte, mobile-client/help — implementado
R-FUNC-020 Escalamiento ITIL L1 → L2 → L3 con hipótesis y KB consultados. uml-sequence-ticket-escalacion-l1-l2-l3.puml, uml-activity-ciclo-ticket-itsm-sla.puml web tickets_soporte, escalation_log_ticket, kb_articles POST /api/tickets/[id]/escalate web/dashboard/soporte/tickets/[id] — implementado
R-FUNC-021 Base de conocimiento (KB) con búsqueda multilenguaje y métricas de utilidad. uml-class-soporte.puml web, mobile-client kb_articles, kb_article_history, kb_views GET /api/kb/search, POST /api/kb/[id]/views web/dashboard/soporte/kb, mobile-client/help/kb — implementado
R-FUNC-022 Encuesta CSAT/CES post-cierre de ticket con caducidad de 7 días. uml-class-soporte.puml web, mobile-client csat_surveys GET /api/csat/[token], POST /api/csat/[token] mobile-client/help/csat — implementado
R-FUNC-023 Major Incident Management (declaración, updates, cierre con PIR). uml-state-major-incident.puml web major_incidents, major_incident_updates, ticket_major_incident_link POST /api/mim, PATCH /api/mim/[id] web/dashboard/soporte/mim — implementado
R-FUNC-024 Plantillas de respuesta predefinidas (canned responses) con variables. uml-class-soporte.puml web canned_responses, mensajes_ticket GET /api/canned-responses, POST /api/tickets/[id]/messages web/dashboard/soporte/canned-responses — implementado
R-FUNC-025 Acceso break-glass de admin a perfil de usuario con motivo y caducidad. uml-sequence-break-glass-pin.puml web, Postgres functions pins_soporte, accesos_perfil_usuario, pins_soporte_cliente, casos_soporte_abiertos, logs_auditoria POST /api/admin/access/open, función abrir_acceso_perfil web/dashboard/compliance/break-glass — implementado
R-FUNC-026 Revisión y aprobación/rechazo de documentos de prestador. uml-state-documento-prestador.puml, uml-activity-onboarding-prestador.puml web documentos_prestador, usuarios PATCH /api/dashboard/prestadores/[id]/documentos/[doc] web/dashboard/operaciones/prestadores/[id] — implementado
R-FUNC-027 Generación, validación y revocación de códigos de invitación. uml-state-invitacion-prestador.puml web, Postgres functions invitaciones_prestadores POST /api/dashboard/invitaciones, funciones generar_codigo_invitacion, validar_codigo_invitacion, consumir_codigo_invitacion web/dashboard/operaciones/invitaciones — implementado
R-FUNC-028 Notificaciones por canal (push, sms, email) y categoría. uml-class-overview.puml web, Resend notificaciones GET /api/notifications, PATCH /api/notifications/[id] mobile-{client,provider}/(tabs)/notifications — implementado
R-FUNC-029 Disponibilidad horaria del prestador por día de la semana y zona. uml-class-onboarding.puml mobile-provider, web disponibilidad_prestador POST /api/v1/mobile/provider/availability mobile-provider/(tabs)/availability packages/validations/src/__tests__/mobile-provider.test.ts implementado
R-FUNC-030 Workspaces persona-based en backoffice (7 personas: soporte, operaciones, finanzas, RRHH, marketing, compliance, mi). uml-use-case-finanzas-marketing-rrhh.puml, uml-use-case-admin-soporte.puml web usuarios_admin, roles_admin, permisos, roles_permisos GET /dashboard/{persona}/... web/dashboard/{soporte,operaciones,finanzas,rrhh,marketing,compliance,mi} — implementado
R-FUNC-031 Listado de jobs disponibles para el prestador con paginación cursor. uml-use-case-cliente-prestador.puml mobile-provider, web ordenes_servicio GET /api/v1/mobile/provider/jobs mobile-provider/(tabs)/jobs apps/web/src/__tests__/integration/provider-jobs.test.ts implementado
R-FUNC-032 Vista detallada de job para prestador con aceptación y entrega. uml-sequence-prestador-acepta-job.puml mobile-provider, web ordenes_servicio, evidencias_orden, cargos_extra_orden POST /api/v1/mobile/provider/jobs/[id]/accept, POST /api/v1/mobile/provider/jobs/[id]/start mobile-provider/job-detail, mobile-provider/job-active — implementado

2. Requerimientos no funcionales (R-NF)

ID Descripción Caso de uso UML Componente UML Tabla(s) BD Endpoint / Ruta Pantalla(s) UI Test(s) Estado
R-NF-001 Autenticación basada en JWT firmado con secreto ≥32 caracteres. uml-sequence-login-rbac-dashboard.puml web, packages/auth — middleware apps/web/src/middleware.ts, helper lib/auth/guards.ts — apps/web/src/__tests__/integration/auth.test.ts implementado
R-NF-002 Hash bcrypt (cost 8) para contraseñas locales. — Postgres extensions user_credentials función crypt()/gen_salt('bf', 8) — — implementado
R-NF-003 RBAC granular con permisos atómicos por módulo y rol asignable. uml-sequence-login-rbac-dashboard.puml web, Postgres helpers roles_admin, permisos, roles_permisos, usuarios_admin helpers es_admin(), tiene_permiso(_clave) — — implementado
R-NF-004 Zero Trust: rol lector_basico por defecto, expansión por permiso. uml-sequence-break-glass-pin.puml web, Postgres helpers roles_admin, permisos, roles_permisos policy RLS usuarios_select_admin_scoped — — implementado
R-NF-005 Row Level Security con políticas por persona (cliente/prestador/admin). — Postgres RLS 47 tablas con RLS habilitado y 70+ policies — — — implementado
R-NF-006 Auditoría centralizada con correlación de caso/ticket. — web, Postgres logs_auditoria función logAccion(...) en mutaciones web/dashboard/compliance/audit — implementado
R-NF-007 Validación de entrada con Zod compartida cliente/servidor. — packages/validations — importadores en handlers y formularios — packages/validations/src/__tests__/*.test.ts implementado
R-NF-008 Rendimiento: paginación cursor-based en endpoints de lista. — web — helper apps/web/src/lib/api/cursor.ts, GET /api/v1/mobile/orders, GET /api/v1/mobile/provider/jobs listas paginadas apps/web/src/lib/api/__tests__/cursor.test.ts implementado
R-NF-009 Índices estratégicos (incluyendo parciales) para consultas frecuentes. — Postgres 52+ índices definidos en schema-consolidated.sql:849-975 — — — implementado
R-NF-010 Pool de conexiones PG con max=10, idleTimeoutMillis=30000. — packages/database — packages/database/src/client.ts:7-12 — — implementado
R-NF-011 SLA por tipo+prioridad+categoría con calendario laboral y festivos. uml-activity-ciclo-ticket-itsm-sla.puml web, Postgres sla_calendars, sla_policies, ticket_sla_state trigger trg_ticket_sla_bootstrap, jobs cron web/dashboard/soporte/sla — implementado
R-NF-012 Escalabilidad horizontal en plataforma serverless (Neon). uml-deployment-distribution.puml, uml-deployment-runtime.puml Neon Postgres — docs/architecture/neon-branching.md — — implementado
R-NF-013 Aislamiento de credenciales: apps móviles nunca importan @expressmx/database. uml-component-diagram.puml mobile-{client,provider}, web — apps/mobile-* no importa el paquete — — implementado
R-NF-014 Interfaz sin modales (Popover/Dropdown/Sheet en su lugar). — web — componentes en apps/web/src/components/ui/ — — implementado
R-NF-015 Iconografía exclusiva Phosphor en web y móvil. — web, mobile-{client,provider} — @phosphor-icons/react, phosphor-react-native — — implementado
R-NF-016 Versionado de API con redirect 308 desde rutas legacy. — web — next.config.ts (redirect /api/mobile/:path*) — — implementado
R-NF-017 Manejo unificado de errores con AppError y mapping a HTTP. — web — apps/web/src/lib/errors/http-errors.ts, lib/api/handler.ts — — implementado
R-NF-018 Migrations runner idempotente con sha256 checksum. — packages/database _migrations packages/database/src/migrations/run.ts — — implementado
R-NF-019 Branching de Neon (production, dev, preview) y costos previstos. — Neon — docs/architecture/neon-branching.md — — implementado
R-NF-020 Generación de OpenAPI exportada (openapi.json). — web — apps/web/scripts/openapi:gen, apps/web/openapi.json — — implementado

3. Requerimientos arquitectónicos (R-ARQ)

ID Descripción Caso de uso UML Componente UML Tabla(s) BD Endpoint / Ruta Pantalla(s) UI Test(s) Estado
R-ARQ-001 Monolito modular en monorepo pnpm + Turbo. — uml-package-diagram.puml, uml-component-diagram.puml — pnpm-workspace.yaml, turbo.json — — implementado
R-ARQ-002 Tres frontends (web admin, mobile-client, mobile-provider) sobre un único backend Next.js. uml-component-diagram.puml web, mobile-client, mobile-provider — apps/{web,mobile-client,mobile-provider} — — implementado
R-ARQ-003 Patrón dual de API: legacy /api/* + versionado /api/v1/* con redirect 308. — web — apps/web/src/app/api/**, next.config.ts — — implementado
R-ARQ-004 Wrapper defineEndpoint para tag, auth, schemas y normalización. — web — apps/web/src/lib/api/handler.ts — — implementado
R-ARQ-005 Despliegue Vercel + Neon + Resend + Expo EAS. uml-deployment-diagram.puml, uml-deployment-distribution.puml, uml-deployment-runtime.puml Vercel, Neon, Resend, Expo EAS — docs/architecture/deployment.md — — implementado
R-ARQ-006 Diagramas UML del sistema (paquetes, clases, componentes, despliegue, casos de uso, secuencia, actividad y estado). uml-class-diagram.puml, uml-package-diagram.puml, demás todos — docs/architecture/uml-*.puml (≈ 40 archivos) — — implementado
R-ARQ-007 Diagrama ER visual del esquema de base de datos. — Postgres — docs/architecture/database-er.md, database-er-conceptual.md, database-er-chen.puml — — implementado

4. Requerimientos de base de datos (R-BD)

ID Descripción Caso de uso UML Componente UML Tabla(s) BD Endpoint / Ruta Pantalla(s) UI Test(s) Estado
R-BD-001 49+ tablas organizadas en 9 dominios. uml-class-diagram.puml, módulos uml-class-{identidad,catalogo,onboarding,operacion,finanzas,soporte}.puml Postgres 49 tablas en schema-consolidated.sql — — — implementado
R-BD-002 Integridad referencial con FKs y políticas explícitas (CASCADE/RESTRICT/SET NULL). — Postgres 87+ FKs declaradas — — — implementado
R-BD-003 CHECK constraints semánticos (CURP regex, score 1–5, hipótesis ≥20 chars, monto>0, etc.). — Postgres 21+ CHECK — — — implementado
R-BD-004 UNIQUE constraints (email, curp, slug, codigo, orden+calificador, ticket_id en CSAT). — Postgres 12+ UNIQUE — — — implementado
R-BD-005 Tipos enumerados (28 enums) para discriminadores estables. — Postgres enums declarados en schema-consolidated.sql:31-90 — — — implementado
R-BD-006 Triggers operativos (asignación auto, generación PIN, SLA bootstrap, KB versionado, MIM checks, updated_at). — Postgres múltiples trigger declarations en schema-consolidated.sql:1563-1633 — — implementado
R-BD-007 Funciones SECURITY DEFINER para operaciones críticas (cierre con PIN, resolución de cargo extra, break-glass). uml-sequence-break-glass-pin.puml Postgres varias cerrar_orden_con_pines, resolver_cargo_extra, abrir_acceso_perfil, rotar_pin_soporte, generar_codigo_invitacion — — implementado
R-BD-008 Cumplimiento 3NF en núcleo transaccional y BCNF en asociativas. — Postgres todas — — — implementado (ver normalization-analysis.md)
R-BD-009 Diccionario de datos formal con descripción semántica por columna. — Postgres todas — — — implementado (ver data-dictionary.md)

5. Requerimientos UX/UI (R-UX)

ID Descripción Caso de uso UML Componente UML Tabla(s) BD Endpoint / Ruta Pantalla(s) UI Test(s) Estado
R-UX-001 shadcn/ui (11 primitivos) como sistema base en web. — web — apps/web/src/components/ui/ — — implementado
R-UX-002 Doctrina modalzmodalzmodalz: 5 alternativas obligatorias antes de modal. — web — componentes Popover, Sheet, DropdownMenu — — implementado
R-UX-003 Workspaces persona-based con WorkspaceShell, WorkQueue, ItemForm, ContextSidebar. — web — apps/web/src/components/workspace/* 7 layouts de workspace — implementado
R-UX-004 Color por módulo con border-l-4 y 9 vars HSL. — web — apps/web/src/app/globals.css, prop accent en WorkspaceShell 7 layouts — implementado
R-UX-005 Breadcrumbs server-component en rutas de detalle. — web — apps/web/src/components/workspace/workspace-breadcrumbs.tsx 27 páginas detalle — implementado
R-UX-006 Steppers Goal-Gradient en flujos multi-paso del móvil. — mobile-{client,provider} — components/stepper.tsx (uno por app) service-request, register prestador, job-active — implementado
R-UX-007 Iconografía Phosphor exclusiva. — web, mobile-* — imports @phosphor-icons/* — — implementado
R-UX-008 Border-radius bienvenido en superficies (md), paneles (lg/xl), avatares (full). — web, mobile-* — clases rounded-* en design system — — implementado

6. Requerimientos de metodología (R-MET)

ID Descripción Caso de uso UML Componente UML Tabla(s) BD Endpoint / Ruta Pantalla(s) UI Test(s) Estado
R-MET-001 Gestión iterativa basada en olas paralelas (campañas Citadel/Fleet). — — — .planning/research/case-study-validation-report.md — — parcial (narrativa redactada por el equipo de proyecto)
R-MET-002 Documentación viva (memoria persistente y skills) que evita reinventar decisiones. — — — ~/.claude/projects/expressmx/memory/MEMORY.md — — implementado
R-MET-003 Trazabilidad explícita entre requerimientos, modelado y código. — — — este documento — — implementado

7. Requerimientos de pruebas y despliegue (R-DEP)

ID Descripción Caso de uso UML Componente UML Tabla(s) BD Endpoint / Ruta Pantalla(s) UI Test(s) Estado
R-DEP-001 Pruebas unitarias con Vitest 4.1.5 en packages/validations. — packages/validations — — — 5 archivos __tests__ implementado
R-DEP-002 Pruebas de integración con base PG real para endpoints v1. — web base efímera de tests /api/v1/auth/*, /api/v1/mobile/* — 5 archivos __tests__/integration implementado
R-DEP-003 Pruebas E2E con Playwright (login admin, dashboard, api health). — web — apps/web/playwright.config.ts, apps/web/e2e/*.spec.ts — 7 specs implementado
R-DEP-004 CI con GitHub Actions: jobs quality, test, build (Postgres 16 service). — — — .github/workflows/ci.yml — — implementado
R-DEP-005 Migrations runner versionado con tabla _migrations. — packages/database _migrations packages/database/src/migrations/run.ts — — implementado
R-DEP-006 Estrategia de branching de Neon documentada (production, dev, preview). — Neon — docs/architecture/neon-branching.md — — implementado
R-DEP-007 Diagrama de despliegue (Vercel + Neon + Resend + EAS). uml-deployment-diagram.puml, uml-deployment-distribution.puml, uml-deployment-runtime.puml todos — docs/architecture/deployment.md — — implementado
R-DEP-008 Activación del job E2E en CI condicional a seed admin determinístico. — — — gate if: false en ci.yml — — pendiente
R-DEP-009 Integración con gateway externo de pagos (Stripe/Conekta). uml-sequence-cliente-paga-orden.puml — pagos, transacciones_prestador, facturas POST /api/v1/mobile/orders/[id]/pay mobile-client/payment — pendiente (fuera de alcance del caso)

8. Resumen de cobertura

Los seis problemas del Caso Práctico SOFTWARE 6 están cubiertos:

  1. Requerimientos (funcionales y no funcionales): R-FUNC-001 a R-FUNC-032, R-NF-001 a R-NF-020.
  2. Arquitectura del sistema: R-ARQ-001 a R-ARQ-007.
  3. Diseño de base de datos: R-BD-001 a R-BD-009.
  4. Diseño UX/UI: R-UX-001 a R-UX-008.
  5. Metodología de desarrollo: R-MET-001 a R-MET-003 (parte narrativa redactada por el equipo de proyecto).
  6. Plan de pruebas y despliegue: R-DEP-001 a R-DEP-009.

Fuentes consultadas

↑ Volver arriba