21 lines
1.6 KiB
JSON
21 lines
1.6 KiB
JSON
{
|
|
"feature_id": "F-102",
|
|
"agent": "reviewer",
|
|
"stage": "review_gate",
|
|
"verdict": "APPROVED",
|
|
"reviewed_at": "2026-08-21",
|
|
"summary": "Unit weight, min purchase qty and per-method weight limits implemented coherently across migration 038, domain, repositories, routes, admin and storefront.",
|
|
"checks": [
|
|
{ "item": "Migration 038 adds nullable/defaulted columns with up/down, idempotent IF NOT EXISTS", "ok": true },
|
|
{ "item": "Zod validation on catalog create/patch (unitWeightKg 0..1000, minPurchaseQty 1..999) and shipping methods (weight caps 0..100000)", "ok": true },
|
|
{ "item": "ShippingService excludes methods over maxWeightKg and restricts free-shipping to the free weight range; empty candidates raise ShippingZoneNotFoundError as before", "ok": true },
|
|
{ "item": "Checkout degrades gracefully: getCartWeightKg is optional and its failure falls back to 0 (no checkout blockage)", "ok": true },
|
|
{ "item": "numeric columns cast with Number() on read; no float truncation risk for 8,3 values", "ok": true },
|
|
{ "item": "Admin api-client signatures extended without breaking existing callers (F-085/F-088 regression avoided)", "ok": true },
|
|
{ "item": "Cart enforces minPurchaseQty on add/merge/changeQuantity; removal still possible at qty<=0", "ok": true },
|
|
{ "item": "Tests cover weight exclusion and free-shipping weight cap; fixtures updated", "ok": true }
|
|
],
|
|
"issues": [],
|
|
"notes": "Scope redefinition from intake (min purchase instead of variant packs, shipping weight limits) is reflected in work/current.md and implementer.md."
|
|
}
|