Files
mercadodevida/work/artifacts/POS-003/implementer.md
2026-08-22 13:19:27 +02:00

2.5 KiB

POS-003 — Implementer evidence

What

POS module skeleton: domain + repos + application use cases. No routes (POS-004 covers that).

Files

  • src/modules/pos/domain/errors.ts — PosError, StoreNotFound, TerminalNotFound, CashSessionNotFound, CashSessionAlreadyOpen, CashSessionNotOpen, TerminalNotBound, TerminalDisabled
  • src/modules/pos/domain/store.ts — PosStore, ListStoresOptions
  • src/modules/pos/domain/terminal.ts — PosTerminal, TerminalStatus, InterfaceMode, ListTerminalsOptions
  • src/modules/pos/domain/cash-session.ts — PosCashSession, CashSessionStatus, OpenCashSessionInput, CloseCashSessionInput
  • src/modules/pos/domain/ports.ts — PosStoreRepository, PosTerminalRepository, PosCashSessionRepository interfaces
  • src/modules/pos/infrastructure/pg-store-repository.ts — PgStoreRepository (findById, list)
  • src/modules/pos/infrastructure/pg-terminal-repository.ts — PgTerminalRepository (findById, findByBindingCode, list, updateLastSeen, bind)
  • src/modules/pos/infrastructure/pg-payment-method-repository.ts — PgPaymentMethodRepository (listByStore)
  • src/modules/pos/infrastructure/pg-cash-session-repository.ts — PgCashSessionRepository (findById, findOpenByTerminal, open, close, listByStore)
  • src/modules/pos/application/list-stores.ts — ListStoresUseCase
  • src/modules/pos/application/list-terminals.ts — ListTerminalsUseCase
  • src/modules/pos/application/get-pos-config.ts — GetPosConfigUseCase
  • src/modules/pos/application/open-cash-session.ts — OpenCashSessionUseCase (validates terminal bound+active, rejects duplicate sessions)
  • src/modules/pos/application/close-cash-session.ts — CloseCashSessionUseCase
  • src/modules/pos/tests/store-repository.test.ts — 2 tests
  • src/modules/pos/tests/cash-session.test.ts — 6 tests
  • src/app/build-app.ts — wired POS repos

Verification

  • npm run build → 0 TypeScript errors.
  • npm test -- --run src/modules/pos/tests/ → 8 passed.
  • check-module-boundaries.mjs src → 0 NEW violations.
  • ./scripts/verify.sh → green.

AC traceability

AC Estado Evidencia
AC1 domain types PosStore, PosTerminal, PosCashSession + errors
AC2 repos 4 Pg*Repository implementations
AC3 use cases 5 use cases (list-stores, list-terminals, get-pos-config, open, close)
AC4 tests 8 unit tests covering core scenarios
AC5 build-app wired POS repos added to build-app.ts
AC6 scope out No routes (POS-004)