新增 affiliate_dash 履约配置与商品映射(阶段 3)
- bootstrap CORE_PROFILES + routing ROUTABLE/DEFAULT_PRIORITY 接入 affiliate_dash - planner 上下文 affiliateDash 块 + resolveDynamicAffiliateDashProfile - product-resolution: 91 productNo→sku 映射匹配(skuMapping) + snapshot.affiliateDash - prepare 前余额预检(getAffiliateDashWallet) - AFFILIATE_DASH_SKU_MAPPING_JSON env 注入 - admin 后端接口(GET/POST 配置、match、products、wallet)+ 前端 Tabs 面板 - 联调:模拟 91 进单命中 affiliate_dash 路由, 未命中回退;前后端 typecheck + 212 测试通过
This commit is contained in:
@@ -468,3 +468,28 @@ order_site 处理要求:
|
||||
| GET /orders/{order_no}/delivery | `data` 透传(91单号 + game_account)正确 ✅ |
|
||||
|
||||
**联调中发现并修复**:`POST /orders` 响应是 `data.order`(非 `data` 直接),首次实现 map 错了层级导致 orderNo 全空;已改为取 `data.order` 并暴露 `idempotent` 标志。幂等校验要求**同单号参数完全一致**,否则 400「参数与原订单不一致」——重试时必须复用原参数。
|
||||
|
||||
---
|
||||
|
||||
## 17. 阶段 3 落地记录(v2.3 · 已完成)
|
||||
|
||||
产出文件(`apps/backend/src/` + `apps/frontend/src/`):
|
||||
|
||||
| 文件 | 内容 |
|
||||
| --- | --- |
|
||||
| `services/bootstrap/fulfillment-bootstrap-service.ts` | `CORE_PROFILES` 追加 affiliate_dash profile(requiresClaim: true, external_platform) |
|
||||
| `services/fulfillment/routing-config-service.ts` | `ROUTABLE_EXECUTOR_KEYS` + `DEFAULT_EXECUTOR_PRIORITY` 加 `AFFILIATE_DASH`(路由可命中) |
|
||||
| `services/fulfillment/planner.ts` | `buildFulfillmentTaskContext` 加 `affiliateDash` 块(flowType/sku/productName/orderNo/... 与 `AffiliateDashFlow` 对齐);`resolveDynamicFulfillmentProfile` 加 AFFILIATE_DASH 分支 + 新增 `resolveDynamicAffiliateDashProfile`(configId `affiliate_dash:${sku}`) |
|
||||
| `services/fulfillment/product-resolution-service.ts` | `resolveConfiguredItemCandidate` 91 分支加 affiliate_dash 候选(`resolveAffiliateDashSkuByProductNo`,key=snapshot.productNo)+ resolvedSkuCode/resolvedSkuName/snapshot.affiliateDash/matchMode |
|
||||
| `services/fulfillment/affiliate-dash/index.ts` | `prepareAffiliateDashTask` 下单前 `preflightAffiliateDashWallet`(余额 ≤0 → `affiliate_dash_wallet_not_enough` 提前拦截;查询失败不阻塞) |
|
||||
| `config/env-overrides.ts` | `AFFILIATE_DASH_SKU_MAPPING_JSON` env 注入(仿 KUAISHOU_FEIFEI_PRODUCT_RULES_JSON) |
|
||||
| `routes/admin/platform-config/affiliate-dash.ts`(新)+ `platform-config.ts` | GET/POST 配置、POST match(productNo→sku)、POST products、POST wallet |
|
||||
| `services/admin/platform-config/affiliate-dash-service.ts`(新) | get/update/match/listProducts/wallet;audit 不落密钥 |
|
||||
| 前端 `types/admin/.../affiliate-dash.ts` + `services/admin/platform-config/affiliate-dash.ts` + 两处 index export | 类型与 API 封装 |
|
||||
| 前端 `AdminPlatformFulfillmentPage.tsx` | `ROUTING_EXECUTORS` 加 affiliate_dash(gold)+ Tabs 面板 `AffiliateDashFulfillmentPanel`(配置表单/密钥、skuMapping 行编辑、映射测试、商品目录、钱包余额) |
|
||||
|
||||
**联调验证(模拟 91 进单 → resolveOrderItemForFulfillment)**:
|
||||
- `productNo='X91-LUCKY-90'` + skuMapping 命中 → `selectedExecutorKey='affiliate_dash'`、`matchMode='affiliate_dash_sku_mapping'`、`resolvedSkuCode='lucky_coin_x90'`、snapshot.affiliateDash 完整 ✅
|
||||
- 未命中映射的商品 → 不选 affiliate_dash,回退 ✅
|
||||
|
||||
**验证**:前后端 typecheck 通过;后端全量 212 测试通过。
|
||||
|
||||
Reference in New Issue
Block a user