AI-3.5-03 垂直场景商务翻译 · 实现策略 TDD

场景提示词库 + 术语库复用 + 分批上线——场景实体、三级 prompt 路由与批次路由(PRD 需求编号 FR-3.5-03)

类型:技术设计文档(TDD) 条目编号:AI-3.5-03(溯源 FR-3.5-03) PRD 版本:V1.4(2026-10-22,C1 已更正口径) 优先级:Should(P2:规划中) 深度分级:architectural architectural(要素 4=架构级+首切片字段级;要素 7 强制完整) 波次:p2-b(B 波) 文档版本:v1.0(2026-10-26) 源文件:docs/reports/ai-module-prd/tdd/AI-3.5-03-vertical-scenario-translation.md

摘要

PRD V1.4 §5.4 FR-3.5-03 验收要点(原文):「各场景译文术语一致性抽检;高风险场景接入双轨复核(FR-3.5-04)后方可启用。」 需求本体:面向报价单据、商务合同、企业资质文件、客服对话、数字员工话术、授权店铺页面、消费者咨询应答七场景提供场景化商务翻译(七场景为本卡 scenario_code 枚举的唯一合法来源,不得增删场景语义)。 现状说明关键句:当前翻译能力无场景建模——无术语库、无场景提示词集;商务合同与报关文件目前走固定模板生成、不经 AI 翻译。

代码证据坐实「规划中」:rg -i "scenario" 于 translation 模块全目录 0 业务命中(无场景实体/模板查找/路由机制); translation_config.prompt 为仅支持 {source}/{target} 占位的单一全局字符串; fillPrompt 扩展位在位(client.ts:295-306 复核精确无漂移)。管道底座(client/加密/重试队列/双防线跳过)同 AI-3.5-02 在位。

设计归属总口径:本卡 owns ①场景实体(七场景枚举+prompt_template+适用 locale 对)、②per-locale/per-entity 三级 prompt 路由机制、③术语注入消费方式、④场景批次上线路由; references_only ⑤翻译管道底座(AI-3.5-02)、⑥词库实体与注入契约(AI-3.3-03——schema 为「评审候选稿」,RK-14 两域联审前不冻结)、⑦高风险双轨复核(AI-3.5-04,本卡仅标门禁位,禁止两套状态机)。

场景建模段
4 子任务
S1 实体+migration / S2 三级路由+接线 / S3 admin API+界面 / S4 批次门禁+开关——无门控立即可开工
七场景枚举
7
批次 1 非对话 4(报价单据/商务合同/企业资质/店铺页面)+ 批次 2 对话 3(客服对话/数字员工话术/咨询应答)
接入段三重门控
3
A 术语注入(DEP-3.3-03)/ B 翻译启用与扩量(D-dec1+C2)/ C 对话类批次(C-c6-dialog)——互不阻塞彼此之外的部分
验收标准
7
A1 术语一致性抽检 … A7 L0 门禁(关键锚点 rg+translation 域 8 单测回归)

关键概念

translation_scenario 实体
新本地模块 translation-scenario(prefix trscene):七场景枚举+prompt_template(支持 {source}/{target}/{terms} 三占位)+适用 locale 对+priority+status+high_risk+batch+version。
三级 prompt 路由
第一级 scenario+locale 命中(published+locale 对+模板非空,取 priority 最高)→ 第二级场景默认模板(双 null)→ 第三级全局 prompt(translation_config.prompt,现状行为逐字节等价)。任何一级查询失败回退第三级,不阻断翻译。
{terms} 术语注入
消费 AI-3.3-03 契约 getTranslationTermContext:模板含 {terms} 时以 prompt_block 整段替换;prompt_block=null(域无词条/词库不可用/flag 关闭)→ 替换为空串,翻译照常执行(NFR-3.8-01)。
批次路由 batch1 / batch2
非对话类 4 场景=batch1(不受 C-c6-dialog 约束);对话类 3 场景=batch2(C-c6-dialog 评估关闭后方可上线)。批次为实体字段非运行时可变配置,禁止混批(batch2→batch1 迁移在 step 守卫拒绝)。
high_risk 门禁位
true 场景生产生效前置=AI-3.5-04 双轨复核通道就绪(PRD 验收要点原文)。清单初值(候选,随 TASK-016 定稿):business_contract=true、company_qualification=true,其余 false;未就绪时 fail-closed 拦截。
DEP-3.3-03 / RK-14
共享术语库基础设施(A 波先行)的注入契约消费依赖;其实体 schema 为「评审候选稿」——RK-14 两域联审冻结前不得开工接入段 A,但 {terms} 占位在冻结前按空串处理=功能完整但无术语约束。
三态状态机
draft → published → deprecated → published(restore);published 再编辑 → 回退 draft 且 version+1(存 prev_snapshot)。与 AI-3.3-03 词条三态同构、行内实现(不引入 AI-3.9-04 工具依赖)。
C-c6-dialog
客服对话/数字员工话术/消费者咨询应答三场景的翻译使委托/越境处理对象从商品数据升级为对话数据(PRD §8.1 C6③ 原文)——批次 2 生产上线硬门控,评估清单由合规侧出具(RK-07)。

