摘要
PRD V1.4 §5.2 FR-3.3-05 验收要点:「撮合推荐经人工确认后分发;撮合商机有效率跟踪(基线立项定)。」 现状判定为部分实现——平台已具备三种人工/规则驱动的供需对接形态:B2B 询价报价(quote 五态状态机)、 集采(八态状态机+自动成团判定)、采购需求参考(demand_basis 只读脱敏快照); 但「撮合」的业务语义已具备、智能引擎为零——推荐/匹配评分/智能分发全库 0 业务命中(仅 3 处法务文案误报)。
本卡交付规则级撮合(需求→结构化条件→候选供方评分→人工确认分发):确定性规则+加权评分(评分维度可解释、人工可确认), 算法撮合(推荐模型/用户画像/学习型评分)显式划出范围为演进项(衔接 AI-3.4-03 与 AI-3.3-04); 把关状态机本体归人工审核框架条目(AI-3.9-04)所有,本卡只定义挂接点(禁止两套状态机声明)。 P1 全部能力为确定性规则引擎,零 AI/LLM 调用;撮合失败永远存在人工出路(quote/集采直达)。
关键概念
matching):demand_snapshot 冻结 + candidate_seller_ids 显式关联 + score_detail 可解释评分 + 五态生命周期 + 留痕三件套。confirmation_threshold 数值与非标场景枚举值的生产配置;缺省 null=门禁退化为「全部推荐需人工确认」(保守默认,合规安全向)。方案设计
设计红线声明与两段式总览
- Workflow 承载业务逻辑:撮合推荐的生成/确认/分发全部数据变更走 Workflow,守卫(阈值门禁/状态迁移校验)在 step 内实现;
- 不改上游源码:quote/集采/h2b-trade 实体均为本地模块(backend/src/modules/*)——quote 补 seller 关联按本地模块 migration 实施,不触碰上游;
- 后端单一数据源:撮合状态/评分/留痕以后端为准,三端仅消费;
- 参数化 SQL:评分聚合查询全部参数化绑定(demand-basis「值全部 ? 参数化」既有正面范式沿用)。
| 分段 | 门控 | 内容 | 开工条件 |
|---|---|---|---|
| 规则级撮合段 | 无门控 | 结构化条件 / 评分引擎 / 推荐实体与确认分发 / workflow / 前端 | 立即可开工(p1 波) |
| 阈值参数接入段 | DEC-3 门控 | matching.confirmation_threshold 数值、非标场景清单枚举值 |
前置决策点 DEC-3 关闭后方可配置生产值(结构与配置载体先行落地,值占位) |
| 算法撮合(演进项) | 划出本卡范围 | 推荐模型/用户画像/学习型评分/自然语言需求理解 | 归 AI-3.4-03 与 AI-3.3-04(P2),本卡仅留接口位 |
输入段:需求结构化条件(字段级)
载体:matching_recommendation.demand_snapshot JSONB(快照冻结范式沿用 demand_basis「建单时冻结、不回写」)。字段级清单(每字段给来源与类型):
| 条件字段 | 类型 | 来源(既有链路) | 约束 |
|---|---|---|---|
category_handles |
string[] | product_category.handle(三语类目树,seed 6 根 18 子) |
必填≥1;品类硬过滤依据 |
attribute_constraints |
{attribute_id, operator("in"|"range"|"eq"), values[]}[] |
MercurJS attribute 系统 possible_values(admin-panel/src/types/attribute/common.ts:29)约束合法值 |
operator 白名单闭合校验(zod) |
quantity |
number | 买家输入(对齐集采 target_quantity bigNumber 语义) |
>0 |
budget_range |
{min_minor?, max_minor?, currency_code} |
买家输入;金额 minor 整数(沿用集采/quote unit_price_minor bigNumber 实践) |
currency 三选一(JPY/USD/CNY 按站点) |
delivery_terms |
{region?, deadline_at?} |
买家输入;区域枚举对齐 h2b_receiving_location.service_regions 既有语义 |
deadline 为 ISO8601 |
order_history_digest |
object(可选) | demand_basis 脱敏快照直接嵌入(DemandBasisSnapshot 结构:seller_id/seller_name/captured_at/orders[]/gp_activities[],orders 近 20 单摘要+gp_activities 集采汇总,RECENT_ORDERS_LIMIT = 20) |
无 PII 红线沿用:无姓名/邮箱/地址/公司名/单笔金额;获取失败置 null 不阻断(GAP-8 catch→null 范式) |
结构化条件校验:backend/src/api/store/matching-recommendations/validators.ts(zod schema,键闭合);P1 无 LLM 解析——结构化条件由买家表单/采购需求页结构化提交;自然语言→结构化的 LLM 解析为 AI-3.3-04 接口位。
匹配段:候选供方评分(维度×权重结构,数值 DEC-5)
| 维度 | 字段级口径 | 数据源(只读,既有链路) |
|---|---|---|
| D1 品类命中度 | 供方在售商品类目集合 ∩ demand_snapshot.category_handles 的交集占比(0~1) |
product→seller 归属(remote query 现有 link)+ product_category |
| D2 资质等级 | seller_profile.approval_data 资质材料完成度加权(如执照+行业资质+验厂齐备=1.0 档位映射) |
seller-profile(approval_data JSONB) |
| D3 履约记录 | 历史订单履约率聚合:已完成订单占比(quote accepted 终态率 + 集采 completed 参与率聚合口径) |
quote/group-procurement 既有实体聚合(只读 SQL,参数化) |
| D4 响应能力 | seller_profile.capabilities 数组与需求 attribute_constraints/delivery_terms 的匹配度(出口经验/产能字段命中数) |
seller-profile(capabilities) |
权重表结构(数值基线立项定(DEC-5),本卡只冻结结构与键名):
// 配置载体:matching config(以下为 schema 非数值)
{
"weights": { "category_hit": <DEC-5>, "qualification": <DEC-5>,
"fulfillment": <DEC-5>, "responsiveness": <DEC-5> }, // 归一化校验 Σ=1
"candidate": { "top_n": <DEC-5>, "category_hard_filter": true,
"min_score": <DEC-5> }
}
- 评分确定性:同输入同输出(纯函数
scoreCandidates(demand, candidates, weights) → scored[],无随机/无时变因子进评分式——数据快照在生成时冻结);单测断言确定性(验收 A4); - 候选集裁剪:品类硬过滤(D1=0 直接剔除,
category_hard_filter:true默认开)→ 评分排序 → top-N 截取(N 数值 DEC-5)→ 低于min_score剔除; - 无候选出口:裁剪后空集 → 推荐记录落
status=empty_result(不报错不阻断,走降级提示)。
输出段:人工确认分发(挂钩 NFR-3.9-04)
把关状态机挂接点(本体归人工审核框架条目 AI-3.9-04 所有——禁止两套状态机声明):
- 本体所有者:AI-3.9-04(同波并行卡)——把关框架的通用状态集语义、forward-only 迁移校验工具(qualification-state-machine.ts:29-39
REVIEW_TRANSITIONS表驱动范式为共享工具来源)、五类场景枚举均归其所有; - 本卡仅定义挂接点(三件):①门禁语义挂接——draft→confirmed 迁移即「未确认不生效」门禁实例化,draft 态推荐对供方完全不可见;迁移合法性校验调用共享校验器(其交付前由本卡 step 内局部白名单兜底:仅允许
draft→confirmed/rejected、confirmed→distributed,交接时替换为共享工具调用);②确认动作挂接——POST /admin/matching-recommendations/:id/confirm写 status/reviewed_by/reviewed_at(或 rejected+rejection_reason);③分发动作挂接——POST /admin/matching-recommendations/:id/distribute仅 confirmed 态可调(step 内守卫),向候选供方推送询价/商机。
分发=复用既有询价链路:分发 step 供方侧动作落点为向供方发起询价请求(复用 create-request-for-quote 链路语义);无 cart 直发变体为本卡对 quote 链路的唯一扩展点,不修改既有 workflow 本体。
配置载体(DEC-3 占位):权重与阈值配置落新表 matching_config(单行 key="default",字段 weights jsonb / candidate jsonb / confirmation_threshold jsonb——threshold 结构 {large_amount_minor?, scenarios[]} 数值与场景枚举标注 D-dec3,缺省 null=门禁退化为「全部推荐需人工确认」(保守默认,合规安全向));读侧 getEffectiveMatchingConfig()(DB 优先+代码默认回退,translation-config service 同构范式)。
既有三形态语义沿用不重设计 + quote 缺陷补字段
| 形态 | 语义沿用声明 | 本卡动作 |
|---|---|---|
| quote 询价报价 | 五态状态机(pending_merchant/pending_customer/accepted/customer_rejected/merchant_rejected,quote.ts)与 9 个生命周期 workflow 全部沿用(不重设计);分发产物「供方收到询价」复用其 pending_merchant 入口语义 |
缺陷注明与修复:quote 无 seller_id 靠 draft_order 反查(query-config.ts:11-17)——分发场景无买家 cart 可依赖;补 seller 侧显式关联字段设计:quote 本地模型 migration 新增 seller_id text nullable(供方接受询价建单时落值,既有 cart 路径不受影响=nullable 向后兼容);分发变体 workflow 建询价时直写 seller_id |
| 集采 group procurement | 八态机(draft/scheduled/open/closed/processing/cancelling/cancelled/completed)+target_reached 自动成团(mark-participation-paid.ts:208 精确命中)沿用——「条件触发→状态迁移→审计留痕」为既有正面范式,本卡评分触发动作对齐此范式 |
撮合不改变集采流程;集采活动可作为需求来源之一(demand_snapshot.order_history_digest.gp_activities)与分发目标之一(供方组织集采的推荐位,P1 仅留 metadata 标记不实现) |
| demand_basis 参考快照 | 脱敏需求快照语义沿用——只读、冻结、无 PII | demand_snapshot.order_history_digest 直接嵌入其结构;获取失败 null 不阻断(空态范式同构) |
子任务 DAG 与排期
| 子任务 | 依赖 | 估时 |
|---|---|---|
| M1 实体+migration+config | 无 | 1d |
| M2 条件校验+demand_basis 嵌入 | 无 | 1d |
| M3 评分引擎+裁剪+单测 | M2 | 2d |
| M4 workflow×3+API×6+单测 | M1-M3 | 2.5d |
| M5 前端(admin 工作台+表单+i18n) | M4 | 2d |
| M6 挂接点交接 | AI-3.9-04 | 0.5d |
所属波次 p1(与 AI-3.9-04 同波并行,挂接点契约对齐;与 AI-3.3-02 同域不同链路,无资源冲突)。交叉引用:AI-3.9-04(P1 同波,把关框架本体);AI-3.3-04 / AI-3.4-03(P2 演进承接);AI-3.2-02(资质数据上游)。
数据模型 / API / Workflow
新实体 matching_recommendation(字段级)
索引:(status)、(demand_owner_type, demand_owner_id)、(created_at)。留痕三件套对齐 seller-profile 范式;reviewed_by=req.auth_context.actor_id 落库范式(findings AI-3.9-04 锚点 review-channel-qualification.ts:43-46 同构)。
API 契约汇总
| 路由 | 方法 | 权限域 | 请求/响应要点 | 错误码 |
|---|---|---|---|---|
/store/matching-recommendations |
POST | store(customer auth) | 请求=结构化条件(zod 校验);响应 {id, status:"draft", candidate_count}——store 侧只读回执不含 score_detail 供方明细(draft 未确认不外泄) |
400 校验失败 / 401 / 403 |
/store/matching-recommendations/:id |
GET | store(owner 校验) | 需求方查看自身推荐进度(status/distributed_at 脱敏视图) | 401/403/404 |
/admin/matching-recommendations |
GET | admin | 列表+score_detail 全量(工作台数据源);status/candidate_count 筛选 | 401/403 |
/admin/matching-recommendations/:id/confirm |
POST | admin | body {decision:"approve"|"reject", rejection_reason?};draft→confirmed 唯一入口;写 reviewed_by/at |
400(非 draft 态)/401/403/404 |
/admin/matching-recommendations/:id/distribute |
POST | admin | 仅 confirmed 态可调(step 守卫);触发分发 workflow;响应分发产物计数 | 400(非 confirmed)/401/403/404 |
/admin/matching-config |
GET/PUT | admin | 权重/阈值配置(threshold 数值 DEC-3 占位) | 401/403/400 |
Workflow 设计(业务逻辑必须在 Workflow)
| Workflow | 状态 | steps 链 | 补偿逻辑 | 事件 |
|---|---|---|---|---|
create-matching-recommendation |
新增 | ① validate-demand-snapshot(zod+attribute 合法值闭合)→ ② fetch-candidate-sellers(品类硬过滤,remote query)→ ③ score-candidates(纯函数评分+top-N 裁剪)→ ④ persist-recommendation(status=draft/empty_result,含 metadata 权重快照) |
②③ 失败→step 抛错整体回滚(无部分写);④ 幂等(同 demand 指纹+活跃记录存在则跳过) | 完成后 emit matching.recommendation.created(event bus 直接 emit——step 事务上下文外 emit 的既有理由同 run-translate-product 范式) |
confirm-matching-recommendation |
新增 | ① assert-transition(draft→confirmed/rejected 白名单兜底,交接共享校验器)→ ② persist-review(status/reviewed_by/reviewed_at/rejection_reason) |
① 抛 MedusaError 拒绝非法迁移(对齐 qualification-state-machine 反向跳转抛错范式) | matching.recommendation.confirmed / .rejected |
distribute-matching-recommendation |
新增 | ① assert-confirmed(守卫在 step 内,红线)→ ② create-quote-requests-per-seller(复用 create-request-for-quote 语义的无 cart 变体,逐供方循环+直写 seller_id)→ ③ persist-distribution-refs(distribution_refs 回写+distributed_at) |
② 单供方失败:该供方标记失败继续其余(部分成功语义),失败清单入 metadata;全失败→workflow 抛错,status 停留 confirmed 可重试 | matching.recommendation.distributed |
AI 能力接入点:规则级无 LLM 调用声明 + 演进接口位
本卡 P1 全部能力(结构化条件校验/评分/确认分发)为确定性规则引擎,零 AI/LLM 调用——与 translation client 通路无调用关系。PRD「智能匹配」的「智能」在 P1 兑现为规则级结构化撮合(评分维度可解释、人工可确认)。
| 演进能力 | 承接条目 | 本卡预留位 |
|---|---|---|
| 自然语言需求→结构化条件解析 | AI-3.3-04(P2) | demand_snapshot 旁预留 source_raw_text jsonb nullable(原始输入留痕,供未来解析对照/回流标注);解析产物仍走同一 zod 校验(接口契约不变) |
| 推荐模型/用户画像/学习型评分 | AI-3.4-03(P2) | score_detail.per_dimension 结构允许未来插入 ml_score 维度键;metadata.engine_version 区分规则级/算法级产出(有效率指标可分引擎版本对比——A2 口径预留) |
| 语义匹配(品类/属性向量相似度) | AI-3.3-04 | 品类硬过滤未来可放宽为「硬过滤+语义召回」两段——本卡结构不变 |
前端改动面与 i18n
| 端 | 改动 | i18n 文件路径 | 新增 key(示意) |
|---|---|---|---|
| admin-panel | 撮合工作台(推荐列表+score_detail 展开+确认/分发动作) | admin-panel/src/i18n/translations/{en.json, zhCN.json, ja.json} |
matching.recommendation.status.draft/confirmed/rejected/distributed/empty_result、matching.recommendation.action.confirm/reject/distribute、matching.recommendation.score.*(维度名)、matching.config.threshold.pendingDecision(DEC-3 占位提示) |
| storefront | 需求提交表单(结构化条件)+推荐进度查看 | storefront/messages/{en,ja,zh-Hans}.json |
matching.form.category/quantity/budget/delivery、matching.status.pendingReview/approved |
| b2b / h2b storefront | 同 storefront(B2B 组织维度提交) | 各端 messages/{en,ja,zh-Hans}.json |
同 storefront 命名空间 |
| vendor-panel | 供方收到的撮合询价复用既有询价收件箱(quote pending_merchant 视图),无新增页面 | — | 无新增(复用既有 quote i18n)——分发落点即询价,商家零学习成本 |
| influencer / referrer panel | 无改动 | — | — |
验收与测试
验收标准(PRD 要点 + 技术口径)
| # | 验收标准 | 映射 |
|---|---|---|
| A1 | 人工确认后分发可验证:①draft 态推荐对供方零可见(store 侧无读路径,供方 API/前端均无该数据暴露);②confirm 前 distribute 被拒(400);③confirmed 后分发触发且 distribution_refs/distributed_at 落值 |
PRD 验收要点① |
| A2 | 商机有效率可追踪:matching_recommendation 可聚合 confirmed→distributed→(quote accepted 转化线索)漏斗计数;有效率口径与目标值基线立项定(DEC-5) |
PRD 验收要点② |
| A3 | 无候选降级:品类无供方数据集→empty_result 终态+需求方收到人工询价引导;询价/集采主流程全程可用 |
NFR-3.8-01 |
| A4 | 评分确定性:同 demand_snapshot+同权重快照→score_detail 逐字节一致(单测断言,含并列分数稳定排序) | 评分引擎 |
| A5 | 门禁保守默认:DEC-3 未决(threshold=null)时全部推荐需人工确认方可分发——合规安全向默认可验证;DEC-3 回填后大额场景拦截可配 | DEC-3 占位 |
| A6 | 留痕完整性:confirm/distribute 动作均落 reviewed_by/reviewed_at(/rejection_reason)+审计记录(action/actor 范式) | 合规挂钩 / Workflow |
| A7 | quote 兼容:补 seller_id 列后既有 cart 询价路径行为不变(nullable 向后兼容回归) | 缺陷补字段 |
测试策略(分层)与 L0 门禁
L0 门禁:本文档十要素章节齐备、关键 code anchor 字符串可 rg 命中、quote/集采既有单测可回归(backend/src/workflows/group-procurement/__tests__ 目录存在,实现期确认覆盖面并复跑;quote workflow 测试同规则)。
| 层 | 范围 | 明细 |
|---|---|---|
| 既有回归 | 三形态守卫 | quote 生命周期 workflow、集采 mark-participation-paid(target_reached 判定行为不变)、demand-basis 快照构造(无 PII 断言既有用例) |
| 新增单测(引擎) | 条件/评分 | ① 结构化条件 zod 校验(operator 白名单/attribute 值闭合/budget 负值拒绝);② 评分四维度各自口径正确;③ top-N+硬过滤裁剪;④ 确定性(A4);⑤ 空候选→empty_result |
| 新增单测(门禁与分发) | 确认/分发 | ⑥ 迁移白名单(draft→confirmed/rejected 合法、confirmed→draft 拒绝、分布式守卫);⑦ confirm 写留痕三件套;⑧ 分发变体建询价直写 seller_id+失败清单部分成功语义;⑨ threshold=null 保守默认(A5) |
| 集成 | 跨模块 | 创建→确认→分发→供方询价收件箱可见(quote pending_merchant 视图)全链路;matching_config 热更新生效路径 |
| 降级路径测试 | A3/A5 | flag 关闭/评分故障/无候选/DEC-3 未决四态 |
量化指标占位口径:撮合商机有效率(基线/目标)、top-N 候选数、评分权重四值——全部基线立项定(DEC-5);大额阈值与非标场景清单——D-dec3(管理层决策,配置占位)。
风险与降级
风险卡
confirmation_threshold 数值与非标场景枚举值的生产配置(阈值参数值)——不阻塞规则级引擎与评分结构设计(配置载体/校验/保守默认先行,RK-05 mitigation「框架设计与参数值解耦」落文)。可并行:全部结构可立即开工——权重表结构(值 DEC-5 占位)、门禁 step(缺省全确认语义)、admin 工作台、workflow 全链;DEC-3 关闭后仅回填配置值+场景枚举,无 schema 变更。
降级设计(撮合失败/无候选不阻断主流程,NFR-3.8-01 范式)
- 引擎开关关闭(feature flag
matching.enabled缺省 false):需求提交入口隐藏,既有询价/集采人工流程完全不受影响(撮合是增量入口非替代); - 评分聚合查询失败:step 抛错→workflow 回滚→store API 返回 503 语义错误码+「可稍后重试或直接发起询价」提示(不阻塞询价直达入口);
- 无候选/低分全剔除:
empty_result终态+需求方收到「暂无匹配供方,可发起人工询价」引导——撮合失败永远存在人工出路(quote/集采直达); - DEC-3 未决→确认门禁保守默认(全部需人工确认,合规安全向)。
合规挂钩
| NFR / 决策项 | 挂钩点 | 本卡动作 |
|---|---|---|
| NFR-3.9-04(人工审核覆盖 AI 产出物) | PRD FR-3.3-05 合规挂钩注记原文:「撮合结果导向的交易,按 NFR-3.9-04 枚举场景执行人工确认(大额交易/非标合作等),确认后方可生效」 | 挂接点三件:draft→confirmed 未确认不生效门禁+确认/分发 API+reviewed_by/at/rejection_reason 留痕;五类场景框架与状态机本体归 AI-3.9-04(引用不重复设计) |
| DEC-3(大额交易人工确认阈值与非标合作场景清单) | 阈值参数值阻塞 | matching_config.confirmation_threshold 配置占位,数值标注 D-dec3 不臆造;缺省 null=保守全确认 |
| NFR-3.9-01(APPI 数据最小化) | 需求侧数据 | demand_snapshot 仅结构化商业条件;order_history_digest 沿用 demand_basis 无 PII 红线(无姓名/邮箱/地址/公司名/单笔金额)——输入侧脱敏沿用声明 |
| NFR-3.9-03(审计可追溯) | 撮合决策留痕 | ①推荐记录 metadata 权重快照(评分可复现);②分发审计对齐 mark-participation-paid 范式(action/actor_type/actor_id/metadata);③reviewed_by/at/rejection_reason 三件套 |
| NFR-3.9-02(AI 输出免责) | 撮合推荐展示给 admin/需求方时 | 前端文案标注「系统推荐,仅供参考」(i18n key 随前端提交);P1 推荐不直接面向公众(人工确认后分发),公众侧暴露面为零 |
| C6(AI 异常不阻断) | 引擎故障路径 | 三级降级(见上) |
迁移与回滚
| migration | 内容 | 兼容性 |
|---|---|---|
matching 模块 migration | CREATE TABLE matching_recommendation(全列+3 索引)+ CREATE TABLE matching_config(单行配置) | 新表,无存量 |
quote 模块 migration | ALTER TABLE quote ADD COLUMN seller_id text NULL(缺陷补字段) | nullable 加列——既有行不回填、既有 cart 路径零行为变化(A7) |
pnpm db:reset / db:reset:demo 兼容声明:两 migration 均可空库重放;matching_recommendation/matching_config 空表不参与 seed(seed 留空惯例一致);quote.seller_id 为 NULL 时全链路行为与现状逐字节等价。
| 变更 | 回滚路径 |
|---|---|
| 撮合全能力 | feature flag matching.enabled(独立开关,缺省 false)置 false——入口隐藏、workflow 不可触发;已产生的推荐记录保留(审计数据不删),回滚=回到人工询价/集采现状 |
| quote.seller_id 列 | nullable 列保留无害;如需 schema 回退走反向 migration(数据为 NULL 时零损失) |
| 权重/阈值配置 | matching_config 改回默认行(threshold=null=保守全确认)即恢复安全态 |
上线顺序建议:M1-M4 后端先行(flag=false 影子运行:workflow 可单测/integration 验证但入口不开)→ M5 前端+flag=true 灰度开管理员侧 → DEC-3 回填阈值 → 全量开放。
前置决策点
Blocker 二分表(阻塞什么 / 可并行做什么)
| Blocker | 类型 | 阻塞什么 | 可并行做什么 |
|---|---|---|---|
| D-dec3(大额阈值+非标场景清单,PRD §2.5)Blocker | management_decision | 仅阻塞 confirmation_threshold 数值与非标场景枚举值的生产配置(阈值参数值)——不阻塞规则级引擎与评分结构设计(RK-05 框架与参数解耦落文) |
全部结构可立即开工:权重表结构(值 DEC-5 占位)、门禁 step(缺省全确认语义)、admin 工作台、workflow 全链;DEC-3 关闭后仅回填配置值+场景枚举,无 schema 变更 |
| ~~F-search-backend-choice~~ | 不涉及 | —(检索域决策,与撮合无依赖) | — |
| X-data-prerequisite(评分数据稀疏)运行时风险 | 运行时数据风险(seed/demo 数据量小) | 不阻塞开发;影响 D3 履约记录维度上线初期的区分度 | 评分权重可配置化支持数据积累后调参;冷启动期权重向 D1/D2(静态可算)倾斜——调参属运营,不改结构 |
内部依赖与下游消费
| 方向 | 条目 | 关系 |
|---|---|---|
| 同波并行 | AI-3.9-04(人工审核框架) | 契约对齐非串行依赖:本卡挂接点(三件)与其共享校验器交接——其交付前本卡 step 内局部白名单兜底,交付后替换调用;双方 TDD 互相交叉引用(决策二工具级共享粒度) |
| 上游 | AI-3.2-02(入驻资质) | seller_profile.approval_data 资质数据完整性影响 D2 维度区分度(数据质量依赖,非开发阻塞) |
| 下游 | AI-3.3-04 / AI-3.4-03(P2) | 算法撮合演进承接方(演进接口位);商机有效率分引擎版本口径(A2)为其评估基线 |
| 下游 | NFR-3.9-04 五类场景全局 | 本实体为五类场景中「大额交易/非标合作」在撮合域的首个实例化载体 |
开放数值决策
- DEC-5 撮合商机有效率(基线/目标)、top-N 候选数、评分权重四值——基线立项定,本卡仅引用编号不臆造数值。
- DEC-3 大额交易人工确认阈值与非标合作场景清单——管理层决策,配置占位;缺省 null=保守全确认(合规安全向)。
附录:溯源表
本文档由 docs/reports/ai-module-prd/tdd/AI-3.3-05-supply-demand-matching.md(v1.0,2026-10-26)可读化重组生成。章节映射与处理方式如下:
| 本文档章节 | 源文档章节 | 处理方式 |
|---|---|---|
| 摘要 | 文档头(元数据/范围边界)+ §1 溯源与现状 | Summarized |
| 关键概念 | §1.2 关联条目映射 + §3 缺口与目标状态 + §4 方案设计 | Summarized |
| 方案设计 · 设计红线与两段式总览 | §4.0 设计红线声明与两段式总览 | Preserved |
| 方案设计 · 需求结构化条件 | §4.1 输入段(字段级表) | Preserved |
| 方案设计 · 候选供方评分 | §4.2 匹配段(维度×权重结构) | Preserved |
| 方案设计 · 人工确认分发 | §4.3 输出段(实体字段级+挂接点三件+配置载体) | Preserved |
| 方案设计 · 三形态沿用与 quote 补字段 | §4.4 既有三形态语义沿用不重设计 + quote 缺陷补字段 | Preserved |
| 方案设计 · 子任务 DAG | §9 波次与排期适配(M1-M6 DAG + 估时表) | Preserved |
| 数据模型 / API / Workflow | §4.3 实体字段表 + §4.5 API 契约汇总 + §4.6 Workflow 设计 + §5 AI 能力接入点 | Preserved |
| 前端改动面与 i18n | §4.7 前端触点与 i18n 三语 key 规划 | Preserved |
| 验收与测试 | §8.1 验收标准(A1-A7)+ §8.2 测试策略与 L0 门禁 | Preserved |
| 风险与降级(风险卡/降级/合规/迁移回滚) | §4.8 降级设计 + §6 合规挂钩 + §10 迁移与回滚 | Preserved |
| 前置决策点 | §7.1 Blocker 二分表 + §7.2 内部依赖与下游消费 | Preserved |
| 图 1 撮合全链路时序 | §4.3/§4.5/§4.6(确认分发链路+API+Workflow steps) | Inferred(文字流程转绘为时序图,含降级注记) |
| 图 2 推荐记录生命周期 | §4.3 把关状态机挂接点(本体归 AI-3.9-04 所有) | Inferred(挂接点实例化视图,迁移白名单一致) |
| 图 3 子任务 DAG | §9 子任务 DAG 文字图 | Inferred(文字图转绘为流程图,依赖关系一致) |
| 图 4 撮合数据模型 | §4.3 实体字段表 + §4.4 config 载体 + §10.1 migration | Inferred(按源字段表转绘 ER 图) |
源 TDD 全部 file:line 锚点在其生成 run 中以 rg/sed 逐条复核;上游原始锚点与复核实际行号存在漂移处以「来源锚点(复核:实际行号)」双写标注(如 h2b-trade.ts :55-58→:38-40、quote.ts 模型 :4-20、mark-participation-paid.ts:208 精确命中),内容实质均验证成立。本页沿用源文档复核后的锚点表述。