35 lines
2.1 KiB
Markdown
35 lines
2.1 KiB
Markdown
# Documenter — F-016 Inventory module
|
|
|
|
## Summary
|
|
Documented F-016 behavior in this evidence artifact. No project README update was applied because the repository guard allows product/project file edits only during build; the document stage is limited to artifacts/docs outside `project/` in the active guard policy.
|
|
|
|
## Public API notes
|
|
|
|
Inventory owns sellability state for product variants. Catalog treats inventory as a separate module: variant ids are opaque UUID references, and catalog must not import inventory internals or query `inventory_*` tables directly.
|
|
|
|
| Route | Access | Result |
|
|
| ------------------------------------------------- | ---------- | ------------------------------------------------- |
|
|
| GET /inventory/:variantId/availability?quantity=1 | public | `200` + `{ available, availableQuantity }` |
|
|
| PUT /inventory/:variantId/stock | admin only | `200` stock item with updated available quantity |
|
|
| POST /inventory/:variantId/reservations | admin only | `201` reserved stock, `409` if unavailable |
|
|
| POST /inventory/:variantId/reservations/release | admin only | `200` released stock, `409` if reserved too small |
|
|
| POST /inventory/:variantId/reservations/confirm | admin only | `200` sold stock, `409` if reserved too small |
|
|
|
|
## Error codes
|
|
- `INSUFFICIENT_STOCK` — HTTP 409
|
|
- `INSUFFICIENT_RESERVED_STOCK` — HTTP 409
|
|
- `INVALID_STOCK_QUANTITY` — HTTP 422
|
|
|
|
## Operational notes
|
|
- Stock counters are `available`, `reserved`, `sold`, and `incoming`; every counter is constrained non-negative in PostgreSQL.
|
|
- Reserve, release, and confirm are atomic predicate `UPDATE` statements, not application-level read-before-write checks.
|
|
- `InventoryService` is exported as the public contract for future checkout integration.
|
|
- Inventory mutations write `inventory_movements` audit rows.
|
|
|
|
## Evidence
|
|
- `work/artifacts/F-016/architect.md`
|
|
- `work/artifacts/F-016/implementer.md`
|
|
- `work/artifacts/F-016/reviewer.json`
|
|
- `work/artifacts/F-016/security.json`
|
|
- `work/artifacts/F-016/qa.json`
|