方案设计

两段式总览(承 TDD-TEMPLATE §0 规则 4)

分段门控内容开工条件
场景建模段(无门控) 无门控 ①场景实体+七场景枚举 ②三级 prompt 路由 ③批次路由框架(非对话批次) ④admin 管理 API/界面 ⑤路由独立开关(关闭=现状全局 prompt 行为) 立即可开工(p2-b);生产行为在翻译接入(D-dec1/C2)前与现状等价——模板只影响已接入后的调用
接入段(门控) DEP-3.3-03 + D-dec1/C2 + C-c6-dialog A 术语注入接线 / B 翻译启用与扩量(批次挂 AI-3.5-02 §4.2 步骤链链尾)/ C 对话类批次 各门控独立关闭后对应段方可开工;三门控互不阻塞彼此之外的部分
设计红线(AGENTS.md §0.1 逐条对照)

场景模板/批次配置的全部数据变更走 Workflow step(4.6);@medusajs/* 零触碰(translation client/config/job 均为本地模块内扩展);场景模板与生效状态以后端表为单一数据源;查询参数化绑定。

场景实体 translation_scenario(首切片字段级,从零新建)

新本地模块 backend/src/modules/translation-scenario/(models/services/workflows/index),表 translation_scenario:

字段类型约束/默认说明
idtextPK,prefix trscene
scenario_codeenum(quotation_doc, business_contract, company_qualification, support_dialog, digital_employee_script, storefront_page, consumer_inquiry)not null七场景枚举,逐字对齐 PRD 需求描述原文(报价单据/商务合同/企业资质文件/客服对话/数字员工话术/授权店铺页面/消费者咨询应答);新场景经迁移扩展枚举
prompt_templatetextnullable场景模板,支持 {source}/{target}/{terms} 三占位({terms}=术语约束段落位);null=该行仅作批次/优先级占位不参与路由
source_locale / target_localeenum(ja-JP, zh-Hans, en-US)nullable / nullable适用 locale 对;双 null=全 locale 对适用的场景默认模板(三级路由第二级);值域复用 SUPPORTED_SOURCE_LOCALES(locale.ts:36-40),禁止新建字面量;约束:两者同时非空时 target_locale ≠ source_locale(service 层校验)
priorityintegernot null, default 0同 scenario_code 多条 published 命中时取 priority 最高(同分取 updated_at 最新)
statusenum(draft, published, deprecated)not null, default draft生效语义:仅 published 参与路由(与 AI-3.3-03 词条三态同构)
high_riskbooleannot null, default false高风险门禁位:true 场景生产生效前置=AI-3.5-04 双轨复核通道就绪;清单初值(候选,随 TASK-016 定稿):business_contract=true、company_qualification=true,其余 false
batchenum(batch1_nondialog, batch2_dialog)not null批次路由:非对话类(quotation_doc/business_contract/company_qualification/storefront_page)=batch1;对话类(support_dialog/digital_employee_script/consumer_inquiry)=batch2(C-c6-dialog 门控)
versionintegernot null, default 1行内版本号:published 再编辑→回退 draft 且 version+1(运营机制沿用 AI-3.3-03 同构)
metadatajsonbnullableprev_snapshot(编辑前快照)等扩展
created_at / updated_at / deleted_attimestamptz标准三件套

索引与约束:INDEX(scenario_code, status)(路由热点查询);INDEX(scenario_code, source_locale, target_locale, status)(第一级命中);INDEX(batch, status)(批次门控扫描)。

三级 prompt 路由机制(架构级,路由失败回退默认不阻断)

  • 接线位置:解析出的模板在传入 fillPrompt(client.ts:295-306)之前完成 {terms} 占位替换——fillPrompt 函数体保持不动(继续只做 {source}/{target} 替换),场景路由作为独立纯函数(resolveScenarioPrompt,新 service)在 system prompt 组装链(client.ts:464-465)上游插入;
  • 回退语义:任何一级查询失败(DB 异常)→ 直接第三级全局 prompt,不阻断翻译(NFR-3.8-01);路由命中日志(命中层级/scenario id)进可观测日志,指标名 scenario_route_hit_level 随实现纳入;
  • 幂等与并发:路由为只读查询,无缓存一致性风险;首版直查库(模板量级=场景×locale 对,千级以内),进程内 TTL 缓存标注为演进项。

术语注入消费(接入段 A——DEP-3.3-03 门控;契约引用不自建)

消费契约(引用 AI-3.3-03 §4.3①——状态:评审候选稿,RK-14 联审前不冻结,以联审稿为准):

getTranslationTermContext({ domain, source_locale, target_locale })
  → { terms: [...], prompt_block: string | null }
  • {terms} 占位替换:路由产出的模板含 {terms} 时 → 以 prompt_block 整段替换;prompt_block=null(域无词条/词库不可用/flag 关闭)→ {terms} 替换为空串(模板中该段标记自然消失,翻译照常执行)——注入失败跳过术语段(NFR-3.8-01);
  • domain 取值:场景→词库域映射常量表(如 business_contract→legal、company_qualification→tax/legal 候选,映射表随实现期与运营确认;词库六域枚举值域以联审冻结稿为准);
  • 拼接位置:{terms} 替换发生在模板层(三级路由接线上游),不触碰 client.ts:464-465 组装语义;
  • 本卡不设计:词条实体/取词口径/prompt_block 格式细节——全部引用 AI-3.3-03,杜绝第二套词库语义。

场景批次上线路由(对话/非对话分批,禁止混批)

批次场景(scenario_code)生效门控说明
批次 1(非对话类) quotation_doc / business_contract / company_qualification / storefront_page status=published+翻译接入(D-dec1/C2,承 AI-3.5-02 §4.2 步骤链);high_risk 场景(business_contract/company_qualification 候选)另挂 AI-3.5-04 双轨复核门禁位 非对话批次不受 C-c6-dialog 约束(处理对象仍为商务文书/页面内容,非对话数据)
批次 2(对话类) support_dialog / digital_employee_script / consumer_inquiry C-c6-dialog 评估关闭后方可上线(C6③:对话数据使委托/越境处理对象从商品数据升级为对话数据)+批次 1 同款门控 RK-07 缓解落位:批次配置为常量表起步(代码内置),禁止运行时把对话类场景加入批次 1
  • 门禁实现:路由查询条件含批次门控谓词——batch2 场景在 C-c6-dialog 门控常量(C6_DIALOG_EVALUATION_CLOSED=false 起步)未翻转时不参与生产路由(dev/test 环境可经显式 env 覆盖用于开发验证,生产不可);high_risk 场景在 AI-3.5-04 复核通道就绪常量未翻转时同理 fail-closed 拦截;
  • 混批防护:批次为实体字段非运行时可变配置——变更 batch 字段走 Workflow 且校验「batch2→batch1 迁移禁止」(守卫在 step);admin 界面不提供批次编辑入口(防误操作);
  • 报关单据注记:报关文件不在七场景枚举内(需求描述原文无此项),维持固定模板现状,本卡不新增;商务合同/报关固定模板不经 AI 的 PRD 口径维持(生成归业务模块,翻译入口待其接入)。

路由流程 · 执行时序 · 状态机 · 实体图

flowchart TD REQ["翻译请求(场景上下文:scenario_code + source/target locale)"] --> C0{"有场景上下文?"} C0 -- "无" --> L3["第三级:全局 prompt(translation_config.prompt)——现状行为,逐字节等价"] C0 -- "有" --> L1{"第一级:scenario+locale 命中?
published + locale 对 + prompt_template 非空"} L1 -- "命中" --> HIT["取 priority 最高(同分取 updated_at 最新)"] L1 -- "未命中" --> L2{"第二级:场景默认模板?
同 code + 双 null + published"} L2 -- "命中" --> HIT L2 -- "未命中" --> L3 L1 -- "DB 异常" --> L3 L2 -- "DB 异常" --> L3 HIT --> OUT["resolveScenarioPrompt 产物 → terms 替换 → fillPrompt"] L3 --> OUT OUT --> OBS["命中日志:scenario_route_hit_level(可观测指标)"]
图 1. 三级 prompt 路由——scenario+locale 命中 → 场景默认(双 null)→ 全局 prompt;任何一级查询失败回退第三级不阻断(转绘自源 §4.2,Inferred)
sequenceDiagram autonumber participant BIZ as 场景翻译请求 participant R as resolveScenarioPrompt(三级路由) participant S as translation_scenario 表 participant T as getTranslationTermContext(DEP-3.3-03 门控) participant F as fillPrompt(client.ts:295-306 函数体不动) participant C as translation client(复用 AI-3.5-02 通路) participant Q as translation_job 重试队列 BIZ->>R: scenario_code + locale 对 R->>S: 第一级 scenario+locale(published) S-->>R: 未命中 → 第二级 场景默认(双 null) S-->>R: 仍未命中或 DB 异常 → 第三级 全局 prompt(不阻断) R->>T: 模板含 terms 占位时取术语约束段 alt prompt_block = null(域无词条/词库不可用/flag 关闭) T-->>R: terms 替换为空串(注入失败跳过术语段) else prompt_block 正常 T-->>R: prompt_block 整段替换 terms end R->>F: 模板产物(仅在组装链上游插入) F->>C: system prompt 组装(client.ts:464-465) alt LLM 未配置(isAIConfigured 预检) C->>Q: 双防线跳过——markSkippedNoConfig 终态化(承 AI-3.5-02,零改动引用) else AI 调用失败 C->>Q: 幂等 enqueue 重试(指数退避,MAX 5) else 调用成功 C-->>BIZ: 落译文+translation.product.updated 事件 end Note over BIZ,Q: 模板缺失/路由异常/术语注入失败/LLM 未配置/调用失败均不阻断主业务(NFR-3.8-01)
图 2. 场景翻译执行链与三级回退——含术语注入门控与双防线跳过(转绘自源 §4.2/§4.3/§5.3,Inferred)
stateDiagram-v2 state "draft(草稿,默认)" as draft state "published(生效——仅此态参与路由)" as published state "deprecated(废弃)" as deprecated [*] --> draft: POST /admin/translation-scenarios(入 Workflow,draft 态) draft --> published: publish(批次/高风险门禁预检告警,拦截在生产路由层) published --> deprecated: deprecate(留 reason) deprecated --> published: restore draft --> deprecated: 直接废弃 published --> draft: 再编辑(version+1,存 prev_snapshot) note right of published forward-only 白名单(service 层校验,非法迁移抛 409) 高风险场景生产生效另挂 AI-3.5-04 双轨复核门禁位 end note
图 3. translation_scenario 状态机——draft → published → deprecated → published(restore);published 再编辑回退 draft 且 version+1(转绘自源 §4.5,Inferred)
erDiagram TRANSLATION_SCENARIO }o--|| TRANSLATION_CONFIG : "第三级回退到全局 prompt" TRANSLATION_SCENARIO ||--o{ TRANSLATION_JOB : "场景翻译执行复用队列(经场景参数承载,避免枚举膨胀)" THESAURUS }o--o{ TRANSLATION_SCENARIO : "getTranslationTermContext 注入 terms 占位(DEP-3.3-03 门控,评审候选稿)" TRANSLATION_SCENARIO { text id PK "prefix trscene" text scenario_code "七场景枚举 not null" text prompt_template "nullable 支持 source target terms 占位" text source_locale "nullable ja-JP zh-Hans en-US" text target_locale "nullable 双 null=场景默认" integer priority "default 0 同分取 updated_at 最新" text status "draft published deprecated" boolean high_risk "default false 双轨复核门禁位" text batch "batch1_nondialog 或 batch2_dialog" integer version "default 1 再编辑自增" jsonb metadata "prev_snapshot 等扩展" } TRANSLATION_CONFIG { text id PK "现有单行配置" text prompt "全局模板(第三级)" } TRANSLATION_JOB { text id PK "现有重试队列" text status "pending processing done failed" } THESAURUS { text domain "词库域(AI-3.3-03 owns)" text prompt_block "注入契约产物(评审候选稿)" }
图 4. translation_scenario 实体与上下游关系——场景实体本卡 owns;队列与全局配置复用 AI-3.5-02;术语契约归 AI-3.3-03(评审候选稿)(按源 §2.1/§4.1 转绘,Inferred)

数据模型 / API / Workflow

数据模型汇总

对象变更内容
translation_scenario(新表/新模块) 新建 12 字段全列见场景实体字段表+3 索引(migration 走 medusa db:generate)
translation_config / translation_job / 翻译 client 无 schema 改动 管道底座 references_only(AI-3.5-02 owns);场景翻译服务端触发若入队,经场景参数承载而非扩展 reference 枚举(避免枚举膨胀,源 §2.1③ 显式声明)
db:reset 兼容声明

空场景表下三级路由恒落第三级=现状全局 prompt 行为,种子链路零依赖零破坏;demo 种子不注入场景模板(模板为运营资产,避免 seed 与运营口径混淆——同 AI-3.3-03 §10.1 声明口径)。

API 契约汇总

路由方法权限域契约要点错误码
/admin/translation-scenarios GET admin query:scenario_code/status/batch/limit/offset;响应 { translation_scenarios, count }+ai_configured 透出(缺口⑥) 400
/admin/translation-scenarios POST admin body:scenario_code/prompt_template/source_locale?/target_locale?/priority?/high_risk?/batch;入 Workflow upsert-translation-scenario;响应单行(status=draft) 400/409(同 code+locale 对+priority 唯一性冲突校验随实现细化)
/admin/translation-scenarios/[id] GET / POST / DELETE admin 详情 / 局部更新(published 再编辑→回退 draft+version+1)/ 软删 404/409
/admin/translation-scenarios/[id]/status POST admin body:{ action: "publish"|"deprecate"|"restore", reason? };入 Workflow transition-translation-scenario;publish 时批次/高风险门禁预检告警(不拦截录入,拦截生产生效——门禁在路由层) 404/409(非法迁移)
内部 service:resolveScenarioPrompt — 模块内 三级路由,无 HTTP 暴露 —

状态机(service 层白名单,forward-only):draft → published → deprecated → published(restore);draft → deprecated;published 再编辑 → draft(version+1)。非法迁移抛 409。沿用 AI-3.3-03 §4.2 同构白名单,行内实现,不引入 AI-3.9-04 工具依赖。

Workflow 设计(数据变更必须走 Workflow)

新 Workflow 目录 backend/src/workflows/translation-scenario/:

upsert-translation-scenario
  steps: validate-scenario-input(七场景枚举/locale 白名单/目标语≠源语/batch 与 scenario_code 匹配校验:
           对话类 scenario_code 强制 batch2、非对话类强制 batch1——混批在录入层即拒绝)
       → upsert-scenario-record(draft 态;published 再编辑 version+1+存 prev_snapshot)
       → emit "translation-scenario.upserted"
  补偿:upsert 失败事务回滚

transition-translation-scenario
  steps: load-scenario → assert-status-transition(白名单守卫在 step 内)
       → update-scenario-status(published/deprecated 落 reason/metadata)
       → emit "translation-scenario.transitioned"
  补偿:快照回写

delete-translation-scenario
  steps: load → soft-delete → emit(补偿:恢复 deleted_at=null)

翻译执行本体(场景路由→fillPrompt→LLM 调用→落译文→重试)完整复用 AI-3.5-02 管道 Workflow/step 链(references_only),本卡零新增执行 Workflow。

前端触点与 i18n

前端触点(逐端)

端改动
admin-panel 新增 src/routes/translation-scenarios/page.tsx(七场景列表:code/batch/status/high_risk 筛选+模板编辑 Drawer+状态动作按钮)——骨架复用 settings/translation-config 页与 AI-3.3-03 §4.6 管理页范式;AI 配置态提示横幅复用 AI-3.5-02 P-② 语义(缺口⑥)
vendor-panel 暂无改动(场景模板为平台侧职责;商家级场景模板运营归属随 P2 运营模式立项,本卡不预设)
storefront / b2b / h2b storefront 无改动(场景翻译为后端内容生产链路,前台零新增交互)
influencer / referrer panel 无改动

i18n 三语言 key 规划(en / zhCN / ja)

admin-panel/src/i18n/translations/{en,zhCN,ja}.json 新增命名空间 translationScenario.*(三语值随实现提交;禁止混入 translationConfig.* 既有空间):

key(前缀 translationScenario.)内容
title页面标题
code.quotationDoc / .businessContract / .companyQualification / .supportDialog / .digitalEmployeeScript / .storefrontPage / .consumerInquiry七场景枚举名
status.draft / .published / .deprecated三态徽标文案
batch.batch1Nondialog / .batch2Dialog批次徽标文案
highRisk.badge高风险徽标
action.publish / .deprecate / .restore状态动作按钮
gate.dialogBatchHintC-c6-dialog 门控提示
gate.highRiskHint双轨复核门禁提示

验收与测试

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

#验收标准映射
A1各场景译文术语一致性抽检:场景×术语用例集框架就绪(词条按给定译法翻译的一致率口径),合格率/采样率数值基线立项定(DEC-5);术语约束本体在 DEP-3.3-03 关闭后联调生效PRD 要点① / 4.3/4.5
A2高风险场景门禁位:high_risk=true 场景在双轨复核通道就绪前生产路由 fail-closed 拦截(负向测试);通道就绪翻转后放行PRD 要点② / 4.4
A3分批上线:批次 1 四场景可独立上线;批次 2 三场景在 C-c6-dialog 关闭前生产不可见(混批防护:batch 字段 Workflow 校验+admin 无批次编辑入口)4.4
A4三级路由回退:scenario+locale 命中/场景默认/全局 prompt 三级各自可验证;路由查询异常回退第三级不阻断;无场景上下文请求行为与现状逐字节等价4.2/5.3
A5状态机与版本:非法迁移 409;published 再编辑 version+1 回退 draft;publish/deprecate/restore 留痕4.5/4.6
A6降级路径:AI 未配置→场景任务 markSkippedNoConfig 终态化+主业务零阻断(5.3 测试点④)5.3 / NFR-3.8-01
A7L0 门禁:本文档十要素齐备+关键锚点可 rg(client.ts:295-306 / fillPrompt / translation-config.ts / translation-job.ts / DEP-3.3-03 / D-dec1 / C-c6-dialog / 七场景枚举 / 双轨复核 / 评审候选稿);translation 域 8 个既有单测回归(fillPrompt 语义未变)模板

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

层范围明细
新增单测(路由 service)4.2三级命中/回退矩阵;priority 排序;locale 对校验;{terms} 空串替换;DB 异常回退第三级
新增单测(实体+Workflow)4.1/4.6七场景枚举校验;batch 与 scenario_code 匹配守卫(混批录入拒绝);状态机白名单(合法/非法矩阵);version 自增+prev_snapshot
新增单测(门禁)4.4批次 2 生产路由不可见(门控常量 false 态);高风险 fail-closed 拦截与翻转放行;dev env 覆盖仅 dev 生效
新增 integration(API)4.5admin CRUD+status 流转全链路;权限域守卫;ai_configured 透出
既有回归A7translation 域 8 单测文件复跑(client/ssrf/config.service/mark-skipped-no-config/retry-translations/translation-updated-revalidate/translation-config/run-translate-product)——fillPrompt 未改动语义回归
术语一致性联调(后置)A1DEP-3.3-03 关闭后:getTranslationTermContext→{terms} 注入→译文术语一致率抽检跑批
量化指标占位口径

术语一致性合格率(基线/目标)、抽检采样率、场景路由命中层级分布 scenario_route_hit_level=基线立项定(DEC-5)。

风险与降级

风险卡

High DEP-3.3-03——术语库契约「评审候选稿」(RK-14 两域联审前不冻结)
阻塞术语一致性落地:词库实体/注入契约冻结前 getTranslationTermContext 无冻结格式可消费(接入段 A)。不阻塞场景实体与 prompt 路由架构——场景建模段五项全量无词库依赖;{terms} 占位在冻结前按空串处理=功能完整但无术语约束。缓解:联审冻结后接线改造面收敛于 {terms} 替换函数一处。
High D-dec1 + C2——翻译接入与扩量门控
场景翻译的 AI 服务接入与扩量严格按 C2 门槛执行(接入时点 DEC-1)——顺序不可颠倒:C2 条款关闭→DEC-1 接入→批次 1→批次 2。接入段 B 挂 AI-3.5-02 §4.2 步骤链链尾。不阻塞场景建模与路由设计(模板/路由/批次框架开发与测试在未接入态下行为=现状等价,可先行交付);dev 环境内网 LLM 工程验证不受限。
High C-c6-dialog——对话数据合规评估(RK-07)
客服对话/数字员工话术/消费者咨询应答三场景的翻译使委托/越境处理对象从商品数据升级为对话数据——涉及个人信息按 C2 同样的委托/越境逻辑评估。阻塞对话类批次(批次 2)生产上线,不阻塞非对话类批次与全部架构。缓解:批次配置常量表起步+混批防护(batch2→batch1 迁移禁止+admin 无批次编辑入口);评估输入(对话数据流图)由批次注记供给合规侧。
Medium 配置扩展协调项——translation_config key 多行化
若实现期需场景独立模型,translation_config key 维度多行化与 AI-3.3-04 §5.1/AI-3.6-03 §5.1 为同一配置扩展协调项——三卡协调、单点实施,本卡不先行单独改表。缓解:配置源沿用 translation_config 单行配置起步。
Low AI 未配置态下场景模板管理无预检提示(缺口⑥)
admin 录入场景模板后无「翻译服务未接入」状态可感知(translation-config-status-banner 仅覆盖全局配置态)。缓解:admin 场景列表页透出 ai_configured(API 已含),横幅语义沿用 AI-3.5-02 P-②(可观测性非阻断)。

降级与跳过路径(NFR-3.8-01 强制范式)——三级回退+双防线引用

  • 场景模板缺失/路由查询异常 → 第三级全局 prompt(现状行为,翻译不阻断);
  • {terms} 注入失败(prompt_block=null/词库异常/词库 flag 关闭)→ 术语段替换为空串,翻译照常;
  • LLM 未配置(isAIConfigured 预检范式)→ 整段跳过——既有双防线(入口预检+markSkippedNoConfig 兜底终态化)承 AI-3.5-02 §5.3,本卡零改动引用;
  • AI 调用失败 → 既有重试队列(幂等 enqueue/指数退避/MAX 5)兜底,主业务零阻断。
范式句(逐字)

「未配置/故障即跳过不阻断主业务。」

跳过路径测试点(要素 8 必含):

  1. 场景模板缺失→全局 prompt 回退且译文产出正常;
  2. 路由查询抛错→同①;
  3. 术语注入失败→无术语段翻译成功;
  4. AI 未配置→场景翻译任务 markSkippedNoConfig 终态化、主业务成功;
  5. 批次门禁:batch2 场景在 C-c6-dialog 未关闭时生产路由不可见(dev 覆盖除外);
  6. 高风险门禁位:high_risk 场景在双轨通道未就绪时生产路由 fail-closed 拦截。

迁移与回滚

migration内容兼容性
translation-scenario 模块 migrationCREATE TABLE translation_scenario(全列+3 索引)新表,无存量
变更回滚路径
场景路由整体独立开关 featureFlags.translation_scenario(默认 false):关闭→路由恒跳过(无场景上下文),翻译走全局 prompt 现状行为——关闭态与代码回退等价,二选一不并存两套回滚机制(承 AI-3.3-02 §10.3 范式声明)
批次门禁门控常量翻转即回退(batch2 回到不可见态);batch 字段数据不回滚(字段本身无害)
术语注入词库 flag 关闭/prompt_block=null → {terms} 恒空串(词库侧回滚由 AI-3.3-03 §10 承载);本卡侧代码回退=移除 {terms} 替换调用
场景数据行级 deprecate/restore 即业务回滚(4.5);物理回滚仅限 migration down(新表无历史包袱)

上线顺序建议:S1→S2→S3→S4(场景建模段,flag 关态交付=零行为变化)→ 生产翻译接入(D-dec1/C2,承 AI-3.5-02 §4.2 步骤链)→ 批次 1 上线(flag 开启+high_risk 门禁位验证)→ DEP-3.3-03 关闭→S5/S6 术语注入 → 批次 2 等 C-c6-dialog 关闭后上线。全卡不改动翻译管道既有语义(fillPrompt 函数体零改动);本 TDD 为设计文档,不改任何源代码/迁移/配置。

前置决策点

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

Blocker类型阻塞什么可并行做什么
DEP-3.3-03(共享术语库基础设施 A 波先行;TASK-010 产物 schema 为「评审候选稿」——RK-14 两域联审前不冻结) Blocker 待联审 internal_dependency 阻塞术语一致性落地(接入段 A)——词库实体/注入契约冻结前无冻结格式可消费;不阻塞场景实体与 prompt 路由架构 场景建模段全量可开工:实体/三级路由/批次框架/admin 管理面/开关/单测;词库冻结后接线改造面收敛于 {terms} 替换函数一处
D-dec1(翻译 AI 服务接入时点,PRD 2.5/8.1 C1) Blocker 待决策 management_decision 阻塞翻译接入扩量时点(接入段 B:生产启用与批次 1 上线);不阻塞场景建模与路由设计 场景建模段全量+dev 环境内网 LLM 工程验证(承 AI-3.5-02 §7 对等口径);生产闸门动作全部后置
C-c6-dialog(数字员工对话记录/客服对话翻译 APPI 影响评估,清单未出——PRD 8.1 C6②③) Blocker 待评估 compliance_assessment 阻塞对话类场景批次(批次 2)生产上线;不阻塞非对话类批次与全部架构 批次 1 全量推进;批次 2 场景实体/模板/路由可先行开发(dev 验证);评估输入(对话数据流图)可由批次注记供给合规侧

内部依赖与下游引用方

方向条目关系
上游AI-3.5-02(pilot)翻译管道底座(client/加密/重试/跳过/审计)references_only;接入步骤链挂其链尾
上游AI-3.3-03(p2-a,评审候选稿)术语注入消费(接入段 A);RK-14 联审冻结前不得开工
下游AI-3.5-04(C 波,TASK-016)双轨复核消费本卡场景清单与 high_risk 门禁位(其 owns 复核本体;禁止两套状态机——其生命周期引用 AI-3.9-04 框架)
下游AI-3.6-03(B 波,TASK-015)数字员工话术场景(digital_employee_script)为其话术底座;其对话引擎多语应答引用本卡场景路由
决策点DEC-5术语一致性抽检合格率/采样率等数值占位(8.2)

开放数值决策

  • DEC-5 术语一致性抽检合格率(基线/目标)与采样率——基线立项定,本卡仅引用编号不内联臆造数值。
  • DEC-5 场景路由命中层级分布 scenario_route_hit_level 的观测口径与目标——同属 DEC-5,随实现纳入。
外部决策点引用规范

术语一致性抽检合格率/采样率=基线立项定(DEC-5);D-dec1/C-c6-dialog 仅引用编号不内联时点。

附录:溯源表

本文档由 docs/reports/ai-module-prd/tdd/AI-3.5-03-vertical-scenario-translation.md(v1.0,2026-10-26)可读化重组生成。章节映射与处理方式如下:

本文档章节源文档章节处理方式
摘要文档头(元数据/depth_baseline/design_ownership)+§1 溯源与现状Summarized
关键概念§2 代码现状底座+§3 缺口与目标状态Summarized
方案设计 · 两段式总览与设计归属§4.0 两段式总览+文档头归属总口径Preserved
方案设计 · 场景实体 translation_scenario§4.1(字段级全表+索引约束)Preserved
方案设计 · 三级 prompt 路由§4.2(含接线位置/回退语义/幂等并发)Preserved
方案设计 · 术语注入消费§4.3(契约引用+注入设计+不设计声明)Preserved
方案设计 · 批次上线路由§4.4(批次表+门禁实现+混批防护+报关注记)Preserved
数据模型 / API / Workflow§4.5 API 契约+§4.6 Workflow 设计+§10.1 migrationPreserved
前端触点与 i18n§4.7(逐端触点+translationScenario.* key 规划)Preserved
验收与测试§8.1 验收标准(A1-A7)+§8.2 测试策略与量化占位Preserved
风险与降级§5.3 降级与跳过路径+§7.1 Blocker 二分表+§10.2/10.3 回滚与上线顺序Preserved
前置决策点§6 合规挂钩+§7 依赖与决策点(含 §7.2 引用方)Preserved
图 1 三级路由流程§4.2 路由机制文字流程Inferred(文字流程转绘为流程图,判定条件一致)
图 2 场景翻译执行时序§4.2/§4.3/§5.3 降级路径Inferred(多节链路合并转绘)
图 3 状态机§4.5 状态机白名单文字描述Inferred(迁移规则转绘,白名单一致)
图 4 实体关系 ER 图§4.1 字段表+§2.1②③ 底座引用+§4.3 契约Inferred(按源字段与归属关系转绘)
锚点复核与契约状态

源 TDD 全部锚点在 run-e79ea839f23d 中以 rg/sed 逐条复核;漂移双写共 2 处(translation-config.ts 卡内 :13-21→模型 :10 起/prompt :16、translation-job.ts 卡内 :48-68→字段簇 :44-68/model.define :37);client.ts:295-306(fillPrompt)复核精确无漂移。词库消费契约引用状态:AI-3.3-03 实体 schema 与注入契约为「评审候选稿」(RK-14 两域联审前不冻结),本卡接入段以其联审冻结稿为准。