{
  "documentVersion": 1,
  "format": "axhub-annotation-source",
  "data": {
    "version": 2,
    "prototypeName": "vehicle-management",
    "pageId": "list",
    "updatedAt": 1783800844970,
    "nodes": [
      {
        "id": "vm-doc-toolbar",
        "index": 1,
        "title": "测试用例下载",
        "pageId": [
          "list",
          "detail"
        ],
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-doc-toolbar\"]"
          ],
          "fingerprint": "vm-doc-toolbar",
          "path": []
        },
        "aiPrompt": "右上角测试用例下载工具栏。",
        "annotationText": "下载 Excel 测试用例。",
        "hasMarkdown": true,
        "color": "#64748b",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-filter",
        "index": 2,
        "title": "筛选条件",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-filter\"]"
          ],
          "fingerprint": "vm-filter",
          "path": []
        },
        "aiPrompt": "列表筛选区字段与查询逻辑。",
        "annotationText": "",
        "hasMarkdown": true,
        "color": "#2563eb",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-kpi-all",
        "index": 3,
        "title": "所有营运车辆",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-kpi-all\"]"
          ],
          "fingerprint": "vm-kpi-all",
          "path": []
        },
        "aiPrompt": "KPI 口径与点击筛选。",
        "annotationText": "未退出运营、可用于交付的车辆总数。点击切换列表筛选。",
        "hasMarkdown": true,
        "color": "#64748b",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-kpi-lease",
        "index": 4,
        "title": "租赁车辆",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-kpi-lease\"]"
          ],
          "fingerprint": "vm-kpi-lease",
          "path": []
        },
        "aiPrompt": "租赁运营状态 KPI。",
        "annotationText": "运营状态为「租赁」且已交付租赁业务项目的车辆。",
        "hasMarkdown": true,
        "color": "#2563eb",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-kpi-self",
        "index": 5,
        "title": "自营车辆",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-kpi-self\"]"
          ],
          "fingerprint": "vm-kpi-self",
          "path": []
        },
        "aiPrompt": "自营运营状态 KPI。",
        "annotationText": "运营状态为「自营」且已交付自营业务项目的车辆。",
        "hasMarkdown": true,
        "color": "#059669",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-kpi-stock",
        "index": 6,
        "title": "库存车辆",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-kpi-stock\"]"
          ],
          "fingerprint": "vm-kpi-stock",
          "path": []
        },
        "aiPrompt": "在库车辆 KPI。",
        "annotationText": "运营状态为「可运营」或「待运营」的在库车辆。",
        "hasMarkdown": true,
        "color": "#d97706",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-kpi-nonOperating",
        "index": 7,
        "title": "非运营车辆",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-kpi-nonOperating\"]"
          ],
          "fingerprint": "vm-kpi-nonOperating",
          "path": []
        },
        "aiPrompt": "非运营车辆 KPI。",
        "annotationText": "公务车、观光车等不可用于租赁或自营业务的车辆。",
        "hasMarkdown": true,
        "color": "#7c3aed",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-kpi-exit",
        "index": 8,
        "title": "退出运营车辆",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-kpi-exit\"]"
          ],
          "fingerprint": "vm-kpi-exit",
          "path": []
        },
        "aiPrompt": "退出运营 KPI。",
        "annotationText": "已退出运营，不可再用于租赁或自营业务。",
        "hasMarkdown": true,
        "color": "#64748b",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-kpi-licenseAbnormal",
        "index": 9,
        "title": "证照异常车辆",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-kpi-licenseAbnormal\"]"
          ],
          "fingerprint": "vm-kpi-licenseAbnormal",
          "path": []
        },
        "aiPrompt": "证照异常与交车限制。",
        "annotationText": "证照状态异常；须将行驶证有效期更新至未过期才可交车。",
        "hasMarkdown": true,
        "color": "#dc2626",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-kpi-insuranceAbnormal",
        "index": 10,
        "title": "保险异常车辆",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-kpi-insuranceAbnormal\"]"
          ],
          "fingerprint": "vm-kpi-insuranceAbnormal",
          "path": []
        },
        "aiPrompt": "保险异常与交车限制。",
        "annotationText": "交强险或商业险已到期；完成采购前不可用于租赁/自营交车。",
        "hasMarkdown": true,
        "color": "#dc2626",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-table-toolbar",
        "index": 11,
        "title": "导出与批量导入",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-table-toolbar\"]"
          ],
          "fingerprint": "vm-table-toolbar",
          "path": []
        },
        "aiPrompt": "列表工具栏操作。",
        "annotationText": "导出当前筛选结果；批量导入按模板校验（原型为 Toast 演示）。",
        "hasMarkdown": true,
        "color": "#0f766e",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-vehicle-table",
        "index": 12,
        "title": "台账列表",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-vehicle-table\"]"
          ],
          "fingerprint": "vm-vehicle-table",
          "path": []
        },
        "aiPrompt": "车辆台账表格列与操作。",
        "annotationText": "",
        "hasMarkdown": true,
        "color": "#2563eb",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-import-modal",
        "index": 13,
        "title": "批量导入",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-import-modal\"]"
          ],
          "fingerprint": "vm-import-modal",
          "path": []
        },
        "aiPrompt": "CSV 模板下载与上传。",
        "annotationText": "",
        "hasMarkdown": true,
        "color": "#0f766e",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-edit-modal",
        "index": 14,
        "title": "编辑车辆",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-edit-modal\"]"
          ],
          "fingerprint": "vm-edit-modal",
          "path": []
        },
        "aiPrompt": "管理员编辑车辆档案。",
        "annotationText": "管理员通过操作列「更多 → 编辑」打开。",
        "hasMarkdown": true,
        "color": "#7c3aed",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-ops-modal",
        "index": 15,
        "title": "运维负责人",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-ops-modal\"]"
          ],
          "fingerprint": "vm-ops-modal",
          "path": []
        },
        "aiPrompt": "列表页运维负责人弹窗。",
        "annotationText": "",
        "hasMarkdown": true,
        "color": "#d97706",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-operate-city-modal",
        "index": 16,
        "title": "修改运营城市",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-operate-city-modal\"]"
          ],
          "fingerprint": "vm-operate-city-modal",
          "path": []
        },
        "aiPrompt": "列表页运营城市弹窗。",
        "annotationText": "仅来源为「人工」时可修改。",
        "hasMarkdown": true,
        "color": "#0891b2",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-location-map-modal",
        "index": 17,
        "title": "车辆定位地图",
        "pageId": "list",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-location-map-modal\"]"
          ],
          "fingerprint": "vm-location-map-modal",
          "path": []
        },
        "aiPrompt": "GPS 地图弹窗。",
        "annotationText": "点击「当前位置」打开。",
        "hasMarkdown": true,
        "color": "#2563eb",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-detail-hero",
        "index": 18,
        "title": "车辆概要",
        "pageId": "detail",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-detail-hero\"]"
          ],
          "fingerprint": "vm-detail-hero",
          "path": []
        },
        "aiPrompt": "详情页头部信息。",
        "annotationText": "车牌、品牌型号、VIN、在线状态、运营城市与 GPS 时间。",
        "hasMarkdown": true,
        "color": "#2563eb",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-detail-stats",
        "index": 19,
        "title": "统计条",
        "pageId": "detail",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-detail-stats\"]"
          ],
          "fingerprint": "vm-detail-stats",
          "path": []
        },
        "aiPrompt": "运营城市、里程、停放区域、运维负责人。",
        "annotationText": "",
        "hasMarkdown": true,
        "color": "#0f766e",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-detail-tabs",
        "index": 20,
        "title": "Tab 导航",
        "pageId": "detail",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-detail-tabs\"]"
          ],
          "fingerprint": "vm-detail-tabs",
          "path": []
        },
        "aiPrompt": "详情页 11 个 Tab。",
        "annotationText": "",
        "hasMarkdown": true,
        "color": "#64748b",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-detail-tab-basic",
        "index": 21,
        "title": "基本信息 Tab",
        "pageId": "detail",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-detail-tab-basic\"]"
          ],
          "fingerprint": "vm-detail-tab-basic",
          "path": []
        },
        "aiPrompt": "档案、项目、证照摘要。",
        "annotationText": "",
        "hasMarkdown": true,
        "color": "#2563eb",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-detail-tab-model",
        "index": 22,
        "title": "型号参数 Tab",
        "pageId": "detail",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-detail-tab-model\"]"
          ],
          "fingerprint": "vm-detail-tab-model",
          "path": []
        },
        "aiPrompt": "车型参数与保养项目。",
        "annotationText": "展示车型技术参数表与保养项目清单（只读）。",
        "hasMarkdown": true,
        "color": "#64748b",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-detail-tab-license",
        "index": 23,
        "title": "证照信息 Tab",
        "pageId": "detail",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-detail-tab-license\"]"
          ],
          "fingerprint": "vm-detail-tab-license",
          "path": []
        },
        "aiPrompt": "行驶证与营运证展示。",
        "annotationText": "分组展示证照字段与照片预览。",
        "hasMarkdown": true,
        "color": "#d97706",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-detail-tab-insurance",
        "index": 24,
        "title": "保险记录 Tab",
        "pageId": "detail",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-detail-tab-insurance\"]"
          ],
          "fingerprint": "vm-detail-tab-insurance",
          "path": []
        },
        "aiPrompt": "险种概览与采购历史。",
        "annotationText": "",
        "hasMarkdown": true,
        "color": "#059669",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-detail-tab-lease",
        "index": 25,
        "title": "租赁记录 Tab",
        "pageId": "detail",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-detail-tab-lease\"]"
          ],
          "fingerprint": "vm-detail-tab-lease",
          "path": []
        },
        "aiPrompt": "合同与交还车历史。",
        "annotationText": "合同号、交车/还车日期可跳转对应管理模块（原型 Toast）。",
        "hasMarkdown": true,
        "color": "#2563eb",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-detail-tab-accident",
        "index": 26,
        "title": "事故记录 Tab",
        "pageId": "detail",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-detail-tab-accident\"]"
          ],
          "fingerprint": "vm-detail-tab-accident",
          "path": []
        },
        "aiPrompt": "事故记录筛选与列表。",
        "annotationText": "按车牌过滤种子数据；可跳转事故详情（原型演示）。",
        "hasMarkdown": true,
        "color": "#dc2626",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-detail-tab-fault",
        "index": 27,
        "title": "故障记录 Tab",
        "pageId": "detail",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-detail-tab-fault\"]"
          ],
          "fingerprint": "vm-detail-tab-fault",
          "path": []
        },
        "aiPrompt": "故障记录筛选与操作。",
        "annotationText": "支持查看详情与编辑故障记录（原型 Toast）。",
        "hasMarkdown": true,
        "color": "#d97706",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-detail-tab-violation",
        "index": 28,
        "title": "违章记录 Tab",
        "pageId": "detail",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-detail-tab-violation\"]"
          ],
          "fingerprint": "vm-detail-tab-violation",
          "path": []
        },
        "aiPrompt": "违章记录列表。",
        "annotationText": "按当前车辆过滤；可跳转违章管理详情（原型演示）。",
        "hasMarkdown": true,
        "color": "#7c3aed",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-detail-tab-movement",
        "index": 29,
        "title": "异动记录 Tab",
        "pageId": "detail",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-detail-tab-movement\"]"
          ],
          "fingerprint": "vm-detail-tab-movement",
          "path": []
        },
        "aiPrompt": "异动记录列表。",
        "annotationText": "展示车辆异动历史；可跳转异动管理详情（原型演示）。",
        "hasMarkdown": true,
        "color": "#0891b2",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-detail-tab-transfer",
        "index": 30,
        "title": "调拨记录 Tab",
        "pageId": "detail",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-detail-tab-transfer\"]"
          ],
          "fingerprint": "vm-detail-tab-transfer",
          "path": []
        },
        "aiPrompt": "调拨记录列表。",
        "annotationText": "展示车辆调拨历史；可跳转调拨详情（原型演示）。",
        "hasMarkdown": true,
        "color": "#0f766e",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      },
      {
        "id": "vm-detail-tab-annual",
        "index": 31,
        "title": "年审记录 Tab",
        "pageId": "detail",
        "locator": {
          "selectors": [
            "[data-annotation-id=\"vm-detail-tab-annual\"]"
          ],
          "fingerprint": "vm-detail-tab-annual",
          "path": []
        },
        "aiPrompt": "年审历史列表。",
        "annotationText": "对齐年审管理历史列表；可跳转年审详情（原型演示）。",
        "hasMarkdown": true,
        "color": "#0891b2",
        "images": [],
        "createdAt": 1740096000000,
        "updatedAt": 1740096000000
      }
    ]
  },
  "markdownMap": {
    "vm-doc-toolbar": "## 下载测试用例\n\n右上角工具栏，列表页与详情页均可用；下载含列表/详情两个 Sheet 的 Excel。",
    "vm-filter": "## 4. 筛选区\n\n### 4.1 字段清单\n\n默认展示前 4 项，点击「展开更多筛选项」显示全部。\n\n| 字段 | 控件 | 选项来源 | 匹配规则 |\n|---|---|---|---|\n| 车牌号 | 多行弹层输入 | 用户输入 | 确认后精确匹配（归一化：去空格、大写） |\n| 运营城市 | 省-市级联多选 | 种子 + 停车场映射 + 台账 location | 与车辆运营城市（省-市格式）包含关系 |\n| 品牌/型号/客户/部门/项目/合同/所有权/运营公司/租赁公司/停车场 | 可搜索单选 | 当前台账去重排序 | 精确相等 |\n| 项目类型 | 可搜索单选 | 租赁、自营 | 与创建合同时合同类型相等 |\n| 运营状态 | 可搜索单选 | 租赁、自营、可运营、待运营、退出运营 | 精确相等 |\n| 车辆来源 | 可搜索单选 | 自有、外租、挂靠 | 精确相等 |\n\n### 4.2 操作逻辑\n\n| 操作 | 行为 |\n|---|---|\n| **查询** | 将当前筛选项写入「已应用条件」，列表与 KPI 计数基于全量台账；页码重置为 1 |\n| **重置** | 清空待应用与已应用条件，页码重置为 1 |\n| 修改筛选项未点查询 | 不影响当前列表 |\n\n筛选与 KPI Tab **叠加**：先按 KPI 分类过滤，再按筛选条件过滤。\n\n\n---\n\n### 原型实现补充\n\n- **区域**：华东 / 华南 / 华中 / 华北 / 东北 / 西南 / 西北；按运营城市所在省份映射过滤",
    "vm-kpi-all": "## 当前卡片口径\n\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---",
    "vm-kpi-lease": "## 当前卡片口径\n\n| 租赁车辆 | `operateStatus === '租赁'` |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---",
    "vm-kpi-self": "## 当前卡片口径\n\n| 自营车辆 | `operateStatus === '自营'` |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---",
    "vm-kpi-stock": "## 当前卡片口径\n\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---",
    "vm-kpi-nonOperating": "## 当前卡片口径\n\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---",
    "vm-kpi-exit": "## 当前卡片口径\n\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---",
    "vm-kpi-licenseAbnormal": "## 当前卡片口径\n\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---",
    "vm-kpi-insuranceAbnormal": "## 当前卡片口径\n\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---",
    "vm-table-toolbar": "## 6. 列表工具栏\n\n| 按钮 | 行为 |\n|---|---|\n| 导出 | Toast：`导出功能（原型演示）：当前列表共 N 条` |\n| 批量导入 | 打开导入弹窗 |\n\n### 6.1 批量导入弹窗\n\n1. 下载 CSV 模板（含必填字段说明行）\n2. 上传文件 → Toast：`已接收文件 {文件名}，导入校验为原型演示`\n\n原型不做真实校验与落库。\n\n---",
    "vm-vehicle-table": "## 7. 列表字段说明\n\n### 7.1 车辆信息（冻结列）\n\n- 车牌：链接色，点击进入**车辆详情页**\n- VIN、品牌·型号：只读展示\n\n### 7.2 运营城市\n\n- 展示：省-市（由 `location` 解析）\n- 标签：车机 / GPS / 人工（来源 `operateCitySource` 或推导）\n- **可编辑**：仅来源为「人工」时可点击修改 → 运营城市修改弹窗\n- 车机/GPS 来源：不可改，hover 提示原因\n\n### 7.3 所属项目\n\n仅**租赁/自营**车辆展示项目名称、合同编码、客户名称；否则三行均为空。\n\n- 项目名称、合同编码：有值时可点击 → Toast 跳转合同详情（原型演示）\n\n### 7.4 里程数\n\n- 在线车辆：显示里程 + 「车机」标签，里程按车机数据格式化\n- 离线：仅里程或空\n\n### 7.5 证照 / 保险\n\n| 列 | 有数据 | 无数据/异常 |\n|---|---|---|\n| 检验有效期 | 到期日 + 剩余/已过期天数标签 | 「未上传」可点击 + 「禁止交车」标签 |\n| 保险状态 | 正常/异常 Tag；异常时 hover 展示具体到期险种 | — |\n| 交强险/商业险到期 | 到期日 + 剩余天数 | 「未购买」可点击 + 「禁止交车」 |\n\n未上传/未购买点击 → Toast 跳转证照管理或保险采购（原型演示）。\n\n### 7.6 上次交车 / 还车情况\n\n三行纯数值（无行内标题）：里程(km)、人员、时间(至分钟)。**有数据时**可点击。\n\n| 列 | 点击行为 |\n|---|---|\n| 上次交车情况 | Toast：`即将跳转至交车管理（原型演示）：{车牌}` |\n| 上次还车情况 | Toast：`即将跳转至还车管理（原型演示）：{车牌}` |\n\n### 7.7 三方租赁公司\n\n仅外租车辆显示 `leaseCompany`，否则空白。\n\n### 7.8 当前位置\n\n- 在线状态圆点 + 文案\n- 详细地址：有 GPS 坐标时可点击 → 地图弹窗（OpenStreetMap 嵌入）\n- GPS 时间：精确到秒\n\n### 7.9 运维负责人\n\n可编辑时显示为链接；无负责人显示「设置负责人」→ 运维负责人弹窗。\n\n### 7.10 操作列（冻结）\n\n| 操作 | 条件 | 行为 |\n|---|---|---|\n| 查看 | 始终 | 进入车辆详情页 |\n| 更多 | 管理员或有运维权限 | 下拉：编辑（管理员）、修改运维负责人 |\n\n---",
    "vm-import-modal": "## 6. 列表工具栏\n\n| 按钮 | 行为 |\n|---|---|\n| 导出 | Toast：`导出功能（原型演示）：当前列表共 N 条` |\n| 批量导入 | 打开导入弹窗 |\n\n### 6.1 批量导入弹窗\n\n1. 下载 CSV 模板（含必填字段说明行）\n2. 上传文件 → Toast：`已接收文件 {文件名}，导入校验为原型演示`\n\n原型不做真实校验与落库。\n\n---",
    "vm-edit-modal": "### 8.3 编辑车辆（管理员）\n\n- 可搜索选择器字段与筛选区一致规范\n- 保存时运营状态、车辆状态仍为必填（按钮禁用），但标签无红色 *\n- Toast「车辆信息已更新」",
    "vm-ops-modal": "### 8.1 设置运维负责人\n\n- 标题下胶囊：车牌 | 运维区域（省-市）\n- 多选搜索选择器，候选人按车辆区域过滤\n- **保存**：写回 `opsManagers`，Toast「运维负责人已更新」\n- **取消**：不保存\n\n---\n\n### 原型实现补充\n\n- 详情页统计条改用内联编辑面板（非弹窗）",
    "vm-operate-city-modal": "### 8.2 修改运营城市\n\n- 省-市选择，保存后 `location` 更新且 `operateCitySource` 置为「人工」\n- Toast「运营城市已更新」\n\n---\n\n### 原型实现补充\n\n- 详情页统计条改用内联选择器（非弹窗）",
    "vm-location-map-modal": "### 8.4 地图\n\n展示坐标点与 GPS 时间；关闭不保存。\n\n---",
    "vm-detail-hero": "### 2.1 顶栏\n\n| 元素 | 行为 |\n|---|---|\n| 返回列表 | 回到列表页，保留列表筛选/KPI/分页状态 |\n| 查看需求说明 | 打开详情页 PRD（本文档） |\n| PRD文档MD文件下载 | 下载列表页、详情页两份 Markdown PRD |\n| 下载测试用例 | 下载 Excel，含列表页与详情页测试用例两个 Sheet |\n\n---\n\n### 2.2 车辆概要区\n\n- 车牌号、品牌·型号、VIN\n- 在线状态（在线/离线圆点）\n- 运营城市文案、GPS 时间\n\n---\n\n### 原型实现补充\n\n- 顶栏仅保留「返回列表」与「下载测试用例」",
    "vm-detail-stats": "### 2.3 统计条（4 项）\n\n| 字段 | 可编辑 | 行为 |\n|---|---|---|\n| 运营城市 | 仅来源为「人工」时可改 | 点击 → 运营城市修改弹窗；展示车机/GPS/人工来源标签 |\n| 里程数 | 否 | 在线时展示车机标签 |\n| 停放区域 | 否 | 只读 |\n| 运维负责人 | 有运维权限时可改 | 点击铅笔图标 → 运维负责人弹窗 |\n\n\n---\n\n### 原型实现补充\n\n- **运营城市**、**运维负责人**：详情页使用内联编辑面板（非弹窗）",
    "vm-detail-tabs": "## 3. Tab 总览\n\n| 序号 | Tab | 说明 |\n|---|---|---|\n| 1 | 基本信息 | 档案、项目、证照摘要等，部分字段行内可编辑 |\n| 2 | 型号参数 | 车型参数与保养项目表 |\n| 3 | 证照信息 | 行驶证、营运证等分组展示与照片预览 |\n| 4 | 保险记录 | 险种概览卡片 + 采购历史表 |\n| 5 | 租赁记录 | 合同/交还车历史 |\n| 6 | 事故记录 | 筛选 + 事故列表 |\n| 7 | 故障记录 | 筛选 + 故障列表 |\n| 8 | 违章记录 | 筛选 + 违章列表 |\n| 9 | 异动记录 | 筛选 + 异动列表 |\n| 10 | 调拨记录 | 筛选 + 调拨列表 |\n| 11 | 年审记录 | 筛选 + 已完成年审历史（对齐年审管理历史列表） |\n\n各业务记录 Tab 通用规则：\n\n- 数据按当前车辆 `plateNo` 从对应 JSON 种子文件过滤\n- 筛选区：**查询**生效、**重置**清空，修改未查询不影响列表\n- 日期范围使用双月历弹层组件\n- 表格左对齐；金额/数字列使用等宽数字\n- 底栏：共 N 条 + 紧凑分页（默认 10 条/页）\n\n---",
    "vm-detail-tab-basic": "## 4. 基本信息 Tab\n\n### 4.1 档案信息\n\n| 字段 | 可编辑 |\n|---|---|\n| 出厂年份 | 是（年份选择） |\n| 采购入库日期 | 是（日期选择） |\n| 运营状态、车辆来源、停车场等 | 只读展示 |\n\n保存后 Toast「车辆信息已更新」，写回内存台账。\n\n### 4.2 项目信息\n\n租赁/自营车辆展示项目名称、合同编码、客户名称；否则显示「无」。\n\n### 4.3 证照摘要\n\n- 检验有效期：展示到期日与剩余/过期标签\n- 未上传时可点击 → Toast 跳转证照管理编辑（原型演示）\n\n---",
    "vm-detail-tab-model": "## 5. 型号参数 Tab\n\n- 展示车辆型号技术参数（只读）\n- 保养项目表：养护项目、保养公里/时间周期、工时费、材料费、合计\n\n---",
    "vm-detail-tab-license": "## 6. 证照信息 Tab\n\n- 分组：行驶证、道路运输证、上海牌专项证件等（按车牌规则显隐）\n- 每证展示：证件号、有效期、余额（如有）、照片网格\n- 照片可点击全屏预览；证件状态色点图例\n- 数据来自 `utils/vehicleLicenses` 与车辆台账关联\n\n---",
    "vm-detail-tab-insurance": "## 7. 保险记录 Tab\n\n### 7.1 险种概览卡片\n\n交强险、商业险、承运人责任险等；点击切换下方历史表。\n\n- 未购买险种卡片可点击 → Toast 跳转保险采购（原型演示）\n- 展示状态 Tag 与到期剩余天数\n\n### 7.2 采购历史表\n\n| 列 | 说明 |\n|---|---|\n| 保险导入时间、操作人、类型、保单号 | 只读 |\n| 保险状态 | Tag |\n| 保险公司、付款时间、到期日期 | 只读 |\n| 保单文件 | 有附件时「预览」「下载」可点击 → Toast 演示 |\n\n---",
    "vm-detail-tab-lease": "## 8. 租赁记录 Tab\n\n### 8.1 筛选\n\n合同编码、项目名称、客户名称、业务类型。\n\n### 8.2 表格与跳转\n\n| 列 | 可点击 | 跳转目标（原型 Toast） |\n|---|---|---|\n| 合同编码 | 是 | 租赁合同详情 |\n| 项目名称 | 有值时 | 租赁合同详情 |\n| 交车日期 | 有值时 | 交车管理详情 |\n| 还车日期 | 有值时 | 还车管理详情 |\n\n---",
    "vm-detail-tab-accident": "## 9. 事故记录 Tab\n\n### 9.1 筛选\n\n事故时间（日期范围）、客户名称、事故等级、事故状态。\n\n### 9.2 表格\n\n| 列 | 可点击 | 跳转 |\n|---|---|---|\n| 事故编码 | 是 | 事故管理详情页 |\n| 其余列 | 否 | — |\n\n---",
    "vm-detail-tab-fault": "## 10. 故障记录 Tab\n\n### 10.1 筛选\n\n上报时间（日期范围）、故障编号、故障等级、故障类型、解决情况、AI 匹配状态。\n\n### 10.2 表格\n\n| 列/操作 | 可点击 | 行为 |\n|---|---|---|\n| 故障编号 | 是 | Toast 跳转故障管理详情 |\n| 操作「查看」 | 是 | 同上 |\n| 操作「编辑」 | 是 | Toast 编辑故障记录演示 |\n\n---",
    "vm-detail-tab-violation": "## 11. 违章记录 Tab\n\n### 11.1 筛选\n\n违法时间、客户名称、缴费状态、是否处理。\n\n### 11.2 表格\n\n| 列 | 可点击 | 跳转 |\n|---|---|---|\n| 违法行为 | 是 | 违章管理详情页（按违法时间标识） |\n| 其余列 | 否 | — |\n\n---",
    "vm-detail-tab-movement": "## 12. 异动记录 Tab\n\n### 12.1 筛选\n\n异动开始日期、异动目的地、异动类型。\n\n### 12.2 表格\n\n宽表展示异动起止里程/电量/氢量等；**异动开始日期**可点击 → Toast 跳转异动管理详情。\n\n---",
    "vm-detail-tab-transfer": "## 13. 调拨记录 Tab\n\n### 13.1 筛选\n\n调拨日期、调出人、接收人。\n\n### 13.2 表格\n\n**调拨日期**可点击 → Toast 跳转车辆调拨详情。\n\n---",
    "vm-detail-tab-annual": "## 14. 年审记录 Tab\n\n对齐「年审管理」历史列表字段（不含车牌/品牌/型号，因已在详情页上下文）。\n\n### 14.1 筛选\n\n| 字段 | 说明 |\n|---|---|\n| 完成时间 | 按办结日期范围 |\n| 检验有效期 | 按检验有效期至范围 |\n| 办理人 | 下拉选择 |\n\n### 14.2 表格列\n\n| 列 | 可点击 | 说明 |\n|---|---|---|\n| 检验有效期至 | **是** | Toast 跳转年审管理详情（原型演示） |\n| 检测服务站名称 | 否 | 无数据显示「—」 |\n| 检测费用 | 否 | 金额两位小数，无数据显示「—」 |\n| 二保服务站名称 | 否 | 同上 |\n| 二保费用 | 否 | 同上 |\n| 整备服务站名称 | 否 | 同上 |\n| 整备费用 | 否 | 同上 |\n| 办理人 | 否 | — |\n| 完成时间 | 否 | 办结时间，默认倒序 |\n\n### 14.3 数据\n\n- 来源：`data/annual-review-records.json`，按 `plateNo` 过滤\n- 样例车 `粤AGP5156` 含 3 条已完成年审记录\n\n---"
  },
  "assetMap": {},
  "directory": {
    "nodes": [
      {
        "type": "folder",
        "id": "vm-doc-root",
        "title": "车辆管理说明",
        "defaultExpanded": true,
        "children": [
          {
            "type": "markdown",
            "id": "vm-doc-overview",
            "title": "模块总览",
            "markdown": "## 1. 模块定位\n\n| 项 | 说明 |\n|---|---|\n| 模块名称 | 车辆管理 — 列表页 |\n| 目标用户 | 运营、业务、运维、管理员 |\n| 核心任务 | 按多维度筛选车辆台账，查看证照/保险/交还车状态，维护运维负责人，进入车辆详情 |\n| 页面结构 | 右上角工具栏：「查看需求说明」「PRD文档MD文件下载」「下载测试用例」；筛选区 + KPI + 表格 + 分页 |\n\n---"
          },
          {
            "type": "link",
            "id": "vm-link-self",
            "title": "车辆管理原型",
            "href": "./index.html",
            "target": "self"
          },
          {
            "type": "folder",
            "id": "vm-doc-prd",
            "title": "PRD 全文",
            "defaultExpanded": false,
            "children": [
              {
                "type": "markdown",
                "id": "vm-doc-prd-list",
                "title": "列表页 PRD",
                "markdown": "# 车辆管理 · 列表页产品需求说明（PRD）\n\n> 本页为车辆台账列表。标注「原型演示」的跳转、导入、导出仅 Toast 提示，不做真实页面跳转。\n\n---\n\n## 1. 模块定位\n\n| 项 | 说明 |\n|---|---|\n| 模块名称 | 车辆管理 — 列表页 |\n| 目标用户 | 运营、业务、运维、管理员 |\n| 核心任务 | 按多维度筛选车辆台账，查看证照/保险/交还车状态，维护运维负责人，进入车辆详情 |\n| 页面结构 | 右上角工具栏：「查看需求说明」「PRD文档MD文件下载」「下载测试用例」；筛选区 + KPI + 表格 + 分页 |\n\n---\n\n## 2. 权限与角色（原型常量）\n\n| 常量 | 原型取值 | 影响 |\n|---|---|---|\n| ADMIN | `true` | 操作列「更多」菜单显示「编辑」 |\n| 运维主管 | `true` | 可点击运维负责人、操作列「修改运维负责人」 |\n\n生产环境应由登录用户权限接口下发，原型写死便于演示。\n\n---\n\n## 3. 数据来源总览\n\n| 数据 | 来源文件/规则 | 用途 |\n|---|---|---|\n| 车辆台账 | `data/vehicles.json`（100 条样例） | 列表、筛选选项、详情、编辑回写 |\n| 保险采购 | `data/insurance-purchases.json` | 按车辆 + 险种取**最新一条**采购记录的到期日 |\n| 停车场→区域 | `PARKING_REGION_MAP` 常量 | 运维负责人候选区域、运营城市辅助 |\n| 运维人员 | `OPS_STAFF` 常量 | 按车辆区域过滤可选运维负责人 |\n| 运营城市种子 | `OPERATE_CITY_SEED` + 台账 `location` | 运营城市筛选/修改选项 |\n| GPS 坐标 | 优先 `gpsLat/gpsLng`；否则按 `location` 城市基准点 + 车辆 id 偏移模拟 | 地图弹窗 |\n| GPS 详细地址 | `locationAddress` 优先，否则 `location` 省市区 | 当前位置列 |\n| 所属项目三元组 | `projectName` / `contractNo` / `customer` | 仅运营状态为「租赁」「自营」时展示 |\n| 三方租赁公司 | `leaseCompany` | 仅 `vehicleSource === '外租'` 时展示 |\n| 交还车记录 | `lastDelivery*` / `lastReturn*` 字段 | 上次交车/还车情况列 |\n\n**空值约定**：台账中 `-`、空字符串视为无数据；列表列默认显示空白（非「—」）。\n\n---\n\n## 4. 筛选区\n\n### 4.1 字段清单\n\n默认展示前 4 项，点击「展开更多筛选项」显示全部。\n\n| 字段 | 控件 | 选项来源 | 匹配规则 |\n|---|---|---|---|\n| 车牌号 | 多行弹层输入 | 用户输入 | 确认后精确匹配（归一化：去空格、大写） |\n| 运营城市 | 省-市级联多选 | 种子 + 停车场映射 + 台账 location | 与车辆运营城市（省-市格式）包含关系 |\n| 品牌/型号/客户/部门/项目/合同/所有权/运营公司/租赁公司/停车场 | 可搜索单选 | 当前台账去重排序 | 精确相等 |\n| 项目类型 | 可搜索单选 | 租赁、自营 | 与创建合同时合同类型相等 |\n| 运营状态 | 可搜索单选 | 租赁、自营、可运营、待运营、退出运营 | 精确相等 |\n| 车辆来源 | 可搜索单选 | 自有、外租、挂靠 | 精确相等 |\n\n### 4.2 操作逻辑\n\n| 操作 | 行为 |\n|---|---|\n| **查询** | 将当前筛选项写入「已应用条件」，列表与 KPI 计数基于全量台账；页码重置为 1 |\n| **重置** | 清空待应用与已应用条件，页码重置为 1 |\n| 修改筛选项未点查询 | 不影响当前列表 |\n\n筛选与 KPI Tab **叠加**：先按 KPI 分类过滤，再按筛选条件过滤。\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---\n\n## 6. 列表工具栏\n\n| 按钮 | 行为 |\n|---|---|\n| 导出 | Toast：`导出功能（原型演示）：当前列表共 N 条` |\n| 批量导入 | 打开导入弹窗 |\n\n### 6.1 批量导入弹窗\n\n1. 下载 CSV 模板（含必填字段说明行）\n2. 上传文件 → Toast：`已接收文件 {文件名}，导入校验为原型演示`\n\n原型不做真实校验与落库。\n\n---\n\n## 7. 列表字段说明\n\n### 7.1 车辆信息（冻结列）\n\n- 车牌：链接色，点击进入**车辆详情页**\n- VIN、品牌·型号：只读展示\n\n### 7.2 运营城市\n\n- 展示：省-市（由 `location` 解析）\n- 标签：车机 / GPS / 人工（来源 `operateCitySource` 或推导）\n- **可编辑**：仅来源为「人工」时可点击修改 → 运营城市修改弹窗\n- 车机/GPS 来源：不可改，hover 提示原因\n\n### 7.3 所属项目\n\n仅**租赁/自营**车辆展示项目名称、合同编码、客户名称；否则三行均为空。\n\n- 项目名称、合同编码：有值时可点击 → Toast 跳转合同详情（原型演示）\n\n### 7.4 里程数\n\n- 在线车辆：显示里程 + 「车机」标签，里程按车机数据格式化\n- 离线：仅里程或空\n\n### 7.5 证照 / 保险\n\n| 列 | 有数据 | 无数据/异常 |\n|---|---|---|\n| 检验有效期 | 到期日 + 剩余/已过期天数标签 | 「未上传」可点击 + 「禁止交车」标签 |\n| 保险状态 | 正常/异常 Tag；异常时 hover 展示具体到期险种 | — |\n| 交强险/商业险到期 | 到期日 + 剩余天数 | 「未购买」可点击 + 「禁止交车」 |\n\n未上传/未购买点击 → Toast 跳转证照管理或保险采购（原型演示）。\n\n### 7.6 上次交车 / 还车情况\n\n三行纯数值（无行内标题）：里程(km)、人员、时间(至分钟)。**有数据时**可点击。\n\n| 列 | 点击行为 |\n|---|---|\n| 上次交车情况 | Toast：`即将跳转至交车管理（原型演示）：{车牌}` |\n| 上次还车情况 | Toast：`即将跳转至还车管理（原型演示）：{车牌}` |\n\n### 7.7 三方租赁公司\n\n仅外租车辆显示 `leaseCompany`，否则空白。\n\n### 7.8 当前位置\n\n- 在线状态圆点 + 文案\n- 详细地址：有 GPS 坐标时可点击 → 地图弹窗（OpenStreetMap 嵌入）\n- GPS 时间：精确到秒\n\n### 7.9 运维负责人\n\n可编辑时显示为链接；无负责人显示「设置负责人」→ 运维负责人弹窗。\n\n### 7.10 操作列（冻结）\n\n| 操作 | 条件 | 行为 |\n|---|---|---|\n| 查看 | 始终 | 进入车辆详情页 |\n| 更多 | 管理员或有运维权限 | 下拉：编辑（管理员）、修改运维负责人 |\n\n---\n\n## 8. 弹窗交互\n\n### 8.1 设置运维负责人\n\n- 标题下胶囊：车牌 | 运维区域（省-市）\n- 多选搜索选择器，候选人按车辆区域过滤\n- **保存**：写回 `opsManagers`，Toast「运维负责人已更新」\n- **取消**：不保存\n\n### 8.2 修改运营城市\n\n- 省-市选择，保存后 `location` 更新且 `operateCitySource` 置为「人工」\n- Toast「运营城市已更新」\n\n### 8.3 编辑车辆（管理员）\n\n- 可搜索选择器字段与筛选区一致规范\n- 保存时运营状态、车辆状态仍为必填（按钮禁用），但标签无红色 *\n- Toast「车辆信息已更新」\n\n### 8.4 地图\n\n展示坐标点与 GPS 时间；关闭不保存。\n\n---\n\n## 9. 进入详情页\n\n- 入口：列表车牌链接或操作列「查看」\n- 详情页右上角同样有「查看需求说明」，展示**详情页 PRD**（与本文档分离）\n- 从详情返回列表时，保留筛选/KPI/分页状态（内存态）\n\n---\n\n## 10. 提示信息汇总（Toast）\n\n| 触发场景 | 文案模板 |\n|---|---|\n| 导出 | 导出功能（原型演示）：当前列表共 {n} 条 |\n| 导入成功 | 已接收文件 {name}，导入校验为原型演示 |\n| 运维负责人保存 | 运维负责人已更新 |\n| 运营城市保存 | 运营城市已更新 |\n| 车辆编辑保存 | 车辆信息已更新 |\n| 合同跳转 | 即将跳转至合同详情（原型演示）：{合同编码} |\n| 证照跳转 | 即将跳转至证照管理编辑页（原型演示）：{车牌} |\n| 保险跳转 | 即将跳转至保险采购编辑页（原型演示）：{车牌} · {险种} |\n| 交车跳转 | 即将跳转至交车管理（原型演示）：{车牌} |\n| 还车跳转 | 即将跳转至还车管理（原型演示）：{车牌} |\n\nToast 约 3 秒后自动消失。\n\n---\n\n## 11. 分页\n\n- 默认每页 10 条，可选 10 / 20 / 50 / 100\n- 切换每页条数回到第 1 页\n- 总条数为筛选后的数量\n\n---\n\n## 12. 原型局限\n\n1. 数据为前端 JSON，刷新页面后编辑结果丢失（内存态）。\n2. 导入、导出、外链跳转均为演示提示。\n3. 地图依赖外网 OpenStreetMap。\n\n---\n\n## 13. 验收要点\n\n- [ ] 筛选查询/重置与 KPI 叠加正确\n- [ ] 空值列显示空白\n- [ ] 人工运营城市可改，车机/GPS 不可改\n- [ ] 未上传/未购买可点击并提示跳转\n- [ ] 交还车有数据可点击、无数据不可点\n- [ ] 运维负责人、编辑弹窗保存后列表即时更新\n- [ ] 管理员「更多」菜单与权限开关联动\n- [ ] 右上角「查看需求说明」展示本文档（列表页 PRD）\n- [ ] 「PRD文档MD文件下载」可下载列表页、详情页两份 .md\n- [ ] 「下载测试用例」可下载含列表页/详情页 Sheet 的 Excel\n"
              },
              {
                "type": "markdown",
                "id": "vm-doc-prd-detail",
                "title": "详情页 PRD",
                "markdown": "# 车辆管理 · 详情页产品需求说明（PRD）\n\n> 本页为单车档案详情。标注「原型演示」的跨模块跳转仅 Toast 提示，不做真实路由。\n\n---\n\n## 1. 模块定位\n\n| 项 | 说明 |\n|---|---|\n| 模块名称 | 车辆管理 — 详情页（查看页） |\n| 入口 | 列表页点击车牌或「查看」 |\n| 核心任务 | 查看单车档案、证照、保险、租赁及各类业务记录，维护可编辑字段 |\n| 页面结构 | 顶栏返回 + 车辆概要 + 统计条 + Tab 内容区；右上角工具栏：「查看需求说明」「PRD文档MD文件下载」「下载测试用例」 |\n\n---\n\n## 2. 页面框架\n\n### 2.1 顶栏\n\n| 元素 | 行为 |\n|---|---|\n| 返回列表 | 回到列表页，保留列表筛选/KPI/分页状态 |\n| 查看需求说明 | 打开详情页 PRD（本文档） |\n| PRD文档MD文件下载 | 下载列表页、详情页两份 Markdown PRD |\n| 下载测试用例 | 下载 Excel，含列表页与详情页测试用例两个 Sheet |\n\n### 2.2 车辆概要区\n\n- 车牌号、品牌·型号、VIN\n- 在线状态（在线/离线圆点）\n- 运营城市文案、GPS 时间\n\n### 2.3 统计条（4 项）\n\n| 字段 | 可编辑 | 行为 |\n|---|---|---|\n| 运营城市 | 仅来源为「人工」时可改 | 点击 → 运营城市修改弹窗；展示车机/GPS/人工来源标签 |\n| 里程数 | 否 | 在线时展示车机标签 |\n| 停放区域 | 否 | 只读 |\n| 运维负责人 | 有运维权限时可改 | 点击铅笔图标 → 运维负责人弹窗 |\n\n---\n\n## 3. Tab 总览\n\n| 序号 | Tab | 说明 |\n|---|---|---|\n| 1 | 基本信息 | 档案、项目、证照摘要等，部分字段行内可编辑 |\n| 2 | 型号参数 | 车型参数与保养项目表 |\n| 3 | 证照信息 | 行驶证、营运证等分组展示与照片预览 |\n| 4 | 保险记录 | 险种概览卡片 + 采购历史表 |\n| 5 | 租赁记录 | 合同/交还车历史 |\n| 6 | 事故记录 | 筛选 + 事故列表 |\n| 7 | 故障记录 | 筛选 + 故障列表 |\n| 8 | 违章记录 | 筛选 + 违章列表 |\n| 9 | 异动记录 | 筛选 + 异动列表 |\n| 10 | 调拨记录 | 筛选 + 调拨列表 |\n| 11 | 年审记录 | 筛选 + 已完成年审历史（对齐年审管理历史列表） |\n\n各业务记录 Tab 通用规则：\n\n- 数据按当前车辆 `plateNo` 从对应 JSON 种子文件过滤\n- 筛选区：**查询**生效、**重置**清空，修改未查询不影响列表\n- 日期范围使用双月历弹层组件\n- 表格左对齐；金额/数字列使用等宽数字\n- 底栏：共 N 条 + 紧凑分页（默认 10 条/页）\n\n---\n\n## 4. 基本信息 Tab\n\n### 4.1 档案信息\n\n| 字段 | 可编辑 |\n|---|---|\n| 出厂年份 | 是（年份选择） |\n| 采购入库日期 | 是（日期选择） |\n| 运营状态、车辆来源、停车场等 | 只读展示 |\n\n保存后 Toast「车辆信息已更新」，写回内存台账。\n\n### 4.2 项目信息\n\n租赁/自营车辆展示项目名称、合同编码、客户名称；否则显示「无」。\n\n### 4.3 证照摘要\n\n- 检验有效期：展示到期日与剩余/过期标签\n- 未上传时可点击 → Toast 跳转证照管理编辑（原型演示）\n\n---\n\n## 5. 型号参数 Tab\n\n- 展示车辆型号技术参数（只读）\n- 保养项目表：养护项目、保养公里/时间周期、工时费、材料费、合计\n\n---\n\n## 6. 证照信息 Tab\n\n- 分组：行驶证、道路运输证、上海牌专项证件等（按车牌规则显隐）\n- 每证展示：证件号、有效期、余额（如有）、照片网格\n- 照片可点击全屏预览；证件状态色点图例\n- 数据来自 `utils/vehicleLicenses` 与车辆台账关联\n\n---\n\n## 7. 保险记录 Tab\n\n### 7.1 险种概览卡片\n\n交强险、商业险、承运人责任险等；点击切换下方历史表。\n\n- 未购买险种卡片可点击 → Toast 跳转保险采购（原型演示）\n- 展示状态 Tag 与到期剩余天数\n\n### 7.2 采购历史表\n\n| 列 | 说明 |\n|---|---|\n| 保险导入时间、操作人、类型、保单号 | 只读 |\n| 保险状态 | Tag |\n| 保险公司、付款时间、到期日期 | 只读 |\n| 保单文件 | 有附件时「预览」「下载」可点击 → Toast 演示 |\n\n---\n\n## 8. 租赁记录 Tab\n\n### 8.1 筛选\n\n合同编码、项目名称、客户名称、业务类型。\n\n### 8.2 表格与跳转\n\n| 列 | 可点击 | 跳转目标（原型 Toast） |\n|---|---|---|\n| 合同编码 | 是 | 租赁合同详情 |\n| 项目名称 | 有值时 | 租赁合同详情 |\n| 交车日期 | 有值时 | 交车管理详情 |\n| 还车日期 | 有值时 | 还车管理详情 |\n\n---\n\n## 9. 事故记录 Tab\n\n### 9.1 筛选\n\n事故时间（日期范围）、客户名称、事故等级、事故状态。\n\n### 9.2 表格\n\n| 列 | 可点击 | 跳转 |\n|---|---|---|\n| 事故编码 | 是 | 事故管理详情页 |\n| 其余列 | 否 | — |\n\n---\n\n## 10. 故障记录 Tab\n\n### 10.1 筛选\n\n上报时间（日期范围）、故障编号、故障等级、故障类型、解决情况、AI 匹配状态。\n\n### 10.2 表格\n\n| 列/操作 | 可点击 | 行为 |\n|---|---|---|\n| 故障编号 | 是 | Toast 跳转故障管理详情 |\n| 操作「查看」 | 是 | 同上 |\n| 操作「编辑」 | 是 | Toast 编辑故障记录演示 |\n\n---\n\n## 11. 违章记录 Tab\n\n### 11.1 筛选\n\n违法时间、客户名称、缴费状态、是否处理。\n\n### 11.2 表格\n\n| 列 | 可点击 | 跳转 |\n|---|---|---|\n| 违法行为 | 是 | 违章管理详情页（按违法时间标识） |\n| 其余列 | 否 | — |\n\n---\n\n## 12. 异动记录 Tab\n\n### 12.1 筛选\n\n异动开始日期、异动目的地、异动类型。\n\n### 12.2 表格\n\n宽表展示异动起止里程/电量/氢量等；**异动开始日期**可点击 → Toast 跳转异动管理详情。\n\n---\n\n## 13. 调拨记录 Tab\n\n### 13.1 筛选\n\n调拨日期、调出人、接收人。\n\n### 13.2 表格\n\n**调拨日期**可点击 → Toast 跳转车辆调拨详情。\n\n---\n\n## 14. 年审记录 Tab\n\n对齐「年审管理」历史列表字段（不含车牌/品牌/型号，因已在详情页上下文）。\n\n### 14.1 筛选\n\n| 字段 | 说明 |\n|---|---|\n| 完成时间 | 按办结日期范围 |\n| 检验有效期 | 按检验有效期至范围 |\n| 办理人 | 下拉选择 |\n\n### 14.2 表格列\n\n| 列 | 可点击 | 说明 |\n|---|---|---|\n| 检验有效期至 | **是** | Toast 跳转年审管理详情（原型演示） |\n| 检测服务站名称 | 否 | 无数据显示「—」 |\n| 检测费用 | 否 | 金额两位小数，无数据显示「—」 |\n| 二保服务站名称 | 否 | 同上 |\n| 二保费用 | 否 | 同上 |\n| 整备服务站名称 | 否 | 同上 |\n| 整备费用 | 否 | 同上 |\n| 办理人 | 否 | — |\n| 完成时间 | 否 | 办结时间，默认倒序 |\n\n### 14.3 数据\n\n- 来源：`data/annual-review-records.json`，按 `plateNo` 过滤\n- 样例车 `粤AGP5156` 含 3 条已完成年审记录\n\n---\n\n## 15. 跨模块跳转 Toast 汇总\n\n| 场景 | 文案模板 |\n|---|---|\n| 证照编辑 | 即将跳转至证照管理编辑页（原型演示）：{车牌} |\n| 保险采购 | 即将跳转至保险采购编辑页（原型演示）：{车牌} · {险种} |\n| 保单预览 | 预览保单文件（原型演示）：{文件名} |\n| 保单下载 | 已开始下载：{文件名}（原型演示） |\n| 租赁合同 | 即将跳转至租赁合同详情（原型演示）：{车牌} · {合同编码} |\n| 交车记录 | 即将跳转至交车管理详情（原型演示）：{车牌} · {合同} · {交车日期} |\n| 还车记录 | 即将跳转至还车管理详情（原型演示）：{车牌} · {合同} · {还车日期} |\n| 事故详情 | 即将跳转至事故管理详情页（原型演示）：{事故编码} |\n| 故障详情 | 即将跳转至故障管理详情页（原型演示）：{故障编号} |\n| 故障编辑 | 编辑故障记录（原型演示）：{车牌} · {故障编号} |\n| 违章详情 | 即将跳转至违章管理详情页（原型演示）：{违法时间} |\n| 异动详情 | 即将跳转至异动管理详情页（原型演示）：{异动开始日期} |\n| 调拨详情 | 即将跳转至车辆调拨详情页（原型演示）：{调拨日期} |\n| 年审详情 | 即将跳转至年审管理详情页（原型演示）：{检验有效期至} |\n| 字段保存 | 车辆信息已更新 / 运维负责人已更新 / 运营城市已更新 |\n\n---\n\n## 16. 原型局限\n\n1. 各业务记录为前端 JSON 种子，不与外部年审/事故等模块真实联动。\n2. 详情 Tab 间切换不保留各 Tab 内筛选/分页状态（刷新组件即重置）。\n3. 行内编辑与弹窗保存仅更新内存，刷新页面后丢失。\n\n---\n\n## 17. 验收要点\n\n- [ ] 返回列表保留列表态\n- [ ] 11 个 Tab 均可切换且内容正确\n- [ ] 各记录 Tab 筛选查询/重置/分页正常\n- [ ] 所有标注可点击字段触发对应 Toast\n- [ ] 年审记录含检测服务站/检测费用列，检验有效期至可点击\n- [ ] 右上角「查看需求说明」展示本文档（详情页 PRD），非列表页 PRD\n- [ ] 「PRD文档MD文件下载」「下载测试用例」在详情页可用且行为正确\n"
              }
            ]
          },
          {
            "type": "folder",
            "id": "vm-doc-list",
            "title": "列表页模块",
            "defaultExpanded": true,
            "children": [
              {
                "type": "route",
                "id": "vm-route-list",
                "title": "打开列表页",
                "route": "vehicle-management:list",
                "payload": {
                  "pageId": "list"
                }
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-doc-toolbar",
                "title": "测试用例下载",
                "markdown": "## 下载测试用例\n\n右上角工具栏，列表页与详情页均可用；下载含列表/详情两个 Sheet 的 Excel。"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-filter",
                "title": "筛选条件",
                "markdown": "## 4. 筛选区\n\n### 4.1 字段清单\n\n默认展示前 4 项，点击「展开更多筛选项」显示全部。\n\n| 字段 | 控件 | 选项来源 | 匹配规则 |\n|---|---|---|---|\n| 车牌号 | 多行弹层输入 | 用户输入 | 确认后精确匹配（归一化：去空格、大写） |\n| 运营城市 | 省-市级联多选 | 种子 + 停车场映射 + 台账 location | 与车辆运营城市（省-市格式）包含关系 |\n| 品牌/型号/客户/部门/项目/合同/所有权/运营公司/租赁公司/停车场 | 可搜索单选 | 当前台账去重排序 | 精确相等 |\n| 项目类型 | 可搜索单选 | 租赁、自营 | 与创建合同时合同类型相等 |\n| 运营状态 | 可搜索单选 | 租赁、自营、可运营、待运营、退出运营 | 精确相等 |\n| 车辆来源 | 可搜索单选 | 自有、外租、挂靠 | 精确相等 |\n\n### 4.2 操作逻辑\n\n| 操作 | 行为 |\n|---|---|\n| **查询** | 将当前筛选项写入「已应用条件」，列表与 KPI 计数基于全量台账；页码重置为 1 |\n| **重置** | 清空待应用与已应用条件，页码重置为 1 |\n| 修改筛选项未点查询 | 不影响当前列表 |\n\n筛选与 KPI Tab **叠加**：先按 KPI 分类过滤，再按筛选条件过滤。\n\n\n---\n\n### 原型实现补充\n\n- **区域**：华东 / 华南 / 华中 / 华北 / 东北 / 西南 / 西北；按运营城市所在省份映射过滤"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-kpi-all",
                "title": "所有营运车辆",
                "markdown": "## 当前卡片口径\n\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-kpi-lease",
                "title": "租赁车辆",
                "markdown": "## 当前卡片口径\n\n| 租赁车辆 | `operateStatus === '租赁'` |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-kpi-self",
                "title": "自营车辆",
                "markdown": "## 当前卡片口径\n\n| 自营车辆 | `operateStatus === '自营'` |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-kpi-stock",
                "title": "库存车辆",
                "markdown": "## 当前卡片口径\n\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-kpi-nonOperating",
                "title": "非运营车辆",
                "markdown": "## 当前卡片口径\n\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-kpi-exit",
                "title": "退出运营车辆",
                "markdown": "## 当前卡片口径\n\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-kpi-licenseAbnormal",
                "title": "证照异常车辆",
                "markdown": "## 当前卡片口径\n\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-kpi-insuranceAbnormal",
                "title": "保险异常车辆",
                "markdown": "## 当前卡片口径\n\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---\n\n## 5. KPI 分类卡片\n\n点击卡片切换列表分类，并回到第 1 页。卡片右上角「?」展示口径说明。\n\n| KPI | 统计口径 |\n|---|---|\n| 所有营运车辆 | 非「非运营车辆」且非「退出运营」 |\n| 租赁车辆 | `operateStatus === '租赁'` |\n| 自营车辆 | `operateStatus === '自营'` |\n| 库存车辆 | `operateStatus` 为「可运营」或「待运营」 |\n| 非运营车辆 | `vehicleLedgerType === '非运营车辆'` |\n| 退出运营车辆 | `operateStatus === '退出运营'` |\n| 证照异常车辆 | 检验有效期已过期（`inspectExpire` 早于今天） |\n| 保险异常车辆 | `insuranceStatus === '异常'` |\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-table-toolbar",
                "title": "导出与批量导入",
                "markdown": "## 6. 列表工具栏\n\n| 按钮 | 行为 |\n|---|---|\n| 导出 | Toast：`导出功能（原型演示）：当前列表共 N 条` |\n| 批量导入 | 打开导入弹窗 |\n\n### 6.1 批量导入弹窗\n\n1. 下载 CSV 模板（含必填字段说明行）\n2. 上传文件 → Toast：`已接收文件 {文件名}，导入校验为原型演示`\n\n原型不做真实校验与落库。\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-vehicle-table",
                "title": "台账列表",
                "markdown": "## 7. 列表字段说明\n\n### 7.1 车辆信息（冻结列）\n\n- 车牌：链接色，点击进入**车辆详情页**\n- VIN、品牌·型号：只读展示\n\n### 7.2 运营城市\n\n- 展示：省-市（由 `location` 解析）\n- 标签：车机 / GPS / 人工（来源 `operateCitySource` 或推导）\n- **可编辑**：仅来源为「人工」时可点击修改 → 运营城市修改弹窗\n- 车机/GPS 来源：不可改，hover 提示原因\n\n### 7.3 所属项目\n\n仅**租赁/自营**车辆展示项目名称、合同编码、客户名称；否则三行均为空。\n\n- 项目名称、合同编码：有值时可点击 → Toast 跳转合同详情（原型演示）\n\n### 7.4 里程数\n\n- 在线车辆：显示里程 + 「车机」标签，里程按车机数据格式化\n- 离线：仅里程或空\n\n### 7.5 证照 / 保险\n\n| 列 | 有数据 | 无数据/异常 |\n|---|---|---|\n| 检验有效期 | 到期日 + 剩余/已过期天数标签 | 「未上传」可点击 + 「禁止交车」标签 |\n| 保险状态 | 正常/异常 Tag；异常时 hover 展示具体到期险种 | — |\n| 交强险/商业险到期 | 到期日 + 剩余天数 | 「未购买」可点击 + 「禁止交车」 |\n\n未上传/未购买点击 → Toast 跳转证照管理或保险采购（原型演示）。\n\n### 7.6 上次交车 / 还车情况\n\n三行纯数值（无行内标题）：里程(km)、人员、时间(至分钟)。**有数据时**可点击。\n\n| 列 | 点击行为 |\n|---|---|\n| 上次交车情况 | Toast：`即将跳转至交车管理（原型演示）：{车牌}` |\n| 上次还车情况 | Toast：`即将跳转至还车管理（原型演示）：{车牌}` |\n\n### 7.7 三方租赁公司\n\n仅外租车辆显示 `leaseCompany`，否则空白。\n\n### 7.8 当前位置\n\n- 在线状态圆点 + 文案\n- 详细地址：有 GPS 坐标时可点击 → 地图弹窗（OpenStreetMap 嵌入）\n- GPS 时间：精确到秒\n\n### 7.9 运维负责人\n\n可编辑时显示为链接；无负责人显示「设置负责人」→ 运维负责人弹窗。\n\n### 7.10 操作列（冻结）\n\n| 操作 | 条件 | 行为 |\n|---|---|---|\n| 查看 | 始终 | 进入车辆详情页 |\n| 更多 | 管理员或有运维权限 | 下拉：编辑（管理员）、修改运维负责人 |\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-import-modal",
                "title": "批量导入",
                "markdown": "## 6. 列表工具栏\n\n| 按钮 | 行为 |\n|---|---|\n| 导出 | Toast：`导出功能（原型演示）：当前列表共 N 条` |\n| 批量导入 | 打开导入弹窗 |\n\n### 6.1 批量导入弹窗\n\n1. 下载 CSV 模板（含必填字段说明行）\n2. 上传文件 → Toast：`已接收文件 {文件名}，导入校验为原型演示`\n\n原型不做真实校验与落库。\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-edit-modal",
                "title": "编辑车辆",
                "markdown": "### 8.3 编辑车辆（管理员）\n\n- 可搜索选择器字段与筛选区一致规范\n- 保存时运营状态、车辆状态仍为必填（按钮禁用），但标签无红色 *\n- Toast「车辆信息已更新」"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-ops-modal",
                "title": "运维负责人",
                "markdown": "### 8.1 设置运维负责人\n\n- 标题下胶囊：车牌 | 运维区域（省-市）\n- 多选搜索选择器，候选人按车辆区域过滤\n- **保存**：写回 `opsManagers`，Toast「运维负责人已更新」\n- **取消**：不保存\n\n---\n\n### 原型实现补充\n\n- 详情页统计条改用内联编辑面板（非弹窗）"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-operate-city-modal",
                "title": "修改运营城市",
                "markdown": "### 8.2 修改运营城市\n\n- 省-市选择，保存后 `location` 更新且 `operateCitySource` 置为「人工」\n- Toast「运营城市已更新」\n\n---\n\n### 原型实现补充\n\n- 详情页统计条改用内联选择器（非弹窗）"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-location-map-modal",
                "title": "车辆定位地图",
                "markdown": "### 8.4 地图\n\n展示坐标点与 GPS 时间；关闭不保存。\n\n---"
              }
            ]
          },
          {
            "type": "folder",
            "id": "vm-doc-detail",
            "title": "详情页模块",
            "defaultExpanded": true,
            "children": [
              {
                "type": "route",
                "id": "vm-route-detail",
                "title": "打开详情页",
                "route": "vehicle-management:detail",
                "payload": {
                  "pageId": "detail"
                }
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-doc-toolbar",
                "title": "测试用例下载",
                "markdown": "## 下载测试用例\n\n右上角工具栏，列表页与详情页均可用；下载含列表/详情两个 Sheet 的 Excel。"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-detail-hero",
                "title": "车辆概要",
                "markdown": "### 2.1 顶栏\n\n| 元素 | 行为 |\n|---|---|\n| 返回列表 | 回到列表页，保留列表筛选/KPI/分页状态 |\n| 查看需求说明 | 打开详情页 PRD（本文档） |\n| PRD文档MD文件下载 | 下载列表页、详情页两份 Markdown PRD |\n| 下载测试用例 | 下载 Excel，含列表页与详情页测试用例两个 Sheet |\n\n---\n\n### 2.2 车辆概要区\n\n- 车牌号、品牌·型号、VIN\n- 在线状态（在线/离线圆点）\n- 运营城市文案、GPS 时间\n\n---\n\n### 原型实现补充\n\n- 顶栏仅保留「返回列表」与「下载测试用例」"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-detail-stats",
                "title": "统计条",
                "markdown": "### 2.3 统计条（4 项）\n\n| 字段 | 可编辑 | 行为 |\n|---|---|---|\n| 运营城市 | 仅来源为「人工」时可改 | 点击 → 运营城市修改弹窗；展示车机/GPS/人工来源标签 |\n| 里程数 | 否 | 在线时展示车机标签 |\n| 停放区域 | 否 | 只读 |\n| 运维负责人 | 有运维权限时可改 | 点击铅笔图标 → 运维负责人弹窗 |\n\n\n---\n\n### 原型实现补充\n\n- **运营城市**、**运维负责人**：详情页使用内联编辑面板（非弹窗）"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-detail-tabs",
                "title": "Tab 导航",
                "markdown": "## 3. Tab 总览\n\n| 序号 | Tab | 说明 |\n|---|---|---|\n| 1 | 基本信息 | 档案、项目、证照摘要等，部分字段行内可编辑 |\n| 2 | 型号参数 | 车型参数与保养项目表 |\n| 3 | 证照信息 | 行驶证、营运证等分组展示与照片预览 |\n| 4 | 保险记录 | 险种概览卡片 + 采购历史表 |\n| 5 | 租赁记录 | 合同/交还车历史 |\n| 6 | 事故记录 | 筛选 + 事故列表 |\n| 7 | 故障记录 | 筛选 + 故障列表 |\n| 8 | 违章记录 | 筛选 + 违章列表 |\n| 9 | 异动记录 | 筛选 + 异动列表 |\n| 10 | 调拨记录 | 筛选 + 调拨列表 |\n| 11 | 年审记录 | 筛选 + 已完成年审历史（对齐年审管理历史列表） |\n\n各业务记录 Tab 通用规则：\n\n- 数据按当前车辆 `plateNo` 从对应 JSON 种子文件过滤\n- 筛选区：**查询**生效、**重置**清空，修改未查询不影响列表\n- 日期范围使用双月历弹层组件\n- 表格左对齐；金额/数字列使用等宽数字\n- 底栏：共 N 条 + 紧凑分页（默认 10 条/页）\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-detail-tab-basic",
                "title": "基本信息 Tab",
                "markdown": "## 4. 基本信息 Tab\n\n### 4.1 档案信息\n\n| 字段 | 可编辑 |\n|---|---|\n| 出厂年份 | 是（年份选择） |\n| 采购入库日期 | 是（日期选择） |\n| 运营状态、车辆来源、停车场等 | 只读展示 |\n\n保存后 Toast「车辆信息已更新」，写回内存台账。\n\n### 4.2 项目信息\n\n租赁/自营车辆展示项目名称、合同编码、客户名称；否则显示「无」。\n\n### 4.3 证照摘要\n\n- 检验有效期：展示到期日与剩余/过期标签\n- 未上传时可点击 → Toast 跳转证照管理编辑（原型演示）\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-detail-tab-model",
                "title": "型号参数 Tab",
                "markdown": "## 5. 型号参数 Tab\n\n- 展示车辆型号技术参数（只读）\n- 保养项目表：养护项目、保养公里/时间周期、工时费、材料费、合计\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-detail-tab-license",
                "title": "证照信息 Tab",
                "markdown": "## 6. 证照信息 Tab\n\n- 分组：行驶证、道路运输证、上海牌专项证件等（按车牌规则显隐）\n- 每证展示：证件号、有效期、余额（如有）、照片网格\n- 照片可点击全屏预览；证件状态色点图例\n- 数据来自 `utils/vehicleLicenses` 与车辆台账关联\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-detail-tab-insurance",
                "title": "保险记录 Tab",
                "markdown": "## 7. 保险记录 Tab\n\n### 7.1 险种概览卡片\n\n交强险、商业险、承运人责任险等；点击切换下方历史表。\n\n- 未购买险种卡片可点击 → Toast 跳转保险采购（原型演示）\n- 展示状态 Tag 与到期剩余天数\n\n### 7.2 采购历史表\n\n| 列 | 说明 |\n|---|---|\n| 保险导入时间、操作人、类型、保单号 | 只读 |\n| 保险状态 | Tag |\n| 保险公司、付款时间、到期日期 | 只读 |\n| 保单文件 | 有附件时「预览」「下载」可点击 → Toast 演示 |\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-detail-tab-lease",
                "title": "租赁记录 Tab",
                "markdown": "## 8. 租赁记录 Tab\n\n### 8.1 筛选\n\n合同编码、项目名称、客户名称、业务类型。\n\n### 8.2 表格与跳转\n\n| 列 | 可点击 | 跳转目标（原型 Toast） |\n|---|---|---|\n| 合同编码 | 是 | 租赁合同详情 |\n| 项目名称 | 有值时 | 租赁合同详情 |\n| 交车日期 | 有值时 | 交车管理详情 |\n| 还车日期 | 有值时 | 还车管理详情 |\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-detail-tab-accident",
                "title": "事故记录 Tab",
                "markdown": "## 9. 事故记录 Tab\n\n### 9.1 筛选\n\n事故时间（日期范围）、客户名称、事故等级、事故状态。\n\n### 9.2 表格\n\n| 列 | 可点击 | 跳转 |\n|---|---|---|\n| 事故编码 | 是 | 事故管理详情页 |\n| 其余列 | 否 | — |\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-detail-tab-fault",
                "title": "故障记录 Tab",
                "markdown": "## 10. 故障记录 Tab\n\n### 10.1 筛选\n\n上报时间（日期范围）、故障编号、故障等级、故障类型、解决情况、AI 匹配状态。\n\n### 10.2 表格\n\n| 列/操作 | 可点击 | 行为 |\n|---|---|---|\n| 故障编号 | 是 | Toast 跳转故障管理详情 |\n| 操作「查看」 | 是 | 同上 |\n| 操作「编辑」 | 是 | Toast 编辑故障记录演示 |\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-detail-tab-violation",
                "title": "违章记录 Tab",
                "markdown": "## 11. 违章记录 Tab\n\n### 11.1 筛选\n\n违法时间、客户名称、缴费状态、是否处理。\n\n### 11.2 表格\n\n| 列 | 可点击 | 跳转 |\n|---|---|---|\n| 违法行为 | 是 | 违章管理详情页（按违法时间标识） |\n| 其余列 | 否 | — |\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-detail-tab-movement",
                "title": "异动记录 Tab",
                "markdown": "## 12. 异动记录 Tab\n\n### 12.1 筛选\n\n异动开始日期、异动目的地、异动类型。\n\n### 12.2 表格\n\n宽表展示异动起止里程/电量/氢量等；**异动开始日期**可点击 → Toast 跳转异动管理详情。\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-detail-tab-transfer",
                "title": "调拨记录 Tab",
                "markdown": "## 13. 调拨记录 Tab\n\n### 13.1 筛选\n\n调拨日期、调出人、接收人。\n\n### 13.2 表格\n\n**调拨日期**可点击 → Toast 跳转车辆调拨详情。\n\n---"
              },
              {
                "type": "markdown",
                "id": "vm-doc-node-vm-detail-tab-annual",
                "title": "年审记录 Tab",
                "markdown": "## 14. 年审记录 Tab\n\n对齐「年审管理」历史列表字段（不含车牌/品牌/型号，因已在详情页上下文）。\n\n### 14.1 筛选\n\n| 字段 | 说明 |\n|---|---|\n| 完成时间 | 按办结日期范围 |\n| 检验有效期 | 按检验有效期至范围 |\n| 办理人 | 下拉选择 |\n\n### 14.2 表格列\n\n| 列 | 可点击 | 说明 |\n|---|---|---|\n| 检验有效期至 | **是** | Toast 跳转年审管理详情（原型演示） |\n| 检测服务站名称 | 否 | 无数据显示「—」 |\n| 检测费用 | 否 | 金额两位小数，无数据显示「—」 |\n| 二保服务站名称 | 否 | 同上 |\n| 二保费用 | 否 | 同上 |\n| 整备服务站名称 | 否 | 同上 |\n| 整备费用 | 否 | 同上 |\n| 办理人 | 否 | — |\n| 完成时间 | 否 | 办结时间，默认倒序 |\n\n### 14.3 数据\n\n- 来源：`data/annual-review-records.json`，按 `plateNo` 过滤\n- 样例车 `粤AGP5156` 含 3 条已完成年审记录\n\n---"
              }
            ]
          }
        ]
      }
    ]
  }
}
