摘要
本条目对应 PRD FR-3.4-02「18 类标准化商品体系」。PRD 验收要点为:「建档规范覆盖全部 18 类并发布;新品类准入经规范评审(含薬機法适用性确认)」。现状判定为部分实现:类目树(六大类十八子类)、三语四层翻译闭环、Attribute 系统、发布审核骨架全部在位;而「标准化建档规范层」为零实现(负证据:规范相关关键词全仓检索 0 命中,category_standard 实体不存在)。
技术方案采用两段式结构:技术方案段(attribute 九项映射定义 + category_standard 新模块 + publish 准入校验 + vendor 表单消费 + RK-12 改名重译钩子)无门控、立即可开工;规范发布段(18 类规范内容定稿与 published 发布、新品类准入流程启用)受业务前置 B-c3 门控——「18 类」语义同构核对与薬機法适用性确认归商品团队 + 法务,技术侧仅提供字段位与流程卡控。
挂载方案经三候选对比定稿为 attribute 绑定分类(结构化可校验项)+ 新建本地模块 category_standard(文档型规范 + 版本/评审载体)组合:九项建档维度天然二分——可枚举、可校验、需参与筛选与准入强制的走 attribute(复用上游机制,零上游改动);长文档、需版本化发布与评审留痕的走 category_standard。
类目树硬编码 seed 与 PRD「六大类十八子类」数量与门类一致(seed-functions.ts:208-311,6 根 + 18 子 = 18 ✓);三语四层闭环在位(seed 字典 24 handle × 3 语 + AI 创建 hook + admin 手工编辑 + 前台 locale 读取);建档规范层 0 命中(rg "类目模板|选品标准|准入规范|建档规范" exit=1,检索式即负证据)。
关键概念
方案设计
总体架构与两段式门控
| 分段 | 门控 | 内容 | 开工条件 |
|---|---|---|---|
| 技术方案段 | 无门控 | attribute 映射定义、category_standard 模块 + migration、publish 准入校验、vendor 表单消费、RK-12 updated 钩子 | 立即可开工(p1) |
| 规范发布段 | B-c3 门控 | 18 类规范 draft 的内容定稿与 published 发布、新品类准入流程启用 | 前置业务核对 C3 关闭后方可发布 |
Workflow 承载业务逻辑(规范 draft/publish 数据变更走 Workflow,准入守卫在 step 内);不修改上游源码(attribute 系统与类目 workflow 均上游所有,仅官方 hook/扩展点消费);后端单一数据源(规范与准入状态以后端为准);本卡无新增裸 SQL。
九项建档维度映射(字段级)
| # | 维度(PRD 原文) | 通道 | 载体字段定义 |
|---|---|---|---|
| 1 | 品类定义 | ③ category_standard | definition(text,长文) |
| 2 | 适用行业 | ② attribute | industry_applicability:multivalue,is_filterable=true,is_required=true,possible_values=行业枚举(admin 可维护),product_categories=全 18 类绑定 |
| 3 | 目标客群 | ② attribute | target_customer_segment:multivalue,is_filterable=true,is_required=true,possible_values=B2B 企业/B2C 个人/开发者/教育机构… |
| 4 | 核心功能服务 | ③ category_standard | core_functions(text,长文,指引型描述) |
| 5 | 价格区间 | ② attribute | price_range_band:select,is_filterable=true,is_required=false,possible_values=区间档位枚举(以档位枚举表达区间,如「~5万円 / 5-50万 / 50万+」;数值范围校验属商品价格字段本体,attribute 层不做数值区间 DSL) |
| 6 | 交付标准 | ③ category_standard | delivery_standard(text,长文:交付物/时限/验收口径指引) |
| 7 | 售后规范 | ③ category_standard | after_sales_policy(text,长文) |
| 8 | B2B 批发适配性 | ② attribute | b2b_wholesale_fit:toggle 或 select(是/否/部分),is_filterable=true,is_required=true |
| 9 | 新零售零售适配性 | ② attribute | retail_fit:toggle 或 select,is_filterable=true,is_required=true |
| + | 薬機法约束(合规挂钩字段位) | ③ category_standard | medical_regulation_applicable(boolean,default false——是否涉薬機法规制对象)+ pharmaceutical_law_note(text nullable——规制说明/表述约束);publish 规范时强制确认 |
category_standard 新本地模块
模块 backend/src/modules/category-standard/(models/services/index),表 category_standard。挂载通道三候选对比结论:① metadata 自由 KV 否决为主通道(无 schema/类型/校验/版本/留痕,无法承载 required 准入强制,保留作杂项扩展位);② attribute 绑定分类采纳(结构化 + is_required 准入强制 + is_filterable 前台筛选 + 字段增删零 migration);③ category_standard 新模块采纳(文档型规范 + 版本化 + 评审留痕,与类目解耦可先建)。组合使「18 类覆盖」可拆解为「attribute 模板齐备 + 18 条规范 published」双验收位。
publish 准入执行点
插入位:publish-vendor-product.ts:130 的 publishVendorProductWorkflow step 链首(既有 validateProductForPublishStep 之前并列新增 assertCategoryStandardComplianceStep,保持既有校验函数零改动、职责单一):
assertCategoryStandardComplianceStep({ product_id })
① 查商品所属类目(product.product_categories → handle)
② 查该 handle 的 published category_standard(status=published 最新 version)
└ 不存在 → 按 flag 阶段行为:阶段1 logger.warn 留痕放行;阶段2 抛
AppError(PRODUCT_CATEGORY_STANDARD_MISSING, "category has no published standard")
③ 查该类目绑定的 is_required=true attribute(经上游 attribute 模块 product_categories 绑定)
对照 product.attribute_values 逐一核对
└ 缺失 → 阶段1 warn;阶段2 抛
AppError(PRODUCT_REQUIRED_ATTRIBUTE_MISSING, "required attributes missing: [names]")
- 守卫全部在 step 内(红线);错误码在
backend/src/errors/error-codes.tsErrorCode 枚举扩展两项,沿用PRODUCT_NO_SHIPPING_PROFILE等既有命名范式; - 灰度开关:featureFlags 新增
category_standard_gate(默认 false=阶段1 warn;沿用「阶段1 warn → 阶段2 强制」两阶段灰度范式); - 现状行为兼容:flag 默认关 ⇒ 上线即回现状(无规范/无 attribute 校验),已售商家零感知。
RK-12:分类改名重译钩子(category-updated)
现状仅创建 hook(category-created-translation.ts:25-36),改名后译文陈旧(RK-12 medium:4×2)。两候选取舍:
| 候选 | 机制 | 评估 |
|---|---|---|
| A. 重译入队复用 translation-job 队列 | 新 hook 文件 category-updated-translation.ts:注册 updateProductCategoriesWorkflow.hooks.categoriesUpdated(官方扩展位);diff 新旧 name/description,有变更则幂等入队;retry worker retryCategory 已就绪 |
选定 与「预检→enqueue」范式同构;AI 未配置时 markSkippedNoConfig 终态 = NFR-3.8-01 不阻断改名;幂等防重复入队;零新状态字段 |
| B. 陈旧标记 + admin 提示 | 译文行打 stale 标记 + TranslationSection 提示横幅 | 本期否决 上游译文表无 stale 字段,成本高于复用队列;保留为 AI 未接入期的人工提示增强项(不阻塞) |
选定候选 A 的配套三点:
- seed 侧同步:CATEGORY_I18N 字典(
seed-category-translations.ts:26起,24 handle × 3 语)为事实源——分类改名必须同步改 seed 字典并重放 seed(写入逻辑先删后写幂等);同步步骤 runbook 化(改类目名 → 改 CATEGORY_I18N →pnpm db:seed→ 重译自动入队); - admin 手工编辑闭环保留:
category-detail.tsx:69-74TranslationSection 不动——重译产出会覆盖译文,admin 可在重译完成后再次手工修正(人工最终确认权保留); - feature flag:
category_retranslate_on_update(默认 false 灰度)——hook 内 flag 关闭时直接 return,回滚 = 关 flag。
Workflow 设计(数据变更必须走 Workflow)
| Workflow | 状态 | steps 链 | 补偿 | 事件 |
|---|---|---|---|---|
upsert-category-standard |
新增 | ① assertCategoryExistsStep(handle 校验,对齐 seed 树)→ ② upsertCategoryStandardStep(draft 写入,携带 previous 快照) |
② 失败回写 previous | 无 |
publish-category-standard |
新增 | ① loadDraftStep → ② assertPharmaceuticalLawConfirmedStep(守卫在 step:medical_regulation_applicable 未确认(false 且 note 空)→ 抛 INVALID_DATA「薬機法适用性确认未完成(C3 同批法务确认)」)→ ③ markPublishedStep(status=published + published_at/by + reviewed_at/by 留痕;旧 version 置 deprecated) |
③ 回写 previous status | 完成后直接 emit category-standard.published(供 admin 列表刷新) |
publish-vendor-product(现有) |
增强 | step 链首插入 assertCategoryStandardComplianceStep |
无写操作无补偿 | 无 |
createProductCategoriesWorkflow / updateProductCategoriesWorkflow(上游) |
仅 hook 注册 | categoriesCreated(既有)/ categoriesUpdated(本卡新增) | C6 try/catch | 经 translation-job 队列 |
数据模型 · API · Workflow
数据模型:category_standard 表
| 字段 | 类型 | 约束/默认 | 说明 |
|---|---|---|---|
id | text | PK,prefix catstd | — |
category_handle | text | not null | 对齐 seed 类目树 handle 事实源(用 handle 而非 id:seed 重放/类目重建下稳定) |
version | integer | not null, default 1 | 规范版本;同 handle 多版本共存 |
status | enum(draft, published, deprecated) | not null, default draft | 生效语义:仅 published 参与 publish 准入校验 |
definition | text | nullable | 维度1 品类定义 |
core_functions | text | nullable | 维度4 核心功能服务 |
delivery_standard | text | nullable | 维度6 交付标准 |
after_sales_policy | text | nullable | 维度7 售后规范 |
medical_regulation_applicable | boolean | not null, default false | 薬機法规制对象确认位(法务确认 = C3 同批) |
pharmaceutical_law_note | text | nullable | 薬機法表述约束说明 |
dimensions_json | jsonb | nullable | 其余可变扩展(预留 C3 核对后新增维度,避免频繁 migration) |
published_at / published_by | timestamptz / text | nullable | 发布留痕 |
reviewed_at / reviewed_by | timestamptz / text | nullable | 评审留痕(对接 NFR-3.9-04 巡检口径,references_only;reviewed_by=req.auth_context.actor_id 落库范式) |
created_at / updated_at / deleted_at | timestamptz | 标准三件套 | medusa 约定 |
索引:UNIQUE(category_handle, version);INDEX(status)(published 查询热点);INDEX(category_handle)。migration 走 medusa db:generate。
API 契约
| 路由 | 方法 | 变更 | 权限域 | 要点 |
|---|---|---|---|---|
/admin/category-standards | GET / POST | 新增 | admin | 列表(filter: handle/status/version)+ draft 创建;zod validators 挂 middlewares |
/admin/category-standards/[id] | GET / PUT | 新增 | admin | draft 编辑;published 行只读(改 = 新版本 draft) |
/admin/category-standards/[id]/publish | POST | 新增 | admin | 调 publish-category-standard workflow;400 = 薬機法确认缺失 / 已发布 |
/vendor/categories/[handle]/standard | GET | 新增 | vendor | 商家建档指引(published 规范九项 + 该类 required attribute 清单,复用 applicable-attributes 上游查询语义按 handle 反查) |
/admin/attributes、/vendor/products/[id]/applicable-attributes | GET / POST / PUT | 无改动 | admin / vendor | 上游 @mercurjs/b2c-core 提供,本卡仅消费不改 |
/store/* 三前台 | — | 无改动 | public | 建档规范为供给侧治理数据,前台不透出(B2B/B2C 消费的是 attribute 筛选值本身,经既有商品 API 自然带出) |
AI 能力接入点
本条无直接 LLM 调用。与 translation client 通路的关系为间接复用(经 translation-job 队列,管道契约引用不重复设计):
- RK-12 重译链路:categoriesUpdated hook → 幂等 enqueue → retry worker(并发信号量/指数退避/MAX 5 既有)→
translateCategoryToLocales(源 ja-JP → zh-Hans/en-US)→ AI 调用走backend/src/modules/translation/client.ts唯一通路(SSRF 三层防护/60s 超时既有); - 降级与跳过(NFR-3.8-01):AI 未配置时任务入队后由 retry worker
markSkippedNoConfig终态化(failed+[no-config] 前缀,logger.info 非告警)——分类改名/类目管理主流程零阻断;翻译故障时任务指数退避重试,改名单独成功; - 范式测试点:①未配置态改名 → 任务 markSkippedNoConfig、改名本身成功;②故障态 → 任务入队退避重试、改名成功;③幂等态 → 同分类连续两次改名 → 队列无重复活跃任务;
- 未来演进注记:建档规范文档型字段(四长文)的三语化可后续经 translation 管道扩展(需扩白名单 + reference 路由),列为后续增强不阻塞本卡。
合规挂钩
| NFR / 法规 | 挂钩点 | 本卡动作 |
|---|---|---|
| 《薬機法》 | ①品类准入确认:新品类/新规范发布须确认是否涉薬機法规制对象(医疗类 AI 产品、健康功效相关表述);②涉规制类目的规范必须在 note 中固化宣传表述约束,并传导至该类商品 attribute 值与文案的表述审核口径;③宣传与译文表述按薬機法广告规制执行——翻译侧衔接 NFR-3.9-02 与 AI-3.5 系管道,本卡只挂约束字段不设计译文审查 | 字段位 medical_regulation_applicable + pharmaceutical_law_note;publish-category-standard workflow step 强制确认;适用性由法务确认 = C3 同批(字段位先建、确认后填,C3 关闭前规范只能停 draft) |
| NFR-3.9-04(人工审核把关) | 建档规范评审(draft→published 的 reviewed_by/at 留痕 + publish 人工动作)对接其巡检口径,references_only | 把关框架本体归 AI-3.9-04,本卡不重设计把关状态机,仅按既有 reviewed_by 落库范式留痕 |
| NFR-3.9-03(审计与可追溯) | 规范变更全程可溯 | 规范版本链(version + deprecated)+ 发布/评审留痕;RK-12 重译任务留痕复用 translation_job.last_error/status |
| C3(业务风险) | 类目语义同构核对 + 薬機法适用性确认 = 规范发布前置 | 技术字段位与流程先备(要素 7 二分);外部决策点仅引用编号与原文,不内联臆造核对结论 |
前端改动面与 i18n
前端触点(逐端)
| 端 | 改动 | 依据 |
|---|---|---|
| admin-panel | ① 新增 routes/categories/category-standard/ 管理页(列表 + 详情编辑 + publish 动作 + 薬機法确认位);② category-detail 挂「建档规范」Section(读 published/draft 概要,入口跳管理页);③ attribute 管理页既有——为 9 项维度 attribute 建 18 类绑定的配置操作说明(runbook),无代码改动 |
维度映射 / 新模块 |
| vendor-panel | ① product-create 建品流 organize 段新增「类目建档字段」区:选类目后按 applicable-attributes 渲染(复用 AttributeSelect 组件范式与既有查询),required 项标必填;② 发布前预检提示(缺 required attribute / 类目无规范时前端先行提示,服务端 step 校验为准);③ 建档指引查看(消费 vendor standard API,Drawer 展示九项规范) | 缺口④收口 |
| storefront / b2b / h2b | 无改动 | 前台不透出治理数据 |
| influencer / referrer panel | 无改动 | 无触点 |
i18n 三语言 key 规划(en / zhCN / ja)
admin-panel(admin-panel/src/i18n/translations/{en.json, zhCN.json, ja.json},categoryStandard.* 命名空间):
| 新增 key | 用途 |
|---|---|
categoryStandard.list.title / .status.draft / .status.published / .status.deprecated | 管理列表与状态徽标 |
categoryStandard.form.definition / .coreFunctions / .deliveryStandard / .afterSalesPolicy | 四文档维度字段标签(对齐字段表列名) |
categoryStandard.form.medicalRegulation / .pharmaceuticalLawNote / .medicalConfirmHint | 薬機法确认位 + 提示(「适用性由法务确认(C3 同批)」) |
categoryStandard.publish.confirmMissingMedical / .publishSuccess / .versionNewDraft | publish 动作文案(含未确认报错、新版本草稿入口) |
categoryStandard.review.reviewedBy / .reviewedAt | 评审留痕展示(NFR-3.9-04 巡检口径对接位) |
vendor-panel(同三文件,products.categoryStandard.* 命名空间):
| 新增 key | 用途 |
|---|---|
products.categoryStandard.guidance.title / .viewStandard | 建档指引 Drawer 标题 / 入口 |
products.categoryStandard.requiredAttributeMissing | 建品/发布预检提示(「该类目必填建档字段未齐:{names}」(i18n 插值占位)) |
products.categoryStandard.noPublishedStandard | 类目无 published 规范提示(阶段1 warn 文案) |
三语值随实现提交,三文件同步新增;storefront 系无新增 key。
风险
前置决策点
- B-c3 「18 类」与总纲类目清单语义同构性核对 + 薬機法适用性确认(PRD 8.1 C3 / 8.2-2 / 7.5 依赖 3)——归属商品团队 + 法务;关闭标准与核对结论本卡仅引用编号,不内联臆造。
- DEC-5 量化指标基线立项定:建档规范覆盖率(=18/18 硬指标)、attribute 填报完整率等运营指标数值本卡不臆造。
- 维度 8/9 组件形态 b2b_wholesale_fit / retail_fit 采用 toggle 或 select(是/否/部分)——实现期随 admin 配置定稿。
- 后续增强 建档规范文档型字段(四长文)的三语化经 translation 管道扩展(需扩白名单 + reference 路由)——本卡不设计其实现。
内部依赖:无硬前置 TDD;上游契约引用 = AI-3.5-02 翻译管道契约(translation-job 队列 / 幂等 enqueue / markSkippedNoConfig 降级范式——只引用不重复设计)。下游消费:AI-3.4-03(P2 智能选品)消费本卡建档规范九项结构化维度为选品特征源,PRD §7.5 依赖 3 明示 C3 为两者共同输入;AI-3.3-02(三语检索)attribute is_filterable 字段为检索筛选候选面(远期);RK-06 mitigation 即本卡两段式结构。外部资源:法务(薬機法适用性,C3 同批)、商品团队(语义核对)——两者仅阻塞发布段。
实施排期与验收
子任务 DAG 与估时(技术方案段五线并行;规范发布段等 C3)
| 子任务 | 依赖 | 估时 |
|---|---|---|
| B1 attribute 映射 + 绑定配置 | 无 | 1d |
| B2 category_standard 模块 + API + UI | 无 | 2.5d |
| B3 publish 准入 step + 灰度 | B1 / B2(判定数据源) | 1d |
| B4 vendor 消费改造 | B1 + B2 | 1.5d |
| B5 RK-12 钩子 | 无(复用 AI-3.5-02 队列契约) | 1d |
| C1 规范发布段 | B-c3 + B1/B2 | 1d(流程性) |
上线顺序建议:B5(RK-12,独立价值先行)→ B1+B2 → B3/B4(flag 默认关灰度)→ 观察 warn 日志盘点缺口类目 → C3 关闭后 C1 批量发布 → 阶段2 强制。
验收标准
| # | 验收标准 | 映射 |
|---|---|---|
| A1 | 建档规范覆盖全部 18 类并发布:category_standard published 行覆盖 seed 类目树全部 18 个子类 handle(18/18 硬性结构指标);显式注明:18 类覆盖验收以 C3 关闭为前提(C3 未关闭前仅有 draft,publish 动作被薬機法确认守卫与流程卡控) | PRD 验收要点① |
| A2 | 新品类准入经规范评审(含薬機法适用性确认):publish-category-standard 在 medical_regulation_applicable=false 且 note 为空 时拒绝(400);published 后新品类创建流程含「建规范 draft → 评审 → 发布」前置 | PRD 验收要点② |
| A3 | publish 准入负向测试:①类目无 published 规范时发布被拒(阶段2)/ warn 放行(阶段1);②缺 required attribute(删 industry_applicability 值)发布被拒并报 PRODUCT_REQUIRED_ATTRIBUTE_MISSING;③齐备时发布链路零回归 | 准入执行点 |
| A4 | RK-12 回归:admin 改类目名 → categoriesUpdated hook 触发 → translation_job 新增(幂等)→ AI 配置时译文更新为 done;AI 未配置时任务 markSkippedNoConfig 且改名主流程成功;flag 关闭时零入队 | RK-12 钩子 |
| A5 | vendor 建品流消费:选类目 → 该类 required attribute 渲染必填 → 缺失时预检提示 + 服务端拦截;附加值 Drawer 既有功能零回归 | 前端触点 |
| A6 | 三语覆盖:9 项维度 attribute 值与 4 项规范文档在 admin 三语界面可维护;分类三语四层闭环零回归(CATEGORY_I18N 24 handle × 3 语 seed 重放幂等) | i18n / 现状闭环 |
| A7 | 量化指标:建档规范覆盖率(=A1 硬指标)、attribute 填报完整率等运营指标基线立项定(DEC-5),不臆造数值 | DEC-5 口径 |
测试策略(分层)与 L0 门禁
L0 门禁:文档十要素齐备、关键 code anchor 可 rg 命中、既有商品发布/翻译域单测回归通过(含 publish-vendor-product/__tests__/product-listing-review.unit.spec.ts 与 translation 域 8 单测)。
| 层 | 范围 | 明细 |
|---|---|---|
| 新增单测(后端) | category_standard 模块 + workflow | upsert 补偿回写;publish 守卫三分支(薬機法未确认拒绝 / 正常发布 + 旧版 deprecated / 重复发布拒绝);assertCategoryStandardComplianceStep 三态(无规范两阶段行为 / 缺 required attribute / 齐备通过);错误码断言 |
| 新增单测(后端) | RK-12 hook | 改名 diff 判定(name 变 / description 变 / 无变化零入队);flag 关闭直返;enqueue 幂等(连续改名无重复活跃任务);markSkippedNoConfig 兜底 |
| 新增单测(admin/vendor) | UI 逻辑 | 规范表单校验(薬機法位联动提示)、vendor 建品流 attribute 段渲染与预检(RTL) |
| 集成 | 跨模块 | 建类 → 建规范 → 发布 → vendor 建品 → 发布全链;seed 重放(db:reset:demo)后 category_standard 与类目树/三语字典一致 |
| 降级路径测试 | NFR-3.8-01 | 三测试点(未配置/故障/幂等)全量纳入;阶段1 flag 下发布主链路零阻断断言 |
迁移与回滚
| 变更 | 迁移 / 回滚路径 |
|---|---|
| category_standard 表 | medusa db:generate 新表独立 migration(全列 + unique(category_handle,version) + index);drop 回滚无连锁;已 published 规范停用走 status=deprecated(数据不删) |
| attribute 九项定义 | 无 migration(上游数据行,经 admin API 配置);停用 = 解绑 product_categories |
| publish 准入校验 | category_standard_gate 置 false = 阶段1(warn 不拦截)= 现状行为等价;step 移除属代码回滚,无数据回滚(只读校验) |
| RK-12 重译钩子 | category_retranslate_on_update 置 false = hook 直返 = 现状;已入队任务由 retry worker 自然消化或留 failed 终态(无副作用) |
| vendor 建品流 attribute 段 | 前端组件级回滚(feature flag 或路由回退);applicable-attributes 查询为既有上游能力零回滚面 |
| seed 兼容 | pnpm db:reset / db:reset:demo 零改动(类目树与三语字典事实源不动);category_standard 空表时 publish 校验阶段1 仅 warn,demo 建品链路零影响 |
附录 · 溯源
本文档生成自 docs/reports/ai-module-prd/tdd/AI-3.4-02-standardized-product-system.md(TDD 深度分级 full;PRD V1.4)。章节映射与处理方式如下:
| 本文档章节 | 源章节 | 处理 |
|---|---|---|
| 摘要 | 元数据表 + §1.3 现状三态判定 | Summarized |
| 关键概念 | §1 / §4.1 / §6 术语 | Summarized |
| 方案设计 · 两段式总览 | §4.0 | Preserved |
| 图 1 两段式 DAG / 图 2 状态机 / 图 3 准入时序 / 图 4 重译时序 | §4.0 / §4.3 / §4.4 / §4.5 | Inferred(可视化转译,节点内容对齐源文字) |
| 九项建档维度映射表 | §4.2 | Preserved |
| 挂载三候选对比与定稿 | §4.1 | Preserved(叙述重组) |
| category_standard 字段表与索引 | §4.3 | Preserved |
| publish 准入执行点(伪代码/错误码/灰度) | §4.4 | Preserved |
| RK-12 两候选取舍与配套三点 | §4.5 | Preserved |
| Workflow 表(steps 链/补偿/事件) | §4.6 | Preserved |
| API 契约表 | §4.7 | Preserved |
| 图 5 实体关系 | §4.3 + §2.1 模块清单 | Inferred(按源字段定义绘制) |
| AI 能力接入点 / 合规挂钩 | §5 / §6 | Preserved(条目化) |
| 前端触点 / i18n key 规划 | §4.8 / §4.9 | Preserved |
| 风险 | §7 二分表 + PRD §8.1 C3 | Summarized |
| 前置决策点 | §7 + §8.1 A7 | Preserved |
| 实施排期与验收(DAG/估时/验收/测试/迁移回滚) | §8 / §9 / §10 | Preserved(迁移回滚压缩为表) |
| 代码现状底座(file:line 证据①~⑧) | §2.1 | Summarized(锚点保留关键项:seed-functions.ts:208-311、category-created-translation.ts:25-36、publish-vendor-product.ts:130、translation-job 枚举等) |
源 TDD 全部锚点在其 run(run-f8e0c4ddb903)以 rg/sed 限定子目录逐条复核,漂移处以「来源锚点(复核:实际行号)」双写标注。本文档保留关键锚点原文;规范性要求以源 TDD 为准。