摘要
PRD V1.4 §5.2 FR-3.3-03 验收要点:「术语库覆盖选定行业词表;翻译与检索两端复用生效;词库更新机制可运营。」
现状判定为从零新建(无任何词库能力)——但两域消费端注入点已明确且经代码复核:
翻译域 fillPrompt 注入位(backend/src/modules/translation/client.ts:295-306,精确成立)与
检索域查询/索引扩展槽(AI-3.3-02 §4.4)。行业词条内容生产为持续运营任务,仅定义验收口径(覆盖数值 DEC-5),
不阻塞下游 TDD 生成与基础设施实施。
本卡交付共享术语库基础设施四件套——①术语实体(thesaurus_term)+ ②admin CRUD +
③消费 API 双契约(翻译端注入契约 / 检索端查询扩展契约)+ ④管理界面,及词库更新运营机制(生效/版本/回滚)。
RK-14 强制设计约束:实体 schema 冻结前必须经翻译域与检索域两域消费契约联合评审——评审前本卡全部字段级设计为
评审候选稿,不构成冻结。Blockers 为空,全卡可开工。
关键概念
thesaurus_term)②admin CRUD API ③消费 API 双契约(翻译端/检索端)④管理界面——共享术语库基础设施的独立前置交付。null=独立词条不参与组展开。terms 数组与 prompt_block(per-domain 术语约束段,注入格式冻结对象)。expandQuery 恒等占位的真实语义——P1 精确匹配起步,返回 [原词, ...组内全部 published 词];未命中或词库不可用恒返回 [q]。ai_tech / legal / tax / medical / education / cross_border_trade——逐字对齐 PRD FR-3.3-03 行业清单(AI 科技/法务/财税/医疗/教育/跨境贸易);新增域需迁移扩展枚举。false):关闭时消费函数恒等回退 + admin API 返回 404(能力整体不可见);与代码回退二选一,不并存两套回滚机制。方案设计
设计红线声明与设计归属
- Workflow 承载业务逻辑:词条全部状态变更(创建/更新/发布/废弃/恢复)必须走 Workflow step;查询类消费 API 为只读 service 无需 Workflow。
- 不修改上游源码:
@medusajs/*/@mercurjs/*零触碰;translation client(本地模块)的接线修改归 AI-3.5-03 实施并另行评审,本卡交付契约与消费 service 本体。 - 后端单一数据源:词条以后端
thesaurus_term表为唯一事实源;admin-panel 仅消费 API;消费端不建本地词表副本(检索端展开每次实时查询)。 - 参数化 SQL:全部查询经模块 service 参数化;ILIKE 转义沿用 route.ts:265 范式(
%_\转义)。
| 归属 | 内容 |
|---|---|
| 本卡 owns | ①thesaurus_term 实体;②admin CRUD API+管理界面;③消费 API 双契约(翻译端注入契约/检索端查询扩展契约);④词库更新运营机制(生效/版本/回滚)——供 AI-3.3-04、AI-3.5-03 引用 |
| references_only | AI-3.3-02 检索链路重构(本卡只对齐其 query_expansion 槽位格式,不重设计检索);AI-3.5-03 场景翻译的术语注入消费方式(引用方,接线实施归其卡) |
实体 schema 冻结前必须经翻译域(fillPrompt 注入格式)与检索域(查询扩展格式)两域消费契约联合评审——评审通过记录(日期/参与方/结论/遗留项)回填决策章节;schema 预留 extensions jsonb 扩展位避免两域二次返工。评审前本 TDD 全部字段级设计为「评审候选稿」,不构成冻结。评审候选稿仍可先行部分:模块骨架/CRUD(draft 态写入不影响消费契约)/管理界面可并行开工——仅「published 生效链路+消费函数」待联审后合入。
数据模型:thesaurus_term 实体(字段级,从零新建)
新本地模块 backend/src/modules/thesaurus/(models/services/index),表 thesaurus_term:
| 字段 | 类型 | 约束/默认 | 说明 |
|---|---|---|---|
| id | text | PK,prefix thsterm | medusa id 约定 |
| domain | enum(ai_tech, legal, tax, medical, education, cross_border_trade) | not null | 行业域枚举——逐字对齐 PRD FR-3.3-03 行业清单;新增域需迁移扩展枚举(附录留迁移记录位) |
| source_text | text | not null | 源术语原文 |
| source_locale | enum(ja-JP, zh-Hans, en-US) | not null | 源语言——值域复用 SUPPORTED_SOURCE_LOCALES(locale.ts:36-40) |
| target_text | text | not null | 目标译文 |
| target_locale | enum(ja-JP, zh-Hans, en-US) | not null | 目标语言;约束:target_locale ≠ source_locale(service 层校验) |
| synonym_group | text | nullable | 同义词组标识(同组内词条互为等价变体;检索端展开单位;null=独立词条不参与组展开) |
| status | enum(draft, published, deprecated) | not null, default draft | 生效语义:仅 published 参与两域消费(与 AI-3.4-02 category_standard 三态同构) |
| version | integer | not null, default 1 | 行内版本号;published 状态下再编辑时自增(运营机制④) |
| extensions | jsonb | nullable | RK-14 两域扩展位——评审后如需 domain 特有属性(检索域:词性/变体标记;翻译域:preferred 标记/禁译标志)落此列,避免二次 migration |
| reviewed_at / reviewed_by | timestamptz / text | nullable | 审核留痕(字段组命名沿用 seller-profile.ts:33-34 范式;reviewed_by=req.auth_context.actor_id) |
| rejection_reason | text | nullable | 废弃/驳回原因(沿用 seller-profile.ts:35 命名) |
| created_at / updated_at / deleted_at | timestamptz | 标准三件套 | medusa 约定 |
索引与约束:
UNIQUE(domain, source_text, source_locale, target_locale)(同域同源词同目标语唯一;软删行经 deleted_at 部分唯一索引处理,migration 按@medusajs/translation表 unique index 范式写 partial index);INDEX(domain, status)(消费端 published 热点查询);INDEX(synonym_group)(组展开);INDEX(status)。
- ①检索端是否需要
pos(词性)/variant_type(缩写/全称/别名类型)列或落 extensions; - ②翻译端是否需要
preferred(同 group 多译时的首选标记)——若需要,建议落extensionsjsonb(RK-14 预留位已备)。
消费 API 双契约(本卡冻结,RK-14 联审对象)
① 翻译端注入契约(翻译域消费格式——冻结稿,接线实施归 AI-3.5-03)
服务内部函数(backend/src/modules/thesaurus/service.ts 导出,无 HTTP 路由):
getTranslationTermContext({ domain, source_locale, target_locale })
→ { terms: [{ source_text, target_text, synonyms: string[] }],
prompt_block: string | null } // 无 published 词条时 prompt_block = null
- 取词口径:
domain = ? AND status = 'published' AND source_locale = ? AND target_locale = ?(参数化);synonyms= 同 synonym_group 内其他 published 词条的 source_text 集合(上限截断随联审定,暂记 20); - prompt_block 格式(per-domain 术语约束段,评审冻结对象):
【术语表(必须遵守,逐条按给定译法)】
- {source_text} → {target_text}
- …(每域上限条目数随联审定,暂记 50,按 updated_at DESC 截断)
- 注入位对齐:翻译请求携带 domain 上下文时,
prompt_block拼接进 system prompt(落点为client.ts:464-465systemPrompt 组装链尾——fillPrompt(client.ts:295-306)本身只做{source}/{target}替换不改其函数体;术语段作为独立段追加,避免污染 config.prompt 语义); - 双域联审点:prompt_block 分隔符/条目上限/是否标注禁译词,由翻译域引用方(AI-3.5-03)在本契约框架内提出、联审定稿。
② 检索端查询扩展契约(检索域消费格式——对齐 AI-3.3-02 §4.4 槽位)
expandQueryByThesaurus(q: string, locale?: string) → string[]
- 实现 AI-3.3-02 §4.4 预留的
expandQuery(q)恒等占位的真实语义;命中规则(P1 精确匹配起步):q 经 trim 后与source_text/target_text/同 synonym_group 词全等命中(大小写不敏感,ILIKE 转义同 route.ts:265 范式)→ 返回[原词, ...组内全部 published 词](去重保序);未命中或词库不可用 → 恒返回[q]; - 展开词集合注入 AI-3.3-02 §4.1 A1 查询构造:命中词集合 OR 链(其卡已声明「仍全参数化」);
- 分词/模糊匹配/跨语查询改写属 AI-3.3-04 演进(其 §5.2 已预留该落点位),本卡不含;
- 性能注记:词表量级为运营词条数(千级以内),
INDEX(domain,status)覆盖查询;命中判断走内存集缓存(进程内 TTL ≤60s,失效即回源)标注为演进项——首版直接查库即可满足; - 双域联审点:展开是否含
target_text方向词(检索跨语场景)由 AI-3.3-02 维护方在联审提出——本契约默认含(一词两用口径),评审可收紧。
词库更新运营机制(生效/版本/回滚)
| 机制 | 设计 |
|---|---|
| 生效 | 消费端每次实时读 status='published' 集合——发布即生效,无批量发布/定时生效复杂度(P1 不引入词库版本快照表;若运营需要「词库整体版本」概念,经 extensions 或独立表演进,本卡预留不实现) |
| 版本 | 行内 version 自增:published 词条被编辑 → 自动回退 draft 且 version+1(历史语义:编辑中不生效);Workflow step 落 metadata.prev_snapshot(编辑前快照 jsonb) |
| 回滚 | 行级:deprecate(下线,可带 reason)→ restore(恢复 published);批量回滚 = admin 按 updated_at 时间窗勾选批量 restore(复用 [id]/status 路由循环提交,不新建批量 API) |
| 内容生产边界声明 | 词条批量导入/导出(CSV 等)、行业词表初装内容均为运营任务——验收口径只约束「机制可运营」(CRUD/状态流转/留痕可用),词表覆盖数值=DEC-5,不阻塞本基础设施实施与下游 TDD |
Workflow 设计(数据变更必须走 Workflow)
新 Workflow 目录 backend/src/workflows/thesaurus/:
upsert-thesaurus-term(创建/更新)
steps: validate-thesaurus-input(域枚举/locale 白名单/目标语≠源语/唯一性预检)
→ upsert-thesaurus-term-record(status=draft;published 再编辑时 version+1+存 prev_snapshot)
→ emit "thesaurus-term.upserted"
补偿:upsert 失败回滚写入(事务内,无跨模块副作用)
transition-thesaurus-term(publish/deprecate/restore)
steps: load-thesaurus-term → assert-status-transition(状态机白名单,守卫在 step 内)
→ update-thesaurus-term-status(published/deprecated 时 reviewed_at/reviewed_by/rejection_reason 留痕)
→ emit "thesaurus-term.transitioned"
补偿:读旧值回写(快照式)
delete-thesaurus-term(软删)
steps: load → soft-delete → emit(补偿=恢复 deleted_at=null)
消费端(getTranslationTermContext/expandQueryByThesaurus)为只读 service,不设 Workflow。
子任务 DAG 与排期
| 子任务 | 依赖 | 估时 |
|---|---|---|
| T1 实体+migration | 无(候选稿) | 0.5d |
| T2 Workflow | T1 | 1d |
| T3 admin API | T2 | 1d |
| T4 管理界面 | T3 | 1.5d |
| T5 消费契约 service+单测 | RK-14 联审 + T1 | 1d |
| 联调冒烟(A2/A3) | T5 | 0.5d |
所属波次 p2-a(A 波先行——设计归属方,wave_verdict 结论①「A 波先行判定维持」一致)。交叉引用:AI-3.3-02(检索域上游契约,p1 已交付);AI-3.5-03(翻译域 B 波引用方);AI-3.3-04(B 波下游);与 AI-3.4-03 同属 p2-a 可并行,无文件/API 冲突。
数据模型 / API / Workflow
实体关系
admin CRUD API 契约(四件套②)
新 API 目录 backend/src/api/admin/thesaurus-terms/(route.ts+middlewares.ts+validators.ts,范式对齐 translation-config route 的中间件与出口处理):
| 路由 | 方法 | 权限域 | 请求/响应契约要点 | 错误码 |
|---|---|---|---|---|
/admin/thesaurus-terms |
GET | admin(auth) | query:domain/status/q(source_text ILIKE,转义沿用 route.ts:265 范式)/limit/offset;响应 { thesaurus_terms: [...], count, limit, offset } |
400(validator) |
/admin/thesaurus-terms |
POST | admin | body:domain/source_text/source_locale/target_text/target_locale/synonym_group?/extensions?;入 Workflow upsert-thesaurus-term;响应单词条(含 id/status=draft/version=1) |
400/409(唯一约束冲突) |
/admin/thesaurus-terms/[id] |
GET | admin | 单条详情 | 404 |
/admin/thesaurus-terms/[id] |
POST | admin | 局部更新(draft 可全改;published 再改走版本自增并回退 draft——运营机制) | 404/409 |
/admin/thesaurus-terms/[id] |
DELETE | admin | 软删(deleted_at 置位,Workflow 承载) | 404 |
/admin/thesaurus-terms/[id]/status |
POST | admin | body:{ action: "publish" | "deprecate" | "restore", reason? };入 Workflow transition-thesaurus-term;published/deprecated 时 reviewed_at/by 留痕 |
404/409(非法迁移) |
状态机(service 层白名单,forward-only 语义参照 qualification-state-machine 范式,本卡行内实现不引入 AI-3.9-04 工具依赖):draft → published → deprecated → published(restore 行级回滚);draft → deprecated(废弃草稿);published 再编辑 → draft(version+1)。非法迁移抛 409。
API 契约汇总
| 路由 | 方法 | 权限域 | 说明 |
|---|---|---|---|
/admin/thesaurus-terms(GET/POST)、/[id](GET/POST/DELETE)、/[id]/status(POST) |
— | admin | 见上表;无 store 端路由(消费走内部 service) |
内部 service:getTranslationTermContext / expandQueryByThesaurus |
— | 模块内 | 见「消费 API 双契约」,无 HTTP 暴露 |
AI 能力接入点:无 LLM 调用声明
共享术语库本体(实体/CRUD/消费 API/管理界面)零 LLM/AI 调用——与 backend/src/modules/translation/client.ts 通路无调用关系,是被其消费的数据源:admin 词条生产(人工运营,draft→published)→ published 集合 → thesaurus_term 表 → ①getTranslationTermContext → 术语约束段 → 翻译 LLM 调用的 prompt 上下文(LLM 调用本体仍由 translation client 承载,属 AI-3.5-03/3.5-02 通路);②expandQueryByThesaurus → 展开词集合 → 检索查询构造(纯 SQL,零 AI)。与该通路关系 = 数据供给(prompt 上下文增强),非通路复用/并行/抽公共任一形态——本卡不改通路。
前端改动面与 i18n
| 端 | 改动 | 证据/说明 |
|---|---|---|
| admin-panel | 新增 src/routes/thesaurus/page.tsx(列表:domain/status 筛选+分页;编辑 Drawer:全字段表单;状态动作按钮 publish/deprecate/restore)——骨架复用 settings/translation-config/page.tsx(配置页)与既有 Drawer 审核动作范式(AI-3.9-04 §2.2) |
从零新建页面,API 走 admin 五路由(status 动作独立路由,共 6 路由位) |
| storefront / b2b / h2b storefront | 无改动 | 词条为后端消费内部数据,前台零暴露 |
| vendor-panel | 无改动 | 词库管理为平台侧职责(PRD 未授权商家自维护词表) |
| influencer-panel / referrer-panel | 无改动 | rg 确认无词库触点 |
i18n 三语言 key 规划(en / zh-Hans / ja)
| 文件路径 | 新增 key(示意) |
|---|---|
admin-panel/src/i18n/translations/{en,zh-Hans,ja}.json(沿既有命名空间文件组织) |
thesaurus.title / thesaurus.domain.*(六域枚举名)/ thesaurus.status.draft|published|deprecated / thesaurus.field.sourceText|targetText|synonymGroup|version / thesaurus.action.publish|deprecate|restore / thesaurus.compliance.medicalNote(医疗域薬機法确认提示) |
三语值随实现提交;命名空间 thesaurus.* 独立,禁止混入 translation.* 既有空间。
验收与测试
验收标准(PRD 要点 + 技术口径)
| # | 验收标准 | 映射 |
|---|---|---|
| A1 | 四件套齐备:thesaurus_term 表 migration 可跑通;admin 5 路由可用(CRUD+状态流转);管理界面可完成「录入→发布→废弃→恢复」全生命周期操作 |
PRD 要点③(可运营) |
| A2 | 翻译端复用生效:对已发布词条,getTranslationTermContext 返回含该词的 prompt_block;格式与冻结稿一致(联审后以联审稿为准) |
PRD 要点②(翻译侧) |
| A3 | 检索端复用生效:对已发布词条及其同义词组,expandQueryByThesaurus(q) 返回含组内全部词的展开集合;展开词经 AI-3.3-02 A1 查询可命中(联调冒烟) |
PRD 要点②(检索侧) |
| A4 | 词表覆盖口径:覆盖选定行业词表(PRD 六域枚举齐备可录入);覆盖数值=基线立项定(DEC-5)——本卡验收框架不含数值达标 | PRD 要点① |
| A5 | L0 门禁:本文档十要素齐备+关键锚点可 rg(client.ts:295-306 / translation-config.ts / route.ts / algolia-product.ts / thesaurus_term / RK-14 / 联合评审);既有 translation 域单测回归(8 个单测文件)不受本卡破坏 | 模板 full 级 |
| A6 | 降级路径(词库不可用零阻断):空库→prompt_block=null 且翻译请求成功;查询异常→[q] 且检索成功;flag 关闭→恒等回退 | NFR-3.8-01 |
| A7 | 同义词组语义:组内展开去重保序、含原词;独立词条(synonym_group=null)不参与组展开 | 消费契约② |
| A8 | 状态机与留痕:非法状态迁移 409;publish/deprecate/restore 均落 reviewed_at/by/reason;published 再编辑 version+1 且回退 draft | API 契约/运营机制/Workflow |
测试策略(分层)与 L0 门禁
| 层 | 范围 | 明细 |
|---|---|---|
| 新增单测(service) | 消费契约/降级 | ①getTranslationTermContext:域+双语过滤、空库 null、异常 null;②expandQueryByThesaurus:精确命中/组展开/去重/未命中恒等/异常恒等;③状态机白名单(合法/非法迁移);④version 自增与 prev_snapshot |
| 新增 integration(API) | admin CRUD | CRUD 全链路(含唯一约束 409、软删后重建)、status 流转留痕断言、admin 权限域守卫 |
| 新增单测(Workflow) | Workflow 三件 | upsert/transition 两 Workflow 的 step 守卫(validate-thesaurus-input 的枚举/白名单/目标语≠源语校验) |
| 既有回归 | A5 | translation 域 8 个既有单测文件复跑(client/ssrf/config.service/mark-skipped-no-config/retry-translations/translation-updated-revalidate/translation-config/run-translate-product);products route 既有单测复跑(expandQuery 占位语义不破坏——恒等回退下查询行为逐字节等价) |
| 降级路径测试 | A6 | 与 AI-3.3-02 §8.2 降级测试同构(空库/异常/flag 三前置) |
量化指标占位口径:行业词表覆盖条数(分域)=基线立项定(DEC-5);词条审核抽检率=DEC-5;消费查询 p95 时延指标名 thesaurus_lookup_p95(数据源:service 耗时日志)随实现纳入,数值同属 DEC-5。
风险与降级
风险卡
medical_regulation_applicable/pharmaceutical_law_note 字段范式)——管理界面 medical 域编辑表单显示薬機法确认提示(i18n key thesaurus.compliance.medicalNote),确认结论记录进 rejection_reason/备注字段;法务口径归 FR-3.4-02/C3,本卡不内联。
降级与跳过路径(NFR-3.8-01 强制范式)
| 故障场景 | 行为 |
|---|---|
| 词库表不可用/查询异常 | 翻译端:getTranslationTermContext 返回 prompt_block = null,翻译照常执行(无术语段);检索端:expandQueryByThesaurus 返回 [q],检索照常执行 |
| 词库 feature flag 关闭 | 两消费函数恒等回退(null / [q])——词库能力整体旁路 |
| 域无 published 词条 | prompt_block = null(正常空态,非故障) |
跳过路径测试点(验收必含项):①空库→null;②查询抛错→null/[q] 且原业务调用不抛;③flag 关闭→恒等回退;④同义词组展开含原词去重(A6/A7)。
合规挂钩
| NFR / 评估项 | 影响判定 | 本卡动作 |
|---|---|---|
| NFR-3.9-01(APPI 数据最小化) | 词条为行业术语(非个人信息);admin 录入的 reviewed_by 为操作者 id 属业务留痕既有口径 | 无新增个人信息处理目的;无新增声明 |
| NFR-3.9-02(AI 输出免责) | 术语约束降低 AI 翻译误差,但不改变 AI 输出免责条款适用(译责细化归 NFR-3.9-02 P1 范围) | 引用不展开 |
| NFR-3.9-03(审计与可追溯) | 词条全生命周期 Workflow 留痕(who/when/prev_snapshot/reason) | Workflow 已落;管理端可查 |
| NFR-3.9-04(人工审核 AI 产出物) | 词条由人工生产并 publish(本身即人工把关);若未来引入 AI 辅助词条生成,须挂 AI-3.9-04 把关框架——ai_review_record.artifact_type 开放枚举可扩展 thesaurus_term_candidate | 引用+扩展位声明(本卡仅预留引用、不设计) |
| 薬機法(医疗域词条) | 医疗类词条若含健康功效/适应性表述属规制敏感区 | 医疗域词条发布时强制引用 FR-3.4-02 薬機法适用性确认;法务口径归 FR-3.4-02/C3,本卡不内联 |
| C6 | 不适用(无画像/对话/推荐处理) | — |
迁移与回滚
backend/src/modules/thesaurus/新模块建表经medusa db:generate thesaurus生成 migration(新增目录不触碰既有模块 migration 序列);- partial unique index(
UNIQUE(domain, source_text, source_locale, target_locale) WHERE deleted_at IS NULL)按@medusajs/translation表 unique index 范式手写于 migration 内(medusa model DSL 表达力不足处,migration 补写,属官方支持路径); - seed 兼容声明:不改动
pnpm db:reset/db:reset:demo流程——空词库下两消费函数恒等回退(A6),种子链路零依赖零破坏;demo 种子不注入词条(内容生产为运营任务,避免 seed 与运营口径混淆)。
| 变更 | 回滚路径 |
|---|---|
| 词库模块本体 | feature flag 关闭即旁路;代码回退=模块目录删除+migration down(新表独立,无既有数据纠缠) |
| admin API/界面 | 前端回退+路由注销;无数据回滚 |
| 消费契约接线 | 翻译端接线归 AI-3.5-03(其卡回滚章节承载);检索端 expandQuery 真实语义替换恒等占位后,回退=恢复恒等实现(AI-3.3-02 回滚方案同构) |
| 词条数据 | 行级 deprecate/restore 即业务回滚;物理回滚仅限 migration down(新表无历史包袱) |
feature flag 与开关:新增 featureFlags.thesaurus(backend/medusa-config.ts:55-56 featureFlags 区既有 translation: true 同位扩展,默认 false——词库功能独立开关):关闭时消费函数恒等回退+admin API 返回 404(能力整体不可见);灰度序:flag 开启→联审通过→消费链路合入;关闭态与代码回退等价,二选一不并存两套回滚机制(沿用 AI-3.3-02 §10.3 范式声明)。
前置决策点
Blocker 二分表
| Blocker | 类型 | 阻塞什么 | 可并行做什么 |
|---|---|---|---|
| (无) blockers 为空 | — | 本卡 blockers 为空(findings AI-3.3-03 blockers=[] 复核一致)——词条内容生产(运营任务)不阻塞基础设施实施与下游 TDD 生成(范围收窄 locked decision) | 全卡可开工:实体→Workflow→API→界面→消费契约依序交付 |
RK-14 设计协调(非 blocker,为设计前置流程)联审前置
| 项 | 内容 |
|---|---|
| 风险 | 术语库实体 schema 若未经翻译域(fillPrompt 注入格式)与检索域(查询扩展格式)两域联审定约,可能返工(risk-matrix RK-14,probability 3×impact 3=medium) |
| 强制缓解 | 实体 schema 冻结前必须完成两域消费契约(①②)联合评审;评审通过记录(日期/参与方/结论/遗留项)回填本节;评审前 schema 为评审候选稿 |
| 评审候选稿仍可先行部分 | 模块骨架/CRUD(draft 态写入不影响消费契约)/管理界面可并行开工——仅「published 生效链路+消费函数」待联审后合入 |
内部依赖与下游引用方(阻塞/可并行二分)
| 方向 | 条目 | 关系与二分 |
|---|---|---|
| 上游 | AI-3.3-02(三语检索,p1 已交付) | 检索端契约对齐对象:其 expandQuery 恒等占位与「注入格式归本卡冻结」声明——已交付,无阻塞 |
| 上游 | AI-3.5-02(动态内容翻译,pilot) | 翻译管道底座(本卡注入契约的落点通路);无直接阻塞 |
| 下游 | AI-3.3-04(B 波) | 阻塞其:查询理解的术语/同义词词料消费(DEP-3.3-03);可并行:其查询解析层架构设计不依赖词库数据 |
| 下游 | AI-3.5-03(B 波) | 阻塞其:场景翻译术语一致性消费(DEP-3.3-03,翻译端接线实施);可并行:其场景实体/prompt 路由架构设计 |
开放数值决策
- DEC-5 行业词表覆盖条数(分域)/ 词条审核抽检率 / 消费查询 p95 时延目标——基线立项定,本卡仅引用编号不臆造数值。
- 联审待定 prompt_block 分隔符/条目上限(暂记 50)/ synonyms 截断上限(暂记 20)/ 展开是否含 target_text 方向词——两域联合评审定稿。
附录:溯源表
本文档由 docs/reports/ai-module-prd/tdd/AI-3.3-03-shared-thesaurus.md(v1.0,2026-10-26)可读化重组生成。章节映射与处理方式如下:
| 本文档章节 | 源文档章节 | 处理方式 |
|---|---|---|
| 摘要 | 文档头(元数据/范围口径)+ §1 溯源与现状 | Summarized |
| 关键概念 | §1.2 关联条目映射 + §2 代码现状底座 + §4 方案设计 | Summarized |
| 方案设计 · 设计红线与设计归属 | §4.0 设计红线声明与设计归属 + RK-14 强制设计约束 | Preserved |
| 方案设计 · thesaurus_term 实体 | §4.1 数据模型(字段级表+索引约束+联审候选问题) | Preserved |
| 方案设计 · 消费 API 双契约 | §4.3(①翻译端注入契约 + ②检索端查询扩展契约) | Preserved |
| 方案设计 · 词库更新运营机制 | §4.4(生效/版本/回滚/内容生产边界) | Preserved |
| 方案设计 · Workflow 设计 | §4.5 Workflow 设计(三 Workflow steps 链) | Preserved |
| 方案设计 · 子任务 DAG | §9 波次与排期适配(T1-T5 DAG + 估时表) | Preserved |
| 数据模型 / API / Workflow(实体关系/admin CRUD/API 汇总/AI 接入点) | §4.1 实体 + §4.2 admin CRUD API 契约 + §4.8 API 契约汇总 + §5 AI 能力接入点 | Preserved |
| 前端改动面与 i18n | §4.6 管理界面触点 + §4.7 i18n 三语言 key 规划 | Preserved |
| 验收与测试 | §8.1 验收标准(A1-A8)+ §8.2 测试策略与 L0 门禁 | Preserved |
| 风险与降级(风险卡/降级/合规/迁移回滚) | §5.2 降级与跳过路径 + §6 合规挂钩 + §10 迁移与回滚 | Preserved |
| 前置决策点 | §7.1 Blocker 二分表 + RK-14 + §7.2 内部依赖 | Preserved |
| 图 1 词条生命周期状态机 | §4.2 状态机(service 层白名单) | Inferred(状态迁移文字描述转绘为 stateDiagram) |
| 图 2 双域消费时序 | §5.1 数据供给图 + §4.3 双契约 | Inferred(数据流转绘为时序图,含降级注记) |
| 图 3 子任务 DAG | §9 子任务 DAG 文字图 | Inferred(文字图转绘为流程图,依赖关系一致) |
| 图 4 实体字段级模型 | §4.1 字段表 | Inferred(按源字段表转绘 ER 图) |
源 TDD 全部 file:line 锚点在其生成 run(run-d7006c21fca3)中以 rg/sed 逐条复核;漂移双写共 4 处(translation-config.ts :13-21→:10-18、translation-config route.ts :49-92→:34/:45/:55/:75、algolia-product.ts :7-31→:5-31、seller-profile approval 组→:29-35);fillPrompt(client.ts:295-306)与 q 链路(route.ts:258-272)复核精确无漂移。本页沿用源文档复核后的锚点表述。