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, cuyosend_orderes un passthrough que respondeACCEPTEDsin reenviar a nada). Existe un directoriohiopos-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.10en el frontend, con un TODO pendiente de alimentarlo desderestaurant.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,localystopinvocan./deploy.sh, que no existe en la raíz (el script vive enscripts/deploy.sh). Los targetslogsycleaninvocandocker-composesin-fapuntando 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 dedeploy.shen raíz; script real enscripts/deploy.sh. - Impacto:
make dev|prod|local|stop|logs|cleanfalla; hay que usar los scripts descripts/o los composes debackend/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,
passcomo cuerpo de métodos en adaptadores/servicios y callback no-op en el widget de chat. - Evidencia:
backend/tests/_wip_carryover/(soloREADME.md+services/; el propio README explica el aparcamiento desde el WIP8a8928a)backend/tests/old/services/test_advance_phase.py(huérfano)backend/app/modules/chat/infrastructure/adapters/realtime_bus.py:46—passbackend/app/modules/comanda/infrastructure/comanda_service.py:83,465—passbackend/app/modules/comanda/application/use_cases/serve.py:105—pass(rama "proactivo desactivado")frontend/components/chat/ChatWidget.tsx:206-209—handleUserActivityno-op ("Reserved for future activity tracking")- Impacto: deuda visible; los
passen 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 |