# 物流公司管理需求 测试点 > 生成时间: 2026-09-29 > 需求文档: requirements/物流公司管理需求.md(v1.1,Q1–Q6 决议已确认)/标准化输入 output/normalized_inputs/物流公司管理需求/requirement.md > 依据: output/analysis/物流公司管理需求_分析.md(REQ-001~REQ-038 追溯链、11.2 五项待确认)、_风险评估.md(RISK-DATA P1=最高风险;RISK-AVAILABILITY/FINANCIAL/COMPLIANCE/COMPATIBILITY 均 P2)、_测试策略.md、_关联与冲突.md、decisions/物流公司管理需求_确认结论.md(并行关系、0 冲突、Q7 待确认、安徽运八回归关注点) > 知识库: knowledge_base/00_project/project_profile.md、01_standards/definition_of_done.md、01_standards/terminology.md、02_history/common_missed_scenes.md、02_history/historical_defects.md、03_best_practices/(order_manage_cases / payment_flow_cases / data_reporting_cases / ui_automation_best_practices) > 术语口径: 物流公司 / 物流合同 / 生效合同 / 运费核算(运单核算) / 无外协公司 / 货主打款 / 财务打款 / 幂等性 / 审计日志;**全文禁用"核算单"表述**(核算即运单核算,无独立核算单,操作对象一律为运单) > 核心口径: 物流公司及其在运单/货源/打款上的关联**仅作记录展示,不影响任何流程**;唯一强约束是档案自身的 BR-01 唯一性与 BR-04 删除保护 > 来源标注说明: `[技术方案]` 指分析 §8《技术方案补充约束》(本需求无独立技术方案文档,约束提取自需求第七章《数据与接口要点》与项目画像技术栈) ## 测试点概览 - 总测试点数: 159 - P0: 53 / P1: 78 / P2: 23 / P3: 5 - 模块分布: A(菜单与列表查询)=15, B(新增物流公司)=24, C(编辑物流公司)=5, D(删除与启用/停用)=13, E(合同管理)=22, F(运单核算关联)=25, G(货源选择物流公司)=8, H(打款筛选)=11, I(列表展示与快照)=12, J(权限、机构隔离与行为日志)=10, X(跨需求回归与兼容)=14 - 来源分布: [需求] 134, [漏测清单] 32, [风险矩阵] 25, [项目画像] 19, [冲突修订] 7, [最佳实践] 7, [历史缺陷] 4, [技术方案] 4([营销规则] 不适用,见"不适用说明") > 注: 一个测试点可同时归属多个来源,因此来源分布合计数 232 > 总测试点数 159。 ### 覆盖维度对照(12/12 全覆盖) | 维度 | 对应测试点 | | :--- | :--- | | 主流程 | TP-A-001/002/005/009、TP-B-001/019/023、TP-C-001/004/005、TP-D-001/006、TP-E-001/002/005/015/016/019/020、TP-F-001/004/005/010/012、TP-G-001/002/003/007、TP-H-001/002/003/011、TP-I-001/003/004/011 | | 异常流程 | TP-A-012、TP-B-002/003/020、TP-D-002/003、TP-E-008/013、TP-F-011/018 | | 边界条件 | TP-A-007/010/014、TP-B-004/008/010/012/014、TP-D-005、TP-E-004/007/010/014、TP-F-006/013/019/021、TP-I-012 | | 数据校验 | TP-A-003/008/011/013、TP-B-005/007/009/011/013/015/016/017/022、TP-C-002/003、TP-D-012/013、TP-E-003/006/011/012/018/021/022、TP-F-002/007/015/020/024、TP-G-005、TP-H-005/006/008/010、TP-I-002/005/006/008/009/010、TP-X-012 | | 状态流转 | TP-A-006、TP-D-004/008/009/010/011、TP-E-009、TP-F-003/017、TP-I-007、TP-X-009 | | 权限控制 | TP-J-001~J-010 | | 并发幂等 | TP-B-018/021、TP-D-007、TP-F-016/025 | | 弱网超时 | TP-A-015、TP-B-024、TP-E-017、TP-F-023 | | 规则组合 | TP-A-004、TP-D-013、TP-F-008/009/014/022、TP-G-004/006/008、TP-H-004/007/009 | | 历史缺陷防御 | TP-X-002/003/004/005 | | 跨需求冲突防御 | TP-X-001、TP-X-006/007/008、TP-X-010/011 | | 项目高风险场景 | TP-B-018(并发同码·RISK-DATA)、TP-I-006/008(快照不联表·RISK-DATA)、TP-D-002/003(删除保护·RISK-DATA)、TP-A-014/015(Excel 20000 上限)、TP-E-017/TP-F-011(OBS 与弹窗依赖·RISK-AVAILABILITY)、TP-H-009/TP-X-006(金额安全回归·RISK-FINANCIAL)、TP-J-005/006/010(机构隔离与敏感证件·RISK-COMPLIANCE)、TP-I-012(历史数据兼容·RISK-COMPATIBILITY)、TP-F-018(状态已变化后操作)、TP-X-013/014(垫资打款页与同名"运费核算"菜单误伤防护·范围边界) | ### 不适用说明(显式标注,非静默省略) - `[营销规则]` 维度不适用:项目画像 §4 明确本项目不支持营销活动/优惠券/积分体系,本需求(外协物流公司档案与记录性关联)亦无任何营销规则。 - C 端多状态场景不适用:本需求仅改造运八平台端 Web 管理后台(分析 §2.3),无司机端/货主端渠道差异;需求内多状态场景已逐状态拆分落地——物流公司(启用/停用/已删除)、合同(待生效/生效中/已过期)、运单核算(未核算/已核算),见 TP-D-004/008/009/010/011、TP-E-009、TP-F-003/017、TP-I-007。 - 金额精度维度不适用(以回归代替):本需求不新增、不修改任何金额计算(核算与打款均不改金额逻辑),因此不做金额精度正向用例;金额相关风险以回归方式覆盖(TP-H-009、TP-X-006/007、TP-X-013)。 - 多端登录/隐私授权(漏测清单 §3 部分项)不适用:管理后台无移动端隐私授权场景;"未登录访问"已覆盖(TP-J-003)。 - 弱网(APP 端)不适用:仅有 Web 管理后台;弱网/超时以接口超时、上传依赖失败重试、弹窗加载失败重试等 Web 场景覆盖(TP-B-024、TP-E-017、TP-F-011/023)。 ### 待确认项汇总(分析 §11.2 共 5 项 + 项目画像补充识别 2 项;测试点已显式标注,评审确认后重点回归) | 编号 | 待确认问题 | 影响测试点 | | :--- | :--- | :--- | | Q7 | 批量核算是否支持批量填充"物流公司 / 客户收货地址"(当前口径:不支持,批量逻辑不变) | TP-F-021 | | 口径① | 运单管理列表/导出及打款筛选的"物流公司"取值口径矛盾(BR-09/6.9"货源带入" vs 6.6"运单表";核算更换/清除或未核算时两口径不一致) | TP-I-002、TP-H-008、TP-F-024 | | 口径② | BR-04 删除保护是否覆盖"仅被货源引用、尚无运单"的公司 | TP-D-005 | | 口径③ | 简称码空值唯一性、编辑"排除自身"字段范围(含合同编号编辑排除自身) | TP-B-017、TP-C-003、TP-E-007 | | 口径④ | "客户收货地址"展示载体与范围(至少运单详情只读展示) | TP-F-020 | | 范围① | 垫资-货主打款/垫资-财务打款两页是否同口径改造(需求 FR-09/FR-10 与 6.8/6.9 未提及) | TP-X-013 | | 范围② | 两个「运费核算」菜单(「运单认证核算」下 / 「承运结算」下)是同一页面还是独立功能 | TP-X-014 | --- ## 模块A: 菜单与物流公司列表查询 (15个测试点) ### TP-A-001: 菜单入口与页面骨架 - 优先级: P0 - 类型: 冒烟测试 - 覆盖维度: 主流程 - 来源: [需求] - 描述: 对应 REQ-001。运八平台端"基础信息 → 承运管理"下出现新增菜单"物流公司管理",进入后页面自上而下为查询条件区、操作按钮区(查询/重置/新增/导出)、列表表格与分页。 - 关键验证点: 菜单名称逐字为"物流公司管理"且挂载位置正确;页面含查询条件区、查询/重置/新增/导出四个按钮、列表表格与分页组件;面包屑与菜单高亮正确;列表加载无控制台报错。 ### TP-A-002: 列表查询条件控件齐全 - 优先级: P0 - 类型: 功能测试 - 覆盖维度: 主流程 - 来源: [需求] - 描述: 对应 REQ-002。查询条件区包含:公司名称(输入框,模糊匹配)、统一社会信用代码(输入框,模糊匹配)、联系方式(输入框,模糊匹配)、状态(下拉:全部/启用/停用)、创建时间(日期范围,含当天)。 - 关键验证点: 五个查询条件控件类型与需求一致;创建时间范围支持选择起始与结束日期且含当天数据(结束日期当天的记录可被筛出);状态下拉默认"全部"。 ### TP-A-003: 模糊查询匹配规则逐一验证 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 数据校验 - 来源: [需求] - 描述: 验证公司名称、统一社会信用代码、联系方式三个输入框均支持部分字符模糊匹配,且互不串字段。 - 关键验证点: 输入公司名称部分字符可命中全部包含该字符的公司;输入信用代码前几位可命中;输入联系方式部分数字可命中;仅输入名称关键字时不会错误命中信用代码/联系方式匹配项。 ### TP-A-004: 多条件组合查询 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 规则组合 - 来源: [需求] - 描述: 验证名称/信用代码/联系方式/状态/创建时间范围多个条件叠加查询的结果精确性。 - 关键验证点: "状态=停用 + 创建时间本周"组合仅返回同时满足两项的记录;组合条件无结果时列表为空且有提示;组合筛选后分页总数与结果数一致。 ### TP-A-005: 查询与重置行为 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 主流程 - 来源: [需求][漏测清单][最佳实践] - 描述: 验证"查询"刷新列表且分页回到第 1 页,"重置"清空全部查询条件并恢复全量列表(漏测清单 §4 查询/筛选/重置完整性;后台 CRUD 标准链路)。 - 关键验证点: 查询后分页重置为第 1 页;重置清空五个条件为默认值(状态回"全部"、时间范围清空);重置后列表恢复全量默认排序;连续多次重置无异常。 ### TP-A-006: 状态筛选三态拆分 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 状态流转 - 来源: [需求][漏测清单] - 描述: 验证状态筛选"全部/启用/停用"三个选项逐一过滤准确(漏测清单 §5 状态拆分要求,不合并为模糊状态场景)。 - 关键验证点: "全部"返回启用+停用(不含已逻辑删除);"启用"仅返回启用记录;"停用"仅返回停用记录;筛选结果中状态列与所选值一一对应。 ### TP-A-007: 创建时间范围边界 - 优先级: P2 - 类型: 功能测试 - 覆盖维度: 边界条件 - 来源: [需求][漏测清单] - 描述: 验证创建时间范围筛选的日期边界:起始=结束(同一天)、起始晚于结束、范围含当天。 - 关键验证点: 起始=结束当天可筛出当天创建的记录(含当天口径);起始晚于结束时给出提示或空结果且不报错;跨月/跨年范围筛选正确。 ### TP-A-008: 列表列完整性与格式 - 优先级: P0 - 类型: 功能测试 - 覆盖维度: 数据校验 - 来源: [需求][漏测清单] - 描述: 对应 REQ-003。列表展示列完整且顺序符合需求:公司名称(超链接进入编辑页)、简称码(未设置显示"-")、统一社会信用代码、法人代表名称、联系人/联系方式、生效合同数、状态(启用绿/停用灰,行内开关)、创建人/创建时间、操作(编辑、删除)。 - 关键验证点: 十类列全部存在且顺序正确;公司名称超链接点击进入编辑页;简称码未设置时显示"-"而非空白或 null;状态开关颜色绿/灰区分;创建人/创建时间为系统记录值;操作列含编辑与删除两个入口(漏测清单 §4 列表字段一致性)。 ### TP-A-009: 默认排序创建时间倒序 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 主流程 - 来源: [需求][漏测清单] - 描述: 对应 REQ-004。列表默认按创建时间倒序排列(最新创建的公司在最前)。 - 关键验证点: 首次进入列表与重置后均按创建时间倒序;新建公司后返回列表位于首位。 ### TP-A-010: 分页默认 20 条/页与每页条数切换 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 边界条件 - 来源: [需求][漏测清单] - 描述: 对应 REQ-004。分页默认 20 条/页,每页条数可选 10/20/50/100,页码总数与实际数据量一致。 - 关键验证点: 默认展示 20 条;切换 10/50/100 生效且列表不重排错位;末页余数正确;无数据时显示空态而非空白表格。 ### TP-A-011: 生效合同数实时统计口径 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 数据校验 - 来源: [需求] - 描述: 对应 REQ-003。列表"生效合同数"列实时统计该公司状态为"生效中"的合同数量(与合同管理 Tab 中生效中合同数一致)。 - 关键验证点: 新增一张当前处于生效期内的合同后,列表生效合同数 +1;合同到期(过期时间早于当前日期)后计数 -1;删除生效中合同后计数 -1;待生效/已过期合同不计入;停用公司的合同计数照常统计。 ### TP-A-012: 列表空态与查询无结果提示 - 优先级: P2 - 类型: 易用性测试 - 覆盖维度: 异常流程 - 来源: [漏测清单] - 描述: 验证列表在无任何数据与查询无结果两种场景下的空态展示(漏测清单 §1 空值/Null 与 §4 空结果提示)。 - 关键验证点: 新环境无数据时空态有友好占位提示;查询无结果时明确提示而非空白;空态不出现控制台报错或页面崩溃。 ### TP-A-013: 物流公司列表导出列完整性与筛选同步 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 数据校验 - 来源: [需求] - 描述: 对应 REQ-005。点击"导出"将当前查询条件下的物流公司列表导出为 Excel,导出列与列表展示列一致(含公司名称、简称码、信用代码、法人、联系人/联系方式、生效合同数、状态、创建人/时间)。 - 关键验证点: 导出文件可正常打开;列与列表一一对应;导出数据与当前筛选条件一致;无数据时导出按平台口径给出提示。 ### TP-A-014: 导出 20000 条上限口径 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 边界条件 - 来源: [需求][技术方案][项目画像] - 描述: 对应 REQ-005/REQ-036。列表导出复用平台 Excel 导出组件,默认上限 20000 条(项目画像 §8.3)。 - 关键验证点: 数据量 19999 条时全量导出;恰 20000 条导出成功;超过 20000 条时按平台统一口径处理(截断或明确提示,记录实际行为并与平台其他列表保持一致);导出耗时在可接受范围、文件不损坏。 ### TP-A-015: 导出大数据量稳定性 - 优先级: P2 - 类型: 性能测试 - 覆盖维度: 弱网超时 - 来源: [项目画像][漏测清单] - 描述: 验证接近上限的数据量(如 1~2 万条)导出时页面 Loading 状态、超时保护与失败重试(项目画像 §8.3 Excel 大数据量导出)。 - 关键验证点: 导出期间有 Loading 或进度反馈,按钮防重复点击;导出超时/失败时有明确提示且可重新导出;导出期间其他查询操作不受阻塞或给出提示。 --- ## 模块B: 新增物流公司 (24个测试点) ### TP-B-001: 新增页结构与对标布局 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 主流程 - 来源: [需求] - 描述: 对应 REQ-006。点击"新增"进入新增页,布局对标"企业货主-新增":上方证件上传区(营业执照、法人身份证人像面/国徽面、道路运输经营许可证四类),下方两栏基本信息表单。 - 关键验证点: 布局为"上证件区 + 下两栏表单";四类证件上传位齐全且标注必传/选填;表单字段顺序符合需求 6.2。 ### TP-B-002: 营业执照必传校验 - 优先级: P0 - 类型: 功能测试 - 覆盖维度: 异常流程 - 来源: [需求] - 描述: 对应 REQ-006/验收要点 1。营业执照为企业必传证件,未上传时不允许提交。 - 关键验证点: 未上传营业执照点击提交被阻断,且提示定位到营业执照上传区;上传后提交不再因此阻断;删除已上传的营业执照后提交再次被阻断。 ### TP-B-003: 法人身份证人像面/国徽面必传校验 - 优先级: P0 - 类型: 功能测试 - 覆盖维度: 异常流程 - 来源: [需求] - 描述: 对应 REQ-006。法人身份证人像面与国徽面均为必传,二者缺一不可提交。 - 关键验证点: 仅传人像面或仅传国徽面时提交被阻断并提示缺失证件;两面齐全可提交;提示文案能区分所缺证件种类。 ### TP-B-004: 道路运输经营许可证选填(Q5 决议) - 优先级: P0 - 类型: 功能测试 - 覆盖维度: 边界条件 - 来源: [需求] - 描述: 对应 REQ-006/Q5 决议。道路运输经营许可证为选填证件,不传可直接提交成功。 - 关键验证点: 不传许可证时提单成功(核心边界口径,不得误判为必传);传许可证时正常保存并在编辑页回显;许可证格式限制为 jpg/jpeg/png/pdf。 ### TP-B-005: 证件格式白名单校验 - 优先级: P0 - 类型: 功能测试 - 覆盖维度: 数据校验 - 来源: [需求] - 描述: 对应 REQ-006。营业执照与道路运输经营许可证允许 jpg/jpeg/png/pdf,法人身份证人像面/国徽面允许 jpg/jpeg/png;白名单外格式拒绝上传并提示。 - 关键验证点: 各证件允许格式逐一上传成功;身份证上传 pdf 被拒(身份证不含 pdf 口径);拒绝时提示格式白名单;拒绝后不产生半上传状态残留在表单内。 ### TP-B-006: 伪造扩展名文件拒绝 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 数据校验 - 来源: [需求][漏测清单] - 描述: 验证将非图片/非 pdf 文件改名为 .jpg 等白名单扩展名后上传时的防御行为(漏测清单 §1 特殊数据)。 - 关键验证点: 伪造扩展名文件被检出并拒绝,或至少在服务端校验真实文件类型;提示可读;记录实际拦截层级(前端/服务端)供评审确认。 ### TP-B-007: 表单必填项逐一校验 - 优先级: P0 - 类型: 功能测试 - 覆盖维度: 数据校验 - 来源: [需求] - 描述: 对应 REQ-007。公司名称、统一社会信用代码、法人代表名称、联系人、联系方式、企业通信地址、详细地址共 7 个必填字段,任一为空提交被阻断并逐字段提示。 - 关键验证点: 逐字段留空提交均被阻断且错误定位到对应字段;全部填写后可提交;仅"简称码/备注"为空不影响提交。 ### TP-B-008: 公司名称长度边界与特殊字符 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 边界条件 - 来源: [需求][漏测清单] - 描述: 对应 REQ-007。公司名称 ≤50 字符,验证 1/50/51 字符边界及特殊字符处理(漏测清单 §1 超长字符)。 - 关键验证点: 50 字符可保存;51 字符被阻断并提示上限;空格开头/结尾的存储口径(建议 trim);超长粘贴自动截断或提示。 ### TP-B-009: 统一社会信用代码格式与失焦即校验 - 优先级: P0 - 类型: 功能测试 - 覆盖维度: 数据校验 - 来源: [需求] - 描述: 对应 REQ-007/BR-01。信用代码按国标 18 位校验(`[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}`),输入框失焦即触发格式校验。 - 关键验证点: 合法 18 位代码失焦后通过;17 位/19 位、含 I/O/S/V/Z 等排除字母、含小写字母、含特殊字符均失焦即报错;错误提示就地标红;修正后提示消失。 ### TP-B-010: 法人代表名称 ≤30、联系人 ≤20 边界 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 边界条件 - 来源: [需求][漏测清单] - 描述: 对应 REQ-007。法人代表名称 ≤30 字符、联系人 ≤20 字符,验证上限边界。 - 关键验证点: 法人 30 字符、联系人 20 字符均可保存;各超 1 字符被阻断并提示;中英文/数字混合计数口径一致。 ### TP-B-011: 联系方式手机号格式校验 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 数据校验 - 来源: [需求] - 描述: 对应 REQ-007。联系方式需符合手机号格式。 - 关键验证点: 合法 11 位手机号通过;10 位/12 位、含字母、含空格/横线被拒绝并提示;开头数字非 1 被拒绝。 ### TP-B-012: 简称码 2-4 位纯字母校验 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 边界条件 - 来源: [需求] - 描述: 对应 REQ-007/BR-01。简称码为选填,填写时须 2-4 位纯字母。 - 关键验证点: 1 位被拒、2 位与 4 位通过、5 位被拒;含数字/汉字/符号被拒;大小写字母均可;不填可正常提交。 ### TP-B-013: 企业通信地址省市区级联 - 优先级: P2 - 类型: 功能测试 - 覆盖维度: 数据校验 - 来源: [需求] - 描述: 对应 REQ-007。企业通信地址使用省市区级联控件(对标企业货主通信地址)。 - 关键验证点: 省-市-区三级联动正确联动;仅选省未选区时提交被阻断或提示补全;已选地址正确保存并回显;级联数据源与货主端一致。 ### TP-B-014: 详细地址 ≤100、备注 ≤200 边界 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 边界条件 - 来源: [需求][漏测清单] - 描述: 对应 REQ-007。详细地址 ≤100 字符、备注(多行文本)≤200 字符。 - 关键验证点: 100/200 字符可保存;超限被阻断或截断并提示;备注换行、特殊字符正常保存与回显。 ### TP-B-015: 唯一性——公司名称全平台唯一 - 优先级: P0 - 类型: 功能测试 - 覆盖维度: 数据校验 - 来源: [需求][风险矩阵] - 描述: 对应 REQ-009/BR-01。公司名称全平台唯一(不含已逻辑删除的公司),重复时给出明确提示。 - 关键验证点: 与"启用"公司重名被拒;与"停用"公司重名同样被拒(停用仍在唯一范围);与"已逻辑删除"公司重名允许创建(BR-01 明示不含已删除);提示文案明确指出名称重复。 ### TP-B-016: 唯一性——统一社会信用代码全平台唯一 - 优先级: P0 - 类型: 功能测试 - 覆盖维度: 数据校验 - 来源: [需求][风险矩阵] - 描述: 对应 REQ-009/BR-01。信用代码全平台唯一,重复提交被拒并明确提示。 - 关键验证点: 与启用/停用公司同码被拒;与已删除公司同码允许;错误字段就地标红;提示可读且不暴露其他机构数据明细(跨机构同码场景见 TP-J 模块)。 ### TP-B-017: 唯一性——简称码全平台唯一 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 数据校验 - 来源: [需求][风险矩阵] - 描述: 对应 REQ-009/BR-01。简称码(选填)全平台唯一,重复时提示;验证多家公司均不填简称码的场景。 - 关键验证点: 与已存在简称码重复被拒并提示;多家公司均留空简称码时均可保存(空值不参与唯一);与已删除公司简称码重复允许。 > ⚠️ 待确认:简称码"空值"是否参与全平台唯一约束(多家公司均留空是否冲突),以及数据库层唯一约束对空值的处理语义(NULL 可多条 vs 空串冲突)。影响范围:新增/编辑表单校验与并发场景。建议确认方向:明确"空值不参与唯一约束",并写入评审结论;本测试点当前按"空值可多条共存"设计,确认后回归。 ### TP-B-018: 唯一性双保险——数据库层兜底与并发同码 - 优先级: P0 - 类型: 功能测试 - 覆盖维度: 并发幂等 - 来源: [需求][风险矩阵][技术方案] - 描述: 对应 REQ-010/验收要点 8。唯一约束在数据库层实现兜底:两人同时提交同一统一社会信用代码(或名称/简称码),应用层校验 + DB 层约束拦截,后提交者失败且提示友好,不产生重复数据。 - 关键验证点: 并发同时提交同码时仅一条成功入库,另一条失败并提示(非 500 错误);构造绕过前端直接调接口的重复提交仍被 DB 约束拒绝;失败方页面表单不清空可修改重提;数据表无重复记录(RISK-DATA P1 核心场景)。 ### TP-B-019: 新增成功正向链路 - 优先级: P0 - 类型: 功能测试 - 覆盖维度: 主流程 - 来源: [需求][最佳实践][漏测清单] - 描述: 对应 REQ-008/验收要点 1。上传全部必传证件、填写合法表单后提交成功:返回列表并提示"新增成功",新公司状态为"启用",列表与导出可见,证件正确保存(漏测清单 §4 正向成功链路,不能只测失败与限制)。 - 关键验证点: 提交后返回列表且出现"新增成功"提示;新公司状态=启用(BR-02 默认启用);列表按创建时间倒序位于首位;编辑页回显全部字段与证件;数据正确落库(含证件 URL)。 ### TP-B-020: 提交失败表单不清空、错误字段就近标红 - 优先级: P1 - 类型: 功能测试 - 覆盖维度: 异常流程 - 来源: [需求] - 描述: 对应 REQ-008。唯一性冲突或校验失败时,表单已填内容不清空,错误字段就近标红提示。 - 关键验证点: 校验失败后所有已填字段与已传证件保留;错误字段标红且提示文案定位准确;修正出错字段后可再次提交成功。 ### TP-B-021: 新增接口幂等——快速重复点击提交 - 优先级: P0 - 类型: 功能测试 - 覆盖维度: 并发幂等 - 来源: [需求][项目画像] - 描述: 对应 REQ-011。快速重复点击"提交/保存"按钮,沿用平台统一幂等口径防重,不产生重复公司档案(项目画像 §8.2 重复提交(幂等)必测)。 - 关键验证点: 1 秒内连续点击 3 次仅生成 1 条记录;重复请求返回一致结果或被幂等拦截(无重复数据、无报错弹窗堆积);按钮在提交中置灰/防抖。 ### TP-B-022: 特殊字符与注入字符输入防御 - 优先级: P2 - 类型: 安全性测试 - 覆盖维度: 数据校验 - 来源: [漏测清单] - 描述: 在名称、地址、备注等字段输入 Emoji、HTML 标签、SQL 注入字符(漏测清单 §1 特殊字符)。 - 关键验证点: 输入 `' OR 1=1 --`、`