feat(ADM-018): completed feature
This commit is contained in:
38
work/artifacts/F-016/implementer.md
Normal file
38
work/artifacts/F-016/implementer.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Implementer — F-016 Inventory module
|
||||
|
||||
## Summary
|
||||
Implemented an isolated inventory module with atomic stock counters, public `InventoryService`, PostgreSQL persistence, API routes, migration, and regression tests.
|
||||
|
||||
## Files changed
|
||||
- `project/migrations/011_inventory.js`
|
||||
- `project/src/app/build-app.ts`
|
||||
- `project/src/app/tests/inventory.itest.ts`
|
||||
- `project/src/modules/inventory/index.ts`
|
||||
- `project/src/modules/inventory/api/inventory.routes.ts`
|
||||
- `project/src/modules/inventory/application/inventory-service.ts`
|
||||
- `project/src/modules/inventory/domain/errors.ts`
|
||||
- `project/src/modules/inventory/domain/ports.ts`
|
||||
- `project/src/modules/inventory/domain/stock.ts`
|
||||
- `project/src/modules/inventory/infrastructure/pg-inventory-repository.ts`
|
||||
- `project/src/modules/inventory/tests/boundary.test.ts`
|
||||
- `project/src/modules/inventory/tests/inventory-service.test.ts`
|
||||
|
||||
## Acceptance evidence
|
||||
- AC1 concurrent last-unit reservation: `project/src/app/tests/inventory.itest.ts` covers 10 concurrent reservations; exactly one succeeds when DB integration tests are enabled.
|
||||
- AC2 zero-stock reservation: `project/src/app/tests/inventory.itest.ts` covers rejection and non-negative counters; DB CHECK constraints also enforce non-negative stock.
|
||||
- AC3 catalog isolation: `project/src/modules/inventory/tests/boundary.test.ts` scans catalog source for inventory table/import coupling.
|
||||
- AC4 checkout service dependency: `project/src/modules/inventory/index.ts` exports the public `InventoryServicePort` and `InventoryService` for future checkout injection.
|
||||
- `verify.sh`: passed.
|
||||
|
||||
## Commands run
|
||||
- `cd project && npm run typecheck` — passed
|
||||
- `cd project && npm test` — passed; DB integration tests skipped because `TEST_DATABASE_URL` is not set
|
||||
- `cd project && npm run build` — passed
|
||||
- `cd project && npx prettier --write ...` — formatted inventory files
|
||||
- `cd project && npm run lint` — passed
|
||||
- `./scripts/verify.sh` — passed
|
||||
|
||||
## Notes
|
||||
- No new runtime dependency was added.
|
||||
- Reservation correctness uses a single predicate `UPDATE ... WHERE available >= quantity`, not application read-before-write.
|
||||
- Product/variant ids are opaque UUIDs to keep inventory independent from catalog internals.
|
||||
Reference in New Issue
Block a user