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
- Total de requerimientos formales en la matriz: 77.
- Por categoría:
- Funcionales (R-FUNC): 32.
- No funcionales (R-NF): 20.
- Arquitectónicos (R-ARQ): 7.
- Base de datos (R-BD): 9.
- UX/UI (R-UX): 8.
- Metodología (R-MET): 3.
- Pruebas y despliegue (R-DEP): 9.
- Por estado:
- Implementados: 70.
- Parciales: 5.
- Pendientes: 2.
- Cobertura agregada: ~96%, alineada con la conclusión del reporte de validación.
Los seis problemas del Caso Práctico SOFTWARE 6 están cubiertos:
- Requerimientos (funcionales y no funcionales): R-FUNC-001 a R-FUNC-032, R-NF-001 a R-NF-020.
- Arquitectura del sistema: R-ARQ-001 a R-ARQ-007.
- Diseño de base de datos: R-BD-001 a R-BD-009.
- Diseño UX/UI: R-UX-001 a R-UX-008.
- Metodología de desarrollo: R-MET-001 a R-MET-003 (parte narrativa redactada por el equipo de proyecto).
- Plan de pruebas y despliegue: R-DEP-001 a R-DEP-009.
Fuentes consultadas
expressmx/.planning/research/case-study-validation-report.md.expressmx/docs/architecture/schema-consolidated.sql.expressmx/docs/architecture/data-dictionary.md.expressmx/docs/architecture/normalization-analysis.md.expressmx/docs/architecture/deployment.md.expressmx/docs/architecture/database-er.md.expressmx/docs/architecture/neon-branching.md.expressmx/docs/architecture/uml-use-case-{overview,cliente-prestador,admin-soporte,finanzas-marketing-rrhh,sistemas-externos}.puml.expressmx/docs/architecture/uml-component-diagram.puml.expressmx/docs/architecture/uml-deployment-{diagram,distribution,runtime}.puml.expressmx/docs/architecture/uml-class-{diagram,overview,catalogo,finanzas,identidad,onboarding,operacion,soporte}.puml.expressmx/docs/architecture/uml-sequence-{cliente-solicita-orden,cliente-paga-orden,prestador-acepta-job,login-rbac-dashboard,onboarding-prestador,break-glass-pin,reembolso-sod,ticket-escalacion-l1-l2-l3}.puml.expressmx/docs/architecture/uml-activity-{aprobacion-reembolso-sod,asignacion-auto-orden,ciclo-ticket-itsm-sla,corte-pago-quincenal,onboarding-prestador,procesamiento-pago-facturacion}.puml.expressmx/docs/architecture/uml-state-{cargo-extra,caso-soporte-abierto,corte-pago,documento-prestador,factura,invitacion-prestador,major-incident,orden,pago,reembolso,ticket}.puml.expressmx/migrations/001_auth_credentials_and_reset.sql.expressmx/migrations/002_fix_usuarios_uuid_default.sql.expressmx/migrations/003_pins_soporte_cliente.sql.expressmx/migrations/004_rbac_permisos_zero_trust.sql.expressmx/migrations/005_audit_correlacion.sql.expressmx/migrations/006_support_itsm.sql.