WP-DEMO-SEED-MENU-01 — Menu FNB + Grocery giống thật
Domain: D-FNB / D-GROCERY · Surfaces: API · CON Date: 2026-08-22 Status: IMP (local)
Vấn đề
Sau WP-DEMO-SEED-GG-01 (~713 merchant OSM), seedMerchants() return sớm khi đã có merchant → quán trên map không có menu. Grocery seed chỉ 3 store theo slug.
Cách làm
Script idempotent api/prisma/seed-merchant-menus.mjs:
- Chỉ backfill merchant
kind=FNB|GROCERYvớimenuItems = 0(không tạo POI giả). - Phân loại theo tên: cafe · phở · cơm · bánh mì · pizza · hải sản · generic · grocery.
- 2–4 category / quán, giá VND + jitter ±10% theo slug,
imageUrlmón (Unsplash pool). - Cap:
SEED_MENU_MAX(optional).
seed.ts gọi backfill khi merchant đã tồn tại. npm: merchants:seed-menus / api seed:merchant-menus.
Kết quả local (2026-08-22)
| Metric | Count |
|---|---|
| Candidates (empty) | 708 |
| Filled | 708 |
| Items created | 8024 |
| FNB / GROCERY | 543 / 165 |
| Merchants with menu | 713 |
| Still empty | 0 |
| menuItem total | 8045 |
Classify: cafe 251 · generic 229 · grocery 165 · pho 23 · com 17 · seafood 12 · pizza 9 · banhMi 2.
Re-run: filled=0 (idempotent).
Smoke: GET /api/v1/merchants/:id/menu — FNB 3 cats / món có ảnh; grocery Winmart (seed cũ) vẫn có menu.
Lệnh
npm run merchants:seed-menus
# smoke
# SEED_MENU_MAX=200 npm run merchants:seed-menus
Files
api/prisma/seed-merchant-menus.mjsapi/prisma/seed.ts(backfill khi existing merchants)api/package.json· rootpackage.json
Không tạo API mới.