{
  "documentVersion": 1,
  "format": "axhub-annotation-source",
  "data": {
    "version": 2,
    "prototypeName": "contract-template-management",
    "pageId": "list",
    "updatedAt": 1782871095265,
    "nodes": [
      {
        "id": "ct-list-filter",
        "index": 1,
        "title": "筛选条件",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-list-filter\"]"
          ],
          "fingerprint": "ct-list-filter",
          "path": []
        },
        "aiPrompt": "列表页筛选区字段与查询逻辑。",
        "annotationText": "支持按合同名称（可搜索下拉）、状态、创建人、启用状态筛选。",
        "hasMarkdown": true,
        "color": "#2563eb",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1740508800000
      },
      {
        "id": "ct-list-toolbar",
        "index": 2,
        "title": "新增模板",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-list-toolbar\"]"
          ],
          "fingerprint": "ct-list-toolbar",
          "path": []
        },
        "aiPrompt": "列表工具栏新增入口。",
        "annotationText": "进入新增页，默认从「合同主体」章节开始编辑。",
        "hasMarkdown": false,
        "color": "#32a06e",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1740508800000
      },
      {
        "id": "ct-list-table",
        "index": 3,
        "title": "Word 模板列表",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-list-table\"]"
          ],
          "fingerprint": "ct-list-table",
          "path": []
        },
        "aiPrompt": "主表与子表嵌套列表结构。",
        "annotationText": "",
        "hasMarkdown": true,
        "color": "#0f766e",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1740508800000
      },
      {
        "id": "ct-editor-topbar",
        "index": 4,
        "title": "编辑页顶栏",
        "pageId": "editor",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-editor-topbar\"]"
          ],
          "fingerprint": "ct-editor-topbar",
          "path": []
        },
        "aiPrompt": "返回、保存草稿、保存并发布。",
        "annotationText": "保存仅更新当前 Word 文档；发布生成版本号。",
        "hasMarkdown": true,
        "color": "#64748b",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1740508800000
      },
      {
        "id": "ct-section-tabs",
        "index": 5,
        "title": "章节 Tab",
        "pageId": "editor",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-section-tabs\"]"
          ],
          "fingerprint": "ct-section-tabs",
          "path": []
        },
        "aiPrompt": "9 个合同章节切换。",
        "annotationText": "横向滚动查看全部 9 章；可通过章节列表搜索并跳转。",
        "hasMarkdown": true,
        "color": "#2563eb",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1782820000000
      },
      {
        "id": "ct-contract-type",
        "index": 6.5,
        "title": "合同类型",
        "pageId": "editor",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-contract-type\"]"
          ],
          "fingerprint": "ct-contract-type",
          "path": []
        },
        "aiPrompt": "合同主体章节下的合同类型配置。",
        "annotationText": "仅在「合同主体」章节 Tab 下展示；合同类型为必填，用户自行填写后同步至列表页。",
        "hasMarkdown": true,
        "color": "#7c3aed",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1782820000000
      },
      {
        "id": "ct-vehicle-binding",
        "index": 7,
        "title": "适用车型绑定",
        "pageId": "editor",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-vehicle-binding\"]"
          ],
          "fingerprint": "ct-vehicle-binding",
          "path": []
        },
        "aiPrompt": "附件章节适用车型配置。",
        "annotationText": "点击「请选择品牌 / 型号」弹出级联多选卡片；左侧品牌、右侧型号多选。未选表示全部车型适用。",
        "hasMarkdown": true,
        "color": "#059669",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1740508800000
      },
      {
        "id": "ct-editor-panel",
        "index": 8,
        "title": "编辑区",
        "pageId": "editor",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-editor-panel\"]"
          ],
          "fingerprint": "ct-editor-panel",
          "path": []
        },
        "aiPrompt": "Word 版式分页编辑区。",
        "annotationText": "支持导入 Word、模板占位符、红线/条件条款与锁定区编辑。",
        "hasMarkdown": true,
        "color": "#7c3aed",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1740508800000
      },
      {
        "id": "ct-rte-risk-redline",
        "index": 10,
        "title": "红线",
        "pageId": "editor",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-rte-risk-redline\"]"
          ],
          "fingerprint": "ct-rte-risk-redline",
          "path": []
        },
        "aiPrompt": "风控红线条款标记。",
        "annotationText": "红线功能主要用于在章节中选择特定内容，点击红线将其设置为篡改后自动变成非标合同。不修改红线内内容不会导致流程变为非标。",
        "hasMarkdown": false,
        "color": "#dc2626",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1740508800000
      },
      {
        "id": "ct-rte-unrisk-redline",
        "index": 11,
        "title": "取消红线",
        "pageId": "editor",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-rte-unrisk-redline\"]"
          ],
          "fingerprint": "ct-rte-unrisk-redline",
          "path": []
        },
        "aiPrompt": "取消风控红线标记。",
        "annotationText": "取消功能主要用于取消被选中的部分的红线内容。取消后，在新增租赁合同时修改该部分内容，不会导致流程变为非标准流程。",
        "hasMarkdown": false,
        "color": "#94a3b8",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1740508800000
      },
      {
        "id": "ct-rte-vehicle-clause",
        "index": 12,
        "title": "条件",
        "pageId": "editor",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-rte-vehicle-clause\"]"
          ],
          "fingerprint": "ct-rte-vehicle-clause",
          "path": []
        },
        "aiPrompt": "条件条款（段落级车型显隐）。",
        "annotationText": "条件可在合同主体及租赁订单～安全责任协议全部章节使用：圈定章节内具体内容，使部分条款仅对指定车型生效。与各章节「适用车型」（控制整章是否可见）不同，条件只作用于章节内部分段落。",
        "hasMarkdown": false,
        "color": "#2563eb",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1740508800000
      },
      {
        "id": "ct-rte-unvehicle-clause",
        "index": 13,
        "title": "取消条件",
        "pageId": "editor",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-rte-unvehicle-clause\"]"
          ],
          "fingerprint": "ct-rte-unvehicle-clause",
          "path": []
        },
        "aiPrompt": "取消条件条款标记。",
        "annotationText": "当条款被设置条件后，可以通过选中特定条款内容，点击取消来取消该部分内容的车型限定。",
        "hasMarkdown": false,
        "color": "#64748b",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1740508800000
      },
      {
        "id": "ct-rte-inline-lock",
        "index": 14,
        "title": "锁定",
        "pageId": "editor",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-rte-inline-lock\"]"
          ],
          "fingerprint": "ct-rte-inline-lock",
          "path": []
        },
        "aiPrompt": "内容锁定区标记。",
        "annotationText": "锁定主要用于选中章节内的内容；锁定之后该部分内容无法在新增租赁合同时被篡改。红线、条件以及锁定可以在同一段内容同时生效。",
        "hasMarkdown": false,
        "color": "#b45309",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1740508800000
      },
      {
        "id": "ct-rte-uninline-lock",
        "index": 15,
        "title": "解除锁定",
        "pageId": "editor",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-rte-uninline-lock\"]"
          ],
          "fingerprint": "ct-rte-uninline-lock",
          "path": []
        },
        "aiPrompt": "解除内容锁定标记。",
        "annotationText": "选中已锁定内容后点击解除；解除后新增租赁合同时可再次编辑该部分。",
        "hasMarkdown": false,
        "color": "#94a3b8",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1740508800000
      },
      {
        "id": "ct-preview-panel",
        "index": 16,
        "title": "实时预览",
        "pageId": "editor",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"ct-preview-panel\"]"
          ],
          "fingerprint": "ct-preview-panel",
          "path": []
        },
        "aiPrompt": "A4 分页预览与模拟车型。",
        "annotationText": "支持连续预览/单页预览；各章节可切换模拟车型查看条件条款命中。",
        "hasMarkdown": true,
        "color": "#0ea5e9",
        "images": [],
        "createdAt": 1740508800000,
        "updatedAt": 1740508800000
      }
    ],
    "annotationsByElementId": {
      "ct-list-filter": "### 7.2 筛选区\n\n| 字段 | 控件 | 说明 |\n|---|---|---|\n| 合同名称 | 可搜索下拉 | 选项来自现有模板名称；支持输入模糊搜索 |\n| 状态 | 下拉 | 全部 / 已发布 / 草稿 |\n| 创建人 | 下拉 | 选项来自现有模板 `creator` 去重 |\n| 启用状态 | 下拉 | 全部 / 启用 / 停用（仅已发布） |\n\n**按钮**：\n\n- **查询**：应用筛选条件\n- **重置**：清空筛选恢复默认",
      "ct-list-table": "### 7.4 主表字段\n\n| 列名 | 字段 | 展示规则 |\n|---|---|---|\n| （展开列） | — | 宽 48px |\n| 合同类型 | `contractType` | 展示用户自定义的合同类型文案 |\n| 版本号 | `versionNo` | 草稿显示「—」 |\n| 状态 | `status` | 已发布 / 草稿 Tag |\n| 启用状态 | `enabled` | 已发布：启用/停用；草稿：「—」 |\n| 创建时间 | `createTime` | — |\n| 创建人 | `creator` | 展示短名 |\n| 最后更新时间 | `updateTime` | — |\n| 更新人 | `updater` | 同创建人 |\n| 操作 | — | 见 7.5 |\n\n**分页**：每页 10 条，展示总条数。\n\n### 7.5 主表操作\n\n| 操作 | 显示条件 | 行为 |\n|---|---|---|\n| 启用 / 停用 | 已发布 | 停用需确认；启用直接生效 |\n| 版本日志 | 已发布 | 查看历史快照 |\n| 编辑 | 草稿或已发布且停用 | 启用中禁用 |\n| 删除 | 草稿或已发布且停用 | 启用中禁用 |\n\n### 7.6 子表（展开行）\n\n展示 9 个章节摘要：章节名、适用车型、风控条款数、条件条款数。"
    }
  },
  "markdownMap": {
    "ct-list-filter": "### 7.2 筛选区\n\n| 字段 | 控件 | 说明 |\n|---|---|---|\n| 合同类型 | 可搜索下拉 | 选项来自现有模板 `contractType` 去重；支持输入模糊搜索 |\n| 状态 | 下拉 | 全部 / 已发布 / 草稿 |\n| 创建人 | 下拉 | 选项来自现有模板 `creator` 去重 |\n| 启用状态 | 下拉 | 全部 / 启用 / 停用（仅作用于已发布记录） |\n\n**按钮**：\n\n- **查询**：应用筛选条件\n- **重置**：清空筛选恢复默认",
    "ct-list-table": "### 7.4 主表字段\n\n| 列名 | 字段 | 展示规则 |\n|---|---|---|\n| （展开列） | — | 宽 48px |\n| 合同类型 | `contractType` | 展示用户自定义的合同类型文案 |\n| 版本号 | `versionNo` | 草稿显示「—」 |\n| 状态 | `status` | 已发布 / 草稿 Tag |\n| 启用状态 | `enabled` | 已发布：启用/停用；草稿：「—」 |\n| 创建时间 | `createTime` | — |\n| 创建人 | `creator` | 展示短名（如 `法务-王静` → `王静`） |\n| 最后更新时间 | `updateTime` | — |\n| 更新人 | `updater` | 同创建人展示规则 |\n| 操作 | — | 见 7.5 |\n\n**分页**：每页 10 条，展示总条数。\n\n---\n\n### 7.5 主表操作\n\n| 操作 | 显示条件 | 行为 |\n|---|---|---|\n| 启用 / 停用 | 已发布 | 停用需确认；启用直接生效 |\n| 版本日志 | 已发布 | 查看历史快照 |\n| 编辑 | 草稿，或已发布且停用 | 启用中按钮禁用 |\n| 删除 | 草稿，或已发布且停用 | 启用中按钮禁用；删除前确认 |\n\n---\n\n### 7.6 子表（展开行）\n\n主表每行可展开，展示该 Word 文档下 **9 个章节** 的摘要（原生 HTML 表，非嵌套 Ant Design Table）。\n\n| 列名 | 说明 |\n|---|---|\n| 章节 | 章节名称 |\n| 适用车型 | 附件章节展示绑定列表，格式「品牌 · 型号」；多个用「；」连接；未绑定显示「全部车型」；合同主体显示「—」 |\n| 风控条款数 | 该章节 HTML 内风控红线标记数量 |\n| 条件条款数 | 按各章节 HTML 统计条件条款标记数量 |\n\n---",
    "ct-editor-topbar": "### 8.2 顶栏\n\n| 按钮 | 行为 |\n|---|---|\n| ← 返回列表 | 回到列表页，不自动保存 |\n| 保存 | 见 §6.2 |\n| 保存并发布 | 见 §6.2 |\n\n---\n\n### 6.2 保存与发布\n\n| 操作 | 新增模式 | 编辑草稿 | 编辑已发布（须先停用） |\n|---|---|---|---|\n| **保存** | 新建草稿记录 | 更新原记录，保持草稿 | 更新原记录，**保持已发布与版本号**，仍为停用态 |\n| **保存并发布** | 新建已发布记录 + 版本号，默认启用 | 原记录变已发布 + 版本号，默认启用 | **同记录升级版本号**；旧内容写入 `versionLogs` 快照；发布后默认停用，需手动启用 |\n\n**校验**：保存/发布前，合同主体（`sectionContents.main`）不能为空。\n\n**离开编辑**：有未保存修改时返回列表需二次确认。",
    "ct-contract-type": "### 8.4 合同类型（仅合同主体 Tab）\n\n| 元素 | 说明 |\n|---|---|\n| 合同类型输入框 | **必填**；用户自行填写，如「正式合同」「现代18吨试用合同」 |\n| 展示位置 | 章节 Tab 下方配置卡片，与附件章节的「适用车型」卡片交互一致 |\n| 用途 | 同步至列表页「合同类型」列；租赁合同创建时按类型匹配标准模板 |\n\n**规则**：\n\n- 仅当选中 **合同主体** 章节 Tab 时显示本卡片。\n- 未填写时无法保存或发布，并提示「请输入合同类型」。\n- 切换至租赁订单等附件章节时，显示「适用车型」卡片，本卡片隐藏。\n- 保存/发布时写入模板 `contractType` 字段。",
    "ct-section-tabs": "### 8.3 章节 Tab\n\n- 共 9 个章节；**横向滚动 Tab 条**展示全部章节，右侧提供「章节列表」按钮打开可搜索的章节面板（便于长标题章节快速定位）。\n- 切换 Tab 后，编辑区与预览区 **同步切换** 至对应章节内容。\n- **合同主体 Tab**：编辑/预览 **整份 Word 合并全文**。\n- **其他 Tab**：仅展示该章节切片内容。\n\n章节顺序：\n\n1. 合同主体  \n2. 租赁订单  \n3. 车辆产生的费用  \n4. 安全责任告知书  \n5. 重型普通货运车辆租赁动态监管责任告知与确认书  \n6. 安全责任承诺书  \n7. 车辆使用规范和驾驶员要求  \n8. 授权委托书  \n9. 安全责任协议",
    "ct-vehicle-binding": "### 8.5 适用车型绑定（仅附件章节 Tab）\n\n| 元素 | 说明 |\n|---|---|\n| 品牌下拉 | 来自车型主数据 |\n| 型号下拉 | 随品牌联动 |\n| 添加车型 | 追加到当前章节绑定列表 |\n| 已绑定 Tag | 可删除单项 |\n| 空状态文案 | 「当前未绑定车型，表示全部车型适用」 |\n\n**规则**：\n\n- 绑定保存在 `sectionVehicleBindings[当前章节 key]`。\n- 切换章节 Tab 时加载对应章节的绑定到编辑表单。\n- 保存时将各章节绑定一并写入文档记录。",
    "ct-editor-panel": "### 8.6 编辑区（左侧）\n\n#### 8.6.1 面板头操作\n\n| 按钮 | 说明 |\n|---|---|\n| { } 模板占位符 | 弹层展示变量分组，点击插入光标处 |\n| 导入 Word 模板 | 接受 `.doc` / `.docx`；导入后按 §9 拆分章节 |\n\n#### 8.6.2 编辑能力\n\n- **Word 版式保真**：A4 分页编辑，保留 Word 导出样式类名。\n- **富文本工具栏**（节选）：\n  - 字号、加粗、对齐等基础格式\n  - **锁定**：选中内容设为锁定区\n  - **解锁**：解除锁定\n  - **风控**：标记风控红线条款\n  - **条件**：在各章节选中段落绑定车型条件\n\n#### 8.6.3 条件条款交互\n\n**适用范围**：合同主体、租赁订单、车辆产生的费用、安全责任告知书、重型普通货运车辆租赁动态监管责任告知与确认书、安全责任承诺书、车辆使用规范和驾驶员要求、授权委托书、安全责任协议。\n\n1. 用户选中段落或文字；\n2. 点击工具栏「条件」；\n3. 为选中内容绑定一个或多个「品牌 · 型号」；\n4. 生成 `.ct-vehicle-clause` 包裹结构，并写入 `data-vehicle-bindings`；\n5. 创建合同时：订单车辆 **任意一辆** 命中绑定车型 → 段落纳入正文；否则隐藏。",
    "ct-preview-panel": "### 8.7 实时预览（右侧）\n\n#### 8.7.1 预览模式\n\n| 模式 | 说明 |\n|---|---|\n| 连续预览 | 多页连续滚动 |\n| 单页预览 | 按 A4 单页翻页 |\n\n#### 8.7.2 预览顶栏统计\n\n展示当前章节：\n\n`锁定 N 处 · 风控红线 M 处 · 条件条款 K 处`\n\n当前章节支持条件且已选模拟车型时追加：`（预览命中 X）`\n\n#### 8.7.3 模拟车型\n\n- 在合同主体及全部附件章节可用；多选下拉，选项来自车型主数据（品牌 · 型号）。\n- 未选车型时：**隐藏**所有条件条款段落（与创建合同时无车辆命中行为一致）。\n- 选中后按命中规则过滤并展开条件条款正文。\n\n#### 8.7.4 占位符预览\n\n预览时替换部分占位符为样例值，如：\n\n- `{{customerName}}` → `【承租方公司名称】`\n- `{{contractCode}}` → `20260001`\n- 甲方相关变量按预览所选出租方公司填充"
  },
  "assetMap": {},
  "directory": {
    "nodes": [
      {
        "type": "folder",
        "id": "oneos-project-nav",
        "title": "ONE-OS 原型导航",
        "defaultExpanded": true,
        "children": [
          {
            "type": "link",
            "id": "nav-link-contract-template-management",
            "title": "合同模板管理（当前）",
            "href": "/prototypes/contract-template-management",
            "target": "self"
          },
          {
            "type": "link",
            "id": "nav-link-insurance-procurement",
            "title": "保险采购",
            "href": "/prototypes/insurance-procurement",
            "target": "self"
          },
          {
            "type": "link",
            "id": "nav-link-vehicle-management",
            "title": "车辆管理",
            "href": "/prototypes/vehicle-management",
            "target": "self"
          },
          {
            "type": "link",
            "id": "nav-link-lease-contract-management",
            "title": "租赁合同管理",
            "href": "/prototypes/lease-contract-management",
            "target": "self"
          },
          {
            "type": "link",
            "id": "nav-link-customer-management",
            "title": "客户管理",
            "href": "/prototypes/customer-management",
            "target": "self"
          },
          {
            "type": "link",
            "id": "nav-link-lease-business-ledger",
            "title": "租赁业务台账",
            "href": "/prototypes/lease-business-ledger",
            "target": "self"
          },
          {
            "type": "link",
            "id": "nav-link-vehicle-h2-fee-ledger",
            "title": "车辆氢费明细",
            "href": "/prototypes/vehicle-h2-fee-ledger",
            "target": "self"
          },
          {
            "type": "link",
            "id": "nav-link-self-operated-business-ledger",
            "title": "自营业务台账",
            "href": "/prototypes/self-operated-business-ledger",
            "target": "self"
          },
          {
            "type": "folder",
            "id": "nav-folder-prototypes-oneos-web",
            "title": "ONE-OS Web 端",
            "defaultExpanded": true,
            "children": [
              {
                "type": "link",
                "id": "nav-link-oneos-web-workbench",
                "title": "工作台",
                "href": "/prototypes/oneos-web-workbench",
                "target": "self"
              },
              {
                "type": "link",
                "id": "nav-link-oneos-web-login",
                "title": "登录",
                "href": "/prototypes/oneos-web-login",
                "target": "self"
              },
              {
                "type": "link",
                "id": "nav-link-oneos-web-vehicle-asset",
                "title": "车辆管理",
                "href": "/prototypes/oneos-web-vehicle-asset",
                "target": "self"
              },
              {
                "type": "link",
                "id": "nav-link-oneos-web-contract-template",
                "title": "合同模板管理",
                "href": "/prototypes/oneos-web-contract-template",
                "target": "self"
              },
              {
                "type": "link",
                "id": "nav-link-oneos-web-help-center",
                "title": "帮助中心",
                "href": "/prototypes/oneos-web-help-center",
                "target": "self"
              },
              {
                "type": "link",
                "id": "nav-link-oneos-web-finance",
                "title": "财务管理",
                "href": "/prototypes/oneos-web-finance",
                "target": "self"
              },
              {
                "type": "link",
                "id": "nav-link-oneos-web-procurement",
                "title": "采购管理",
                "href": "/prototypes/oneos-web-procurement",
                "target": "self"
              },
              {
                "type": "link",
                "id": "nav-link-oneos-web-lease-contract",
                "title": "车辆租赁合同",
                "href": "/prototypes/oneos-web-lease-contract",
                "target": "self"
              },
              {
                "type": "link",
                "id": "nav-link-oneos-web-h2-station",
                "title": "加氢站管理",
                "href": "/prototypes/oneos-web-h2-station",
                "target": "self"
              },
              {
                "type": "link",
                "id": "nav-link-oneos-web-data-analysis",
                "title": "数据分析",
                "href": "/prototypes/oneos-web-data-analysis",
                "target": "self"
              },
              {
                "type": "link",
                "id": "nav-link-oneos-web-ledger-data",
                "title": "台账数据",
                "href": "/prototypes/oneos-web-ledger-data",
                "target": "self"
              },
              {
                "type": "link",
                "id": "nav-link-oneos-web-business",
                "title": "业务管理",
                "href": "/prototypes/oneos-web-business",
                "target": "self"
              },
              {
                "type": "link",
                "id": "nav-link-oneos-web-ops",
                "title": "运维管理",
                "href": "/prototypes/oneos-web-ops",
                "target": "self"
              },
              {
                "type": "link",
                "id": "nav-link-oneos-web-requirements",
                "title": "需求说明",
                "href": "/prototypes/oneos-web-requirements",
                "target": "self"
              }
            ]
          }
        ]
      },
      {
        "type": "folder",
        "id": "ct-doc-root",
        "title": "合同模板管理说明",
        "defaultExpanded": true,
        "children": [
          {
            "type": "markdown",
            "id": "ct-doc-overview",
            "title": "模块总览",
            "markdown": "## 模块定位\n\n| 项 | 说明 |\n|---|---|\n| 模块名称 | 合同模板管理 |\n| 目标用户 | 法务人员 |\n| 核心任务 | 维护 Word 版商用车租赁合同模板，按章节编辑，发布版本并控制启用态 |\n| 数据模型 | 一份 Word 文件 = 一条记录，内含 9 个章节内容 |\n| PRD 文档 | 见目录「PRD 全文 → PRD 完整文档」 |\n| 资源文件 | `src/resources/contract-template-management/PRD.md` |\n\n---\n\n### 产品目标（摘要）\n\n| 目标 | 说明 |\n|---|---|\n| 降低维护成本 | 一份 Word 文件 = 一条记录，导入后自动拆分章节 |\n| 保证合规可控 | 支持锁定区、风控红线条款标记与统计 |\n| 支撑业务差异化 | 附件章节按车型绑定；各章节均支持条件条款 |\n| 版本可追溯 | 草稿 / 已发布分离；发布变更写入版本日志 |\n| 多套模板并存 | 租赁创建时由用户选择已启用模板 |\n\n**同步命令**：`node src/prototypes/contract-template-management/scripts/build-annotation-source.mjs`"
          },
          {
            "type": "folder",
            "id": "ct-doc-prd",
            "title": "PRD 全文",
            "defaultExpanded": true,
            "children": [
              {
                "type": "markdown",
                "id": "ct-doc-prd-full",
                "title": "PRD 完整文档",
                "markdown": "# 合同模板管理 · 产品需求文档（PRD）\n\n| 项 | 内容 |\n|---|---|\n| 文档版本 | v1.0 |\n| 模块名称 | 合同模板管理 |\n| 所属系统 | ONE-OS 业务管理 |\n| 目标读者 | 前端 / 后端 / 测试 / 法务产品对接人 |\n| 交互原型 | `/prototypes/contract-template-management` |\n| 关联原型 | [车辆管理](/prototypes/vehicle-management)（车型主数据口径参考） |\n| 文档状态 | 已对齐原型（启用态 / 版本日志 / 全章节条件条款） |\n\n---\n\n## 1. 背景与目标\n\n### 1.1 背景\n\n商用车租赁合同以 Word 文档形式维护，内容长、结构复杂，包含合同主体与 8 个附件章节。不同车型可能需要不同的附件条款组合。法务人员需要：\n\n- 以 **Word 版式保真** 的方式维护整份合同；\n- 按 **章节** 管理内容，并配置 **适用车型**；\n- 发布 **版本**，通过 **启用/停用** 控制模板是否可供租赁合同选用；\n- 在合同主体及租赁订单～安全责任协议各章节中配置 **条件条款**（按订单车辆命中显隐）。\n\n### 1.2 产品目标\n\n| 目标 | 说明 |\n|---|---|\n| 降低维护成本 | 一份 Word 文件 = 一条记录，导入后自动拆分章节 |\n| 保证合规可控 | 支持锁定区、风控红线条款标记与统计 |\n| 支撑业务差异化 | 附件章节按车型绑定；各章节均支持条件条款 |\n| 版本可追溯 | 草稿 / 已发布分离；已发布修改产生新版本并写入版本日志 |\n| 多套模板并存 | 正式/试用、不同车型等多套已发布模板可同时存在；租赁创建时由用户选择 |\n\n### 1.3 非目标（本期不做）\n\n- 采购合同、服务合同等其他分类的完整业务闭环（数据结构预留 `category`，当前仅启用 `lease`）\n- 在线多人协同编辑、审批流配置界面\n- Word 导出回写（本期以 HTML 结构化存储 + 预览为主）\n- 列表页顶部章节 Tab（**仅编辑页**保留章节 Tab）\n\n---\n\n## 2. 用户与场景\n\n### 2.1 目标用户\n\n| 角色 | 诉求 |\n|---|---|\n| 法务人员（主用户） | 导入/编辑 Word 模板、发布版本、启用/停用模板 |\n| 客服人员（间接用户） | 草拟新合同时从已启用模板中选择（下游「租赁合同管理」消费） |\n| 运营 / 风控（间接用户） | 查看风控红线条款配置情况 |\n\n### 2.2 核心用户故事\n\n1. **作为法务**，我希望导入一份完整 Word 合同，系统自动拆成 9 个章节，以便分章节维护。\n2. **作为法务**，我希望为「租赁订单」等附件章节绑定适用车型，以便创建合同时只纳入匹配车辆的条款。\n3. **作为法务**，我希望在合同主体及租赁订单～安全责任协议各章节为某段落设置「条件条款」并绑定车型，以便不同车型看到不同正文。\n4. **作为法务**，我希望保存草稿不产生版本号，发布后才生成版本号，以便区分未上线内容。\n5. **作为法务**，我希望对已发布模板执行启用/停用，停用后方可编辑，并在发布变更时自动归档旧版快照到版本日志。\n6. **作为客服**，我希望在创建租赁合同时第一步选择要使用的已启用合同模板。\n7. **作为法务**，我希望在列表展开行查看各章节的风控条款数、条件条款数，以便快速评估模板完整度。\n\n---\n\n## 3. 名词解释\n\n| 名词 | 定义 |\n|---|---|\n| Word 文档 / 模板记录 | 列表主表一行，对应一份完整合同文件 |\n| 章节 | 合同内的逻辑切片，共 9 个（1 个主体 + 8 个附件） |\n| 草稿 | `status = draft`，无版本号 |\n| 已发布 | `status = published`，有版本号 `vX.XX` |\n| 启用 | `enabled = true` 的已发布模板，可供租赁合同创建选用 |\n| 停用 | `enabled = false` 的已发布模板，不可编辑/删除，不可被租赁创建选用 |\n| 版本日志 | `versionLogs[]`，记录发布变更前自动归档的快照 |\n| 锁定区 | 编辑区内不可随意修改的段落，HTML 标记 `data-inline-lock=\"1\"` |\n| 风控红线条款 | 需重点合规关注的条款，HTML 标记 `data-risk-redline=\"1\"` |\n| 条件条款 | 各章节可用，按订单车辆命中显隐，HTML 标记 `data-vehicle-clause=\"1\"` |\n| 适用车型绑定 | 附件章节级别配置，决定该章节是否纳入某份合同 |\n| 模板占位符 | 形如 `{{contractCode}}` 的变量，创建合同时由系统替换 |\n\n---\n\n## 4. 信息架构\n\n```text\n合同模板管理\n├── 列表页\n│   ├── 筛选区\n│   ├── 工具栏（新增）\n│   └── 嵌套表格\n│       ├── 主表：Word 文件\n│       └── 子表：9 个章节（展开行）\n└── 编辑 / 新增页\n    ├── 顶栏（返回、保存、保存并发布）\n    ├── 章节 Tab（仅本页展示）\n    ├── 条件条款说明（各章节均可使用工具栏「条件」）\n    ├── 适用车型绑定（附件章节 Tab 时显示）\n    └── 工作区\n        ├── 左侧：Word 版式编辑区\n        └── 右侧：A4 实时预览\n```\n\n---\n\n## 5. 数据模型\n\n### 5.1 模板记录（Word 文档级）\n\n一条记录代表 **一份 Word 合同文件**，不按章节拆成多行。\n\n```typescript\ninterface ContractTemplateDocument {\n  id: string;                          // 唯一 ID\n  category: 'lease';                   // 合同分类，当前固定商用车租赁\n  contractType: string;                // 用户自定义合同类型，如「正式合同」「试用合同」\n  fileName: string;                    // Word 文件名，如「现代18吨车型-数智中心版.docx」\n  versionName: string;                 // 展示用版本名称\n  versionNo: string | null;            // 已发布：v1.00；草稿：null\n  status: 'draft' | 'published';\n  enabled: boolean;                    // 已发布模板是否启用（草稿恒为 false）\n  versionLogs: VersionLogEntry[];    // 版本变更日志与快照\n  sectionContents: Record<SectionKey, string>;           // 各章节 HTML\n  sectionVehicleBindings: Record<SectionKey, VehicleBinding[]>; // 各章节车型绑定\n  creator: string;\n  createTime: string;                  // YYYY-MM-DD HH:mm\n  updater: string;\n  updateTime: string;\n  remark?: string;                     // 内部备注（列表不展示）\n}\n\ninterface VersionLogEntry {\n  id: string;\n  versionNo: string;                   // 归档时的版本号\n  action: string;                      // 如「发布变更」\n  operator: string;\n  time: string;\n  remark?: string;\n  snapshot: {\n    fileName: string;\n    versionName: string;\n    versionNo: string;\n    sectionContents: Record<SectionKey, string>;\n    sectionVehicleBindings: Record<SectionKey, VehicleBinding[]>;\n    remark?: string;\n    archivedAt: string;\n  };\n}\n\ninterface VehicleBinding {\n  brand: string;   // 品牌，如「现代」\n  model: string;   // 型号，如「18吨氢燃料电池车」\n}\n```\n\n### 5.2 章节枚举（SectionKey）\n\n| key | 章节名称 | 车型绑定 | 条件条款 |\n|---|---|:---:|:---:|\n| `main` | 合同主体 | 否 | 是 |\n| `lease_order` | 租赁订单 | 是 | 是 |\n| `vehicle_cost` | 车辆产生的费用 | 是 | 是 |\n| `safety_notice` | 安全责任告知书 | 是 | 是 |\n| `dynamic_supervision` | 重型普通货运车辆租赁动态监管责任告知与确认书 | 是 | 是 |\n| `safety_commitment` | 安全责任承诺书 | 是 | 是 |\n| `vehicle_spec` | 车辆使用规范和驾驶员要求 | 是 | 是 |\n| `authorization` | 授权委托书 | 是 | 是 |\n| `safety_agreement` | 安全责任协议 | 是 | 是 |\n\n### 5.3 章节内容 HTML 标记规范\n\n研发需保证存储、渲染、统计口径一致：\n\n| 类型 | 选择器 / 属性 | 统计函数 |\n|---|---|---|\n| 锁定区 | `.ct-inline-lock[data-inline-lock=\"1\"]` | `countLockRegions` |\n| 风控红线 | `.ct-risk-redline[data-risk-redline=\"1\"]` | `countRiskRedlineRegions` |\n| 条件条款 | `.ct-vehicle-clause[data-vehicle-clause=\"1\"]` | `countVehicleClauseRegions` |\n| 条件条款车型 | `data-vehicle-bindings`（JSON 数组） | 预览命中逻辑 |\n\n---\n\n## 6. 业务规则（全局）\n\n### 6.1 版本号规则\n\n- 格式：`v{major}.{minor}`，如 `v1.00`、`v1.01`\n- **仅发布时生成**；保存草稿时 `versionNo = null`\n- 同分类下递增：取当前已发布版本最大 minor +1；minor ≥ 99 时 major +1、minor 归 0\n- 首版默认 `v1.00`\n\n### 6.2 保存与发布\n\n| 操作 | 新增模式 | 编辑草稿 | 编辑已发布（须先停用） |\n|---|---|---|---|\n| **保存** | 新建草稿记录 | 更新原记录，保持草稿 | 更新原记录，**保持已发布与版本号**，仍为停用态 |\n| **保存并发布** | 新建已发布记录 + 版本号，默认启用 | 原记录变已发布 + 版本号，默认启用 | **同记录升级版本号**；旧内容写入 `versionLogs` 快照；发布后默认停用，需手动启用 |\n\n**校验**：保存/发布前，合同主体（`sectionContents.main`）不能为空。\n\n**离开编辑**：有未保存修改时返回列表需二次确认。\n\n### 6.3 启用 / 停用规则\n\n1. 仅 **已发布** 模板具有启用态；草稿显示「—」。\n2. **启用中**：不可编辑、不可删除；可供租赁合同创建选用。\n3. **停用**：需二次确认（提示可能导致标准合同无法正常使用）；停用后可编辑、可删除；租赁创建不可选用。\n4. **启用**：直接生效，无需二次确认。\n5. 编辑已发布模板并发布后，模板自动变为 **停用**，需重新启用后下游才可选。\n\n### 6.4 版本日志规则\n\n1. 对已发布模板执行「保存并发布」前，系统将 **当前内容自动归档** 为快照写入 `versionLogs`。\n2. 列表操作列提供「版本日志」，可查看历史版本号、操作人、时间与快照正文（只读）。\n3. 列表主表 **一行对应一份 Word 文件**，历史版本通过日志追溯，不另增列表行。\n\n### 6.5 删除规则\n\n- **启用中** 的已发布模板不可删除。\n- 其余记录可删除；删除前二次确认；删除后不可恢复。\n\n### 6.6 列表排序\n\n按 `updateTime` 降序。\n\n### 6.7 筛选匹配规则\n\n| 字段 | 匹配逻辑 |\n|---|---|\n| 合同类型 | 下拉选择（支持输入模糊搜索候选项）；精确匹配 `contractType` |\n| 状态 | 精确匹配 `draft` / `published` |\n| 创建人 | 精确匹配 `creator` |\n| 启用状态 | `enabled`：仅已发布且启用；`disabled`：仅已发布且停用 |\n\n> **已移除**：筛选项「适用品牌/适用车型」、主表列「备注」、「设为标准模板」能力。\n\n---\n\n## 7. 列表页需求\n\n### 7.1 页面结构\n\n筛选区 + 工具栏 + 嵌套表格。**列表页不展示章节 Tab。**\n\n### 7.2 筛选区\n\n| 字段 | 控件 | 说明 |\n|---|---|---|\n| 合同类型 | 可搜索下拉 | 选项来自现有模板 `contractType` 去重；支持输入模糊搜索 |\n| 状态 | 下拉 | 全部 / 已发布 / 草稿 |\n| 创建人 | 下拉 | 选项来自现有模板 `creator` 去重 |\n| 启用状态 | 下拉 | 全部 / 启用 / 停用（仅作用于已发布记录） |\n\n**按钮**：\n\n- **查询**：应用筛选条件\n- **重置**：清空筛选恢复默认\n\n### 7.3 工具栏\n\n| 按钮 | 行为 |\n|---|---|\n| 新增 | 进入新增页，默认章节为「合同主体」，模式为 create |\n\n### 7.4 主表字段\n\n| 列名 | 字段 | 展示规则 |\n|---|---|---|\n| （展开列） | — | 宽 48px |\n| 合同类型 | `contractType` | 展示用户自定义的合同类型文案 |\n| 版本号 | `versionNo` | 草稿显示「—」 |\n| 状态 | `status` | 已发布 / 草稿 Tag |\n| 启用状态 | `enabled` | 已发布：启用/停用；草稿：「—」 |\n| 创建时间 | `createTime` | — |\n| 创建人 | `creator` | 展示短名（如 `法务-王静` → `王静`） |\n| 最后更新时间 | `updateTime` | — |\n| 更新人 | `updater` | 同创建人展示规则 |\n| 操作 | — | 见 7.5 |\n\n**分页**：每页 10 条，展示总条数。\n\n### 7.5 主表操作\n\n| 操作 | 显示条件 | 行为 |\n|---|---|---|\n| 启用 / 停用 | 已发布 | 停用需确认；启用直接生效 |\n| 版本日志 | 已发布 | 查看历史快照 |\n| 编辑 | 草稿，或已发布且停用 | 启用中按钮禁用 |\n| 删除 | 草稿，或已发布且停用 | 启用中按钮禁用；删除前确认 |\n\n### 7.6 子表（展开行）\n\n主表每行可展开，展示该 Word 文档下 **9 个章节** 的摘要（原生 HTML 表，非嵌套 Ant Design Table）。\n\n| 列名 | 说明 |\n|---|---|\n| 章节 | 章节名称 |\n| 适用车型 | 附件章节展示绑定列表，格式「品牌 · 型号」；多个用「；」连接；未绑定显示「全部车型」；合同主体显示「—」 |\n| 风控条款数 | 该章节 HTML 内风控红线标记数量 |\n| 条件条款数 | 按各章节 HTML 统计条件条款标记数量 |\n\n---\n\n## 8. 编辑 / 新增页需求\n\n### 8.1 页面结构\n\n顶栏 → 章节 Tab → 条件说明 / 车型绑定（按章节显隐）→ 左右分栏工作区。\n\n### 8.2 顶栏\n\n| 按钮 | 行为 |\n|---|---|\n| ← 返回列表 | 回到列表页，不自动保存 |\n| 保存 | 见 §6.2 |\n| 保存并发布 | 见 §6.2 |\n\n### 8.3 章节 Tab\n\n- 共 9 个章节；**横向滚动 Tab 条**展示全部章节，右侧提供「章节列表」按钮打开可搜索的章节面板（便于长标题章节快速定位）。\n- 切换 Tab 后，编辑区与预览区 **同步切换** 至对应章节内容。\n- **合同主体 Tab**：编辑/预览 **整份 Word 合并全文**。\n- **其他 Tab**：仅展示该章节切片内容。\n\n章节顺序：\n\n1. 合同主体  \n2. 租赁订单  \n3. 车辆产生的费用  \n4. 安全责任告知书  \n5. 重型普通货运车辆租赁动态监管责任告知与确认书  \n6. 安全责任承诺书  \n7. 车辆使用规范和驾驶员要求  \n8. 授权委托书  \n9. 安全责任协议  \n\n### 8.4 条件条款说明（合同主体及租赁订单～安全责任协议）\n\n展示说明卡片，文案要点：\n\n> 在编辑区选中段落后，点击工具栏「条件」并指定适用车型。适用于合同主体及全部附件章节。创建合同时，订单车辆任意命中即纳入正文；右侧预览可选择模拟车型验证显隐。\n\n### 8.5 适用车型绑定（仅附件章节 Tab）\n\n| 元素 | 说明 |\n|---|---|\n| 品牌下拉 | 来自车型主数据 |\n| 型号下拉 | 随品牌联动 |\n| 添加车型 | 追加到当前章节绑定列表 |\n| 已绑定 Tag | 可删除单项 |\n| 空状态文案 | 「当前未绑定车型，表示全部车型适用」 |\n\n**规则**：\n\n- 绑定保存在 `sectionVehicleBindings[当前章节 key]`。\n- 切换章节 Tab 时加载对应章节的绑定到编辑表单。\n- 保存时将各章节绑定一并写入文档记录。\n\n### 8.6 编辑区（左侧）\n\n#### 8.6.1 面板头操作\n\n| 按钮 | 说明 |\n|---|---|\n| { } 模板占位符 | 弹层展示变量分组，点击插入光标处 |\n| 导入 Word 模板 | 接受 `.doc` / `.docx`；导入后按 §9 拆分章节 |\n\n#### 8.6.2 编辑能力\n\n- **Word 版式保真**：A4 分页编辑，保留 Word 导出样式类名。\n- **富文本工具栏**（节选）：\n  - 字号、加粗、对齐等基础格式\n  - **锁定**：选中内容设为锁定区\n  - **解锁**：解除锁定\n  - **风控**：标记风控红线条款\n  - **条件**：在各章节选中段落绑定车型条件\n\n#### 8.6.3 条件条款交互\n\n**适用范围**：合同主体、租赁订单、车辆产生的费用、安全责任告知书、重型普通货运车辆租赁动态监管责任告知与确认书、安全责任承诺书、车辆使用规范和驾驶员要求、授权委托书、安全责任协议。\n\n1. 用户选中段落或文字；\n2. 点击工具栏「条件」；\n3. 为选中内容绑定一个或多个「品牌 · 型号」；\n4. 生成 `.ct-vehicle-clause` 包裹结构，并写入 `data-vehicle-bindings`；\n5. 创建合同时：订单车辆 **任意一辆** 命中绑定车型 → 段落纳入正文；否则隐藏。\n\n### 8.7 实时预览（右侧）\n\n#### 8.7.1 预览模式\n\n| 模式 | 说明 |\n|---|---|\n| 连续预览 | 多页连续滚动 |\n| 单页预览 | 按 A4 单页翻页 |\n\n#### 8.7.2 预览顶栏统计\n\n展示当前章节：\n\n`锁定 N 处 · 风控红线 M 处 · 条件条款 K 处`\n\n当前章节支持条件且已选模拟车型时追加：`（预览命中 X）`\n\n#### 8.7.3 模拟车型\n\n- 在合同主体及全部附件章节可用；多选下拉，选项来自车型主数据（品牌 · 型号）。\n- 未选车型时：**隐藏**所有条件条款段落（与创建合同时无车辆命中行为一致）。\n- 选中后按命中规则过滤并展开条件条款正文。\n\n#### 8.7.4 占位符预览\n\n预览时替换部分占位符为样例值，如：\n\n- `{{customerName}}` → `【承租方公司名称】`\n- `{{contractCode}}` → `20260001`\n- 甲方相关变量按预览所选出租方公司填充\n\n### 8.8 空状态\n\n编辑区无内容时，预览区展示空状态引导；新增模式下突出「导入 Word 模板」按钮。\n\n---\n\n## 9. Word 导入与章节拆分\n\n### 9.1 导入范围\n\n- 一次导入 **整份合同**；\n- 导入后写入各 `sectionContents[key]`；\n- 默认进入「合同主体」章节编辑。\n\n### 9.2 拆分策略\n\n1. 对导入 HTML 做 Word 导出清洗（`sanitizeWordExportHtml`）；\n2. 从附件章节起，按 **章节标记字符串** 定位切分点；\n3. 切分点优先落在 `</p>`、`</table>`、`</div>` 之后，避免打断标签；\n4. `main` = 第一个切分点之前的全文；\n5. 各附件章节 = 相邻切分点之间的片段。\n\n### 9.3 章节标记（节选）\n\n研发需维护可扩展的 `markers` 列表，示例：\n\n| 章节 | 标记示例 |\n|---|---|\n| 租赁订单 | `附件 1：租赁订单`、`附件1：租赁订单` |\n| 车辆产生的费用 | `附件2：车辆产生的费用` |\n| 安全责任告知书 | `附件3：安全责任告知书` |\n| … | 完整列表见原型 `DOCUMENT_SECTION_TABS` |\n\n### 9.4 误匹配过滤\n\n以下情况 **不应** 作为切分点：\n\n- 标记出现在「详见附件…」「以附件…」等引用语境；\n- 标记过短且不在 `<b>` 标题语境内；\n- 标记前为「（」「、」等不完整标题上下文。\n\n---\n\n## 10. 模板占位符\n\n### 10.1 变量分组\n\n**甲方签约主体**（创建合同时按所选签约公司自动替换）：\n\n| key | 标签 |\n|---|---|\n| `lessorName` | 甲方全称 |\n| `lessorAddress` | 甲方地址 |\n| `lessorContact` | 甲方联系人 |\n| `lessorPhone` | 甲方电话 |\n| `lessorEmail` | 甲方邮箱 |\n| `lessorAccountName` | 收款户名 |\n| `lessorBankName` | 开户行 |\n| `lessorBankAccount` | 银行账号 |\n\n**合同通用**（创建合同时由系统或客服填写）：\n\n| key | 标签 |\n|---|---|\n| `contractCode` | 合同编号 |\n| `customerName` | 乙方公司全称 |\n| `creditCode` | 乙方统一社会信用代码 |\n| `customerAddress` | 乙方地址 |\n| `customerContact` | 乙方联系人 |\n| `customerPhone` | 乙方联系电话 |\n| `signDateYear` | 签订年份 |\n| `signDateMonth` | 签订月份 |\n| `signDateDay` | 签订日期 |\n\n### 10.2 插入规则\n\n- 编辑区光标处插入 `{{key}}`；\n- 存储为 HTML 文本，不做运行时强校验；\n- 缺失变量创建合同时按空字符串或业务默认值处理（由下游定义）。\n\n---\n\n## 11. 车型主数据\n\n品牌 · 型号下拉数据与车辆管理模块保持一致，当前原型内置示例：\n\n| 品牌 | 型号示例 |\n|---|---|\n| 现代 | 18吨氢燃料电池车、帕力安牌4.5吨冷链车 |\n| 苏龙 | 9.6米氢燃料电池车 |\n| 柳汽乘龙 | 9.6米氢燃料电池车 |\n| 飞驰 | 集卡头、半挂车 |\n| 跃进 | 4.2米冷链车 |\n| 宇通 | 氢燃料电池客车 |\n\n> 正式环境应由车辆主数据服务提供；绑定存储仅保存品牌 + 型号字符串。\n\n---\n\n## 12. 与其他模块的关系\n\n```mermaid\nflowchart LR\n  A[合同模板管理] -->|已启用模板 + 章节内容| B[租赁合同创建]\n  A -->|车型绑定口径| C[车辆管理]\n  A -->|占位符变量定义| B\n  B -->|订单车辆列表| A\n```\n\n| 模块 | 关系 |\n|---|---|\n| 租赁合同创建 | 创建流程第一步选择 **已启用** 的已发布模板；按订单车辆过滤条件条款与附件章节 |\n| 车辆管理 | 车型品牌/型号枚举口径一致 |\n| 非标准合同审批 | 合同正文出现 `data-nonstd-trigger` 时触发（标记规范已预留） |\n\n---\n\n## 13. 权限与审计（建议）\n\n| 能力 | 建议权限 |\n|---|---|\n| 查看列表 | 法务、客服（只读） |\n| 新增 / 编辑 / 发布 | 法务 |\n| 启用 / 停用 | 法务 |\n| 删除 | 法务负责人 |\n\n**审计字段**：`creator`、`createTime`、`updater`、`updateTime` 必须在每次保存时更新；发布变更写入 `versionLogs`。\n\n---\n\n## 14. 接口需求（建议）\n\n### 14.1 列表查询\n\n```\nGET /api/contract-templates?category=lease&fileName=&status=&creator=&enabled=&page=1&pageSize=10\n```\n\n响应需包含主表字段；章节摘要可列表内嵌或展开时按需加载。\n\n### 14.2 详情\n\n```\nGET /api/contract-templates/{id}\n```\n\n返回完整 `sectionContents`、`sectionVehicleBindings`、`versionLogs`。\n\n### 14.3 创建 / 更新\n\n```\nPOST /api/contract-templates\nPUT  /api/contract-templates/{id}\n```\n\n请求体含章节 HTML 与绑定；`publish: boolean` 控制是否发布。\n\n### 14.4 启用 / 停用\n\n```\nPOST /api/contract-templates/{id}/enable\nPOST /api/contract-templates/{id}/disable\n```\n\n停用前需二次确认；启用中记录拒绝编辑/删除类写操作（由业务层校验）。\n\n### 14.5 删除\n\n```\nDELETE /api/contract-templates/{id}\n```\n\n拒绝删除 `enabled=true` 的记录。\n\n### 14.6 Word 导入\n\n```\nPOST /api/contract-templates/import-word\nContent-Type: multipart/form-data\n```\n\n返回拆分后的 `sectionContents` 供前端预览确认（或后端直接落库，由研发评估）。\n\n---\n\n## 15. 非功能需求\n\n| 类别 | 要求 |\n|---|---|\n| 性能 | 单份合同 HTML ≤ 2MB 时，章节切换 < 500ms（前端缓存） |\n| 兼容性 | Chrome / Edge 最新两个大版本；编辑区最低宽度 1280px 推荐 |\n| 可访问性 | 表单控件有 `aria-label`；操作按钮具备可读文案 |\n| 安全 | 导入 Word 需做 XSS 清洗；仅白名单标签/属性入库 |\n| 可追溯 | 已发布版本不可原地覆盖内容，只能新发版 |\n\n---\n\n## 16. 验收标准\n\n### 16.1 列表页\n\n- [ ] 筛选项包含：合同类型（可搜索下拉）、状态、创建人、启用状态\n- [ ] 主表含合同类型、启用状态列；操作含启用/停用、版本日志、编辑、删除\n- [ ] 启用中模板编辑/删除按钮禁用；停用需二次确认\n- [ ] 主表每行对应一份 Word 文件，可展开 9 个章节子表\n- [ ] 子表展示：章节名、适用车型、风控条款数、条件条款数\n\n### 16.2 编辑页\n\n- [ ] 章节 Tab 仅在编辑页展示；横向滚动 + 章节列表面板\n- [ ] 导入 Word 后 9 章节正确拆分\n- [ ] 附件章节可绑定车型；各章节均可设条件条款\n- [ ] 预览支持连续/单页切换；各章节可模拟车型验证条件条款\n- [ ] 保存草稿无版本号；发布生成版本号\n- [ ] 编辑已发布（停用后）并发布时版本号递增，旧版写入版本日志\n- [ ] 编辑已发布（停用后）点「保存」不改变发布态与版本号\n- [ ] 有未保存修改时返回列表需确认\n\n### 16.3 跨模块与数据一致性\n\n- [ ] 模板管理停用后，租赁合同创建页不可再选用该模板\n- [ ] 租赁创建预览读取 store 中模板 `sectionContents`（与模板管理编辑一致）\n- [ ] 列表子表「风控条款数」与编辑区统计一致\n- [ ] 列表子表「条件条款数」与各章节实际标记数一致\n\n### 16.4 标注与文档（原型）\n\n- [ ] 原型已接入 `@axhub/annotation`，关键区域有 `data-annotation-id`\n- [ ] 目录路由可切换列表页 / 新增页\n- [ ] `PRD.md` 与 `annotation-source.json` 与当前实现一致\n\n---\n\n## 17. 原型实现映射（供研发对照）\n\n| 能力 | 原型文件 / 符号 |\n|---|---|\n| 主逻辑 | `src/prototypes/contract-template-management/ContractTemplate.jsx` |\n| 跨模块模板状态 | `src/prototypes/contract-template-management/contract-template-store.js` |\n| 章节 HTML 合并 | `src/prototypes/contract-template-management/contract-template-section-html.js` |\n| 冷启动种子 | `src/prototypes/contract-template-management/contract-template-seed.js` |\n| 租赁侧消费目录 | `src/prototypes/contract-template-management/contract-template-catalog.js` |\n| 入口与标注 | `src/prototypes/contract-template-management/index.tsx` |\n| 标注数据 | `src/prototypes/contract-template-management/annotation-source.json` |\n| 下游选用 | `src/prototypes/lease-contract-management/LeaseContractCreate.jsx` |\n| 占位符与出租方 | `src/prototypes/contract-template-management/contract-template-vars.js` |\n| 样式 | `src/prototypes/contract-template-management/styles/` |\n\n> **原型限制**：模板数据经 `localStorage`（兼写 `sessionStorage`）持久化；冷启动由 `contract-template-seed.js` 注入种子，无需先打开模板管理页即可在租赁创建选用已启用模板。\n\n---\n\n## 18. 附录：停用确认弹窗（原文案）\n\n**标题**：确认停用\n\n**正文**：\n\n> 停用后，该模板将不可在租赁合同创建时选用，是否确定？\n\n**按钮**：取消 / 确定停用\n\n---\n\n## 19. 修订记录\n\n| 版本 | 日期 | 作者 | 说明 |\n|---|---|---|---|\n| v1.2 | 2026-06-29 | 产品 | 租赁预览贯通 store；冷启动种子；列表按合同类型筛选；移除 isDefault；localStorage 持久化；PRD 与实现对齐 |\n| v1.1 | 2026-06-29 | 产品 | 移除标准模板模型，改为启用/停用 + 版本日志；列表筛选与操作同步；各章节支持条件条款 |\n| v1.0 | 2026-06-25 | 产品 | 首版：Word 文档级模型、嵌套列表、章节拆分与条件条款 |\n",
                "markdownPath": "src/resources/contract-template-management/PRD.md"
              },
              {
                "type": "markdown",
                "id": "ct-doc-prd-overview",
                "title": "背景 · 数据模型 · 业务规则",
                "markdown": "## 1. 背景与目标\n\n### 1.1 背景\n\n商用车租赁合同以 Word 文档形式维护，内容长、结构复杂，包含合同主体与 8 个附件章节。不同车型可能需要不同的附件条款组合。法务人员需要：\n\n- 以 **Word 版式保真** 的方式维护整份合同；\n- 按 **章节** 管理内容，并配置 **适用车型**；\n- 发布 **版本**，通过 **启用/停用** 控制模板是否可供租赁合同选用；\n- 在合同主体及租赁订单～安全责任协议各章节中配置 **条件条款**（按订单车辆命中显隐）。\n\n### 1.2 产品目标\n\n| 目标 | 说明 |\n|---|---|\n| 降低维护成本 | 一份 Word 文件 = 一条记录，导入后自动拆分章节 |\n| 保证合规可控 | 支持锁定区、风控红线条款标记与统计 |\n| 支撑业务差异化 | 附件章节按车型绑定；各章节均支持条件条款 |\n| 版本可追溯 | 草稿 / 已发布分离；已发布修改产生新版本并写入版本日志 |\n| 多套模板并存 | 正式/试用、不同车型等多套已发布模板可同时存在；租赁创建时由用户选择 |\n\n### 1.3 非目标（本期不做）\n\n- 采购合同、服务合同等其他分类的完整业务闭环（数据结构预留 `category`，当前仅启用 `lease`）\n- 在线多人协同编辑、审批流配置界面\n- Word 导出回写（本期以 HTML 结构化存储 + 预览为主）\n- 列表页顶部章节 Tab（**仅编辑页**保留章节 Tab）\n\n---\n\n---\n\n## 2. 用户与场景\n\n### 2.1 目标用户\n\n| 角色 | 诉求 |\n|---|---|\n| 法务人员（主用户） | 导入/编辑 Word 模板、发布版本、启用/停用模板 |\n| 客服人员（间接用户） | 草拟新合同时从已启用模板中选择（下游「租赁合同管理」消费） |\n| 运营 / 风控（间接用户） | 查看风控红线条款配置情况 |\n\n### 2.2 核心用户故事\n\n1. **作为法务**，我希望导入一份完整 Word 合同，系统自动拆成 9 个章节，以便分章节维护。\n2. **作为法务**，我希望为「租赁订单」等附件章节绑定适用车型，以便创建合同时只纳入匹配车辆的条款。\n3. **作为法务**，我希望在合同主体及租赁订单～安全责任协议各章节为某段落设置「条件条款」并绑定车型，以便不同车型看到不同正文。\n4. **作为法务**，我希望保存草稿不产生版本号，发布后才生成版本号，以便区分未上线内容。\n5. **作为法务**，我希望对已发布模板执行启用/停用，停用后方可编辑，并在发布变更时自动归档旧版快照到版本日志。\n6. **作为客服**，我希望在创建租赁合同时第一步选择要使用的已启用合同模板。\n7. **作为法务**，我希望在列表展开行查看各章节的风控条款数、条件条款数，以便快速评估模板完整度。\n\n---\n\n---\n\n## 3. 名词解释\n\n| 名词 | 定义 |\n|---|---|\n| Word 文档 / 模板记录 | 列表主表一行，对应一份完整合同文件 |\n| 章节 | 合同内的逻辑切片，共 9 个（1 个主体 + 8 个附件） |\n| 草稿 | `status = draft`，无版本号 |\n| 已发布 | `status = published`，有版本号 `vX.XX` |\n| 启用 | `enabled = true` 的已发布模板，可供租赁合同创建选用 |\n| 停用 | `enabled = false` 的已发布模板，不可编辑/删除，不可被租赁创建选用 |\n| 版本日志 | `versionLogs[]`，记录发布变更前自动归档的快照 |\n| 锁定区 | 编辑区内不可随意修改的段落，HTML 标记 `data-inline-lock=\"1\"` |\n| 风控红线条款 | 需重点合规关注的条款，HTML 标记 `data-risk-redline=\"1\"` |\n| 条件条款 | 各章节可用，按订单车辆命中显隐，HTML 标记 `data-vehicle-clause=\"1\"` |\n| 适用车型绑定 | 附件章节级别配置，决定该章节是否纳入某份合同 |\n| 模板占位符 | 形如 `{{contractCode}}` 的变量，创建合同时由系统替换 |\n\n---\n\n---\n\n## 4. 信息架构\n\n```text\n合同模板管理\n├── 列表页\n│   ├── 筛选区\n│   ├── 工具栏（新增）\n│   └── 嵌套表格\n│       ├── 主表：Word 文件\n│       └── 子表：9 个章节（展开行）\n└── 编辑 / 新增页\n    ├── 顶栏（返回、保存、保存并发布）\n    ├── 章节 Tab（仅本页展示）\n    ├── 条件条款说明（各章节均可使用工具栏「条件」）\n    ├── 适用车型绑定（附件章节 Tab 时显示）\n    └── 工作区\n        ├── 左侧：Word 版式编辑区\n        └── 右侧：A4 实时预览\n```\n\n---\n\n---\n\n## 5. 数据模型\n\n### 5.1 模板记录（Word 文档级）\n\n一条记录代表 **一份 Word 合同文件**，不按章节拆成多行。\n\n```typescript\ninterface ContractTemplateDocument {\n  id: string;                          // 唯一 ID\n  category: 'lease';                   // 合同分类，当前固定商用车租赁\n  contractType: string;                // 用户自定义合同类型，如「正式合同」「试用合同」\n  fileName: string;                    // Word 文件名，如「现代18吨车型-数智中心版.docx」\n  versionName: string;                 // 展示用版本名称\n  versionNo: string | null;            // 已发布：v1.00；草稿：null\n  status: 'draft' | 'published';\n  enabled: boolean;                    // 已发布模板是否启用（草稿恒为 false）\n  versionLogs: VersionLogEntry[];    // 版本变更日志与快照\n  sectionContents: Record<SectionKey, string>;           // 各章节 HTML\n  sectionVehicleBindings: Record<SectionKey, VehicleBinding[]>; // 各章节车型绑定\n  creator: string;\n  createTime: string;                  // YYYY-MM-DD HH:mm\n  updater: string;\n  updateTime: string;\n  remark?: string;                     // 内部备注（列表不展示）\n}\n\ninterface VersionLogEntry {\n  id: string;\n  versionNo: string;                   // 归档时的版本号\n  action: string;                      // 如「发布变更」\n  operator: string;\n  time: string;\n  remark?: string;\n  snapshot: {\n    fileName: string;\n    versionName: string;\n    versionNo: string;\n    sectionContents: Record<SectionKey, string>;\n    sectionVehicleBindings: Record<SectionKey, VehicleBinding[]>;\n    remark?: string;\n    archivedAt: string;\n  };\n}\n\ninterface VehicleBinding {\n  brand: string;   // 品牌，如「现代」\n  model: string;   // 型号，如「18吨氢燃料电池车」\n}\n```\n\n### 5.2 章节枚举（SectionKey）\n\n| key | 章节名称 | 车型绑定 | 条件条款 |\n|---|---|:---:|:---:|\n| `main` | 合同主体 | 否 | 是 |\n| `lease_order` | 租赁订单 | 是 | 是 |\n| `vehicle_cost` | 车辆产生的费用 | 是 | 是 |\n| `safety_notice` | 安全责任告知书 | 是 | 是 |\n| `dynamic_supervision` | 重型普通货运车辆租赁动态监管责任告知与确认书 | 是 | 是 |\n| `safety_commitment` | 安全责任承诺书 | 是 | 是 |\n| `vehicle_spec` | 车辆使用规范和驾驶员要求 | 是 | 是 |\n| `authorization` | 授权委托书 | 是 | 是 |\n| `safety_agreement` | 安全责任协议 | 是 | 是 |\n\n### 5.3 章节内容 HTML 标记规范\n\n研发需保证存储、渲染、统计口径一致：\n\n| 类型 | 选择器 / 属性 | 统计函数 |\n|---|---|---|\n| 锁定区 | `.ct-inline-lock[data-inline-lock=\"1\"]` | `countLockRegions` |\n| 风控红线 | `.ct-risk-redline[data-risk-redline=\"1\"]` | `countRiskRedlineRegions` |\n| 条件条款 | `.ct-vehicle-clause[data-vehicle-clause=\"1\"]` | `countVehicleClauseRegions` |\n| 条件条款车型 | `data-vehicle-bindings`（JSON 数组） | 预览命中逻辑 |\n\n---\n\n---\n\n## 6. 业务规则（全局）\n\n### 6.1 版本号规则\n\n- 格式：`v{major}.{minor}`，如 `v1.00`、`v1.01`\n- **仅发布时生成**；保存草稿时 `versionNo = null`\n- 同分类下递增：取当前已发布版本最大 minor +1；minor ≥ 99 时 major +1、minor 归 0\n- 首版默认 `v1.00`\n\n### 6.2 保存与发布\n\n| 操作 | 新增模式 | 编辑草稿 | 编辑已发布（须先停用） |\n|---|---|---|---|\n| **保存** | 新建草稿记录 | 更新原记录，保持草稿 | 更新原记录，**保持已发布与版本号**，仍为停用态 |\n| **保存并发布** | 新建已发布记录 + 版本号，默认启用 | 原记录变已发布 + 版本号，默认启用 | **同记录升级版本号**；旧内容写入 `versionLogs` 快照；发布后默认停用，需手动启用 |\n\n**校验**：保存/发布前，合同主体（`sectionContents.main`）不能为空。\n\n**离开编辑**：有未保存修改时返回列表需二次确认。\n\n### 6.3 启用 / 停用规则\n\n1. 仅 **已发布** 模板具有启用态；草稿显示「—」。\n2. **启用中**：不可编辑、不可删除；可供租赁合同创建选用。\n3. **停用**：需二次确认（提示可能导致标准合同无法正常使用）；停用后可编辑、可删除；租赁创建不可选用。\n4. **启用**：直接生效，无需二次确认。\n5. 编辑已发布模板并发布后，模板自动变为 **停用**，需重新启用后下游才可选。\n\n### 6.4 版本日志规则\n\n1. 对已发布模板执行「保存并发布」前，系统将 **当前内容自动归档** 为快照写入 `versionLogs`。\n2. 列表操作列提供「版本日志」，可查看历史版本号、操作人、时间与快照正文（只读）。\n3. 列表主表 **一行对应一份 Word 文件**，历史版本通过日志追溯，不另增列表行。\n\n### 6.5 删除规则\n\n- **启用中** 的已发布模板不可删除。\n- 其余记录可删除；删除前二次确认；删除后不可恢复。\n\n### 6.6 列表排序\n\n按 `updateTime` 降序。\n\n### 6.7 筛选匹配规则\n\n| 字段 | 匹配逻辑 |\n|---|---|\n| 合同类型 | 下拉选择（支持输入模糊搜索候选项）；精确匹配 `contractType` |\n| 状态 | 精确匹配 `draft` / `published` |\n| 创建人 | 精确匹配 `creator` |\n| 启用状态 | `enabled`：仅已发布且启用；`disabled`：仅已发布且停用 |\n\n> **已移除**：筛选项「适用品牌/适用车型」、主表列「备注」、「设为标准模板」能力。\n\n---"
              },
              {
                "type": "markdown",
                "id": "ct-doc-prd-list",
                "title": "列表页 PRD",
                "markdown": "# 合同模板管理 · 列表页 PRD\n\n## 7. 列表页需求\n\n### 7.1 页面结构\n\n筛选区 + 工具栏 + 嵌套表格。**列表页不展示章节 Tab。**\n\n### 7.2 筛选区\n\n| 字段 | 控件 | 说明 |\n|---|---|---|\n| 合同类型 | 可搜索下拉 | 选项来自现有模板 `contractType` 去重；支持输入模糊搜索 |\n| 状态 | 下拉 | 全部 / 已发布 / 草稿 |\n| 创建人 | 下拉 | 选项来自现有模板 `creator` 去重 |\n| 启用状态 | 下拉 | 全部 / 启用 / 停用（仅作用于已发布记录） |\n\n**按钮**：\n\n- **查询**：应用筛选条件\n- **重置**：清空筛选恢复默认\n\n### 7.3 工具栏\n\n| 按钮 | 行为 |\n|---|---|\n| 新增 | 进入新增页，默认章节为「合同主体」，模式为 create |\n\n### 7.4 主表字段\n\n| 列名 | 字段 | 展示规则 |\n|---|---|---|\n| （展开列） | — | 宽 48px |\n| 合同类型 | `contractType` | 展示用户自定义的合同类型文案 |\n| 版本号 | `versionNo` | 草稿显示「—」 |\n| 状态 | `status` | 已发布 / 草稿 Tag |\n| 启用状态 | `enabled` | 已发布：启用/停用；草稿：「—」 |\n| 创建时间 | `createTime` | — |\n| 创建人 | `creator` | 展示短名（如 `法务-王静` → `王静`） |\n| 最后更新时间 | `updateTime` | — |\n| 更新人 | `updater` | 同创建人展示规则 |\n| 操作 | — | 见 7.5 |\n\n**分页**：每页 10 条，展示总条数。\n\n### 7.5 主表操作\n\n| 操作 | 显示条件 | 行为 |\n|---|---|---|\n| 启用 / 停用 | 已发布 | 停用需确认；启用直接生效 |\n| 版本日志 | 已发布 | 查看历史快照 |\n| 编辑 | 草稿，或已发布且停用 | 启用中按钮禁用 |\n| 删除 | 草稿，或已发布且停用 | 启用中按钮禁用；删除前确认 |\n\n### 7.6 子表（展开行）\n\n主表每行可展开，展示该 Word 文档下 **9 个章节** 的摘要（原生 HTML 表，非嵌套 Ant Design Table）。\n\n| 列名 | 说明 |\n|---|---|\n| 章节 | 章节名称 |\n| 适用车型 | 附件章节展示绑定列表，格式「品牌 · 型号」；多个用「；」连接；未绑定显示「全部车型」；合同主体显示「—」 |\n| 风控条款数 | 该章节 HTML 内风控红线标记数量 |\n| 条件条款数 | 按各章节 HTML 统计条件条款标记数量 |\n\n---"
              },
              {
                "type": "markdown",
                "id": "ct-doc-prd-editor",
                "title": "编辑页 PRD",
                "markdown": "# 合同模板管理 · 编辑/新增页 PRD\n\n## 8. 编辑 / 新增页需求\n\n### 8.1 页面结构\n\n顶栏 → 章节 Tab → 条件说明 / 车型绑定（按章节显隐）→ 左右分栏工作区。\n\n### 8.2 顶栏\n\n| 按钮 | 行为 |\n|---|---|\n| ← 返回列表 | 回到列表页，不自动保存 |\n| 保存 | 见 §6.2 |\n| 保存并发布 | 见 §6.2 |\n\n### 8.3 章节 Tab\n\n- 共 9 个章节；**横向滚动 Tab 条**展示全部章节，右侧提供「章节列表」按钮打开可搜索的章节面板（便于长标题章节快速定位）。\n- 切换 Tab 后，编辑区与预览区 **同步切换** 至对应章节内容。\n- **合同主体 Tab**：编辑/预览 **整份 Word 合并全文**。\n- **其他 Tab**：仅展示该章节切片内容。\n\n章节顺序：\n\n1. 合同主体  \n2. 租赁订单  \n3. 车辆产生的费用  \n4. 安全责任告知书  \n5. 重型普通货运车辆租赁动态监管责任告知与确认书  \n6. 安全责任承诺书  \n7. 车辆使用规范和驾驶员要求  \n8. 授权委托书  \n9. 安全责任协议  \n\n### 8.4 条件条款说明（合同主体及租赁订单～安全责任协议）\n\n展示说明卡片，文案要点：\n\n> 在编辑区选中段落后，点击工具栏「条件」并指定适用车型。适用于合同主体及全部附件章节。创建合同时，订单车辆任意命中即纳入正文；右侧预览可选择模拟车型验证显隐。\n\n### 8.5 适用车型绑定（仅附件章节 Tab）\n\n| 元素 | 说明 |\n|---|---|\n| 品牌下拉 | 来自车型主数据 |\n| 型号下拉 | 随品牌联动 |\n| 添加车型 | 追加到当前章节绑定列表 |\n| 已绑定 Tag | 可删除单项 |\n| 空状态文案 | 「当前未绑定车型，表示全部车型适用」 |\n\n**规则**：\n\n- 绑定保存在 `sectionVehicleBindings[当前章节 key]`。\n- 切换章节 Tab 时加载对应章节的绑定到编辑表单。\n- 保存时将各章节绑定一并写入文档记录。\n\n### 8.6 编辑区（左侧）\n\n#### 8.6.1 面板头操作\n\n| 按钮 | 说明 |\n|---|---|\n| { } 模板占位符 | 弹层展示变量分组，点击插入光标处 |\n| 导入 Word 模板 | 接受 `.doc` / `.docx`；导入后按 §9 拆分章节 |\n\n#### 8.6.2 编辑能力\n\n- **Word 版式保真**：A4 分页编辑，保留 Word 导出样式类名。\n- **富文本工具栏**（节选）：\n  - 字号、加粗、对齐等基础格式\n  - **锁定**：选中内容设为锁定区\n  - **解锁**：解除锁定\n  - **风控**：标记风控红线条款\n  - **条件**：在各章节选中段落绑定车型条件\n\n#### 8.6.3 条件条款交互\n\n**适用范围**：合同主体、租赁订单、车辆产生的费用、安全责任告知书、重型普通货运车辆租赁动态监管责任告知与确认书、安全责任承诺书、车辆使用规范和驾驶员要求、授权委托书、安全责任协议。\n\n1. 用户选中段落或文字；\n2. 点击工具栏「条件」；\n3. 为选中内容绑定一个或多个「品牌 · 型号」；\n4. 生成 `.ct-vehicle-clause` 包裹结构，并写入 `data-vehicle-bindings`；\n5. 创建合同时：订单车辆 **任意一辆** 命中绑定车型 → 段落纳入正文；否则隐藏。\n\n### 8.7 实时预览（右侧）\n\n#### 8.7.1 预览模式\n\n| 模式 | 说明 |\n|---|---|\n| 连续预览 | 多页连续滚动 |\n| 单页预览 | 按 A4 单页翻页 |\n\n#### 8.7.2 预览顶栏统计\n\n展示当前章节：\n\n`锁定 N 处 · 风控红线 M 处 · 条件条款 K 处`\n\n当前章节支持条件且已选模拟车型时追加：`（预览命中 X）`\n\n#### 8.7.3 模拟车型\n\n- 在合同主体及全部附件章节可用；多选下拉，选项来自车型主数据（品牌 · 型号）。\n- 未选车型时：**隐藏**所有条件条款段落（与创建合同时无车辆命中行为一致）。\n- 选中后按命中规则过滤并展开条件条款正文。\n\n#### 8.7.4 占位符预览\n\n预览时替换部分占位符为样例值，如：\n\n- `{{customerName}}` → `【承租方公司名称】`\n- `{{contractCode}}` → `20260001`\n- 甲方相关变量按预览所选出租方公司填充\n\n### 8.8 空状态\n\n编辑区无内容时，预览区展示空状态引导；新增模式下突出「导入 Word 模板」按钮。\n\n---"
              },
              {
                "type": "markdown",
                "id": "ct-doc-prd-acceptance",
                "title": "验收标准",
                "markdown": "## 16. 验收标准\n\n### 16.1 列表页\n\n- [ ] 筛选项包含：合同类型（可搜索下拉）、状态、创建人、启用状态\n- [ ] 主表含合同类型、启用状态列；操作含启用/停用、版本日志、编辑、删除\n- [ ] 启用中模板编辑/删除按钮禁用；停用需二次确认\n- [ ] 主表每行对应一份 Word 文件，可展开 9 个章节子表\n- [ ] 子表展示：章节名、适用车型、风控条款数、条件条款数\n\n### 16.2 编辑页\n\n- [ ] 章节 Tab 仅在编辑页展示；横向滚动 + 章节列表面板\n- [ ] 导入 Word 后 9 章节正确拆分\n- [ ] 附件章节可绑定车型；各章节均可设条件条款\n- [ ] 预览支持连续/单页切换；各章节可模拟车型验证条件条款\n- [ ] 保存草稿无版本号；发布生成版本号\n- [ ] 编辑已发布（停用后）并发布时版本号递增，旧版写入版本日志\n- [ ] 编辑已发布（停用后）点「保存」不改变发布态与版本号\n- [ ] 有未保存修改时返回列表需确认\n\n### 16.3 跨模块与数据一致性\n\n- [ ] 模板管理停用后，租赁合同创建页不可再选用该模板\n- [ ] 租赁创建预览读取 store 中模板 `sectionContents`（与模板管理编辑一致）\n- [ ] 列表子表「风控条款数」与编辑区统计一致\n- [ ] 列表子表「条件条款数」与各章节实际标记数一致\n\n### 16.4 标注与文档（原型）\n\n- [ ] 原型已接入 `@axhub/annotation`，关键区域有 `data-annotation-id`\n- [ ] 目录路由可切换列表页 / 新增页\n- [ ] `PRD.md` 与 `annotation-source.json` 与当前实现一致\n\n---"
              }
            ]
          },
          {
            "type": "folder",
            "id": "ct-doc-list",
            "title": "列表页模块",
            "defaultExpanded": true,
            "children": [
              {
                "type": "route",
                "id": "ct-route-list",
                "title": "打开列表页",
                "route": "contract-template:list",
                "payload": {
                  "pageId": "list"
                }
              },
              {
                "type": "markdown",
                "id": "ct-doc-node-filter",
                "title": "筛选条件",
                "markdown": "### 7.2 筛选区\n\n| 字段 | 控件 | 说明 |\n|---|---|---|\n| 合同类型 | 可搜索下拉 | 选项来自现有模板 `contractType` 去重；支持输入模糊搜索 |\n| 状态 | 下拉 | 全部 / 已发布 / 草稿 |\n| 创建人 | 下拉 | 选项来自现有模板 `creator` 去重 |\n| 启用状态 | 下拉 | 全部 / 启用 / 停用（仅作用于已发布记录） |\n\n**按钮**：\n\n- **查询**：应用筛选条件\n- **重置**：清空筛选恢复默认"
              },
              {
                "type": "markdown",
                "id": "ct-doc-node-table",
                "title": "嵌套列表",
                "markdown": "### 7.4 主表字段\n\n| 列名 | 字段 | 展示规则 |\n|---|---|---|\n| （展开列） | — | 宽 48px |\n| 合同类型 | `contractType` | 展示用户自定义的合同类型文案 |\n| 版本号 | `versionNo` | 草稿显示「—」 |\n| 状态 | `status` | 已发布 / 草稿 Tag |\n| 启用状态 | `enabled` | 已发布：启用/停用；草稿：「—」 |\n| 创建时间 | `createTime` | — |\n| 创建人 | `creator` | 展示短名（如 `法务-王静` → `王静`） |\n| 最后更新时间 | `updateTime` | — |\n| 更新人 | `updater` | 同创建人展示规则 |\n| 操作 | — | 见 7.5 |\n\n**分页**：每页 10 条，展示总条数。\n\n---\n\n### 7.5 主表操作\n\n| 操作 | 显示条件 | 行为 |\n|---|---|---|\n| 启用 / 停用 | 已发布 | 停用需确认；启用直接生效 |\n| 版本日志 | 已发布 | 查看历史快照 |\n| 编辑 | 草稿，或已发布且停用 | 启用中按钮禁用 |\n| 删除 | 草稿，或已发布且停用 | 启用中按钮禁用；删除前确认 |\n\n---\n\n### 7.6 子表（展开行）\n\n主表每行可展开，展示该 Word 文档下 **9 个章节** 的摘要（原生 HTML 表，非嵌套 Ant Design Table）。\n\n| 列名 | 说明 |\n|---|---|\n| 章节 | 章节名称 |\n| 适用车型 | 附件章节展示绑定列表，格式「品牌 · 型号」；多个用「；」连接；未绑定显示「全部车型」；合同主体显示「—」 |\n| 风控条款数 | 该章节 HTML 内风控红线标记数量 |\n| 条件条款数 | 按各章节 HTML 统计条件条款标记数量 |\n\n---"
              }
            ]
          },
          {
            "type": "folder",
            "id": "ct-doc-editor",
            "title": "编辑页模块",
            "defaultExpanded": false,
            "children": [
              {
                "type": "route",
                "id": "ct-route-editor",
                "title": "打开新增页",
                "route": "contract-template:editor",
                "payload": {
                  "pageId": "editor"
                }
              },
              {
                "type": "markdown",
                "id": "ct-doc-node-tabs",
                "title": "章节 Tab",
                "markdown": "### 8.3 章节 Tab\n\n- 共 9 个章节；**横向滚动 Tab 条**展示全部章节，右侧提供「章节列表」按钮打开可搜索的章节面板（便于长标题章节快速定位）。\n- 切换 Tab 后，编辑区与预览区 **同步切换** 至对应章节内容。\n- **合同主体 Tab**：编辑/预览 **整份 Word 合并全文**。\n- **其他 Tab**：仅展示该章节切片内容。\n\n章节顺序：\n\n1. 合同主体  \n2. 租赁订单  \n3. 车辆产生的费用  \n4. 安全责任告知书  \n5. 重型普通货运车辆租赁动态监管责任告知与确认书  \n6. 安全责任承诺书  \n7. 车辆使用规范和驾驶员要求  \n8. 授权委托书  \n9. 安全责任协议\n\n---\n\n### 8.4 条件条款说明（合同主体及租赁订单～安全责任协议）\n\n展示说明卡片，文案要点：\n\n> 在编辑区选中段落后，点击工具栏「条件」并指定适用车型。适用于合同主体及全部附件章节。创建合同时，订单车辆任意命中即纳入正文；右侧预览可选择模拟车型验证显隐。\n\n---\n\n### 8.5 适用车型绑定（仅附件章节 Tab）\n\n| 元素 | 说明 |\n|---|---|\n| 品牌下拉 | 来自车型主数据 |\n| 型号下拉 | 随品牌联动 |\n| 添加车型 | 追加到当前章节绑定列表 |\n| 已绑定 Tag | 可删除单项 |\n| 空状态文案 | 「当前未绑定车型，表示全部车型适用」 |\n\n**规则**：\n\n- 绑定保存在 `sectionVehicleBindings[当前章节 key]`。\n- 切换章节 Tab 时加载对应章节的绑定到编辑表单。\n- 保存时将各章节绑定一并写入文档记录。"
              },
              {
                "type": "markdown",
                "id": "ct-doc-node-workspace",
                "title": "编辑与预览",
                "markdown": "### 8.6 编辑区（左侧）\n\n#### 8.6.1 面板头操作\n\n| 按钮 | 说明 |\n|---|---|\n| { } 模板占位符 | 弹层展示变量分组，点击插入光标处 |\n| 导入 Word 模板 | 接受 `.doc` / `.docx`；导入后按 §9 拆分章节 |\n\n#### 8.6.2 编辑能力\n\n- **Word 版式保真**：A4 分页编辑，保留 Word 导出样式类名。\n- **富文本工具栏**（节选）：\n  - 字号、加粗、对齐等基础格式\n  - **锁定**：选中内容设为锁定区\n  - **解锁**：解除锁定\n  - **风控**：标记风控红线条款\n  - **条件**：在各章节选中段落绑定车型条件\n\n#### 8.6.3 条件条款交互\n\n**适用范围**：合同主体、租赁订单、车辆产生的费用、安全责任告知书、重型普通货运车辆租赁动态监管责任告知与确认书、安全责任承诺书、车辆使用规范和驾驶员要求、授权委托书、安全责任协议。\n\n1. 用户选中段落或文字；\n2. 点击工具栏「条件」；\n3. 为选中内容绑定一个或多个「品牌 · 型号」；\n4. 生成 `.ct-vehicle-clause` 包裹结构，并写入 `data-vehicle-bindings`；\n5. 创建合同时：订单车辆 **任意一辆** 命中绑定车型 → 段落纳入正文；否则隐藏。\n\n---\n\n### 8.7 实时预览（右侧）\n\n#### 8.7.1 预览模式\n\n| 模式 | 说明 |\n|---|---|\n| 连续预览 | 多页连续滚动 |\n| 单页预览 | 按 A4 单页翻页 |\n\n#### 8.7.2 预览顶栏统计\n\n展示当前章节：\n\n`锁定 N 处 · 风控红线 M 处 · 条件条款 K 处`\n\n当前章节支持条件且已选模拟车型时追加：`（预览命中 X）`\n\n#### 8.7.3 模拟车型\n\n- 在合同主体及全部附件章节可用；多选下拉，选项来自车型主数据（品牌 · 型号）。\n- 未选车型时：**隐藏**所有条件条款段落（与创建合同时无车辆命中行为一致）。\n- 选中后按命中规则过滤并展开条件条款正文。\n\n#### 8.7.4 占位符预览\n\n预览时替换部分占位符为样例值，如：\n\n- `{{customerName}}` → `【承租方公司名称】`\n- `{{contractCode}}` → `20260001`\n- 甲方相关变量按预览所选出租方公司填充"
              }
            ]
          },
          {
            "type": "markdown",
            "id": "ct-doc-annotation-hint",
            "title": "标注查看提示",
            "markdown": "## 标注查看提示\n\n右侧标注工具栏可浏览目录、切换主题与颜色筛选。列表页与编辑页标注按当前页面自动显隐。\n\n**PRD 同步**：目录「PRD 全文」已与 `src/resources/contract-template-management/PRD.md` 对齐；修改 PRD 后运行 `node src/prototypes/contract-template-management/scripts/build-annotation-source.mjs` 重新生成 `annotation-source.json`。"
          }
        ]
      }
    ]
  }
}
