{
  "documentVersion": 1,
  "format": "axhub-annotation-source",
  "data": {
    "version": 2,
    "prototypeName": "vehicle-h2-fee-ledger",
    "pageId": "list",
    "updatedAt": 1782871095271,
    "nodes": [
      {
        "id": "vh2-header",
        "index": 1,
        "title": "页面标题与模块定位",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vh2-header\"]"
          ],
          "fingerprint": "header|vh2",
          "path": []
        },
        "aiPrompt": "说明台账数据模块下车辆氢费明细的定位。",
        "annotationText": "# 模块定位\n\n| 项 | 说明 |\n|---|---|\n| 模块 | 台账数据 → 车辆氢费明细 |\n| 用户 | 业务员（录入/对账）、主管（复核已对账） |\n| 核心流程 | 待保存 → 保存 → 未对账 → 完成对账 → 已对账 |\n| 关联 | 租赁业务台账「氢费」列取自本页汇总 |\n\n右上角「查看需求明细」可打开完整 PRD 弹窗。",
        "hasMarkdown": true,
        "color": "#0f766e",
        "images": [],
        "createdAt": 1782806400000,
        "updatedAt": 1782806400000,
        "controls": []
      },
      {
        "id": "vh2-filter",
        "index": 2,
        "title": "筛选条件",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vh2-filter\"]"
          ],
          "fingerprint": "card|filter",
          "path": []
        },
        "aiPrompt": "筛选字段与查询/重置行为。",
        "annotationText": "# 筛选条件\n\n默认展示加氢时间、订单编号、车牌号码；点击「展开」显示客户、加氢站、业务员、承担方式、客户收款状态、开票公司等。\n\n| 操作 | 行为 |\n|---|---|\n| 查询 | 应用当前筛选，并重算顶部合计 |\n| 重置 | 清空筛选条件 |\n| 展开/收起 | 切换更多筛选项 |\n\n筛选后列表按状态分层排序：待保存 → 未对账 → 已对账。",
        "hasMarkdown": true,
        "color": "#2563eb",
        "images": [],
        "createdAt": 1782806400000,
        "updatedAt": 1782806400000,
        "controls": []
      },
      {
        "id": "vh2-only-warn",
        "index": 3,
        "title": "仅显示异常数据",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vh2-only-warn\"]"
          ],
          "fingerprint": "switch|warn",
          "path": []
        },
        "aiPrompt": "异常标黄规则与开关行为。",
        "annotationText": "# 异常数据规则\n\n以下情况计入异常，可勾选「仅显示异常数据」筛出。\n\n## 单元格标黄\n\n1. **加氢量疑似有误**：加氢量 ＞ 60kg\n2. **成本单价异常**：与站点该时段标准成本价不一致\n3. **加氢单价异常**：与站点该时段标准客户价不一致\n\n## 整行标红（客户名称异常）\n\n按 **车牌 + 加氢日期** 比对车辆运营态：\n\n| 场景 | 判定 |\n|------|------|\n| 租赁/自营已交车未还车 | 录入客户与系统登记客户不一致 |\n| 库存车 | 不应填写客户名称 |\n| 异动期内 | 客户名称应为「车辆异动」 |\n\n整行淡红底，各单元格斜向水印「客户疑似有误」；客户名称列有警示图标，悬浮可看系统客户、交车时间等。\n\n**与系统登记客户不一致**时，提示框提供 **一键替换为系统客户**，替换后写入变更日志（客户名称（一键替换））。\n\n开启后只展示异常记录；**本人待保存的新增行仍显示**。",
        "hasMarkdown": true,
        "color": "#d97706",
        "images": [],
        "createdAt": 1782806400000,
        "updatedAt": 1782806400000,
        "controls": []
      },
      {
        "id": "vh2-toolbar",
        "index": 4,
        "title": "列表工具栏",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vh2-toolbar\"]"
          ],
          "fingerprint": "toolbar|actions",
          "path": []
        },
        "aiPrompt": "保存、对账、导入导出与状态流转。",
        "annotationText": "# 工具栏与状态流转\n\n| 按钮 | 作用 |\n|---|---|\n| 批量导入 | 模板化上传多条记录 |\n| 批量导出 | 导出未对账+已对账，自选列 |\n| 保存 | 待保存 → 未对账 |\n| 完成对账 | 勾选未对账行结案为已对账 |\n\n**保存**与**完成对账**区别：保存是提交草稿；完成对账表示与客户/内部核对无误，业务员不可再改删。",
        "hasMarkdown": true,
        "color": "#334155",
        "images": [],
        "createdAt": 1782806400000,
        "updatedAt": 1782806400000,
        "controls": []
      },
      {
        "id": "vh2-btn-import",
        "index": 5,
        "title": "批量导入",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vh2-btn-import\"]"
          ],
          "fingerprint": "btn|import",
          "path": []
        },
        "aiPrompt": "模板下载与上传规则。",
        "annotationText": "下载标准模板后上传 Excel/CSV，生成待保存或多条未对账记录（原型演示 Toast）。",
        "hasMarkdown": false,
        "color": "#059669",
        "images": [],
        "createdAt": 1782806400000,
        "updatedAt": 1782806400000,
        "controls": []
      },
      {
        "id": "vh2-btn-export",
        "index": 6,
        "title": "批量导出",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vh2-btn-export\"]"
          ],
          "fingerprint": "btn|export",
          "path": []
        },
        "aiPrompt": "导出范围与列选择。",
        "annotationText": "仅导出未对账 + 已对账正式数据，不含待保存草稿；支持自选导出列。",
        "hasMarkdown": false,
        "color": "#0891b2",
        "images": [],
        "createdAt": 1782806400000,
        "updatedAt": 1782806400000,
        "controls": []
      },
      {
        "id": "vh2-btn-save",
        "index": 7,
        "title": "保存",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vh2-btn-save\"]"
          ],
          "fingerprint": "btn|save",
          "path": []
        },
        "aiPrompt": "待保存与未对账状态转换。",
        "annotationText": "将待保存行提交为「未对账」正式数据，方可勾选完成对账。",
        "hasMarkdown": false,
        "color": "#2563eb",
        "images": [],
        "createdAt": 1782806400000,
        "updatedAt": 1782806400000,
        "controls": []
      },
      {
        "id": "vh2-btn-reconcile",
        "index": 8,
        "title": "完成对账",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vh2-btn-reconcile\"]"
          ],
          "fingerprint": "btn|reconcile",
          "path": []
        },
        "aiPrompt": "对账确认与权限收口。",
        "annotationText": "# 完成对账\n\n- 仅 **未对账** 行可勾选\n- 点击前二次确认：「完成对账后只能联系主管修改」\n- 成功后状态变为 **已对账**，对账日期写入\n- 业务员侧编辑/删除不可用；主管可纠错并留变更日志",
        "hasMarkdown": true,
        "color": "#1d4ed8",
        "images": [],
        "createdAt": 1782806400000,
        "updatedAt": 1782806400000,
        "controls": []
      },
      {
        "id": "vh2-totals",
        "index": 9,
        "title": "顶部合计条",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vh2-totals\"]"
          ],
          "fingerprint": "totals|bar",
          "path": []
        },
        "aiPrompt": "合计口径与筛选联动。",
        "annotationText": "# 顶部合计条\n\n展示当前列表可见行的三项合计：\n\n- 加氢量(kg)\n- 成本总价(元)\n- 加氢总价(元)\n\n**随查询重算**：点击「查询」后按新结果汇总。\n\n**随异常开关变化**：开启「仅显示异常数据」时，仅对可见异常行（及本人待保存行）合计。\n\n> 合计含列表中全部可见状态；导出范围仅为未对账+已对账，不含待保存草稿。",
        "hasMarkdown": true,
        "color": "#64748b",
        "images": [],
        "createdAt": 1782806400000,
        "updatedAt": 1782806400000,
        "controls": []
      },
      {
        "id": "vh2-table",
        "index": 10,
        "title": "氢费明细列表",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vh2-table\"]"
          ],
          "fingerprint": "table|ledger",
          "path": []
        },
        "aiPrompt": "列表字段、行内编辑、客户校验与操作列。",
        "annotationText": "# 列表字段与操作\n\n**核心可编辑字段**（未对账/待保存）：加氢时间、站点、车牌、加氢量、成本单价、加氢单价、承担方式等。\n\n**系统带出只读**：业务员、开票/付款相关字段等；客户名称依业务可选填，但会与车辆运营态校验。\n\n## 客户名称列\n\n- 与系统登记不一致时整行标红，单元格水印「客户疑似有误」\n- 客户名称后 **警示图标**：悬浮显示异常说明（系统客户、交车时间等）\n- **一键替换为系统客户**（仅「与系统登记客户不一致」场景，未对账数据可操作）\n- 替换写入变更日志\n\n**行操作**（更多菜单）：编辑、删除、复制多行、变更日志。\n\n**列表勾选**：仅未对账记录可勾选，用于批量完成对账。\n\n表头支持批量改价（成本单价、加氢单价、承担方式）。",
        "hasMarkdown": true,
        "color": "#334155",
        "images": [],
        "createdAt": 1782806400000,
        "updatedAt": 1782816000000,
        "controls": []
      },
      {
        "id": "vh2-add-row",
        "index": 11,
        "title": "新增一行",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vh2-add-row\"]"
          ],
          "fingerprint": "btn|add-row",
          "path": []
        },
        "aiPrompt": "单笔补录入口。",
        "annotationText": "在列表底部追加待保存行，填写加氢时间、站点、车牌、加氢量与单价后点「保存」。",
        "hasMarkdown": false,
        "color": "#059669",
        "images": [],
        "createdAt": 1782806400000,
        "updatedAt": 1782806400000,
        "controls": []
      }
    ]
  },
  "markdownMap": {
    "vh2-header": "# 模块定位\n\n| 项 | 说明 |\n|---|---|\n| 模块 | 台账数据 → 车辆氢费明细 |\n| 用户 | 业务员（录入/对账）、主管（复核已对账） |\n| 核心流程 | 待保存 → 保存 → 未对账 → 完成对账 → 已对账 |\n| 关联 | 租赁业务台账「氢费」列取自本页汇总 |\n\n右上角「查看需求明细」可打开完整 PRD 弹窗。",
    "vh2-filter": "# 筛选条件\n\n默认展示加氢时间、订单编号、车牌号码；点击「展开」显示客户、加氢站、业务员、承担方式、客户收款状态、开票公司等。\n\n| 操作 | 行为 |\n|---|---|\n| 查询 | 应用当前筛选，并重算顶部合计 |\n| 重置 | 清空筛选条件 |\n| 展开/收起 | 切换更多筛选项 |\n\n筛选后列表按状态分层排序：待保存 → 未对账 → 已对账。",
    "vh2-only-warn": "# 异常数据规则\n\n以下情况计入异常，可勾选「仅显示异常数据」筛出。\n\n## 单元格标黄\n\n1. **加氢量疑似有误**：加氢量 ＞ 60kg\n2. **成本单价异常**：与站点该时段标准成本价不一致\n3. **加氢单价异常**：与站点该时段标准客户价不一致\n\n## 整行标红（客户名称异常）\n\n按 **车牌 + 加氢日期** 比对车辆运营态：\n\n| 场景 | 判定 |\n|------|------|\n| 租赁/自营已交车未还车 | 录入客户与系统登记客户不一致 |\n| 库存车 | 不应填写客户名称 |\n| 异动期内 | 客户名称应为「车辆异动」 |\n\n整行淡红底，各单元格斜向水印「客户疑似有误」；客户名称列有警示图标，悬浮可看系统客户、交车时间等。\n\n**与系统登记客户不一致**时，提示框提供 **一键替换为系统客户**，替换后写入变更日志（客户名称（一键替换））。\n\n开启后只展示异常记录；**本人待保存的新增行仍显示**。",
    "vh2-toolbar": "# 工具栏与状态流转\n\n| 按钮 | 作用 |\n|---|---|\n| 批量导入 | 模板化上传多条记录 |\n| 批量导出 | 导出未对账+已对账，自选列 |\n| 保存 | 待保存 → 未对账 |\n| 完成对账 | 勾选未对账行结案为已对账 |\n\n**保存**与**完成对账**区别：保存是提交草稿；完成对账表示与客户/内部核对无误，业务员不可再改删。",
    "vh2-btn-reconcile": "# 完成对账\n\n- 仅 **未对账** 行可勾选\n- 点击前二次确认：「完成对账后只能联系主管修改」\n- 成功后状态变为 **已对账**，对账日期写入\n- 业务员侧编辑/删除不可用；主管可纠错并留变更日志",
    "vh2-totals": "# 顶部合计条\n\n展示当前列表可见行的三项合计：\n\n- 加氢量(kg)\n- 成本总价(元)\n- 加氢总价(元)\n\n**随查询重算**：点击「查询」后按新结果汇总。\n\n**随异常开关变化**：开启「仅显示异常数据」时，仅对可见异常行（及本人待保存行）合计。\n\n> 合计含列表中全部可见状态；导出范围仅为未对账+已对账，不含待保存草稿。",
    "vh2-table": "# 列表字段与操作\n\n**核心可编辑字段**（未对账/待保存）：加氢时间、站点、车牌、加氢量、成本单价、加氢单价、承担方式等。\n\n**系统带出只读**：业务员、开票/付款相关字段等；客户名称依业务可选填，但会与车辆运营态校验。\n\n## 客户名称列\n\n- 与系统登记不一致时整行标红，单元格水印「客户疑似有误」\n- 客户名称后 **警示图标**：悬浮显示异常说明（系统客户、交车时间等）\n- **一键替换为系统客户**（仅「与系统登记客户不一致」场景，未对账数据可操作）\n- 替换写入变更日志\n\n**行操作**（更多菜单）：编辑、删除、复制多行、变更日志。\n\n**列表勾选**：仅未对账记录可勾选，用于批量完成对账。\n\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": "vh2-doc-root",
        "title": "车辆氢费明细说明",
        "defaultExpanded": true,
        "children": [
          {
            "type": "markdown",
            "id": "vh2-doc-overview",
            "title": "模块总览",
            "markdown": "## 1. 模块定位\n\n| 项 | 说明 |\n|---|---|\n| 模块名称 | 台账数据 — 车辆氢费明细 |\n| 目标用户 | 业务员、主管 |\n| 核心任务 | 录入加氢费用、保存、对账、导入导出 |\n| 页面结构 | 筛选区 + 工具栏 + 合计条 + 宽表 + 底部新增 |\n\n## 2. 状态流转\n\n待保存 → **保存** → 未对账 → **完成对账** → 已对账\n\n## 3. 验收重点\n\n1. 筛选与合计联动\n2. 异常标黄与「仅显示异常」\n3. 保存/对账权限区分业务员与主管\n4. 变更日志可追溯\n5. 导出不含待保存草稿"
          },
          {
            "type": "link",
            "id": "vh2-link-self",
            "title": "车辆氢费明细原型",
            "href": "./index.html",
            "target": "self"
          },
          {
            "type": "markdown",
            "id": "vh2-doc-prd",
            "title": "PRD 全文",
            "markdown": "# 车辆氢费明细 — 产品需求说明（PRD）\n\n| 项目 | 内容 |\n|------|------|\n| 文档版本 | v2.2（业务版） |\n| 产品模块 | 台账数据 → 车辆氢费明细 |\n| 文档类型 | 产品需求说明 |\n| 适用读者 | 产品、业务、运营、测试、项目 |\n| 修订说明 | 同步客户名称校验图标（正确/错误）、一键替换权限、标注目录 PRD 全文与页面需求说明 |\n\n---\n\n## 一、为什么做这件事\n\n### 1.1 业务痛点\n\n- 车辆加氢费用分散在业务同事手工记录中，缺少统一台账，难以按客户、站点、时间核对。\n- 录入后需区分「是否已正式提交」「是否已完成对账」，避免未核实数据进入对账与结算环节。\n- 加氢量偏大、单价与公司在该站该时段的标准价不一致等情况，需要**提前暴露**，减少后续财务纠纷。\n\n### 1.2 产品价值\n\n| 价值点 | 说明 |\n|--------|------|\n| 统一台账 | 一条记录对应一次加氢业务，关联车辆、客户、站点与金额 |\n| 流程可控 | 待保存 → 未对账 → 已对账，责任边界清晰 |\n| 效率提升 | 支持批量导入、批量改价、复制同类记录 |\n| 风险可见 | 异常数据标黄，可一键只看有问题记录 |\n| 可追溯 | 关键修改留痕，便于主管复核与客诉查证 |\n\n### 1.3 本期目标\n\n建设 Web 端「车辆氢费明细」页面，支撑业务人员**查询、录入、保存、对账、导入导出**全流程；财务相关字段（开票、付款等）由系统按客户等信息自动带出，减少手工填写错误。\n\n### 1.4 本期不做\n\n- 多级审批流、与 ERP 自动过账（可后续迭代）。\n- 按组织架构的复杂数据权限（本期按「业务员 / 主管」两类角色描述，上线后对接权限中心）。\n- 导入文件格式的完整兼容方案以业务验收为准（需支持模板化批量录入）。\n\n---\n\n## 二、谁在用、用来干什么\n\n### 2.1 用户角色\n\n| 角色 | 典型诉求 |\n|------|----------|\n| **业务员** | 日常录入加氢记录；批量导入历史数据；保存后推进对账；导出给财务或客户核对 |\n| **主管** | 复核异常数据；必要时修正或删除**已对账**记录；查看变更记录 |\n\n### 2.2 核心使用场景（用户故事）\n\n1. **单笔补录**  \n   业务员得知某车在某站加氢后，在页面新增一行，填写时间、站点、车牌、加氢量与单价，保存后进入「未对账」列表等待勾选完成对账。\n\n2. **批量导入历史**  \n   业务员下载模板，在 Excel 中整理多笔记录后上传，系统生成多条状态为「未对账」数据。\n\n3. **日常对账**  \n   业务员按客户或时间筛选「未对账」记录，勾选确认无误后点击「完成对账」，数据变为「已对账」，本人不可再随意修改。\n\n4. **异常排查**  \n   业务员勾选「仅显示异常数据」，优先处理加氢量过大（＞60kg）或单价与标准不一致的记录，修正后再保存或对账。\n\n5. **主管纠错**  \n   已对账数据发现错误，主管进入编辑后修改；业务员侧编辑/删除按钮不可用，需联系主管处理。\n\n6. **导出报送**  \n   业务员按筛选条件导出「未对账 + 已对账」正式数据（不含尚未保存的草稿），自选列字段生成表格文件。\n\n---\n\n## 三、业务主流程\n\n### 3.1 端到端流程（推荐操作顺序）\n\n```mermaid\nflowchart LR\n    A[录入/复制] --> B[待保存]\n    B --> C[点击保存]\n    C[保存/导入] --> D[未对账]\n    D --> E[勾选并完成对账]\n    E --> F[已对账]\n```\n\n**说明：**\n\n- **待保存**：草稿态，可反复修改；尚未进入对账池。\n- **未对账**：已保存的正式数据，可「编辑」「删除」勾选「完成对账」。\n- **已对账**：对账完成，业务员不可改删；主管可特殊处理「编辑」「删除」。\n\n### 3.2 「保存」与「完成对账」的区别\n\n| 操作 | 业务含义 | 对象 | 结果 |\n|------|----------|------|------|\n| **保存** | 将草稿确认为可参与对账的正式记录 | 当前页所有「待保存」记录 | 全部变为「未对账」 |\n| **完成对账** | 确认与客户/内部核对无误，结案 | 用户勾选的「未对账」记录 | 变为「已对账」 |\n\n**保存前校验：** 必填项未填完整时，在对应格子标红提示，**不弹出成功提示**，也不变更状态。\n\n**完成对账前确认：** 系统提示「完成对账后只能联系主管修改」，用户确认后执行。\n\n---\n\n## 四、页面功能说明（业务视角）\n\n### 4.1 页面组成\n\n用户进入「台账数据 → 车辆氢费明细」后，自上而下为：\n\n1. **查询条件区** — 按时间、订单、车辆、客户等筛选  \n2. **数据列表区** — 展示氢费明细、合计、操作按钮  \n3. **弹窗** — 批量导入、批量导出、变更日志  \n\n列表下方提供 **「新增一行」**，用于手工补录。\n\n### 4.2 查询条件\n\n**交互原则：** 修改条件后不会立刻刷新列表，需点击 **「查询」** 才生效；**「重置」** 清空条件并恢复全量展示。\n\n**默认展示：** 第一行条件（加氢时间、订单编号、查询按钮）；点击 **「展开」** 可看到更多条件。\n\n| 查询项 | 业务说明 |\n|--------|----------|\n| 加氢时间 | 起止日期范围 |\n| 订单编号 | 支持模糊搜索 |\n| 车牌号 | 从公司车辆库选择 |\n| 客户名称 | 从客户库选择 |\n| 加氢站名称 | 从加氢站库选择 |\n| 业务员 | 按客户归属业务员筛选 |\n| 承担方式 | 客户承担 / 我司承担 / 客户自行结算 / 其他结算 |\n| 客户收款状态 | 已付款 / 未付款（系统带出，用于筛选） |\n| 开票公司 | 从开票主体选择（系统带出字段对应公司） |\n\n查询成功给予简短成功提示。\n\n**与列表的关系：**\n\n- 列表默认展示符合查询条件的记录。  \n- **例外：** 本人刚新增、尚未保存的记录，即使暂时不符合筛选条件，也会显示在列表中，避免「点了新增却找不到行」。  \n- **「仅显示异常数据」** 开启时，只展示有风险提示的记录；本人待保存的新增行仍会显示，以免录入中断。\n\n### 4.3 列表展示规则\n\n**分区展示（便于扫读）：**\n\n| 区域顺序（上→下） | 记录状态 | 排序习惯 |\n|-------------------|----------|----------|\n| 第一区 | 已对账 | 加氢时间新的在前 |\n| 第二区 | 未对账 | 加氢时间新的在前 |\n| 第三区 | 待保存 | 先录入的在前，新加的靠下 |\n\n不同区域之间有明显分隔，已对账区背景略灰、待保存区背景略黄，降低误操作概率。\n\n**顶部合计条：** 表格上方独立展示 **加氢量(kg)、成本总价(元)、加氢总价(元)** 三项合计。\n\n- **统计范围：** 与当前列表可见行一致。  \n- **随查询重算：** 点击「查询」应用筛选条件后，合计立即按新结果重新汇总。  \n- **随「仅显示异常数据」变化：** 开关开启时，仅对当前可见的异常记录（及本人待保存行）合计。  \n- **说明：** 合计条含「待保存 / 未对账 / 已对账」等当前列表中的全部可见记录，与导出范围（仅未对账+已对账）不同。\n\n**列表列顺序（左→右，业务视角）：**  \n序号 → 加氢日期 → 加氢时间 → 加氢站名称 → 客户名称 → 车牌号 → 加氢量 → 成本单价 → 成本总价 → 加氢单价 → 加氢总价 → 行驶里程 → 备注 → 业务员 → 承担方式 → 对账日期 → **收票日期** → **加氢站付款状态** → **开票日期** → **客户收款状态** → **开票公司** → 状态 → 订单编号 → 操作（操作列固定右侧）。\n\n**系统带出字段（不可手工维护）：** 收票日期、加氢站付款状态、开票日期、客户收款状态、开票公司；选择/变更客户等信息后由系统自动刷新，单元格为浅灰底只读样式。\n\n**列表勾选：** 仅 **未对账** 记录可勾选，用于批量「完成对账」。\n\n### 4.4 工具栏操作\n\n从左到右、从业务使用频率排列：\n\n| 按钮 | 业务作用 |\n|------|----------|\n| 仅显示异常数据 | 开关，快速聚焦有风险提示的记录 |\n| 批量导入 | 按模板上传多条待保存记录 |\n| 批量导出 | 按当前查询条件导出正式数据 |\n| 保存 | 将全部待保存记录提交为未对账 |\n| 完成对账 | 将勾选的未对账记录结案为已对账 |\n\n---\n\n## 五、单条记录：填什么、怎么算\n\n### 5.1 用户可见字段说明\n\n| 信息项 | 用户是否填写 | 业务说明 |\n|--------|--------------|----------|\n| 加氢时间 | 是* | 精确到秒，必填 |\n| 加氢日期 | 否 | 由加氢时间自动得出，只读 |\n| 加氢站名称 | 是* | 必选 |\n| 客户名称 | 是* | 必选，位于加氢站右侧；决定业务员与系统带出信息 |\n| 车牌号 | 是* | 必选，须为公司登记车辆 |\n| 加氢量(kg) | 是* | 必填，用于算总价 |\n| 成本单价 | 是* | 必填，向站点的采购成本价 |\n| 成本总价 | 否 | 加氢量 × 成本单价，自动计算 |\n| 加氢单价 | 是* | 必填，对客户的销售单价 |\n| 加氢总价 | 否 | 加氢量 × 加氢单价，自动计算 |\n| 行驶里程 | 否 | 选填，位于加氢总价之后 |\n| 备注 | 否 | 自由文本 |\n| 业务员 | 否 | 选客户后自动带出 |\n| 承担方式 | 是* | 客户承担 / 我司承担 / 客户自行结算 / 其他结算 |\n| 对账日期 | 否 | 完成对账等流程带出，只读 |\n| 收票日期 | 否 | 由财务/收票模块自动带出，不可编辑 |\n| 加氢站付款状态 | 否 | 已付款 / 未付款，由加氢站打款管理带出 |\n| 开票日期 | 否 | 由开票模块自动带出 |\n| 客户收款状态 | 否 | 已付款 / 未付款，由客户收款模块带出 |\n| 开票公司 | 否 | 显示开票公司名称，系统自动带出 |\n| 状态 | 否 | 展示「未对账」「已对账」；待保存不显示标签；列在列表末尾 |\n| 订单编号 | 否 | 系统按规则自动生成，不可改；列在列表末尾 |\n\n\\* 保存时校验，缺失则标红提示。\n\n### 5.2 订单编号规则（业务口径）\n\n便于业务与财务对齐、按站按日追溯：\n\n- 编号以 **JQ** 开头，后接 **加氢站编码**、**加氢日期（6 位）**、**当日流水号（5 位）**。  \n- 同一加氢站、同一天内，按加氢时间先后依次编号，每日从 1 号起。  \n- 用户无需手填，保存或数据重算时由系统生成。\n\n### 5.3 金额计算\n\n- **成本总价** = 加氢量 × 成本单价（保留两位小数）  \n- **加氢总价** = 加氢量 × 加氢单价（保留两位小数）  \n\n任一项未填齐时，对应总价为空，填齐后自动更新。\n\n---\n\n## 六、谁能改、谁能删\n\n### 6.1 按状态的权限（业务员 vs 主管）\n\n| 数据状态 | 业务员 | 主管 |\n|----------|--------|------|\n| 待保存（本人录入） | 可直接改表格；可复制、删除 | 同业务员（本期不单独区分待保存） |\n| 待保存（他人录入） | 不可见或不可改（按账号权限，上线后明确） | — |\n| 未对账 | 需点「编辑」后才能改；可复制、删除；可勾选完成对账 | 同业务员 |\n| 已对账 | 不可编辑、不可删除（按钮灰显+提示联系主管） | 可点「编辑」修改；可删除 |\n\n### 6.2 行内操作说明\n\n| 操作 | 适用情况 | 业务说明 |\n|------|----------|----------|\n| 编辑 | 未对账、已对账（主管） | 进入编辑模式后方可改单元格；待保存无需点编辑 |\n| 复制 | 未对账、本人待保存 | 可一次复制 1～100 条相似记录，生成新的待保存行 |\n| 删除 | 未对账、本人待保存；已对账仅主管 | 二次确认后删除 |\n| 更多 → 变更日志 | 未对账、已对账 | 查看该条历史修改记录 |\n\n---\n\n## 七、异常数据 — 业务规则\n\n系统在列表中提示以下异常情况（**不影响保存**，但需业务留意）；可开启「仅显示异常数据」集中处理。\n\n### 7.1 单元格标黄（字段级）\n\n| 异常类型 | 判定逻辑 | 用户看到的提示 |\n|----------|----------|----------------|\n| 加氢量偏大 | 单次加氢量超过 60 kg | 加氢量疑似有误 |\n| 成本单价异常 | 所填成本单价与「该站该时段公司标准成本价」不一致 | 成本单价与系统该时间段不一致 |\n| 加氢单价异常 | 所填加氢单价与「该站该时段公司标准对客户价」不一致 | 加氢单价与系统该时间段不一致 |\n\n标准价随 **加氢站 + 加氢时间** 匹配；若公司未配置该站该时段价格，则不提示单价类异常。\n\n### 7.2 整行标红（客户名称异常）\n\n按 **车牌 + 加氢日期** 比对车辆运营态（交还车/库存/异动）：\n\n| 场景 | 判定 | 界面表现 |\n|------|------|----------|\n| 租赁/自营，已交车未还车 | 录入客户与系统登记客户不一致 | 整行淡红底；各单元格水印「客户疑似有误」 |\n| 库存车（可运营/待运营） | 不应填写客户名称 | 同上 |\n| 异动期内 | 客户名称应为「车辆异动」 | 同上（**未对账**时） |\n\n**已对账结案后（仅客户名称类异常）：**\n\n- 整行淡红底与各格「客户疑似有误」水印**去除**，恢复普通已对账行样式  \n- 客户名称列 **红色 ⚠ / 绿色 ✓** 及悬浮说明**仍保留**，便于事后查阅  \n- **不参与**「仅显示异常数据」筛选（单元格标黄类异常规则不变）\n\n**客户名称列状态图标**（**所有登录用户均可见**，不因业务员/主管角色隐藏）：\n\n| 校验结果 | 图标 | 悬浮提示 |\n|----------|------|----------|\n| 与系统登记一致，或库存/异动规则符合 | 绿色 ✓ | 「客户名称正确」+ 系统客户、交车时间等说明 |\n| 疑似有误 | 红色 ⚠ | 「客户疑似有误」+ 场景说明（系统客户、交车时间等） |\n| 无法校验（缺车牌、加氢时间或未填客户等） | 无 | — |\n\n**一键替换**（仅「与系统登记客户不一致」且数据**未对账**）：\n\n- 错误提示框内提供「一键替换为系统客户」  \n- **可操作角色**：该行**创建人（当前操作员）**或**主管（管理员）**；其他用户可见图标与说明，但不显示替换按钮  \n- 点击后以系统登记客户覆盖录入值，并写入变更日志（字段：客户名称（一键替换））  \n\n### 7.3 「仅显示异常数据」\n\n- 默认关闭，展示符合查询条件的全部记录（含待保存例外规则）。  \n- 开启后只显示至少有一项异常（标黄或客户整行标红）的记录，方便集中核对。  \n- **导出不受此开关影响**（见下文）。\n\n---\n\n## 八、批量能力\n\n### 8.1 表头批量改价 / 改结算\n\n- 在 **成本单价**、**加氢单价** 列表头可批量填入统一单价，作用于当前可编辑的所有记录（待保存 + 未对账）。  \n- 在 **承担方式** 列表头可批量改为四种承担方式之一。  \n- **已对账** 记录不参与批量修改。\n\n### 8.2 批量导入\n\n**适用：** 历史数据、线下表格整理后的批量录入。\n\n**流程：**\n\n1. 点击「批量导入」→ 下载标准模板  \n2. 按模板填写（无需填对账日期及收票/开票/付款等系统带出字段）  \n3. 上传文件 → 系统生成多条 **待保存** 记录  \n4. 业务核对列表 → 点击 **保存** 进入未对账  \n\n**模板包含列：** 加氢时间、加氢站名称、车牌号、加氢量、成本单价、客户名称、加氢单价、承担方式、备注（行驶里程可在备注前按业务需要填写，导入模板列顺序以页面下载为准）。\n\n**导入后状态：** 均为待保存，与手工新增一致，须保存后才参与对账与导出。\n\n### 8.3 批量导出\n\n**适用：** 向财务、客户或内部汇报正式台账。\n\n**规则：**\n\n- 导出范围 = **当前查询条件下** 的 **未对账 + 已对账** 数据。  \n- **不包含待保存**（草稿不对外报送）。  \n- **不受**「仅显示异常数据」开关限制。  \n- 弹窗文案：「请选择导出的列」；支持全选/取消全选；默认勾选全部可导出列。  \n- 无符合条件数据时提示：暂无未对账或已对账数据可导出。\n\n**可导出列（业务名称）：** 序号、状态、订单编号、加氢时间、加氢日期、加氢站名称、车牌号、加氢量、成本单价、成本总价、客户名称、加氢单价、加氢总价、行驶里程、业务员、承担方式、对账日期、备注、收票日期、加氢站付款状态、开票日期、客户收款状态、开票公司。\n\n---\n\n## 九、变更日志\n\n### 9.1 记录什么\n\n满足审计与纠纷查证，以下变化需留痕：\n\n- 保存（待保存 → 未对账）  \n- 完成对账（未对账 → 已对账）  \n- 各业务字段修改（前后值不同）  \n- 新增、复制、批量导入产生记录  \n\n### 9.2 怎么查看\n\n在操作列点击 **「更多」→ 变更日志**，弹窗展示：\n\n- 修改时间、修改人、修改字段、修改前（红）、修改后（绿）  \n- 按时间倒序排列  \n\n---\n\n## 十、业务规则汇总（验收必读）\n\n### 10.1 保存\n\n- 一次保存处理页面上**全部**待保存记录。  \n- 必填：加氢时间、加氢站、车牌（须为登记车辆）、客户、加氢量、成本单价、加氢单价、承担方式。  \n- 校验失败：仅格子标红，无「保存成功」类提示。  \n\n### 10.2 完成对账\n\n- 必须先勾选未对账记录。  \n- 仅未对账可勾选。  \n- 确认文案强调：完成后需主管才能改。  \n\n### 10.3 筛选与列表\n\n- 查询点击后生效；重置恢复。  \n- **顶部合计条** 对当前列表可见行实时汇总；修改筛选并点击「查询」后重新计算；「仅显示异常数据」开启时仅统计可见行。  \n- 本人待保存新增行在筛选后仍可见（合计亦包含这些行，若其在列表中展示）。  \n\n### 10.4 导出\n\n- 仅未对账、已对账；遵循查询条件；可自选列。  \n\n### 10.5 复制\n\n- 单次最多 100 条；生成待保存记录。  \n\n---\n\n## 十一、业务验收场景（UAT 建议）\n\n| 编号 | 场景 | 预期结果 |\n|------|------|----------|\n| U1 | 新增一行并填齐必填项后保存 | 变为未对账，出现订单编号 |\n| U2 | 必填项缺一项点保存 | 对应格标红，状态仍为待保存 |\n| U3 | 勾选多条未对账并完成对账 | 变为已对账，业务员不可改删 |\n| U4 | 业务员打开已对账记录 | 编辑/删除不可用，有主管联系提示 |\n| U5 | 加氢量填 65kg | 单元格标黄，提示加氢量疑似有误 |\n| U6 | 单价填与标准价不一致 | 标黄并提示与系统该时段不一致 |\n| U7 | 开启「仅显示异常数据」 | 仅异常记录可见，本人新加待保存仍可见 |\n| U8 | 设置筛选后导出 | 仅导出未对账+已对账且符合筛选的数据 |\n| U9 | 导入模板 5 条后保存 | 5 条均变未对账 |\n| U10 | 未对账记录点编辑后改客户 | 业务员、开票信息等随客户更新，变更日志有记录 |\n| U11 | 租赁车客户与系统不一致 | 整行标红、水印「客户疑似有误」，红色 ⚠；创建人或主管可一键替换并留痕 |\n| U12 | 库存车误填客户 | 整行标红，红色 ⚠，提示不应填写客户名称 |\n| U13 | 租赁车客户与系统一致 | 客户名称后显示绿色 ✓，悬浮「客户名称正确」 |\n| U14 | 非创建人查看客户不一致行 | 可见红色 ⚠ 与说明，无「一键替换」按钮 |\n| U15 | 异动期客户为「车辆异动」 | 不标红，客户名称后绿色 ✓，悬浮说明异动期规则 |\n| U16 | 异动期客户填其他名称 | 整行标红、水印「客户疑似有误」，红色 ⚠，提示应为「车辆异动」 |\n| U17 | 客户名称异常行完成对账 | 整行标红/水印消失，红色 ⚠ 仍可见；「仅显示异常数据」筛不出该行 |\n\n---\n\n## 十二、名词与枚举（业务词典）\n\n| 名词 | 含义 |\n|------|------|\n| 待保存 | 草稿，未进入对账流程 |\n| 未对账 | 已保存，等待业务确认并完成对账 |\n| 已对账 | 对账完成，业务员不可随意改动 |\n| 客户承担 | 氢费由客户承担 |\n| 我司承担 | 氢费由我司承担 |\n| 客户自行结算 | 由客户自行与加氢站等方结算 |\n| 其他结算 | 其他结算方式 |\n| 加氢站付款状态 | 加氢站侧是否已付款，已付款 / 未付款 |\n| 客户收款状态 | 客户侧是否已收款，已付款 / 未付款 |\n| 收票日期 | 财务收票日期，系统带出 |\n| 标准价 | 公司维护的、按加氢站与生效时段确定的参考单价 |\n\n---\n\n## 十三、版本与协作说明\n\n- 本文档描述的是 **车辆氢费明细** 页面当前已对齐的产品行为，供评审、培训与 UAT 使用。  \n- 研发实现细节、接口定义、字段编码见单独的技术设计文档（如有）。  \n- 需求变更请更新本文档版本号，并在评审纪要中注明影响章节。  \n\n---\n\n**文档结束**\n",
            "markdownPath": "src/resources/vehicle-h2-fee-ledger/PRD.md"
          },
          {
            "type": "folder",
            "id": "vh2-doc-page-annotations",
            "title": "页面标注",
            "defaultExpanded": true,
            "children": [
              {
                "type": "markdown",
                "id": "vh2-doc-filter",
                "title": "筛选条件",
                "markdown": "# 筛选条件\n\n默认展示加氢时间、订单编号、车牌号码；点击「展开」显示客户、加氢站、业务员、承担方式、客户收款状态、开票公司等。\n\n| 操作 | 行为 |\n|---|---|\n| 查询 | 应用当前筛选，并重算顶部合计 |\n| 重置 | 清空筛选条件 |"
              },
              {
                "type": "markdown",
                "id": "vh2-doc-warn",
                "title": "异常数据",
                "markdown": "# 异常数据\n\n**单元格标黄**：加氢量＞60kg、成本/加氢单价偏离站点标准价。\n\n**整行标红**：客户名称与车辆运营态不符（租赁客户不一致、库存车误填客户、异动期客户错误）。\n\n各异常单元格/整行水印提示；客户不一致时可 **一键替换为系统客户** 并留痕。\n\n「仅显示异常数据」聚焦风险记录，本人待保存行仍可见。"
              },
              {
                "type": "markdown",
                "id": "vh2-doc-reconcile",
                "title": "保存与对账",
                "markdown": "# 保存与完成对账\n\n- **保存**：待保存 → 未对账\n- **完成对账**：勾选未对账行，确认后 → 已对账，业务员不可改删\n- 主管可修改已对账数据，变更写入日志"
              },
              {
                "type": "markdown",
                "id": "vh2-doc-table",
                "title": "列表与合计",
                "markdown": "# 列表与合计\n\n顶部合计条实时汇总可见行的加氢量、成本总价、加氢总价。\n\n列表支持行内编辑、复制、批量改价、变更日志；仅未对账可勾选完成对账。\n\n客户名称列含运营态校验、警示图标与一键替换（见异常数据说明）。"
              }
            ]
          }
        ]
      }
    ]
  }
}
