AI-3.3-04 查询理解与结构化检索 · 实现策略 TDD

企业主体智能识别与产品参数多维解析——查询理解服务 + 结构化检索(PRD 需求编号 FR-3.3-04)

类型:技术设计文档(TDD) 条目编号:AI-3.3-04(溯源 FR-3.3-04) PRD 版本:V1.4(2026-10-22) 优先级:Could(P2:规划中,语义检索深化项) 深度分级:architectural(架构级+首切片字段级) architectural 波次:p2-b(B 波) 文档版本:v1.0(2026-10-26) 源文件:docs/reports/ai-module-prd/tdd/AI-3.3-04-entity-recognition-param-parsing.md

摘要

PRD V1.4 §5.2 FR-3.3-04 验收要点:「抽样查询解析准确率(基线与目标立项定);解析结果可人工纠正并回流。」 现状判定为规划中(从零新建解析层)——q 自由文本仅做「原样 ILIKE 三列匹配」(backend/src/api/store/products/route.ts:258-272), 无任何意图识别/实体抽取/条件转化步骤,即 PRD「搜索请求原样透传」的代码形态; 主体结构化原料仅有 seller-profile 两块字段;主体可检索性为零(store 侧公司 API 仅注册创建,公开侧仅单商家详情)。

本卡 owns ①查询解析层架构(自然语言→结构化检索条件:主体五维+产品参数六维 schema)、②解析结果人工纠正回流机制、③主体检索 API 形态; references_only 词库实体与消费 API(AI-3.3-03 owns,其 schema 现为评审候选稿)、检索链路/索引 schema(AI-3.3-02 owns,本卡承接不重设计检索底座)、 全域主体收录范围(X-subject-scope 业务定义前置,分阶段落地)。 采用两段式分段:解析层架构段无门控立即可开工;词库归一化接入段以 DEP-3.3-03 门控(RK-14 联审冻结 + AI-3.3-03 消费 API 交付后方可开工)。 LLM 调用复用直调 translation client 既有通路(零新增审计面);解析失败降级为原关键词检索,零阻断。

解析维度
5 + 6
主体五维(类型/经营范围/属地/服务能力/信用资质)+ 产品参数六维(品类/功能/场景/客群/价格区间/交付模式)——逐字对齐 PRD 原文
验收标准
7
A1 解析准确率 … A7 L0 门禁,含降级零阻断(A3)与既有契约等价(A5)
Blocker
2
DEP-3.3-03(词库冻结门控接入段)+ X-subject-scope(阻塞主体档案字段级,不阻塞架构段)
验收先决
1
R-search-100-cap 承接——禁止在 100 条截断数据集上做解析优化验收

关键概念

查询解析层
自然语言查询 → 结构化检索条件(parsed_query)的转化层——把「AI 检索」区别于传统关键词搜索的核心能力。
双层解析架构
第一层规则层(无 LLM,恒可用:价格正则+关键词白名单字典)+ 第二层 LLM 层(可选增强,严格 JSON 输出)→ 合并与降级。LLM 不可用/失败/超时恒返回规则层结果或 fallback=true。
parsed_query
解析输出 schema(首切片字段级):intent 路由 + subject 五维数组 + product 六维字段 + normalized_terms 归一化词集 + confidence + source + fallback 标志。
query_expansion 注入位
AI-3.3-02 §4.4 预留的 expandQuery 恒等占位——本卡解析层是其真实语义供给方(「届时 expandQuery 语义从同义词扩展升级为查询重写」);解析产物经该位进入查询构造,命中词集合 OR 链、全参数化。
纠正回流
解析结果→人工修正(admin 工作台)→修正记录落库(query_parse_log)→回流优化(词库补词/解析规则调整)闭环;纠正生效挂 NFR-3.9-04 把关框架引用。
DEP-3.3-03
词库上游门控:AI-3.3-03 实体 schema 为评审候选稿(RK-14 两域联审前不冻结)——阻塞本卡「词库归一化接入段」,不阻塞解析服务架构与参数 schema 设计。
X-subject-scope
全域主体收录范围与主体档案字段的业务定义(PRD §7.4「随本能力定义」)——阻塞主体档案字段级设计与收录范围;company 现无行业/经营范围/规模字段为其阻塞的代码层佐证。
golden-set
标注用例集(__fixtures__/golden-set.json:自然语言查询→期望 parsed_query 断言)——离线回归载体;与线上 query_parse_log 抽样复核(运营载体)构成双载体。

