# 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) |