Fix error before M7

This commit is contained in:
Nông Đức Huy
2026-08-13 23:20:23 +07:00
parent 624a6402bf
commit 1e356a2578
11 changed files with 331 additions and 14 deletions
+8 -2
View File
@@ -158,7 +158,7 @@ sport-store/
│
├── docs/
│ ├── architecture.md Boundaries, conventions, risks — read this first
│ └── adr/ 18 decision records
│ └── adr/ 19 decision records
│
├── docker-compose.yml Backing services; `--profile full` runs everything
├── turbo.json pnpm-workspace.yaml package.json
@@ -272,7 +272,7 @@ Everything below was run, not assumed:
`pnpm format:check` clean
- 7 migrations, 35 tables; seed loads 36 permissions, 6 roles, 3 brands, 8 categories,
3 collections, 12 products, **155 variants**, 64 uploaded images and 3 dev accounts
- **57 tests** — RBAC guards, password hashing, translation fallback, `Accept-Language`, the
- **60 tests** — RBAC guards, password hashing, translation fallback, `Accept-Language`, the
variant matrix planner, the HTTP client's fetch receiver and retry recursion, the inventory
list's variant-driven projection, the two admin-schema defects that caused silent data loss, and
order-number round-tripping
@@ -303,6 +303,12 @@ through Chrome with the console and network panel open:
media library upload driven from the browser (presign → PUT to MinIO → register, 400×500 PNG
landed at 10,962 bytes with a date-partitioned UUID key); inventory adjustment from the table
wrote a ledger entry and the storefront went `OUT_OF_STOCK` → `IN_STOCK` on the next request
- **Checkout is idempotent:** a request without an `Idempotency-Key` is refused; the same key
twice returns the _same_ order rather than a second one; two simultaneous requests with one key
yield one order and one clear refusal — total order count grows by exactly one in every case
- **Order status and fulfilment agree:** `FULFILLED` and `COMPLETED` now set `fulfillmentStatus`,
so the "FULFILLED / UNFULFILLED" contradiction can no longer occur; two historical rows were
backfilled
- **Search (M6):** `nocturne` and `running jacket` match exactly; `ao chay bo` finds _Áo Chạy Bộ
Aero_ without diacritics; `nocturn`, `jaket` and `runing` survive their typos; `velocity`
matches by brand, `crimson` by colourway, `VEL-NOC` by SKU; `zzzzqqq` correctly finds nothing.