AI-3.5-04 高风险场景双轨复核 · 实现策略 TDD

「AI 智能初译 + 日本本地专业机构人工复核」双轨机制——共享把关状态机引用方 + 译文版本表(PRD 需求编号 FR-3.5-04)

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

摘要

PRD V1.4 §5.4 FR-3.5-04 验收要点(原文):「高风险译文 100% 经人工复核后生效;复核留痕可查;抽检机制覆盖接入后翻译。」 需求本体(原文):法务、财税、医疗、专利、合同等高风险专业场景采用「AI 智能初译+日本本地专业机构人工复核」双轨机制,复核通过方对外生效—— 五专业域(法务/财税/医疗/专利/合同)为本卡风险域枚举的唯一合法来源。用户价值:用专业兜底控制 AI 误译风险,直接呼应总纲「智能辅助、人工兜底」原则。

现状判定(负证据坐实):rg -i "translation.*review|dual.?track|双轨" 于 backend/src 0 业务命中——无复核工作流、无比对界面、无版本表; 上游 Translation Module(@medusajs/translation)为 upsert 覆盖式写、无版本历史(node_modules 边界排除,结论沿用 findings)——译文被覆盖后不可回溯(NFR-3.9-03 差距栏坐实); 人工仅能事后编辑间接覆盖(POST /admin/translations/batch)。两套可复用范式在位:队列认领原子占位(translation-job)+表驱动把关状态机(qualification-state-machine,经 AI-3.9-04 泛化为共享工具)。

共享声明(禁止两套状态机):本卡为 AI-3.9-04 把关框架引用方——消费共享迁移表工具、通用审核实体 ai_review_record(artifact_type=translation_batch)、『draft→confirmed 未确认不生效』门禁语义; 译文批次生命周期状态集按其 A-2 覆盖条款参数化定制,零状态机本体设计。本卡 owns:复核工作流、三栏比对 UI、translation_revision 版本表、高风险路由门禁、复核维度审计埋点消费。

版本表与比对段
4 子任务
T1 版本表 / T2 风险域映射+门禁 / T3 三栏比对工作台 / T4 API 骨架——无门控立即可开工
生命周期状态
7 态
pending_review → submitted → in_review → confirmed / rejected → resubmitted / withdrawn——对外生效只认 confirmed
验收标准
8
A1 高风险 100% 复核(六非生效态零写上游)… A8 L0 门禁(迁移全矩阵+8 单测回归)
Blocker
3
X-review-agency(外部机构,仅阻机构层)/ DEP-3.5-03(场景批次)/ DEP-3.9-04(框架 flag)——均不阻版本表与比对段

关键概念

双轨复核
高风险专业场景「AI 智能初译+人工/机构复核」——初译落版本表(不生效)→ 复核队列 → 三栏比对 → 通过才写上游 Translation Module 对外生效。
translation_revision 版本表
append-only 内容版本事实表(prefix trrev):该版本译文全文快照+来源(ai_initial/manual_edit/agency_review)+复核留痕(reviewed_by/at/rejection_reason)——NFR-3.9-03「成功译文版本历史尚无」缺口补口。
ai_review_record(引用)
AI-3.9-04 通用审核实体(artifact_type=translation_batch)——生命周期状态机本体归其卡 owns,本卡为引用方,禁止另建第二套状态机。
『未复核不对外生效』门禁
对外生效点=写入上游 Translation Module——该写入只在 confirmed step 内执行;生效点只认 confirmed(与 AI-3.9-04 统一门禁语义一致)。与场景级 fail-closed 门禁串联为两级。
风险域五域
risk_domain ∈ {legal(法务), tax(财税), medical(医疗), patent(专利), contract(合同)}——PRD 需求描述原文枚举;高风险场景清单初值:business_contract=true(合同+法务域)、company_qualification=true(法务+财税域),其余 false。
认领原子占位(审批语义)
复核人认领时两步法 list+update 写 metadata.claimed_at/claimed_by(范式母版 translation-job.ts:49-54)——复用的是「防并发」范式,语义是审批认领(防两复核人同审一批次),非重试消费。
fail-closed 与 NFR-3.8-01 裁决
增强层故障(AI 未配置/异常)→ 跳过不阻断主业务;把关层故障(复核服务异常)→ 高风险译文阻断外发(fail-closed)+告警——适用域不同:阻断对象是「未审 AI 产出的对外生效」,不阻断主业务链路(沿 AI-3.9-04 §5.3 裁决)。
抽检机制(sampled)
低风险直发+按采样率抽样进同复核队列(metadata.sampled=true)——「翻译 AI 服务接入后先建立商品翻译抽检机制,场景扩展与复核工作流同批规划」(PRD 8.2-3 排序口径)。

方案设计

