Deuda técnica

Deuda técnica

Lista viva tomada del estado maestro del proyecto. No bloquea el MVP salvo donde se indica, pero debe resolverse antes de escalar.

Deuda técnica conocida

TemaDetalle
Módulo inventario4 columnas fantasma en inventory_movements; el descuento es best-effort (no bloquea cobros).
TicketsSuperficie desmontada; tabla tickets fantasma, IVA invertido en el orders.ts /:id/ticket viejo.
operatorId type-lieEl middleware lo tipa number; en runtime es el uuid de operators.id. cash.ts lo coacciona a string localmente.
3 implementaciones de 2FASólo speakeasy se usa realmente; las otras dos son código muerto.
restaurants triplicadaHistóricamente PG UUID + Supabase UUID + migraciones SERIAL. El schema canónico es el UUID de Supabase.
hours.ts cierre de emergenciaGuarda una referencia a delivery_orders (tabla no vigente).
delivery-board.ts sin requireRoleSólo aplica requireRestaurant (falta el guard de rol).
restaurants.status/name fantasmaReferenciadas en fogon-bi.ts y fogon-dashboard.ts (columnas reales: is_active/contract_status, restaurant_name).

Pendiente de seguridad (pre-piloto)

  • setup-password sin token de invitación → riesgo de account-takeover pre-onboarding. Debe implementarse un token firmado que Fogón envía al owner antes de escala / producción real.
  • Pentest + verificación de RLS en Supabase antes de exponer usuarios reales.

Features diferidas

  • F1 CFDI de ventas — no hay demanda real (0 restaurantes operando); requiere integración PAC.
  • G-wallet / Aprovecho — app comensal completa (descubrir fondas, menús, reseñas, reservar, pickup, delivery). Visión futura, fuera del MVP.
  • Delivery Nivel 2 — integración Rappi/Uber (webhooks HMAC, comisiones, external_id).
  • Device-pairing Nivel 2 — multi-dispositivo.
  • Tablecloth / Ads Fase 2 — inventario de manteleta (tablecloth_* fantasma).
  • CRM Fogón · Floor-map IA.
  • App mesero (Expo) — bloqueada por ~272 errores de TypeScript.

Bloqueante de MVP (frontend)

  • Frontend POS desactualizado — llama endpoints con el modelo viejo (status en español, tabla payments, etc.). A0-A2 reconcilió el backend; el frontend aún no consume los endpoints nuevos. Es lo que JuanMa ataca usando el Swagger UI y el backlog como referencia (status español→inglés, paymentspayment_details, KDS, mesas).

Fuente: estado maestro MiMente/01-Proyectos/iFondita/estado-maestro-ifondita.md.