Saltar a contenido

Bugs conocidos y limitaciones (as-is)

Lista informativa del estado en que se entrega el software ("as is"). No implica compromiso de corrección: el contrato cede el software en su estado actual. Recoge defectos verificados en el código a fecha 2026-10-10, con fichero y línea de evidencia. Rutas relativas a la raíz del superproyecto, salvo que se indique el submódulo (backend/, frontend/).


1. TPV / pago simulado (feature sin terminar)

  • Descripción: el gateway de pago registrado en producción es un fake que siempre devuelve éxito; no hay integración con un TPV real. El único adaptador POS existente es un stub en memoria (LocalPOSAdapter, cuyo send_order es un passthrough que responde ACCEPTED sin reenviar a nada). Existe un directorio hiopos-tpv/ suelto en la raíz, fuera del backend, sin cablear a la aplicación.
  • Evidencia:
  • backend/app/main.py:330-332 — register_payment_gateway(lambda: FakePaymentGateway())
  • backend/app/modules/payment/infrastructure/gateways/fake_payment_gateway.py:36 — class FakePaymentGateway(IPaymentGateway)
  • backend/app/shared/infrastructure/pos/local_pos_adapter.py:1-14 (docstring: "stands in for an external TPV when none is connected")
  • hiopos-tpv/ (raíz: hiopos-lib, reproduce_order_flow.py, logs sueltos)
  • Impacto: los cobros registrados no corresponden a transacciones reales; antes de operar con dinero de verdad hay que integrar un TPV (Hiopos u otro) y sustituir el gateway en el composition root.

2. IVA hardcodeado en el checkout (feature sin terminar)

  • Descripción: el tipo impositivo está fijado a literal 0.10 en el frontend, con un TODO pendiente de alimentarlo desde restaurant.tax_rate.
  • Evidencia: frontend/app/checkout/page.tsx:32 — const taxRate = 0.10 // TODO: drive from restaurant.tax_rate when exposed in session.
  • Impacto: si el restaurante tiene un tipo distinto (o cambia la normativa), el desglose base/IVA mostrado al cliente es incorrecto.

3. Makefile roto (raíz)

  • Descripción: los targets dev, prod, local y stop invocan ./deploy.sh, que no existe en la raíz (el script vive en scripts/deploy.sh). Los targets logs y clean invocan docker-compose sin -f apuntando al compose del backend, por lo que no encuentran los servicios.
  • Evidencia: Makefile:34-58 (./deploy.sh desarrollo, docker-compose logs -f, docker-compose down -v ...); ausencia de deploy.sh en raíz; script real en scripts/deploy.sh.
  • Impacto: make dev|prod|local|stop|logs|clean falla; hay que usar los scripts de scripts/ o los composes de backend/ directamente.

4. Trabajo sin terminar (WIP)

  • Descripción: restos de scaffolding y stubs pendientes: directorio de tests aparcados del checkpoint WIP, suite antigua huérfana, pass como cuerpo de métodos en adaptadores/servicios y callback no-op en el widget de chat.
  • Evidencia:
  • backend/tests/_wip_carryover/ (solo README.md + services/; el propio README explica el aparcamiento desde el WIP 8a8928a)
  • backend/tests/old/services/test_advance_phase.py (huérfano)
  • backend/app/modules/chat/infrastructure/adapters/realtime_bus.py:46 — pass
  • backend/app/modules/comanda/infrastructure/comanda_service.py:83,465 — pass
  • backend/app/modules/comanda/application/use_cases/serve.py:105 — pass (rama "proactivo desactivado")
  • frontend/components/chat/ChatWidget.tsx:206-209 — handleUserActivity no-op ("Reserved for future activity tracking")
  • Impacto: deuda visible; los pass en adaptadores pueden ocultar comportamiento sin implementar si se invocan en producción.

Features sin terminar (resumen)

Feature Estado Ver
TPV / cobro real Fake siempre-success; Hiopos sin cablear §1
IVA dinámico por restaurante Literal 0.10 en frontend §2
E2E de flujos críticos Solo 2 specs (QR, idioma) §8
Activity tracking en chat Callback no-op §9
Limpieza de WIP/tests huérfanos Pendiente de borrar §9