方案设计

承接声明置顶(R-search-100-cap,本卡验收有效性的先决条件)

先决条件

客户端过滤 fetch limit=100 天花板(R-search-100-cap)必须先于解析增强解决——AI-3.3-02 §4.3 C1 服务端分页方案(选定分支)即全量索引承接方案,本卡直接承接,不重设计;本卡全部解析验收(要素 8)以「三端搜索走服务端 q 查询+真分页」为前置有效性条件(AI-3.3-02 §8.1 A3 判据用例通过为验收前提)。禁止在 100 条截断数据上做解析优化验收。

设计红线(AGENTS.md §0.1 逐条对照)
  • 解析层为只读查询增强,无业务数据变更——纠正回流记录落库走 Workflow;
  • @medusajs/*/@mercurjs/* 零触碰(解析服务为本地模块/纯函数层);
  • 解析配置与纠正记录以后端为单一数据源;
  • 解析产物注入查询链路时全部参数化绑定(沿用 route.ts:265/:268/:270 范式)。
分段门控内容开工条件
解析层架构段 无门控 解析服务双层架构、解析输出 schema、降级路径、主体检索 API 形态、纠正回流载体 立即可开工(p2-b)
词库归一化接入段 DEP-3.3-03 门控(AI-3.3-03 schema 为评审候选稿) 解析层术语归一化消费 expandQueryByThesaurus 真实语义 RK-14 两域联审冻结词库 schema、且 AI-3.3-03 消费 API 交付后方可开工

查询解析服务架构(架构级)

flowchart TD IN["用户查询 q(+ x-medusa-locale 上下文)"] --> RULE subgraph RULE["第一层 · 规则层(无 LLM,恒可用)"] R1["价格区间正则(货币符号/单位,含日式表述规则表)"] R2["关键词白名单映射(品类/场景/客群枚举词字典匹配,首版代码内置最小字典)"] R3["输出:低置信度结构化条件 + 未能解析的原词集合"] R1 --> R3 R2 --> R3 end RULE --> LLM subgraph LLM["第二层 · LLM 层(可选增强,AI 配置可用且规则层置信度不足时)"] L1["prompt:解析指令+维度枚举+few-shot(指令模板常量化,存代码不存 DB)"] L2["输出:JSON 结构化条件(parsed_query schema),失败/容错提取失败 → 回退规则层结果"] L3["术语归一化:解析词集合经词库消费 API 归一化(接入段,DEP-3.3-03 门控)"] L1 --> L2 --> L3 end LLM --> MERGE["合并与降级 merge(ruleResult, llmResult) → parsed_query"] RULE -->|"LLM 不可用/失败/超时 → 恒返回规则层结果或 fallback=true(原关键词检索)"| MERGE MERGE --> OUT["解析产物经 AI-3.3-02 query_expansion 注入位进入查询构造(不重写其 A1 查询)"]
图 1. 双层解析架构——规则层恒可用为底座,LLM 层为可选增强,降级路径常驻

落点位:解析产物经 AI-3.3-02 §4.4 预留的 query_expansion 注入位进入查询构造——本卡 owns 解析与条件生成,expandQuery 签名与注入格式对齐其冻结稿(命中词集合 OR 链、全参数化),不重写其 A1 查询构造。

解析输出 schema parsed_query(首切片字段级,本卡核心交付)

{
  "intent": "product_search | entity_search | mixed | unknown",
  "subject": {                        // 企业主体维度(PRD 五项,逐字对齐)
    "types": [],                      // 类型:枚举值域对齐 SELLER_BUSINESS_TYPES 值域 + X-subject-scope 扩展位
    "business_scopes": [],            // 经营范围:自由文本短语数组(首版不做受控枚举)
    "regions": [],                    // 属地:国家/地区码或文本(首版文本,受控码表随主体档案字段级定义)
    "capabilities": [],               // 服务能力:值域对齐 seller-profile capabilities 数组值域
    "credentials": []                 // 信用资质:文本短语(资质档案字段级随 X-subject-scope)
  },
  "product": {                        // 产品参数维度(PRD 六项,逐字对齐)
    "categories": [],                 // 品类:值域对齐既有类目树(seed 类目门类口径)
    "functions": [],                  // 功能:自由文本短语数组
    "scenarios": [],                  // 场景:文本短语数组
    "audiences": [],                  // 客群:文本短语数组
    "price_range": { "min": null, "max": null, "currency": "JPY" },  // 数值化,currency 按 locale 缺省
    "delivery_modes": []              // 交付模式:文本短语数组
  },
  "normalized_terms": [],             // 归一化检索词集合(注入 expandQuery 的命中词集;接入段经词库归一化)
  "confidence": null,                 // 规则层=启发式分级(low/mid/high);LLM 层=模型自评 0-1;null=未评估
  "source": "rule | llm | merged",
  "fallback": false                   // true=解析失败,查询链路按原关键词检索(结构化条件全空)
}
字段类型约束说明
intent enum(product_search, entity_search, mixed, unknown) not null 意图路由:entity_search→主体检索 API;product_search/mixed→商品查询链路(expandQuery 注入);unknown→原样透传
subject.* 五维数组 全可空 空数组=该维度未解析出条件;不做受控枚举强约束的首版维度以自由文本短语承载,命中靠 ILIKE OR 链
product.* 六维字段 全可空 同上;price_range 数值化经服务端校验(min≤max,currency 三字码)
normalized_terms string[] 非空时≥1 至少含原词(词库不可用时恒=[q] 归一化结果,与 AI-3.3-03 §4.3② 恒等回退语义一致)
fallback boolean not null, default false 降级标志(降级路径测试点载体)
约束声明

subject 各维的受控值域与主体档案字段映射属架构级预留——X-subject-scope 业务定义关闭后,字段级值域冻结属后续切片;首切片只冻结 schema 结构与 product 六维的解析口径。枚举口径声明:PRD 原文枚举为主体维度五项+产品参数维度六项——本卡解析 schema 逐字对齐 PRD 原文(任务卡「六+六」表述以 PRD 原文 5+6 为准修正)。

解析结果人工纠正回流机制(架构级)

记录落库(新本地模块 backend/src/modules/query-parse-log/,表 query_parse_log,架构级字段组):

字段组内容说明
标识组id(prefix qplg)/ created_at解析发生留痕
输入组 raw_q / locale / referer_context(枚举:categories/collections/seller) 隐私口径:raw_q 仅作解析质量分析与纠正输入;保留期限挂合规评估口径,评估前默认留存期限=实现期最短可用并随评估回填
输出组parsed_query jsonb / source(rule/llm/merged)/ fallback booleanparsed_query schema 原样落库
纠正组 corrected_query jsonb nullable / corrected_by / corrected_at 人工纠正结果(admin 界面提交;corrected_by=req.auth_context.actor_id,落库范式沿用 review-channel-qualification.ts:43-46 同构声明——承 AI-3.9-04 §4.1 A-3)

回流消费(架构级,两条通道):

  1. 词库补词回流:纠正前后的词差异(normalized_terms 差集)经 admin 列表导出为词库生产候选输入——引用 AI-3.3-03 的 admin 词条生产通道(其管理界面 CRUD),不新建词库写入 API;该通道受其 schema 评审候选稿 状态约束(RK-14 联审后生效);
  2. 解析规则回流:高频纠正模式(如价格正则漏检、品类字典缺词)转化为规则层字典/正则的迭代输入——工程运营通道(issue/字典 PR),非运行时自动学习(显式声明不做在线自学习,避免不可审计的行为漂移)。

Workflow(数据变更走 Workflow):correct-query-parse-log——steps:load-parse-log → validate-correction(corrected_query 结构校验)→ update-correction(corrected_query/by/at 落值)→ emit query-parse.corrected;补偿=快照回写。纠正不自动改变当次查询结果(当次已发生),只影响后续解析质量——「纠正后生效」的把关语义引用 NFR-3.9-04 框架(ai_review_record.artifact_type 开放枚举可扩展 query_parse_correction,本卡仅预留引用)。

主体检索 API 形态(架构级)

现状缺口:公开侧无主体列表/搜索 API(/store/companies 仅 POST、/store/seller/[handle] 仅详情);新建 API 不破坏既有契约。

项设计兼容性声明
路由 GET /store/entities/search(新建 backend/src/api/store/entities/)——不复用/不改动 /store/companies(POST 注册契约原样保留)与 /store/seller/[handle](详情契约原样保留) 既有 API 零改动
输入 q(自由文本,经解析)/ intent 提示(可选,客户端直传解析意图)/ limit/offset(服务端分页,承 AI-3.3-02 C1 范式)/ x-medusa-locale 参数化绑定
首期数据源 seller/company 既有主体(/store/seller/[handle] 同源 query.graph 域;结构化过滤维度=业务类型 business_type/能力 capabilities——seller-profile 既有字段) 不新建主体表
扩展位 subject 五维过滤参数全预留(types/business_scopes/regions/capabilities/credentials query 参数位);未随 X-subject-scope 关闭的维度传参时返回 400 显式未支持(防静默忽略) 分阶段启用
权限域 store(publishable key);响应仅公开档案字段(X-subject-scope 定义公开字段集合前的首期口径=name/handle/logo/所在地文本/business_type/capabilities——公开字段最小集,随主体档案字段级定义回填) APPI 挂钩见合规章节
错误码 400(非法参数/未支持维度)/ 404(无结果为空集 200,非 404)/ 500 —

全域主体收录分阶段路线(架构级声明,不预设业务结论):第一期=seller/company 主体(既有数据模型);第二期起=协会/机构/高校等主体类型——每类主体的数据模型、公开字段、收录审核流随 X-subject-scope 业务定义分阶段立项,本卡仅在 GET /store/entities/search 响应结构预留 entity_type 字段位(首期恒 seller),不做多态主体建模。

解析准确率评估载体(架构级,数值 DEC-5):①标注用例集 backend/src/modules/query-parse/__fixtures__/golden-set.json(覆盖 product 六维+subject 五维各≥N 条,N=DEC-5);②比对口径=维度级命中+intent 命中,准确率=维度命中加权(权重 DEC-5);③线上 query_parse_log 按抽样率抽取人工复核(抽样率 DEC-5),复核结论回流纠正通道——「离线用例集(回归)+线上抽样(运营)」双载体。

子任务 DAG 与排期

flowchart TD Q1["Q1 解析服务规则层 + parsed_query schema"] --> Q2["Q2 LLM 层 + 降级路径"] Q1 --> Q3["Q3 纠正回流载体 + admin 工作台"] Q4["Q4 主体检索 API 首期最小集"] Q2 --> Q5["Q5 golden-set 用例集 + 回归"] Q1 --> Q5 GATE["DEP-3.3-03 关闭:RK-14 联审冻结 + AI-3.3-03 消费 API 交付"] --> Q6["Q6 词库归一化接入段(normalized_terms 切换词库供给)——阻塞,后置"] Q2 --> GATE
图 2. 子任务 DAG——解析层架构段(Q1-Q5)无门控可开工;接入段(Q6)以 DEP-3.3-03 关闭为门控
子任务依赖估时
Q1 规则层+schema+单测无2d
Q2 LLM 层+降级+单测Q11.5d
Q3 纠正回流(实体+Workflow+admin)Q12d
Q4 主体检索 API+回归无1.5d
Q5 golden-set+跑批Q21d
Q6 词库接入段DEP-3.3-03 + Q21d

所属波次 p2-b(B 波——wave_verdict 结论④「AI-3.3-04 依赖 A 波词库」,B 波内部顺序自洽)。交叉引用:AI-3.3-03(A 波上游,评审候选稿);AI-3.3-02(p1 检索链路上游);AI-3.5-02(通路与审计);同波 AI-3.5-03 与 AI-3.6-03 无设计耦合(不同域、零文件冲突)。

数据模型 / API / Workflow

数据模型:query_parse_log(纠正回流载体)

erDiagram QUERY_PARSE_LOG { text id "PK(prefix qplg)" text raw_q "用户原始查询(仅解析质量分析与纠正输入)" text locale "查询语种上下文" text referer_context "categories / collections / seller" jsonb parsed_query "parsed_query schema 原样落库" text source "rule / llm / merged" boolean fallback "降级标志" jsonb corrected_query "人工纠正结果(nullable)" text corrected_by "req.auth_context.actor_id" timestamptz corrected_at "纠正时点" timestamptz created_at "解析发生留痕" }
图 3. query_parse_log 实体(架构级字段组;新表 append-only,纠正组字段随 admin 提交落值)
migration内容兼容性
query-parse-log 模块 migrationCREATE TABLE query_parse_log(字段组+索引:(created_at)、(fallback)、(corrected_at))新表,无存量
主体检索 API无 schema 变更(首期读既有 seller/company 域)—
pnpm db:reset / db:reset:demo新表空表参与 reset;解析层关闭时零调用零落痕种子链路零依赖零破坏

API 契约汇总

路由方法变更权限域要点
/store/entities/search GET 新增 store 架构级见方案设计;解析产物服务端生成,客户端不直传 parsed_query(防伪造条件绕过解析)
/store/products GET 行为扩展(经 expandQuery 注入,AI-3.3-02 owns 的注入位) store 解析产物=normalized_terms OR 链;全参数化;无 schema 破坏
/store/companies、/store/seller/[handle] POST/GET 无改动 store 既有契约原样保留(本卡兼容性红线)
/admin/query-parse-logs GET/POST 新增 admin GET 列表(fallback 统计/纠正队列筛选);/admin/query-parse-logs/[id]/correct POST 提交纠正(入 correct-query-parse-log Workflow)

Workflow 设计汇总

Workflow状态steps 链补偿
correct-query-parse-log 新增 load-parse-log → validate-correction → update-correction → emit 快照回写
解析本体(parseQuery 双层) 纯函数/只读 无 Workflow——查询解析为无状态只读计算,不写业务数据(解析留痕 write 走独立轻量 step/直写留痕表,属可观测性数据非业务状态,实现期以 logger+异步落库承载,不阻断查询) —

AI 能力接入点:与 translation client 通路的关系 = 复用直调

候选评估结论
A. 复用直调(解析服务 import 既有 client 纯函数) 零新增通路审计面(SSRF 三层防护/60s 超时/加密配置全套继承);client 为纯函数文件夹可跨模块调用 ✅ 选定
B. 并行新 client 私搭第二套 SSRF/超时/配置底座——任务卡明令禁止(未经审计通路) ❌ 禁止
C. 抽取公共 chat 基座 架构最干净但本卡时点改动面大(client.ts 被翻译管道 8 个单测锚定);留作演进位 ⏳ 演进声明 当第三个非翻译消费方出现时按 rule-of-three 评估抽取,届时迁移由该条目 TDD 承载
  • 配置源:解析调用沿用 translation-config DB 优先配置(getEffectiveConfig()),不新建配置实体——解析与翻译共用 provider;若实现期需独立解析模型,扩展位=translation_config 新列或 key 维度扩展(该表多行化属 AI-3.5-03/AI-3.6-03 同一批配置扩展协调项,本卡仅声明依赖不先行实施);
  • 预检:解析层 LLM 启用前置=isAIConfigured 探测(backend/src/utils/translation-config.ts:49-66 范式);未配置→恒走规则层(fallback 行为与今天等价);
  • prompt 设计与扩展位:解析指令模板常量置于解析模块内(工程资产非运营配置),输出约束=严格 JSON+维度枚举内联说明;JSON 容错提取复用 client.ts 既有解析范式;fillPrompt(client.ts:295-306)为翻译域 prompt 组装位,本卡不改其函数体——解析 prompt 独立组装,仅共用底层 HTTP 调用(与 AI-3.5-03 的场景路由扩展互不干扰:两条 prompt 链正交)。

前端改动面与 i18n

端改动
storefront 搜索框无强制改动(q 参数照传);搜索结果页可展示解析摘要 chips(「识别:品类=… 价格≤…円」)——架构级预留,启用随 UI 立项;解析失败时零 UI 变化(降级不可感知)
b2b / h2b storefront 与 storefront 同构预留(其搜索链路启用属 AI-3.3-02 §4.2② 范围,本卡不越界)
admin-panel 新增解析纠正工作台位:query-parse-logs 列表页(筛选 fallback=true/未纠正)+纠正 Drawer(parsed/corrected 双栏对比)——骨架沿用 AI-3.9-04 §2.2 审核动作范式(Drawer+rejectionReason 同构)
vendor / influencer / referrer panel 无改动

i18n:admin-panel/src/i18n/translations/{en,zhCN,ja}.json 新增命名空间 queryParse.*(queryParse.title / queryParse.filter.fallbackOnly / queryParse.correct.title / queryParse.correct.saved / queryParse.field.intent|confidence|source);storefront 侧解析摘要 chips key(search.parseSummary.*)三端 messages {en,ja,zh-Hans}.json 预留——三语值随实现提交,禁止混入既有命名空间。

验收与测试

验收标准(PRD 要点 + 技术口径)

#验收标准映射
A1 抽样查询解析准确率:golden-set 用例集回归通过,维度命中口径与准确率数值基线立项定(DEC-5);线上抽样复核通道可用(双载体) PRD 要点①
A2 解析结果可人工纠正并回流:admin 纠正工作台可提交纠正(corrected_query 落库+corrected_by 留痕);词差异导出可达词库生产通道(词库冻结后联调) PRD 要点②
A3 降级零阻断:AI 未配置/LLM 故障/超时三态下,搜索主链路成功且行为=原关键词检索(fallback 置位可观测) NFR-3.8-01
A4 解析有效性前置:>100 条数据集下解析增强验收全部在服务端分页链路执行(AI-3.3-02 A3 判据先行通过)——不在截断数据集上验收 承接声明 / R-search-100-cap
A5 主体检索 API 不破坏既有契约:/store/companies POST 与 /store/seller/[handle] GET 行为逐字节等价(既有回归);新 API 首期最小集可用、未支持维度传参显式 400 主体检索 API
A6 注入安全:解析产物(含 LLM 输出)进入查询链路全部参数化绑定;q 含 % _ \ 与引号按字面量命中 设计红线
A7 L0 门禁:本文档十要素齐备+关键锚点可 rg(route.ts:258-272 / seller-profile.ts / companies route.ts / admin/sellers/route.ts / DEP-3.3-03 / X-subject-scope / R-search-100-cap / expandQueryByThesaurus / 评审候选稿);products route 既有单测回归 模板

测试策略(分层)与量化占位

层范围明细
新增单测(解析层) 双层架构/降级 规则层:价格正则/字典映射/枚举值域校验;LLM 层:mock 响应 JSON 解析、容错提取、超时降级、fallback 置位;merge 策略;normalized_terms 恒等回退
新增单测(纠正回流) 纠正机制 correct-query-parse-log Workflow:校验/落库/留痕/补偿快照;词差异导出计算
新增 integration(API) API 契约 /store/entities/search 首期最小集;未支持维度 400;既有 /store/companies 与 [handle] 回归等价
golden-set 回归 A1 用例集跑批脚本+维度命中口径断言(数值占位 DEC-5)
既有回归 A7 products route(q 转义/q 空/locale 回退既有用例);translation 域 8 单测(client 复用无破坏)

量化指标占位口径:解析准确率(基线/目标)、LLM 超时预算、线上抽样率、golden-set 规模、解析时延 p95_parse_latency(数据源:解析层耗时日志)=基线立项定(DEC-5)。

风险与降级

风险卡

Blocker DEP-3.3-03 词库上游门控(internal_dependency)
AI-3.3-03 实体 schema 为评审候选稿(RK-14 两域联审前不冻结)——阻塞查询理解落地(接入段):词库实体/消费 API 冻结前,expandQueryByThesaurus 无可消费的冻结契约;不阻塞解析服务架构与参数 schema 设计。缓解:解析层架构段全量先行(规则层字典内置最小字典与词库解耦);词库冻结后仅需把字典供给源切换为词库消费 API(改造面收敛于 normalized_terms 生成一步)。
Blocker X-subject-scope 业务定义未关闭(business_definition)
阻塞主体档案字段级设计与全域主体收录范围(company 无行业/经营范围/规模字段的补齐、协会/机构/高校主体数据模型、公开字段集合定稿);不阻塞查询解析层架构(parsed_query schema 结构、解析服务、降级路径与主体检索 API 形态均可用架构级+扩展位先行)。缓解:解析服务/商品参数六维解析/纠正回流/golden-set 全量并行;主体检索 API 以首期 seller 主体最小集上线(entity_type 扩展位就绪)。
Medium 100 条截断数据上的解析验收空转
B2C 实际搜索走 fetch /store/products?limit=100 + 客户端过滤——截断数据上的任何解析增强验收空转。缓解:承接声明置顶——全部解析验收以 AI-3.3-02 C1 分页修复为先决(A4),禁止在截断数据集上验收。
Low translation_config 表多行化协调
若实现期需独立解析模型,配置扩展与 AI-3.5-03/AI-3.6-03 同批协调(避免三卡并发改同一表)——本卡仅声明依赖不先行实施。

降级与跳过路径(NFR-3.8-01 强制范式)

「未配置/故障即跳过不阻断主业务」——解析失败降级为原关键词检索
故障场景行为
AI 未配置(isAIConfigured false)LLM 层整体跳过,恒走规则层;规则层无命中的维度为空 → parsed_query.fallback 视场景置位,查询=现状原样 ILIKE
LLM 调用失败/超时/JSON 解析失败回退规则层结果;规则层也无结构化条件 → fallback=true,原关键词检索
解析超时预算LLM 调用超时上限 < 查询链路整体可接受时延(预算数值 DEC-5);超时即降级,不重试阻塞查询
词库消费 API 不可用(接入段)normalized_terms 恒=[q](AI-3.3-03 恒等回退语义),解析其余部分不受影响

跳过路径测试点(验收必含):①未配置→规则层直通+主链路成功;②LLM 5xx/超时→规则层回退+fallback 置位+查询成功;③JSON 解析失败→同②;④解析产物注入后 q 含通配符仍字面量命中(参数化不破坏)。

合规挂钩

NFR / 评估项影响判定本卡动作
NFR-3.9-01(APPI 数据最小化) ①解析输入含用户查询文本:按最小化处理——raw_q 仅落解析质量分析与纠正载体,不建用户维度索引、不做跨查询画像聚合;②主体档案公开字段聚合的 APPI 事项引用挂 C6 评估口径(评估清单由合规侧出具) 纠正载体留存期限占位 + 公开字段最小集
画像隔离声明(C6① 越界防护) 解析为当次查询条件转化,无用户画像沉淀——画像式个性化明确归 AI-3.7-02,本卡结构上不输出任何 user_id 维度的解析数据 显式声明(范围隔离)
NFR-3.9-03(审计) 解析调用为 LLM 调用,纳入 AI 调用审计口径(usage/成本采集承 AI-3.5-02 ai_call_log 载体,reference 扩展值 query_parse 候选——枚举扩展归其卡契约,本卡仅声明消费) 引用不展开
NFR-3.9-04(人工把关) 纠正回流「纠正后生效」挂把关框架:ai_review_record.artifact_type 开放枚举扩展位 query_parse_correction(候选,随实现期与 AI-3.9-04 维护方对齐后冻结) 纠正机制引用
NFR-3.9-02 解析结果为检索条件非对外内容输出,免责条款不直接适用;解析摘要 chips 属 UI 辅助信息 无新增

迁移与回滚

变更回滚路径
解析服务整体 独立开关 featureFlags.query_parsing(medusa-config featureFlags 区,默认 false):关闭→查询链路恒走原关键词检索(expandQuery 恒等回退),行为与 AI-3.3-02 交付态逐字节等价;代码回退=恒等占位恢复
LLM 层单独回退isAIConfigured 探测天然开关(未配置即规则层);LLM 层故障降级路径常驻,无需独立回滚动作
主体检索 API路由注销+前端入口下线即回退;无数据回滚(只读新路由,既有 API 未动)
纠正回流flag 关闭+admin 入口下线;query_parse_log 保留(质量分析资产,append-only)

上线顺序建议:Q1→Q2→Q5(解析链)∥ Q4(主体 API)∥ Q3(纠正回流)→ flag 开启灰度(先规则层观察,再开 LLM 层)→ Q6 等词库冻结后接入。全卡不改动既有检索/公司/商家 API 契约。

前置决策点

Blocker 二分表(architectural 级硬要求:要素 7 强制完整)

Blocker类型阻塞什么可并行做什么
DEP-3.3-03 Blocker
(共享术语库基础设施 A 波先行;其 schema 为评审候选稿)
internal_dependency 阻塞查询理解落地(接入段):解析层术语归一化真实语义——词库实体/消费 API 冻结前,expandQueryByThesaurus 无可消费的冻结契约;不阻塞解析服务架构与参数 schema 设计(双层架构/schema 首切片/降级路径/评估载体全部无词库依赖) 解析层架构段全量可开工:规则层字典先行(内置最小字典与词库解耦)、LLM 层、parsed_query schema、纠正回流载体、主体检索 API、golden-set 用例集;词库冻结后仅需切换字典供给源(接入段改造面收敛于 normalized_terms 生成一步)
X-subject-scope Blocker
(全域主体收录范围与主体档案字段业务定义,PRD §7.4 明示「随本能力定义」)
business_definition 阻塞主体档案字段级设计与全域主体收录范围(company 字段补齐、协会/机构/高校主体数据模型、公开字段集合定稿);不阻塞查询解析层架构(parsed_query schema 结构、解析服务、降级路径与主体检索 API 形态均可用架构级+扩展位先行) 解析服务/商品参数六维解析/纠正回流/golden-set 全量并行;主体检索 API 以首期 seller 主体最小集上线,X-subject-scope 关闭后按主体类型分阶段扩展(entity_type 扩展位就绪)

内部依赖与下游引用方

方向条目关系与二分
上游 AI-3.3-02(p1 已交付) 承接不重设计:A1 跨语查询/服务端分页(R-search-100-cap 修复)/expandQuery 注入位——本卡解析产物唯一落点;其 A3 判据(>100 条可见性)为本卡验收有效性前置
上游 AI-3.3-03(p2-a,评审候选稿) 术语归一化输入消费方(接入段);RK-14 联审冻结前本卡接入段不得开工
上游 AI-3.5-02(pilot) LLM 通路与审计载体消费(复用直调);无串行阻塞
下游 AI-3.3-05(p2-a) 无直接耦合(撮合为需求-供给匹配域);主体结构化条件未来可供其匹配特征复用(演进引用不设计)

开放数值决策

  • DEC-5 解析准确率基线/目标、LLM 超时预算、线上抽样率、golden-set 规模——基线立项定,本卡仅引用编号不臆造数值。
  • 后续切片 subject 五维受控值域与主体档案字段映射——随 X-subject-scope 业务定义冻结;首切片只冻结 schema 结构与 product 六维解析口径。

附录:溯源表

本文档由 docs/reports/ai-module-prd/tdd/AI-3.3-04-entity-recognition-param-parsing.md(v1.0,2026-10-26)可读化重组生成。章节映射与处理方式如下:

本文档章节源文档章节处理方式
摘要文档头(元数据/设计归属总口径)+ §1 溯源与现状Summarized
关键概念§1.2 关联条目映射 + §3 缺口与目标状态 + §4 方案设计Summarized
方案设计 · 承接声明与设计红线§4.0 承接声明置顶 + 设计红线 + 两段式分段Preserved
方案设计 · 双层解析架构§4.1.1 双层解析架构Preserved
方案设计 · parsed_query schema§4.1.2 解析输出 schema(首切片字段级)Preserved
方案设计 · 人工纠正回流机制§4.2(query_parse_log 字段组+两条回流通道+Workflow)Preserved
方案设计 · 主体检索 API 形态§4.3(API 形态表+分阶段路线)+ §4.5 评估载体Preserved
方案设计 · 子任务 DAG§9 波次与排期适配(Q1-Q6 DAG + 估时表)Preserved
数据模型 / API / Workflow§4.4 API 契约汇总 + §4.6 Workflow 设计汇总 + §5 AI 能力接入点 + §10.1 MigrationPreserved
前端改动面与 i18n§4.7 前端触点与 i18n 三语言 key 规划Preserved
验收与测试§8.1 验收标准(A1-A7)+ §8.2 测试策略与量化占位Preserved
风险与降级(风险卡/降级/合规/迁移回滚)§3.2 缺口清单 + §5.3 降级与跳过路径 + §6 合规挂钩 + §10.2 回滚方案Preserved
前置决策点§7.1 Blocker 二分表 + §7.2 内部依赖与下游引用方Preserved
图 1 双层解析架构§4.1.1 架构文字图Inferred(文字架构图转绘为流程图,层次与降级路径一致)
图 2 子任务 DAG§9 子任务 DAG 文字图Inferred(文字图转绘为流程图,依赖关系一致)
图 3 query_parse_log 实体§4.2 记录落库字段组 + §10.1 migrationInferred(按源字段组转绘 ER 图)
锚点复核约定

源 TDD 全部 file:line 锚点在其生成 run(run-e79ea839f23d)中以 rg/sed 逐条复核;漂移双写共 3 处(seller-profile.ts 卡内 :20-42→模型 :16 起/结构化属性 :23-26、company.ts 卡内 :6-28→:4-28、admin/sellers q 分支卡内 :66-74→:71-75/GET :42);route.ts:258-272、store/companies POST :38、seller/[handle] GET :4、client.ts:1-28 复核精确无漂移。词库消费契约引用状态:AI-3.3-03 实体 schema 为评审候选稿(RK-14 两域联审前不冻结),本卡接入段以其联审冻结稿为准。本页沿用源文档复核后的锚点表述。