export type TestCaseType = '正向' | '逆向';
export type TestCasePriority = 'P0' | 'P1' | 'P2';

export interface VehicleTestCase {
  id: string;
  type: TestCaseType;
  module: string;
  name: string;
  precondition: string;
  steps: string;
  expected: string;
  priority: TestCasePriority;
}

export const LIST_PAGE_TEST_CASES: VehicleTestCase[] = [
  // 页面与文档
  {
    id: 'VM-L-001',
    type: '正向',
    module: '页面加载',
    name: '列表页默认加载',
    precondition: '进入车辆管理原型列表页',
    steps: '1. 打开车辆管理列表页\n2. 观察筛选区、KPI 卡片、表格与分页',
    expected: '页面正常渲染；默认 KPI 为「所有营运车辆」；表格展示第 1 页数据；分页默认 10 条/页',
    priority: 'P0',
  },
  {
    id: 'VM-L-002',
    type: '正向',
    module: '需求文档',
    name: '查看列表页需求说明',
    precondition: '位于列表页',
    steps: '1. 点击右上角「查看需求说明」\n2. 阅读弹窗内容\n3. 点击关闭',
    expected: '弹出列表页 PRD 弹窗；标题含「列表页」；关闭后回到列表',
    priority: 'P1',
  },
  {
    id: 'VM-L-003',
    type: '正向',
    module: '需求文档',
    name: '下载 PRD Markdown 文件',
    precondition: '位于列表页或详情页',
    steps: '1. 点击右上角「PRD文档MD文件下载」',
    expected: '浏览器依次下载「车辆管理-列表页PRD.md」「车辆管理-详情页PRD.md」；Toast 提示下载完成',
    priority: 'P1',
  },
  {
    id: 'VM-L-004',
    type: '正向',
    module: '测试用例',
    name: '下载测试用例 Excel',
    precondition: '位于列表页或详情页',
    steps: '1. 点击右上角「下载测试用例」',
    expected: '下载「车辆管理-测试用例.xlsx」；含「列表页测试用例」「详情页测试用例」两个 Sheet；Toast 提示下载完成',
    priority: 'P1',
  },
  // 筛选 - 正向
  {
    id: 'VM-L-010',
    type: '正向',
    module: '筛选区',
    name: '单条件查询-车牌号',
    precondition: '列表页有样例数据',
    steps: '1. 在车牌号输入「粤AGP5156」并确认\n2. 点击「查询」',
    expected: '列表仅展示匹配车牌；KPI 计数仍基于全量（不受筛选影响）',
    priority: 'P0',
  },
  {
    id: 'VM-L-011',
    type: '正向',
    module: '筛选区',
    name: '多条件组合查询',
    precondition: '列表页有样例数据',
    steps: '1. 展开更多筛选项\n2. 选择运营城市、运营状态等多项\n3. 点击「查询」',
    expected: '列表展示同时满足所有已应用条件的车辆；页码重置为 1',
    priority: 'P0',
  },
  {
    id: 'VM-L-012',
    type: '正向',
    module: '筛选区',
    name: '筛选未查询不生效',
    precondition: '列表已应用某筛选条件',
    steps: '1. 修改筛选项但不点查询\n2. 观察列表',
    expected: '列表仍展示上一次已应用条件的结果，不随未确认的修改变化',
    priority: 'P1',
  },
  {
    id: 'VM-L-013',
    type: '正向',
    module: '筛选区',
    name: '展开/收起更多筛选项',
    precondition: '位于列表页',
    steps: '1. 点击「展开更多筛选项」\n2. 再次点击收起',
    expected: '筛选项区域展开显示全部字段；收起后恢复默认展示前 4 项',
    priority: 'P2',
  },
  // 筛选 - 逆向
  {
    id: 'VM-L-020',
    type: '逆向',
    module: '筛选区',
    name: '重置筛选条件',
    precondition: '已应用若干筛选条件',
    steps: '1. 点击「重置」',
    expected: '待应用与已应用筛选均清空；列表恢复为当前 KPI 下全量；页码为 1',
    priority: 'P0',
  },
  {
    id: 'VM-L-021',
    type: '逆向',
    module: '筛选区',
    name: '查询无匹配结果',
    precondition: '位于列表页',
    steps: '1. 输入不存在的车牌号\n2. 点击「查询」',
    expected: '表格无数据行或展示空状态；分页总条数为 0',
    priority: 'P1',
  },
  {
    id: 'VM-L-022',
    type: '逆向',
    module: '筛选区',
    name: '车牌号大小写与空格归一化',
    precondition: '样例存在车牌「粤AGP5156」',
    steps: '1. 输入含空格或小写形式的车牌\n2. 查询',
    expected: '归一化后仍能精确匹配到对应车辆（若输入有效）',
    priority: 'P2',
  },
  // KPI
  {
    id: 'VM-L-030',
    type: '正向',
    module: 'KPI 卡片',
    name: '切换 KPI 分类',
    precondition: '位于列表页',
    steps: '1. 依次点击租赁车辆、自营车辆、库存车辆等 KPI 卡片',
    expected: '列表按对应口径过滤；当前卡片高亮；页码重置为 1',
    priority: 'P0',
  },
  {
    id: 'VM-L-031',
    type: '正向',
    module: 'KPI 卡片',
    name: 'KPI 与筛选叠加',
    precondition: '已应用筛选条件',
    steps: '1. 切换 KPI 卡片',
    expected: '列表为 KPI 过滤后再叠加筛选条件的结果',
    priority: 'P0',
  },
  {
    id: 'VM-L-032',
    type: '正向',
    module: 'KPI 卡片',
    name: '查看 KPI 口径说明',
    precondition: '位于列表页',
    steps: '1. 悬停或点击 KPI 卡片右上角「?」',
    expected: '展示该 KPI 统计口径说明',
    priority: 'P2',
  },
  {
    id: 'VM-L-033',
    type: '逆向',
    module: 'KPI 卡片',
    name: '证照/保险异常 KPI',
    precondition: '样例含异常车辆',
    steps: '1. 点击「证照异常车辆」「保险异常车辆」',
    expected: '列表仅展示检验过期或保险异常的车辆',
    priority: 'P1',
  },
  // 工具栏
  {
    id: 'VM-L-040',
    type: '正向',
    module: '工具栏',
    name: '导出演示',
    precondition: '列表有数据',
    steps: '1. 点击「导出」',
    expected: 'Toast：导出功能（原型演示）：当前列表共 N 条；不做真实文件下载',
    priority: 'P1',
  },
  {
    id: 'VM-L-041',
    type: '正向',
    module: '工具栏',
    name: '批量导入-下载模板',
    precondition: '位于列表页',
    steps: '1. 点击「批量导入」\n2. 点击下载模板',
    expected: '下载 CSV 模板文件；弹窗保持打开',
    priority: 'P1',
  },
  {
    id: 'VM-L-042',
    type: '正向',
    module: '工具栏',
    name: '批量导入-上传文件',
    precondition: '导入弹窗已打开',
    steps: '1. 选择任意 .csv/.xlsx 文件上传',
    expected: 'Toast 提示已接收文件（原型演示）；弹窗关闭',
    priority: 'P1',
  },
  {
    id: 'VM-L-043',
    type: '逆向',
    module: '工具栏',
    name: '批量导入-取消',
    precondition: '导入弹窗已打开',
    steps: '1. 点击取消或遮罩关闭',
    expected: '弹窗关闭；列表数据无变化',
    priority: 'P2',
  },
  // 表格-车辆信息
  {
    id: 'VM-L-050',
    type: '正向',
    module: '列表表格',
    name: '点击车牌进入详情',
    precondition: '列表有数据',
    steps: '1. 点击任意车牌链接',
    expected: '进入该车辆详情页；列表筛选/KPI/分页状态保留在内存',
    priority: 'P0',
  },
  {
    id: 'VM-L-051',
    type: '正向',
    module: '列表表格',
    name: '操作列-查看',
    precondition: '列表有数据',
    steps: '1. 点击操作列「查看」',
    expected: '进入对应车辆详情页',
    priority: 'P0',
  },
  {
    id: 'VM-L-052',
    type: '正向',
    module: '列表表格',
    name: '冻结列横向滚动',
    precondition: '列表列较多',
    steps: '1. 横向滚动表格',
    expected: '车辆信息列与操作列保持冻结；中间列可滚动',
    priority: 'P2',
  },
  // 运营城市
  {
    id: 'VM-L-060',
    type: '正向',
    module: '运营城市',
    name: '人工来源运营城市可修改',
    precondition: '车辆运营城市来源为「人工」',
    steps: '1. 点击运营城市链接\n2. 选择新省-市\n3. 保存',
    expected: 'Toast「运营城市已更新」；列表该字段更新；来源标签为「人工」',
    priority: 'P0',
  },
  {
    id: 'VM-L-061',
    type: '逆向',
    module: '运营城市',
    name: '车机/GPS 来源不可修改',
    precondition: '车辆来源为车机或 GPS',
    steps: '1. 尝试点击运营城市',
    expected: '不可点击或 hover 提示不可修改原因；不打开编辑弹窗',
    priority: 'P1',
  },
  {
    id: 'VM-L-062',
    type: '逆向',
    module: '运营城市',
    name: '运营城市修改-取消',
    precondition: '打开运营城市编辑弹窗',
    steps: '1. 修改选择但不保存\n2. 点击取消',
    expected: '弹窗关闭；列表运营城市不变',
    priority: 'P1',
  },
  // 所属项目
  {
    id: 'VM-L-070',
    type: '正向',
    module: '所属项目',
    name: '租赁/自营车辆展示项目三元组',
    precondition: '存在运营状态为租赁或自营的车辆',
    steps: '1. 查看所属项目列',
    expected: '展示项目名称、合同编码、客户名称',
    priority: 'P1',
  },
  {
    id: 'VM-L-071',
    type: '正向',
    module: '所属项目',
    name: '点击合同编码跳转演示',
    precondition: '车辆有合同编码',
    steps: '1. 点击合同编码或项目名称',
    expected: 'Toast 跳转合同详情（原型演示）',
    priority: 'P1',
  },
  {
    id: 'VM-L-072',
    type: '逆向',
    module: '所属项目',
    name: '非租赁/自营不展示项目',
    precondition: '车辆为库存/退出运营等',
    steps: '1. 查看所属项目列',
    expected: '三行均为空白',
    priority: 'P2',
  },
  // 证照保险
  {
    id: 'VM-L-080',
    type: '正向',
    module: '证照/保险',
    name: '检验有效期正常展示',
    precondition: '车辆已上传检验有效期且未过期',
    steps: '1. 查看检验有效期列',
    expected: '展示到期日与剩余天数标签',
    priority: 'P1',
  },
  {
    id: 'VM-L-081',
    type: '正向',
    module: '证照/保险',
    name: '未上传检验有效期点击跳转',
    precondition: '车辆检验未上传',
    steps: '1. 点击「未上传」',
    expected: '展示「禁止交车」标签；Toast 跳转证照管理（原型演示）',
    priority: 'P0',
  },
  {
    id: 'VM-L-082',
    type: '正向',
    module: '证照/保险',
    name: '保险未购买点击跳转',
    precondition: '车辆交强险或商业险未购买',
    steps: '1. 点击「未购买」',
    expected: '展示「禁止交车」；Toast 跳转保险采购（原型演示）',
    priority: 'P0',
  },
  {
    id: 'VM-L-083',
    type: '正向',
    module: '证照/保险',
    name: '保险异常 hover 说明',
    precondition: '车辆 insuranceStatus 为异常',
    steps: '1. 悬停保险状态 Tag',
    expected: '展示具体到期险种说明',
    priority: 'P2',
  },
  // 交还车
  {
    id: 'VM-L-090',
    type: '正向',
    module: '交还车',
    name: '上次交车情况可点击',
    precondition: '车辆有交车记录数据',
    steps: '1. 点击上次交车情况区域',
    expected: 'Toast 跳转交车管理（原型演示）',
    priority: 'P1',
  },
  {
    id: 'VM-L-091',
    type: '正向',
    module: '交还车',
    name: '上次还车情况可点击',
    precondition: '车辆有还车记录数据',
    steps: '1. 点击上次还车情况区域',
    expected: 'Toast 跳转还车管理（原型演示）',
    priority: 'P1',
  },
  {
    id: 'VM-L-092',
    type: '逆向',
    module: '交还车',
    name: '无交还车数据不可点击',
    precondition: '车辆无交/还车数据',
    steps: '1. 查看交还车列',
    expected: '展示为空或不可点击样式；无 Toast',
    priority: 'P2',
  },
  // 位置与运维
  {
    id: 'VM-L-100',
    type: '正向',
    module: '当前位置',
    name: '点击地址打开地图',
    precondition: '车辆在线且有 GPS 坐标',
    steps: '1. 点击详细地址',
    expected: '打开地图弹窗展示坐标与 GPS 时间',
    priority: 'P1',
  },
  {
    id: 'VM-L-101',
    type: '逆向',
    module: '当前位置',
    name: '关闭地图弹窗',
    precondition: '地图弹窗已打开',
    steps: '1. 点击关闭',
    expected: '弹窗关闭；无数据写回',
    priority: 'P2',
  },
  {
    id: 'VM-L-102',
    type: '正向',
    module: '运维负责人',
    name: '设置运维负责人',
    precondition: '车辆无负责人或需修改',
    steps: '1. 点击负责人或「设置负责人」\n2. 多选人员\n3. 保存',
    expected: 'Toast「运维负责人已更新」；列表展示新负责人',
    priority: 'P0',
  },
  {
    id: 'VM-L-103',
    type: '逆向',
    module: '运维负责人',
    name: '运维负责人弹窗取消',
    precondition: '弹窗已打开',
    steps: '1. 修改选择后取消',
    expected: '不保存；列表负责人不变',
    priority: 'P1',
  },
  // 操作列
  {
    id: 'VM-L-110',
    type: '正向',
    module: '操作列',
    name: '更多菜单-编辑车辆',
    precondition: '管理员权限开启',
    steps: '1. 点击「更多」\n2. 选择「编辑」\n3. 修改字段并保存',
    expected: 'Toast「车辆信息已更新」；列表对应字段更新',
    priority: 'P0',
  },
  {
    id: 'VM-L-111',
    type: '正向',
    module: '操作列',
    name: '更多菜单-修改运维负责人',
    precondition: '有运维权限',
    steps: '1. 更多 → 修改运维负责人\n2. 保存',
    expected: '与直接点击负责人列行为一致',
    priority: 'P1',
  },
  {
    id: 'VM-L-112',
    type: '逆向',
    module: '操作列',
    name: '编辑车辆-取消',
    precondition: '编辑弹窗已打开',
    steps: '1. 修改后点击取消',
    expected: '不保存修改',
    priority: 'P1',
  },
  {
    id: 'VM-L-113',
    type: '逆向',
    module: '操作列',
    name: '编辑车辆必填校验',
    precondition: '编辑弹窗已打开',
    steps: '1. 清空运营状态或车辆状态\n2. 尝试保存',
    expected: '保存按钮禁用或无法提交',
    priority: 'P1',
  },
  // 分页
  {
    id: 'VM-L-120',
    type: '正向',
    module: '分页',
    name: '翻页',
    precondition: '筛选结果超过 1 页',
    steps: '1. 点击下一页',
    expected: '展示下一页数据；页码更新',
    priority: 'P0',
  },
  {
    id: 'VM-L-121',
    type: '正向',
    module: '分页',
    name: '切换每页条数',
    precondition: '列表有数据',
    steps: '1. 将每页条数改为 20',
    expected: '每页展示 20 条；页码重置为 1',
    priority: 'P1',
  },
  {
    id: 'VM-L-122',
    type: '逆向',
    module: '分页',
    name: '仅一页时翻页控件',
    precondition: '筛选结果 ≤ 每页条数',
    steps: '1. 观察分页',
    expected: '总页数为 1；不可翻到无效页',
    priority: 'P2',
  },
  // 三方租赁
  {
    id: 'VM-L-130',
    type: '正向',
    module: '三方租赁公司',
    name: '外租车辆展示租赁公司',
    precondition: 'vehicleSource 为外租',
    steps: '1. 查看三方租赁公司列',
    expected: '展示 leaseCompany',
    priority: 'P2',
  },
  {
    id: 'VM-L-131',
    type: '逆向',
    module: '三方租赁公司',
    name: '非外租车辆不展示',
    precondition: 'vehicleSource 非外租',
    steps: '1. 查看该列',
    expected: '单元格空白',
    priority: 'P2',
  },
  // 里程
  {
    id: 'VM-L-140',
    type: '正向',
    module: '里程数',
    name: '在线车辆展示车机标签',
    precondition: '车辆 onlineStatus 为在线',
    steps: '1. 查看里程数列',
    expected: '展示格式化里程 + 「车机」标签',
    priority: 'P2',
  },
  {
    id: 'VM-L-141',
    type: '逆向',
    module: '里程数',
    name: '离线车辆里程展示',
    precondition: '车辆离线',
    steps: '1. 查看里程数列',
    expected: '无车机标签；展示里程或空',
    priority: 'P2',
  },
];

