feat(ADM-018): completed feature
This commit is contained in:
38
work/artifacts/F-017/implementer.md
Normal file
38
work/artifacts/F-017/implementer.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Implementer — F-017 Pricing module
|
||||
|
||||
## Summary
|
||||
Implemented server-side pricing with VAT behind a public `PricingService`, including PostgreSQL persistence, append-only price history, API routes, migration, and tests.
|
||||
|
||||
## Files changed
|
||||
- `project/migrations/012_pricing.js`
|
||||
- `project/src/app/build-app.ts`
|
||||
- `project/src/app/tests/pricing.itest.ts`
|
||||
- `project/src/modules/pricing/index.ts`
|
||||
- `project/src/modules/pricing/api/pricing.routes.ts`
|
||||
- `project/src/modules/pricing/application/pricing-service.ts`
|
||||
- `project/src/modules/pricing/domain/errors.ts`
|
||||
- `project/src/modules/pricing/domain/ports.ts`
|
||||
- `project/src/modules/pricing/domain/price.ts`
|
||||
- `project/src/modules/pricing/infrastructure/pg-pricing-repository.ts`
|
||||
- `project/src/modules/pricing/tests/boundary.test.ts`
|
||||
- `project/src/modules/pricing/tests/pricing-service.test.ts`
|
||||
|
||||
## Acceptance evidence
|
||||
- AC1 variant + quantity returns total with VAT: covered by `pricing-service.test.ts` and `pricing.itest.ts`.
|
||||
- AC2 client-supplied price ignored: `pricing.itest.ts` sends bogus client price fields to `/pricing/calculate`; response uses persisted server-side price.
|
||||
- AC3 price change writes history row: `pricing.itest.ts` verifies creation and update both append rows to `pricing_price_history`.
|
||||
- `verify.sh`: passed.
|
||||
|
||||
## Commands run
|
||||
- `cd project && npm run typecheck` — passed
|
||||
- `cd project && npm run lint` — passed after Prettier formatting
|
||||
- `cd project && npm run build` — passed
|
||||
- `cd project && npm test` — passed; DB integration tests skipped without `TEST_DATABASE_URL`
|
||||
- `cd project && TEST_DATABASE_URL='postgres://mdv:mdv_dev_only@localhost:5432/mdv_test' npm run test:integration -- pricing.itest migrations.itest` — passed; 9 files, 39 tests
|
||||
- `./scripts/verify.sh` — passed
|
||||
|
||||
## Notes
|
||||
- No new runtime dependency was added.
|
||||
- Money is represented as integer cents only.
|
||||
- VAT rates are `general` 21% and `reduced` 10%.
|
||||
- Pricing stores `variant_id` as an opaque UUID and does not import or join catalog internals.
|
||||
Reference in New Issue
Block a user