# 物流公司管理需求 测试数据 > 本文件由 data-builder Agent 构造,为测试用例提供精确数据支持(覆盖脚本生成模板,已删除与本次业务无关的商品/券/积分等占位内容)。 > 基准日 **T = 2026-09-29**:日期样本以 `T±n` 表述,括号内为按基准日换算的具体日期;实际执行日不同则整体平移再换算(见 0.3)。 > 数据来源与口径:《物流公司管理需求_分析.md》(BR-01~BR-09、REQ-001~038、决议 Q1–Q19——Q7~Q19 为 2026-09-29 补充确认,见需求文档第八章)、《需求正文(归一化版)》、项目画像(运八网络货运平台)。 > 使用约定:示例值可直接粘贴使用;示例中的公司/单号均为测试构造,不引用真实企业数据;真实账号、税源地字典值、真实单号格式一律标注「待补充」,不臆造。 > 术语声明:全文按"核算即运单核算"口径(无独立核算单);空值统一展示词为「无外协公司」。 > 统一社会信用代码样本说明:按国标 `[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}`(字符集排除 I/O/S/V/Z)构造,**第 18 位校验位已按 GB 32100 算法生成,并对照 3 个已知有效样本完成算法自检**;UC-04 起的样本为故意越界/违规值。 --- ## 0. 数据总览 ### 0.1 核心公司档案花名册(后续各章节的引用载体) | 代号 | 公司名称 | 统一社会信用代码 | 简称码 | 状态 | 合同配置 | 被引用情况 | 主要用途 | | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | | LC-01 甲 | 云南测试甲物流有限公司 | 91530102MA6N4K7X52 | YNA | 启用 | HT-2026-0001(生效中)、HT-2026-0002(生效中)、HT-2025-0987(已过期) | 被运单 WT-04 引用 | 删除双条件阻断、唯一性三组配对、核算选择主样本 | | LC-02 乙 | 昆明测试乙供应链有限公司 | 91530103MA6P8Q2D7F | YNB | 启用 | HT-2026-0011(已过期)、HT-2026-0012(待生效) | 被运单 WT-03 引用 | 无生效合同可勾选(Q3)、仅"被运单引用"阻断 | | LC-03 丙 | 曲靖测试丙运输有限公司 | 91530302MA6R5T9H37 | YNC | 启用 | HT-2026-0001(生效中,与 LC-01 同号) | 无 | 仅"生效合同"阻断、跨公司合同编号重复对 | | LC-04 丁 | 玉溪测试丁货运代理有限公司 | 91530402MA6U2W5J8J | YND | 启用 | 无 | 无 | 可删除样本 → 删除后同名/同码重建 | | LC-05 戊 | 大理测试戊物流有限公司 | 91532901MA6X7Y4L2T | YNE | 启用 | 无 | 仅被货源 HY-02 引用 | 删除保护不覆盖样本(仅被货源引用、无运单 → 可删除,Q9 已确认) | | LC-06 己 | 保山测试己运输有限公司 | 91530502MA6K1M8N6P | YNF | 停用 | HT-2026-0021(已过期) | 被运单 WT-05 引用、打款 PY-03 关联 | 停用可见性、停用快照、打款"含停用"筛选 | | LC-07 庚 | 楚雄测试庚物流有限公司 | 91532301MA6W9E3F4G | YNG | 启用 | HT-2026-0031~0034(合同状态边界专用,见 2.2) | 被货源 HY-01、运单 WT-01 引用 | 改名快照链、合同状态"含当天"边界 | | 并发对(无档案) | 云南测试并发物流有限公司A / B | 91530111MA6Y2T7P91(两组共用) | 留空 | — | — | — | 并发同码提交样本(UQ-09,仅用于提交请求) | > 构造顺序依赖:先建 7 家公司 → 合同 → 货源 → 运单/核算(快照保存)→ 打款 → 再执行改名/停用/删除等变更(§6)→ 最后执行删除约束(§5,不可逆)。并发与唯一性样本(§3)可穿插执行。 ### 0.2 状态与枚举取值(自动提取) | 对象 | 取值/口径 | 来源 | | :--- | :--- | :--- | | 物流公司状态 | 启用 / 停用 /(已删除=逻辑删除终态,无恢复入口) | BR-02、BR-04、7.1 | | 合同状态 | 待生效 / 生效中 / 已过期(系统按当前日期自动计算,`当前日期 ∈ [生效时间, 过期时间]` 含边界当天;不可手工设置) | BR-03、REQ-021 | | 运单核算状态 | 未核算 / 已核算(已核算再次修改=覆盖更新,不产生新单据) | BR-06、6.6 | | 打款页物流公司筛选选项 | 全部 / 无外协公司 / 各物流公司(含停用) | BR-08 | | 附件白名单(合同) | pdf / doc / docx / jpg / jpeg / bmp / png;单附件;不设大小上限(Q6) | BR-03、Q6 | | 证件白名单(新增页) | 营业执照 jpg/jpeg/png/pdf(必传);法人身份证人像面、国徽面 jpg/jpeg/png(必传,**不含 pdf/bmp**);道路运输经营许可证 jpg/jpeg/png/pdf(选填,Q5) | 6.2、Q5 | | 分页 | 默认 20 条/页,可选 10/20/50/100 | REQ-004 | | 导出上限 | 20000 条(平台 Excel 导出组件统一口径) | §7、项目画像 §8.3 | | 空值展示词 | 无外协公司 | BR-08、BR-09 | ### 0.3 日期样本使用说明 - 基准日 T=2026-09-29;常用换算:T-400=2025-08-25,T-100=2026-06-21,T-35=2026-08-25,T-30=2026-08-30,T-10=2026-09-19,T-1=2026-09-28,T=2026-09-29,T+1=2026-09-30,T+10=2026-10-09,T+30=2026-10-29,T+100=2027-01-07,T+365=2027-09-29。 - **长期回归样本**(长区间,跨日稳定):0.1 花名册中的合同除特别标注外均用 T-400 ~ T+365 区间,跨日执行不会漂移。 - **日敏感样本**(仅执行当天有效,跨天须重造):2.2 的 CD-B1、CD-B2 及 LT-0031/0032,以及"创建时间范围含当天"(QR-05);已过期的边界样本用过去的固定日期,天然稳定。 ### 0.4 长边界字面值(V 表,可直接复制粘贴) > 格式:`编号|字符数|字面值`。字面值可用表达式快速重建(如 `"云南测试五十字符边界物流有限公司" + "填"*34`)。 ``` V-01|50|云南测试五十字符边界物流有限公司填填填填填填填填填填填填填填填填填填填填填填填填填填填填填填填填填填 V-02|51|云南测试五十字符边界物流有限公司填填填填填填填填填填填填填填填填填填填填填填填填填填填填填填填填填填超 V-03|30|测试法人姓名某某某某某某某某某某某某某某某某某某某某某某某某 V-04|31|测试法人姓名某某某某某某某某某某某某某某某某某某某某某某某某超 V-05|20|测试联系人联联联联联联联联联联联联联联联 V-06|21|测试联系人联联联联联联联联联联联联联联联超 V-07|100|云南省昆明市五华区测试大道一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一 V-08|101|云南省昆明市五华区测试大道一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一超 V-09|200|云南省昆明市测试收货路址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址 V-10|201|云南省昆明市测试收货路址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址址超 V-11|200|备注测试备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备 V-12|201|备注测试备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备备超 V-13|50|HT-2026-000000000000000000000000000000000000000000 V-14|51|HT-2026-0000000000000000000000000000000000000000000 ``` --- ## 1. 物流公司主档数据(FR-01/02/03/05,REQ-002~016) ### 1.1 公司名称(文本,必填,≤50 字符,全平台唯一) | 数据ID | 字段/场景 | 示例值 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | NM-01 | 有效-常规 | 云南测试甲物流有限公司 | 16 字常规中文名称,应通过 | REQ-007 / BR-01 | 已就绪 | | NM-02 | 上边界=50 字 | V-01 | 恰好 50 字符,应通过 | REQ-007 | 已就绪 | | NM-03 | 越界=51 字 | V-02 | 超出 1 字符,应阻断并就近标红 | REQ-007 / 异常流程-字段超长 | 已就绪 | | NM-04 | 最小长度 | 甲 | 1 字符(无最小长度约束),应通过 | REQ-007 | 已就绪 | | NM-05 | 空值 / 纯空格 | 空串、`" "`(3 个半角空格) | 必填,空值应阻断;纯空格 trim 后为空按空处理,同样阻断(Q15 已确认) | REQ-007 | 已就绪 | | NM-06 | 重复值(唯一性) | 同 NM-01 | 触发唯一性阻断与提示,配对样本见 UQ-01 | BR-01 / REQ-009 | 已就绪 | | NM-07 | 首尾空格 | `" 云南测试甲物流有限公司 "`(两侧含空格) | 提交前 trim 后判重:与 NM-01 视为重复、应阻断(Q13 已确认) | BR-01 | 已就绪 | | NM-08 | 全角/特殊符号 | 云南测试(甲)·物流—有限公司 | 全角括号/间隔号/破折号应正常保存与展示 | REQ-007 | 已就绪 | | NM-09 | XSS | ``、`">` | 列表/编辑页/弹窗回显均转义,不得执行 | 安全 / 9.列表展示 | 已就绪 | | NM-10 | SQL 注入 | `'; DROP TABLE logistics_company;--` | 参数化处理,无任何副作用 | 安全 | 已就绪 | | NM-11 | emoji / 生僻字 | 云南测试甲物流🚚有限公司、龘靐齉 | 不乱码;长度按字符计数(emoji/生僻字按字符数) | REQ-007 | 已就绪 | ### 1.2 统一社会信用代码(文本,必填,18 位国标,失焦即校验,全平台唯一) | 数据ID | 字段/场景 | 示例值 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | UC-01 | 合法-基准 | 91530102MA6N4K7X52(LC-01) | 18 位、字符集合规、校验位正确,应通过 | REQ-007 / BR-01 | 已就绪 | | UC-02 | 合法-其余档案 | 见 §0.1(LC-02~LC-07 共 6 个码) | 同批构造,供唯一性/并发/快照引用 | BR-01 | 已就绪 | | UC-03 | 失焦即校验 | 在输入框中改动任一字符后触发失焦 | 无需点击提交即触发校验提示(前端异步调唯一性校验接口) | BR-01 / 6.2 | 已就绪 | | UC-04 | 越界-17 位 | 91530102MA6N4K7X5 | 截去末位,长度不足应阻断 | REQ-007 | 已就绪 | | UC-05 | 越界-19 位 | 91530102MA6N4K7X521 | 末尾追加 1 位,超长应阻断 | REQ-007 | 已就绪 | | UC-06 | 含禁用字母 I | 91530102MA6N4K7X5I | 18 位但末位为 I,应阻断 | BR-01 | 已就绪 | | UC-07 | 含禁用字母 O | 91530102MA6N4K7X5O | 末位为 O,应阻断 | BR-01 | 已就绪 | | UC-08 | 含禁用字母 S | 91530102MA6N4K7X5S | 末位为 S,应阻断 | BR-01 | 已就绪 | | UC-09 | 含禁用字母 V | 91530102MA6N4K7X5V | 末位为 V,应阻断 | BR-01 | 已就绪 | | UC-10 | 含禁用字母 Z | 91530102MA6N4K7X5Z | 末位为 Z,应阻断 | BR-01 | 已就绪 | | UC-11 | 全小写 | 91530102ma6n4k7x52 | 小写字母不在字符集,应阻断 | BR-01 | 已就绪 | | UC-12 | 含空格 | `9153010 MA6N4K7X52`(第 8 位为空格,共 18 字符);`" 91530102MA6N4K7X52"`(首部空格) | 内部空格应阻断;首尾空格提交前 trim 后判重(Q13 已确认) | BR-01 | 已就绪 | | UC-13 | 全角字符 | 91530102MA6N4K7X52 | 全角数字/字母应阻断 | BR-01 | 已就绪 | | UC-14 | 行政区划段含字母 | 9153A102MA6N4K7X52 | 第 3-8 位必须为数字,应阻断 | BR-01 | 已就绪 | | UC-15 | 校验位错误 | 91530102MA6N4K7X53(把合法码末位 2 改为 3) | 仅按 BR-01 正则校验字符集与长度、不校验第 18 位校验位:格式合法 → 可保存(Q14 已确认) | BR-01 / Q14 | 已就绪 | | UC-16 | 汉字/其他混入 | 91530102MA6N4K7X5甲 | 应阻断 | BR-01 | 已就绪 | | UC-17 | 重复值(唯一性) | 同 UC-01(LC-01 的码) | 触发唯一性阻断,配对样本见 UQ-02 | BR-01 / REQ-009 | 已就绪 | > 使用前先以本批 8 个代码在测试环境各查询一次,确认与既有数据无碰撞。 ### 1.3 法人代表名称(文本,必填,≤30 字符) | 数据ID | 字段/场景 | 示例值 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | LP-01 | 有效-常规 | 张测试 | 3 字,应通过 | REQ-007 | 已就绪 | | LP-02 | 上边界=30 字 | V-03 | 恰好 30 字符,应通过 | REQ-007 | 已就绪 | | LP-03 | 越界=31 字 | V-04 | 超 1 字符,应阻断并标红 | REQ-007 | 已就绪 | | LP-04 | 空值 | 空串 | 必填,应阻断 | REQ-007 | 已就绪 | | LP-05 | 含间隔号 | 阿不都·热合曼 | 少数民族姓名间隔号应正常保存与展示 | REQ-007 | 已就绪 | | LP-06 | XSS / SQL 注入 | 同 NM-09 / NM-10(可复用同一串) | 转义、无副作用 | 安全 | 已就绪 | | LP-07 | 中英数字混排 | 张三Test2 | 需求未限定字符集,长度符合即应通过(如实现有额外限制以实际为准) | REQ-007 | 已就绪 | ### 1.4 联系人(文本,必填,≤20 字符) | 数据ID | 字段/场景 | 示例值 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | CT-01 | 有效-常规 | 王测试 | 3 字,应通过 | REQ-007 | 已就绪 | | CT-02 | 上边界=20 字 | V-05 | 恰好 20 字符,应通过 | REQ-007 | 已就绪 | | CT-03 | 越界=21 字 | V-06 | 超 1 字符,应阻断并标红 | REQ-007 | 已就绪 | | CT-04 | 空值 / 纯空格 | 空串、`" "` | 必填,空值应阻断;纯空格 trim 后为空按空处理(Q15 已确认) | REQ-007 | 已就绪 | | CT-05 | XSS / SQL 注入 | 同 NM-09 / NM-10 | 转义、无副作用 | 安全 | 已就绪 | ### 1.5 联系方式(文本,必填,手机号格式) | 数据ID | 字段/场景 | 示例值 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | PH-01 | 合法-经典测试号 | 13800138000 | 11 位、`1[3-9]` 开头,应通过 | REQ-007 | 已就绪 | | PH-02 | 合法 | 15912345678 | 应通过 | REQ-007 | 已就绪 | | PH-03 | 合法 | 19988887777 | 应通过 | REQ-007 | 已就绪 | | PH-04 | 越界-10 位 | 1380013800 | 位数不足,应阻断 | REQ-007 | 已就绪 | | PH-05 | 越界-12 位 | 138001380001 | 位数超出,应阻断 | REQ-007 | 已就绪 | | PH-06 | 非法-非 1 开头 | 12800138000 | 第二位非 3-9,应阻断 | REQ-007 | 已就绪 | | PH-07 | 非法-含字母 | 1380013800a | 应阻断 | REQ-007 | 已就绪 | | PH-08 | 非法-含空格/横线 | `138 0013 8000`、`138-0013-8000` | 应阻断(仅首尾 trim,内部空格/横线仍非法) | REQ-007 | 已就绪 | | PH-09 | 非法-全角 | 13800138000 | 应阻断 | REQ-007 | 已就绪 | | PH-10 | 座机(口径已确认) | 0871-65000000 | 仅手机号 `1[3-9]\d{9}`:座机不支持 → 应拒绝并提示手机号格式(Q11 已确认) | REQ-007 / Q11 | 已就绪 | | PH-11 | 国际前缀(口径已确认) | +8613800138000 | 国际前缀不支持 → 应拒绝(Q11 已确认) | REQ-007 / Q11 | 已就绪 | | PH-12 | 空值 | 空串 | 必填,应阻断 | REQ-007 | 已就绪 | | PH-13 | 重复值 | 与 PH-01 相同值建第二家公司 | 需求未要求联系方式唯一,应允许(列表支持模糊查询) | REQ-002 | 已就绪 | ### 1.6 简称码(文本,选填,2-4 位纯字母,全平台唯一) | 数据ID | 字段/场景 | 示例值 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | SC-01 | 上边界-4 位 | ABCD | 4 位纯字母,应通过 | BR-01 / REQ-007 | 已就绪 | | SC-02 | 有效-3 位 | YNA(LC-01 实值) | 3 位,应通过 | BR-01 | 已就绪 | | SC-03 | 下边界-2 位 | AB | 2 位,应通过 | BR-01 | 已就绪 | | SC-04 | 越界-1 位 | A | 位数不足,应阻断 | BR-01 | 已就绪 | | SC-05 | 越界-5 位 | ABCDE | 位数超出,应阻断 | BR-01 | 已就绪 | | SC-06 | 含数字 | A1、12 | 非纯字母,应阻断 | BR-01 | 已就绪 | | SC-07 | 含汉字 | 测试 | 应阻断 | BR-01 | 已就绪 | | SC-08 | 小写字母(口径已确认) | ab | 大小写不做限制、均可保存(仅记录字段,不参与任何流程)(Q12 已确认) | BR-01 / Q12 | 已就绪 | | SC-09 | 空值(选填) | 多家公司简称码均留空 | 空值不参与全平台唯一 → 多家公司可同时留空、均可保存(Q16 已确认,见 UQ-07) | BR-01 / Q16 | 已就绪 | | SC-10 | 重复值 | YNA(LC-01 已占用) | 触发唯一性阻断,见 UQ-03 | BR-01 / REQ-009 | 已就绪 | | SC-11 | 含前后空格 | `"YNA "`、`" YNA"` | 提交前 trim 后判重:与已占用值 YNA 视为重复、应阻断(Q13 已确认) | BR-01 / Q13 | 已就绪 | ### 1.7 企业通信地址(省市区级联,必填)与详细地址(≤100 字符) | 数据ID | 字段/场景 | 示例值 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | AD-01 | 有效级联-基准 | 云南省 / 昆明市 / 五华区 | 三级完整,应通过 | REQ-007 / 6.2 | 已就绪 | | AD-02 | 有效级联-备用 | 云南省 / 曲靖市 / 麒麟区;云南省 / 大理白族自治州 / 大理市 | 供不同公司使用,含自治州层级 | REQ-007 | 已就绪 | | AD-03 | 非法-级联不完整 | 仅选"云南省",未选市/区 | 必填,应阻断 | REQ-007 | 已就绪 | | AD-04 | 非法-跨区组合 | 省="云南省" + 市="成都市" | 级联控件应不允许该组合(篡改请求也应拒绝) | REQ-007 | 已就绪 | | DT-01 | 有效-常规 | 测试大道 1 号 A 栋 101 | 应通过 | REQ-007 | 已就绪 | | DT-02 | 上边界=100 字 | V-07 | 恰好 100 字符,应通过 | REQ-007 | 已就绪 | | DT-03 | 越界=101 字 | V-08 | 超 1 字符,应阻断并标红 | REQ-007 | 已就绪 | | DT-04 | 空值 / 纯空格 | 空串、`" "` | 必填,空值应阻断;纯空格 trim 后为空按空处理(Q15 已确认) | REQ-007 | 已就绪 | | DT-05 | XSS / SQL 注入 | 同 NM-09 / NM-10 | 转义、无副作用 | 安全 | 已就绪 | ### 1.8 备注(多行文本,选填,≤200 字符) | 数据ID | 字段/场景 | 示例值 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | RM-01 | 有效-常规 | 外协承运,月结 | 应通过 | REQ-007 | 已就绪 | | RM-02 | 上边界=200 字 | V-11 | 恰好 200 字符,应通过 | REQ-007 | 已就绪 | | RM-03 | 越界=201 字 | V-12 | 超 1 字符,应阻断并标红 | REQ-007 | 已就绪 | | RM-04 | 空值 | 空串 | 选填,应允许 | REQ-007 | 已就绪 | | RM-05 | 多行/换行 | 第一行备注\\n第二行备注(真实换行符) | 多行控件应正常保存与回显 | REQ-007 | 已就绪 | | RM-06 | XSS(存储型高发点) | ``、`` | 列表/编辑页/详情回显均转义 | 安全 | 已就绪 | | RM-07 | SQL 注入 | `1'; WAITFOR DELAY '0:0:5'--` | 参数化处理,无延迟、无副作用 | 安全 | 已就绪 | ### 1.9 状态(启用/停用,新增默认启用) | 数据ID | 字段/场景 | 示例值 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | ST-01 | 新增默认 | 提交成功 → 列表状态=启用(绿),提示"新增成功" | 默认启用,返回列表 | BR-02 / REQ-008/016 | 已就绪 | | ST-02 | 停用-二次确认(确定) | LC-06 → 停用(灰) | 二次确认后生效;立即从核算/货源选择弹窗消失 | BR-05 / REQ-015 | 已就绪 | | ST-03 | 停用-二次确认(取消) | 取消 → 状态保持启用不变 | 不产生状态变更与日志 | BR-05 | 已就绪 | | ST-04 | 停用 → 启用 | LC-06 重新启用 | 即时生效,恢复出现在选择弹窗 | BR-05 / REQ-016 | 已就绪 | | ST-05 | 停用后档案可用 | LC-06 进入列表查询、编辑页、合同管理 Tab | 均正常可用 | BR-05 | 已就绪 | ### 1.10 证件上传(新增页,营业执照/身份证必传,许可证选填) > 样本文件需在测试机准备(建议集中存放 testdata 目录);DOC-04 的伪造样本仅用于验证拒绝与安全处理。 | 数据ID | 字段/场景 | 示例值(文件名=上传用样本) | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | DOC-01 | 营业执照-合法 | 营业执照_测试甲.jpg / .jpeg / .png / .pdf(4 个文件) | 白名单内 4 格式均应上传成功、可预览 | REQ-006 | 已就绪 | | DOC-02 | 营业执照-非法 | 营业执照_测试甲.gif / .docx / .txt / 无扩展名文件、营业执照_测试甲.bmp | bmp 不在证件白名单(注意与合同附件白名单含 bmp 的差异),均应拒绝并提示 | REQ-006 | 已就绪 | | DOC-03 | 身份证人像面-合法 | 法人身份证人像面_测试甲.jpg / .jpeg / .png | 应上传成功 | REQ-006 | 已就绪 | | DOC-04 | 身份证人像面-非法 | 法人身份证人像面_测试甲.pdf / .bmp;伪造内容:exe 改名为 .jpg;双扩展名 身份证.pdf.exe | 身份证仅收 jpg/jpeg/png,pdf/bmp 应拒绝;伪造样本不得被执行 | REQ-006 / 安全 | 已就绪 | | DOC-05 | 身份证国徽面 | 法人身份证国徽面_测试甲.jpeg | 合法通过;非法样本同 DOC-04 | REQ-006 | 已就绪 | | DOC-06 | 道路运输经营许可证-不传 | 不上传 | 选填,应允许提交(Q5) | REQ-006 / Q5 | 已就绪 | | DOC-07 | 道路运输经营许可证-上传 | 道路运输经营许可证_测试甲.pdf | 白名单内应通过 | REQ-006 | 已就绪 | | DOC-08 | 必传缺失 | 营业执照或身份证任一项不传直接提交 | 应阻断并提示必传项 | REQ-006 | 已就绪 | | DOC-09 | 极端大小 | 0 字节文件、约 300MB 大文件(营业执照_大文件.pdf) | 不设大小上限口径:大文件应可上传(关注耗时/OBS 超时);0 字节行为记录观察项 | Q6 / RISK-AVAILABILITY | 已就绪 | | DOC-10 | 文件名安全 | `../../etc/passwd.jpg`、超长文件名、含特殊字符文件名 | 正常处理或拒绝,不得越权写路径 | 安全 | 已就绪 | | DOC-11 | 重新上传替换 | 同一证件位置再次上传新文件 | 替换旧文件、预览指向新文件(编辑页回显以实际实现为准) | REQ-006 | 已就绪 | ### 1.11 列表查询 / 排序 / 分页样本(REQ-002/004) | 数据ID | 字段/场景 | 示例值 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | QR-01 | 名称模糊查询 | 输入"测试甲" | 命中 LC-01(模糊匹配) | REQ-002 | 已就绪 | | QR-02 | 信用代码模糊查询 | 输入"91530102" | 命中 LC-01(前缀匹配) | REQ-002 | 已就绪 | | QR-03 | 联系方式模糊查询 | 输入"138" | 命中 PH-01 对应公司 | REQ-002 | 已就绪 | | QR-04 | 状态过滤 | 启用 → 不含 LC-06;停用 → 仅 LC-06;全部 → 均含 | 三态切换结果正确 | REQ-002 | 已就绪 | | QR-05 | 创建时间含当天(日敏感) | 范围=[2026-09-29, 2026-09-29] → 命中当日创建记录(如当天创建的 LC-04);=[2026-09-28, 2026-09-28] → 不含当日 | 结束日期含当天 23:59:59;仅执行当天有效 | REQ-002 / 6.1 | 已就绪 | | QR-06 | 组合条件 | 状态=停用 + 名称"保山" | 命中 LC-06,过滤叠加正确 | REQ-002 | 已就绪 | | QR-07 | 空结果 | 名称输入"不存在的公司XYZ" | 空态提示(列表与选择弹窗各有专门空态文案) | REQ-002 / 漏测清单 §4 | 已就绪 | | QR-08 | 重置 | 点"重置" | 条件清空、恢复默认列表(创建时间倒序、20 条/页) | REQ-002 | 已就绪 | | QR-09 | 默认排序 | 新创建的公司排首位 | 创建时间倒序 | REQ-004 | 已就绪 | | QR-10 | 分页 | 25 条数据(§8 BLK-01 构造) | 默认 20/页共 2 页;可选 10/20/50/100 | REQ-004 | 已就绪 | --- ## 2. 合同数据(FR-06,REQ-017~021) ### 2.1 合同编号(文本,必填,≤50 字符,同公司唯一;不同公司允许重复) | 数据ID | 字段/场景 | 示例值 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | CN-01 | 有效-常规 | HT-2026-0001(LC-01 实值) | 应通过 | REQ-019 / BR-03 | 已就绪 | | CN-02 | 上边界=50 字 | V-13 | 恰好 50 字符,应通过 | REQ-019 | 已就绪 | | CN-03 | 越界=51 字 | V-14 | 超 1 字符,应阻断 | REQ-019 | 已就绪 | | CN-04 | 同公司重复 | 在 LC-01 下再建一条编号 HT-2026-0001 | 阻断并提示(唯一性提示应含语义说明) | BR-03 / REQ-019 | 已就绪 | | CN-05 | 跨公司重复(配对) | LC-03 建编号 HT-2026-0001(与 LC-01 同号) | 允许(不同公司之间可重复) | BR-03 | 已就绪 | | CN-06 | 编辑排除自身 | 编辑 HT-2026-0001 仅改附件、不改编号后保存 | 不报编号重复(编辑时编号排除自身,Q16 已确认) | REQ-019 / Q16 | 已就绪 | | CN-07 | 特殊字符 / 注入 | `HT-<>'"&;--`、`HT-2026-0001'` | 正常存储或按规则提示;无注入副作用 | 安全 / REQ-019 | 已就绪 | | CN-08 | 空值 | 空串 | 必填,应阻断 | REQ-019 | 已就绪 | ### 2.2 时间字段与合同状态边界(签订/生效/过期;状态系统自动计算) **合同台账(可直接录入的完整数据集;税源地列待补充见 2.3,附件见 2.4)** | 合同编号 | 所属公司 | 签订时间 | 生效时间 | 过期时间 | 当天状态(T=2026-09-29) | 用途 | | :--- | :--- | :--- | :--- | :--- | :--- | :--- | | HT-2026-0001 | LC-01 | 2026-08-25(T-35) | 2026-08-30(T-30) | 2027-09-29(T+365) | 生效中 | 稳定生效合同;跨公司重复对(CN-05) | | HT-2026-0002 | LC-01 | 2026-09-29(T) | 2026-09-29(T,当天生效) | 2027-09-29(T+365) | 生效中 | "生效时间=当天"边界(长期稳定) | | HT-2025-0987 | LC-01 | 2025-08-25(T-400) | 2025-08-25(T-400) | 2026-09-28(T-1) | 已过期 | 稳定过期样本(跨日不漂移) | | HT-2026-0011 | LC-02 | 2026-06-21(T-100) | 2026-06-21(T-100) | 2026-09-19(T-10) | 已过期 | 无生效合同公司(Q3 可勾选) | | HT-2026-0012 | LC-02 | 2026-09-29(T) | 2026-10-09(T+10) | 2027-01-07(T+100) | 待生效 | 待生效样本 | | HT-2026-0001(同号) | LC-03 | 2026-08-25(T-35) | 2026-08-30(T-30) | 2027-09-29(T+365) | 生效中 | 跨公司编号重复对;仅"生效合同"阻断删除的载体 | | HT-2026-0021 | LC-06 | 2025-08-25(T-400) | 2025-08-25(T-400) | 2026-09-28(T-1) | 已过期 | 停用公司历史合同 | | HT-2026-0031 | LC-07 | 2026-09-29(T) | 2026-09-29(T,当天生效) | 2027-09-29(T+365) | 生效中 | **日敏感**:当天生效边界(CD-B1) | | HT-2026-0032 | LC-07 | 2026-08-30(T-30) | 2026-08-30(T-30) | 2026-09-29(T,当天过期) | 生效中 | **日敏感**:当天过期含边界(CD-B2) | | HT-2026-0033 | LC-07 | 2025-08-25(T-400) | 2025-08-25(T-400) | 2026-09-28(T-1) | 已过期 | 昨天过期(CD-B3) | | HT-2026-0034 | LC-07 | 2026-09-29(T) | 2026-09-30(T+1) | 2027-01-07(T+100) | 待生效 | 明天生效(CD-B4) | > CD-B1/B2 仅执行当天有效:跨天执行须按当日重造(把 T 改为执行日)。HT-2026-0031~0034 当天使 LC-07 的"生效合同数"实时统计=2,次日变 1,断言时注意取样时点。 **时间校验与状态样本** | 数据ID | 字段/场景 | 示例值 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | CD-01 | 非法-过期=生效 | 生效=2026-10-09(T+10)、过期=2026-10-09(T+10) | 必须"晚于",相等应阻断并提示 | BR-03 / REQ-019 | 已就绪 | | CD-02 | 非法-过期<生效 | 生效=2027-01-07(T+100)、过期=2026-10-09(T+10) | 倒置应阻断 | BR-03 / REQ-019 | 已就绪 | | CD-03 | 补录-签订晚于当前 | 签订=2026-10-29(T+30)、生效=2026-10-09(T+10)、过期=2027-01-07(T+100) | 签订时间可晚于当前日期,不做强校验,应允许保存 | BR-03 | 已就绪 | | CD-04 | 空值 | 签订/生效/过期任一为空 | 三项均必填,应阻断 | REQ-019 | 已就绪 | | CD-05 | 极远日期 | 过期=2099-12-31 | 无上限口径,应允许(状态=待生效/生效中按当天计算) | BR-03 | 已就绪 | | CD-06 | 状态不可手工设置 | 合同列表/弹窗中查找状态编辑入口 | 状态列只读、无手工设置入口;日期变更后状态按当前日期自动重算 | BR-03 / REQ-021 / 7.2 | 已就绪 | | CD-07 | 日期控件 | 日历控件选择/手工输入非法日期串 | 控件应拦截非法日期(如 2026-02-30) | REQ-019 | 已就绪 | ### 2.3 所属税源地(下拉,必填,数据字典-税源地) | 数据ID | 字段/场景 | 示例值 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | TX-01 | 有效值 | **待补充**:从"基础信息 → 数据字典 → 税源地"读取前 2 项真实字典值填入 | 与企业货主税源地同源;录入合同必须使用环境真实字典值 | REQ-019 / 6.4 | 待补充 | | TX-02 | 空(不选) | 不选择直接保存 | 必填,应阻断 | REQ-019 | 已就绪 | | TX-03 | 字典外值(接口级) | 请求携带不存在的税源地编码 | 建议拒绝(服务端字典校验);接口校验口径如需确认以实际为准 | REQ-019 | 已就绪 | ### 2.4 合同附件(必传,单附件,白名单 pdf/doc/docx/jpg/jpeg/bmp/png,不设大小上限) > 白名单 7 类样本文件与 1 个超大文件需在测试机准备;伪造样本仅用于验证拒绝与安全处理。 | 数据ID | 字段/场景 | 示例值(文件名=上传用样本) | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | AT-01 | 白名单内(7 类) | 合同扫描件.pdf、承运合同.doc、承运合同.docx、合同扫描件.jpg、合同扫描件.jpeg、合同扫描件.bmp、合同扫描件.png | 7 类均应上传成功,上传后显示文件名,可预览/下载 | BR-03 / REQ-019/020 | 已就绪 | | AT-02 | 白名单外 | 合同清单.xlsx、说明.txt、打包.zip、打包.rar、图.gif | 均应拒绝并提示格式白名单(注意 gif/rar 也属白名单外) | BR-03 / REQ-019 | 已就绪 | | AT-03 | 大写扩展名(口径已确认) | 合同.PDF、合同.Jpg | 大小写不敏感:白名单按扩展名小写归一,.PDF/.Jpg 等效放行(Q10 已确认) | BR-03 / Q10 | 已就绪 | | AT-04 | 无扩展名 | 文件名为"合同附件" | 应拒绝 | BR-03 | 已就绪 | | AT-05 | 伪造扩展名 | 病毒.exe.pdf(双扩展)、contract.pdf.exe、exe 改名为 合同扫描件.jpg | 拒绝或隔离;任何情况下不得执行 | 安全 / BR-03 | 已就绪 | | AT-06 | 极端大小 | 0 字节文件、约 300MB 大文件 | 不设大小上限(Q6):大文件应可上传(关注耗时/OBS 超时与重试);0 字节行为记录观察项 | Q6 / RISK-AVAILABILITY | 已就绪 | | AT-07 | 重新上传替换 | 已有附件时再次选择新文件 | 单附件:替换后仅保留最新 1 个(旧 URL 不再可访问以下载结果为准) | Q6 / REQ-019 | 已就绪 | | AT-08 | 多文件选择 | 一次选择 2 个文件 | 单附件限制:应按限制处理(仅取 1 个或提示) | Q6 | 已就绪 | | AT-09 | 上传依赖失败 | OBS/文件服务不可用或超时(故障注入,见缺口 #11) | 上传失败提示 + 可重试;不影响已填表单内容 | RISK-AVAILABILITY | 待补充 | --- ## 3. 唯一性配对数据(BR-01 / REQ-009/010/011 / 验收 8) ### 3.1 三组重复对与编辑排除自身 | 数据ID | 重复维度 | 配对样本值 | 预期行为 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | UQ-01 | 公司名称 | 已存在:云南测试甲物流有限公司(LC-01);新增:名称同 LC-01,其余字段全新 | 阻断 + 名称字段就近标红 + 明确提示"已存在";表单不清空 | BR-01 / REQ-009 / 6.2 | 已就绪 | | UQ-02 | 统一社会信用代码 | 已存在:91530102MA6N4K7X52(LC-01);新增:uscc 同 LC-01,名称全新 | 同上(失焦校验与提交双时机均需覆盖) | BR-01 / REQ-009 | 已就绪 | | UQ-03 | 简称码 | 已存在:YNA(LC-01);新增:简称码 YNA,名称与代码全新 | 同上 | BR-01 / REQ-009 | 已就绪 | | UQ-04 | 编辑排除自身 | LC-01 进入编辑仅修改法人代表名称后保存 | 名称/信用代码/简称码未变,不得误报重复(编辑排除自身,Q16 已确认) | REQ-012 / 6.3 / Q16 | 已就绪 | | UQ-05 | 编辑改为他人值 | LC-01 名称改为"昆明测试乙供应链有限公司"(LC-02 名称)后保存 | 阻断 | BR-01 / REQ-012 | 已就绪 | | UQ-06 | 逻辑删除后复用 | LC-04 删除后,用其名称"玉溪测试丁货运代理有限公司"+ 代码 91530402MA6U2W5J8J 新建 | 允许(唯一性不含已逻辑删除的公司) | BR-01 / REQ-009 | 已就绪 | | UQ-07 | 空简称码多公司 | 新建 2 家公司,简称码均留空 | 空值不参与唯一 → 两家均可保存、共存(Q16 已确认) | BR-01 / Q16 | 已就绪 | | UQ-08 | 前后空格判重 | `"YNA "` vs `"YNA"`;`"云南测试甲物流有限公司 "` vs 原名 | 提交前 trim 后判重:均视为重复、应阻断(Q13 已确认) | BR-01 / Q13 | 已就绪 | ### 3.2 并发同码与幂等样本 | 数据ID | 场景 | 请求样本(两张表单的字段值) | 预期行为 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | UQ-09 | 并发提交同一信用代码 | 表单A:名称=云南测试并发物流有限公司A;uscc=91530111MA6Y2T7P91;法人=张甲;联系人=王甲;电话=13800138001;地址=云南省/昆明市/官渡区;详细=测试路 1 号;简称码=AB
表单B:名称=云南测试并发物流有限公司B;uscc=**同 A**;其余字段不同(法人=张乙、电话=13800138002 等) | 两个独立浏览器会话(或两个 HTTP 请求)同时提交:仅 1 条入库;后提交者失败且提示友好(不出现 DB 异常原文);不产生重复数据 | REQ-010 / BR-01 / 验收8 | 已就绪 | | UQ-10 | 幂等-重复点击 | 任一新增表单,1 秒内连点"保存/新增"2 次 | 仅 1 条入库,以最终一次结果为准(平台统一幂等口径) | REQ-011 | 已就绪 | --- ## 4. 核算关联数据(FR-07/08/09/10,BR-06/07/08/09) > 运单号/货源号/打款单号为逻辑代号占位;真实编号格式与样例执行时从测试环境读取并替换(缺口 #7)。所有"引用公司"的运单/货源,须在快照保存完成后再执行改名/停用/删除变更(§6)。 ### 4.1 货源样本(发布货源-物流公司字段,FR-08) | 数据ID | 货源场景 | 所选物流公司 | 关联运单 | 用途/断言要点 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | :--- | | HY-01 | 新建货源,经选择弹窗选 LC-07 庚(搜索"庚"→单选→确定→回显名称/代码/联系人) | 庚(楚雄测试庚物流有限公司) | WT-01 | 核算自动带入的来源;改名快照链起点 | BR-07 / REQ-031 | 已就绪 | | HY-02 | 新建货源,选 LC-05 戊;不发布关联运单 | 戊 | 无 | 删除保护不覆盖场景(仅被货源引用 → 可删除,Q9 已确认) | BR-04 / BR-07 | 已就绪 | | HY-03 | 新建货源,不选物流公司直接发布 | 无 | WT-02 | 选填不阻断(货源侧 Q2 口径) | BR-07.4 | 已就绪 | | HY-04 | 新建货源,选 LC-02 乙 | 乙 | WT-03 | 乙被运单引用(删除阻断②前置) | BR-07 | 已就绪 | | HY-05 | 新建货源,选 LC-06 己(发布后己被停用) | 己(已停用) | WT-05 | 停用快照 + 打款"含停用"链路 | BR-05 / BR-08 | 已就绪 | | HY-06 | 操作样本:编辑 HY-03 → 选择 LC-01 保存(写入快照);再编辑 → "移除"清空保存;再编辑 → 改选 LC-07(替换) | 依次:甲 → 空 → 庚 | — | 更换/清除/替换回显验证 | REQ-031 / BR-07.3 | 已就绪 | | HY-07 | 选择弹窗入口校验 | 在"指定车队司机"附近出现"选择物流公司"字段 | — | 位置与交互对标需求 6.7 | BR-07 / 6.7 | 已就绪 | ### 4.2 运单/核算样本(运费核算-修改核算弹窗,FR-07) | 数据ID | 运单场景(占位号) | 公司带入/选择 | 核算操作 | 预期落库与断言 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | :--- | | WT-01 | WT-01:货源 HY-01 → 未核算 | 默认带入庚 | 不改公司直接保存 | 运单表写入 company_id+名称+uscc(快照基准=「楚雄测试庚物流有限公司」)+ 客户收货地址;核算状态→已核算 | BR-06 / REQ-025/026 | 已就绪 | | WT-02 | WT-02:货源 HY-03 → 未核算 | 无(初始为空) | 不选公司直接保存 | 正常保存,运单记为"无外协公司";不阻断 | Q2 / REQ-026 | 已就绪 | | WT-03 | WT-03:货源 HY-04 → 未核算 | 默认带入乙 | 直接保存 | 快照=乙;乙被运单引用 | BR-06 / REQ-026 | 已就绪 | | WT-04 | WT-04:无货源公司 → 已核算(无外协) | 首次不选;二次修改核算补选 LC-01 甲 | 覆盖更新保存 | 覆盖运单核算字段、不产生新单据、写日志 1 条;甲被运单引用(删除阻断①双条件前置) | REQ-028 / BR-04 | 已就绪 | | WT-05 | WT-05:货源 HY-05 → 未核算 | 默认带入己 | 保存(随后己被停用) | 已核算运单不受停用影响;历史展示不变 | BR-05 / REQ-027 | 已就绪 | | WT-07 | WT-07:未核算载体(与公司无关的普通运单) | 打开弹窗选择甲(先不保存)→ 另一会话停用 LC-01 → 再点"保存/核算" | 保存被阻断 | 后端二次校验:提示具体公司名并要求重新选择;重选启用公司(如乙)或清除后可保存成功 | REQ-029 / 6.6 异常 | 已就绪 | | WT-08 | WT-08:未核算载体 | 选择弹窗交互专项:搜索"测试"/"91530102"、翻页(25 条数据)、单选替换、确定回填、"清除"取消选择 | — | 弹窗仅启用公司、创建时间倒序、20 条/页、单选;搜索无结果空态"未找到符合条件的物流公司" | REQ-024/025 / 6.6 | 已就绪 | | WT-09 | WT-09:已核算 WT-01 再次打开修改核算弹窗 | — | 只读观察回显 | 回显基准=运单表已存快照值(Q8 已确认;未核算的运单没有值,按货源所选公司默认带入) | REQ-025 / Q8 | 已就绪 | | WT-10 | 弹窗加载失败(故障注入) | 打开选择弹窗时阻断接口/断网 | — | 空状态 + "重新加载"按钮,点击可恢复 | RISK-AVAILABILITY / 6.6 | 待补充 | ### 4.3 客户收货地址(修改核算弹窗新增字段,选填,≤200 字符,仅记录) | 数据ID | 字段/场景 | 示例值 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | RA-01 | 有效-常规 | 云南省昆明市五华区测试大道 1 号测试仓库 | 应通过并落库运单表 | BR-06.7 / REQ-023 | 已就绪 | | RA-02 | 上边界=200 字 | V-09 | 恰好 200 字符,应通过 | REQ-023 | 已就绪 | | RA-03 | 越界=201 字 | V-10 | 超 1 字符,应阻断并提示 | REQ-023 / 异常流程-字段超长 | 已就绪 | | RA-04 | 空值(不填) | 空串 | 选填,应允许(与不选公司可并存) | REQ-023 / Q2 同口径 | 已就绪 | | RA-05 | XSS | `` | 转义存储与展示 | 安全 | 已就绪 | | RA-06 | 纯空格 | `" "` | trim 后为空按空处理(Q15 已确认) | REQ-023 | 已就绪 | | RA-07 | 多行/换行 | 第一行收货地址\\n第二行补充说明 | 纯文本应允许(控件若限单行以实际为准) | REQ-023 | 已就绪 | ### 4.4 打款样本(FR-09/10,货主打款 / 财务打款 / 打款记录) | 数据ID | 页面 | 关联运单(快照) | 场景/断言 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | PY-01 | 货主打款 | WT-03(乙) | 筛选"乙"命中该记录;展示列=乙;筛选不改变任何操作入口与金额 | BR-08/09 / REQ-032/033 / 验收9 | 已就绪 | | PY-02 | 货主打款 | WT-02(无外协公司) | 筛选"无外协公司"命中;展示列="无外协公司" | BR-08 / REQ-032 | 已就绪 | | PY-03 | 财务打款 | WT-05(己,已停用) | 下拉含停用公司"己";筛出历史打款记录;打款/驳回等操作正常执行 | BR-08/BR-05 / 验收9 | 已就绪 | | PY-04 | 打款记录 | WT-01(庚旧名快照) | 三页面(货主打款/财务打款/打款记录)筛选与展示口径一致 | BR-08/09 / REQ-032/033 | 已就绪 | | PY-05 | 组合筛选 | 任一 | 物流公司 + 打款状态 + 打款时间范围组合查询、重置恢复 | REQ-032 | 已就绪 | | PY-06 | 回归 | 任一(金额取环境既有记录,不构造金额样本) | 改造后:打款金额、支付流水、打款/驳回流程、安徽运八上报触发均不变 | RISK-FINANCIAL / 分析 10.2 | 已就绪 | | PY-07 | 下拉选项构成 | — | 下拉=全部 / 无外协公司 / 各物流公司(含停用;已删除公司不含) | BR-08 / 6.5 | 已就绪 | ### 4.5 展示快照与取值口径(BR-09 / REQ-027/033/034) - 4 个列表(货源管理 / 运单管理 / 货主打款 / 财务打款)展示的"物流公司"均为**保存时刻快照值**:公司改名/停用/删除后历史展示不变(见 §6 SS 系列);未关联统一显示"无外协公司"。 - **取值口径(Q8 已确认)**:运单管理列/打款筛选/导出的"物流公司"**一律以运单表为准**。货源所选物流公司为**货源维度**记录;核算时按货源所选公司**默认带入**"修改核算"弹窗(**运单表初始无值:未核算的运单没有值**;弹窗内可清除或更换),确认核算后写入运单表(**运单维度**)。本文样本按"运单表快照为准(核算保存即固化)"设计断言;未核算或未关联运单取值="无外协公司"(**不联表实时取货源当前值**)。 - 导出 Excel 必须含"物流公司"列(含快照旧名),见 §8 BLK-05。 --- ## 5. 删除约束样本(BR-04 / REQ-013 / 验收 2) > 执行顺序放最后(不可逆操作);执行前确认 §6 快照场景已完成。 | 数据ID | 删除场景 | 样本公司(条件) | 预期行为 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | DL-01 | ①+② 双条件同时命中 | LC-01(2 条生效中合同 + 被 WT-04 引用) | 阻断删除;提示须说明具体原因(观察双原因同时展示/优先级口径);引导改用"停用" | BR-04 / REQ-013 | 已就绪 | | DL-02 | ② 仅被运单引用 | LC-02(合同均已过期/待生效;被 WT-03 引用) | 阻断;提示"被运单引用"并引导停用 | BR-04 | 已就绪 | | DL-03 | ① 仅有生效中合同 | LC-03(1 条生效中;无运单/货源引用) | 阻断;提示含生效合同数=1 | BR-04 | 已就绪 | | DL-04 | 无任何引用(可删除) | LC-04(无合同、无引用) | 二次确认→删除成功:列表消失、导出不含、核算勾选不含;点"取消"时不删除 | BR-04 / REQ-013 / 验收2 | 已就绪 | | DL-05 | ⑤ 仅被货源引用、未产生运单 | LC-05(仅 HY-02 引用) | 删除保护**不覆盖**(Q9 已确认):可删除;删除成功后 HY-02 货源列表仍显示快照名「大理测试戊物流有限公司」(不空白、不变为"无外协公司") | BR-04 / Q9 | 已就绪 | | DL-06 | 删除后同名重建 | 用 LC-04 名称+代码重建 | 允许(唯一性不含已逻辑删除) | BR-01 / 验收2 | 已就绪 | | DL-07 | 删除后历史追溯 | 历史运单/货源/打款中该公司记录 | 快照名与公司 ID 保持不变;不得变空、不得变为"无外协公司" | BR-04 说明 / BR-09.4 | 已就绪 | --- ## 6. 状态与快照验证样本(BR-05 / BR-09.4 / REQ-015/016/027/034) > 快照验证通用链路:公司先建档 → 货源/运单引用并保存(快照基准固化)→ 改名/停用/删除 → 校验历史展示不变。改名样本:SC-05 场景将 LC-07"楚雄测试庚物流有限公司"改为"楚雄测试庚物流(云南)有限公司"(新名也须通过唯一性)。 | 数据ID | 验证场景 | 操作样本 | 断言要点 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | SS-01 | 停用即时性 | LC-06 停用 → 打开选择弹窗 | 立即(刷新后无需等待缓存过期)不可见 | BR-05 / REQ-015 | 已就绪 | | SS-02 | 停用不影响已核算 | WT-05 在运费核算列表/运单管理查看;再次打开修改核算弹窗 | 展示与回显均不变 | BR-05 / REQ-027 | 已就绪 | | SS-03 | 停用后档案可用 | LC-06 列表查询、编辑页、合同管理 Tab | 均可正常操作 | BR-05 | 已就绪 | | SS-04 | 启用恢复 | LC-06 重新启用 → 选择弹窗 | 即时恢复可见 | REQ-016 | 已就绪 | | SS-05 | 改名快照链 | LC-07 改名 → 校验 WT-01、HY-01、货源管理列表、运单管理、4 列表导出、打款展示、WL-06 场景 | 历史全部显示旧名「楚雄测试庚物流有限公司」;LC-07 档案自身显示新名 | BR-06.6 / BR-09.4 / REQ-027/034 | 已就绪 | | SS-06 | 停用快照 | 以 LC-06(WT-05/PY-03)复核 §SS-02 口径 | 历史显示"保山测试己运输有限公司"不变 | BR-09.4 | 已就绪 | | SS-07 | 删除快照 | LC-05 删除后(DL-05 可删除路径,Q9)查看 HY-02 | 货源管理列表仍显示「大理测试戊物流有限公司」 | BR-09.4 / BR-04 | 已就绪 | | SS-08 | 已删除公司不可见 | LC-04/LC-05 删除后 | 选择弹窗、核算勾选、列表导出、打款下拉均不含 | BR-04 / 6.5 | 已就绪 | | SS-09 | 打款"含停用"筛选 | 筛选下拉选 LC-06(停用) | 可筛出历史打款 PY-03 | BR-08 | 已就绪 | | SS-10 | 弹窗回显基准 | WT-09 场景(已核算运单再次打开) | 回显=运单表已存快照值(Q8 已确认) | REQ-025 / Q8 | 已就绪 | | SS-11 | 合同状态自动计算 | 合同列表观察 HT-2026-0031~0034 | 状态列按当前日期自动计算;含边界当天;无手工设置入口 | BR-03 / REQ-021 | 已就绪 | | SS-12 | 生效合同数实时统计 | LC-01 列表列 | 显示实时"生效中"合同数(当天=2);合同增删/日期变化后随之变化 | REQ-003 | 已就绪 | --- ## 7. 角色与账号数据(REQ-035 / 验收 7,账号为待人工补充项) | 数据ID | 角色 | 账号 | 权限/用途 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | ACC-01 | 系统管理员 | super_admin(测试环境地址与账号见项目画像 §1) | 授权场景:菜单可见性 + 角色权限配置 | REQ-035 | 已就绪 | | ACC-02 | 运营管理员 | **待补充**(由系统管理员授权后提供) | 物流公司新增/编辑/删除/启停用、合同管理全部操作 | REQ-035 | 待补充 | | ACC-03 | 核算人员 | **待补充** | 运费核算勾选可用;物流公司列表**只读**(无新增/编辑/删除/启停用入口) | REQ-035 / 验收7 | 待补充 | | ACC-04 | 财务人员 | **待补充** | 货主打款/财务打款页面查询与打款操作权限 | REQ-035 | 待补充 | | ACC-05 | 跨机构账号(机构B) | **待补充** | 跨机构数据隔离验证:不可见、不可操作机构A的物流公司 | REQ-035 / 验收7 | 待补充 | | ACC-06 | 机构信息 | 机构A / 机构B 的名称与编码 **待补充** | 隔离验证前置;物流公司按创建机构归属 | REQ-035 | 待补充 | | ACC-07 | 只读断言样本 | 用 ACC-03 登录物流公司列表/编辑页 | 列表无操作按钮、编辑页只读、启停用不可操作;仅可查看 | REQ-035 / 验收7 | 待补充(依赖 ACC-03) | | ACC-08 | 越权断言样本 | 用 ACC-05 通过 URL 直达/构造请求访问机构A公司 ID 的编辑、删除、导出 | 拒绝或不可见;行为日志记录完整(操作人/时间/IP/变更摘要) | REQ-035 / 项目画像 §7.3 | 待补充(依赖 ACC-05) | --- ## 8. 批量 / 性能数据(REQ-004/005、选择弹窗、验收 10) | 数据ID | 场景 | 数据量/样本 | 边界说明 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | BLK-01 | 列表分页 | 25 条启用公司(命名:批量测试物流公司00001~00025) | 默认 20 条/页共 2 页;切换 10/20/50/100 各档验证 | REQ-004 | 已就绪(待构造) | | BLK-02 | 选择弹窗分页/排序 | 同 BLK-01 的 25 条 | 创建时间倒序(后建在前);20 条/页翻页正确 | REQ-024 | 已就绪(待构造) | | BLK-03 | 弹窗搜索 | 关键词"批量测试物流公司001"(名称)、"91530102MA00000"(代码前缀) | 模糊命中;无结果关键词"ZZZ不存在"→ 专门空态文案 | REQ-024 | 已就绪 | | BLK-04 | 导出 20000 上限(数字边界成对) | 恰好 20000 条 → 应成功导出全部;20001 条 → 按平台组件口径(截断或提示,记录实际行为) | 导出应不含已逻辑删除公司;列与页面一致 | REQ-005 / §7 / 项目画像 §8.3 | 待补充(构造通道见缺口 #9) | | BLK-05 | 四列表导出含列 | 货源管理/运单管理/货主打款/财务打款 各导出 1 次 | 均含"物流公司"列且为快照值(如庚的旧名) | BR-09.5 / REQ-033 | 已就绪 | | BLK-06 | 弹窗大数据量 | 250 条启用公司 | 打开弹窗首屏渲染/翻页时长基线记录;加载失败时"重新加载"可用 | 非功能 / RISK-AVAILABILITY | 待补充(构造通道见缺口 #9) | | BLK-07 | 批量核算(Q7 已确认:不支持) | 勾选 WT-02、WT-03 执行批量核算 | 已确认口径:批量核算**不填充、不清除**物流公司与客户收货地址,维持原值(批量逻辑不变;两字段仅单笔"修改核算"弹窗可填) | REQ-030 / Q7 | 已就绪 | | BLK-08 | 合同列表导出 | LC-01 名下 3 条合同 | 导出含合同状态列(自动计算值) | REQ-017 | 已就绪 | **批量数据生成器(可直接运行,产物为格式合法且校验位正确的代码)**: ```python # 批量公司:名称=批量测试物流公司{seq:05d};USCC=gen(seq);简称码默认留空(同时验证"空值不参与唯一"口径,Q16 已确认) CH = "0123456789ABCDEFGHJKLMNPQRTUWXY" W = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28] def gen_uscc(seq: int) -> str: p = f"91530102MA{seq:07d}" # 17 位前缀(字符集与位数合规) v = 31 - (sum(CH.index(c) * W[i] for i, c in enumerate(p)) % 31) return p + CH[0 if v == 31 else v] # 附国标校验位 # 参考输出:seq=1 -> 91530102MA0000001R;seq=25 -> 91530102MA00000258;seq=20000 -> 91530102MA00200006 def gen_code(seq: int) -> str: """备用:4 位纯大写字母简称码(若空简称码批量为先失败,改用此变体绕过)""" s = "" for _ in range(4): s = chr(65 + seq % 26) + s seq //= 26 return s ``` > 说明:简称码空值不参与唯一(Q16 已确认),批量留空可正常创建;若批量创建整体失败(实现把空值判为互相重复)即为口径不符,改用 `gen_code` 变体可继续性能场景。 --- ## 9. 安全与异常数据汇总(并入各字段表使用) | 数据ID | 场景 | 测试值 | 预期行为 | 对应需求 | 状态 | | :--- | :--- | :--- | :--- | :--- | :--- | | SEC-01 | 搜索框 SQL 注入 | 公司名称查询输入 `' OR '1'='1`;代码查询输入 `' UNION SELECT 1--` | 按字面匹配或空结果;无报错泄露、无副作用 | 安全 | 已就绪 | | SEC-02 | 搜索框 XSS | 查询输入 `` | 结果区/空态不回显未转义内容 | 安全 | 已就绪 | | SEC-03 | 存储型 XSS | 名称 NM-09 / 备注 RM-06 / 收货地址 RA-05 写入后 | 列表、编辑页、选择弹窗、详情均转义 | 安全 / 9.列表展示 | 已就绪 | | SEC-04 | 越权访问 | ACC-05 直达 URL 或构造请求访问机构A公司(编辑/删除/导出私密字段) | 拒绝/不可见;写行为日志 | REQ-035 | 待补充(依赖 ACC-05) | | SEC-05 | 敏感证件访问 | 非授权角色直接访问营业执照/身份证 OBS 链接 | 权限校验;访问留痕(RISK-COMPLIANCE) | REQ-035 / 项目画像 §7.3 | 已就绪 | | SEC-06 | 路径穿越文件名 | 上传文件名 `../../etc/passwd.jpg` | 拒绝或安全重命名,不得越权写路径 | 安全 | 已就绪 | | SEC-07 | 特殊字符集 | 换行、制表符、零宽字符 U+200B、RTL 覆盖 U+202E、4 字节 emoji | 不报错、不乱码;长度按字符计数(emoji/生僻字按字符数) | 安全 / REQ-007 | 已就绪 | | SEC-08 | 超长 payload | 各文本字段提交 5000 字符 | 按字段上限拦截(50/30/20/100/200/200) | REQ-007 / 异常流程-字段超长 | 已就绪 | | SEC-09 | 伪造文件内容 | exe/脚本改名为 .jpg/.pdf/.docx 上传(证件与合同附件) | 扩展名白名单处理;不得执行;如需内容嗅探以实际实现为准 | 安全 / DOC-04 / AT-05 | 已就绪 | --- ## 10. 口径确认对数据断言的约束(分析 §11.2 共 5 项 + 补充口径 6 项;**11 项已于 2026-09-29 全部确认**) | 原待确认项 | 影响的数据样本 | 已确认口径(2026-09-29) | | :--- | :--- | :--- | | #1 批量核算是否支持批量填充(Q7) | BLK-07 | **不支持**:批量逻辑不变、不填充/不清除;两字段仅单笔"修改核算"弹窗可填 | | #2 运单管理/导出/打款筛选的取值口径(Q8) | WT-09、SS-10、§4.5 | **一律以运单表为准**(核算保存即固化);货源所选公司由核算弹窗默认带入(运单表初始无值);未核算/未关联回退取值为"无外协公司"(不联表取货源当前值) | | #3 货源引用是否阻断删除(Q9) | DL-05、SS-07 | **不覆盖**:仅生效合同/运单引用两条件阻断;仅被货源引用可删除 | | #4 唯一性空值/排除自身边界(Q13/Q16) | UQ-06/07/08、SC-09、CN-06 | 空值不参与唯一;编辑排除自身(名称/信用代码/简称码/合同编号);提交前 trim 后判重 | | #5 客户收货地址展示载体(Q19) | RA-01~07 | 以运单详情只读展示为验收基线;不加入运单管理列表列;导出暂不要求 | > ✅ 已确认(2026-09-29):合同附件扩展名**大小写不敏感**——.PDF/.Jpg 等同 .pdf/.jpg 放行(白名单按扩展名小写归一判定);影响样本 AT-03(Q10)。 > > ✅ 已确认(2026-09-29):联系方式**仅手机号** `1[3-9]\d{9}`;座机(0871-…)与国际前缀(+86…)**不支持**、应拒绝;影响样本 PH-10、PH-11(Q11)。 > > ✅ 已确认(2026-09-29):简称码**大小写不做限制**、均可保存(仅作记录、不参与任何流程;不阻断);影响样本 SC-08(Q12)。 > > ✅ 已确认(2026-09-29):唯一性判重**提交前 trim 首尾空格**——"甲公司 "与"甲公司"视为重复、应阻断;影响样本 NM-07、UC-12、SC-11、UQ-08(Q13)。 > > ✅ 已确认(2026-09-29):信用代码**仅按 BR-01 正则校验**字符集与长度,**不校验第 18 位校验位**——校验位错误但格式合法可保存;影响样本 UC-15(Q14)。 > > ✅ 已确认(2026-09-29):纯空格/空白字符 **trim 后为空视为未填**,必填字段按空值阻断;影响样本 NM-05、CT-04、DT-04、RA-06(Q15)。 --- ## 11. 数据缺口(需要人工补充的数据与能力) | 序号 | 缺失数据/能力 | 用途 | 建议来源/方式 | 对应样本 | | :---: | :--- | :--- | :--- | :--- | | 1 | 运营管理员账号(授权后可用) | 档案与合同全操作场景 | 系统管理员(ACC-01)授权后提供 | ACC-02 | | 2 | 核算人员账号 | 核算勾选 + 物流公司列表只读验证 | 同上 | ACC-03 / ACC-07 | | 3 | 财务人员账号 | 打款页面查询与回归 | 同上 | ACC-04 | | 4 | 跨机构账号(机构B) | 机构数据隔离验证 | 同上 | ACC-05 / ACC-08 | | 5 | 机构A、机构B 名称与机构编码 | 隔离验证前置 | 测试环境机构管理读取 | ACC-06 | | 6 | 数据字典-税源地真实取值(≥2 项) | 合同新增必填项(TX-01) | 基础信息 → 数据字典 → 税源地 读取 | TX-01 | | 7 | 运单号/货源号/打款记录号真实格式与样例 | 替换 §4 各表逻辑占位号 | 测试环境列表读取(含未核算/已核算/停用公司历史记录各 ≥1) | §4.1~4.4 | | 8 | OBS/文件服务可用性确认 | 合同附件与证件上传/预览/下载 | 环境运维确认 | DOC-* / AT-* | | 9 | 20000 条级数据构造通道(接口批量或 DB 导入) | BLK-04 导出上限、BLK-06 性能基线 | 开发/运维提供导入方式与权限 | BLK-04/06 | | 10 | 系统管理员权限点清单(菜单/按钮权限标识) | 授权配置核对与只读断言 | 系统管理员/开发提供 | ACC-02~05 | | 11 | 故障注入手段(阻断 OBS/核算接口) | 上传失败重试、弹窗加载失败空态 | 运维/开发支持(或浏览器 DevTools 请求拦截替代) | AT-09 / WT-10 |