export const DETAIL_PAGE_TEST_CASES: VehicleTestCase[] = [
  // 框架
  {
    id: 'VM-D-001',
    type: '正向',
    module: '页面框架',
    name: '详情页默认加载',
    precondition: '从列表进入任意车辆详情',
    steps: '1. 点击列表车牌进入详情\n2. 观察顶栏、概要区、统计条、Tab',
    expected: '展示正确车牌/品牌/VIN；默认 Tab 为「基本信息」；在线状态正确',
    priority: 'P0',
  },
  {
    id: 'VM-D-002',
    type: '正向',
    module: '页面框架',
    name: '返回列表保留状态',
    precondition: '列表已设置筛选/KPI/分页后进入详情',
    steps: '1. 点击「返回列表」',
    expected: '回到列表页；筛选、KPI、页码与进入前一致',
    priority: 'P0',
  },
  {
    id: 'VM-D-003',
    type: '正向',
    module: '需求文档',
    name: '查看详情页需求说明',
    precondition: '位于详情页',
    steps: '1. 点击「查看需求说明」',
    expected: '弹出详情页 PRD；内容含 11 个 Tab 说明',
    priority: 'P1',
  },
  {
    id: 'VM-D-004',
    type: '正向',
    module: 'Tab 切换',
    name: '切换全部 Tab',
    precondition: '位于详情页',
    steps: '1. 依次点击 11 个 Tab',
    expected: '每个 Tab 内容正确加载；当前 Tab 高亮',
    priority: 'P0',
  },
  // 统计条
  {
    id: 'VM-D-010',
    type: '正向',
    module: '统计条',
    name: '修改运营城市',
    precondition: '车辆运营城市来源为人工',
    steps: '1. 点击运营城市或铅笔图标\n2. 保存新城市',
    expected: 'Toast「运营城市已更新」；统计条与基本信息同步',
    priority: 'P0',
  },
  {
    id: 'VM-D-011',
    type: '正向',
    module: '统计条',
    name: '修改运维负责人',
    precondition: '有运维编辑权限',
    steps: '1. 点击运维负责人铅笔图标\n2. 保存',
    expected: '负责人更新；Toast 提示',
    priority: 'P0',
  },
  {
    id: 'VM-D-012',
    type: '逆向',
    module: '统计条',
    name: '里程数/停放区域只读',
    precondition: '位于详情页',
    steps: '1. 尝试点击里程数、停放区域',
    expected: '无编辑入口；数据只读展示',
    priority: 'P2',
  },
  // 基本信息
  {
    id: 'VM-D-020',
    type: '正向',
    module: '基本信息',
    name: '行内编辑出厂年份',
    precondition: 'Tab=基本信息',
    steps: '1. 点击出厂年份编辑\n2. 选择新年份并保存',
    expected: 'Toast「车辆信息已更新」；字段展示新值',
    priority: 'P1',
  },
  {
    id: 'VM-D-021',
    type: '正向',
    module: '基本信息',
    name: '行内编辑采购入库日期',
    precondition: 'Tab=基本信息',
    steps: '1. 编辑采购入库日期并保存',
    expected: '日期更新成功',
    priority: 'P1',
  },
  {
    id: 'VM-D-022',
    type: '正向',
    module: '基本信息',
    name: '检验未上传跳转证照',
    precondition: '车辆检验未上传',
    steps: '1. 点击检验有效期相关跳转入口',
    expected: 'Toast 跳转证照管理编辑（原型演示）',
    priority: 'P1',
  },
  {
    id: 'VM-D-023',
    type: '逆向',
    module: '基本信息',
    name: '行内编辑取消',
    precondition: '进入某字段编辑态',
    steps: '1. 修改后不确认/按 Esc 取消',
    expected: '字段保持原值',
    priority: 'P2',
  },
  // 型号参数
  {
    id: 'VM-D-030',
    type: '正向',
    module: '型号参数',
    name: '查看型号参数与保养表',
    precondition: 'Tab=型号参数',
    steps: '1. 浏览参数区与保养项目表',
    expected: '参数只读展示；保养表含周期与费用列',
    priority: 'P1',
  },
  // 证照信息
  {
    id: 'VM-D-040',
    type: '正向',
    module: '证照信息',
    name: '查看证件分组与状态图例',
    precondition: 'Tab=证照信息',
    steps: '1. 查看行驶证、道路运输证等分组\n2. 查看状态色点图例',
    expected: '证件按规则分组展示；图例说明可见',
    priority: 'P1',
  },
  {
    id: 'VM-D-041',
    type: '正向',
    module: '证照信息',
    name: '预览证件照片',
    precondition: '某证件已上传照片',
    steps: '1. 点击照片缩略图',
    expected: '全屏预览；Esc 或关闭按钮可退出',
    priority: 'P1',
  },
  {
    id: 'VM-D-042',
    type: '逆向',
    module: '证照信息',
    name: '未上传照片展示',
    precondition: '某证件无照片',
    steps: '1. 查看照片区域',
    expected: '展示「未上传」',
    priority: 'P2',
  },
  {
    id: 'VM-D-043',
    type: '正向',
    module: '证照信息',
    name: '沪牌专项证件显隐',
    precondition: '分别查看沪牌与非沪牌车辆',
    steps: '1. 对比证照 Tab 字段',
    expected: '沪牌车辆展示专项字段；非沪牌隐藏',
    priority: 'P2',
  },
  // 保险记录
  {
    id: 'VM-D-050',
    type: '正向',
    module: '保险记录',
    name: '切换险种卡片',
    precondition: 'Tab=保险记录',
    steps: '1. 点击交强险/商业险等卡片',
    expected: '下方历史表切换为对应险种；卡片高亮',
    priority: 'P0',
  },
  {
    id: 'VM-D-051',
    type: '正向',
    module: '保险记录',
    name: '未购买险种跳转采购',
    precondition: '某险种未购买',
    steps: '1. 点击该险种卡片',
    expected: 'Toast 跳转保险采购（原型演示）',
    priority: 'P1',
  },
  {
    id: 'VM-D-052',
    type: '正向',
    module: '保险记录',
    name: '保单文件预览与下载',
    precondition: '历史记录有保单附件',
    steps: '1. 点击「预览」\n2. 点击「下载」',
    expected: '分别 Toast 预览/下载演示文案',
    priority: 'P1',
  },
  {
    id: 'VM-D-053',
    type: '逆向',
    module: '保险记录',
    name: '无保单附件',
    precondition: '历史记录 policyFileName 为空',
    steps: '1. 查看保单文件列',
    expected: '展示「无附件」；不可点击',
    priority: 'P2',
  },
  // 租赁记录
  {
    id: 'VM-D-060',
    type: '正向',
    module: '租赁记录',
    name: '筛选查询租赁记录',
    precondition: 'Tab=租赁记录；样例车有租赁数据',
    steps: '1. 设置合同/项目等筛选\n2. 查询',
    expected: '表格按条件过滤；底栏总条数更新',
    priority: 'P0',
  },
  {
    id: 'VM-D-061',
    type: '正向',
    module: '租赁记录',
    name: '点击合同编码跳转',
    precondition: '有合同编码数据',
    steps: '1. 点击合同编码',
    expected: 'Toast 跳转租赁合同详情（原型演示）',
    priority: 'P1',
  },
  {
    id: 'VM-D-062',
    type: '正向',
    module: '租赁记录',
    name: '点击项目名称跳转',
    precondition: '项目名称可链接',
    steps: '1. 点击项目名称',
    expected: 'Toast 跳转租赁合同详情',
    priority: 'P1',
  },
  {
    id: 'VM-D-063',
    type: '正向',
    module: '租赁记录',
    name: '点击交车/还车日期',
    precondition: '有交还车日期',
    steps: '1. 点击交车日期\n2. 点击还车日期',
    expected: '分别 Toast 跳转交车/还车管理详情',
    priority: 'P1',
  },
  {
    id: 'VM-D-064',
    type: '逆向',
    module: '租赁记录',
    name: '租赁筛选重置',
    precondition: '已应用筛选',
    steps: '1. 点击重置',
    expected: '筛选清空；展示全部该车租赁记录',
    priority: 'P1',
  },
  // 事故记录
  {
    id: 'VM-D-070',
    type: '正向',
    module: '事故记录',
    name: '事故记录筛选与分页',
    precondition: 'Tab=事故记录；样例车粤AGP5156',
    steps: '1. 设置事故时间范围、等级等\n2. 查询\n3. 翻页',
    expected: '列表正确过滤；分页正常',
    priority: 'P0',
  },
  {
    id: 'VM-D-071',
    type: '正向',
    module: '事故记录',
    name: '点击事故编码跳转',
    precondition: '有事故记录',
    steps: '1. 点击事故编码链接',
    expected: 'Toast：即将跳转至事故管理详情页（原型演示）：{编码}',
    priority: 'P0',
  },
  {
    id: 'VM-D-072',
    type: '逆向',
    module: '事故记录',
    name: '无事故数据空状态',
    precondition: '车辆无事故种子数据',
    steps: '1. 打开事故记录 Tab',
    expected: '表格展示「暂无数据」',
    priority: 'P2',
  },
  // 故障记录
  {
    id: 'VM-D-080',
    type: '正向',
    module: '故障记录',
    name: '故障记录筛选',
    precondition: 'Tab=故障记录',
    steps: '1. 按上报时间、故障编号等筛选\n2. 查询',
    expected: '列表按条件更新',
    priority: 'P0',
  },
  {
    id: 'VM-D-081',
    type: '正向',
    module: '故障记录',
    name: '点击故障编号查看',
    precondition: '有故障记录',
    steps: '1. 点击故障编号或操作「查看」',
    expected: 'Toast 跳转故障管理详情',
    priority: 'P0',
  },
  {
    id: 'VM-D-082',
    type: '正向',
    module: '故障记录',
    name: '编辑故障记录演示',
    precondition: '有故障记录',
    steps: '1. 点击操作「编辑」',
    expected: 'Toast 编辑故障记录（原型演示）',
    priority: 'P1',
  },
  // 违章记录
  {
    id: 'VM-D-090',
    type: '正向',
    module: '违章记录',
    name: '违章日期范围筛选',
    precondition: 'Tab=违章记录',
    steps: '1. 使用双月历选择违法时间范围\n2. 查询',
    expected: '日期范围筛选生效',
    priority: 'P0',
  },
  {
    id: 'VM-D-091',
    type: '正向',
    module: '违章记录',
    name: '点击违法行为跳转',
    precondition: '有违章记录',
    steps: '1. 点击违法行为文本链接',
    expected: 'Toast 跳转违章管理详情（按违法时间标识）',
    priority: 'P0',
  },
  {
    id: 'VM-D-092',
    type: '正向',
    module: '违章记录',
    name: '缴费/处理状态 Tag 展示',
    precondition: '有违章数据',
    steps: '1. 查看缴费状态、是否处理列',
    expected: 'StatusTag 颜色与文案符合数据',
    priority: 'P2',
  },
  // 异动记录
  {
    id: 'VM-D-100',
    type: '正向',
    module: '异动记录',
    name: '异动记录宽表展示',
    precondition: 'Tab=异动记录',
    steps: '1. 横向滚动表格\n2. 查看里程/电量/氢量等列',
    expected: '宽表可横向滚动；数字列等宽数字格式',
    priority: 'P1',
  },
  {
    id: 'VM-D-101',
    type: '正向',
    module: '异动记录',
    name: '点击异动开始日期跳转',
    precondition: '有异动记录',
    steps: '1. 点击异动开始日期链接',
    expected: 'Toast 跳转异动管理详情',
    priority: 'P0',
  },
  {
    id: 'VM-D-102',
    type: '正向',
    module: '异动记录',
    name: '异动筛选-目的地与类型',
    precondition: 'Tab=异动记录',
    steps: '1. 选择异动目的地、异动类型\n2. 查询',
    expected: '列表按条件过滤',
    priority: 'P1',
  },
  // 调拨记录
  {
    id: 'VM-D-110',
    type: '正向',
    module: '调拨记录',
    name: '调拨记录筛选',
    precondition: 'Tab=调拨记录',
    steps: '1. 设置调拨日期、调出人、接收人\n2. 查询',
    expected: '列表正确过滤',
    priority: 'P0',
  },
  {
    id: 'VM-D-111',
    type: '正向',
    module: '调拨记录',
    name: '点击调拨日期跳转',
    precondition: '有调拨记录',
    steps: '1. 点击调拨日期链接',
    expected: 'Toast 跳转车辆调拨详情',
    priority: 'P0',
  },
  {
    id: 'VM-D-112',
    type: '逆向',
    module: '调拨记录',
    name: '停车场字段空值',
    precondition: 'departureParking 等为空',
    steps: '1. 查看停车场列',
    expected: '展示「—」',
    priority: 'P2',
  },
  // 年审记录
  {
    id: 'VM-D-120',
    type: '正向',
    module: '年审记录',
    name: '年审记录默认列表',
    precondition: 'Tab=年审记录；车辆粤AGP5156',
    steps: '1. 打开年审记录 Tab',
    expected: '展示 3 条已完成年审；含检测/二保/整备列；按完成时间倒序',
    priority: 'P0',
  },
  {
    id: 'VM-D-121',
    type: '正向',
    module: '年审记录',
    name: '点击检验有效期至跳转',
    precondition: '有年审记录',
    steps: '1. 点击检验有效期至链接',
    expected: 'Toast：即将跳转至年审管理详情页（原型演示）：{日期}',
    priority: 'P0',
  },
  {
    id: 'VM-D-122',
    type: '正向',
    module: '年审记录',
    name: '年审筛选-完成时间与有效期',
    precondition: 'Tab=年审记录',
    steps: '1. 设置完成时间范围\n2. 设置检验有效期范围\n3. 选择办理人\n4. 查询',
    expected: '多条件叠加过滤正确',
    priority: 'P0',
  },
  {
    id: 'VM-D-123',
    type: '正向',
    module: '年审记录',
    name: '检测/二保/整备费用格式',
    precondition: '有费用数据',
    steps: '1. 查看检测费用、二保费用、整备费用列',
    expected: '金额两位小数；无数据为「—」',
    priority: 'P1',
  },
  {
    id: 'VM-D-124',
    type: '逆向',
    module: '年审记录',
    name: '年审筛选无结果',
    precondition: 'Tab=年审记录',
    steps: '1. 设置不可能匹配的日期范围\n2. 查询',
    expected: '展示「暂无数据」；总条数 0',
    priority: 'P1',
  },
  {
    id: 'VM-D-125',
    type: '逆向',
    module: '年审记录',
    name: '无年审数据车辆',
    precondition: '车辆 plateNo 无年审种子',
    steps: '1. 打开年审记录 Tab',
    expected: '表格空状态',
    priority: 'P2',
  },
  // 通用 Tab 筛选逆向
  {
    id: 'VM-D-130',
    type: '逆向',
    module: '业务记录 Tab 通用',
    name: '各 Tab 筛选未查询不生效',
    precondition: '任意带筛选的业务 Tab',
    steps: '1. 修改筛选项不点查询\n2. 观察表格',
    expected: '表格仍为上次已应用筛选结果',
    priority: 'P1',
  },
  {
    id: 'VM-D-131',
    type: '逆向',
    module: '业务记录 Tab 通用',
    name: '各 Tab 重置筛选',
    precondition: '已应用筛选',
    steps: '1. 点击重置',
    expected: '筛选清空；页码回 1；展示全量该车记录',
    priority: 'P1',
  },
  {
    id: 'VM-D-132',
    type: '正向',
    module: '业务记录 Tab 通用',
    name: '紧凑分页切换每页条数',
    precondition: '某 Tab 记录超过 10 条或调小页大小',
    steps: '1. 修改每页条数\n2. 翻页',
    expected: '底栏紧凑分页正常工作',
    priority: 'P2',
  },
  // 弹窗在详情页复用
  {
    id: 'VM-D-140',
    type: '正向',
    module: '详情页弹窗',
    name: '详情页修改运维负责人',
    precondition: '在详情页打开运维负责人弹窗',
    steps: '1. 修改并保存',
    expected: '详情统计条更新；返回列表后列表同步',
    priority: 'P1',
  },
  {
    id: 'VM-D-141',
    type: '正向',
    module: '详情页弹窗',
    name: '详情页修改运营城市',
    precondition: '人工来源车辆',
    steps: '1. 在详情页修改运营城市',
    expected: '详情与列表数据一致更新',
    priority: 'P1',
  },
  // Toast
  {
    id: 'VM-D-150',
    type: '正向',
    module: 'Toast',
    name: 'Toast 自动消失',
    precondition: '任意触发 Toast 的操作',
    steps: '1. 触发跳转类 Toast\n2. 等待约 3 秒',
    expected: 'Toast 自动消失',
    priority: 'P2',
  },
  // 文档下载在详情页
  {
    id: 'VM-D-160',
    type: '正向',
    module: '需求文档',
    name: '详情页下载 PRD 与测试用例',
    precondition: '位于详情页',
    steps: '1. 点击 PRD 下载\n2. 点击测试用例下载',
    expected: '与列表页下载行为一致；Toast 提示成功',
    priority: 'P1',
  },
];