共享关系声明与分段总览

共享粒度(承 PILOT-DECISIONS.md 决策二,不翻案)

共享的是迁移表工具(表驱动白名单校验器 assertForwardOnlyTransition+buildLastTransitionMeta,来源范式 qualification-state-machine.ts :29-39/:41-53)与『未确认不生效』门禁语义,不强共用同一套状态集——译文批次生命周期状态集按 AI-3.9-04 A-2 覆盖条款参数化定制;入驻审核的 compensation Saga 回滚不并入。本卡零状态机本体设计。

分段门控内容开工条件
版本表与比对段(无门控) 无门控 ①translation_revision 版本表 ②三栏比对 UI ③风险域映射配置与门禁翻转常量 ④抽检挂接框架 立即可开工(p2-c);生产行为在翻译接入(DEC-1/C2)前与现状等价(无 AI 译文产生,队列空载)
复核工作流落地段 DEP-3.9-04 门控 ⑤复核 Workflow 接入 ai_review_record/共享工具 ⑥门禁挂接生效点 AI-3.9-04 框架(P1 先行)落地且 ai_review_gate.enabled 翻转后;挂接点两侧代码可先行 feature 态开发
机构对接段 X-review-agency 门控 ⑦机构复核员接入协议层(独立节) X-review-agency 落地后;框架设计与机构参数值解耦(RK-05)
设计红线(AGENTS.md §0.1 逐条对照)

