画布 1
安徽运八需求
  上报运单看板
    tc-P1-功能测试：多条件组合查询（运单号模糊+上报阶段+核验状态+申诉状态）
      pc：1.已登录超管账号 2.系统存在多条不同状态的上报运单
      测试数据：运单号部分字符、筛选条件组合
      步骤：1.进入看板 2.输入运单号部分字符 3.选上报阶段=第一次上报 4.选核验状态=通过 5.选申诉状态=未申诉 6.点查询
        预期：UI:列表仅展示满足所有条件的运单，筛选条件保持选中。数据:后端返回结果AND匹配所有条件
    tc-P2-功能测试：重置按钮清空所有查询条件
      pc：已设置任意查询条件
      测试数据：任意筛选条件
      步骤：1.设置多个筛选条件 2.点重置按钮
        预期：UI:所有条件恢复默认，列表刷新为全量数据。数据:查询接口参数为空或默认值
    tc-P2-功能测试：查询结果为空时显示友好提示
      pc：已登录
      测试数据：运单号=NOTEXIST999999
      步骤：1.输入不存在的运单号 2.点查询
        预期：UI:显示空状态提示图标+文案，不显示空白表格或报错。数据:接口返回空数组，HTTP 200
    tc-P1-功能测试：列表字段完整性与异常项差异化展示
      pc：1.存在核验通过运单 2.存在核验异常运单
      测试数据：核验通过运单、核验异常运单
      步骤：1.进入看板 2.查看表头 3.对比两种状态运单行
        预期：UI:表头含14个字段；通过行异常项为空；异常行异常项显示具体原因；合同金额千分位+2位小数。数据:接口字段与UI一一对应
      备注：合TP-DB-011, TP-DB-015
    tc-P2-功能测试：导出Excel内容与筛选结果一致
      pc：已设置筛选条件使结果集约50条
      测试数据：50条筛选结果
      步骤：1.设置筛选条件 2.点导出 3.下载并打开Excel
        预期：UI:导出按钮可点击，下载Excel包含所有列表字段。数据:Excel行数=筛选结果数，字段顺序一致，金额为数字格式
    tc-P2-安全性测试：特殊字符输入安全性（SQL注入/HTML/Emoji）
      pc：已登录
      测试数据：SQL注入字符串、XSS字符串、Emoji表情
      步骤：1.输入`' OR '1'='1`点查询 2.输入`<script>alert(1)</script>`点查询 3.输入Emoji点查询
        预期：UI:不报错不弹窗不异常页面。数据:后端返回空结果或正确转义，HTTP 200，无注入生效
  第一次上报
    tc-P0-功能测试：装货完成后系统自动触发第一次上报（全字段完整性）
      pc：1.运单已接单 2.车辆/司机/货物/托运方/收货方信息完整 3.司机完成装货确认
      测试数据：完整运单数据（建单13+托运人7+收货方5+司机13+车辆19+货物+保险字段）
      步骤：1.司机APP端确认装货完成 2.回管理端查看上报状态
        预期：UI:列表出现该运单，状态:上传中(蓝)→已上传(绿)；看板显示"第一次上报"。数据:上报接口被调用，请求体含完整子对象，HTTP 200，数据库状态更新
    tc-P1-功能测试：必选字段缺失（从业资格证号）→上报异常
      pc：司机从业资格证号为空
      测试数据：司机信息缺失从业资格证号
      步骤：1.触发装货完成上报 2.查看上报结果
        预期：UI:状态=异常(橙)，操作列显示详情按钮；详情中异常原因含"从业资格证号缺失"。数据:接口返回校验失败，数据库记录状态=异常+异常原因
    tc-P1-功能测试：可选字段为空（委托合同编号/运输里程/保险信息）→上报正常
      pc：必选字段完整，可选字段均为空
      测试数据：可选字段均为空的运单
      步骤：1.触发装货完成上报 2.查看结果
        预期：UI:状态正常流转为"已上传"(绿)。数据:请求体可选字段值为null/空字符串，接口返回成功
    tc-P2-功能测试：货物信息多条记录(≥2条)上报
      pc：运单包含3条货物信息（钢材/木板/配件）
      测试数据：3条货物数据
      步骤：1.触发上报 2.查看详情弹窗货物信息区
        预期：UI:详情弹窗展示3条货物记录各含4字段。数据:请求体goodsInfos数组length=3，接口成功
    tc-P0-功能测试：核验通过后自动调用"修改第一次上报部分字段"更新实际里程
      pc：1.第一次上报已触发 2.装货后实际里程变化(预估500→实际520km)
      测试数据：预估里程=500km, 实际里程=520km
      步骤：1.上报成功核验通过 2.观察自动更新 3.查看运单里程字段
        预期：UI:无人工干预下运单里程自动更新为520km；操作日志有"自动更新第一次上报字段"记录。数据:修改接口被调用，mileage=520，数据库运单里程更新
    tc-P1-功能测试：上报失败→自动重试3次→站内信通知运营人员
      pc：模拟安徽运八接口不可用(超时或500)
      测试数据：接口超时异常
      步骤：1.触发上报 2.等待重试周期 3.观察最终结果 4.检查站内信
        预期：UI:状态流转:上传中→上传失败(红标签)，出现"手动上传"按钮；运营收到站内信含运单号和失败原因。数据:接口调用4次(首+3重试)，重试间隔递增；站内信表新增通知记录
    tc-P1-功能测试：重试中手动触发上报→幂等性校验
      pc：上报失败正处自动重试中
      测试数据：重试中的运单
      步骤：1.运单重试中 2.运营点"手动上传"
        预期：UI:提示"上报处理中请勿重复操作"或排队等待；不出现两条上报记录。数据:同一运单在安徽运八平台仅一条记录
    tc-P0-功能测试：第一次上报失败阻断后续第二、三次上报
      pc：运单第一次上报失败(3次重试全败)
      测试数据：第一次上报失败的运单
      步骤：1.确认第一次上报失败 2.尝试触发第二次上报 3.尝试触发第三次上报
        预期：UI:第二次上报按钮不可见/置灰提示"请先完成第一次上报"；第三次同样阻断。数据:第二/三次接口调用被前置校验拦截，日志无记录
    tc-P1-功能测试：详情弹窗8组字段分组展示与数据一致性
      pc：存在已完成的第一次上报运单
      测试数据：完整上报数据
      步骤：1.点详情 2.逐一查看建单/托运人/收货方/司机/车辆/货物/保险/异常分组 3.与运单管理模块核对
        预期：UI:弹窗按8组展示，分组标题明确；无异常时显示"无异常"；保险为空显示"-"。数据:弹窗字段值与上报请求体一致，与运单管理模块一致
    tc-P2-功能测试：4种状态标签颜色验证
      pc：准备4个运单分别处于上传中/已上传/上传失败/异常状态
      测试数据：4种状态的运单
      步骤：1.进入列表 2.观察4条运单状态标签颜色
        预期：UI:上传中=蓝标签；已上传=绿标签；上传失败=红标签；异常=橙标签。数据:状态字段值与颜色映射正确
  第二次上报
    tc-P0-功能测试：打款完成后自动触发上报（含资金流水+轨迹+7核验）
      pc：1.运单第一次上报已完成 2.财务完成打款
      测试数据：完整打款数据(金额/流水号/时间/收款方/收款账号/账号类型)
      步骤：1.财务打款 2.查看第二次上报列表
        预期：UI:列表出现该运单状态"上传中"(蓝)；展示承运运费/总金额/付款方式/时间/收款人/收款账号/账号类型。数据:上报接口被调用，请求体含资金流水+轨迹信息；流水数据与账户管理模块一致
    tc-P1-功能测试：车辆轨迹点位边界值:2个点(起点+终点)→成功
      pc：轨迹数据仅2个点位
      测试数据：轨迹数据=[起点,终点] len=2
      步骤：1.触发第二次上报 2.查看结果
        预期：UI:上报成功状态"已上传"。数据:请求体轨迹数组length=2，接口成功
    tc-P2-功能测试：车辆轨迹点位边界值:1个点→失败
      pc：轨迹数据仅1个点位
      测试数据：轨迹数据=[单点] len=1
      步骤：1.触发第二次上报 2.查看结果
        预期：UI:上报失败状态"异常"(橙)；异常原因含"轨迹点位不足"。数据:接口返回校验失败提示轨迹点数需≥2
    tc-P0-功能测试：运单重复上报→核验异常
      pc：运单已完成第二次上报且核验通过
      测试数据：已通过的运单
      步骤：1.尝试再次上报同一运单
        预期：UI:系统提示"该运单已完成第二次上报"或被阻止；不产生新记录。数据:接口被前置校验拦截或安徽平台返回"运单重复"；数据库无重复记录
    tc-P1-功能测试：车辆资质核验:道路运输证有效期内→通过
      pc：车辆道路运输证有效期至2026-12-31(有效期内)
      测试数据：有效期内的道路运输证
      步骤：1.触发第二次上报 2.等待核验 3.查看核验结果
        预期：UI:核验状态"通过"，无"车辆资质"异常项。数据:核验接口返回车辆资质=通过
    tc-P1-功能测试：车辆资质核验:道路运输证已过期→异常
      pc：车辆道路运输证有效期至2025-01-01(已过期)
      测试数据：过期的道路运输证
      步骤：1.触发第二次上报 2.等待核验
        预期：UI:核验状态"异常"(橙)；异常项显示"车辆资质核验"不通过；可发起申诉。数据:核验接口返回车辆资质=异常，原因"道路运输证过期"
    tc-P0-功能测试：资金流水单号重复→系统自动拦截
      pc：系统中已存在流水号LS202607130001的记录
      测试数据：重复流水号=LS202607130001
      步骤：1.创建新运单打款但流水号重复 2.触发第二次上报
        预期：UI:系统上报前自动检测到重复，提示"流水单号已使用请核实"；上报被阻止。数据:流水号唯一索引生效；接口未被调用；操作日志记录拦截
    tc-P1-功能测试：资金流水金额不匹配(合同10000 vs 打款9500)→核验异常
      pc：合同金额10000元，实际打款9500元
      测试数据：合同金额=10000, 打款金额=9500
      步骤：1.触发第二次上报 2.等待核验
        预期：UI:核验状态"异常"；异常项含"资金流水核验"不通过，原因"金额不匹配"。数据:核验接口返回资金流水核验=异常
    tc-P1-功能测试：车辆轨迹合规异常→补传轨迹→重新核验通过
      pc：第二次上报后"车辆轨迹合规"核验异常
      测试数据：补充轨迹GPS文件
      步骤：1.点"补传轨迹" 2.上传补充GPS点位文件 3.提交 4.等待重新核验
        预期：UI:补传轨迹按钮可见可点击；上传后提示成功等待核验；核验通过后异常消除状态变"通过"。数据:补传轨迹追加到原数据；重调核验接口；核验结果更新为通过
    tc-P2-功能测试：收款账号类型标签:个人=蓝色/对公=绿色
      pc：两个运单:一个司机个人账户、一个企业对公账户
      测试数据：个人账户(司机银行卡)、对公账户(企业银行账号)
      步骤：1.进入列表 2.查看收款账号类型标签
        预期：UI:个人账户=蓝标签"个人账户"；对公账户=绿标签"对公账户"。数据:字段值正确对应
    tc-P1-功能测试：重试3次全失败→告警通知运营人员
      pc：模拟安徽运八接口不可用
      测试数据：接口不可用
      步骤：1.触发第二次上报 2.等3次重试全失败 3.检查告警
        预期：UI:状态变为"上传失败"(红)；出现"手动上传"按钮；运营收到站内信通知含运单号/失败原因/重试次数。数据:重试次数=3；站内信表新增告警通知；操作日志记录完整
  第三次上报
    tc-P0-功能测试：开票完成后触发上报（含17字段发票+托运单号数组）
      pc：1.运单第二次上报已完成 2.发票已开具
      测试数据：完整发票信息(17字段)+托运单号数组
      步骤：1.开票审核模块完成开票 2.查看第三次上报列表
        预期：UI:列表出现该运单含发票号码/金额/开票日期；状态:上传中→已上传。数据:上报接口被调用；发票数据与开票审核模块一致
    tc-P1-功能测试：第二次上报未完成时第三次上报被阻断
      pc：运单仅完成第一次上报，第二次未完成
      测试数据：第二次未完成的运单
      步骤：1.尝试开票并触发第三次上报
        预期：UI:系统提示"请先完成第二次上报"；上报按钮不可见/置灰。数据:第三次上报接口调用被前置校验拦截
    tc-P1-功能测试：增值税发票验证失败→上报异常
      pc：发票号码格式错误或与代码不匹配
      测试数据：错误的发票号码/代码
      步骤：1.触发第三次上报 2.查看结果
        预期：UI:上报状态"异常"(橙)；原因提示"增值税发票验证失败"及具体原因。数据:接口返回发票验证失败业务错误码；数据库记录异常状态
    tc-P2-功能测试：发票金额精度:价税合计保留2位小数四舍五入
      pc：发票金额=12345.678元(超2位小数)
      测试数据：发票金额=12345.678
      步骤：1.触发第三次上报 2.查看列表发票金额
        预期：UI:列表发票金额显示12,345.68(四舍五入)。数据:请求体invoiceAmount=12345.68，无浮点精度丢失
    tc-P2-功能测试：油气发票多条记录上报
      pc：运单关联2条油气发票
      测试数据：2条油气发票记录
      步骤：1.触发第三次上报 2.查看详情弹窗油气发票区
        预期：UI:油气发票区展示2条记录各含托运单号和发票文件。数据:请求体油气发票数组length=2
  ETC发票上传
    tc-P1-功能测试：税务抵扣完成后上传ETC发票(18字段/每张)
      pc：1.车辆完成高速运输 2.ETC发票已获取 3.税务抵扣完成
      测试数据：ETC发票完整18字段
      步骤：1.选运单 2.上传ETC发票信息 3.提交
        预期：UI:上传成功状态"已上传"(绿)；列表含ETC发票号码/金额/税率/上传状态。数据:请求体含18字段；税额=发票金额×3%
      备注：合TP-ETC-001,003
    tc-P1-功能测试：税务抵扣未完成→上传被阻止
      pc：ETC发票存在但税务抵扣未完成
      测试数据：抵扣未完成的ETC发票
      步骤：1.尝试上传ETC发票
        预期：UI:系统提示"请先完成税务抵扣"；上传被阻止。数据:上传接口调用被前置校验拦截
    tc-P1-功能测试：税额计算:3%税率精度验证(1000元→30.00元)
      pc：ETC发票金额1000.00元
      测试数据：发票金额=1000.00
      步骤：1.上传1000元ETC发票 2.查看税额
        预期：UI:税额显示30.00元。数据:taxAmount=1000.00×0.03=30.00，2位小数
    tc-P2-功能测试：税额计算:大额发票100万元→30000.00元
      pc：ETC发票金额1000000元
      测试数据：发票金额=1000000.00
      步骤：1.上传100万元ETC发票 2.查看税额
        预期：UI:税额显示30,000.00元。数据:taxAmount=1000000.00×0.03=30000.00，无精度问题
    tc-P2-功能测试：ETC发票验证失败→上报异常提示检查发票
      pc：ETC发票号码/代码与实际不匹配
      测试数据：错误的ETC发票号码/代码
      步骤：1.上传错误ETC发票 2.查看验证结果
        预期：UI:状态"异常"(橙)；原因提示"ETC发票验证失败请检查发票信息"。数据:接口返回ETC发票验证失败
  异常申诉
    tc-P1-功能测试：核验异常运单发起申诉（申诉原因+附件）
      pc：运单第二次上报核验异常(车辆轨迹合规异常)
      测试数据：申诉原因文本、路线施工证明截图
      步骤：1.找到异常运单 2.点"申诉" 3.填原因:"实际路线因道路施工绕行" 4.上传附件(施工证明截图) 5.提交
        预期：UI:提交后提示"申诉已提交等待监管平台复核"；申诉状态变"申诉中"；列表新增申诉记录。数据:申诉表新增记录:申诉单号自动生成/异常项=车辆轨迹合规/原因已保存/附件已存储/状态=申诉中/时间=当前
    tc-P2-功能测试：申诉原因必填校验→空值拦截
      pc：存在可申诉异常运单
      测试数据：申诉原因为空
      步骤：1.点申诉 2.不填原因 3.直接提交
        预期：UI:输入框标红或提示"请填写申诉原因"；提交按钮不响应或提示错误。数据:申诉接口未被调用；数据库无新记录
    tc-P1-功能测试：申诉状态流转:申诉中→申诉通过(监管复核通过)
      pc：已提交申诉(申诉中状态)
      测试数据：申诉中的记录
      步骤：1.等待监管平台复核通过 2.查看申诉记录
        预期：UI:申诉状态变"申诉通过"(绿)；省平台反馈"复核通过"；原运单异常项消除或已解决。数据:申诉记录状态更新；省平台反馈时间/结果/意见已记录；关联运单核验状态更新
    tc-P1-功能测试：申诉状态流转:申诉中→申诉驳回→重新申诉
      pc：申诉被监管平台驳回
      测试数据：驳回原因、补充材料
      步骤：1.查看驳回记录和原因 2.点"重新申诉" 3.补充材料修改原因 4.提交
        预期：UI:驳回记录显示"复核不通过"+反馈意见；"重新申诉"按钮可见；表单保留原内容可编辑；提交后状态变"申诉中"。数据:新申诉关联原单号；原记录保留不变；新申诉状态=申诉中
    tc-P2-功能测试：详情弹窗:时间线展示处理记录(申诉→驳回→重申诉→通过)
      pc：申诉记录有多次操作历史
      测试数据：完整申诉历史数据
      步骤：1.点"详情" 2.查看处理记录区
        预期：UI:处理记录时间线展示从早到晚；每条含操作人/时间/类型/内容；类型区分清晰(发起申诉/省平台反馈/重新申诉/复核通过)。数据:数据库操作日志完整
    tc-P1-功能测试：核验通过运单无申诉入口→越权防护
      pc：运单核验状态为"通过"
      测试数据：核验通过的运单
      步骤：1.找到核验通过运单 2.查看操作列 3.尝试通过URL直接访问申诉接口
        预期：UI:操作列不显示"申诉"按钮。数据:申诉接口返回"当前运单核验状态不允许申诉"
  上报日志
    tc-P2-功能测试：多条件日志查询(上报阶段+结果+时间范围)
      pc：系统存在多条不同阶段日志
      测试数据：筛选条件组合
      步骤：1.进入上报日志 2.选阶段=第二次上报 3.选结果=失败 4.设时间范围近7天 5.点查询
        预期：UI:列表展示满足条件的日志含10个字段(序号/货源单号/运单号/托运单号/上报阶段/上报结果/接口URL/HTTP状态码/响应时间/上报时间)。数据:查询条件正确传递；返回数据与筛选一致
    tc-P2-功能测试：失败日志详情弹窗:完整请求/响应报文(JSON格式化)
      pc：存在一条失败的第二次上报日志
      测试数据：失败日志记录
      步骤：1.点失败日志"详情" 2.查看请求和响应报文
        预期：UI:弹窗展示完整请求报文(JSON格式化含所有字段)和响应报文(含错误码/错误信息)；报文可复制。数据:展示报文与实际上报接口请求/响应一致
  通用跨模块
    tc-P1-功能测试：金额精度:多次计算无累积浮点误差
      pc：运单合同金额=12345.67元
      测试数据：合同金额=12345.67
      步骤：1.第一次上报看合同金额 2.第二次上报看总金额 3.第三次上报看发票金额 4.对比三次精度
        预期：UI:所有金额显示2位小数千分位正确无精度丢失。数据:DB存DECIMAL(18,2)；接口返回2位小数字符串；计算无浮点误差
      备注：来源:风险矩阵+易漏场景
    tc-P1-功能测试：重复提交防抖:快速多次点击手动上传→仅一次请求
      pc：存在上传失败运单
      测试数据：上传失败运单
      步骤：1.连续快速点击"手动上传"3次 2.等待结果
        预期：UI:按钮首次点击后变loading/置灰防重复点击；仅产生一次上报请求。数据:上报接口仅调用1次；上报日志仅1条记录
      备注：来源:易漏场景
    tc-P2-安全性测试：未登录直接URL访问上报看板→拦截跳转登录
      pc：退出登录状态
      测试数据：看板URL
      步骤：1.清除登录态 2.地址栏直接输入看板URL 3.观察页面
        预期：UI:重定向到登录页或显示"请先登录"；不展示上报数据。数据:上报API返回401 Unauthorized
    tc-P1-安全性测试：权限隔离:司机账号(15188888888)无法访问上报管理
      pc：司机账号15188888888/88888888
      测试数据：司机账号凭证
      步骤：1.司机登录管理端 2.尝试访问看板/申诉管理等页面
        预期：UI:菜单无"安徽运八"入口；直接URL访问重定向或"无权限"；不展示上报数据。数据:上报API返回403 Forbidden
    tc-P1-功能测试：第一次上报与运单管理模块数据一致性
      pc：运单在运单管理模块已有完整数据
      测试数据：货源单号/运单号/托运单号/车牌号/司机姓名/托运方/货物/装货地址/卸货地址/运输里程
      步骤：1.记录运单管理模块关键字段 2.触发第一次上报 3.在详情弹窗核对
        预期：UI:上报详情字段值与运单管理一致。数据:上报请求体值来源于运单管理DB记录，数据一致
    tc-P1-功能测试：第二次上报资金流水与账户管理支付流水数据一致性
      pc：运单已完成打款，支付流水号已知
      测试数据：支付金额/流水号/支付时间/收款方
      步骤：1.在账户管理→支付流水查看打款数据 2.触发第二次上报 3.在上报详情核对资金流水
        预期：UI:第二次上报详情中资金流水与账户管理模块一致。数据:上报请求体资金流水与支付流水表数据一致；流水号完全匹配
    tc-P1-功能测试：司机信息上报(13字段)与司机审核模块数据一致性
      pc：司机已在审核管理模块通过审核
      测试数据：司机姓名/身份证号/驾驶证号/从业资格证号/手机号等13字段
      步骤：1.记录司机审核模块司机信息 2.触发第一次上报 3.核对上报详情司机信息
        预期：UI:上报详情司机13字段与审核模块一致。数据:上报请求体driverInfo来源于司机审核表
    tc-P2-功能测试：上报接口超时(>30s)→前端Loading+超时提示
      pc：模拟上报接口响应超30秒
      测试数据：超时接口
      步骤：1.触发上报 2.观察前端表现
        预期：UI:按钮Loading状态(转圈/禁用)；超30秒后显示"上报超时请稍后查看结果"；不白屏不假死。数据:接口超时后后端异步处理或标记超时；DB状态=上传失败/原因=超时