复核状态变更全部走 Workflow step(守卫在 step 内);@medusajs/* 零触碰(对上游 Translation Module 仅经其公开 API 写译文;client/config/job 均为本地模块);复核状态/留痕/版本以后端表为单一数据源(admin 仅消费);查询参数化绑定。

双轨数据流与译文批次生命周期

统一点不变:对外生效=confirmed(工具级共享的统一门禁语义)。生命周期七态(forward-only 白名单):

状态允许迁移(forward-only 白名单)语义
pending_review→ submitted / rejected(初译即判废)初译已产出未送审——不对外生效
submitted→ in_review / pending_review(退回)已进复核队列
in_review→ confirmed / rejected复核人认领比对中(认领原子占位挂此态)
confirmed→ withdrawn复核通过、对外生效(写上游 Translation Module 在此刻)
rejected→ resubmitted / pending_review驳回(rejection_reason 终态必填)
resubmitted→ submitted修正/机构重审后重提
withdrawn→ pending_review撤销下线(已生效批次下架,上游译文回退)

迁移表为本卡参数化实例(transitions 参数传入共享工具,工具不强绑定状态集);last_transition 轨迹({from,to,reason,actor_id,at})落 ai_review_record。认领超时释放(in_review 长期无进展回 submitted)节奏=基线立项定(DEC-5)。

版本表 translation_revision(首切片字段级,从零新建)

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

字段类型约束/默认说明
idtextPK,prefix trrev
referencetextnot null译文引用类型——值域对齐 TRANSLATION_REFERENCES(product/product_option/product_option_value/product_category,translation-references.ts:20-25);场景译文批次经场景关联承载(scenario_code 落 metadata,避免枚举膨胀)
reference_idtextnot null实体 id(弱关联,同 translation_job 范式)
localetextnot null值域复用 SUPPORTED_SOURCE_LOCALES(locale.ts),禁止新建字面量
revision_nointegernot null版本号,(reference, reference_id, locale) 内自增,1 起
source_typeenum(ai_initial, manual_edit, agency_review)not null内容来源:AI 初译 / 人工修正 / 机构复核修正
contenttextnot null该版本译文全文快照——上游 Translation Module 覆盖式写无版本,历史只存在于此表(NFR-3.9-03 补口)
ai_call_request_idtextnullable关联 ai_call_log.request_id(TASK-002 P-④ 载体——本卡消费其关联位,采集设计引用不重复)
review_record_idtextnullable关联 ai_review_record.id(artifact_type=translation_batch;生命周期状态机本体在其卡 owns)
reviewed_bytextnullable复核人=req.auth_context.actor_id 落库范式(review-channel-qualification.ts:43-46 复核精确)
reviewed_attimestamptznullable复核时间
rejection_reasontextnullable驳回原因(关联 review record rejected 态时回填;终态必填守卫在 Workflow step)
metadatajsonbnullable机构复核标识(agency_code——X-review-agency 后接)、抽样标记(sampled)等扩展
created_at / updated_at / deleted_attimestamptz标准三件套medusa 约定

约束与索引:UNIQUE(reference, reference_id, locale, revision_no);INDEX(reference, reference_id, locale)(版本历史查询热点);INDEX(source_type);INDEX(reviewed_by)。migration 走 medusa db:generate。

职责边界声明

translation_revision=内容版本+来源+复核留痕(append-only 事实表);生命周期状态机=ai_review_record(引用方);生效译文=上游 Translation Module 当前值(后端单一数据源不变)——三表各司其职,同一 review record 至多关联一条 confirmed 生效 revision。

高风险场景路由与『未复核不对外生效』门禁

风险域枚举(五专业域,PRD 需求描述原文):risk_domain ∈ {legal(法务), tax(财税), medical(医疗), patent(专利), contract(合同)}。路由判定(两级):

级别判定载体门禁动作
场景级(AI-3.5-03 批次) translation_scenario.high_risk=true(其卡门禁位,本卡 owns 翻转条件与清单初值) 场景枚举弱引用(scenario_code,AI-3.5-03 owns 实体) 该场景批次全部走双轨复核;高风险场景清单初值(本卡定稿):business_contract=true(合同+法务域)、company_qualification=true(法务+财税域),其余五场景=false(quotation_doc/storefront_page 低风险;support_dialog/digital_employee_script/consumer_inquiry 属批次 2 对话类,C-c6-dialog 另闸)
商品翻译级(AI-3.5-02 管道) 无场景上下文——默认低风险直发+抽检(8.2-3 PRD 建议原文排序);医疗类目命中为双轨扩展位候选(薬機法 FR-3.4-02 联动) 类目维度配置(常量表起步) 抽中批次走同复核队列(sampled 标记);未抽中直发(现状行为)

门禁实现(生效点只认 confirmed):高风险场景译文的对外生效点=写入上游 Translation Module——该写入在 review-translation-revision Workflow 的 confirmed step 内执行;场景路由层(AI-3.5-03 fail-closed)已拦「未就绪场景的生产路由」,本卡拦「已启用场景批次未 confirmed 不落上游」——两级门禁串联,负向测试各一。专利/医疗域当前无直接场景枚举对应:医疗经商品类目扩展位承载,专利域为场景枚举扩展候选(随 AI-3.5-03 场景迁移扩展,本卡不新增场景)。

手动编辑通道治理(缺口⑥):高风险场景译文的手动修正必须经复核工作流 revise 动作承载(产生 manual_edit revision 行并走 confirmed);admin 既有批量编辑通道(POST /admin/translations/batch)对高风险批次禁用(场景路由元数据判定,UI 置灰+API 校验);绕过行为经版本表链路可审计(revision 链断裂可检测)。

机构对接协议层(独立节——X-review-agency 外部前置,references_only 边界)

定位声明(RK-05 缓解:框架设计与参数值解耦):日本本地专业机构合作(PRD §7.6⑤)为业务侧配套资源,机构通道未落不阻塞复核机制本体——先行形态=人工内部复核(平台复核员经 admin 工作台全流程操作),机构通道后接。机构接入协议层预留设计(架构级,X-review-agency 落地后细化为字段级):

协议要素预留设计前置
机构复核员身份admin 子账号形态起步(机构复核员以受控 admin 角色登录工作台)——免建独立机构端;机构独立工作台为演进项X-review-agency
任务分派与回传复核任务按风险域/资质标签路由(metadata.agency_code 标识);回传=revise 动作(agency_review 来源 revision 行)X-review-agency
资质要件医疗域复核机构资质(薬機法关联,FR-3.4-02 联动)为机构准入参数X-review-agency+法务
SLA 与计费机构复核时效/结算模式——基线立项定(DEC-5),不臆造X-review-agency+立项

数据流 · 状态机 · 时序 · 实体图

flowchart TD INIT["AI 初译产出(AI-3.5-02 管道 / AI-3.5-03 场景路由)"] --> ROUTE{"风险路由判定(两级)"} ROUTE -- "高风险:场景 high_risk=true 或风险域命中" --> REV["落 translation_revision(source_type=ai_initial,不生效)"] REV --> REC["创建 ai_review_record(artifact_type=translation_batch,pending_review)"] REC --> QUEUE["复核队列(认领 claimed_at 原子占位——审批语义)"] QUEUE --> UI["三栏比对 UI(原文 / 初译 / 修正+差异高亮)"] UI -- "通过(无修正)" --> CF1["confirmed → 写上游 Translation Module(对外生效)+ revision 留痕"] UI -- "通过(有修正)" --> CF2["新 revision 行(manual_edit / agency_review)→ confirmed → 同上"] UI -- "驳回(rejection_reason 终态必填)" --> REJ["resubmitted(修正 / 机构重审)→ 重新送审"] ROUTE -- "低风险:现状直发保留域" --> DIRECT["AI-3.5-02 管道直发上游(NFR-3.8-01 现状行为)"] DIRECT --> SAMPLE{"按采样率抽中?(metadata.sampled)"} SAMPLE -- "抽中" --> QUEUE SAMPLE -- "未抽中" --> DONE["直发生效+抽检留痕"]
图 1. 双轨数据流——高风险路径先落版本表再复核,confirmed 才写上游;低风险直发+抽检同队列(转绘自源 §4.1,Inferred)
stateDiagram-v2 state "pending_review(初译产出未送审——不对外生效)" as pr state "submitted(已进复核队列)" as sub state "in_review(复核人认领比对中)" as ir state "confirmed(复核通过——此刻写上游,对外生效)" as cf state "rejected(驳回,rejection_reason 终态必填)" as rj state "resubmitted(修正/机构重审后重提)" as rs state "withdrawn(撤销下线,上游译文回退)" as wd [*] --> pr: 初译落 revision+创建 ai_review_record pr --> sub pr --> rj: 初译即判废 sub --> ir: 认领(两步法原子占位) sub --> pr: 退回 ir --> cf: approve ir --> rj: reject cf --> wd: 撤销下线 rj --> rs rj --> pr rs --> sub wd --> pr: 重新送审 note right of cf 对外生效 = confirmed(AI-3.9-04 A-2 统一门禁语义) forward-only 白名单,非法迁移抛 UNEXPECTED_STATE end note
图 2. 译文批次生命周期七态状态机——forward-only 白名单为 AI-3.9-04 共享工具的参数化实例(Preserved 自源 §4.2 迁移表转绘,Inferred)
sequenceDiagram autonumber participant R as 复核人(admin 工作台) participant API as review API(admin 域) participant W as review-translation-revision Workflow participant REC as ai_review_record participant REV as translation_revision participant UP as 上游 Translation Module R->>API: action = claim / approve / reject / revise API->>W: 入 Workflow(load-review-context:record+revision+源字段原文) W->>W: assert-claim-and-transition(认领两步法原子占位+forward-only 白名单校验,守卫在 step 内) alt claim W->>REC: in_review + metadata.claimed_at / claimed_by else approve(无修正) W->>REC: confirmed W->>REV: revision(ai_initial)补 reviewed_by / reviewed_at W->>UP: 写译文(对外生效落库) UP-->>W: 写失败 → record 回退 in_review(不半生效) else approve(revise 有修正) W->>REV: 新 revision 行(manual_edit / agency_review)→ confirmed → 写上游 else reject W->>REC: rejected(rejection_reason 终态必填) W->>REV: rejection_reason 回填 revision 行 end W-->>R: emit translation-review.completed(补偿:record+revision 快照式回写,非 Saga 业务回滚) Note over W,UP: 未 confirmed 的批次不落上游——两级门禁串联(场景级 fail-closed+批次级 confirmed)
图 3. 复核工作流时序——认领原子占位、四动作分支与生效写失败回退(转绘自源 §4.6,Inferred)
erDiagram TRANSLATION_REVISION ||--o| AI_REVIEW_RECORD : "review_record_id 关联生命周期" TRANSLATION_REVISION }o--o| AI_CALL_LOG : "ai_call_request_id 关联初译调用(TASK-002 P-④ 载体)" TRANSLATION_REVISION ||--|| TRANSLATION : "confirmed 版本写上游为当前生效译文" TRANSLATION_REVISION { text id PK "prefix trrev" text reference "对齐 TRANSLATION_REFERENCES" text reference_id "实体 id 弱关联" text locale "复用 SUPPORTED_SOURCE_LOCALES" integer revision_no "三元组内自增 1 起" text source_type "ai_initial manual_edit agency_review" text content "该版本译文全文快照" text ai_call_request_id "跨层追溯关联 nullable" text review_record_id "生命周期关联 nullable" text reviewed_by "req.auth_context.actor_id" timestamptz reviewed_at "复核时间 nullable" text rejection_reason "驳回原因 终态必填" jsonb metadata "agency_code sampled 等扩展" } AI_REVIEW_RECORD { text id PK "AI-3.9-04 owns 实体契约" text artifact_type "translation_batch(首批三值之一)" text status "生命周期状态集本卡参数化" jsonb metadata "claimed_at claimed_by sampled" } TRANSLATION { text id PK "上游 Translation Module 译文" } AI_CALL_LOG { text request_id "AI-3.5-02 P-④ 审计载体" }
图 4. translation_revision 版本表与上下游实体关系——版本表 append-only;生命周期实体与状态机本体归 AI-3.9-04(本卡引用);生效译文仍以上游模块为单一数据源(按源 §4.3/§4.8 转绘,Inferred)

数据模型 / API / Workflow

数据模型设计汇总

对象变更内容
translation_revision(新表/新模块)新建14 字段全列见版本表字段表+1 唯一约束+3 索引
ai_review_record(AI-3.9-04 新表)无 schema 改动经 artifact_type=translation_batch 消费;认领/抽样标记落其 metadata(其 §4.1 A-3 metadata 开放设计)
上游 Translation Module无改动生效写入经其公开 API;upsert 覆盖语义维持(版本历史由本表承载)
translation_scenario(AI-3.5-03 规划)无改动high_risk 门禁位消费其字段;清单初值经本卡定稿后由其卡运营配置承载

API 契约汇总

路由方法权限域契约要点错误码
/admin/translation-review-queue GET admin 待审列表:ai_review_record(artifact_type=translation_batch)筛 submitted/in_review+revision 摘要联查(reference/locale/来源/认领态) 400
/admin/translation-revisions GET admin 版本历史查询(reference/reference_id/locale 过滤,revision_no 倒序)——NFR-3.9-03 可回溯查询口 400
/admin/translation-revisions/[id] GET admin 详情:三栏比对数据包(源字段原文+ai_initial 行+最新修正行+差异标记) 404
/admin/translation-revisions/[id]/review POST admin body:{ action: "claim"|"approve"|"reject"|"revise", revised_content?, rejection_reason? }——reject 必填 rejection_reason(终态必填守卫);入 review-translation-revision Workflow 404/409(非法迁移/未认领)/400

错误码统一:401/403(admin 认证)/404/409(MedusaError(UNEXPECTED_STATE) 非法迁移,母版 :47-52 行为等价)/400(validator)。复核统计指标(人工复核率/驳回率/队列时长)数据源=ai_review_record+translation_revision 聚合,数值 DEC-5。

Workflow 设计(业务逻辑必须在 Workflow)

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

review-translation-revision
  steps: load-review-context(ai_review_record + revision 行 + 源字段原文加载)
       → assert-claim-and-transition(认领原子占位两步法 + forward-only 白名单校验——
           消费 AI-3.9-04 共享工具契约,守卫在 step 内;非法迁移抛 UNEXPECTED_STATE)
       → apply-review-outcome
           approve(无修正):record→confirmed + revision(ai_initial)补 reviewed_by/at
             + 写上游 Translation Module(生效落库)——生效写失败→record 回退 in_review(不半生效)
           approve(revise 有修正):新 revision 行(manual_edit|agency_review)→confirmed→同上生效
           reject:record→rejected + rejection_reason 回填 revision 行
           claim:record→in_review + metadata.claimed_at/claimed_by
       → emit "translation-review.completed"
  补偿:快照回写(record+revision 快照式回写,非 Saga 业务回滚——AI-3.9-04 边界同款)

翻译产出侧挂接(初译→revision+record 创建)随 AI-3.5-03 场景批次落地接线(其管道持久化 step 后置钩子,本卡定义契约:高风险批次先落 revision 再进队列,不直发上游)。

前端触点与 i18n

前端触点(逐端)

端改动
admin-panel 新增 复核工作台 src/routes/translation-review/page.tsx(待审队列列表套 cooperation-agreements/page.tsx:9-65 范式)+ 三栏比对 Drawer(原文/初译/复核修正三栏+差异高亮;动作区套 seller-qualification-review-actions.tsx:31-115 骨架:claim/approve/reject/revise 四动作+rejectionReason 必填校验)+ 版本历史抽屉(revision_no 时间线,套状态徽标模式)
vendor-panel / influencer / referrer panel 无改动(复核为平台侧职责;商家侧译文消费不变)
storefront ×3 无改动(生效译文仍经 store API 按 locale 透出;未 confirmed 的高风险译文本就不对外——负向语义无前端分支)

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

改动面仅 admin-panel(admin-panel/src/i18n/translations/{en,zhCN,ja}.json,命名空间 translationReview.*);三前台/vendor i18n 无新增 key。差异高亮算法为前端实现细节(行级 diff 库选型随实现,非本卡契约)。

新增 key(前缀 translationReview.)用途
status.pendingReview / .submitted / .inReview / .confirmed / .rejected / .resubmitted / .withdrawn七态徽标文案
compare.source / .aiInitial / .revision三栏比对列头
action.claim / .approve / .reject / .revise / .reasonRequired复核动作(驳回原因终态必填前端校验文案)
gate.notEffectiveHint「未复核不对外生效」提示(非 confirmed 置灰说明)
source.aiInitial / .manualEdit / .agencyReview来源枚举列

验收与测试

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

#验收标准映射
A1高风险译文 100% 经人工复核后生效(PRD 原文):高风险场景批次生效点只认 confirmed——负向测试:pending_review/submitted/in_review/rejected/resubmitted/withdrawn 六态批次在上游 Translation Module 均无译文变更;confirmed 后写入成功4.4 / 8.2
A2复核留痕可查(PRD 原文):每条高风险译文版本链完整可查(谁/何时/哪版/何结论/驳回原因);revision 链与 review record 一致性校验4.3 / 4.5
A3抽检机制覆盖接入后翻译(PRD 原文):低风险直发+抽样进队列(sampled 标记)机制就绪;采样率/合格口径数值基线立项定(DEC-5)4.4 / 6
A4共享状态机一致性:译文批次七态迁移全矩阵合法迁移通过、反向跳转/自环拒绝(MedusaError(UNEXPECTED_STATE));confirmed 统一门禁语义与 AI-3.9-04 A-2 覆盖条款一致(评审人工核对项)4.2
A5两级门禁串联:场景级(AI-3.5-03 fail-closed)+批次级(本卡 confirmed 门禁)各自可独立验证4.4
A6NFR-3.8-01 裁决验证:5.3 四测试点全量通过(增强层降级/把关层 fail-closed/低风险保留域/flag 联动)5.3
A7手动编辑治理:高风险批次经批量编辑通道修改被拒/置灰;绕过行为版本链可检测4.4 缺口⑥
A8L0 门禁:本文档十要素齐备+关键锚点可 rg(qualification-state-machine / translation-job / client.ts / AI-3.9-04-human-review-framework.md / AI-3.5-03-vertical-scenario-translation.md / AI-3.5-02-dynamic-content-translation.md / translation_revision / 未复核不对外生效 / X-review-agency / DEP-3.5-03 / DEP-3.9-04);translation 域 8 既有单测回归(管道零改动验证)模板

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

层范围明细
新增单测(版本表+Workflow)4.3/4.6revision 唯一约束/自增;review-translation-revision step 链:认领原子占位(并发两认领一败)/approve 生效写入/reject 必填 reason/revise 新行/生效写失败回退 in_review
新增单测(迁移矩阵)4.2七态×七态全矩阵(合法 8 条通过;其余全拒)——消费共享工具契约的参数化实例测试
新增单测(路由与门禁)4.4风险域映射命中;场景级 fail-closed(清单未启用);批次级 confirmed 门禁;手动编辑通道对高风险批次拒绝
新增 integration(API)4.5队列/详情/版本历史/review 动作全链路;权限域守卫;409 非法迁移
降级路径测试5.3四测试点全量纳入(见风险与降级节)
既有回归A8translation 域 8 单测文件复跑(client/ssrf/config.service/mark-skipped-no-config/retry-translations/translation-updated-revalidate/translation-config/run-translate-product)——本卡不改管道本体,回归守卫
联调(后置)A1/A3AI-3.5-03 场景批次端到端(初译→revision→复核→生效→场景启用);抽检抽样率验证(DEC-5 回填后)
量化指标占位口径

抽检采样率、抽检合格率基线/目标、人工复核率、驳回率、复核队列滞留时长、认领超时阈值、机构 SLA=全部基线立项定(DEC-5)。

风险与降级

风险卡

High DEP-3.9-04——把关框架 flag 未开启(AI-3.9-04 P1 先行)
阻塞复核工作流落地段(ai_review_record 实体/共享工具/ai_review_gate.enabled flag 本体归 TASK-009,其框架落地且 flag 开启后挂接生效);不阻塞比对 UI/版本表设计——版本表独立建表无框架依赖,比对 UI 骨架可先行,生命周期字段经契约对齐。缓解:挂接点两侧代码可先行 feature 态开发,框架 flag 开启后零改造启用。
High X-review-agency——机构资源未落(外部前置)
仅阻塞机构对接协议层落地(机构身份/分派/资质/SLA);不阻塞复核工作流+比对 UI+版本表——先行形态=人工内部复核全流程可用(RK-05 框架设计与参数值解耦)。缓解:机构协议层按预留设计先行占位(agency_code 标识位),资源落地即插即用。
Medium DEP-3.5-03——场景批次未产出
阻塞首个上线场景(高风险场景译文产生依赖 AI-3.5-03 场景翻译管道与批次产出;场景清单初值回填其 high_risk 配置);不阻塞复核机制本体设计与字段级开工——复核工作流/版本表/比对 UI 可先行开发+空载验证(无译文时队列空载、版本表空表,行为与现状等价)。
Medium 手动编辑通道治理旁路(缺口⑥)
admin 手动编辑通道(POST /admin/translations/batch,hooks/translations.ts:92)可绕过复核直接覆盖生效译文——高风险批次存在治理旁路。缓解:高风险批次 UI 置灰+API 校验拒绝;手动修正经复核工作流 revise 动作承载;版本表使绕过可审计(revision 链断裂可检测)。
Low 生效写失败半生效风险
confirmed step 内写上游 Translation Module 失败可能导致「record 已 confirmed 但译文未落」。缓解:Workflow 补偿回退 in_review(不半生效);重审重入幂等(同批次重复 confirmed 拒绝 409)。

NFR-3.8-01 张力裁决(把关层 fail-closed——本卡评审重点核验项)

张力陈述:NFR-3.8-01 范式「未配置/故障即跳过不阻断主业务」与本卡「复核服务异常时高风险译文阻断外发而非直发」表面冲突,实为适用域不同,显式裁决如下(沿 AI-3.9-04 §5.3 既有裁决,本卡不另立标准):

故障场景行为裁决理由
AI 未配置/故障(增强层故障) 无 AI 译文产生→复核队列空载→主业务照常 NFR-3.8-01 适用域=AI 增强层:跳过的是「增强产出」,主业务(商品发布/交易/支付)零阻断——范式句「未配置/故障即跳过不阻断主业务」逐字适用
复核服务异常(把关层故障) 高风险译文阻断外发(fail-closed:Workflow 抛错→批次停留 pending_review/submitted,不落上游)+告警 ①PRD 验收要点硬口径「高风险译文 100% 经人工复核后生效」——未复核=不对外生效是本条存在意义,fail-open 即推翻本条;②阻断对象是「未审 AI 产出的对外生效」,不阻断主业务链路——原语言内容与既有已生效译文照常展示;③AI-3.9-04 §5.3 原文裁决「把关层故障不得放行未审产出……本框架保护的是合规底线,不适用 fail-open」
低风险译文(门禁外保留域) 复核服务异常时照常直发(AI-3.5-02 现状路径) 门禁只拦高风险批次——「宁可延迟(高风险等复核恢复),不可未复核直发(高风险)」;延迟的是增强层产出时效,不是主业务可用性
flag 关闭(translation_review_gate=off) 高风险场景整体不启用(AI-3.5-03 门禁位 fail-closed 先拦——场景不参与生产路由)+低风险直发 「关闭门禁」与「关闭高风险场景」联动设计——不存在高风险未复核直发态;复核能力关闭即高风险场景一并下线(合规一致)

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

  1. AI 未配置→队列空载+主业务成功;
  2. 复核 Workflow 抛错→高风险批次停留非生效态+告警+上游译文无变更(fail-closed 断言);
  3. 同故障下低风险批次直发成功(保留域断言);
  4. flag 关闭→高风险场景路由不可见+低风险直发(联动断言)。

迁移与回滚

migration内容兼容性
translation-revision 模块 migrationCREATE TABLE translation_revision(全列+唯一约束+索引)新表,无存量

pnpm db:reset / db:reset:demo 兼容:新表空表参与 reset(版本/复核记录为运行时事实非配置,seed 不注入——同 AI-3.9-04 §10.1 口径);上游 Translation Module 与翻译管道零改动故种子链路行为不变;门禁常量默认关=现状直发。

上游语义保护声明

本卡不改 Translation Module upsert 覆盖式写行为(低风险路径逐字节现状);高风险路径的「先 revision 后生效」是管道侧新增前置钩子(产出侧挂接),上游模块零触碰。

变更回滚路径
复核门禁整体独立开关 featureFlags.translation_review_gate(默认 false,沿用 translation: true 同位范式 medusa-config.ts:55-56):关闭→高风险场景经 AI-3.5-03 门禁位 fail-closed 整体不启用+低风险直发(联动设计见上表——不存在高风险未复核直发态;恢复开启即重新门禁)
版本表append-only 事实表:回滚=停写+保留记录(NFR-3.9-03 审计完整性优先,历史不删);物理回滚仅限 migration down(新表无历史包袱)
高风险批次误拦截状态可人工推进(admin 工作台 confirmed 即放行);迁移矩阵误判经单测全矩阵回归
生效写入失败Workflow 补偿回退 in_review,不半生效;重审重入幂等(同批次重复 confirmed 拒绝 409)

上线顺序建议:T1-T4(版本表与比对段,flag 关态交付=零行为变化)→ DEP-3.9-04 解除(AI-3.9-04 flag 开启)→ T5 挂接(feature 态观察)→ DEP-3.5-03 解除(场景翻译批次产出)→ T6 端到端+抽检机制 → 高风险场景清单启用(AI-3.5-03 门禁位翻转,两级门禁串联验证)→ X-review-agency 落地后 T7 机构通道接入。全卡不改动翻译管道既有语义与上游模块;本 TDD 为设计文档,不改任何源代码/迁移/配置。

前置决策点

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

Blocker类型阻塞什么可并行做什么
X-review-agency(日本本地专业复核机构合作,含薬機法资质场景——PRD §7.6⑤/FR-3.5-04) Blocker 外部资源待落 external_resource 仅阻塞机构对接协议层落地(4.7:机构身份/分派/资质/SLA);不阻塞复核工作流+比对 UI+版本表——先行形态=人工内部复核全流程可用 4.2-4.6 全量(版本表/比对段无门控立即开工);机构协议层按预留设计先行占位(agency_code 标识位),资源落地即插即用
DEP-3.5-03(场景翻译先行——双轨复核作用于高风险场景译文,PRD 7.4) Blocker 待上游产出 internal_dependency 阻塞首个上线场景(场景清单初值回填其 high_risk 配置);不阻塞复核机制本体设计与字段级开工(空载验证行为与现状等价) 版本表与比对段全量(无门控);复核工作流代码可先行 feature 态开发;风险域映射配置先行定稿(清单初值)
DEP-3.9-04(审核把关框架延伸,AI-3.9-04 P1 先行——PRD 7.4) Blocker 待框架 flag internal_dependency 阻塞复核工作流落地段(ai_review_record 实体/共享工具/ai_review_gate.enabled flag 本体归 TASK-009);不阻塞比对 UI/版本表设计 版本表+比对 UI+API 骨架全量;挂接点两侧代码可先行 feature 态开发,框架 flag 开启后零改造启用

内部依赖与下游引用方

方向条目关系
上游AI-3.9-04(p1,TASK-009)把关状态机框架(references_only;禁止两套状态机)——共享工具+ai_review_record 实体+confirmed 门禁语义
上游AI-3.5-03(p2-b,TASK-014)场景枚举/high_risk 门禁位/高风险批次产出源(references_only)
上游AI-3.5-02(pilot,TASK-002)翻译管道底座+抽检挂接点+usage 审计埋点载体(references_only,消费不重设计)
决策点DEC-5采样率/抽检合格口径/认领超时/机构 SLA 数值占位
下游无(译文复核为翻译域链尾)场景翻译批次生效(AI-3.5-03 批次 1 上线)以本卡复核通道就绪为其门禁翻转条件

开放数值决策

  • DEC-5 抽检采样率与抽检合格率基线/目标——基线立项定,本卡仅引用编号不内联臆造数值。
  • DEC-5 人工复核率、驳回率、复核队列滞留时长、认领超时阈值——复核维度统计口径的数值占位。
  • DEC-5 机构 SLA 与计费模式——X-review-agency 落地后随立项回填。

附录:溯源表

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

本文档章节源文档章节处理方式
摘要文档头(元数据/depth_baseline/design_ownership)+§1 溯源与现状Summarized
关键概念§2 代码现状底座+§3 缺口与目标状态Summarized
方案设计 · 共享关系声明与分段总览§4.0 共享关系声明+分段总览Preserved
方案设计 · 双轨数据流与生命周期§4.1 架构总览+§4.2 七态迁移表Preserved
方案设计 · 版本表 translation_revision§4.3(字段级全表+约束索引+职责边界)Preserved
方案设计 · 高风险路由与门禁§4.4(风险域枚举+两级路由+门禁实现+手动编辑治理)Preserved
方案设计 · 机构对接协议层§4.7(定位声明+协议要素预留表)Preserved
数据模型 / API / Workflow§4.8 数据模型汇总+§4.5 API 契约+§4.6 Workflow 设计+§10.1 migrationPreserved
前端触点与 i18n§4.6 前端触点+i18n key 规划Preserved
验收与测试§8.1 验收标准(A1-A8)+§8.2 测试策略与量化占位Preserved
风险与降级§5.3 NFR-3.8-01 张力裁决+§7.1 Blocker 二分表+§10.2/10.3 回滚与上线顺序Preserved
前置决策点§6 合规挂钩+§7 依赖与决策点(含 §7.2 引用方)Preserved
图 1 双轨数据流§4.1 架构总览文字图Inferred(文字图转绘为流程图,路径与门禁一致)
图 2 七态状态机§4.2 迁移表(Preserved 表格另行呈现,图为转绘)Inferred(迁移规则转绘,白名单一致)
图 3 复核工作流时序§4.6 Workflow steps 链+§4.5 review 动作契约Inferred(step 链与四动作分支转绘)
图 4 实体关系 ER 图§4.3 字段表+§4.8 汇总+§5.2 埋点消费Inferred(按源字段与归属关系转绘)
锚点复核约定

源 TDD 锚点在 run-2a0c7d68e7f6 中以 rg/sed 逐条复核;漂移双写共 2 处(qualification-state-machine.ts 卡内 :26-40→REVIEW_TRANSITIONS :29-39/校验器 :41-53、reviewed_at/by 区间 :43-46 复核精确);client.ts usage 0 命中经复核成立;Translation Module upsert 覆盖式写无版本结论沿用 findings(node_modules 边界排除)。共享状态机声明:本卡为 AI-3.9-04 引用方(PILOT-DECISIONS.md 决策二工具级共享),零状态机本体设计。