test(物流公司管理需求): 需求文档与 QE Fleet 全流程设计产物入库

- 需求 v1.1 + 2026-09-29 需求方确认的 Q7~Q19 决议(含 BR-07/BR-09/6.7/6.9 矛盾表述修订)
- 测试点 159 个、测试用例 164 条(P0 55/P1 81/P2 23/P3 5),需求→测试点→用例三级追溯覆盖率 100%
- 质量裁决 PASS(首轮 PASS_WITH_FIX,13 项待确认确认后复裁决升级);评审原始 2 阻断项+9 建议项+3 优化项已全部修复
- 确认单:与 4 个历史需求均为并行关系、0 冲突、0 回写
- 附导出 v1/v2 版本快照、Playwright/Appium 脚本骨架、覆盖率审计脚本与指标、评审修复脚本
This commit is contained in:
xst
2026-09-29 10:03:35 +08:00
parent 1a53a1f537
commit 8c61209dd4
47 changed files with 14470 additions and 0 deletions
@@ -0,0 +1,383 @@
# 物流公司管理需求
> 文档角色:需求文档
> 原始来源:`requirements\物流公司管理需求.md`
# 物流公司管理需求文档
> **版本**: v1.1(Q1–Q6 决议已确认)
> **编写日期**: 2026-09-28(同日确认决议,见第 8 节)
> **状态**: 待评审
> **交互原型**: [prototypes/物流公司管理原型.html](prototypes/物流公司管理原型.html)(可点击操作,数据为演示数据,不落库)
> **UI 参考**: 运八管理端"基础信息 → 货主管理 → 企业货主"(新增表单、编辑页-合同管理 Tab、新增合同弹窗三张截图);2026-09-28 补充实际页面截图:运费核算(运单列表 + 核算状态列)、修改核算弹窗、运单管理、货源管理、货主打款、财务打款
> **关联模块**: 基础信息 / 承运结算 → 运费核算
---
## 1. 背景与目标
### 1.1 背景
平台目前的承运主体以车队/司机为主。随着业务扩展,出现由**外协物流公司**整段承运的场景:平台将一批运单委托给一家物流公司完成,运费按公司口径核算与结算。当前系统没有物流公司档案的维护入口,合同以线下方式管理,核算时结算对象无法从系统中选择,只能手工填写,导致:
- 物流公司信息分散、口径不一致(同一公司在不同运单、打款记录中名称/信用代码写法不一);
- 合同(含税源地归属)无系统记录,开票与核算缺少依据;
- 核算人员勾选结算对象时无可用清单,效率低且易错。
### 1.2 目标
1. 提供**物流公司**档案管理能力:创建、修改、删除、查询。
2. 编辑物流公司时支持**合同管理**(交互对标"企业货主-合同管理")。
3. 运费核算环节,核算人员在**运单上**勾选物流公司(选填、单选),核算数据**填充至运单表**;运单记录所选公司信息。
4. 新建/编辑货源时支持选择物流公司(选填、单选),作为货源及关联运单的记录信息。
### 1.3 不在本期范围
- 物流公司登录端(APP/门户)、给物流公司开账号。
- 合同审批流、电子签章。
- 与现有"承运人管理/车队管理"实体的打通或合并。
- 基于合同的自动计费、自动开票。
### 1.4 设计原则(强调)
**本功能仅作运单记录,不影响任何流程。** 物流公司档案及其在运单、货源上的关联,仅用于业务记录、展示与追溯:
- 是否选择物流公司、所选公司是否存在生效合同,均**不阻断、不改变**任何业务流程(核算、货源、运单、打款等);
- 合同状态(待生效/生效中/已过期)仅作信息展示,不参与任何校验或计费;
- 唯一的强约束针对档案数据本身的一致性(唯一性校验、删除保护,见 BR-01/BR-04),不属于业务流程控制。
---
## 2. 名词与范围
| 名词 | 说明 |
|:---|:---|
| 物流公司 | 与平台签订承运合同、整段承接运输业务的外协承运主体,档案含基本资料与证件 |
| 物流合同 | 平台与物流公司签订的承运合同,记录合同编号、签订/生效/过期时间、所属税源地、附件 |
| 运费核算 | "承运结算 → 运费核算"环节:核算人员将核算数据**填充到运单表**;**无独立核算单据**,核算的对象就是运单 |
| 生效合同 | 当前日期 ∈ [生效时间, 过期时间] 的合同,状态由系统按日期自动计算 |
---
## 3. 角色与权限
| 角色 | 权限 |
|:---|:---|
| 运营管理员(基础信息维护岗) | 物流公司新增/编辑/删除/启停用、合同管理(全部操作) |
| 核算人员 | 运费核算时在运单上勾选物流公司;可查看物流公司列表(只读),不可增删改 |
| 系统管理员 | 可授权上述权限给其他角色(沿用平台角色权限体系) |
- 数据权限:沿用平台多机构数据隔离规则,物流公司按创建机构归属,跨机构不可见、不可操作。
- 所有增/删/改操作写入行为日志(操作人、时间、IP、变更内容摘要)。
---
## 4. 功能清单
| 编号 | 功能 | 说明 | 优先级 |
|:---|:---|:---|:---:|
| FR-01 | 物流公司列表查询 | 多条件查询 + 分页,列表展示状态与生效合同数 | P0 |
| FR-02 | 新增物流公司 | 证件上传 + 基本信息表单,唯一性校验 | P0 |
| FR-03 | 编辑物流公司 | 企业资料修改 + 合同管理 Tab(对标企业货主) | P0 |
| FR-04 | 删除物流公司 | 二次确认;有约束条件(见 BR-04) | P0 |
| FR-05 | 启用/停用 | 状态开关,控制核算勾选可见性(见 BR-05) | P0 |
| FR-06 | 合同管理 | 列表 + 新增/编辑/删除/查看,附件上传 | P0 |
| FR-07 | 运单核算关联物流公司 | 运费核算时在**运单**上弹窗**单选**一家启用状态公司(**选填**,见 BR-06),连同"客户收货地址"(选填、仅作记录)一并**填充至运单表** | P0 |
| FR-08 | 货源选择物流公司 | 新建/编辑货源时选择物流公司(选填、单选,见 BR-07) | P1 |
| FR-09 | 打款列表物流公司筛选 | **货主打款、财务打款**两个页面查询区增加"物流公司"筛选项(见 BR-08 / 6.8) | P1 |
| FR-10 | 列表显示物流公司 | **货源管理列表、运单管理、货主打款/财务打款列表**均显示"物流公司"列(快照口径,见 BR-09 / 6.9) | P1 |
---
## 5. 业务规则
### BR-01 唯一性
- **公司名称**全平台唯一(不含已逻辑删除的公司)。
- **统一社会信用代码**全平台唯一,格式按国标 18 位(`[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}`)校验。
- **简称码**(选填)全平台唯一,2-4 位纯字母(对标企业货主简称码口径)。
### BR-02 状态定义
物流公司仅两种状态:**启用** / **停用**。新增后默认为**启用**。
### BR-03 合同规则
- 同一物流公司下**合同编号唯一**;不同公司之间允许重复。
- 过期时间必须晚于生效时间。
- 合同状态由系统按当前日期自动计算:待生效 / 生效中 / 已过期,不可手工设置。
- 附件仅允许 pdf/doc/docx/jpg/jpeg/bmp/png(对标企业货主合同附件口径)。
### BR-04 删除约束
- 删除为**逻辑删除**,需二次确认。
- 满足任一条件时**禁止删除**,仅可停用:
1. 存在状态为"生效中"的合同;
2. 已被任一**运单**引用(运单上记录了该公司,历史运单需要追溯公司信息)。
- 阻断提示需说明具体原因(生效合同数 / 被运单引用),并引导改用"停用"。
- 以上为**档案数据完整性保护**,不属于业务流程控制(见 1.4 设计原则)。
### BR-05 启用/停用影响
- **停用**:不再出现在运费核算的勾选弹窗中;已核算的运单不受影响;档案仍可查询、编辑、管理合同。
- **启用**:恢复出现在勾选列表。
- 停用需二次确认;启用即时生效。
### BR-06 运单核算关联物流公司(单选、选填)
> **口径纠正(2026-09-28)**:核算单与运单是同一个东西——**核算是将核算数据填充到运单表**,没有独立的核算单,不存在"新建核算单"。本节操作对象均为**运单**。
1. 运费核算位于 **整车运输 → 承运结算 → 运费核算**,页面即运单列表(含"**核算状态**"列:未核算/已核算);核算人员通过行内"编辑"打开**修改核算**弹窗,弹窗中提供**选择物流公司**入口,选择结果**填充到运单表**。
2. 弹窗**仅加载启用状态**的物流公司,默认按创建时间倒序,支持按公司名称/统一社会信用代码搜索,分页默认 20 条/页。
3. **单选**(Q1 决议):一张运单仅可关联**一家**物流公司;再次选择时替换上次结果。核算时**自动带出**物流公司:货源已选公司的运单(FR-08)默认带入该公司,可**取消选择**(清除)和**再次选择**(更换)。
4. **选填**(Q2 决议):不强制选择;未选择时核算数据正常保存到运单(运单上记为"无外协公司"),不影响任何流程。
5. 无生效合同的公司**可勾选**(Q3 决议),行内"⚠ 无生效合同"仅作信息提示,不做任何阻断。
6. 保存核算时若已选择公司,将其 **ID + 公司名称 + 统一社会信用代码** 写入**运单表**对应字段;此后公司改名/停用/删除均不影响运单上已保存的信息。
7. 运单核算同时增加"**客户收货地址**"字段(2026-09-28 新增):**选填**文本(≤200 字符),**仅作记录**、填充到运单表并随运单展示,不参与任何校验、流程与计费。
### BR-07 货源选择物流公司(FR-08)
1. **新建/编辑货源**(发布货源页面)增加"物流公司"字段:**选填、单选**,交互复用 BR-06 的选择弹窗(仅启用公司)。
2. 所选物流公司仅作为**该货源及其关联运单的记录信息**展示与追溯,不参与货源、运单、结算的任何流程判断与计费(见 1.4 设计原则)。
3. 编辑货源可更换或清除所选物流公司;保存时同样写入信息快照。
### BR-08 打款列表物流公司筛选(FR-09)
1. 打款分**货主打款**与**财务打款**两个页面(均位于 整车运输 → 承运结算 菜单下),两个页面的查询区均增加"**物流公司**"下拉筛选项;打款记录页同步增加。
2. 下拉选项:全部 / **无外协公司** / 各物流公司(**含停用状态**——历史打款记录需可按原公司查出)。
3. 过滤依据为运单上记录的物流公司(由货源选择带入,FR-08);未关联公司的运单归入"无外协公司"。
4. 仅作查询过滤与结果展示,**不影响打款流程、金额计算与任何审批动作**(见 1.4 设计原则)。
### BR-09 列表显示物流公司(FR-10)
1. **货源管理列表**(整车运输 → 货源管理 → 货源管理):显示该货源所选物流公司;未选择的显示"无外协公司"。
2. **运单管理**:显示运单关联货源上记录的物流公司(随货源带入);未关联的显示"无外协公司"。
3. **货主打款 / 财务打款列表**:随 FR-09 一并显示该列(见 6.8)。
4. 展示口径为公司名称**快照**:公司后续改名/停用/删除,历史记录仍显示保存时的名称,不受影响。
5. 该列为只读展示,不参与任何流程(见 1.4 设计原则);列表导出 Excel 需同步包含"物流公司"列。
> 说明:以上待确认问题 Q1–Q6 已于 2026-09-28 全部确认,结论见第 8 节"决议记录"。其中核算相关口径后又作一次纠正:**核算即运单核算、无独立核算单**,本文档已统一按运单口径表述。
---
## 6. 页面详述
### 6.1 物流公司列表(菜单:基础信息 → 承运管理 → 物流公司管理)
**查询条件**:
| 条件 | 控件 | 说明 |
|:---|:---|:---|
| 公司名称 | 输入框 | 模糊匹配 |
| 统一社会信用代码 | 输入框 | 模糊匹配 |
| 联系方式 | 输入框 | 模糊匹配 |
| 状态 | 下拉 | 全部 / 启用 / 停用 |
| 创建时间 | 日期范围 | 含当天 |
按钮:查询、重置、新增、导出(导出 Excel,沿用平台 20000 条上限口径)。
**列表列**:
| 列 | 说明 |
|:---|:---|
| 公司名称 | 超链接,点击进入编辑页 |
| 简称码 | 未设置为显示 "-" |
| 统一社会信用代码 | - |
| 法人代表名称 | - |
| 联系人 / 联系方式 | - |
| 生效合同数 | 实时统计"生效中"合同数量 |
| 状态 | 启用(绿)/ 停用(灰),行内开关切换 |
| 创建人 / 创建时间 | - |
| 操作 | 编辑、删除(删除受 BR-04 约束) |
默认排序:创建时间倒序。分页:默认 20 条/页,可选 10/20/50/100。
### 6.2 新增物流公司
页面布局对标"企业货主-新增":上方证件上传区,下方两栏表单。
**证件上传区**:
| 证件 | 必填 | 说明 |
|:---|:---:|:---|
| 企业营业执照 | ✓ | jpg/jpeg/png/pdf |
| 法人身份证人像面照片 | ✓ | jpg/jpeg/png |
| 法人身份证国徽面照片 | ✓ | jpg/jpeg/png |
| 道路运输经营许可证 | - | jpg/jpeg/png/pdf(Q5 决议:选填) |
**表单字段**:
| 字段 | 必填 | 类型 | 校验/说明 |
|:---|:---:|:---|:---|
| 公司名称 | ✓ | 文本 | ≤50 字符;全平台唯一(BR-01) |
| 统一社会信用代码 | ✓ | 文本 | 18 位国标格式 + 唯一(BR-01),失焦即校验 |
| 法人代表名称 | ✓ | 文本 | ≤30 字符 |
| 联系人 | ✓ | 文本 | ≤20 字符 |
| 联系方式 | ✓ | 文本 | 手机号格式 |
| 简称码 | - | 文本 | 2-4 位纯字母,全平台唯一(BR-01) |
| 企业通信地址 | ✓ | 省市区级联 | 对标企业货主通信地址控件 |
| 详细地址 | ✓ | 文本 | ≤100 字符 |
| 备注 | - | 多行文本 | ≤200 字符 |
提交成功 → 返回列表并提示"新增成功",新公司状态为**启用**。提交失败时表单不清空,错误字段就近标红提示。
### 6.3 编辑物流公司
页面 Tab 结构对标"编辑企业货主",本期包含两个 Tab(结构上预留扩展):
- **企业资料**:同新增表单,回显数据;公司名称、统一社会信用代码修改时重新执行唯一性校验(排除自身)。
- **合同管理**:见 6.4。
### 6.4 合同管理(编辑页内 Tab,对标企业货主-合同管理)
**筛选条件**:合同编号(输入)、所属税源地(下拉)、签订时间范围、创建时间范围。按钮:查询、新增、导出。
**列表列**:选择框(批量列,本期不提供批量操作)、合同编号、所属税源地、合同状态(待生效/生效中/已过期,自动计算)、创建人、签订时间、创建时间、生效时间、过期时间、操作(查看 / 编辑 / 删除)。
**新增/编辑合同弹窗**(对标企业货主"新增"弹窗):
| 字段 | 必填 | 校验/说明 |
|:---|:---:|:---|
| 合同编号 | ✓ | 同一公司下唯一(BR-03),≤50 字符 |
| 签订时间 | ✓ | 日期,可晚于当前日期(补录场景),不做强校验 |
| 生效时间 | ✓ | 日期 |
| 过期时间 | ✓ | 晚于生效时间(BR-03) |
| 所属税源地 | ✓ | 下拉,数据来源"数据字典-税源地"(与企业货主税源地同源) |
| 附件 | ✓ | 点击上传,仅 pdf/doc/docx/jpg/jpeg/bmp/png(BR-03),单文件;**暂不设置大小上限**(Q6 决议);上传后显示文件名,可重新上传替换 |
- **查看**:只读弹窗,附件支持预览/下载。
- **删除**:二次确认,记录操作日志;仅作记录数据维护,不影响其他流程。
### 6.5 删除 / 停用
见 BR-04、BR-05。列表"删除"按钮与编辑页内均不提供物理删除入口;删除后列表不可见,导出与核算勾选均不含已删除公司。
### 6.6 运费核算 —— 在运单上核算并关联物流公司(FR-07,单选/选填)
> **核算单与运单是同一个东西**:核算是将核算数据填充到运单表,没有独立的核算单,也没有"新建核算单"入口;运费核算的操作对象就是运单。
**入口**:整车运输 → 承运结算 → 运费核算(页面即运单列表,含"核算状态"列:未核算/已核算;列表带批量核算按钮)。
**交互流程**:
1. 核算人员在运单列表点击行内"编辑",打开**修改核算**弹窗(含运单信息区:运单号、货主名称、司机姓名、车牌号、结算吨位等,原有字段不变)。
2. 修改核算弹窗中新增"物流公司"(**选填、单选**)与"**客户收货地址**"(**选填**)两个字段;物流公司默认带入货源上选择的公司(FR-08),可点击"选择物流公司"打开弹窗更换或清除。
3. 选择弹窗:系统加载**启用状态**物流公司(BR-06),展示公司名称、统一社会信用代码、联系人、联系方式、生效合同数(无生效合同的行显示"⚠ 无生效合同",仅提示、可勾选);支持搜索、分页(20 条/页);**单选**。
4. 选择后点击"确定",弹窗关闭,所选公司回填修改核算弹窗。
5. 点击"保存/核算":核算数据(含物流公司、客户收货地址)**写入运单表**,运单"核算状态"更新为"已核算";未选择公司时正常保存(运单上记为"无外协公司")。
6. 运费核算列表与运单管理的"物流公司"列展示运单表中的公司信息(FR-10 / 6.9)。
**异常与边界**:
- 弹窗打开时公司列表加载失败 → 空状态 + "重新加载"按钮。
- 核算保存时公司已被停用/删除 → 后端二次校验:提示具体公司名并要求重新选择(数据有效性校验,非流程控制)。
- 已核算的运单再次修改核算 → 覆盖更新运单上的核算字段并记录日志(不产生新单据)。
- 搜索无结果 → 空状态"未找到符合条件的物流公司"。
- **批量核算**:沿用现有逻辑;是否支持批量填充物流公司/客户收货地址,见待确认 Q7。
### 6.7 货源选择物流公司(FR-08,新增)
**入口**:整车运输 → 货源管理 → 发布货源(新建)/ 编辑货源。
**交互**:
1. 表单增加"物流公司"字段(**选填、单选**),建议置于承运信息区("指定车队司机"附近);按钮"选择物流公司"复用 6.6 的选择弹窗(仅启用公司、支持搜索分页)。
2. 选择后回显公司名称、统一社会信用代码、联系人,可"移除"清空,或再次打开弹窗更换(替换上次选择)。
3. 保存货源时写入所选公司信息快照;该信息随货源展示,并作为其关联运单的记录信息。
4. **不触发任何流程**:选择与否、公司是否有合同,均不影响货源发布、接单、运单流转与结算(见 1.4 设计原则)。
### 6.8 打款列表增加物流公司筛选项(FR-09,新增)
**入口**:整车运输 → 承运结算 → **货主打款** / **财务打款**(两个独立页面,均需改造);打款记录页同步。
**交互**:
1. 查询区增加"物流公司"下拉筛选项(BR-08):全部 / 无外协公司 / 各物流公司(含停用)。
2. 与其他筛选条件(运单号、打款状态、打款时间范围等)可组合查询,结果实时过滤。
3. 物流公司列展示运单上记录的公司名称(信息快照);无关联公司的运单显示"无外协公司"。
4. 仅作查询过滤,不改变打款列表的任何操作入口与流程(打款、驳回等按原有逻辑执行)。
### 6.9 货源管理列表 / 运单管理 / 货主打款 / 财务打款 显示物流公司(FR-10,新增)
| 列表 | 物流公司列数据来源 | 空值显示 |
|:---|:---|:---|
| 货源管理列表(整车运输 → 货源管理 → 货源管理) | 该货源选择的物流公司(FR-08) | 无外协公司 |
| 运单管理(整车运输 → 运输管理 → 运单管理) | 关联货源上记录的物流公司 | 无外协公司 |
| 货主打款 / 财务打款(整车运输 → 承运结算,FR-09) | 运单上记录的物流公司快照 | 无外协公司 |
- 建议列位置:货源管理列表置于"目的地"之后;运单管理置于"承运司机"附近;货主打款/财务打款置于"运输单号"之后。
- 展示为只读信息,不参与任何流程(见 1.4 设计原则);导出 Excel 同步包含该列。
---
## 7. 数据与接口要点(给开发)
| 项 | 要求 |
|:---|:---|
| 表设计 | `logistics_company`(主档)、`logistics_contract`(合同,company_id 外键);**运单表**新增核算字段:物流公司(company_id + company_name + uscc 冗余存储)、客户收货地址、核算状态 |
| 删除 | 物流公司逻辑删除(deleted 标志);合同物理删除并记日志 |
| 唯一性 | 名称/信用代码/简称码唯一约束在**数据库层**实现(应用层先校验给出友好提示) |
| 快照 | 运单表冗余存储 company_name、uscc,核算保存时写入,不做联表实时取值 |
| 附件 | 存华为云 OBS,库内仅存 URL;上传接口复用现有文件服务 |
| 导出 | 列表导出复用平台 Excel 导出组件(默认上限 20000 条) |
| 日志 | 增删改、启停用、合同增删改均记行为日志 |
| 幂等 | 新增/保存接口防重复提交(沿用平台统一幂等口径) |
---
## 8. 决议记录(2026-09-28 确认)
> **总原则:本功能仅作运单记录,不影响任何流程**(见 1.4 设计原则)。
| 编号 | 问题 | 决议 |
|:---:|:---|:---|
| Q1 | 勾选粒度 | **核算(运单)仅可勾选一家**(单选) |
| Q2 | 是否强制勾选物流公司 | **不强制、不必填**;未选择按"无外协公司"正常保存核算 |
| Q3 | 无生效合同的公司是否可被勾选 | **可勾选**;"无生效合同"仅作信息提示 |
| Q4 | 与承运人/车队体系是否打通 | **本期不处理**;独立建档 + 信用代码唯一防重 |
| Q5 | 道路运输经营许可证是否必传 | **不是必传**;其余证件(营业执照、法人身份证人像面/国徽面)必传 |
| Q6 | 合同附件大小上限 / 是否多附件 | **先不设置大小上限**(格式白名单保留);单附件 |
**新增需求(2026-09-28)**:
1. 新建、编辑货源时也要选择物流公司 → 已纳入 FR-08 / BR-07 / 6.7。
2. 运单核算增加"客户收货地址"字段,仅作记录 → 已纳入 BR-06 第 7 条 / 6.6。
**口径纠正(2026-09-28)**:**核算单与运单是同一个东西**——核算是将核算数据填充到运单表,不存在独立核算单/"新建核算单";文档中原"核算单"表述已全部改为运单口径(FR-07 / BR-06 / 6.6 同步修订)。
**补充确认(2026-09-28,依据实际页面截图)**:
- 运费核算、货主打款、财务打款均位于 **整车运输 → 承运结算** 菜单下;打款分**货主打款**、**财务打款**两个页面,两页面均需增加物流公司筛选与列。
- 运费核算页面即运单列表(含"核算状态"列:未核算/已核算),核算操作通过行内"编辑"打开"修改核算"弹窗完成,弹窗中新增物流公司与客户收货地址字段。
> ⚠️ 待确认 Q7:**批量核算**是否需要支持批量填充物流公司/客户收货地址?当前口径:仅单笔"修改核算"弹窗中填写,批量核算逻辑不变。
3. 打款时打款列表增加一个物流公司的筛选项 → 已纳入 FR-09 / BR-08 / 6.8。
4. 货源列表、运单管理、打款列表都要显示物流公司 → 已纳入 FR-10 / BR-09 / 6.9。
---
## 9. 验收要点(概要)
1. 创建:三个唯一性字段(名称/信用代码/简称码)重复时均有明确提示,且数据库层有兜底约束;营业执照、法人身份证人像面/国徽面必传校验生效,道路运输经营许可证可不传。
2. 删除:存在生效合同或被运单引用的公司删除被阻断,提示包含原因;无引用公司可删除且列表消失。
3. 停用:停用后立即从选择弹窗消失,历史运单/货源展示不变(快照)。
4. 合同:过期时间 ≤ 生效时间被阻断;附件类型白名单外文件被拒绝;合同状态随日期自动变化;附件不设大小上限。
5. 运单核算:仅启用公司可见;**单选**(再次选择替换、可移除清空);**不选公司可直接保存核算**;无生效合同公司可正常勾选;核算后物流公司/客户收货地址正确**写入运单表**并在运单列表展示;货源已选公司的运单默认带入。
6. 货源:新建/编辑货源可选择、更换、清除物流公司(选填、单选);不选择不影响货源保存与后续任何流程。
7. 权限:核算人员账号进入物流公司列表为只读;跨机构数据不可见。
8. 并发:两人同时新建同一信用代码,后提交者失败且提示友好;重复点击保存不产生重复数据。
9. 打款筛选(货主打款/财务打款两页面):物流公司筛选项可单独或组合查询;"无外协公司"可过滤未关联记录;**停用公司仍可筛出历史打款记录**;筛选不改变打款/驳回等任何操作。
10. 列表展示:货源管理列表、运单管理、货主打款/财务打款列表均显示"物流公司"列,口径为公司名称快照;未关联记录显示"无外协公司";导出 Excel 含该列;公司改名/停用后历史列表显示不变。
---
## 10. 原型与截图对照
| 原型页面 | 对标截图 |
|:---|:---|
| 物流公司列表 | 通用列表风格(查询 + 表格 + 分页,同企业货主列表) |
| 新增物流公司 | 截图1:企业货主-新增(证件上传区 + 两栏表单) |
| 编辑物流公司-合同管理 Tab | 截图2:企业货主-编辑-合同管理(筛选 + 按钮组 + 合同表格) |
| 新增/编辑合同弹窗 | 截图3:企业货主-新增合同弹窗(编号/三个时间/税源地/附件) |
| 运费核算-运单核算弹窗 | 新增设计:在运单上核算(无独立核算单),**单选** + 搜索 + 分页(选填) |
| 发布货源-物流公司选择 | 新增设计:复用同一弹窗(FR-08) |
| 货主打款/财务打款-物流公司筛选 | 实际页面截图:两页面查询区各加筛选(FR-09) |
| 货源管理/运单管理/打款-物流公司列 | 实际页面截图:列表只读展示(FR-10) |
@@ -0,0 +1,14 @@
{
"base_name": "物流公司管理需求",
"version": "v1",
"snapshot_type": "full_pipeline",
"summary": [
"manifest",
"analysis",
"relation_report",
"test_points",
"test_cases_markdown",
"excel",
"normalized_inputs"
]
}
@@ -0,0 +1,367 @@
{
"_meta": {
"base_name": "物流公司管理需求",
"merged_zones": [
"prepare",
"analyze",
"design"
],
"merged_at": "2026-09-29T00:22:13.350074+00:00",
"updated_at": "2026-09-29T00:22:13.350074+00:00"
},
"prepare": {
"base_name": "物流公司管理需求",
"requirement_source_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\requirements\\物流公司管理需求.md",
"requirement_input_type": "md",
"normalized_requirement_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\normalized_inputs\\物流公司管理需求\\requirement.md",
"normalized_dir": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\normalized_inputs\\物流公司管理需求",
"technical_solution_files": [],
"normalized_technical_solution_files": [],
"project_profile_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\knowledge_base\\00_project\\project_profile.md",
"document_confidence": {
"requirement": 1.0,
"issues": []
},
"activated_knowledge": {
"terminology": {
"permanent": [
"E:\\Desktop\\xst_files\\test\\QaAutomationHub\\knowledge_base\\01_standards\\terminology.md"
],
"optional": []
},
"semantic_matches": []
},
"knowledge_gaps": [
{
"category": "history",
"suggestion": "未激活任何历史缺陷/易漏场景,建议补充相关知识库条目"
},
{
"category": "best_practice",
"suggestion": "未激活任何最佳实践范例,建议补充同类型需求的优秀用例"
}
],
"attached_source_files": [],
"sources_registry": [
{
"path": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\requirements\\物流公司管理需求.md",
"type": "primary_requirement",
"role": "business_background",
"format": "md",
"authority": "primary"
}
],
"agent_notes": {
"document-parser": "解析完成,置信度 100%",
"knowledge-activator": "激活 1 常驻 + 0 可选术语"
},
"_meta": {
"zone": "prepare",
"base_name": "物流公司管理需求",
"updated_at": "2026-09-29T00:04:01.942080+00:00",
"status": "completed"
}
},
"base_name": "物流公司管理需求",
"requirement_source_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\requirements\\物流公司管理需求.md",
"requirement_input_type": "md",
"normalized_requirement_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\normalized_inputs\\物流公司管理需求\\requirement.md",
"normalized_dir": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\normalized_inputs\\物流公司管理需求",
"technical_solution_files": [],
"normalized_technical_solution_files": [],
"project_profile_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\knowledge_base\\00_project\\project_profile.md",
"document_confidence": {
"requirement": 1.0,
"issues": []
},
"activated_knowledge": {
"terminology": {
"permanent": [
"E:\\Desktop\\xst_files\\test\\QaAutomationHub\\knowledge_base\\01_standards\\terminology.md"
],
"optional": []
},
"semantic_matches": []
},
"knowledge_gaps": [
{
"category": "history",
"suggestion": "未激活任何历史缺陷/易漏场景,建议补充相关知识库条目"
},
{
"category": "best_practice",
"suggestion": "未激活任何最佳实践范例,建议补充同类型需求的优秀用例"
}
],
"attached_source_files": [],
"sources_registry": [
{
"path": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\requirements\\物流公司管理需求.md",
"type": "primary_requirement",
"role": "business_background",
"format": "md",
"authority": "primary"
}
],
"agent_notes": {
"test-strategist": "策略已生成,0 个 P0 风险需 100% 覆盖",
"testpoint-designer": "待 AI Agent 生成测试点",
"case-designer": "待 AI Agent 生成用例",
"data-builder": "测试数据模板已生成"
},
"analyze": {
"base_name": "物流公司管理需求",
"analysis_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\analysis\\物流公司管理需求_分析.md",
"relation_report_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\analysis\\物流公司管理需求_关联与冲突.md",
"risk_report_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\analysis\\物流公司管理需求_风险评估.md",
"related_requirements": [
{
"path": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\requirements\\小象开票收款方创建需求.md",
"similarity": 0.150297
},
{
"path": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\requirements\\运单资料文件包下载需求.md",
"similarity": 0.119004
},
{
"path": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\requirements\\安徽运八需求.md",
"similarity": 0.112863
},
{
"path": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\requirements\\运单资料文件包下载需求.docx",
"similarity": 0.105512
}
],
"conflict_candidates_count": 0,
"conflict_summary": {},
"risk_matrix": {
"risks": [
{
"id": "RISK-DATA",
"category": "数据",
"keywords_matched": [
"隔离",
"删除",
"空值"
],
"likelihood": 3,
"impact": 4,
"score": 12,
"level": "P1",
"conflict_amplified": false
},
{
"id": "RISK-AVAILABILITY",
"category": "可用性",
"keywords_matched": [
"并发",
"幂等"
],
"likelihood": 2,
"impact": 4,
"score": 8,
"level": "P2",
"conflict_amplified": false
},
{
"id": "RISK-FINANCIAL",
"category": "资损",
"keywords_matched": [
"金额"
],
"likelihood": 1,
"impact": 5,
"score": 5,
"level": "P2",
"conflict_amplified": false
},
{
"id": "RISK-COMPLIANCE",
"category": "合规",
"keywords_matched": [
"审批"
],
"likelihood": 1,
"impact": 5,
"score": 5,
"level": "P2",
"conflict_amplified": false
},
{
"id": "RISK-COMPATIBILITY",
"category": "兼容性",
"keywords_matched": [
"版本"
],
"likelihood": 1,
"impact": 3,
"score": 3,
"level": "P2",
"conflict_amplified": false
}
],
"total": 5,
"p0_count": 0,
"p1_count": 1
},
"confirmation_gate": {
"required": true,
"reasons": [
"识别到 4 个历史相似需求,需确认与旧需求的关系类型、生效范围和是否需要回写历史需求。"
],
"pending_markers_count": 0,
"decision_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\decisions\\物流公司管理需求_确认结论.md",
"decision_status": "confirmed",
"decision_status_label": "已确认",
"allow_export_before_confirmation": true,
"candidate_decision_files": [
"E:\\Desktop\\xst_files\\test\\QaAutomationHub\\decisions\\物流公司管理需求_确认结论.md"
],
"suggested_decision_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\decisions\\物流公司管理需求_确认结论.md"
},
"agent_notes": {
"requirement-analyzer": "识别 4 个关联需求",
"conflict-detector": "检测到 0 个冲突候选",
"risk-assessor": "识别 5 个风险项"
},
"_meta": {
"zone": "analyze",
"base_name": "物流公司管理需求",
"updated_at": "2026-09-29T00:04:01.990791+00:00",
"status": "completed"
}
},
"analysis_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\analysis\\物流公司管理需求_分析.md",
"relation_report_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\analysis\\物流公司管理需求_关联与冲突.md",
"risk_report_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\analysis\\物流公司管理需求_风险评估.md",
"related_requirements": [
{
"path": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\requirements\\小象开票收款方创建需求.md",
"similarity": 0.150297
},
{
"path": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\requirements\\运单资料文件包下载需求.md",
"similarity": 0.119004
},
{
"path": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\requirements\\安徽运八需求.md",
"similarity": 0.112863
},
{
"path": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\requirements\\运单资料文件包下载需求.docx",
"similarity": 0.105512
}
],
"conflict_candidates_count": 0,
"conflict_summary": {},
"risk_matrix": {
"risks": [
{
"id": "RISK-DATA",
"category": "数据",
"keywords_matched": [
"隔离",
"删除",
"空值"
],
"likelihood": 3,
"impact": 4,
"score": 12,
"level": "P1",
"conflict_amplified": false
},
{
"id": "RISK-AVAILABILITY",
"category": "可用性",
"keywords_matched": [
"并发",
"幂等"
],
"likelihood": 2,
"impact": 4,
"score": 8,
"level": "P2",
"conflict_amplified": false
},
{
"id": "RISK-FINANCIAL",
"category": "资损",
"keywords_matched": [
"金额"
],
"likelihood": 1,
"impact": 5,
"score": 5,
"level": "P2",
"conflict_amplified": false
},
{
"id": "RISK-COMPLIANCE",
"category": "合规",
"keywords_matched": [
"审批"
],
"likelihood": 1,
"impact": 5,
"score": 5,
"level": "P2",
"conflict_amplified": false
},
{
"id": "RISK-COMPATIBILITY",
"category": "兼容性",
"keywords_matched": [
"版本"
],
"likelihood": 1,
"impact": 3,
"score": 3,
"level": "P2",
"conflict_amplified": false
}
],
"total": 5,
"p0_count": 0,
"p1_count": 1
},
"confirmation_gate": {
"required": true,
"reasons": [
"识别到 4 个历史相似需求,需确认与旧需求的关系类型、生效范围和是否需要回写历史需求。"
],
"pending_markers_count": 0,
"decision_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\decisions\\物流公司管理需求_确认结论.md",
"decision_status": "confirmed",
"decision_status_label": "已确认",
"allow_export_before_confirmation": true,
"candidate_decision_files": [
"E:\\Desktop\\xst_files\\test\\QaAutomationHub\\decisions\\物流公司管理需求_确认结论.md"
],
"suggested_decision_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\decisions\\物流公司管理需求_确认结论.md"
},
"design": {
"base_name": "物流公司管理需求",
"strategy_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\analysis\\物流公司管理需求_测试策略.md",
"test_points_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\test_points\\物流公司管理需求_测试点.md",
"test_cases_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\test_cases\\物流公司管理需求_测试用例.md",
"test_data_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\analysis\\物流公司管理需求_测试数据.md",
"p0_required_coverage": "N/A",
"agent_notes": {
"test-strategist": "策略已生成,0 个 P0 风险需 100% 覆盖",
"testpoint-designer": "待 AI Agent 生成测试点",
"case-designer": "待 AI Agent 生成用例",
"data-builder": "测试数据模板已生成"
},
"_meta": {
"zone": "design",
"base_name": "物流公司管理需求",
"updated_at": "2026-09-29T00:04:01.993186+00:00",
"status": "completed"
}
},
"strategy_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\analysis\\物流公司管理需求_测试策略.md",
"test_points_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\test_points\\物流公司管理需求_测试点.md",
"test_cases_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\test_cases\\物流公司管理需求_测试用例.md",
"test_data_file": "E:\\Desktop\\xst_files\\test\\QaAutomationHub\\output\\analysis\\物流公司管理需求_测试数据.md",
"p0_required_coverage": "N/A"
}
@@ -0,0 +1,21 @@
# 物流公司管理需求 关联需求与冲突检查
## 目标需求
- `requirements\物流公司管理需求.md`
## 项目画像
- `knowledge_base\00_project\project_profile.md`
## 关联技术方案
- 未识别到同主题技术方案文档。
## 关联需求识别
| 序号 | 关联需求 | 相似度 |
| :--- | :--- | :--- |
| 1 | `requirements\小象开票收款方创建需求.md` | 0.1503 |
| 2 | `requirements\运单资料文件包下载需求.md` | 0.1190 |
| 3 | `requirements\安徽运八需求.md` | 0.1129 |
| 4 | `requirements\运单资料文件包下载需求.docx` | 0.1055 |
## 潜在冲突与修改建议
- 暂未识别到明显冲突条目。建议在需求评审时继续人工确认。
@@ -0,0 +1,450 @@
# 物流公司管理需求 需求分析
> 生成时间: 2026-09-29
> 需求文档: `requirements/物流公司管理需求.md`(v1.1;第八章 Q1–Q6 决议已确认,同日完成"核算即运单核算"口径纠正)
> 标准化输入: `output/normalized_inputs/物流公司管理需求/requirement.md`(权威输入,解析置信度 1.0)
> 交互原型: `prototypes/物流公司管理原型.html`(可点击演示、数据不落库,仅作交互参照)
> 项目画像: `knowledge_base/00_project/project_profile.md`
> 术语口径: `knowledge_base/01_standards/terminology.md`
> 输入边界: 无同主题技术方案文档、无附加源文件(prepare manifest:`technical_solution_files=[]`、`attached_source_files=[]`、`sources_registry` 仅主需求)
> 确认状态: 关联与冲突已确认——与 4 个历史需求均为"并行"关系、无冲突(`decisions/物流公司管理需求_确认结论.md`,2026-09-29);需求自身遗留 Q7 待确认,另有 4 项口径细化建议,合计 5 项待确认见第 11 章
> 术语统一口径: 标准词沿用术语表(运八平台端 / 运单 / 货源 / 运费核算 / 货主打款 / 财务打款 / 幂等性 / 审计日志 / 权限控制 / 机构数据隔离);需求文档自有词以需求为准(物流公司 / 物流合同 / 生效合同 / 无外协公司 / 核算状态)。**全文禁用"核算单"表述**——核算即运单核算,无独立核算单(第八章口径纠正),操作对象一律为运单
---
## 1. 背景与目标
### 1.1 业务背景
平台现有承运主体以车队/司机为主。随着业务扩展,出现由**外协物流公司**整段承运的场景:平台将一批运单委托给一家物流公司完成,运费按公司口径核算与结算。当前系统缺少物流公司档案维护入口、合同以线下方式管理,导致:
- 物流公司信息分散、口径不一致(同一公司在不同运单、打款记录中名称/信用代码写法不一);
- 合同(含税源地归属)无系统记录,开票与核算缺少依据;
- 核算人员勾选结算对象时无可用清单,只能手工填写,效率低且易错。
本需求提供:档案管理(增删改查+启停用)、合同管理、运单核算勾选、货源选择、打款筛选与多列表展示的一整套**记录性**能力。
### 1.2 核心目标(可量化)
| 编号 | 目标 | 量化口径 |
| :--- | :--- | :--- |
| G1 | 提供物流公司档案管理能力(FR-01~FR-06,均 P0) | 新增/编辑/删除/启停用/列表查询 5 类操作可用;唯一性三字段(名称、统一社会信用代码、简称码)重复均有明确提示且 DB 层兜底 |
| G2 | 运单核算环节勾选物流公司(FR-07,P0) | 修改核算弹窗单选、选填;选择弹窗仅启用公司、分页 20 条/页;保存后 3 个快照字段(ID+名称+信用代码)落运单表;未选择可正常保存 |
| G3 | 货源、打款页面延伸落地(FR-08~FR-10,均 P1) | 1 个货源选择入口 + 3 个打款页面筛选项(货主打款/财务打款/打款记录)+ 4 个列表展示列(货源管理/运单管理/货主打款/财务打款) |
| G4 | 验收基准(对应需求第九章 10 项验收要点) | 页面级数字口径:列表与选择弹窗默认 20 条/页(可选 10/20/50/100);导出上限 20000 条;客户收货地址 ≤200 字符;公司名称 ≤50、法人 ≤30、联系人 ≤20、详细地址 ≤100、备注 ≤200 字符 |
---
## 2. 范围与边界
### 2.1 本期范围
| 模块 | 范围 |
| :--- | :--- |
| 基础信息 → 承运管理 → 物流公司管理(新增菜单) | 列表查询/导出、新增、编辑(企业资料 + 合同管理两 Tab)、逻辑删除、启用/停用、证件上传 |
| 合同管理(编辑页内 Tab) | 合同列表筛选/导出、新增/编辑/删除/查看、附件上传与预览下载、状态自动计算 |
| 整车运输 → 承运结算 → 运费核算 | 修改核算弹窗新增"物流公司"(选填单选)与"客户收货地址"(选填)字段,核算数据填充至**运单表** |
| 整车运输 → 货源管理 → 发布货源/编辑货源 | 新增"物流公司"字段(选填单选),保存快照 |
| 整车运输 → 承运结算 → 货主打款 / 财务打款 / 打款记录 | 查询区新增"物流公司"筛选项;列表新增"物流公司"展示列 |
| 整车运输 → 运输管理 → 运单管理 | 列表新增"物流公司"展示列(只读、导出含列) |
| 平台通用 | 角色权限、机构数据隔离、行为日志(增删改/启停用/合同操作) |
### 2.2 明确不在本期范围
- 物流公司登录端(APP/门户)、给物流公司开账号(需求 1.3)。
- 合同审批流、电子签章(需求 1.3)。
- 与现有"承运人管理/车队管理"实体的打通或合并(需求 1.3;Q4 决议:独立建档 + 信用代码唯一防重)。
- 基于合同的自动计费、自动开票(需求 1.3)。
- 合同列表选择框的批量操作(6.4:本期仅保留列,不提供批量操作)。
- 附件多附件上传(Q6:单附件)。
- 物理删除入口(BR-04/6.5:公司不提供物理删除;合同为物理删除但非"批量")。
- 物流公司批量地填充至批量核算(Q7 待确认,当前口径不支持,见 11.2 #1)。
### 2.3 灰度/地域/渠道差异
- 端与渠道:仅运八平台端(Web 管理后台,Vue.js + Element UI SPA),无司机端/货主端渠道差异;无营销、优惠券、积分类能力(项目画像 §4 禁用能力与本需求无关)。
- 地域:功能本身无地域差异;数据隔离口径为"物流公司按创建机构归属,跨机构不可见、不可操作"(沿用平台多机构规则,需求第 3 章)。
- 灰度:需求未描述灰度发布、分批放量或回滚安排;按平台常规全量发布假设编制测试范围。若评审有灰度和回滚要求,需在评审时补充(不影响本期待测范围定义)。
---
## 3. 用户角色与前置条件
### 3.1 用户角色
| 角色 | 职责 | 关注点 |
| :--- | :--- | :--- |
| 运营管理员(基础信息维护岗) | 物流公司新增/编辑/删除/启停用、合同管理(全部操作) | 唯一性校验体验、删除阻断原因提示、合同时间/附件校验、证件上传完整性 |
| 核算人员 | 运费核算时在**运单**上勾选物流公司;物流公司列表**只读**查看(不可增删改) | 选择弹窗可用性(搜索/分页/单选/清除)、选填不阻断保存、无生效合同仅提示 |
| 系统管理员 | 可授权上述权限给其他角色(沿用平台角色权限体系) | 菜单与角色权限配置正确性、授权后可见性 |
| 财务人员(受影响角色,非本需求新增权限) | 在货主打款/财务打款页面执行查询与打款操作(原有职责) | 新增筛选/展示列不得影响打款、驳回等既有操作与金额计算;上报触发不受影响(回归关注点) |
- 数据权限:沿用平台多机构数据隔离规则;物流公司按创建机构归属,**跨机构不可见、不可操作**(需求第 3 章)。
- 所有增/删/改操作写入行为日志(操作人、时间、IP、变更内容摘要)(需求第 3 章)。
### 3.2 前置条件
1. 系统管理员已完成菜单可见性与角色授权(物流公司管理菜单;核算人员已授运费核算权限;财务人员已有打款页面权限)。
2. "数据字典-税源地"已维护(合同新增依赖,与企业货主税源地同源)。
3. 存在基础数据:启用/停用状态的物流公司若干(含"有生效合同"与"无生效合同"两态)、待生效/生效中/已过期合同、"货源/运单(含未核算/已核算)/货主打款/财务打款记录(含已关联与未关联物流公司)"。
4. 环境可用:运八平台端测试环境可达;文件服务/华为云 OBS 可用(合同附件上传、预览、下载依赖)。
5. 机构环境:至少两个机构,用于跨机构数据隔离验证;物流公司按创建机构归属。
6. 引用前置:验证 BR-04 需存在"被运单引用"与"未被引用"两类公司;验证 Q3 需存在"无生效合同"的公司;验证 Q7 需存在带批量核算入口的运单列表。
---
## 4. 关键业务规则
### 4.1 总原则:记录性 与 约束性 必须分开表述(1.4 + 第八章总原则)
本需求同时包含两类性质完全不同的规则,分析、测试与缺陷定级时**不可混为一谈**:
**(一)记录性(业务关联层面,无任何流程控制)**
- 物流公司档案及其在运单、货源、打款上的关联,仅用于业务记录、展示与追溯;
- 是否选择物流公司、所选公司是否存在生效合同,均**不阻断、不改变**任何业务流程(核算、货源、运单、打款等);
- 合同状态(待生效/生效中/已过期)**仅作信息展示**,不参与任何校验或计费;
- 打款筛选与展示列仅作查询过滤与结果展示,**不影响打款流程、金额计算与任何审批动作**。
**(二)约束性(仅针对档案数据自身的一致性,不属于流程控制)**
- **BR-01 唯一性**:公司名称/统一社会信用代码/简称码全平台唯一(不含已逻辑删除的公司);
- **BR-04 删除保护**:存在"生效中"合同或被任一运单引用的公司禁止删除,仅可停用;
- 唯一性采用"应用层校验 + 数据库层约束"双保险;新增/保存接口沿用平台统一幂等口径。
### 4.2 规则清单
**BR-01 唯一性【数据一致性·重点】**(触发条件:新增或编辑提交任一唯一性字段)
- 公司名称:全平台唯一(不含已逻辑删除的公司),≤50 字符;
- 统一社会信用代码:全平台唯一,格式按国标 18 位 `[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}`,失焦即校验;
- 简称码(选填):全平台唯一,2-4 位纯字母(对标企业货主口径);
- 唯一约束在**数据库层**实现(应用层先校验给出友好提示);编辑时重新执行唯一性校验(排除自身)。
**BR-02 状态定义**
- 物流公司仅两种状态:启用 / 停用;新增后默认为启用。
**BR-03 合同规则**(触发条件:合同新增/编辑/查看/删除及跨日期自动计算)
- 同一物流公司下合同编号唯一,不同公司之间允许重复;编号 ≤50 字符;
- 过期时间必须晚于生效时间;
- 合同状态由系统按当前日期**自动计算**:待生效 / 生效中 / 已过期,**不可手工设置**;判定口径:当前日期 ∈ [生效时间, 过期时间] 为生效中(含边界当天);
- 附件仅允许 pdf/doc/docx/jpg/jpeg/bmp/png(对标企业货主合同附件口径);单附件;**暂不设置大小上限**(Q6 决议,格式白名单保留);
- 签订时间可晚于当前日期(补录场景),不做强校验。
**BR-04 删除约束【数据一致性·重点】**(触发条件:发起删除操作)
- 删除为**逻辑删除**,需二次确认;不提供物理删除入口;
- 满足任一条件时**禁止删除**,仅可停用:①存在状态为"生效中"的合同;②已被任一运单引用(运单上记录了该公司,历史运单需追溯公司信息);
- 阻断提示须说明具体原因(生效合同数 / 被运单引用),并引导改用"停用";
- 删除后:列表不可见,导出与核算勾选均不含已删除公司;
- 本规则为**档案数据完整性保护**,不属于业务流程控制(见 4.1)。
**BR-05 启用/停用影响**(触发条件:行内开关或编辑页发起启停用)
- 停用:立即不再出现在运费核算的勾选弹窗中;**已核算的运单不受影响**;档案仍可查询、编辑、管理合同;停用需二次确认;
- 启用:恢复出现在勾选列表;启用即时生效;
- 停用只控制"核算勾选可见性",不改变历史展示与打款筛选(停用公司仍可按"含停用"筛出历史打款记录,BR-08)。
**BR-06 运单核算关联物流公司(单选、选填)【金额相关:不参与计费;数据一致性:快照落库】**
> 口径纠正(2026-09-28):核算单与运单是同一个东西——核算是将核算数据**填充到运单表**,无独立核算单、不存在"新建核算单"。本节操作对象均为**运单**。
1. 入口:整车运输 → 承运结算 → 运费核算;页面即运单列表(含"核算状态"列:未核算/已核算);核算人员通过行内"编辑"打开**修改核算**弹窗,弹窗提供"选择物流公司"入口,选择结果**填充到运单表**;
2. 选择弹窗仅加载**启用状态**公司,默认按创建时间倒序,支持按公司名称/统一社会信用代码搜索,分页默认 20 条/页(BR-06.2);
3. **单选(Q1 决议)**:一张运单仅可关联一家物流公司;再次选择时替换上次结果;核算时**自动带出**货源已选公司(FR-08),可取消选择(清除)与再次选择(更换);
4. **选填、不强制(Q2 决议)**:未选择时核算数据正常保存到运单(运单上记为"无外协公司"),不影响任何流程;
5. 无生效合同的公司**可勾选(Q3 决议)**,行内"⚠ 无生效合同"仅作信息提示,不做任何阻断;
6. 保存核算时若已选择公司,将其 **ID + 公司名称 + 统一社会信用代码** 写入**运单表**对应字段;此后公司改名/停用/删除均**不影响运单上已保存的信息(快照口径)**;运单表冗余存储 company_name、uscc,不做联表实时取值;
7. "**客户收货地址**"字段(2026-09-28 新增):**选填**文本(≤200 字符),**仅作记录**,填充到运单表并随运单展示,不参与任何校验、流程与计费;
8. 已核算运单再次修改核算:覆盖更新运单上的核算字段并记录日志(**不产生新单据**);
9. 核算保存时若公司已被停用/删除:后端二次校验,提示具体公司名并要求重新选择(数据有效性校验,非流程控制);
10. **批量核算**:沿用现有逻辑;是否支持批量填充物流公司/客户收货地址见 11.2 #1(Q7 待确认)。
**BR-07 货源选择物流公司(FR-08)**
- 新建/编辑货源(发布货源页面)增加"物流公司"字段:选填、单选,交互复用 BR-06 的选择弹窗(仅启用公司);
- 所选公司仅作为该货源及其关联运单的**记录信息**展示与追溯,不参与货源、运单、结算的任何流程判断与计费;
- 编辑货源可更换或清除所选公司;保存时写入信息快照(BR-07.3)。
**BR-08 打款列表物流公司筛选(FR-09)【金额相关·重点:不得触碰金额逻辑】**
- 打款分为**货主打款**与**财务打款**两个独立页面(均位于整车运输 → 承运结算),两页面查询区均增加"物流公司"下拉筛选项;**打款记录页同步增加**;
- 下拉选项:全部 / 无外协公司 / 各物流公司(**含停用状态**——历史打款记录需可按原公司查出);
- 过滤依据为运单上记录的物流公司(由货源选择带入,FR-08);未关联公司的运单归入"无外协公司";可与其他筛选条件组合查询;
- 仅作查询过滤与结果展示,**不影响打款流程、金额计算与任何审批动作**。
**BR-09 列表显示物流公司(FR-10)**
- 4 个列表显示"物流公司"列:货源管理列表(该货源所选公司)/ 运单管理(关联货源上记录的物流公司,随货源带入)/ 货主打款 / 财务打款(运单上记录的公司快照);未关联统一显示"**无外协公司**";
- 展示口径为公司名称**快照**:公司后续改名/停用/删除,历史记录仍显示保存时的名称,不受影响;
- 该列为只读展示,不参与任何流程;列表导出 Excel 需同步包含"物流公司"列;
- 建议列位置(需求 6.9):货源管理列表置于"目的地"之后;运单管理置于"承运司机"附近;货主打款/财务打款置于"运输单号"之后。
**权限与数据隔离(需求第 3 章)【权限·重点】**
- 角色权限:运营管理员(档案与合同全操作)、核算人员(核算勾选 + 物流公司列表只读)、系统管理员(授权);
- 数据权限:物流公司按创建机构归属,跨机构不可见、不可操作;
- 行为日志:增/删/改、启停用、合同增删改均写日志(操作人、时间、IP、变更内容摘要)。
### 4.3 决议口径固化(第八章 Q1–Q6,已于 2026-09-28 确认)
| 编号 | 问题 | 决议(必须体现在测试设计中的口径) |
| :---: | :--- | :--- |
| Q1 | 勾选粒度 | 核算(运单)**仅可勾选一家**(单选);再次选择替换 |
| Q2 | 是否强制勾选 | **不强制、不必填**;未选择按"无外协公司"正常保存核算 |
| Q3 | 无生效合同的公司可否勾选 | **可勾选**;"无生效合同"仅作信息提示 |
| Q4 | 与承运人/车队体系是否打通 | **本期不处理**;独立建档 + 信用代码唯一防重 |
| Q5 | 道路运输经营许可证是否必传 | **不是必传**;营业执照、法人身份证人像面/国徽面必传 |
| Q6 | 合同附件大小上限/多附件 | **暂不设大小上限**(格式白名单保留);单附件 |
### 4.4 重点标注汇总
- **金额**:本需求**不新增、不修改任何金额计算**——核算弹窗的物流公司/客户收货地址字段不参与运费计算;打款页面改造仅筛选与展示,打款金额、流程、审批与上报触发均不得改变(RISK-FINANCIAL,回归重点)。
- **权限**:三角色权限分层 + 机构数据隔离 + 核算人员只读 + 敏感证件(营业执照/法人身份证照片)访问留痕(RISK-COMPLIANCE)。
- **数据一致性**:唯一性双保险(应用层+数据库层,含并发场景)、快照落库(不联表实时取值)、逻辑删除保护(BR-04 双条件)、幂等防重(RISK-DATA,P1 最高风险)。
---
## 5. 主流程描述
### 流程 A:物流公司建档(FR-01/02)
1. 运营管理员进入 基础信息 → 承运管理 → 物流公司管理;列表默认创建时间倒序加载(分页默认 20 条/页)。
2. 点击"新增"进入新增页(对标企业货主-新增:上方证件上传区 + 下方两栏表单)。
3. 上传证件:营业执照(必传,jpg/jpeg/png/pdf)、法人身份证人像面/国徽面(必传,jpg/jpeg/png)、道路运输经营许可证(**选填**,Q5)。
4. 填写表单:公司名称(≤50)、统一社会信用代码(18 位国标,**失焦即校验**)、法人代表名称(≤30)、联系人(≤20)、联系方式(手机号格式)、简称码(选填,2-4 位纯字母)、企业通信地址(省市区级联)、详细地址(≤100)、备注(选填,≤200)。
5. 提交 → 服务端执行唯一性双保险校验:
- 【分支-1|校验通过】保存成功 → 返回列表,提示"新增成功",新公司状态=**启用**;
- 【分支-2|校验失败】表单不清空,错误字段就近标红提示;并发场景下后提交者失败且提示友好。
6. 返回列表后可继续操作:启停用开关、编辑(→流程 B)、删除(受 BR-04 约束)。
### 流程 B:合同录入与管理(FR-03/06)
1. 列表点击公司名称 → 编辑页 → **合同管理 Tab**(对标企业货主-编辑-合同管理)。
2. (可选)按合同编号 / 所属税源地 / 签订时间范围 / 创建时间范围筛选。
3. 点击"新增" → 打开新增合同弹窗(对标企业货主-新增合同弹窗)。
4. 填写:合同编号(同公司唯一,≤50)、签订时间(可晚于当前日期)、生效时间、过期时间(须晚于生效时间)、所属税源地(数据字典-税源地下拉)、附件(必传,单附件,格式白名单 pdf/doc/docx/jpg/jpeg/bmp/png,不设大小上限)。
5. 保存 →【分支-1|校验通过】入库,合同状态由系统按当前日期自动计算(待生效/生效中/已过期);【分支-2|校验失败】阻断并提示(编号重复 / 过期时间 ≤ 生效时间 / 附件格式不符)。
6. 列表行操作:查看(只读弹窗,附件可预览/下载)、编辑、删除(二次确认 + 操作日志);合同状态列随日期自动变化,不可手工设置。
### 流程 C:运单核算关联物流公司(FR-07,单选/选填)
1. 核算人员进入 整车运输 → 承运结算 → 运费核算(页面即运单列表,含"核算状态"列:未核算/已核算,带批量核算按钮)。
2. 对目标运单点击行内"编辑" → 打开**修改核算**弹窗(运单号、货主名称、司机姓名、车牌号、结算吨位等原有字段不变)。
3. 【分支-1】货源已选物流公司(FR-08)→ 弹窗**默认带入**该公司;【分支-2】货源未选 → 初始为空(选填)。
4. 点击"选择物流公司" → 弹窗加载**仅启用状态**公司(创建时间倒序、名称/信用代码搜索、20 条/页、**单选**;无生效合同行显示"⚠ 无生效合同",仅提示、可勾选)。
5. 选择并"确定" → 回填修改核算弹窗;也可**清除**(取消选择)或**重新打开弹窗更换**(替换上次选择)。
6. 填写"客户收货地址"(选填,≤200 字符纯文本)→ 点击"保存/核算"。
7. 服务端保存:【分支-1|已选公司】将 ID+名称+信用代码写入运单表,核算状态 → 已核算;【分支-2|未选公司】正常保存,运单记为"无外协公司";【分支-3|公司已被停用/删除】后端二次校验阻断,提示公司名要求重新选择。
8. 运费核算列表与运单管理的"物流公司"列按运单表快照展示;公司后续改名/停用/删除不影响该记录。
### 流程 D:货源选择物流公司(FR-08)
1. 整车运输 → 货源管理 → 发布货源(新建)/ 编辑货源;在承运信息区("指定车队司机"附近)"物流公司"字段点击"选择物流公司"。
2. 复用 BR-06 选择弹窗(仅启用、搜索、分页、单选)→ 回显公司名称/信用代码/联系人;可"移除"清空或再次打开弹窗更换。
3. 保存货源 → 写入所选公司信息快照;随货源展示并作为关联运单的记录信息来源。
4. 选择与否、公司有无合同,均不影响货源发布、接单、运单流转与结算(含关键分支:不选择直接保存——正常)。
### 流程 E:打款筛选与展示(FR-09/10)
1. 进入 整车运输 → 承运结算 → **货主打款** / **财务打款**(两个独立页面)或打款记录页。
2. 查询区选择"物流公司"筛选项(全部 / 无外协公司 / 各物流公司含停用),可与其他条件(运单号、打款状态、打款时间范围等)组合查询,结果实时过滤。
3. 列表展示"物流公司"列(快照口径;未关联显示"无外协公司")。
4. 后续打款、驳回等操作**沿用原有逻辑**执行,不受筛选与展示影响(含关键分支:停用公司仍可按"含停用"选项筛出历史打款记录)。
### 流程 F:启用/停用(FR-05)
1. 列表行内开关(或编辑页)发起"停用" → **二次确认** → 停用生效:立即从核算/货源选择弹窗消失;已核算运单、历史列表展示、打款筛选不受影响;档案仍可查询、编辑、管理合同。
2. "启用"即时生效:恢复出现在选择弹窗。
---
## 6. 异常流程(含关键边界处理)
| 异常场景 | 触发条件 | 处理方式 | 恢复路径 |
| :--- | :--- | :--- | :--- |
| 唯一性冲突(新增/编辑) | 公司名称/信用代码/简称码与全平台(不含已逻辑删除)记录重复 | 错误字段就近标红 + 明确提示;表单不清空;数据库层唯一约束兜底 | 修改为唯一值后重新提交 |
| 并发同码提交 | 两人同时提交同一统一社会信用代码 | 应用层校验 + DB 层约束拦截,后提交者失败并友好提示,不产生重复数据 | 重新查询确认后修改提交 |
| 重复提交(幂等) | 快速重复点击"新增/保存"按钮 | 沿用平台统一幂等口径防重,不产生重复数据 | 无需处理,以最终一次结果为准 |
| 删除被阻断——生效合同 | 公司存在状态为"生效中"的合同 | 阻断删除,提示具体原因(生效合同数),引导改用"停用" | 停用;或待合同过期后删除 |
| 删除被阻断——被运单引用 | 任一运单上记录了该公司 | 阻断删除,提示"被运单引用"并引导停用 | 停用;历史追溯由快照字段保证 |
| 选择弹窗公司列表加载失败 | 接口/网络异常 | 空状态 + "重新加载"按钮 | 点击重新加载 |
| 选择弹窗搜索无结果 | 关键词无匹配记录 | 空状态"未找到符合条件的物流公司" | 更换关键词 |
| 核算保存时公司已停用/删除 | 弹窗打开后至保存前公司状态被他人变更 | 后端二次校验:提示具体公司名并要求重新选择(数据有效性校验,非流程控制) | 重新选择启用公司或清除后保存 |
| 合同时间非法 | 过期时间 ≤ 生效时间 | 阻断保存并提示 | 修正日期后重新提交 |
| 合同附件格式不符 | 上传非白名单格式(pdf/doc/docx/jpg/jpeg/bmp/png 之外) | 拒绝上传并提示格式白名单 | 更换合规文件 |
| 附件上传依赖失败 | 文件服务/华为云 OBS 不可用或超时 | 沿用现有文件服务错误处理(上传失败提示、支持重试) | 重试上传;不影响表单已填内容 |
| 已停用/已删除公司的历史记录 | 公司停用/删除后查看历史运单、货源、打款 | 快照口径正常展示(不受影响);打款筛选"含停用"仍可筛出历史记录;已删除公司不出现在选择弹窗、导出与核算勾选 | 无需恢复(预期行为) |
| 字段超长/特殊字符 | 输入超过限定长度或含特殊字符 | 按字段限制拦截并提示(名称≤50/法人≤30/联系人≤20/详细地址≤100/备注≤200/地址≤200) | 修正后提交 |
| 未选择物流公司保存核算(**边界**) | 选填未选(Q2 决议) | 正常保存,运单记为"无外协公司",不阻断任何流程 | 不适用(预期行为) |
| 无生效合同公司被勾选(**边界**) | Q3 决议场景 | 允许勾选,仅"⚠ 无生效合同"信息提示,不做阻断 | 不适用(预期行为) |
| 已核算运单再次修改核算(**边界**) | 对已核算运单重新打开修改核算弹窗 | 覆盖更新运单核算字段并记日志,不产生新单据 | 不适用(预期行为) |
---
## 7. 状态流转
### 7.1 物流公司档案状态
- **状态列表**:启用 / 停用 / 已删除(逻辑删除,终态,无恢复入口)。
- **合法流转**:
- 新增 → 启用(默认);
- 启用 ↔ 停用(停用需二次确认;启用即时生效);
- 启用/停用 → 已删除(**仅当**无生效中合同且未被任一运单引用)。
- **禁止流转**:
- 存在"生效中"合同 → 已删除(阻断,仅可停用);
- 被任一运单引用 → 已删除(阻断,仅可停用);
- 已删除 → 启用/停用(无入口,逻辑删除后列表不可见、不可恢复操作)。
### 7.2 合同状态(系统按当前日期自动计算)
- **状态列表**:待生效 / 生效中 / 已过期。
- **合法流转**:待生效 → 生效中 → 已过期(随时间推移单向自动流转);边界口径:当前日期 ∈ [生效时间, 过期时间] = 生效中(生效时间当天=当前日期 → 生效中;过期时间当天=当前日期 → 仍为生效中)。
- **禁止流转**:手工设置/修改合同状态(不可编辑,仅系统计算);过期时间 ≤ 生效时间的保存(阻断);合同删除为物理删除(非状态流转,删除后记录消失)。
### 7.3 运单核算状态
- **状态列表**:未核算 / 已核算(运费核算页面"核算状态"列)。
- **合法流转**:未核算 → 已核算(保存核算后);已核算 → 已核算(再次修改=**覆盖更新**,无新状态、无新单据)。
- **禁止流转**:不存在独立的"核算单"状态机(口径纠正:核算即运单核算);已核算不可回到"未核算"(无撤销入口定义)。
### 7.4 与运单核心状态机的关系(解耦声明)
- 运单核心状态机(项目画像 §5.2:待运输 → 运输中 → 已卸货 → 已结算 → 已垫付/已打款)**不受本需求影响**;物流公司关联不是任何状态流转的前置或后置条件;
- 打款流程状态(打款、驳回等)不因 BR-08 筛选与展示而改变;
- 货源状态不因是否选择物流公司而改变(BR-07.4)。
---
## 8. 技术方案补充约束
> 输入说明:本次无同主题技术方案文档(prepare manifest `technical_solution_files=[]`;关联与冲突报告确认"未识别到同主题技术方案文档")。以下约束提取自**需求文档第七章《数据与接口要点》**与**项目画像技术栈**,作为技术约束补充;不臆造接口细节。
| 项 | 约束 | 来源 |
| :--- | :--- | :--- |
| 表设计 | `logistics_company`(主档)、`logistics_contract`(合同,company_id 外键);**运单表新增核算字段**:物流公司(company_id + company_name + uscc 冗余存储)、客户收货地址、核算状态 | 需求 §7 |
| 删除口径 | 物流公司逻辑删除(deleted 标志);合同**物理删除**并记日志 | 需求 §7 |
| 唯一性 | 名称/信用代码/简称码唯一约束在**数据库层**实现,应用层先校验给出友好提示(双保险) | 需求 §7/§9-8 |
| 快照 | 运单表冗余存储 company_name、uscc,核算保存时写入;**不做联表实时取值**(测试判据:改名后历史记录不变=证明未联表) | 需求 §7/BR-06.6 |
| 附件 | 存华为云 OBS,库内仅存 URL;上传接口复用现有文件服务;格式白名单保留、不设大小上限、单附件(Q6) | 需求 §7/6.4 |
| 导出 | 列表导出复用平台 Excel 导出组件(**默认上限 20000 条**);合同管理导出同组件 | 需求 §7/6.1/6.4 |
| 日志 | 增删改、启停用、合同增删改均记行为日志(操作人、时间、IP、变更内容摘要) | 需求 §7/第 3 章 |
| 幂等 | 新增/保存接口防重复提交(沿用平台统一幂等口径) | 需求 §7 |
| 前端交互 | Vue + Element UI SPA;信用代码"失焦即校验"(依赖唯一性校验接口异步调用);选择弹窗搜索/分页(20 条/页) | 需求 §6.2/BR-06.2;项目画像 §6.2 |
| 数据字典 | 税源地下拉数据来源"数据字典-税源地",与企业货主同源 | 需求 6.4 |
| UI 对标 | 新增表单/编辑页合同管理 Tab/新增合同弹窗三类交互对标"企业货主"(截图基线);运单核算弹窗、货源选择为新增设计 | 需求 §10 |
| 原型 | `prototypes/物流公司管理原型.html` 为可点击演示、数据不落库,仅作交互参照,测试以真实环境落库行为为准 | 需求文档头 |
---
## 9. 项目差异化测试约束
> 来源:`knowledge_base/00_project/project_profile.md`(运八网络货运平台)+ 本次激活术语表 + `knowledge_base/02_history/*`(历史缺陷与漏测清单直接适用项)。
1. **端与账号**:运八平台端 Web 管理后台(Element UI SPA);管理端测试环境 `https://ybxcx.ynyun8.com:8000/admin`;主账号 super_admin(项目画像 §1);核算人员/财务场景需配套权限账号。
2. **多机构数据隔离(必测)**:物流公司按创建机构归属,跨机构不可见、不可操作(需求第 3 章 + 项目画像 §7.3/§8.2"机构间数据隔离、越权操作");核算人员进入物流公司列表为只读(验收要点 7)。
3. **敏感资质信息**:营业执照、法人身份证人像面/国徽面属敏感信息(人社资质),权限控制 + 行为日志为合规必测项(RISK-COMPLIANCE)。
4. **华为云 OBS 依赖**:合同附件上传/预览/下载依赖 OBS(项目画像 §6.1),依赖不可用为可用性风险;结合"选择弹窗加载失败空态与重试"一并覆盖(RISK-AVAILABILITY)。
5. **Excel 导出口径**:本项目导出默认 20000 条上限(项目画像 §8.3);物流公司列表导出与合同导出需覆盖大数据量边界;导出必须包含"物流公司"列(BR-09.5)。
6. **幂等与并发(必测异常场景)**:项目画像 §8.2 要求覆盖"重复提交(幂等)、并发提交、状态已变化后操作"——对应新增/保存防重、并发同信用代码、核算保存时公司已停用/删除场景。
7. **金额安全回归**:打款页面改造是**回归重点**——金额计算(运费/服务费/能源费/居间费/税费)、打款/驳回流程、支付链路均不得受影响(项目画像 §5.1/§7.1 + RISK-FINANCIAL);验收要点 9 明确"筛选不改变打款/驳回等任何操作"。
8. **运单核心状态机不变**:物流公司关联不参与运单状态流转(项目画像 §5.2 禁止跳状态/逆状态);打款筛选展示不得引入任何状态副作用。
9. **后台 CRUD 与选择弹窗细项(历史漏测清单直接适用)**:`common_missed_scenes.md` §4——列表字段/默认排序/分页与需求一致、查询/重置/空结果提示、查看只读真不可编辑、正向成功链路(新增成功/编辑成功,不能只测失败与限制)、选择弹窗刷新/搜索/分页/排序/选择反馈完整。
10. **数据与边界(历史漏测清单)**:`common_missed_scenes.md` §1——空值/Null、超长字符、特殊字符提交;本需求字段长度限制明确(见 1.2 G4),须逐字段覆盖。
11. **跨模块数据一致性(历史缺陷主题防御)**:`common_missed_scenes.md` §6 + BUG-202607-03(跨模块数据不一致)——展示与筛选的数据来源必须正确(运单表快照 vs 联表取值);改造打款页面后需回归"上报数据来源正确、金额与支付流水一致"的既有口径;安徽运八上报触发不受影响(见第 10 章)。
12. **术语一致性**:分析/测试点/用例统一使用标准词;**禁用"核算单"**(口径纠正);"无外协公司"为统一空值展示词。
---
## 10. 跨需求关联与冲突修订建议
> 来源:`output/analysis/物流公司管理需求_关联与冲突.md`(4 个关联需求、0 个冲突候选)+ `decisions/物流公司管理需求_确认结论.md`(2026-09-29 已确认:均为"并行"关系)。
### 10.1 关联需求逐项判定
| 序号 | 关联需求(相似度) | 判定 | 冲突修订建议 |
| :---: | :--- | :--- | :--- |
| 1 | `小象开票收款方创建需求.md`(0.1503) | **并行模块**:菜单域(小象开票)与实体(司机/车辆/收款人 vs 物流公司主档与合同)均不同;Q4 决议明确与承运人/车队体系不打通,同理与开票建档无打通关系 | **无需修订**。防串扰提醒:两者均含企业主体信息,测试中不得混淆"收款方"与"物流公司"建档体系 |
| 2 | `运单资料文件包下载需求.md`(0.1190) | **并行模块**:文件包上传/异步打包/下载不读取物流公司字段、不依赖本次新增字段;本次仅给运单管理列表加只读列,不改运单管理既有数据口径 | **无需修订** |
| 3 | `安徽运八需求.md`(0.1129) | **页面级交集、无规则冲突**:本次改造货主打款/财务打款两个页面,安徽运八的打款完成触发上报逻辑建立于同一页面 | **无需修订需求**;列为**回归关注点**(见 10.2,具体、可执行) |
| 4 | `运单资料文件包下载需求.docx`(0.1055) | 与第 2 项为**同文异格式**(Word 原始载体 vs Markdown 维护稿),非独立需求;沿用既有裁定:以 .md 为唯一维护版 | **无需修订**(沿用 `decisions/运单资料文件包下载需求_确认结论.md`) |
### 10.2 回归关注点(页面级交集的具体化,非抽象描述)
问题:FR-09/BR-08/6.8 改造了货主打款/财务打款页面(查询区+列表列)。
影响范围:打款完成触发安徽运八上报的既有链路;打款金额与支付流水一致性。
建议修订/验证方向(需求本身不修订,回归清单必含):
1. 改造后,货主打款/财务打款**打款完成仍正常触发安徽运八第二次上报**,上报数据字段来源不变(金额来源于支付流水,防御 BUG-202607-03 类"跨模块数据不一致");
2. 物流公司筛选与展示列**不改变**打款、驳回等任何操作入口与结果;
3. 无外协公司的打款记录与新关联记录均能在两页面正常查询、打款。
### 10.3 兼容策略与回写结论
- 回写要求:**无**(确认结论 §5——不需回写当前/历史需求,无版本边界补充)。
- 兼容策略:历史运单/货源/打款记录上线后按快照口径显示,未关联记录统一显示"无外协公司",**无需历史数据回填**(RISK-COMPATIBILITY 对应验证点)。
- 冲突修订建议汇总:本次**无冲突条目**,无需任何修订动作;唯一跨需求动作是 10.2 的三条回归验证。
---
## 11. 风险点与待确认项
### 11.1 风险矩阵落地(来源:`物流公司管理需求_风险评估.md` + 确认结论 §7)
| 风险ID | 等级 | 焦点 | 必测场景映射 |
| :--- | :---: | :--- | :--- |
| RISK-DATA | **P1(评分 12)** | ①唯一性双保险(应用层+DB 层,含并发同码)②快照口径(冗余存储、不联表)③逻辑删除保护(BR-04 双条件) | 三唯一字段重复含并发、改名/停用/删除后 4 列表+导出+弹窗回显不变、删除双阻断+原因提示+引导停用;另叠加 11.2 #2 的展示口径确认项 |
| RISK-AVAILABILITY | P2 | 选择弹窗/合同附件加载失败的空态与重试 | 加载失败空态+重新加载、搜索无结果空态、附件上传依赖 OBS 失败重试 |
| RISK-FINANCIAL | P2 | 打款页面改造不得影响金额与流程 | 打款/驳回操作回归、金额不因筛选变化、安徽运八上报触发回归(10.2) |
| RISK-COMPLIANCE | P2 | 营业执照、法人身份证照片为敏感信息 | 权限分层、机构隔离、行为日志留痕、核算人员只读 |
| RISK-COMPATIBILITY | P2 | 历史数据"无外协公司"归属与导出列兼容 | 历史运单/货源/打款显示"无外协公司"、导出含新列、无需回填 |
### 11.2 待确认项(共 5 项:需求自带 Q7 + 4 项口径细化建议)
> ⚠️ 待确认:**批量核算是否需要支持批量填充"物流公司 / 客户收货地址"(需求第八章 Q7,P1)**、影响范围:运费核算批量入口的交互与落库逻辑、批量场景测试用例设计(当前按"不支持"口径生成——批量核算逻辑不变,不填充也不清除已存公司与地址)、若后续确认支持需补充用例与回归、建议确认方向:产品明确批量核算的字段范围(推荐维持不支持,或明确"批量仅处理原有核算字段,物流公司/客户收货地址仅单笔修改核算弹窗可填"),并把决议回写需求第八章。
> ⚠️ 待确认:**运单管理列表/导出及打款筛选的"物流公司"取值口径(P1,数据一致性——RISK-DATA 相关)**、问题:BR-09/6.9 表述运单管理显示"关联货源上记录的物流公司(随货源带入)",而 6.6 表述"展示运单表中的公司信息";当核算环节更换/清除了货源带入公司、或运单未核算时,两种口径结果不一致;且核算弹窗再次打开时的回显基准(运单表已存值 vs 货源当前值)未明确、影响范围:运单管理展示列与导出、货主打款/财务打款筛选过滤依据与展示列、快照一致性验证、建议确认方向:明确以运单表快照为准(核算保存即固化;未核算运单的回退取值——货源带入值或"无外协公司"——需二选一定义),并同步修订 BR-09/6.9 表述使全文一致。
> ⚠️ 待确认:**BR-04 删除保护是否应覆盖"仅被货源引用、尚未产生任何运单"的物流公司(P2)**、影响范围:删除阻断判定逻辑、货源追溯完整性(删除后货源列表仍显示快照名称、不空白;但公司档案不可再查)、建议确认方向:二选一定义——(a) 维持现状:仅"生效合同/运单引用"两条件阻断(推荐,货源快照已保真);(b) 追加"被货源引用"为阻断条件,同步修订 BR-04 与验收要点 2。
> ⚠️ 待确认:**唯一性校验的边界口径(P3)**、问题:(a) 选填"简称码"的空值是否参与全平台唯一(多家公司均留空是否冲突);(b) 编辑时"排除自身"是否覆盖名称/信用代码/简称码全部三类字段(6.3 仅明示名称与信用代码重校验),以及合同编号编辑时的排除自身校验、影响范围:新增/编辑表单校验用例、并发场景、数据库唯一约束对空值的处理语义、建议确认方向:明确"空值不参与唯一约束;名称/信用代码/简称码及合同编号编辑时均排除自身"为口径(推荐),并写入评审结论。
> ⚠️ 待确认:**"客户收货地址"的展示载体与范围(P3)**、问题:BR-06.7 仅述"填充到运单表并随运单展示",具体展示页面未明确(运单详情/运单管理列表列/运费核算列表/导出是否包含)、影响范围:展示类测试点与用例的断言位置、导出列范围、建议确认方向:明确至少"运单详情只读展示"为验收基线;是否加入列表列与导出列单独确认(推荐不加入列表列,避免列表字段膨胀)。
---
## 12. 需求条目清单(REQ 追溯链)
> 供测试点设计、用例编写与覆盖率审计引用;优先级基准继承功能清单(FR-01~07=P0,FR-08~10=P1,负向范围=P3)。
| 需求条目 | 内容摘要 | 来源章节 | 优先级基准 |
| :--- | :--- | :--- | :---: |
| REQ-001 | 新增菜单"基础信息 → 承运管理 → 物流公司管理"及菜单权限配置 | 6.1/第 3 章 | P0 |
| REQ-002 | 列表查询条件(公司名称/统一社会信用代码/联系方式模糊、状态、创建时间范围含当天)与查询/重置 | 6.1 | P0 |
| REQ-003 | 列表列完整:名称(链接入编辑)、简称码(未设置显示"-")、信用代码、法人、联系人/联系方式、生效合同数(实时统计)、状态开关(绿/灰)、创建人/时间、操作(编辑/删除) | 6.1 | P0 |
| REQ-004 | 默认排序创建时间倒序;分页默认 20 条/页,可选 10/20/50/100 | 6.1 | P1 |
| REQ-005 | 物流公司列表导出 Excel(沿用平台 20000 条上限口径) | 6.1 | P1 |
| REQ-006 | 新增证件上传:营业执照(jpg/jpeg/png/pdf)必传、法人身份证人像面/国徽面(jpg/jpeg/png)必传、道路运输经营许可证选填(Q5) | 6.2/第八章 | P0 |
| REQ-007 | 新增表单字段与校验:名称≤50 唯一、信用代码 18 位国标唯一且失焦即校验、法人≤30、联系人≤20、联系方式手机号、简称码(选填,2-4 位纯字母唯一)、企业通信地址省市区级联、详细地址≤100、备注≤200 | 6.2/BR-01 | P0 |
| REQ-008 | 提交成功→返回列表提示"新增成功"且状态为启用;失败表单不清空、错误字段就近标红 | 6.2 | P0 |
| REQ-009 | 唯一性规则:公司名称/统一社会信用代码/简称码全平台唯一(不含已逻辑删除的公司) | BR-01 | P0 |
| REQ-010 | 唯一性双保险:数据库层约束兜底 + 应用层友好提示;并发同信用代码后提交者失败 | 第 7 章/验收 8 | P0 |
| REQ-011 | 新增/保存接口幂等防重复提交(平台统一幂等口径) | 第 7 章 | P0 |
| REQ-012 | 编辑页结构:企业资料 + 合同管理两 Tab(结构预留扩展);名称/信用代码修改时排除自身重校验、数据回显 | 6.3 | P0 |
| REQ-013 | 删除:逻辑删除 + 二次确认;阻断条件(存在生效中合同 / 被任一运单引用)与原因提示、引导停用;不提供物理删除入口;删除后列表不可见、导出与核算勾选不含 | BR-04/6.5 | P0 |
| REQ-014 | 档案约束定界:BR-01/BR-04 为档案数据完整性保护,不属于业务流程控制(1.4 设计原则) | 1.4/BR-04 | P0 |
| REQ-015 | 停用:二次确认;立即从核算勾选弹窗消失;已核算运单不受影响;档案仍可查询/编辑/管理合同 | BR-05 | P0 |
| REQ-016 | 启用:即时生效恢复勾选可见;状态仅启用/停用,新增默认启用 | BR-05/BR-02 | P0 |
| REQ-017 | 合同筛选(合同编号/所属税源地/签订时间范围/创建时间范围)与查询/新增/导出按钮 | 6.4 | P1 |
| REQ-018 | 合同列表列(含合同状态自动列、选择框列——本期不提供批量操作)与行操作(查看/编辑/删除) | 6.4 | P1 |
| REQ-019 | 合同新增/编辑校验:编号同公司唯一≤50、签订时间可晚于当前不做强校验、过期时间晚于生效时间、所属税源地必选(数据字典)、附件必传单文件格式白名单、不设大小上限(Q6) | 6.4/BR-03 | P0 |
| REQ-020 | 合同查看只读弹窗(附件预览/下载);合同删除二次确认并记操作日志;合同为物理删除 | 6.4/第 7 章 | P1 |
| REQ-021 | 合同状态由系统按当前日期自动计算(待生效/生效中/已过期,含边界当天),不可手工设置 | BR-03 | P0 |
| REQ-022 | 运费核算入口与页面口径:整车运输→承运结算→运费核算;页面即运单列表("核算状态"列:未核算/已核算);行内"编辑"打开"修改核算"弹窗;无独立核算单(口径纠正) | 6.6/BR-06 | P0 |
| REQ-023 | 修改核算弹窗新增字段:物流公司(选填、单选)+ 客户收货地址(选填、≤200 字符纯文本、仅记录) | 6.6/BR-06.7 | P0 |
| REQ-024 | 选择弹窗规格:仅启用公司、创建时间倒序、名称/信用代码搜索、分页 20 条/页、单选、展示名称/信用代码/联系人/联系方式/生效合同数、无生效合同提示可勾选(Q3) | BR-06/6.6/第八章 | P0 |
| REQ-025 | 自动带出与变更:货源已选公司默认带入;可取消(清除)与再次选择(替换) | BR-06.3 | P0 |
| REQ-026 | 保存核算:物流公司 ID+名称+信用代码写入运单表;核算状态更新为已核算;未选择正常保存记"无外协公司"(Q2 不强制) | BR-06.4/.6 | P0 |
| REQ-027 | 快照口径:公司改名/停用/删除不影响运单已保存信息;运单表冗余存储、不做联表实时取值 | BR-06.6/第 7 章 | P0 |
| REQ-028 | 已核算运单再次修改:覆盖更新并记日志,不产生新单据 | 6.6 | P1 |
| REQ-029 | 核算保存时公司已停用/删除:后端二次校验,提示公司名要求重新选择(数据有效性校验) | 6.6 | P0 |
| REQ-030 | 批量核算:沿用现有逻辑;是否支持批量填充物流公司/客户收货地址待确认(Q7),当前按不支持 | 6.6/第八章 | P2 |
| REQ-031 | 货源选择物流公司:发布/编辑货源新增字段(选填、单选、复用弹窗);回显可移除/更换;保存写快照;不影响任何流程 | BR-07/6.7 | P1 |
| REQ-032 | 打款筛选:货主打款/财务打款/打款记录页查询区增加物流公司下拉(全部/无外协公司/各公司含停用);可组合查询;仅过滤不改变打款流程、金额与审批 | BR-08/6.8 | P1 |
| REQ-033 | 列表显示物流公司:货源管理/运单管理/货主打款/财务打款四列表新增展示列,空值显示"无外协公司",只读、不参与流程,导出 Excel 含该列 | BR-09/6.9 | P1 |
| REQ-034 | 展示快照口径:公司改名/停用/删除后,历史列表与打款筛选展示不变 | BR-09.4 | P0 |
| REQ-035 | 权限与审计:运营管理员全操作、核算人员核算勾选+列表只读、系统管理员授权;机构数据隔离(跨机构不可见不可操作);增删改/启停用/合同操作写行为日志 | 第 3 章/第 7 章 | P0 |
| REQ-036 | 数据与接口:logistics_company/logistics_contract 表(company_id 外键)、运单表新增字段(company_id+company_name+uscc/客户收货地址/核算状态);附件存华为云 OBS 仅存 URL;导出复用 20000 上限组件 | 第 7 章 | P1 |
| REQ-037 | 负向范围:不建物流公司登录端/账号、无合同审批流与电子签章、不与承运人/车队体系打通合并、无基于合同自动计费开票、合同列表无批量操作、附件为单附件 | 1.3/6.4/Q6 | P3 |
| REQ-038 | Q1–Q6 决议口径固化:单选、选填不强制、无生效合同可勾选、不与承运人体系打通、许可证选填、附件不设大小上限 | 第八章 | P0 |
@@ -0,0 +1,255 @@
# 物流公司管理需求 测试用例
> 生成时间: 2026-09-29
> 依据: requirements/物流公司管理需求.md(v1.1,Q1–Q6 决议已确认)/ output/normalized_inputs/物流公司管理需求/requirement.md、output/test_points/物流公司管理需求_测试点.md(159 个测试点:模块 A~J + X,P0:53/P1:78/P2:23/P3:5)、output/analysis/物流公司管理需求_测试数据.md(LC-01~LC-07 花名册、V 表边界字面值、UC/PH/SC/UQ/DOC/AT/QR/CN/CD/TX 样本)、output/analysis/物流公司管理需求_分析.md(BR-01~BR-09、REQ-001~038、11.2 待确认)、output/analysis/物流公司管理需求_关联与冲突.md、knowledge_base/00_project/project_profile.md、knowledge_base/01_standards/test_case_template.md、knowledge_base/01_standards/review_checklist.md
> 核心口径(全文不得写反): 物流公司及其在运单/货源/打款上的关联**仅作记录展示、不影响任何流程**;唯一强约束为档案自身的 BR-01 唯一性 + BR-04 删除保护;核算即运单核算(禁用"核算单"表述,无独立核算单);空值统一展示"无外协公司";停用公司在核算勾选弹窗不可见、在打款筛选下拉可见(两个相反口径分别成例)
> 用例编号前缀: `PLT_BSC_LC`(平台端-基础信息-物流公司管理:档案/合同/档案侧权限与日志,编号 001~083);`PLT_TMS_LC`(平台端-整车运输-物流公司关联:核算/货源/打款/列表展示/权限隔离/跨需求回归,编号 001~081)
>
> **测试用例总数: 164**
> **优先级分布: P0=55 / P1=81 / P2=23 / P3=5**
> **类型分布: 功能测试 135 / 回归测试 13 / 安全性测试 11 / 冒烟测试 2 / 性能测试 1 / 兼容性测试 1 / 易用性测试 1**
> **模块分布: 菜单与列表查询 15 / 新增 28 / 编辑 5 / 删除与启停用 13 / 合同管理 22 / 运单核算关联 25 / 货源选择 8 / 打款筛选 11 / 列表展示与快照 12 / 权限隔离与日志 10 / 跨需求回归 14 / 端到端冒烟 1**
> **测试点映射覆盖率: 159/159 全覆盖(100%)——P0 测试点 53 个 100% 对应用例(其中 TP-B-009 拆为 024/025 两条 P0 用例,P0 用例共 55 条);P1 测试点 78 个 100% 对应用例;P2 测试点 23 个全部保留;P3 测试点 5 个全部保留(无裁剪,取舍说明见文末)**
>
> 阅读约定: 本文件全文仅一个用例总表(表头 + 分隔线 + 164 行数据连续无间断);"测试数据"列引用 output/analysis/物流公司管理需求_测试数据.md 的数据ID(LC/UC/PH/SC/UQ/HY/WT/RA/PY/DL/SS/ACC/BLK/DOC/AT/QR/CN/CD/TX 等),不写"输入合法数据";日期样本基准日 T=2026-09-29(T±n 具体日期见测试数据 §0.3,执行日不同则整体平移);账号主用 ACC-001(super_admin / 951260684NiAn..,测试环境 https://ybxcx.ynyun8.com:8000/admin),ACC-02 运营管理员 / ACC-03 核算人员 / ACC-04 财务人员 / ACC-05 跨机构账号(机构B)为待授权补充账号(数据缺口 #1~#5);运单号/货源号/打款单号为逻辑占位(WT-01~WT-10、HY-01~HY-07、PY-01~PY-07),执行时替换为测试环境真实编号(数据缺口 #7);文末集中列出 11 处测试点待确认项与 6 项口径细化待确认项。
## 用例编号与覆盖说明
- 编号规则: PLT_BSC_LC_001~083 覆盖模块 A/B/C/D/E 与以档案侧为主的权限用例(057~062 中 058/059/060/061/062 亦为档案侧);PLT_TMS_LC_001~081 覆盖模块 F/G/H/I 与运输结算侧权限、跨需求回归及端到端冒烟(063 弹窗机构隔离、065 合同与核算日志、067~074 打款回归、075~080 解耦与范围防护、081 冒烟)。
- 原子性约定: 一条用例只验证一个主验证点;正向/异常/边界不合并;同一测试点内"接受 vs 拒绝"、"启用 vs 停用 vs 已删除"按状态拆分。
- 组合约定: 同类边界两侧(如 50/51 字符、20000/20001 条)在一条用例内成对验证;纯排查类与记录实际行为类场景独立成条并标注待确认。
| 用例编号 | 模块 | 用例标题 | 优先级 | 类型 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 | 备注 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| PLT_BSC_LC_001 | 平台端-基础信息-物流公司管理 | 验证"物流公司管理"菜单挂载位置与页面骨架完整 | P0 | 冒烟测试 | ACC-001(super_admin)已登录平台端管理后台,且角色已配置"物流公司管理"菜单权限 | 1. 展开左侧菜单"基础信息"<br>2. 进入"承运管理"子菜单核对新增项<br>3. 点击"物流公司管理"进入页面<br>4. 自上而下核对查询条件区、操作按钮区、列表表格与分页组件<br>5. 核对面包屑与菜单高亮 | ACC-001;菜单名称逐字"物流公司管理"(REQ-001) | 1. "承运管理"下出现菜单项"物流公司管理",名称逐字一致、挂载位置正确<br>2. 页面自上而下依次为查询条件区、操作按钮区(查询/重置/新增/导出四个按钮)、列表表格与分页组件<br>3. 面包屑与左侧菜单高亮定位正确<br>4. 列表首屏加载成功,浏览器控制台无报错;角色-菜单权限关联数据中已含该菜单配置 | 对应TP-A-001;REQ-001(核心入口冒烟) |
| PLT_BSC_LC_002 | 平台端-基础信息-物流公司管理 | 验证列表查询条件五类控件齐全且类型正确 | P0 | 功能测试 | ACC-001 已进入"物流公司管理"列表页 | 1. 核对查询条件区控件构成<br>2. 在状态下拉中查看选项<br>3. 打开创建时间控件选择区间<br>4. 点击创建时间范围结束日=当天执行查询 | ACC-001;QR-05(创建时间含当天,日敏感);状态下拉选项=全部/启用/停用 | 1. 五个条件齐全:公司名称(输入框、模糊)、统一社会信用代码(输入框、模糊)、联系方式(输入框、模糊)、状态(下拉)、创建时间(日期范围)<br>2. 状态下拉默认选中"全部",选项为全部/启用/停用<br>3. 创建时间范围支持选择起止日期,结束日期当天创建记录可被筛出(含当天 23:59:59 口径)<br>4. 五个控件均参与接口查询参数传递(抓包核对参数名与值) | 对应TP-A-002;REQ-002 |
| PLT_BSC_LC_003 | 平台端-基础信息-物流公司管理 | 验证三个文本条件各自模糊匹配且互不串字段 | P1 | 功能测试 | ACC-001 已登录;环境存在 LC-01(云南测试甲物流有限公司 / 91530102MA6N4K7X52 / 联系方式 13800138000)与 LC-02 等档案 | 1. 公司名称输入"测试甲"点查询<br>2. 清空后统一社会信用代码输入"91530102"点查询<br>3. 清空后联系方式输入"138"点查询<br>4. 仅输入名称关键词"测试甲",记录返回集合逐行核对命中字段 | QR-01/QR-02/QR-03;LC-01、LC-02 | 1. 名称条件命中全部名称含"测试甲"的公司(含 LC-01),不含仅信用代码/联系方式命中项<br>2. 信用代码前缀"91530102"命中 LC-01;联系方式片段"138"命中对应公司<br>3. 三个条件互不串字段:仅填名称时不会把信用代码或联系方式匹配的记录带入结果<br>4. 每次返回记录均可在列表中定位、分页总数与结果数一致 | 对应TP-A-003;REQ-002 |
| PLT_BSC_LC_004 | 平台端-基础信息-物流公司管理 | 验证多条件组合查询结果精确且无结果有提示 | P1 | 功能测试 | ACC-001 已登录;LC-06(保山测试己运输有限公司,停用)与 LC-01 等档案存在 | 1. 状态选择"停用"+名称输入"保山"+创建时间选择本周范围点查询<br>2. 核对返回集合与分页总数<br>3. 追加联系方式条件为不可能命中的值"99999999999"再查询<br>4. 清空全部条件后核对列表 | QR-06;LC-06;QR-07 | 1. 组合条件仅返回同时满足"停用+名称含保山+创建时间在本周"的记录(含 LC-06),不含启用或越界记录<br>2. 组合筛选后分页总数与列表实际条数一致<br>3. 无结果组合时列表为空并有"暂无数据/未查询到"类明确提示(非空白表格)<br>4. 接口请求参数同时携带五个条件值,服务端按 AND 叠加过滤 | 对应TP-A-004;REQ-002 |
| PLT_BSC_LC_005 | 平台端-基础信息-物流公司管理 | 验证查询后分页归位与重置清空全部条件 | P1 | 功能测试 | ACC-001 已登录;公司数据量超过 1 页(见 BLK-01 的 25 条批量数据) | 1. 先翻至第 2 页<br>2. 输入名称"测试甲"点"查询"<br>3. 观察页码归位与结果<br>4. 点击"重置"后核对五个条件值与列表<br>5. 连续点击"重置"3 次核对无异常 | ACC-001;BLK-01(25 条);QR-08 | 1. 查询后分页自动回到第 1 页,结果为满足条件的记录<br>2. 重置后五个条件恢复默认(名称/信用代码/联系方式清空、状态回"全部"、创建时间范围清空),列表恢复全量<br>3. 重置后恢复默认排序(创建时间倒序)与默认每页 20 条<br>4. 连续重置无报错、无重复请求堆积、无控制台异常 | 对应TP-A-005;REQ-002(漏测清单 §4 查询/筛选/重置完整性) |
| PLT_BSC_LC_006 | 平台端-基础信息-物流公司管理 | 验证状态筛选"全部/启用/停用"三态逐一过滤准确 | P1 | 功能测试 | ACC-001 已登录;存在启用公司(LC-01 等)与停用公司(LC-06);存在已逻辑删除公司 1 家(用 LC-04 删除后构造,见 DL-04) | 1. 状态选"全部"点查询,记录结果与总条数<br>2. 状态切"启用"点查询,核对每行状态列<br>3. 状态切"停用"点查询,核对每行状态列<br>4. 检索已删除公司(LC-04)名称确认三态均不含 | QR-04;LC-01/LC-06;LC-04(已删除) | 1. "全部"返回启用+停用记录,不含已逻辑删除公司<br>2. "启用"仅返回启用记录、状态列全为绿;"停用"仅返回停用记录(含 LC-06)、状态列全为灰<br>3. 三种筛选的分页总数与各自实际记录数一致;筛选结果中状态列与所选值一一对应<br>4. 服务端查询条件 deleted=0 恒生效(已删除公司任何状态均不可见) | 对应TP-A-006;REQ-002(漏测清单 §5 状态拆分) |
| PLT_BSC_LC_007 | 平台端-基础信息-物流公司管理 | 验证创建时间范围边界:同日、倒置与跨月跨年 | P2 | 功能测试 | ACC-001 已登录;当天创建过 LC-04 修改记录 1 条(日敏感样本 QR-05,仅执行当天有效) | 1. 创建时间起止均选当天点查询<br>2. 起止选 T-1(2026-09-28)当天点查询<br>3. 起始选 T、结束选 T-1(倒置)点查询<br>4. 选择跨月范围(T-35 至 T)与跨年范围(2025-08-25 至 T)分别查询 | QR-05;T=2026-09-29;T-1=2026-09-28;T-35=2026-08-25 | 1. 起止=当天可筛出当天创建记录(含当天口径,结束日含 23:59:59)<br>2. 起止=T-1 不含当天创建的记录<br>3. 起始晚于结束时给出提示或返回空结果,页面不报错不崩溃<br>4. 跨月/跨年范围筛选结果正确,边界日期记录均被包含,接口未发生日期截断或时区偏移 | 对应TP-A-007;REQ-002(漏测清单 §5 边界条件) |
| PLT_BSC_LC_008 | 平台端-基础信息-物流公司管理 | 验证列表十类列完整、顺序正确与特殊展示口径 | P0 | 功能测试 | ACC-001 已登录;LC-01(含简称码 YNA、2 张生效中合同、被 WT-04 引用)与 LC-05(简称码 YNE,验证用)等存在 | 1. 逐列核对表头与顺序<br>2. 点击 LC-01 行公司名称超链接<br>3. 核对 LC-05 行简称码列展示(构造简称码为空的公司更佳)<br>4. 核对状态列颜色与创建人/创建时间取值<br>5. 核对操作列按钮 | LC-01;LC-05;REQ-003 | 1. 十类列齐全且顺序为:公司名称、简称码、统一社会信用代码、法人代表名称、联系人/联系方式、生效合同数、状态、创建人/创建时间、操作<br>2. 公司名称超链接点击进入该公司的编辑页<br>3. 简称码未设置时显示"-"(非空白、非 null)<br>4. 状态列启用为绿色开关、停用为灰色;创建人/创建时间为系统记录值(新增时的操作人与时间)<br>5. 操作列含"编辑""删除"两个入口,与列表数据行一一对应 | 对应TP-A-008;REQ-003(漏测清单 §4 列表字段一致性) |
| PLT_BSC_LC_009 | 平台端-基础信息-物流公司管理 | 验证列表默认按创建时间倒序且新建记录置顶 | P1 | 功能测试 | ACC-001 已登录;列表已有 3 家以上不同时间创建的启用公司 | 1. 首次进入列表记录各行的创建时间序列<br>2. 点击"重置"后再次核对序列<br>3. 新增一家公司(名称"云南测试甲物流有限公司"的变体不存在冲突者,如"云南测试排序验证物流有限公司")<br>4. 返回列表核对首行 | QR-09;新建公司名称"云南测试排序验证物流有限公司";UC 样本参照 UC-01 规则 | 1. 首次进入与重置后均按创建时间倒序(最新在前),序列一致<br>2. 新建公司返回列表后位于首位,其创建时间为当前操作时刻<br>3. 默认排序在翻页后保持(第 2 页仍延续倒序),与接口 orderBy=create_time desc 一致<br>4. 排序字段非更新时间(编辑既有公司不会使其跳位) | 对应TP-A-009;REQ-004(漏测清单 §4 默认排序) |
| PLT_BSC_LC_010 | 平台端-基础信息-物流公司管理 | 验证分页默认 20 条/页与每页条数切换正确 | P1 | 功能测试 | ACC-001 已登录;已构造 BLK-01 的 25 条启用公司(批量测试物流公司00001~00025) | 1. 进入列表核对默认每页条数与页数<br>2. 切换每页 10/50/100 各档核对条数与总量<br>3. 翻至末页核对余数<br>4. 用查询条件构造 0 结果核对空态 | BLK-01(25 条);QR-10 | 1. 默认每页 20 条、共 2 页,页脚总数=25<br>2. 切 10 条/页共 3 页、切 50/100 条/页共 1 页,切换后列表不重排错位、无重复无丢失<br>3. 末页余数=5 条;无数据时空态有友好占位提示而非空白表格<br>4. 每页条数选项恰为 10/20/50/100 四档,选择后为默认记忆项(本页生效) | 对应TP-A-010;REQ-004(漏测清单 §4 分页);[AI修正: 评审修复 O-001] |
| PLT_BSC_LC_011 | 平台端-基础信息-物流公司管理 | 验证"生效合同数"列实时统计仅计生效中合同 | P1 | 功能测试 | ACC-001 已登录;LC-01 现有 HT-2026-0001(生效中)、HT-2026-0002(生效中)、HT-2025-0987(已过期);LC-02 现有"已过期+待生效"各一张 | 1. 查看 LC-01 行生效合同数<br>2. 为 LC-01 新增一张当前生效期内合同后刷新列表<br>3. 删除一张生效中合同后核对计数<br>4. 核对 LC-02 的计数 | LC-01;LC-02;HT-2026-0001/0002(生效中)、HT-2025-0987(已过期)、HT-2026-0011(已过期)、HT-2026-0012(待生效);SS-12 | 1. LC-01 计数=2(仅生效中合同;已过期不计入)<br>2. 新增生效中合同后计数变为 3,与合同管理 Tab 中生效中条数一致<br>3. 删除生效中合同后计数-1;LC-02 计数=0(过期/待生效均不计入)<br>4. 计数为实时计算值(数据库按 company_id 统计 status=生效中 的合同数),停用公司的计数照常统计 | 对应TP-A-011;REQ-003 |
| PLT_BSC_LC_012 | 平台端-基础信息-物流公司管理 | 验证列表空态与查询无结果两种提示场景 | P2 | 易用性测试 | ACC-001 已登录;具备新环境无数据或全量筛选到 0 条的构造手段 | 1. 用查询条件组合构造无结果(名称输入"不存在的公司XYZ")<br>2. 观察列表区展示与提示文案<br>3. 检查控制台报错<br>4. 恢复全量数据后核对列表正常 | QR-07;无结果关键词"不存在的公司XYZ" | 1. 查询无结果时列表区明确提示(如"暂无数据")而非空白无反馈<br>2. 空态提示文案与列表空库场景文案一致、不出现控制台报错或页面崩溃<br>3. 空态下分页组件收敛(不显示明细分页)、导出按钮不可点 或 给出无数据提示(记录实际行为)<br>4. 清空条件重新查询后列表恢复正常渲染 | 对应TP-A-012;漏测清单 §1 空值 + §4 空结果提示;[AI修正: 评审修复 O-002] |
| PLT_BSC_LC_013 | 平台端-基础信息-物流公司管理 | 验证列表导出列完整且与当前筛选条件同步 | P1 | 功能测试 | ACC-001 已登录;列表存在 LC-01 等数据且已知当前筛选条件(状态=启用+名称"测试甲") | 1. 设置筛选条件后点击"导出"<br>2. 打开导出 Excel 核对列与行数据<br>3. 核对导出文件行数与列表筛选结果一致<br>4. 构造 0 结果条件再次导出 | REQ-005;LC-01;QR-07(无结果) | 1. 导出文件为可正常打开的 xlsx<br>2. 列与列表展示列一一对应(公司名称、简称码、统一社会信用代码、法人代表名称、联系人/联系方式、生效合同数、状态、创建人/创建时间)<br>3. 导出行集合=当前筛选条件命中的记录集(导出沿用当前查询参数),不含已逻辑删除公司<br>4. 无数据时导出按平台统一口径给出提示(不生成空文件或空文件含表头两种情况记录实际行为) | 对应TP-A-013;REQ-005 |
| PLT_BSC_LC_014 | 平台端-基础信息-物流公司管理 | 验证列表导出 20000 条上限边界口径 | P1 | 功能测试 | ACC-001 已登录;构造通道可用(数据缺口 #9:接口批量或 DB 导入);已准备恰好 20000 条与 20001 条两组公司数据(BLK-04 数字边界成对) | 1. 构造恰好 20000 条满足筛选条件的公司并点导出<br>2. 核对导出文件行数<br>3. 构造 20001 条同样条件再导出<br>4. 记录 20001 条时的实际行为(截断或明确提示)并与平台其他列表导出口径比对 | BLK-04(20000/20001 条);项目画像 §8.3 | 1. 20000 条全量导出成功、文件行数与数据条数一致(含表头行偏差须说明)<br>2. 超过 20000 条时按平台 Excel 导出组件统一口径处理(截断到 20000 或给出超限提示),行为与其他列表一致、不静默丢数据且无部分损坏文件<br>3. 导出耗时与文件大小在可接受范围,文件可正常打开<br>4. 导出记录不含已逻辑删除公司 | 对应TP-A-014;REQ-005/REQ-036(项目画像 §8.3 Excel 大数据量导出) |
| PLT_BSC_LC_015 | 平台端-基础信息-物流公司管理 | 验证 1~2 万条规模导出时 Loading、防重与超时保护 | P2 | 性能测试 | ACC-001 已登录;已准备接近上限的数据量(10000~20000 条,BLK-04 构造通道) | 1. 点击"导出"触发大数据量导出<br>2. 观察导出期间按钮态与 Loading 反馈<br>3. 导出期间连续点击"导出"3 次<br>4. 用 DevTools 限速/阻断导出接口模拟超时<br>5. 恢复后重新导出 | BLK-04;漏测清单 §2(弱网/超时) | 1. 导出期间有 Loading 或进度反馈,按钮置灰防重复点击,页面不出现无响应卡死<br>2. 连点 3 次不产生 3 个并行导出任务(服务端有防重或前端拦截)<br>3. 超时/失败时有明确提示且可重新导出,失败后无残留半文件<br>4. 导出期间其他查询操作不被阻塞或给出明确提示;单次导出实测耗时基线已记录 | 对应TP-A-015;项目画像 §8.3(非功能:Excel 大数据量导出) |
| PLT_BSC_LC_016 | 平台端-基础信息-物流公司管理-新增 | 验证新增页"上证件区+下两栏表单"结构与对标布局 | P1 | 功能测试 | ACC-001 或已授权的 ACC-02(运营管理员)已登录;已进入"物流公司管理"列表页 | 1. 点击"新增"按钮<br>2. 自上而下核对证件上传区(营业执照、法人身份证人像面、法人身份证国徽面、道路运输经营许可证四个上传位)<br>3. 核对下方基本信息表单字段与顺序(对标企业货主-新增)<br>4. 核对必传/选填标注 | ACC-001/ACC-02;四类证件位;需求 6.2 字段清单 | 1. 布局为"上方证件上传区 + 下方两栏基本信息表单",与企业货主-新增页对标一致<br>2. 四个证件上传位齐全:营业执照与身份证人像面/国徽面标注必传,道路运输经营许可证标注选填(Q5)<br>3. 表单字段顺序与需求 6.2 一致:公司名称、统一社会信用代码、法人代表名称、联系人、联系方式、简称码、企业通信地址(省市区级联)、详细地址、备注<br>4. 页面无需求外多余字段与入口 | 对应TP-B-001;REQ-006 |
| PLT_BSC_LC_017 | 平台端-基础信息-物流公司管理-新增 | 验证营业执照未上传时提交被阻断且定位到上传区 | P0 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;本地准备 DOC-01 合法营业执照样本 | 1. 不上传营业执照,填满其余字段(名称"云南测试营业执照校验物流有限公司"等必填项)后点击提交<br>2. 核对阻断提示与定位<br>3. 上传营业执照_测试甲.jpg 后再次提交(验证提交不再因营业执照被阻断;完整成功链路由 PLT_BSC_LC_038 覆盖)<br>4. 在新增页重新打开表单(名称改用"云南测试营业执照校验物流有限公司2"等新唯一值),上传营业执照后删除该证件,再次提交 | DOC-08(必传缺失);DOC-01(营业执照_测试甲.jpg);新建名称不与他司冲突 | 1. 未上传营业执照时提交被阻断,提示定位到营业执照上传区(如"请上传营业执照"),表单不关闭不跳转<br>2. 数据库无新增记录(logistics_company 无该名称行)<br>3. 提交不再因营业执照被阻断(阻断原因不再指向营业执照;表单可按 038 用例完成保存)<br>4. 删除已上传营业执照后提交再次被阻断(删除动作同步清空暂存值) | 对应TP-B-002;REQ-006/验收要点 1;[AI修正: 评审修复 S-001] |
| PLT_BSC_LC_018 | 平台端-基础信息-物流公司管理-新增 | 验证身份证人像面/国徽面缺一不可提交 | P0 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;本地准备 DOC-03(人像面 jpg)与 DOC-05(国徽面 jpeg)样本;营业执照已上传 | 1. 仅上传人像面、国徽面留空后提交<br>2. 仅上传国徽面、人像面留空后提交<br>3. 两面齐全后提交 | DOC-08;DOC-03(法人身份证人像面_测试甲.jpg);DOC-05(法人身份证国徽面_测试甲.jpeg) | 1. 仅传人像面时提交被阻断,提示能区分所缺证件(提示含"国徽面"字样)<br>2. 仅传国徽面时提交被阻断,提示含"人像面"字样<br>3. 两面齐全可提交成功,两个证件 OBS URL 分别落库到对应字段<br>4. 三次操作均不产生半落库记录(失败场景数据库无新增行) | 对应TP-B-003;REQ-006 |
| PLT_BSC_LC_019 | 平台端-基础信息-物流公司管理-新增 | 验证道路运输经营许可证为选填(Q5 决议)可跳过提交 | P0 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;营业执照与身份证两面已上传;本地准备 DOC-07 许可证样本 | 1. 不上传道路运输经营许可证,填写全部必填字段后提交<br>2. 返回列表后进入该公司编辑页核对证件区<br>3. 进入编辑页上传道路运输经营许可证_测试甲.pdf 并保存<br>4. 重新打开编辑页核对回显 | DOC-06(不传);DOC-07(道路运输经营许可证_测试甲.pdf);Q5 决议 | 1. 不传许可证时提交成功(核心边界口径,不得误判为必传),提示"新增成功"且状态=启用<br>2. 编辑页许可证上传位为空态、无必传红星标记<br>3. 上传许可证后保存成功,OBS URL 落库到许可证字段(值为最后一次上传的文件 URL)<br>4. 再次打开编辑页可回显许可证文件名/缩略图,点击可预览 | 对应TP-B-004;REQ-006/Q5 决议;[AI修正: 评审修复 O-001] |
| PLT_BSC_LC_020 | 平台端-基础信息-物流公司管理-新增 | 验证四类证件格式白名单校验(含身份证不含 pdf/bmp 差异) | P0 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;本地准备 DOC-01~DOC-05 全部样本文件 | 1. 营业执照与道路运输经营许可证分别依次上传 .jpg/.jpeg/.png/.pdf 四个文件<br>2. 营业执照与道路运输经营许可证分别上传 .gif/.docx/.txt/无扩展名/.bmp 文件<br>3. 身份证人像面/国徽面依次上传 .jpg/.jpeg/.png<br>4. 身份证人像面上传 .pdf 与 .bmp 文件 | DOC-01(营业执照 4 格式);DOC-02(gif/docx/txt/无扩展名/bmp);DOC-03/DOC-05;DOC-04(pdf/bmp) | 1. 营业执照与许可证 jpg/jpeg/png/pdf 四格式逐一上传成功并可预览<br>2. 营业执照与许可证对 gif/docx/txt/无扩展名/bmp 拒绝并提示格式白名单(注意 bmp 不在证件白名单)<br>3. 身份证 jpg/jpeg/png 全部成功<br>4. 身份证 pdf/bmp 被拒(身份证白名单不含 pdf/bmp,与合同附件含 bmp 的差异不得写反);拒绝后上传位不残留半上传状态与脏 URL | 对应TP-B-005;REQ-006(与合同附件白名单差异见 DOC-02 说明);DOC-07 许可证四格式样本;[AI修正: 评审修复 S-009] |
| PLT_BSC_LC_021 | 平台端-基础信息-物流公司管理-新增 | 验证伪造扩展名证件文件被拒绝且不产生执行风险 | P1 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;本地准备 DOC-04 伪造样本(exe 改名 .jpg、双扩展名 身份证.pdf.exe) | 1. 将 exe 程序改名为"法人身份证人像面_测试甲.jpg"后上传<br>2. 上传双扩展名文件"身份证.pdf.exe"<br>3. 观察提示与上传区状态<br>4. 用 DevTools 抓包确认拒绝发生在前端还是服务端 | DOC-04 伪造样本;SEC-09(伪造文件内容) | 1. 伪造扩展名文件被检出并拒绝(前端拦截或服务端真实文件类型校验),提示可读<br>2. 上传区不显示成功回显、无 OBS URL 落库(数据库证件字段保持空)<br>3. 文件在任何情况下均不被执行,无脚本/程序运行迹象<br>4. 实际拦截层级(前端 MIME/后缀、服务端魔数)记录供评审,服务端须具备独立校验 | 对应TP-B-006;REQ-006(漏测清单 §1 特殊数据;拦截层级记录为评审确认项) |
| PLT_BSC_LC_022 | 平台端-基础信息-物流公司管理-新增 | 验证 7 个必填字段逐字段留空均被阻断并就近标红 | P0 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;三张必传证件已上传;已备齐其余字段的合法值 | 1. 依次单独留空公司名称、统一社会信用代码、法人代表名称、联系人、联系方式、企业通信地址(不选省市区)、详细地址,各提交一次<br>2. 记录每次阻断提示与标红位置<br>3. 仅留空简称码与备注后提交<br>4. 全部字段填写完整后提交 | NM-05(空值/纯空格);CT-04;DT-04;AD-03(级联不完整);RM-04(备注空,允许) | 1. 七个必填字段逐一留空提交均被阻断,错误字段就近标红且提示文案指向对应字段名<br>2. 企业通信地址仅选省未选市/区时同样被阻断(级联不完整)<br>3. 仅简称码与备注为空不影响提交,可保存成功<br>4. 7 次失败均无数据落库(logistics_company 无新增行),纯空格与空串按同一口径拦截(口径见测试数据 §10 补充-6) | 对应TP-B-007;REQ-007;[待确认] 纯空格/空白字符在必填字段中是否按空处理(见测试数据 §10 补充-6) |
| PLT_BSC_LC_023 | 平台端-基础信息-物流公司管理-新增 | 验证公司名称 1/50/51 字符长度边界与首尾空格口径 | P1 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;已准备 V-01/V-02 字面值;已知现有名称集合 | 1. 公司名称输入 V-01(恰 50 字符)提交<br>2. 输入 V-02(51 字符)提交<br>3. 输入单字符"甲"提交(另用独立信用代码)<br>4. 输入" 云南测试甲物流有限公司 "(两侧含空格,NM-07)提交并核对存储值 | NM-01(常规);NM-02/V-01(50 字);NM-03/V-02(51 字);NM-04(1 字);NM-07(首尾空格);UQ-08 | 1. 50 字符保存成功,列表/详情展示完整 50 字不截断<br>2. 51 字符被阻断并提示上限(如"公司名称不超过 50 字符"),贴入超长文本时自动截断或提示(记录实际行为)<br>3. 单字符名称可保存(无最小长度约束)<br>4. 首尾空格存储口径记录实际行为(trim 或原样存储),与待确认口径比对后回归 | 对应TP-B-008;REQ-007(漏测清单 §1 超长字符);[待确认] 唯一性判重是否 trim 首尾空格(口径④,见测试数据 §10 补充-4) |
| PLT_BSC_LC_024 | 平台端-基础信息-物流公司管理-新增 | 验证统一社会信用代码合法值失焦即校验通过 | P0 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页 | 1. 统一社会信用代码输入 UC-01(91530102MA6N4K7X52)后点击页面其他空白处触发失焦<br>2. 观察校验提示与字段态<br>3. 用 DevTools 抓包确认失焦触发唯一性/格式校验接口<br>4. 继续填写其余字段并提交 | UC-01(91530102MA6N4K7X52);UC-03(失焦即校验) | 1. 失焦后字段无报错、无标红,提示消失(若先出错再修正则提示同步消失)<br>2. 失焦时触发校验请求(抓包可见校验接口调用),无需点击提交<br>3. 合法 18 位、字符集合规、校验位正确的代码通过校验<br>4. 提交后落库值与输入值逐字符一致(大写),列表页展示一致 | 对应TP-B-009;REQ-007/BR-01 |
| PLT_BSC_LC_025 | 平台端-基础信息-物流公司管理-新增 | 验证信用代码各类非法格式失焦即报错并就地标红 | P0 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页 | 1. 依次输入 UC-04(17 位)、UC-05(19 位)后失焦<br>2. 依次输入 UC-06~UC-10(末位 I/O/S/V/Z)后失焦<br>3. 输入 UC-11(全小写)、UC-12(含空格)、UC-13(全角字符)、UC-14(行政区划段含字母)、UC-16(混入汉字)后失焦<br>4. 核对每次提示形态并尝试提交 | UC-04~UC-14、UC-16;BR-01 正则 [0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10} | 1. 全部非法输入在失焦时即报错,错误提示就地标红、文案可读(如"统一社会信用代码格式不正确")<br>2. 含 I/O/S/V/Z 等排除字母与全角/小写/空格/汉字均被拒绝(字符集校验生效)<br>3. 17/19 位长度不符被拒绝<br>4. 非法值下强制提交被阻断,数据库无新增记录;修正为 UC-01 后提示消失并可提交 | 对应TP-B-009;BR-01/REQ-007 |
| PLT_BSC_LC_026 | 平台端-基础信息-物流公司管理-新增 | 验证第 18 位国标校验位错误的实际校验口径 | P1 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;已确认 UC-15 样本(91530102MA6N4K7X53,末位 2 改 3) | 1. 输入 UC-15 后失焦,记录字段是否报错<br>2. 若放行则继续提交并核对落库<br>3. 若阻断则记录提示文案<br>4. 对照需求 BR-01 正则口径判断实现层级 | UC-15(91530102MA6N4K7X53);§10 补充-5 | 1. 记录实际行为:仅正则校验(需求口径)→ 放行且可落库;同时校验国标校验位 → 阻断并提示<br>2. 两种行为均须为确定性行为(同样输入结果稳定),不得时放时拦<br>3. 结论回填评审后固化断言;不将当前行为直接写成需求结论 | 对应TP-B-009(UC-15);[待确认] 是否校验第 18 位国标校验位(需求仅规定字符集正则,见测试数据 §10 补充-5) |
| PLT_BSC_LC_027 | 平台端-基础信息-物流公司管理-新增 | 验证法人代表名称 ≤30 字符边界(30/31)与特殊字符 | P1 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;已准备 V-03/V-04 字面值 | 1. 法人代表名称输入 LP-01(张测试)提交<br>2. 输入 V-03(恰 30 字符)提交<br>3. 输入 V-04(31 字符)提交<br>4. 输入 LP-05(阿不都·热合曼)提交并核对展示 | LP-01;LP-02/V-03(30 字);LP-03/V-04(31 字);LP-05(间隔号) | 1. 常规姓名与 30 字符均可保存<br>2. 31 字符被阻断并提示上限,字段就近标红<br>3. 少数民族间隔号姓名正常保存与回显,无乱码<br>4. 中英文/数字混排按字符数计数口径一致(长度计数以字符为单位) | 对应TP-B-010;REQ-007(漏测清单 §1 超长字符) |
| PLT_BSC_LC_028 | 平台端-基础信息-物流公司管理-新增 | 验证联系人 ≤20 字符边界(20/21) | P1 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;已准备 V-05/V-06 字面值 | 1. 联系人输入 CT-01(王测试)提交<br>2. 输入 V-05(恰 20 字符)提交<br>3. 输入 V-06(21 字符)提交<br>4. 输入纯空格" "(CT-04)提交 | CT-01;CT-02/V-05(20 字);CT-03/V-06(21 字);CT-04(空值/纯空格) | 1. 常规值与 20 字符均可保存、列表与详情回显一致<br>2. 21 字符被阻断并提示上限、字段标红<br>3. 纯空格提交的实际行为记录(按空拦截 或 通过),与测试数据 §10 补充-6 口径比对后回归(评审确认前不得静默按单一口径判定)<br>4. 长度计数中英文一致,不出现"20 字中文保存成功、20 个字母被拒"的不一致 | 对应TP-B-010;REQ-007;[待确认] 纯空格/空白字符在必填字段中是否按空处理(见测试数据 §10 补充-6,与 PLT_BSC_LC_022 同口径);[AI修正: 评审修复 B-001] |
| PLT_BSC_LC_029 | 平台端-基础信息-物流公司管理-新增 | 验证联系方式手机号格式校验与非法样本拒绝 | P1 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;已准备 PH 系列样本值 | 1. 依次输入 PH-01(13800138000)、PH-02、PH-03 提交<br>2. 依次输入 PH-04(10 位)、PH-05(12 位)、PH-06(12800138000)、PH-07(含字母)、PH-09(全角)提交<br>3. 输入 PH-08(含空格/横线:138 0013 8000)提交<br>4. 输入 PH-13(与 PH-01 相同号码)新建第二家公司并提交 | PH-01~PH-09、PH-13;§10 补充-2 | 1. 11 位 1[3-9] 开头手机号全部通过<br>2. 位数不足/超长、非 1 开头第二位非 3-9、含字母、全角数字均被拒绝并提示手机号格式<br>3. 含空格或横线的号码被拒绝(trim 仅处理首尾)<br>4. 联系方式重复不触发唯一性拦截(需求未要求唯一),可成功创建第二家公司,列表按"138"可模糊命中两条 | 对应TP-B-011;REQ-007;[待确认] 是否允许座机/国际前缀(PH-10/PH-11,见测试数据 §10 补充-2) |
| PLT_BSC_LC_030 | 平台端-基础信息-物流公司管理-新增 | 验证简称码 2-4 位纯字母校验与选填口径 | P1 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;已知 LC-01 已占用简称码 YNA | 1. 简称码输入 SC-03(AB,2 位)提交<br>2. 输入 SC-02(YNA 变体如 YNB 已占用则用 AB 变体)与 SC-01(ABCD,4 位)提交<br>3. 输入 SC-04(A,1 位)、SC-05(ABCDE,5 位)、SC-06(A1/12,含数字)、SC-07(测试,汉字)提交<br>4. 简称码留空直接提交 | SC-01~SC-07;SC-08(小写 ab);SC-11(含前后空格 "YNA ") | 1. 2 位与 4 位纯字母保存成功,列表简称码列展示一致<br>2. 1 位、5 位、含数字、含汉字均被阻断并提示 2-4 位纯字母规则<br>3. 简称码留空可正常提交(选填)<br>4. 小写字母与首尾空格的实际口径记录并与评审结论对齐 | 对应TP-B-012;REQ-007/BR-01;[待确认] 简称码是否仅接受大写字母(SC-08,见测试数据 §10 补充-3) |
| PLT_BSC_LC_031 | 平台端-基础信息-物流公司管理-新增 | 验证企业通信地址省市区三级级联与非法组合防御 | P2 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页 | 1. 依次选择云南省/昆明市,核对区县联动<br>2. 完整选择 AD-01(云南省/昆明市/五华区)保存<br>3. 仅选"云南省"不选市/区提交<br>4. 用接口工具构造省=云南省+市=成都市(跨区组合)的请求提交 | AD-01;AD-02(曲靖/麒麟区、大理白族自治州);AD-03(级联不完整);AD-04(跨区组合) | 1. 三级联动正确:选省后市列表刷新、选区后正确保存<br>2. 完整级联地址保存成功并在编辑页正确回显<br>3. 仅选省未选区时提交被阻断或提示补全(按实现记录)<br>4. 跨区组合(云南省+成都市)级联控件不允许该组合;接口层拒绝篡改请求,不落库非法组合 | 对应TP-B-013;REQ-007/6.2 |
| PLT_BSC_LC_032 | 平台端-基础信息-物流公司管理-新增 | 验证详细地址 ≤100 字符边界(100/101) | P1 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;已准备 V-07/V-08 字面值 | 1. 详细地址输入 DT-01(测试大道 1 号 A 栋 101)提交<br>2. 输入 V-07(恰 100 字符)提交<br>3. 输入 V-08(101 字符)提交<br>4. 输入纯空格" "(DT-04)提交 | DT-01;DT-02/V-07(100 字);DT-03/V-08(101 字);DT-04(空值/纯空格) | 1. 常规值与 100 字符均可保存,详情回显完整不截断<br>2. 101 字符被阻断并提示上限、字段标红(或按实现自动截断并提示,记录实际行为)<br>3. 纯空格提交的实际行为记录(按空拦截 或 通过),与 PLT_BSC_LC_022 口径比对后回归<br>4. 数据库落库值为提交值(无意外裁剪),列表/编辑页回显与之一致 | 对应TP-B-014;REQ-007(漏测清单 §1 超长字符);[待确认] 纯空格/空白字符是否按空处理(见测试数据 §10 补充-6);[AI修正: 评审修复 B-001] |
| PLT_BSC_LC_033 | 平台端-基础信息-物流公司管理-新增 | 验证备注 ≤200 字符边界与多行文本保存回显 | P1 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;已准备 V-11/V-12 字面值 | 1. 备注输入 RM-01(外协承运,月结)提交<br>2. 输入 V-11(恰 200 字符)提交<br>3. 输入 V-12(201 字符)提交<br>4. 输入 RM-05(两行含换行符的真实换行文本)提交后进入编辑页核对 | RM-01;RM-02/V-11(200 字);RM-03/V-12(201 字);RM-05(多行换行);RM-04(空值允许) | 1. 常规备注与 200 字符保存成功<br>2. 201 字符被阻断并提示上限<br>3. 备注留空可提交(选填)<br>4. 多行文本换行被保留并在编辑页多行控件中正确回显,无乱码无折行丢失 | 对应TP-B-014;REQ-007 |
| PLT_BSC_LC_034 | 平台端-基础信息-物流公司管理-新增 | 验证公司名称全平台唯一(含停用、不含已逻辑删除) | P0 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;LC-01 启用、LC-06 停用;LC-04 已逻辑删除(承接 DL-04 删除动作) | 1. 新增表单名称输入"云南测试甲物流有限公司"(LC-01)、其余字段全新,点提交<br>2. 名称输入"保山测试己运输有限公司"(LC-06,停用)、信用代码用新值提交<br>3. 名称输入"玉溪测试丁货运代理有限公司"(LC-04,已删除)提交<br>4. 核对三次的提示与落库结果 | UQ-01;NM-06;LC-06;UQ-06;BR-01"不含已逻辑删除的公司" | 1. 与启用公司重名被拒,名称字段就地标红并提示"已存在"类文案,表单不清空<br>2. 与停用公司重名同样被拒(停用仍在唯一范围)<br>3. 与已逻辑删除公司重名允许创建成功<br>4. 失败两次均无新增落库;第三次新增成功且 deleted=0 | 对应TP-B-015;REQ-009/BR-01;执行顺序:本用例创建的重建记录与 PLT_BSC_LC_061 互斥,二者只执行其一(推荐以 061 为唯一重建执行点,本用例改为核对 061 已创建记录);[AI修正: 评审修复 S-003] |
| PLT_BSC_LC_035 | 平台端-基础信息-物流公司管理-新增 | 验证统一社会信用代码全平台唯一与提示不泄露跨机构明细 | P0 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;LC-01(91530102MA6N4K7X52)存在;LC-02 停用 | 1. 新增表单名称用新值、信用代码填 UC-01(同 LC-01)提交<br>2. 信用代码改填 LC-02 的 91530103MA6P8Q2D7F(停用公司)提交<br>3. 信用代码改填已删除 LC-04 的 91530402MA6U2W5J8J 提交<br>4. 核对错误提示内容与字段标红 | UQ-02;UC-17;LC-02;LC-04 | 1. 与启用/停用公司同码均被拒,错误字段就地标红并提示信用代码已存在,表单不清空<br>2. 与已逻辑删除公司同码允许创建(唯一范围不含已删除)<br>3. 提示文案不暴露他机构数据明细(不含他人公司名称等字段),仅提示冲突事实<br>4. 失败场景数据库无新增行;成功场景落库值大写一致 | 对应TP-B-016;REQ-009/BR-01(跨机构同码场景见 PLT_TMS_LC_057/061);执行顺序:本用例的同码重建与 PLT_BSC_LC_061 互斥,二者只执行其一(推荐以 061 为唯一重建执行点);[AI修正: 评审修复 S-003] |
| PLT_BSC_LC_036 | 平台端-基础信息-物流公司管理-新增 | 验证简称码唯一、空值不冲突与已删除复用 | P1 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;LC-01 简称码=YNA | 1. 新增表单简称码填 YNA(SC-10)提交<br>2. 连续新增两家公司,简称码均留空(SC-09/UQ-07)提交<br>3. 用 LC-04 已删除公司的简称码 YND 新建提交<br>4. 核对三次结果 | SC-10;SC-09/UQ-07;UQ-03;UQ-06;LC-04 | 1. 与已存在简称码重复被拒并提示,字段标红<br>2. 两家公司均留空简称码均可保存(空值不参与唯一,按推荐口径设计)<br>3. 与已逻辑删除公司简称码重复允许创建<br>4. 空值与空值之间无冲突;异常提示不影响其他字段已填内容 | 对应TP-B-017;BR-01/REQ-009;[待确认] 简称码空值是否参与全平台唯一、DB 唯一约束对 NULL/空串的处理语义(口径③,见分析 11.2 #4);执行顺序:本用例的简称码重建与 PLT_BSC_LC_061 互斥,二者只执行其一(推荐以 061 为唯一重建执行点);[AI修正: 评审修复 S-003] |
| PLT_BSC_LC_037 | 平台端-基础信息-物流公司管理-新增 | 验证唯一性双保险:并发同码仅一条入库且 DB 层兜底 | P0 | 功能测试 | 两个独立浏览器会话均已登录(ACC-01 与 ACC-02);接口工具可直调新增接口;已备 UQ-09 表单 A/B 值 | 1. 会话 A 填表单 A(名称=云南测试并发物流有限公司A,uscc=91530111MA6Y2T7P91)<br>2. 会话 B 填表单 B(名称=云南测试并发物流有限公司B,uscc 同 A)<br>3. 两个会话同时点击提交<br>4. 接口工具携带合法会话绕过前端直传重复 uscc 请求<br>5. 核对数据库记录与两次提交结果 | UQ-09(并发对,uscc 91530111MA6Y2T7P91);REQ-010/验收要点 8 | 1. 并发提交后仅一条成功入库,另一条失败并给出友好提示(非 500、无 DB 异常原文)<br>2. 失败方页面表单不清空、可修改后重提<br>3. 绕过前端直传的重复请求仍被数据库层唯一约束拒绝<br>4. logistics_company 表中该 uscc 恰一条记录(RISK-DATA P1 核心判据) | 对应TP-B-018;REQ-010(RISK-DATA 并发同码) |
| PLT_BSC_LC_038 | 平台端-基础信息-物流公司管理-新增 | 验证新增成功正向链路:返回列表、状态启用与落库完整 | P0 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;三张必传证件与 DOC-07 许可证样本已备;信用代码使用新合法值(如按 gen_uscc 生成) | 1. 上传营业执照/身份证两面/许可证,填写名称"云南测试新增链路物流有限公司"等全部字段<br>2. 点击提交<br>3. 核对提示与跳转,返回列表核对首行<br>4. 进入编辑页核对回显与证件预览<br>5. 核对数据库落库字段 | DOC-01/DOC-03/DOC-05/DOC-07;ST-01;新增名称唯一;REQ-008/验收要点 1 | 1. 提交后返回列表并提示"新增成功"类文案<br>2. 新公司状态=启用(绿)、按创建时间倒序位于首位,列表与导出均可见<br>3. 编辑页回显全部字段与四张证件(可预览),与提交值一致<br>4. logistics_company 新增一行:deleted=0、证件字段存 OBS URL、创建人=当前账号、创建时间=当前时刻 | 对应TP-B-019;REQ-008(漏测清单 §4 正向成功链路) |
| PLT_BSC_LC_039 | 平台端-基础信息-物流公司管理-新增 | 验证提交失败后表单不清空且修正后可再次提交成功 | P1 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;LC-01 已存在(名称占用) | 1. 填写完整表单但名称填为 LC-01 名称,点提交触发唯一性失败<br>2. 核对已填字段与已传证件是否保留<br>3. 仅修改名称为唯一值后再次提交<br>4. 核对落库 | UQ-01;LC-01;REQ-008 | 1. 校验失败后全部已填字段与已传证件保留(含下拉、级联、日期),表单不清空<br>2. 错误字段就近标红,提示文案定位准确到字段<br>3. 修正出错字段后可直接再次提交并成功,无需重传证件<br>4. 修正提交后数据库恰一条新增记录,无首次提交残留脏数据 | 对应TP-B-020;REQ-008 |
| PLT_BSC_LC_040 | 平台端-基础信息-物流公司管理-新增 | 验证快速重复点击提交仅生成一条公司记录(幂等) | P0 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;表单已填写完整且数据合法 | 1. 在 1 秒内连续点击"提交"按钮 3 次<br>2. 记录按钮态变化与返回结果<br>3. 返回列表核对新增条数<br>4. 核对数据库记录与重复请求响应 | UQ-10(1 秒连点 3 次);REQ-011;项目画像 §8.2 | 1. 连续点击仅生成 1 条公司记录,无重复数据<br>2. 提交中按钮置灰/防抖,无重复请求发出或重复请求被幂等拦截<br>3. 页面成功提示不堆积(无多个弹窗)、无报错弹窗<br>4. 重复请求返回一致结果;数据库该名称恰一条 deleted=0 记录 | 对应TP-B-021;REQ-011(项目画像 §8.2 重复提交(幂等)必测);[AI修正: 评审修复 O-003] |
| PLT_BSC_LC_041 | 平台端-基础信息-物流公司管理-新增 | 验证特殊字符与注入字符在新增与查询中无 XSS/注入副作用 | P2 | 安全性测试 | ACC-01/ACC-02 已登录并停留在新增页与列表页 | 1. 新增表单名称输入 NM-09(<script>alert('XSS')</script>)、备注输入 RM-06、详细地址输入 DT-05 同类样本后提交<br>2. 查询条件名称输入 SEC-01(' OR '1'='1)点查询<br>3. 查询条件输入 SEC-02(<img src=x onerror=alert(1)>)点查询<br>4. 列表与编辑页回显上述记录并检查控制台 | NM-09/NM-10;RM-06/RM-07(1'; WAITFOR DELAY '0:0:5'--);SEC-01/02/03;DT-05 | 1. 注入字符保存后在列表/编辑页/详情均转义展示为纯文本,脚本不执行、无弹窗<br>2. 查询框输入注入字符不报 500、不泄露 SQL 错误,无副作用(数据无被篡改、DROP 类语句不生效)<br>3. WAITFOR DELAY 样本无 5 秒延迟(参数化生效)<br>4. 控制台无未捕获异常;列表查询/重置/导出等页面功能可正常执行(无因注入样本导致的渲染或请求异常) | 对应TP-B-022;漏测清单 §1 特殊字符(安全);[AI修正: 评审修复 O-002] |
| PLT_BSC_LC_042 | 平台端-基础信息-物流公司管理-新增 | 验证证件上传回显、重复上传替换与上传中状态 | P2 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;具有网络限速手段(DevTools) | 1. 上传营业执照样本,核对回显(文件名/缩略图)<br>2. 对同一类证件再次上传另一文件,核对替换<br>3. 用限速模拟上传中状态核对进度/ Loading<br>4. 阻断上传接口模拟失败后核对提示与重试 | DOC-01/DOC-11(重新上传替换);DOC-09(大文件);漏测清单 §4 交互细项 | 1. 上传成功后回显文件名或缩略图,可预览<br>2. 同类证件再次上传替换原文件(仅保留最新一份,无两份并存)<br>3. 上传中有进度或 Loading 状态,按钮防重复点击<br>4. 上传失败提示明确且可重试,失败残留(半上传态)不留在表单内 | 对应TP-B-023;REQ-006(漏测清单 §4) |
| PLT_BSC_LC_043 | 平台端-基础信息-物流公司管理-新增 | 验证提交请求断网与超时处理的用户可恢复性 | P2 | 功能测试 | ACC-01/ACC-02 已登录并停留在新增页;表单已填写完整;DevTools 可断网/延迟 | 1. 点击提交瞬间断网,观察页面表现<br>2. 恢复网络后检查是否产生半落库数据<br>3. 用 30 秒延迟模拟接口超时,核对 Loading 与超时提示<br>4. 超时后恢复并可重新提交 | 漏测清单 §2(弱网/断网、超时处理);DOC-01/03/05 | 1. 断网时提交给出明确失败提示(非无响应卡死),表单内容完整保留<br>2. 超时场景有 Loading 与超时提示,超时后按钮恢复可点<br>3. 恢复网络后重新提交成功且不产生重复记录(无半落库脏数据,字段要么全写入要么无变化)<br>4. 重试提交后数据库恰一条记录 | 对应TP-B-024;漏测清单 §2 弱网超时 |
| PLT_BSC_LC_044 | 平台端-基础信息-物流公司管理-编辑 | 验证编辑页两 Tab 结构与切换不丢修改提示 | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 存在(含 3 张合同) | 1. 列表点击 LC-01 公司名称超链接进入编辑页<br>2. 核对 Tab 结构(企业资料/合同管理)<br>3. 在企业资料 Tab 修改法人字段但未保存,切换到合同管理 Tab 再切回<br>4. 核对是否有未保存修改提示与字段值 | LC-01;REQ-012 | 1. 编辑页含"企业资料""合同管理"两个 Tab,可正常切换,无多余第三 Tab<br>2. 企业资料 Tab 与新增表单同构(字段一致)<br>3. 切换 Tab 不静默丢失未保存修改(保留或给出提示,记录实际行为)<br>4. 合同管理 Tab 内容与 TP-E-001 一致(筛选区+按钮组+合同表格) | 对应TP-C-001;REQ-012 |
| PLT_BSC_LC_045 | 平台端-基础信息-物流公司管理-编辑 | 验证编辑页全字段与证件回显完整无乱码 | P1 | 功能测试 | ACC-01/ACC-02 已登录;已存在公司"云南测试回显校验物流有限公司"(含简称码、省市区+详细地址、备注、四类证件;另备一家简称码为空的对照公司) | 1. 进入该公司编辑页逐字段核对<br>2. 核对简称码为空的对照公司的简称码展示<br>3. 点击各证件缩略图预览<br>4. 对照数据库存储值核对回显 | 回显样本公司(字段全填);简称码为空的对照公司;DOC-01/03/05/07 | 1. 全部非空字段回显与保存值逐字符一致(名称/信用代码/法人/联系人/联系方式/简称码/省市区/详细地址/备注)<br>2. 简称码未设置时展示口径统一(空或"-",与列表口径一致),无 null 字符串<br>3. 四类证件可预览、预览内容为已上传文件<br>4. 回显无乱码(中文/间隔号/emoji 样本正常),页面无控制台报错 | 对应TP-C-002;漏测清单 §1 空值 |
| PLT_BSC_LC_046 | 平台端-基础信息-物流公司管理-编辑 | 验证编辑保存唯一性重校验并排除自身 | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 与 LC-02 均存在 | 1. 进入 LC-01 编辑页,不改名称/信用代码,仅修改法人代表名称后保存<br>2. 重新进入编辑,把名称改为 LC-02 名称"昆明测试乙供应链有限公司"后保存<br>3. 再把名称改为全平台唯一新值后保存<br>4. 核对三次结果与数据库值 | UQ-04(排除自身);UQ-05(改为他人值);LC-01/LC-02 | 1. 不修改两个唯一字段时保存不被唯一性误拦,保存成功<br>2. 改为其他公司名称被拒并提示重复,字段标红、表单不清空<br>3. 改为全平台唯一值保存成功,列表对应行即时更新<br>4. 排除自身校验在服务端实现(按 ID 排除),数据库无重复记录 | 对应TP-C-003;REQ-012/6.3;[待确认] "排除自身"字段范围是否覆盖简称码(口径③,见分析 11.2 #4) |
| PLT_BSC_LC_047 | 平台端-基础信息-物流公司管理-编辑 | 验证编辑保存成功并写入行为日志 | P0 | 功能测试 | ACC-01 已登录;LC-01 存在;行为日志查询入口可用(运维工具-行为日志) | 1. 记录 LC-01 当前法人/联系人/详细地址/创建人/创建时间<br>2. 编辑页修改法人代表名称与详细地址后保存<br>3. 返回列表核对该行数据与创建人/创建时间<br>4. 在行为日志中按操作人+时间检索该次编辑记录 | LC-01;RM-01;REQ-035;项目画像 §7.3 | 1. 保存成功提示,列表对应行法人/地址即时更新为最新值<br>2. 创建时间/创建人保持不变(不被编辑刷新)<br>3. 行为日志新增一条记录,含操作人(ACC-01)、时间、IP、变更摘要(体现法人/地址字段前后值)<br>4. 数据库该行 update_time 更新、唯一字段未变;日志记录不可被普通角色删除 | 对应TP-C-004;REQ-012/第 3 章(项目差异化:行为日志四要素) |
| PLT_BSC_LC_048 | 平台端-基础信息-物流公司管理-编辑 | 验证编辑页证件替换与必传删除阻断 | P1 | 功能测试 | ACC-01/ACC-02 已登录;已存在含四类证件的公司(承接 045 样本) | 1. 编辑页对营业执照重新上传新文件(如过期的换成营业执照_测试甲.png)<br>2. 保存后重新打开编辑页核对预览<br>3. 删除身份证国徽面后点击保存<br>4. 核对行为日志 | DOC-01(新文件样本);DOC-05;DOC-11(替换) | 1. 替换后预览为最新文件、旧文件不再被引用(URL 更新为最新)<br>2. 数据库中该证件字段值为最新 OBS URL、不产生双文件并存<br>3. 必传证件删除后保存被阻断并提示,阻断时不更新任何字段<br>4. 替换操作记入行为日志(变更摘要含证件更换) | 对应TP-C-005;REQ-012 |
| PLT_BSC_LC_049 | 平台端-基础信息-物流公司管理-删除与启停用 | 验证删除二次确认弹窗与取消不产生任何变更 | P1 | 功能测试 | ACC-01/ACC-02 已登录;LC-04(无合同无引用)存在且列表可见 | 1. 点击 LC-04 行"删除"按钮<br>2. 核对二次确认框文案<br>3. 点击"取消"<br>4. 再次点击删除并在确认框中确认,记录删除结果(本步完成后 LC-04 即为已逻辑删除状态) | LC-04;REQ-013/BR-04;DL-04 | 1. 弹出二次确认框,文案说明为逻辑删除且不可恢复、不可物理删除<br>2. 取消后记录状态与列表展示不变,数据库无任何字段变更(deleted=0、无日志新增)<br>3. 确认后才进入删除校验流程<br>4. 页面无"物理删除"入口 | 对应TP-D-001;REQ-013/BR-04;[AI修正: 评审修复 S-002] |
| PLT_BSC_LC_050 | 平台端-基础信息-物流公司管理-删除与启停用 | 验证存在生效中合同时删除被阻断并提示引导停用 | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 存在 2 张生效中合同(HT-2026-0001/0002);LC-03 存在 1 张生效中合同(HT-2026-0001 同号) | 1. 对 LC-01 发起删除并确认<br>2. 核对阻断提示内容(含生效合同数)<br>3. 对 LC-03 发起删除并确认<br>4. 核对列表与数据库记录 | LC-01(2 张生效中);LC-03(1 张生效中);DL-01/DL-03 | 1. 两次删除均被阻断,提示包含生效合同数量(LC-01=2、LC-03=1)<br>2. 提示引导改用"停用"操作<br>3. 数据未被逻辑删除(列表仍可见、deleted 保持 0)<br>4. 阻断不产生部分删除效果(关联合同与档案均无变化) | 对应TP-D-002;REQ-013/BR-04/验收要点 2 |
| PLT_BSC_LC_051 | 平台端-基础信息-物流公司管理-删除与启停用 | 验证被任一运单引用时删除被阻断(含历史运单) | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-02 被 WT-03 引用(合同均已过期/待生效);LC-01 被 WT-04 引用 | 1. 对 LC-02 发起删除并确认<br>2. 核对提示文案<br>3. 对已完结/已打款状态的引用运单公司 LC-02 复核(构造历史已完成运单引用)<br>4. 核对列表与数据库 | LC-02;WT-03(历史运单);DL-02;REQ-013/BR-04 | 1. 存在 1 张关联运单即阻断删除,提示明确为"被运单引用"类文案(区分于"生效合同"原因)<br>2. 运单为历史已完结/已打款状态同样阻断(历史追溯口径)<br>3. 公司无生效合同但被引用时同样阻断(LC-02 合同均已过期仍被拦)<br>4. deleted 保持 0、列表仍可见、运单与档案数据均无变化 | 对应TP-D-003;REQ-013/BR-04 |
| PLT_BSC_LC_052 | 平台端-基础信息-物流公司管理-删除与启停用 | 验证删除阻断条件按合同三态拆分与组合提示 | P1 | 功能测试 | ACC-01/ACC-02 已登录;LC-02 仅有已过期/待生效合同且被 WT-03 引用;LC-01 同时命中"生效合同+运单引用"双条件;LC-03 仅生效合同无引用 | 1. 新造公司 A(仅挂待生效合同、无运单/货源引用)发起删除<br>2. 新造公司 B(仅挂已过期合同、无运单/货源引用)发起删除<br>3. 对 LC-01(双条件命中)发起删除并核对提示完整性<br>4. 对 LC-03(仅生效合同)核对提示仅含合同原因 | LC-02(HT-2026-0011 过期+0012 待生效);LC-01(双条件);LC-03;DL-01 | 1. 公司 A 删除成功(deleted=1、列表消失),提示原因不含"生效合同";若产品口径为阻断则按双分支记录实际行为<br>2. 公司 B 删除成功(deleted=1、列表消失),提示原因不含"生效合同";若产品口径为阻断则按双分支记录实际行为<br>3. 双条件命中时提示原因完整:同时含生效合同数(2)与"被运单引用"<br>4. 提示原因与命中条件一一对应,不误导;无合同无引用可删除(衔接 054) | 对应TP-D-004;REQ-013(漏测清单 §5 状态拆分);[AI修正: 评审修复 S-005] |
| PLT_BSC_LC_053 | 平台端-基础信息-物流公司管理-删除与启停用 | 验证仅被货源引用公司的删除行为(双口径待裁决) | P2 | 功能测试 | ACC-01/ACC-02 已登录;LC-05 仅被货源 HY-02 引用、未产生任何运单 | 1. 对 LC-05 发起删除并确认<br>2. 记录实际结果(可删/阻断)<br>3. 若可删除:删除后进入货源管理查看 HY-02 的物流公司列<br>4. 若阻断:记录提示原因 | LC-05;HY-02;DL-05 双口径样本;SS-07 | 1. 按当前口径(仅生效合同/运单引用两条件)LC-05 可删除;删除后货源 HY-02 的物流公司列仍按快照显示"大理测试戊物流有限公司"(不空白、不变为"无外协公司")<br>2. 公司档案不可再查(列表不含)、导出与选择弹窗不含<br>3. 若决议追加"被货源引用"为阻断条件,则本用例按阻断口径记录并回归<br>4. 本用例按两种口径均记录实际结果,不得静默按单口径判定 | 对应TP-D-005;BR-04/验证要点 2;[待确认] BR-04 删除保护是否覆盖"仅被货源引用、尚无运单"的公司(口径②,见分析 11.2 #3) |
| PLT_BSC_LC_054 | 平台端-基础信息-物流公司管理-删除与启停用 | 验证可删除公司逻辑删除生效与全入口不可见 | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-04 存在且无合同无引用;已在选择弹窗与打款下拉记录 LC-04 当前可见状态 | 1. 对 LC-04 点击删除并在二次确认中确认<br>2. 核对列表刷新与提示<br>3. 打开核算选择弹窗与货源选择弹窗检索 LC-04<br>4. 导出列表核对与行为日志 | LC-04;DL-04;REQ-013/6.5 | 1. 删除成功提示,列表刷新后 LC-04 不再出现<br>2. 数据库 logistics_company 中该行 deleted=1(逻辑删除,行保留),无物理删除<br>3. 导出文件不含该记录;核算选择弹窗与货源选择弹窗均不出现该记录<br>4. 行为日志新增删除操作记录(操作人/时间/IP/摘要) | 对应TP-D-006;REQ-013/验收要点 2/6.5;前置承接:LC-04 确认删除由本用例唯一执行(PLT_BSC_LC_049 步骤 4 仅记录结果);若 049 已执行确认删除,本用例前置改为"LC-04 已逻辑删除"、步骤 1 改用新造可删除公司;[AI修正: 评审修复 S-002] |
| PLT_BSC_LC_055 | 平台端-基础信息-物流公司管理-删除与启停用 | 验证删除幂等与两账号并发删除的表现 | P2 | 功能测试 | 两个已登录会话(ACC-01/ACC-02);已准备可删除公司一家(新造"云南测试删除并发物流有限公司") | 1. 单会话对同一公司快速点击删除 2 次<br>2. 两会话同时对该公司发起删除<br>3. 记录两次结果与提示<br>4. 核对数据库 deleted 值与残留数据 | 新造可删除公司;项目画像 §8.2 重复提交/并发提交 | 1. 重复点击删除仅执行一次且不报错,提示不堆积<br>2. 并发删除时先到者成功、后到者提示"记录不存在或已删除"(非 500)<br>3. deleted 值恰为 1,无重复删除副作用(无多处日志堆积、无关联数据被误删)<br>4. 无残留脏数据 | 对应TP-D-007;项目画像 §8.2 |
| PLT_BSC_LC_056 | 平台端-基础信息-物流公司管理-删除与启停用 | 验证已删除为终态:无恢复入口且全入口不可见 | P1 | 功能测试 | ACC-01/ACC-02 已登录;LC-04/LC-05 已逻辑删除;打款筛选下拉与列表已知状态 | 1. 在列表、导出、核算选择弹窗、货源选择弹窗、打款筛选下拉逐处检索已删除公司<br>2. 查找"恢复/还原"入口<br>3. 用历史 URL 或接口直接访问已删除公司编辑页/详情<br>4. 核对接口返回 | LC-04/LC-05;SS-08;DL-07;需求 7.1 禁止流转 | 1. 列表、导出、核算勾选、货源选择、打款筛选下拉均不含已删除公司<br>2. 全站无"恢复/还原"入口,删除为终态<br>3. 通过 URL 直达或接口访问已删除公司 ID 被拒绝(404/无权限/记录不存在类响应),不渲染详情<br>4. 历史运单/货源/打款中该公司记录仍显示快照名称(衔接 PLT_TMS_LC_052) | 对应TP-D-008;需求 7.1(禁止流转) |
| PLT_BSC_LC_057 | 平台端-基础信息-物流公司管理-删除与启停用 | 验证停用二次确认、取消不生效与即时消失 | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 为启用状态;已打开核算选择弹窗记录 LC-01 可见 | 1. 在列表行内开关点击"停用"<br>2. 在二次确认框中点"取消"<br>3. 再次点击停用并确认<br>4. 刷新已打开的选择弹窗核对 LC-01 | LC-01;ST-02/ST-03;SS-01;BR-05 | 1. 停用前弹出二次确认框,取消后状态保持启用、无日志与状态变更<br>2. 确认后行内开关变灰(停用)、列表状态列更新<br>3. 同一时刻打开的选择弹窗刷新后 LC-01 立即消失(不使用缓存,无需等待过期)<br>4. 数据库 status 字段更新为停用值、操作记入行为日志 | 对应TP-D-009;REQ-015/BR-05/验收要点 3 |
| PLT_BSC_LC_058 | 平台端-基础信息-物流公司管理-删除与启停用 | 验证停用后历史数据、档案管理与打款筛选不受影响 | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-06 停用且被 WT-05 引用、关联打款 PY-03;LC-06 含历史合同 HT-2026-0021 | 1. 在运费核算列表与运单管理查看 WT-05 的物流公司列<br>2. 对 LC-06 执行列表查询、进入编辑页、进入合同管理 Tab 操作<br>3. 核对 LC-06 的生效合同数统计<br>4. 在财务打款页筛选下拉选择 LC-06 并查询 | LC-06;WT-05;PY-03;HT-2026-0021;SS-02/SS-03/SS-06 | 1. 停用前已关联的运单快照展示不变(WT-05 仍显示"保山测试己运输有限公司")<br>2. 停用公司仍可在列表查询到、可编辑、可管理合同(增删改合同正常)<br>3. 停用公司生效合同数统计照常(0,仅过期合同)<br>4. 打款筛选下拉含 LC-06,可筛出其历史打款记录 PY-03(与核算弹窗不可见形成对照) | 对应TP-D-010;BR-05(打款筛选见 PLT_TMS_LC_037) |
| PLT_BSC_LC_059 | 平台端-基础信息-物流公司管理-删除与启停用 | 验证停用公司启用即时生效并恢复弹窗可见 | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-06 为停用状态;核算选择弹窗可打开 | 1. 对 LC-06 点击"启用"<br>2. 核对是否需二次确认(需求仅规定停用需二次确认)<br>3. 核对开关颜色与列表状态<br>4. 刷新核算选择弹窗与货源选择弹窗检索 LC-06 | LC-06;ST-04;SS-04;REQ-016/BR-05 | 1. 启用即时生效(无延迟、无二次确认或按需求口径记录)<br>2. 状态开关变绿、列表状态列更新为启用<br>3. 核算选择弹窗与货源选择弹窗立即可见 LC-06<br>4. 数据库 status 更新、启用操作记入行为日志(操作人/时间/IP/摘要) | 对应TP-D-011;REQ-016/BR-05 |
| PLT_BSC_LC_060 | 平台端-基础信息-物流公司管理-删除与启停用 | 验证状态列颜色与操作列按钮在各状态下的映射 | P2 | 功能测试 | ACC-01/ACC-02 已登录;列表同时存在启用(LC-01)与停用(LC-06)记录 | 1. 核对启用行与停用行的开关颜色<br>2. 核对两种状态行的编辑/删除按钮可见性<br>3. 点击停用行的编辑按钮进入编辑页<br>4. 切换开关观察防误触与多次点击表现 | LC-01/LC-06;漏测清单 §4 状态与按钮映射 | 1. 启用行开关为绿色、停用行为灰色,颜色与状态一一对应(无错配)<br>2. 编辑/删除按钮在启用与停用两种状态下均可见(停用不代表不可编辑)<br>3. 停用公司可正常进入编辑页并保存<br>4. 开关切换中有防误触(禁用或二次确认),无越权/错态操作入口 | 对应TP-D-012;漏测清单 §4/最佳实践 |
| PLT_BSC_LC_061 | 平台端-基础信息-物流公司管理-删除与启停用 | 验证删除后名称/信用代码/简称码可复用(规则组合) | P1 | 功能测试 | ACC-01/ACC-02 已登录;LC-04 已被逻辑删除(承接 054);已知其名称、代码、简称码(YND 口径) | 1. 新造临时公司("云南测试重建样本物流有限公司"+91530102MA6BA5C314,简称码 DL6)并删除该临时公司<br>2. 用与临时公司完全相同的三元组(名称+91530102MA6BA5C314+简称码 DL6)新建公司提交<br>3. 核对新建成功与列表展示<br>4. 核对导出与统计是否将新旧两家视为同一 | UQ-06/DL-06;LC-04 的名称+代码+简称码;BR-01 | 1. 删除后同名新建成功、同代码新建成功、同简称码新建成功(唯一性不含已逻辑删除公司)<br>2. 新建公司与已删除行在数据库并存(deleted=0 与 deleted=1 各 1 条,共 2 条记录),无唯一性误拦<br>3. 列表仅展示新建公司(1 条,不含已删除行),导出/统计不混淆新旧<br>4. 全部唯一性校验按 deleted=0 范围执行(规则组合生效) | 对应TP-D-013;BR-01+BR-04 组合/REQ-009;本用例为"已删除后三元组复用"的唯一创建执行点(PLT_BSC_LC_034/035/036 不得再创建同名/同码/同简称码公司,顺序执行时以本用例的重建记录为准);[AI修正: 评审修复 S-003] |
| PLT_BSC_LC_062 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同管理 Tab 筛选区、按钮组与表格结构完整 | P1 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 存在(名下有 3 张合同);"企业货主-编辑-合同管理"截图基线可参照 | 1. 进入 LC-01 编辑页点击"合同管理"Tab<br>2. 核对筛选区四个条件(合同编号/所属税源地/签订时间范围/创建时间范围)<br>3. 核对按钮组(查询/新增/导出)<br>4. 点击"新增"核对弹窗打开 | LC-01;REQ-017/6.4 | 1. 筛选条件四条齐全、类型正确(编号输入框、税源地下拉、两个日期范围)<br>2. 按钮组含查询/新增/导出三个按钮且可用<br>3. 合同表格渲染 1 条以上记录、列结构见 PLT_BSC_LC_064<br>4. 点击"新增"打开新增合同弹窗(对标企业货主-新增合同弹窗),布局一致 | 对应TP-E-001;REQ-017 |
| PLT_BSC_LC_063 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同四个筛选条件单独与组合查询准确且重置恢复 | P1 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 合同台账(HT-2026-0001 生效中、HT-2026-0002 生效中、HT-2025-0987 已过期)已就绪 | 1. 合同编号输入"HT-2026"点查询<br>2. 清空后按所属税源地筛选(TX-01 真实字典值)点查询<br>3. 按签订时间范围 [T-35, T] 查询,再按创建时间范围单独查询<br>4. 组合"编号 HT-2026 + 签订时间范围"查询后点"重置",再用无结果关键词查询 | CN-01;TX-01;HT-2026-0001/0002/0987;QR-07 同口径空态 | 1. 编号模糊查询命中 LC-01 名下编号含"HT-2026"的合同(不含其他公司合同)<br>2. 税源地筛选结果与所选字典值一一对应<br>3. 签订时间与创建时间两个范围互不串字段,各自筛选结果符合台账<br>4. 重置清空全部条件恢复全量;无结果时有明确提示(非空白) | 对应TP-E-002;REQ-017(漏测清单 §4) |
| PLT_BSC_LC_064 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同列表十类列完整与状态列三态正确展示 | P1 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 含生效中/已过期合同;LC-02 含待生效合同 HT-2026-0012 | 1. 核对合同列表表头与顺序<br>2. 核对 HT-2026-0001 行状态列<br>3. 进入 LC-02 合同管理 Tab 核对 HT-2026-0012 状态列<br>4. 核对时间列格式与操作列三入口 | CN-01;HT-2026-0001(生效中)、HT-2025-0987(已过期)、HT-2026-0012(待生效) | 1. 十类列齐全且顺序为:选择框、合同编号、所属税源地、合同状态、创建人、签订时间、创建时间、生效时间、过期时间、操作<br>2. 状态列按系统计算展示"待生效/生效中/已过期"三态,与台账一致<br>3. 时间列格式统一(YYYY-MM-DD,若含时分则全列统一)<br>4. 操作列含查看/编辑/删除三个入口且均可点击 | 对应TP-E-003;REQ-018 |
| PLT_BSC_LC_065 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同列表选择框保留但无任何批量操作入口 | P3 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 合同管理 Tab 存在 3 张合同 | 1. 核对表头选择框列存在<br>2. 勾选其中 1 条合同,观察页面按钮区变化<br>3. 勾选全部合同(全选)再观察<br>4. 用 DevTools 监听请求确认勾选不触发接口调用 | LC-01 合同列表;REQ-037/6.4 负向范围 | 1. 选择框列保留可选,勾选后无"批量删除/批量导出"等批量按钮出现<br>2. 全选后同样无批量操作入口出现(本期不提供批量操作)<br>3. 勾选动作不触发任何接口请求<br>4. 与需求 6.4 一致(仅保留列),无过度实现 | 对应TP-E-004;REQ-037/6.4(负向范围,防过度实现) |
| PLT_BSC_LC_066 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同新增正向链路:状态自动计算与生效合同数联动 | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 合同管理 Tab 已打开;环境"数据字典-税源地"已维护真实值;本地准备 AT-01 附件 | 1. 点击"新增",填写合同编号、签订时间、生效时间、过期时间、所属税源地并上传附件<br>2. 点击保存<br>3. 核对列表新行与状态列<br>4. 返回列表页核对 LC-01 生效合同数<br>5. 核对数据库与行为日志 | CN-01 变体(如 HT-2026-0003);生效时间=T、过期时间=T+365;TX-01 真实字典值;AT-01(合同扫描件.pdf) | 1. 保存成功提示,合同列表出现该记录且录入值与列表一致<br>2. 状态自动计算正确(生效时间≤今天≤过期时间 → 生效中)<br>3. LC-01 列表"生效合同数"随之 +1<br>4. logistics_contract 落库(company_id 关联 LC-01、附件 OBS URL);行为日志记录新增合同操作 | 对应TP-E-005;REQ-019/验收要点 4;[AI修正: 评审修复 O-001] |
| PLT_BSC_LC_067 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同编号同公司唯一、跨公司可重复 | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 已用编号 HT-2026-0001;LC-03 已用同号 HT-2026-0001(跨公司重复对) | 1. 在 LC-01 合同管理下新增编号 HT-2026-0001 的合同并保存<br>2. 核对阻断提示与表单态<br>3. 进入 LC-03 合同管理 Tab 核对已存在的 HT-2026-0001 行<br>4. 在 LC-03 下再次新增编号 HT-2026-0001,验证同公司唯一性仍然生效 | CN-04(同公司重复);CN-05(跨公司重复);LC-01/LC-03 | 1. LC-01 下重复编号保存被拒,提示在弹窗内就地显示且表单不清空<br>2. 不同公司之间允许使用相同编号(LC-01 与 LC-03 同号并存)<br>3. LC-03 下再次新增同号仍被拒(同公司唯一基于 company_id 范围)<br>4. 数据库唯一约束按 company_id+编号组合实现,跨公司记录互不冲突 | 对应TP-E-006;BR-03;[AI修正: 评审修复 S-006] |
| PLT_BSC_LC_068 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同编号 ≤50 字符边界与编辑不改编号可保存 | P1 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 存在合同 HT-2026-0001;已准备 V-13/V-14 字面值 | 1. 新增合同编号输入 V-13(恰 50 字符)保存<br>2. 输入 V-14(51 字符)保存<br>3. 编辑 HT-2026-0001 仅更换附件(编号不变)后保存<br>4. 编辑另一合同把编号改为 HT-2026-0001(同公司已用)后保存 | CN-02/V-13(50 字);CN-03/V-14(51 字);CN-06(编辑排除自身);CN-04 | 1. 50 字符编号保存成功<br>2. 51 字符被阻断并提示上限<br>3. 仅改其他字段(编号不变)保存成功、不被唯一性误拦(排除自身生效)<br>4. 改为同公司其他已用编号被拒并提示 | 对应TP-E-007;REQ-019/BR-03;[待确认] 合同编号编辑是否"排除自身"重校验(口径③,见分析 11.2 #4) |
| PLT_BSC_LC_069 | 平台端-基础信息-物流公司管理-合同管理 | 验证过期时间必须晚于生效时间的三类边界 | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 合同管理 Tab 已打开;日期控件可用 | 1. 新增合同设置生效=过期=T+10 保存<br>2. 设置生效=T+100、过期=T+10(倒置)保存<br>3. 设置生效=T+10、过期=T+11(晚 1 天)保存<br>4. 核对每次弹窗状态与提示<br>5. 分别留空签订时间、生效时间、过期时间各保存一次 | CD-01(过期=生效);CD-02(过期<生效);T+10=2026-10-09、T+11=2026-10-10 | 1. 过期=生效被拒,提示"过期时间必须晚于生效时间"类文案<br>2. 过期早于生效被拒、提示明确<br>3. 过期=生效+1 天通过并保存成功<br>4. 所有阻断场景弹窗不关闭、已填内容保留;数据库无非法记录落库<br>5. 三项时间任一为空保存均被阻断、错误字段就近标红,弹窗不关闭、数据库无非法记录(样本 CD-04) | 对应TP-E-008;BR-03/验收要点 4;CD-04;[AI修正: 评审修复 S-008] |
| PLT_BSC_LC_070 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同状态自动计算与"含边界当天"口径 | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-07 台账 HT-2026-0031~0034 已就绪(CD-B1/B2 为日敏感样本,仅执行当天有效);可 mock 系统日期 | 1. 核对 HT-2026-0031(生效时间=T 当天)状态<br>2. 核对 HT-2026-0032(过期时间=T 当天)状态<br>3. 核对 HT-2026-0033(过期=T-1)与 HT-2026-0034(生效=T+1)状态<br>4. 尝试在列表/弹窗中手工修改状态;mock 日期+1 天后复核 0031~0034 状态变化 | HT-2026-0031(当天生效);HT-2026-0032(当天过期);HT-2026-0033(昨天过期);HT-2026-0034(明天生效);CD-06/SS-11 | 1. 生效时间=今天 → 生效中;过期时间=今天 → 仍为生效中(含边界当天口径,当前日期∈[生效,过期])<br>2. 过期=昨天 → 已过期;生效=明天 → 待生效<br>3. 状态列与弹窗均无手工设置/编辑入口,状态不可被人工修改<br>4. mock 日期推进后状态由待生效→生效中→已过期自动流转(单向,无跳过),LC-07 生效合同数随状态统计变化(当天=2,次日=1) | 对应TP-E-009;REQ-021/BR-03/7.2(漏测清单 §5 状态拆分) |
| PLT_BSC_LC_071 | 平台端-基础信息-物流公司管理-合同管理 | 验证签订时间可晚于当前日期(补录场景) | P2 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 合同管理 Tab 已打开 | 1. 新增合同签订时间设为 T+30(2026-10-29,未来日期)保存<br>2. 核对保存结果与列表展示<br>3. 设置签订时间晚于生效时间(如签订=T+30、生效=T+10)保存<br>4. 按签订时间范围筛选该合同 | CD-03(补录-签订晚于当前);T+30=2026-10-29;T+10=2026-10-09 | 1. 签订时间为未来日期保存成功(不做强校验,补录口径)<br>2. 列表签订时间列展示所填未来日期<br>3. 签订时间早于/晚于生效时间的组合不做阻断(需求不做约束)<br>4. 签订时间参与筛选正确(按范围可命中该合同),状态仍按生效/过期时间独立计算 | 对应TP-E-010;REQ-019 |
| PLT_BSC_LC_072 | 平台端-基础信息-物流公司管理-合同管理 | 验证所属税源地必选与数据字典来源一致 | P1 | 功能测试 | ACC-01/ACC-02 已登录;已从"基础信息-数据字典-税源地"读取前 2 项真实字典值(TX-01) | 1. 新增合同不选税源地直接保存<br>2. 打开税源地下拉逐项核对与字典维护内容一致<br>3. 选择 TX-01 真实值保存后重新打开编辑弹窗核对回显<br>4. 在数据字典新增一个税源地后刷新下拉(或记录同步口径) | TX-01(真实字典值,数据缺口 #6);TX-02(不选);TX-03(字典外值接口级) | 1. 未选税源地保存被阻断并提示必选<br>2. 下拉选项与"数据字典-税源地"维护内容一致(与企业货主同源)<br>3. 保存后编辑弹窗回显所选字典值正确<br>4. 接口携带字典外编码提交时按服务端字典校验拒绝(记录实际口径);字典停用项按字典口径表现(记录) | 对应TP-E-011;REQ-019/6.4 |
| PLT_BSC_LC_073 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同附件必传与七格式白名单 | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 合同管理 Tab 已打开;本地准备 AT-01 七个白名单样本与 AT-02 拒绝样本 | 1. 不传附件填写其余字段后保存<br>2. 依次上传 pdf/doc/docx/jpg/jpeg/bmp/png 七类样本各一次并保存<br>3. 依次上传 xlsx/txt/zip/rar/gif 样本<br>4. 核对上传后文件名展示<br>5. 上传大写扩展名样本(合同.PDF、合同.Jpg,AT-03)并记录实际口径 | AT-01(7 类);AT-02(白名单外);AT-04(无扩展名) | 1. 未上传附件保存被阻断并提示附件必传<br>2. 七种格式逐一上传成功,上传后显示文件名<br>3. 白名单外格式(xlsx/txt/zip/rar/gif)拒绝并提示格式白名单(注意 gif/rar 也在白名单外)<br>4. 无扩展名文件("合同附件")被拒绝;拒绝后不产生上传残留<br>5. 大写扩展名的实际处理行为记录(大小写不敏感放行 或 仅接受小写并提示),与评审结论对齐后回归,不得静默按单一口径断言 | 对应TP-E-012;REQ-019/BR-03;[待确认] 合同附件扩展名大小写口径(.PDF/.Jpg 是否放行,见测试数据 §10 补充-1);[AI修正: 评审修复 B-002] |
| PLT_BSC_LC_074 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同附件伪造扩展名与异常文件防御 | P1 | 功能测试 | ACC-01/ACC-02 已登录;本地准备 AT-05 伪造样本(病毒.exe.pdf、contract.pdf.exe、png 改名 jpg)与 0 字节空文件 | 1. 上传"病毒.exe.pdf"与"contract.pdf.exe"<br>2. 上传 exe 改名为"合同扫描件.jpg"的文件<br>3. 上传 0 字节空文件<br>4. 上传截断损坏的 pdf 文件 | AT-05;AT-06(0 字节);SEC-09;漏测清单 §1 | 1. 双扩展名与伪造样本被拒绝或按服务端真实类型校验检出,任何情况下不被执行、不落 OBS<br>2. exe 改名 jpg 被拒绝并提示<br>3. 0 字节空文件的实际处理行为记录(拒绝或允许并提示)<br>4. 损坏文件给出可读提示、无 500 堆栈暴露;拒绝场景表单已填内容不丢失 | 对应TP-E-013;REQ-019(漏测清单 §1;0 字节为观察项);[待确认] 合同附件扩展名大小写口径(.PDF/.Jpg 是否放行,见测试数据 §10 补充-1);[AI修正: 评审修复 B-002] |
| PLT_BSC_LC_075 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同附件不设大小上限(Q6)下大文件上传表现 | P2 | 功能测试 | ACC-01/ACC-02 已登录;本地准备约 300MB 大文件 AT-06(合同扫描件大文件.pdf);DevTools 可观察上传耗时 | 1. 上传约 100MB 级附件并观察前端是否拦截<br>2. 上传约 300MB 大文件,记录 Loading 与耗时<br>3. 上传期间切走页面再返回观察上传是否继续<br>4. 阻断/延迟上传接口模拟超时后核对提示与重试 | AT-06(约 300MB,DOC-09 同类);Q6 决议(不设上限);RISK-AVAILABILITY | 1. 大文件不被前端大小校验拒绝(口径为不设上限)<br>2. 上传耗时过长时有 Loading 与超时提示,不出现无反馈卡死<br>3. 上传失败可重试且不影响已填表单内容(已选附件/字段保留)<br>4. 实际上传耗时记录供评审确认是否需要补充限制;成功后 OBS URL 与文件大小一致 | 对应TP-E-014;Q6 决议(记录耗时供评审) |
| PLT_BSC_LC_076 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同附件单附件替换与多选限制 | P1 | 功能测试 | ACC-01/ACC-02 已登录;合同 HT-2026-0001 已含附件(合同扫描件.pdf);本地准备第二份附件 | 1. 编辑 HT-2026-0001 重新上传新的合同扫描件(替换)<br>2. 保存后打开查看弹窗核对附件文件名与预览内容<br>3. 重新编辑,一次选择 2 个文件上传<br>4. 核对列表与存储 | AT-07(重新上传替换);AT-08(多文件选择);HT-2026-0001 | 1. 重新上传后仅显示新文件(旧文件被替换、旧 URL 不再被引用)<br>2. 查看/下载得到的是最新文件,内容与替换件一致<br>3. 一次选择 2 个文件时按单附件限制处理(仅取 1 个或明确提示),不产生多附件并存<br>4. 数据库中附件 URL 字段恰 1 个值(单附件约束落库) | 对应TP-E-015;Q6 决议/REQ-019/020 |
| PLT_BSC_LC_077 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同附件预览与下载正确渲染且与原件一致 | P1 | 功能测试 | ACC-01/ACC-02 已登录;合同 HT-2026-0001 附件为 pdf,另有 jpg 附件合同可用;OBS 服务可用 | 1. 打开合同查看弹窗点击附件"预览"<br>2. 核对 pdf 渲染与图片渲染<br>3. 点击"下载"保存文件并打开核对<br>4. 核对下载文件名 | HT-2026-0001;AT-01(pdf 与 jpg 样本) | 1. 预览按格式正确渲染(pdf 内嵌预览、图片直接显示)<br>2. 下载文件可打开且内容与上传原件一致(哈希或逐页比对)<br>3. 下载文件名与上传文件名一致(含中文不乱码)<br>4. 预览/下载失败时有明确提示(联动 078 的 OBS 场景) | 对应TP-E-016;REQ-020 |
| PLT_BSC_LC_078 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同附件上传/预览在 OBS 不可用时的失败处理 | P2 | 功能测试 | ACC-01/ACC-02 已登录;具备 OBS/文件服务故障注入手段(数据缺口 #11,运维配合或 DevTools 拦截);合同弹窗已打开且表单已填部分字段 | 1. 阻断 OBS/上传接口后上传附件<br>2. 核对失败提示与表单内容保留<br>3. 阻断附件预览/下载接口后点击预览与下载<br>4. 恢复服务后重试上传与下载 | 数据缺口 #11(OBS 故障注入);AT-09(上传依赖失败);RISK-AVAILABILITY | 1. OBS 不可用时上传有明确失败提示(可读文案,非 500 堆栈)且可重试<br>2. 表单已填字段与已选内容不丢失<br>3. 预览/下载失败提示可读,不出现白屏或长期 Loading<br>4. 恢复服务后重试上传成功、下载恢复正常 | 对应TP-E-017;RISK-AVAILABILITY(项目画像 §6.1 华为云 OBS 依赖) |
| PLT_BSC_LC_079 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同查看为只读弹窗且字段完整不可编辑 | P1 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 存在合同 HT-2026-0001(含附件) | 1. 点击 HT-2026-0001 行"查看"<br>2. 逐字段核对与列表/详情一致<br>3. 尝试点击各字段(编号/时间/税源地)检查是否可编辑<br>4. 关闭弹窗后核对列表状态 | HT-2026-0001;漏测清单 §4 查看只读 | 1. 查看弹窗全部字段只读展示(文本框禁用或纯文本),与列表数据一致<br>2. 无保存/提交/编辑入口<br>3. 附件可预览/下载<br>4. 关闭后列表状态与数据无变化(未触发任何写接口) | 对应TP-E-018;REQ-020(漏测清单 §4 查看只读) |
| PLT_BSC_LC_080 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同编辑回显、状态重算与行为日志 | P1 | 功能测试 | ACC-01/ACC-02 已登录;LC-02 存在合同 HT-2026-0012(待生效,生效时间 T+10) | 1. 点击 HT-2026-0012 行"编辑",核对弹窗回显(编号/三个时间/税源地/附件)<br>2. 把生效时间改为今天并保存<br>3. 核对列表状态列变化与 LC-02 生效合同数<br>4. 在行为日志检索该次编辑 | HT-2026-0012;T=2026-09-29;CD-06/SS-11 | 1. 编辑弹窗完整回显已有数据(含附件文件名)<br>2. 修改生效时间为当天后保存成功,状态由"待生效"重算为"生效中"<br>3. 列表即时更新;LC-02 生效合同数 +1<br>4. 行为日志新增合同编辑记录(操作人/时间/IP/变更摘要) | 对应TP-E-019;REQ-020 |
| PLT_BSC_LC_081 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同删除二次确认、物理删除与生效合同数联动 | P1 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 存在生效中合同 HT-2026-0002;已记录 LC-01 生效合同数(2) | 1. 点击 HT-2026-0002 行"删除"并在确认框点"取消"<br>2. 再次点击删除并确认<br>3. 核对列表与 LC-01 生效合同数<br>4. 核对行为日志与关联运单/打款数据 | HT-2026-0002(生效中);REQ-020/第 7 章;SS-12 | 1. 删除需二次确认,取消后记录保留、无数据变更<br>2. 确认后合同从列表消失(物理删除,无回收站/草稿态)<br>3. LC-01"生效合同数"由 2 变为 1;数据库 logistics_contract 中该行被物理删除<br>4. 行为日志记录删除操作;删除不影响运单/打款任何流程与数据 | 对应TP-E-020;REQ-020/第 7 章(记录性维护) |
| PLT_BSC_LC_082 | 平台端-基础信息-物流公司管理-合同管理 | 验证公司间合同数据严格隔离不串 | P1 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 与 LC-02 各有合同(HT-2026-0001/0002/0987 与 HT-2026-0011/0012);LC-01 合同管理 Tab 已打开 | 1. 记录 LC-01 合同列表条数与编号集合<br>2. 在 LC-01 下新增合同编号 HT-2026-0011(LC-02 已用编号)<br>3. 进入 LC-02 合同管理 Tab 核对列表<br>4. 删除 LC-01 一张合同后在 LC-02 列表核对 | LC-01/LC-02 合同集合;HT-2026-0011;漏测清单 §4 主体间数据隔离 | 1. A/B 两公司合同列表互相独立(LC-01 列表不含 LC-02 的合同,反之亦然)<br>2. 新增 LC-01 的合同后 LC-02 列表不出现该记录<br>3. LC-01 可成功使用 LC-02 已用编号(跨公司重复允许,验证隔离无误判)<br>4. 删除 LC-01 合同不影响 LC-02;导出仅含当前公司合同(where company_id=当前) | 对应TP-E-021;漏测清单 §4/REQ-018 |
| PLT_BSC_LC_083 | 平台端-基础信息-物流公司管理-合同管理 | 验证合同列表导出列、状态列与 20000 上限口径 | P2 | 功能测试 | ACC-01/ACC-02 已登录;LC-01 名下 3 条合同(BLK-08);已设置筛选条件(编号含 HT-2026) | 1. 在合同管理 Tab 设置筛选条件后点击"导出"<br>2. 打开文件核对列与行<br>3. 核对导出的合同状态列取值<br>4. 构造大数据量合同场景(或复用平台组件口径)核对上限行为 | BLK-08(3 条合同);REQ-017/第 7 章;项目画像 §8.3 | 1. 导出文件可正常打开,列与合同列表一致(含合同状态列)<br>2. 导出数据与当前筛选条件一致且仅含当前公司(company_id 过滤)<br>3. 状态列导出值为导出时的系统计算值(非落库手工值)<br>4. 大数据量按 20000 上限统一口径处理(截断或明确提示),行为与平台其他列表一致 | 对应TP-E-022;REQ-017/第 7 章(项目画像 §8.3) |
| PLT_TMS_LC_001 | 平台端-整车运输-承运结算-运费核算 | 验证运费核算入口与"页面即运单列表"口径(无独立核算单) | P0 | 功能测试 | ACC-03(核算人员)已登录且已授权运费核算权限;环境存在未核算/已核算运单各 1 张以上 | 1. 进入 整车运输 → 承运结算 → 运费核算<br>2. 核对页面为运单列表且含"核算状态"列<br>3. 核对未核算/已核算两态的展示差异与批量核算按钮<br>4. 点击行内"编辑"核对弹窗标题;全页检索"核算单/新建核算单"字样 | ACC-03;REQ-022/6.6;WT-01~WT-10 占位运单 | 1. 页面为运单列表,核算状态列区分"未核算/已核算"两态<br>2. 行内"编辑"打开标题为"修改核算"的弹窗<br>3. 全页面无任何"核算单/新建核算单"字样与入口(口径纠正落地)<br>4. 批量核算按钮存在且可点击(批量口径见 PLT_TMS_LC_021) | 对应TP-F-001;REQ-022/6.6(口径纠正:核算即运单核算) |
| PLT_TMS_LC_002 | 平台端-整车运输-承运结算-运费核算 | 验证修改核算弹窗原有字段不变、新增两字段选填 | P0 | 功能测试 | ACC-03 已登录;WT-08(未核算载体运单,原有字段齐全)存在 | 1. 对 WT-08 点击行内"编辑"打开修改核算弹窗<br>2. 核对原有字段(运单号、货主名称、司机姓名、车牌号、结算吨位等)展示与可编辑口径<br>3. 核对新增"物流公司"字段(含"选择物流公司"入口)<br>4. 核对"客户收货地址"为文本输入 | WT-08;REQ-023 | 1. 原有字段展示正确且可编辑口径与改造前一致(未做非需求变更)<br>2. 新增"物流公司"字段存在、标注选填、为单选交互(含选择入口)<br>3. 新增"客户收货地址"字段存在、标注选填、为纯文本输入<br>4. 弹窗无需求外多余字段;布局对齐需求 6.6 | 对应TP-F-002;REQ-023 |
| PLT_TMS_LC_003 | 平台端-整车运输-承运结算-运费核算 | 验证选择弹窗仅加载启用公司(停用/已删除均不出现) | P0 | 功能测试 | ACC-03 已登录;LC-01~LC-07 存在(LC-06 停用、LC-04 已删除);WT-08 弹窗可打开 | 1. 打开选择物流公司弹窗,核对列表集合<br>2. 检索 LC-06(停用)与 LC-04(已删除)名称<br>3. 与列表页"状态=启用"筛选计数比对<br>4. 另一会话将某启用公司(如 LC-01)停用后刷新弹窗再核对 | LC-01~LC-07;LC-06(停用);LC-04(已删除);BLK-01 计数 | 1. 启用公司在弹窗中全部可见,数量与列表(状态=启用)计数一致<br>2. 停用公司不出现(停用后即时消失,衔接 PLT_BSC_LC_057)<br>3. 已逻辑删除公司不出现<br>4. 弹窗数据源带 deleted=0 且 status=启用 过滤(接口参数与返回集合核对) | 对应TP-F-003;REQ-024/BR-06.2/验收要点 5 |
| PLT_TMS_LC_004 | 平台端-整车运输-承运结算-运费核算 | 验证选择弹窗默认按创建时间倒序展示 | P1 | 功能测试 | ACC-03 已登录;已构造 BLK-01 的 25 条启用公司(批量测试物流公司00001~00025) | 1. 打开选择弹窗记录首行公司<br>2. 翻至第 2 页核对排序延续<br>3. 与列表页默认排序口径比对<br>4. 新建一家公司("云南测试弹窗排序物流有限公司")后重开弹窗核对 | BLK-01(25 条,后建编号大);新建弹窗排序样本公司 | 1. 最新创建的启用公司排在首位(创建时间倒序)<br>2. 翻页后排序延续无重置、无重复<br>3. 与列表页默认排序口径一致(同 orderBy)<br>4. 新建公司后重开弹窗该司位于首位 | 对应TP-F-004;REQ-024(漏测清单 §4 选择弹窗排序) |
| PLT_TMS_LC_005 | 平台端-整车运输-承运结算-运费核算 | 验证选择弹窗搜索命中与无结果空态文案 | P1 | 功能测试 | ACC-03 已登录;BLK-03 关键词样本已构造;WT-08 弹窗已打开并已勾选某公司 | 1. 搜索框输入"测试庚"(名称部分字符)核对命中<br>2. 输入"91532301"(信用代码前缀)核对命中<br>3. 输入"ZZZ不存在"核对空态<br>4. 清空搜索核对恢复全量且已勾选状态不丢失 | LC-07(名称部分字符"测试庚"、信用代码前缀 91532301);无结果关键词 ZZZ不存在;WT-08 | 1. 名称部分字符命中对应公司(LC-07),信用代码前缀命中 LC-07<br>2. 无结果显示指定空态文案"未找到符合条件的物流公司"<br>3. 清空搜索恢复全量列表与默认排序<br>4. 搜索过程中已勾选/已选页签状态不丢失(反馈完整) | 对应TP-F-005;REQ-024(漏测清单 §4);[AI修正: 评审修复 O-003] |
| PLT_TMS_LC_006 | 平台端-整车运输-承运结算-运费核算 | 验证选择弹窗分页默认 20 条/页与翻页正确 | P1 | 功能测试 | ACC-03 已登录;BLK-01/BLK-02 的 25 条启用公司已构造;记录弹窗在大数据量下的首屏渲染时长基线(BLK-06 的 250 条可另行构造) | 1. 打开弹窗核对默认每页条数与页数<br>2. 翻至第 2 页核对余数 5 条<br>3. 如提供每页条数切换,验证 10/50/100 档与列表口径一致<br>4. 用 250 条数据(BLK-06)观察首屏渲染与翻页时长并记录基线 | BLK-01/BLK-02(25 条);BLK-06(250 条,记基线) | 1. 默认 20 条/页、共 2 页,末页余数=5<br>2. 翻页、页码跳转数据正确、无重复无丢失<br>3. 每页条数切换(如提供)选项与平台列表 10/20/50/100 口径一致<br>4. 250 条时弹窗打开无卡死、加载失败时有"重新加载"可用(衔接 011);首屏渲染时长基线已记录 | 对应TP-F-006;REQ-024/BR-06.2(BLK-06 性能基线记录) |
| PLT_TMS_LC_007 | 平台端-整车运输-承运结算-运费核算 | 验证选择弹窗行字段展示五要素且与档案一致 | P1 | 功能测试 | ACC-03 已登录;LC-01(含 2 张生效中合同)与 LC-02(无生效合同)存在 | 1. 打开弹窗核对 LC-01 行的公司名称/信用代码/联系人/联系方式/生效合同数<br>2. 与物流公司列表页对应字段比对<br>3. 为 LC-01 新增一张生效中合同后重开弹窗核对计数<br>4. 核对字段为空公司(如联系人长文本)的展示 | LC-01(91530102MA6N4K7X52 / 生效合同数=2);LC-02(生效合同数=0);REQ-024/6.6.3 | 1. 五个字段齐全:公司名称、统一社会信用代码、联系人、联系方式、生效合同数<br>2. 各字段值与档案/列表口径一致,生效合同数为实时值<br>3. 新增生效合同后弹窗计数同步 +1(实时统计)<br>4. 字段为空时展示合理(空或"-"),无 null 字样 | 对应TP-F-007;REQ-024/6.6.3 |
| PLT_TMS_LC_008 | 平台端-整车运输-承运结算-运费核算 | 验证无生效合同公司显示"⚠ 无生效合同"且可勾选保存(Q3) | P0 | 功能测试 | ACC-03 已登录;LC-02(合同已过期+待生效、生效合同数=0)存在;WT-08 未核算载体可用 | 1. 打开弹窗核对 LC-02 行提示<br>2. 勾选 LC-02 并点"确定"回填<br>3. 保存核算<br>4. 核对运单落库与列表展示 | LC-02;HT-2026-0011(已过期)/0012(待生效);Q3 决议/验收要点 5 | 1. LC-02 行显示"⚠ 无生效合同"提示(仅信息提示)<br>2. 该行可正常勾选并确定回填,无阻断拦截<br>3. 保存核算成功(不阻断任何流程),运单落库 LC-02 三字段快照<br>4. 有生效合同的公司行不显示该提示;提示仅为展示层,不产生校验拦截请求 | 对应TP-F-008;REQ-024/Q3 决议/验收要点 5 |
| PLT_TMS_LC_009 | 平台端-整车运输-承运结算-运费核算 | 验证选择弹窗单选语义与再次选择替换(Q1) | P0 | 功能测试 | ACC-03 已登录;LC-01 与 LC-07 均启用;WT-08 弹窗已打开 | 1. 勾选 LC-01 后尝试再勾选 LC-07,观察控件语义<br>2. 点"确定"回填核对公司<br>3. 重开弹窗改选 LC-07 并确定<br>4. 保存后核对运单上公司唯一性 | LC-01(甲)、LC-07(庚);Q1 决议 | 1. 弹窗为单选控件语义(勾选新行自动取消上一行或单选按钮形态),不允许多选<br>2. 选择 A 后再选 B 回填为 B(A 被替换),弹窗内仅一行选中<br>3. 运单上最终仅存一家公司信息(company_id/名称/信用代码三字段为同一公司)<br>4. 数据库无多公司并存结构(无关联多值字段被写多条) | 对应TP-F-009;REQ-024/Q1 决议 |
| PLT_TMS_LC_010 | 平台端-整车运输-承运结算-运费核算 | 验证选择反馈:确定回填与取消/关闭不变更 | P1 | 功能测试 | ACC-03 已登录;WT-08 弹窗可打开;LC-07 可用于选择 | 1. 勾选 LC-07 后点"确定",核对回填内容与位置<br>2. 重开弹窗不勾选任何行直接点"确定",核对原值<br>3. 重开弹窗勾选 LC-01 后点"取消"与右上角关闭,分别核对原值<br>4. 核对修改核算弹窗中回显的字段构成 | LC-07(楚雄测试庚物流有限公司 / 91532301MA6W9E3F4G);LC-01;漏测清单 §4 选择反馈 | 1. 确定后弹窗关闭、所选公司回填到修改核算弹窗(名称/信用代码/联系人回显位置正确)<br>2. 未勾选直接确定时不产生空选覆盖(原值保持不变或给出提示,记录实际行为)<br>3. 取消与右上角关闭均不改变原已选值(回滚到弹窗前状态)<br>4. 弹窗交互无报错、无重复提交请求 | 对应TP-F-010;漏测清单 §4 选择反馈 |
| PLT_TMS_LC_011 | 平台端-整车运输-承运结算-运费核算 | 验证选择弹窗加载失败空态与"重新加载"恢复 | P2 | 功能测试 | ACC-03 已登录;DevTools 可阻断公司列表接口(WT-10 故障注入) | 1. 阻断弹窗列表接口后打开选择弹窗<br>2. 核对空态展示与按钮<br>3. 恢复接口后点击"重新加载"<br>4. 恢复后验证搜索与分页功能 | WT-10(弹窗加载失败);RISK-AVAILABILITY;项目画像 §6.1 | 1. 加载失败时展示空态与"重新加载"按钮(非白屏/报错弹窗)<br>2. 点击重新加载后可恢复列表数据<br>3. 恢复后搜索可命中、分页可翻页、单选可勾选并回填(三功能逐一验证)<br>4. 失败过程无控制台未捕获异常、无脏弹窗残留 | 对应TP-F-011;RISK-AVAILABILITY(依赖不可用空态与重试);[AI修正: 评审修复 O-002] |
| PLT_TMS_LC_012 | 平台端-整车运输-承运结算-运费核算 | 验证货源已选公司默认带入与未选为空 | P0 | 功能测试 | ACC-03 已登录;HY-01 已选 LC-07(庚)且关联 WT-01;HY-03 未选公司且关联 WT-02 | 1. 对 WT-01 点击行内"编辑"打开修改核算弹窗<br>2. 核对物流公司带入值(名称/信用代码)<br>3. 对 WT-02 打开弹窗核对初始为空<br>4. 带入后更换为 LC-01 并保存,再对货源侧(HY-01)后续核对带入更新 | HY-01(庚)/WT-01;HY-03(无)/WT-02;REQ-025/BR-06.3 | 1. 货源已选公司的运单默认带入该公司(名称/信用代码与货源侧快照一致)<br>2. 货源未选的运单弹窗初始为空(选填,不阻断保存)<br>3. 带入后可更换或清除(可逆)<br>4. 货源侧更换公司后,重新打开的带入值为货源最新快照(未核算运单场景) | 对应TP-F-012;REQ-025/BR-06.3/验收要点 5 |
| PLT_TMS_LC_013 | 平台端-整车运输-承运结算-运费核算 | 验证不选物流公司(及地址为空)核算正常保存(Q2) | P0 | 功能测试 | ACC-03 已登录;WT-02 未核算且未选公司;客户收货地址留空 | 1. 对 WT-02 打开修改核算弹窗,物流公司与客户收货地址均不填<br>2. 点击"保存/核算"<br>3. 核对弹窗关闭与列表核算状态列<br>4. 核对运单上物流公司列展示与数据库字段 | WT-02;Q2 决议/REQ-026/验收要点 5 | 1. 未选公司未填地址保存成功,无任何阻断提示或必填报错<br>2. 核算状态由"未核算"更新为"已核算"<br>3. 运单及运费核算列表该列显示"无外协公司"(统一文案)<br>4. 数据库运单表 company_id/company_name/uscc 三字段为空且状态位=已核算(无外协公司口径落库) | 对应TP-F-013;REQ-026/Q2 决议/验收要点 5 |
| PLT_TMS_LC_014 | 平台端-整车运输-承运结算-运费核算 | 验证清除已选公司后保存生效与可逆性 | P1 | 功能测试 | ACC-03 已登录;WT-01 已带入 LC-07(庚)且尚未保存(或已保存后重开) | 1. 打开 WT-01 修改核算弹窗点击"清除"(取消选择)<br>2. 核对公司区域恢复空态<br>3. 保存后核对运单表字段与列表展示<br>4. 重开弹窗重新选择 LC-01 保存核对可逆 | WT-01;LC-07(清除前);LC-01(重选);REQ-025 | 1. 清除后弹窗内公司区域恢复空态(名称/代码/联系人消失)<br>2. 保存后运单表 company_id/company_name/uscc 三字段被置空,列表显示"无外协公司"<br>3. 清除操作按平台口径记录日志(如落)<br>4. 清除后可再次选择并保存成功(可逆,无状态锁死) | 对应TP-F-014;REQ-025 |
| PLT_TMS_LC_015 | 平台端-整车运输-承运结算-运费核算 | 验证保存核算写入运单表三字段快照与状态流转 | P0 | 功能测试 | ACC-03 已登录;HY-01 已选 LC-07(庚);WT-01 未核算 | 1. 对 WT-01 打开弹窗保留带入的 LC-07,填写客户收货地址<br>2. 点击"保存/核算"<br>3. 核对运费核算列表与运单管理的物流公司列取值<br>4. 核对数据库运单表字段与是否新建独立单据 | WT-01;LC-07(楚雄测试庚物流有限公司 / 91532301MA6W9E3F4G);RA-01(收货地址);BR-06.6/第 7 章 | 1. 运单表 company_id、company_name(楚雄测试庚物流有限公司)、uscc(91532301MA6W9E3F4G)三字段落库且与所选公司一致(冗余存储)<br>2. 核算状态由未核算→已核算<br>3. 运费核算列表与运单管理的物流公司列随运单表取值展示<br>4. 保存操作未新建任何独立单据(无核算单表新增行,口径纠正落地) | 对应TP-F-015;REQ-026/BR-06.6/第 7 章 |
| PLT_TMS_LC_016 | 平台端-整车运输-承运结算-运费核算 | 验证保存核算快速重复点击不重复写入(幂等) | P0 | 功能测试 | ACC-03 已登录;WT-08 未核算载体可用;已备接口抓包工具 | 1. 打开 WT-08 修改核算弹窗,1 秒内连续点击"保存/核算"3 次<br>2. 核对按钮态与页面提示<br>3. 核对运单字段与核算状态<br>4. 用接口工具并发重放保存请求 3 次核对结果 | WT-08;项目画像 §8.2;第 7 章幂等口径 | 1. 连点 3 次仅一次有效保存,运单字段无重复追加、状态无抖动(不出现反复未核算/已核算切换)<br>2. 按钮提交中禁用/防抖,无重复成功提示堆积<br>3. 并发重放请求被幂等拦截或返回一致结果<br>4. 数据库运单表该行字段值为单次写入结果,无重复日志堆积(或按平台幂等口径合并) | 对应TP-F-016;第 7 章(项目画像 §8.2 重复提交) |
| PLT_TMS_LC_017 | 平台端-整车运输-承运结算-运费核算 | 验证已核算运单再次修改为覆盖更新且不可回退 | P1 | 功能测试 | ACC-03 已登录;WT-01 已核算(快照=庚) | 1. 对 WT-01 再次点击行内"编辑",把物流公司改为 LC-01(甲)并客户收货地址改为新值<br>2. 保存后核对运单字段<br>3. 检索页面是否有"撤销核算/回退未核算"入口<br>4. 连续修改 2 次后核对记录数与日志 | WT-01(庚→甲);LC-01;REQ-028/6.6 | 1. 再次保存后运单三字段为最新值(覆盖更新,非新增行)<br>2. 核算状态保持"已核算"(无中间态)<br>3. 行为日志出现该次修改记录;全页面无"撤销核算/回退未核算"入口<br>4. 重复修改多次后运单表记录数不变(无数据膨胀),旧值仅在日志中可追溯 | 对应TP-F-017;REQ-028/6.6(禁止流转:已核算不可回退) |
| PLT_TMS_LC_018 | 平台端-整车运输-承运结算-运费核算 | 验证保存时公司已被停用/删除的后端二次校验 | P0 | 功能测试 | ACC-03 与另一会话(ACC-01)均已登录;WT-07 未核算载体可用;LC-01(甲)、LC-02(乙)启用 | 1. ACC-03 打开 WT-07 弹窗选择 LC-01(先不保存)<br>2. ACC-01 在另一会话将 LC-01 停用<br>3. ACC-03 点击"保存/核算"核对阻断提示<br>4. 重选启用公司 LC-02 后保存成功;另起一轮以"删除"场景(LC-04)重复验证 | WT-07;LC-01(被停用);LC-04(被删除);LC-02(重选);REQ-029/6.6 | 1. 保存被阻断且提示中包含具体公司名(如"云南测试甲物流有限公司已停用"类文案)<br>2. 提示引导重新选择启用公司或清除后保存<br>3. 清除后可直接保存成功;重选 LC-02 后保存成功<br>4. 无 500 错误、无静默保存旧值;停用与删除两种场景分别验证各自提示 | 对应TP-F-018;REQ-029/6.6(状态已变化后操作,项目画像 §8.2 必测) |
| PLT_TMS_LC_019 | 平台端-整车运输-承运结算-运费核算 | 验证客户收货地址选填与 ≤200 字符边界 | P1 | 功能测试 | ACC-03 已登录;WT-08 未核算载体可用;已准备 V-09/V-10 字面值 | 1. 收货地址输入 RA-01(云南省昆明市五华区测试大道 1 号测试仓库)保存<br>2. 输入 V-09(恰 200 字符)保存<br>3. 输入 V-10(201 字符)保存<br>4. 留空保存并核对金额类字段不受地址内容影响 | RA-01;RA-02/V-09(200 字);RA-03/V-10(201 字);RA-04(空值);REQ-023/BR-06.7 | 1. 常规地址保存成功并落库运单表<br>2. 200 字符可保存、201 字符被阻断或提示(含中文/字母/数字/符号均可)<br>3. 留空正常保存(选填,与不选公司可并存)<br>4. 地址内容不影响运单金额类字段与核算任何字段(仅记录) | 对应TP-F-019;REQ-023/BR-06.7 |
| PLT_TMS_LC_020 | 平台端-整车运输-承运结算-运费核算 | 验证客户收货地址的展示载体(基线+实际范围记录) | P2 | 功能测试 | ACC-03 已登录;WT-08 已保存收货地址 RA-01 | 1. 打开该运单详情页核对地址只读展示(最低验收基线)<br>2. 核对运费核算列表是否含地址列(记录实际行为)<br>3. 核对运单管理列表与导出是否含地址(记录实际行为)<br>4. 公司改名后复核各展示位取值(快照口径) | WT-08;RA-01;REQ-023/BR-06.7 | 1. 运单详情页可只读查看客户收货地址(验收基线须满足)<br>2. 运费核算列表/运单管理列表及导出是否含该列:记录实际行为(推荐不加入列表列,避免列表字段膨胀)<br>3. 展示值为运单表快照值、非联表实时取值(公司改名不影响)<br>4. 地址展示不参与任何校验与流程 | 对应TP-F-020;REQ-023/BR-06.7;[待确认] "客户收货地址"展示载体与范围(口径④,见分析 11.2 #5) |
| PLT_TMS_LC_021 | 平台端-整车运输-承运结算-运费核算 | 验证批量核算现状口径:不填充、不清除物流公司与地址(Q7) | P2 | 功能测试 | ACC-03 已登录;勾选 WT-02(未选公司)与 WT-03(已带入乙)两张运单;BLK-07 样本就绪 | 1. 勾选 WT-02、WT-03 点击"批量核算"<br>2. 核对批量入口是否有物流公司/地址填写控件<br>3. 批量完成后逐张核对两运单的物流公司与地址字段<br>4. 与批量前快照逐字段对比 | BLK-07;WT-02(未选);WT-03(乙);Q7 待确认;REQ-030/6.6 | 1. 批量核算按原有字段逻辑执行且执行成功(核算状态更新)<br>2. 批量后已存的物流公司/客户收货地址保持不变(不被清空、不被覆盖)<br>3. 批量入口无物流公司/地址填写控件<br>4. 已选/未选公司的运单批量后字段与批量前一致(逐字段比对) | 对应TP-F-021;REQ-030/6.6;[待确认] 批量核算是否需支持批量填充"物流公司/客户收货地址"(Q7,见分析 11.2 #1) |
| PLT_TMS_LC_022 | 平台端-整车运输-承运结算-运费核算 | 验证选择物流公司不改变核算金额与结算数据(记录性总原则) | P0 | 功能测试 | ACC-03 已登录;WT-01(已选庚)与 WT-08 未核算载体;两张运单原有金额类字段(结算吨位、运费等)已知 | 1. 记录 WT-08 保存前各金额类字段值<br>2. 为 WT-08 选择 LC-01(甲)后保存,核对金额类字段<br>3. 把 WT-01 的公司由庚更换为甲并清除,核对金额类字段<br>4. 选择无生效合同的 LC-02 保存后核对金额差异与页面提示 | WT-08;WT-01;LC-01/LC-02;1.4 设计原则/REQ-014 | 1. 选择前后运单核算金额类字段(结算吨位、运费等原有字段)无任何变化(逐字段对比)<br>2. 无生效合同公司被选中时无计费差异<br>3. 不选公司不影响核算保存与后续结算<br>4. 全流程页面无任何"合同影响计费"类提示与校验 | 对应TP-F-022;1.4 设计原则/REQ-014(记录性总原则) |
| PLT_TMS_LC_023 | 平台端-整车运输-承运结算-运费核算 | 验证保存核算超时/断网后重试无重复写入 | P2 | 功能测试 | ACC-03 已登录;WT-08 弹窗已填好(含公司 LC-01 与地址);DevTools 可断网/延迟 | 1. 点击保存瞬间断网核对失败提示与 Loading<br>2. 恢复网络后核对弹窗已填内容保留<br>3. 用 30 秒延迟模拟超时后重试保存<br>4. 核对运单字段与状态(无半落库) | WT-08;漏测清单 §2(弱网/超时);LC-01 | 1. 超时/断网有明确失败提示与 Loading 状态,非无响应卡死<br>2. 弹窗已填内容(公司/地址)保留<br>3. 恢复网络后重试保存成功且不产生重复写入<br>4. 无半落库状态(三字段要么全写入要么无变化),核算状态与字段一致 | 对应TP-F-023;漏测清单 §2 |
| PLT_TMS_LC_024 | 平台端-整车运输-承运结算-运费核算 | 验证已核算运单再次打开弹窗的回显基准(快照 vs 货源) | P2 | 功能测试 | ACC-03 已登录;WT-09(已核算 WT-01,快照=庚);HY-01 货源侧公司已改为 LC-01(构造口径差异场景) | 1. 打开 WT-09 修改核算弹窗记录物流公司回显值<br>2. 与运单表已存快照值、货源当前值分别比对<br>3. 记录回显来源结论<br>4. 保存后再开弹窗复核稳定性 | WT-09;HY-01(货源侧改值的场景);待确认 #2;REQ-025 | 1. 记录实际回显基准:按暂定口径为运单表已存快照(庚),若为货源当前值则记录偏差<br>2. 货源侧在运单核算后被更换公司场景下回显与展示列口径保持一致(与 PLT_TMS_LC_029/041 同结论)<br>3. 再次保存后回显值稳定、无新旧混读<br>4. 本用例记录实际行为并驱动口径裁决,不提前固化断言 | 对应TP-F-024;[待确认] 核算弹窗再次打开的回显基准(运单表已存值 vs 货源当前值,见分析 11.2 #2) |
| PLT_TMS_LC_025 | 平台端-整车运输-承运结算-运费核算 | 验证两人并发修改同一运单核算的最终一致性 | P2 | 功能测试 | 两个已登录会话(ACC-03 与 ACC-02);WT-08 未核算;两会话分别准备选择 LC-01 与 LC-07 | 1. 两个会话同时打开 WT-08 修改核算弹窗<br>2. 会话 A 选 LC-01 先保存<br>3. 会话 B 选 LC-07 后保存<br>4. 核对运单最终字段、状态与日志完整性 | WT-08;LC-01(会话A);LC-07(会话B);项目画像 §8.2 并发提交 | 1. 后保存者覆盖先保存者(或按平台锁机制给出提示,记录实际行为),最终运单三字段为单次有效结果(同一家公司)<br>2. 无字段交叉写入(company_id 与 company_name 不出现不同公司混搭)<br>3. 核算状态不异常(无未核算/已核算抖动)<br>4. 日志完整可追溯两次保存(操作人/时间可区分) | 对应TP-F-025;项目画像 §8.2 并发提交 |
| PLT_TMS_LC_026 | 平台端-整车运输-货源管理 | 验证发布货源新增"物流公司"字段位置与选填标注 | P1 | 功能测试 | ACC-01/ACC-02 已登录;"发布货源"页面可进入(含承运信息区与"指定车队司机"区) | 1. 进入 整车运输 → 货源管理 → 发布货源<br>2. 在承运信息区"指定车队司机"附近查找"物流公司"字段<br>3. 核对标注(选填)与"选择物流公司"入口<br>4. 不填写该字段完成其余必填项后发布核对 | HY-07(弹窗入口校验);REQ-031/BR-07/6.7 | 1. "物流公司"字段位于承运信息区且标注选填、为单选<br>2. 含"选择物流公司"入口可点击<br>3. 不填写不影响货源其他字段填写与发布保存<br>4. 字段位置与需求 6.7 描述一致(记录实际位置供评审) | 对应TP-G-001;REQ-031/BR-07/6.7 |
| PLT_TMS_LC_027 | 平台端-整车运输-货源管理 | 验证货源场景复用选择弹窗能力与核算场景一致 | P1 | 功能测试 | ACC-01/ACC-02 已登录;发布货源页已打开;LC-06 已停用 | 1. 点击"选择物流公司"打开弹窗<br>2. 核对仅启用公司(检索 LC-06 不出现)<br>3. 核对按创建时间倒序、名称/信用代码搜索、分页 20 条<br>4. 核对单选语义与核算场景一致 | BLK-01/BLK-02;LC-06(停用);BR-07.1;最佳实践(弹窗能力复用一致性) | 1. 弹窗与核算场景同款(仅启用公司、创建时间倒序、搜索、分页 20 条/页)<br>2. 停用公司(LC-06)不出现<br>3. 搜索与分页行为与核算弹窗一致(同组件同参数)<br>4. 单选控件语义一致(单行选中) | 对应TP-G-002;BR-07.1(能力复用一致性) |
| PLT_TMS_LC_028 | 平台端-整车运输-货源管理 | 验证货源选择公司回显三要素与"移除"清空 | P1 | 功能测试 | ACC-01/ACC-02 已登录;发布货源页已填写必填项;LC-07(庚)档案字段已知 | 1. 通过弹窗选择 LC-07 后点确定<br>2. 核对回显的公司名称、统一社会信用代码、联系人<br>3. 点击"移除"<br>4. 核对字段恢复空态并重新选择一次 | LC-07(楚雄测试庚物流有限公司 / 91532301MA6W9E3F4G);REQ-031/6.7.2 | 1. 回显三要素与公司档案一致(名称/信用代码/联系人)<br>2. "移除"后字段恢复空态、无报错<br>3. 移除后可重新选择(可逆)<br>4. 移除动作仅清空页面暂存,不影响其他字段已填内容 | 对应TP-G-003;REQ-031/6.7.2 |
| PLT_TMS_LC_029 | 平台端-整车运输-货源管理 | 验证货源更换公司替换上次选择(单选) | P1 | 功能测试 | ACC-01/ACC-02 已登录;货源编辑页已选 LC-01(甲) | 1. 再次打开选择弹窗改选 LC-02(乙)并确定<br>2. 核对回显为 LC-02<br>3. 保存货源后重新打开编辑页核对<br>4. 核对货源与公司关联结构无多值 | LC-01→LC-02;BR-07.3/6.7.2 | 1. 选择 B 后回显 B(A 被替换),页面仅一家公司<br>2. 保存后快照为 LC-02(字段覆盖更新)<br>3. 数据层无多条公司关联(单值字段)<br>4. 更换过程无报错、无重复请求 | 对应TP-G-004;BR-07.3/6.7.2 |
| PLT_TMS_LC_030 | 平台端-整车运输-货源管理 | 验证货源保存写入公司快照并随列表展示 | P1 | 功能测试 | ACC-01/ACC-02 已登录;HY-01 已选 LC-07(庚);HY-03 未选公司 | 1. 保存 HY-01 后进入货源管理列表核对该行"物流公司"列<br>2. 打开货源详情核对该字段<br>3. 核对数据库货源表快照字段落库<br>4. 核对 HY-03(未选)该列展示 | HY-01(庚);HY-03(未选);BR-07.3/REQ-031 | 1. 货源详情/列表该列显示所选公司名称"楚雄测试庚物流有限公司"<br>2. 快照字段落库(非联表实时取值;改名后不变,验证见 PLT_TMS_LC_050)<br>3. 未选择公司时统一显示"无外协公司"<br>4. 保存后快照值=保存时刻的公司名称(冗余存储口径) | 对应TP-G-005;BR-07.3/REQ-031 |
| PLT_TMS_LC_031 | 平台端-整车运输-货源管理 | 验证货源选择与否不影响发布、接单与结算流程 | P1 | 功能测试 | ACC-01/ACC-02 已登录;HY-03(未选公司)与 HY-06 系列(选公司)样本可用 | 1. 发布未选公司的货源(HY-03 口径)核对发布成功<br>2. 对已选公司货源(HY-01)与未选货源分别执行接单生成运单<br>3. 核对货源状态流转<br>4. 核对运单生成与后续结算入口 | HY-03(未选);HY-01(庚);HY-04(乙);BR-07.2/1.4 设计原则 | 1. 不选公司货源发布成功(无阻断)<br>2. 已选/未选公司货源均可正常接单生成运单<br>3. 货源状态流转(如已发布→已接单)不因该字段变化<br>4. 结算流程不受影响,无任何"需先选物流公司"类拦截提示 | 对应TP-G-006;BR-07.2/1.4 设计原则(记录性总原则) |
| PLT_TMS_LC_032 | 平台端-整车运输-货源管理 | 验证编辑货源更换/清除公司后快照更新且不影响运单 | P1 | 功能测试 | ACC-01/ACC-02 已登录;HY-03 未选公司;已由 HY-03 关联生成 WT-02 并完成核算 | 1. 编辑 HY-03 选择 LC-01(甲)保存,核对列表快照<br>2. 再次编辑"移除"清空后保存,核对列表显示<br>3. 第三次编辑改选 LC-07(庚)保存<br>4. 核对已生成运单 WT-02 的物流公司字段是否受货源变更影响 | HY-06(依次 甲→空→庚);WT-02(已核算运单);REQ-031/BR-07.3 | 1. 编辑页回显已选公司,更换后列表快照更新为最新值<br>2. 清除后快照清空、列表显示"无外协公司"<br>3. 三次变更后货源表快照与最后一次操作一致<br>4. 已生成的运单快照独立:WT-02 的物流公司字段不随货源快照变更(运单与货源快照互不联动改写) | 对应TP-G-007;REQ-031/BR-07.3 |
| PLT_TMS_LC_033 | 平台端-整车运输-货源管理 | 验证货源场景无生效合同公司提示可勾选(Q3 复用) | P2 | 功能测试 | ACC-01/ACC-02 已登录;发布货源页已打开;LC-02(生效合同数=0)存在 | 1. 打开选择弹窗核对 LC-02 行"⚠ 无生效合同"提示<br>2. 勾选 LC-02 并确定<br>3. 保存/发布货源<br>4. 核对货源列表快照展示 | LC-02;HT-2026-0011/0012;Q3 决议复用 | 1. 无合同提示在货源弹窗正常显示(复用 Q3 口径)<br>2. LC-02 可勾选并成功保存货源(仅提示不阻断)<br>3. 货源发布流程不受影响、无额外校验拦截<br>4. 快照落库为 LC-02 信息 | 对应TP-G-008;Q3 决议复用/BR-07 |
| PLT_TMS_LC_034 | 平台端-整车运输-承运结算-货主打款 | 验证货主打款页查询区新增"物流公司"筛选项且与原有条件共存 | P1 | 功能测试 | ACC-04(财务人员)或 ACC-01 已登录;PY-01(WT-03 关联乙)与 PY-02(WT-02 无外协)打款记录存在 | 1. 进入 整车运输 → 承运结算 → 货主打款<br>2. 核对查询区"物流公司"筛选项位置与控件类型<br>3. 打开下拉核对选项结构<br>4. 核对与原有筛选条件(运单号/打款状态/时间范围等)共存无冲突 | PY-01/PY-02;LC-02(乙);BR-08/6.8/REQ-032 | 1. 筛选项存在且位于查询区,控件为下拉<br>2. 下拉选项结构为"全部 / 无外协公司 / 各物流公司"<br>3. 与原有筛选条件共存、布局无遮挡错位<br>4. 筛选项可用且不改变原有条件默认值 | 对应TP-H-001;REQ-032/BR-08/6.8 |
| PLT_TMS_LC_035 | 平台端-整车运输-承运结算-财务打款 | 验证财务打款页同步新增筛选项且口径一致 | P1 | 功能测试 | ACC-04 或 ACC-01 已登录;PY-03(WT-05 关联已停用己)存在 | 1. 进入 整车运输 → 承运结算 → 财务打款<br>2. 核对"物流公司"筛选项存在与选项结构<br>3. 选择某公司与货主打款页对同一条件筛选结果比对<br>4. 记录两页筛选行为差异(应无) | PY-03;LC-06(己);BR-08/6.8 | 1. 财务打款页筛选项存在且选项结构(全部/无外协公司/各公司)与货主打款一致<br>2. 同一筛选条件下两页面对关联同一运单记录的行为一致<br>3. 两个页面独立验证(不因改造一个页面而遗漏另一个)<br>4. 财务打款页原有筛选条件与按钮无变化 | 对应TP-H-002;REQ-032/6.8(两页独立验证) |
| PLT_TMS_LC_036 | 平台端-整车运输-承运结算-打款记录 | 验证打款记录页仅新增筛选不加展示列 | P1 | 功能测试 | ACC-04 或 ACC-01 已登录;打款记录页有数据(PY-04 口径) | 1. 进入打款记录页核对查询区"物流公司"筛选项<br>2. 使用筛选项执行查询核对结果<br>3. 核对列表列集合(是否新增物流公司展示列)<br>4. 与 FR-10 四处展示列范围比对 | PY-04;BR-08.1/FR-10;REQ-032/033 | 1. 打款记录页筛选项存在可用、筛选结果准确<br>2. 该页不新增"物流公司"展示列(展示列范围以 FR-10 货源管理/运单管理/货主打款/财务打款四处为准)<br>3. 列的增减与需求一致(避免超范围展示)<br>4. 原有列与操作入口不变 | 对应TP-H-003;BR-08.1/FR-10(负向:不超范围) |
| PLT_TMS_LC_037 | 平台端-整车运输-承运结算-财务打款 | 验证打款筛选下拉含停用公司可筛出历史打款记录 | P0 | 功能测试 | ACC-04/ACC-01 已登录;LC-06(己)已停用;PY-03(WT-05 关联己)存在历史打款记录 | 1. 打开财务打款页"物流公司"下拉核对 LC-06 在列<br>2. 选择 LC-06 执行查询<br>3. 核对筛选结果行与展示列值<br>4. 同一时刻打开核算选择弹窗检索 LC-06(相反口径对照) | LC-06(停用);PY-03;WT-05;BR-08.2/验收要点 9;对照 PLT_TMS_LC_003 | 1. 停用公司在打款筛选下拉中可选(含停用口径)<br>2. 选择 LC-06 可筛出其关联的历史打款记录(改造前/后记录均可查出)<br>3. 筛选结果展示列为快照名称"保山测试己运输有限公司"<br>4. 同一停用公司在核算选择弹窗中不可见(两个相反口径分别成立、不混淆);已删除公司不出现在打款筛选下拉(与 PLT_BSC_LC_056/TP-D-008/SS-08 一致) | 对应TP-H-004;BR-08.2/验收要点 9(与核算勾选弹窗相反口径对照);[AI修正: 评审修复 S-007] |
| PLT_TMS_LC_038 | 平台端-整车运输-承运结算-货主打款 | 验证"无外协公司"筛选归属未关联记录 | P1 | 功能测试 | ACC-04/ACC-01 已登录;PY-02(WT-02 无外协公司)与 PY-01(WT-03 关联乙)存在;含未核算运单 1 张(HY-03 关联未核算) | 1. 物流公司下拉选择"无外协公司"执行查询<br>2. 逐行核对展示列值<br>3. 核对已关联记录是否混入<br>4. 核对未核算与"已核算但未选公司"两类运单的归属口径 | PY-02;WT-02;HY-03 关联未核算运单;BR-08.3/6.8 | 1. 选择"无外协公司"仅返回未关联物流公司的记录,已关联记录不混入<br>2. 结果行展示列均为"无外协公司"<br>3. 未核算与已核算但未选公司的运单均归入该口径(按 PLT_TMS_LC_041 待确认口径核对)<br>4. 结果条数与未关联记录数一致 | 对应TP-H-005;BR-08.3/6.8;[待确认] "无外协公司"归属口径随运单表快照裁决(口径①,见分析 11.2 #2) |
| PLT_TMS_LC_039 | 平台端-整车运输-承运结算-货主打款 | 验证"全部"与各公司选项的数据准确性 | P1 | 功能测试 | ACC-04/ACC-01 已登录;货主打款页数据含 PY-01(乙)/PY-02(无外协)/其他公司记录各 1 条以上 | 1. 选择"全部"记录总条数<br>2. 分别选择 LC-02(乙)与其他公司、无外协公司记录各自条数<br>3. 核对总和关系<br>4. 与下拉选项列表完整性核对 | PY-01(乙);PY-02(无外协);BR-08/REQ-032 | 1. "全部"返回含外协与无外协的全部记录<br>2. 选择任一家公司返回的记录与该运单关联公司一致(条数=运单上记录该公司的打款条数)<br>3. "全部"条数=各选项条数之和(含无外协公司选项,逐项累加成立)<br>4. 下拉选项覆盖有记录的各家公司(选项与档案数据一致) | 对应TP-H-006;BR-08/REQ-032 |
| PLT_TMS_LC_040 | 平台端-整车运输-承运结算-货主打款 | 验证物流公司筛选项与其他条件组合查询 | P1 | 功能测试 | ACC-04/ACC-01 已登录;PY-05 组合样本就绪(同一公司记录含不同打款状态) | 1. 选择"物流公司=LC-02 + 打款状态=已打款"组合查询<br>2. 核对结果精确性<br>3. 切换物流公司选项时观察其他条件是否保留<br>4. 追加打款时间范围后查询并核对实时过滤表现 | PY-05(组合筛选);LC-02;REQ-032/6.8.2 | 1. 组合结果精确(同时满足两条条件),无越界记录<br>2. 组合无结果时有明确提示<br>3. 切换物流公司选项时其他条件不重置(筛选态保持)<br>4. 过滤为前端实时过滤/无整页刷新丢条件(记录实际实现),分页总数同步更新 | 对应TP-H-007;REQ-032/6.8.2 |
| PLT_TMS_LC_041 | 平台端-整车运输-承运结算-货主打款 | 验证打款筛选的过滤依据口径(运单表快照 vs 货源带入) | P1 | 功能测试 | ACC-04/ACC-01 已登录;构造运单 A:"货源选 LC-01 → 核算改为 LC-02";运单 B:"货源选 LC-01 → 核算清除公司";各自生成打款记录 | 1. 对运单 A 分别选择 LC-01 与 LC-02 筛选,记录命中结果<br>2. 对运单 B 分别选择 LC-01 与"无外协公司"筛选,记录命中结果<br>3. 对未核算运单(货源已选公司)执行筛选记录归属<br>4. 与 PLT_TMS_LC_024/029 的取值口径结论一并记录 | 构造运单 A/B;LC-01/LC-02;BR-08.3 vs 6.6;待确认 #2 | 1. 记录实际过滤基准:按暂定口径以运单表快照为准 → A 被 LC-02 筛出、B 归入"无外协公司";若按货源带入口径则 A 被 LC-01 筛出<br>2. 未核算运单的回退取值(货源带入值或"无外协公司")记录实际行为<br>3. 同一运单在不同口径下不得同时被两家公司筛出(无重复归属)<br>4. 结论与 PLT_TMS_LC_024(弹窗回显)及 PLT_TMS_LC_029(列表取值)保持同一基准 | 对应TP-H-008;[待确认] 打款筛选过滤依据口径矛盾(BR-09/6.9"货源带入" vs 6.6"运单表",见分析 11.2 #2) |
| PLT_TMS_LC_042 | 平台端-整车运输-承运结算-货主打款 | 验证筛选不改变打款流程、金额与审批动作(回归) | P0 | 回归测试 | ACC-04/ACC-01 已登录;PY-06 回归样本(含能源费/居间费/税费的既有记录)已就绪;已记录改造前打款/驳回入口与金额基线 | 1. 选择 LC-02 筛选后对结果记录执行一次打款操作,核对入口与结果<br>2. 对另一条已筛选记录执行驳回操作,核对驳回原因与状态流转<br>3. 逐字段核对打款金额与支付流水一致性<br>4. 核对筛选前后记录状态、审批入口无变化 | PY-06;PY-01;RISK-FINANCIAL;BR-08.4/验收要点 9 | 1. 筛选后打款/驳回入口与未筛选时一致,操作结果正常(状态流转正确)<br>2. 打款金额字段值与支付流水一致,不因筛选变化(无重复扣减、无金额改写)<br>3. 审批动作(如有)不受影响;筛选不改变任何记录状态<br>4. 支付流水记录与打款操作一一对应,金额可追溯前后端一致 | 对应TP-H-009;BR-08.4/验收要点 9/1.4(RISK-FINANCIAL 回归重点) |
| PLT_TMS_LC_043 | 平台端-整车运输-承运结算-货主打款 | 验证筛选结果与"物流公司"展示列逐行一致 | P1 | 功能测试 | ACC-04/ACC-01 已登录;PY-01(乙)、PY-02(无外协)、PY-04(庚旧名快照)就绪;LC-07 已改名为"楚雄测试庚物流(云南)有限公司" | 1. 选择 LC-02 筛选后逐行核对展示列<br>2. 选择"无外协公司"筛选后逐行核对<br>3. 对含改名公司快照的打款记录(PY-04)核对展示值<br>4. 核对空值与筛选口径一致性 | PY-01/PY-02/PY-04;LC-07 改名链(SS-05);BR-09.4 | 1. 选择某公司筛选后结果行"物流公司"列全部显示该公司(快照名称),无一行例外<br>2. "无外协公司"筛选项下所有行显示"无外协公司"<br>3. 改名后历史打款记录展示为快照旧名"楚雄测试庚物流有限公司"(非新名)<br>4. 筛选口径与展示口径一致(同源字段),无筛选命中但展示不符的矛盾 | 对应TP-H-010;BR-09.4/REQ-033 |
| PLT_TMS_LC_044 | 平台端-整车运输-承运结算-货主打款 | 验证筛选重置与选项切换的行为 | P2 | 功能测试 | ACC-04/ACC-01 已登录;货主打款页已应用物流公司筛选并翻至第 2 页 | 1. 点击"重置"核对物流公司项与全部条件<br>2. 连续切换 LC-02→"无外协公司"→"全部"核对结果刷新<br>3. 每次切换后核对分页位置<br>4. 核对无残留结果与条件 | PY-01/PY-02;漏测清单 §4 | 1. 重置后物流公司项回"全部"、其余条件同步清空<br>2. 连续切换选项列表即时刷新、无旧结果残留(无混入上一选项数据)<br>3. 切换后分页回第 1 页<br>4. 无控制台报错、请求参数与所选选项一致 | 对应TP-H-011;漏测清单 §4 |
| PLT_TMS_LC_045 | 平台端-整车运输-货源管理 | 验证货源管理列表新增只读"物流公司"列与空值文案 | P1 | 功能测试 | ACC-01/ACC-02 已登录;HY-01(庚)、HY-03(未选)等货源存在;已记录需求建议列位置(目的地之后) | 1. 进入货源管理列表核对"物流公司"列存在与位置<br>2. 核对 HY-01 行取值<br>3. 核对 HY-03(未选)行取值<br>4. 点击该列内容检查不可交互 | HY-01(楚雄测试庚物流有限公司);HY-03(无外协公司);REQ-033/BR-09.1 | 1. 列存在且为只读展示(无链接无编辑入口)<br>2. 已选货源显示公司名称快照(与货源保存值一致)<br>3. 未选显示"无外协公司"(逐字统一)<br>4. 列位置与需求建议(置于"目的地"之后)一致或记录实际位置供评审 | 对应TP-I-001;REQ-033/BR-09.1 |
| PLT_TMS_LC_046 | 平台端-整车运输-运单管理 | 验证运单管理新增"物流公司"列的取值口径(快照 vs 货源带入) | P1 | 功能测试 | ACC-01/ACC-02 已登录;构造运单:A="货源选 LC-01 → 核算改为 LC-02";B="货源选 LC-01 → 核算清除公司";C=运单未核算但货源已选 LC-01 | 1. 进入运单管理列表核对"物流公司"列存在与只读性<br>2. 对 A/B/C 三类运单记录该列实际取值<br>3. 核对未关联运单显示"无外协公司"<br>4. 核查导出列同步含该列(衔接 053)并记录取值 | 构造运单 A/B/C;LC-01/LC-02;BR-09.2 vs 6.6;待确认 #2 | 1. 列存在、只读、未关联显示"无外协公司"<br>2. 记录实际取值基准:按暂定口径以运单表快照为准 → A 显示 LC-02、B 显示"无外协公司"、C 按回退口径(货源带入值或"无外协公司")记录<br>3. 同一运单取值单一(不出现新旧公司拼接)<br>4. 列表取值与导出、打款筛选、弹窗回显口径一致(与 PLT_TMS_LC_024/041 同一结论) | 对应TP-I-002;[待确认] 运单管理列表/导出"物流公司"取值口径矛盾(BR-09/6.9"随货源带入" vs 6.6"运单表",见分析 11.2 #2) |
| PLT_TMS_LC_047 | 平台端-整车运输-承运结算-货主打款 | 验证货主打款列表新增只读"物流公司"列 | P1 | 功能测试 | ACC-04/ACC-01 已登录;PY-01(WT-03 乙)与 PY-02(WT-02 无外协)存在;已记录需求建议列位置(运输单号之后) | 1. 进入货主打款列表核对"物流公司"列存在与位置<br>2. 核对 PY-01 行取值与对应运单快照一致<br>3. 核对 PY-02 行取值<br>4. 核对该列不可交互 | PY-01(昆明测试乙供应链有限公司);PY-02(无外协公司);BR-09.3/6.8 | 1. 列存在,取值与打款对应运单的物流公司快照一致<br>2. 空值显示"无外协公司"(逐字统一)<br>3. 列为只读不可操作(无链接/编辑入口)<br>4. 列位置与建议(运输单号之后)一致或记录实际位置 | 对应TP-I-003;REQ-033/BR-09.3/6.8 |
| PLT_TMS_LC_048 | 平台端-整车运输-承运结算-财务打款 | 验证财务打款列表新增"物流公司"列且口径与货主打款一致 | P1 | 功能测试 | ACC-04/ACC-01 已登录;PY-03(WT-05 己)存在;货主打款页已核对口径(衔接 047) | 1. 进入财务打款列表核对"物流公司"列存在<br>2. 核对 PY-03 行取值(停用公司快照)<br>3. 核对空值展示为"无外协公司"<br>4. 与货主打款页同字段口径逐项比对 | PY-03(保山测试己运输有限公司,快照);BR-09.3 | 1. 列存在且与货主打款口径一致(快照值、空值文案、只读性)<br>2. 停用公司历史记录仍显示原名称(快照,不置灰不变空)<br>3. 空值"无外协公司"<br>4. 两列表独立验证均通过(不因一处通过而省略另一页) | 对应TP-I-004;REQ-033/BR-09.3 |
| PLT_TMS_LC_049 | 平台端-整车运输-运单管理 | 验证四处列表空值统一显示"无外协公司"无混用 | P1 | 功能测试 | ACC-01/ACC-02/ACC-04 已登录;四列表(货源管理/运单管理/货主打款/财务打款)均存在未关联记录;含"核算清除公司"运单(PLT_TMS_LC_014 产物) | 1. 逐列表核对未关联记录的展示文案<br>2. 核对打款筛选下拉空值选项文案<br>3. 核对清除公司后的运单在四列表的展示<br>4. 检索是否存在"无"、"--"、空白等其他写法 | 四列表空值记录;PLT_TMS_LC_014 清除产物;BR-08/BR-09 | 1. 四处列表空值文案逐字统一为"无外协公司"(无空白、无"-"、无"无"等混用)<br>2. 筛选下拉空值选项同文案<br>3. 已清除公司的运单同样归入"无外协公司"口径<br>4. 同一空值在四处列表/导出中展示一致(前后端统一文案源) | 对应TP-I-005;REQ-033(文案统一口径) |
| PLT_TMS_LC_050 | 平台端-整车运输-货源管理 | 验证公司改名后历史记录展示不变(快照口径) | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-07 名下有 WT-01(快照=楚雄测试庚物流有限公司)、HY-01、打款记录;尚未改名 | 1. 记录四列表与导出中 LC-07 相关记录的展示值<br>2. 将 LC-07 改名为"楚雄测试庚物流(云南)有限公司"并保存<br>3. 复核四列表(货源管理/运单管理/货主打款/财务打款)与导出中的展示值<br>4. 新建一条 LC-07 关联记录核对新名展示 | LC-07;SS-05 改名快照链;WT-01/HY-01/PY-04;BR-09.4/REQ-027/034 | 1. 改名前关联记录在四列表与导出中均显示旧名"楚雄测试庚物流有限公司"<br>2. 改名后历史展示保持旧名不变(证明冗余存储、未联表实时取值——RISK-DATA 核心判据)<br>3. 改名后新选择的记录显示新名<br>4. 无任何列表出现新旧混读的实时联表现象;LC-07 档案自身展示新名 | 对应TP-I-006;REQ-027/034/BR-09.4(RISK-DATA 快照判据) |
| PLT_TMS_LC_051 | 平台端-整车运输-运单管理 | 验证公司停用后历史记录展示不变 | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-06 已停用且关联 WT-05、PY-03 | 1. 在四列表核对 LC-06 相关历史记录展示值<br>2. 核对是否出现置灰、置空或隐藏<br>3. 在打款筛选"含停用"下拉中筛出历史记录<br>4. 打开 WT-05 修改核算弹窗核对该运单展示与回显 | LC-06;WT-05;PY-03;SS-02/SS-06;验收要点 3/10 | 1. 停用后四列表该列仍显示原名称"保山测试己运输有限公司"(不因停用变灰、置空或隐藏)<br>2. 打款筛选"含停用"可筛出历史打款记录(衔接 PLT_TMS_LC_037)<br>3. 已核算运单展示与回显均不受停用影响<br>4. 停用仅影响核算勾选可见性,不影响任何历史展示 | 对应TP-I-007;REQ-034/BR-09.4/验收要点 3/10 |
| PLT_TMS_LC_052 | 平台端-整车运输-运单管理 | 验证公司删除后历史记录展示不变(历史追溯) | P0 | 功能测试 | ACC-01/ACC-02 已登录;LC-05 已被逻辑删除(承接 PLT_BSC_LC_053/054 路径)且 HY-02 引用其快照 | 1. 在货源管理列表核对 HY-02 行展示<br>2. 在导出中核对原名称是否保留<br>3. 核对选择弹窗与核算勾选不含已删除公司<br>4. 检索是否存在"未知公司/ID 直显"等异常展示 | LC-05;HY-02;DL-07;SS-07;BR-06.6/BR-09.4 | 1. 删除公司后四处列表历史记录展示不变(仍显示"大理测试戊物流有限公司")<br>2. 导出仍含原名称快照<br>3. 选择弹窗与核算勾选不含已删除公司(对照 PLT_TMS_LC_003)<br>4. 无"未知公司"、ID 明文直显或空值异常;快照字段保证历史追溯 | 对应TP-I-008;REQ-034/BR-06.6/BR-09.4 |
| PLT_TMS_LC_053 | 平台端-整车运输-运单管理 | 验证四列表导出 Excel 均含"物流公司"列 | P1 | 功能测试 | ACC-01/ACC-02/ACC-04 已登录;LC-07 已改名为"楚雄测试庚物流(云南)有限公司"(快照旧名场景);四列表各有数据 | 1. 分别导出货源管理/运单管理/货主打款/财务打款四个列表<br>2. 逐个打开核对"物流公司"列存在<br>3. 核对列值=页面展示值(含快照旧名与"无外协公司")<br>4. 核对导出数据与当前筛选条件一致 | BLK-05(四列表导出含列);LC-07 旧名快照;BR-09.5/REQ-033 | 1. 四个导出文件均含"物流公司"列<br>2. 列值与页面展示一致(快照值:"楚雄测试庚物流有限公司"旧名;空值"无外协公司")<br>3. 导出数据与页面筛选条件一致、行数吻合<br>4. 大数据量按 20000 上限统一口径处理 | 对应TP-I-009;BR-09.5/REQ-033 |
| PLT_TMS_LC_054 | 平台端-整车运输-运单管理 | 验证"物流公司"列为只读不参与任何流程与排序控制 | P2 | 功能测试 | ACC-01/ACC-02 已登录;四列表存在有值/空值行 | 1. 点击四列表"物流公司"列单元格核对无跳转<br>2. 核对列内无链接/编辑图标<br>3. 如列支持排序,点击表头核对排序正确;不支持则记录<br>4. 核对列表既有操作列未被改变 | 四列表;1.4 设计原则 | 1. 列内无链接、无编辑入口,点击无跳转(或仅按需求口径展示)<br>2. 该列不参与任何流程控制(不影响行内操作按钮与状态)<br>3. 如支持排序则排序正确、如不支持则记录实际行为<br>4. 列表既有操作列(打款/驳回/编辑等)与改造前一致 | 对应TP-I-010;1.4 设计原则(记录性) |
| PLT_TMS_LC_055 | 平台端-整车运输-运单管理 | 验证四列表"物流公司"列位置与建议一致 | P3 | 功能测试 | ACC-01/ACC-02/ACC-04 已登录;四列表可访问;需求 6.9 列位置建议已知 | 1. 核对货源管理列表该列是否位于"目的地"之后<br>2. 核对运单管理该列是否位于"承运司机"附近<br>3. 核对货主打款/财务打款该列是否位于"运输单号"之后<br>4. 核对列插入未导致既有列错位/数据错列 | 需求 6.9 建议列位置;四列表 | 1. 三处列位置与需求建议一致(或记录实际位置供评审确认)<br>2. 列插入后既有列的列头与数据严格对应(无错位、无数据串列)<br>3. 列宽/展示无遮挡单元格截断异常<br>4. 与截图基线对比无未说明的布局改动 | 对应TP-I-011;6.9 建议列位置(记录实际位置) |
| PLT_TMS_LC_056 | 平台端-整车运输-运单管理 | 验证历史数据兼容:上线前记录按快照显示"无外协公司"无需回填 | P1 | 兼容性测试 | ACC-01/ACC-02 已登录;测试环境存在上线前历史数据(含已打款、已完结状态运单/货源/打款记录,均未关联物流公司);已确认未执行任何数据迁移脚本 | 1. 选取上线前历史运单/货源/打款记录(含已打款、已完结状态)核对四列表展示<br>2. 用物流公司筛选下拉"无外协公司"筛出历史记录<br>3. 核对导出含该列且历史记录取值为"无外协公司"<br>4. 核对无空指针/展示异常 | RISK-COMPATIBILITY;确认结论 §5;历史记录样本组 | 1. 上线前历史记录在四列表显示"无外协公司",无空指针、无展示异常<br>2. 历史记录可正常参与筛选(归入"无外协公司"选项)并正常导出<br>3. 未执行任何数据迁移/回填脚本即可正确展示(以回归结果佐证)<br>4. 历史记录的打款等操作入口不受新增列影响 | 对应TP-I-012;RISK-COMPATIBILITY/确认结论 §5 |
| PLT_TMS_LC_057 | 平台端-基础信息-物流公司管理-权限与日志 | 验证系统管理员可配置"物流公司管理"菜单与操作权限 | P0 | 安全性测试 | ACC-01(super_admin)已登录;已创建待授权角色账号(ACC-02 运营管理员,数据缺口 #1) | 1. 进入 基础信息 → 平台管理 → 角色管理,勾选"物流公司管理"菜单及增删改操作权限并保存<br>2. 用 ACC-02 重新登录(或刷新)核对菜单出现与操作可用<br>3. 取消授权后再次登录核对<br>4. 核对权限粒度(菜单可见性 vs 增删改按钮) | ACC-01/ACC-02;REQ-035/第 3 章;项目画像 §2.2 | 1. 角色管理可勾选该菜单权限并保存成功(权限点清单核对,数据缺口 #10)<br>2. 授权后 ACC-02 菜单出现且增删改操作可用<br>3. 取消授权后菜单消失、直达 URL 也被拦截<br>4. 权限粒度覆盖菜单可见性与增删改操作两级(非仅菜单级) | 对应TP-J-001;REQ-035/第 3 章 |
| PLT_TMS_LC_058 | 平台端-基础信息-物流公司管理-权限与日志 | 验证核算人员角色在物流公司列表为只读 | P0 | 安全性测试 | ACC-03(核算人员)已登录且仅有核算权限(数据缺口 #2);物流公司列表已有数据 | 1. 用 ACC-03 进入"物流公司管理"列表核对按钮与操作列<br>2. 进入某公司编辑页核对字段可编辑性<br>3. 尝试操作状态开关与删除入口<br>4. 回到运费核算执行勾选物流公司操作 | ACC-03;REQ-035/验收要点 7;RISK-COMPLIANCE | 1. 核算人员列表为只读:无"新增"按钮、操作列无编辑/删除、无状态开关或开关不可点<br>2. 编辑页字段只读或不可进入<br>3. 页面无越权操作入口(无任何写操作按钮可用)<br>4. 只读角色仍可在运费核算弹窗选择公司(核心职责保留,选择弹窗可打开且可勾选) | 对应TP-J-002;REQ-035/验收要点 7(RISK-COMPLIANCE) |
| PLT_TMS_LC_059 | 平台端-基础信息-物流公司管理-权限与日志 | 验证未登录与未授权角色的 URL 直达拦截 | P1 | 安全性测试 | 已获取物流公司管理页面与编辑页路由 URL;ACC-03(无该菜单权限场景)可用;DevTools 可查看接口响应 | 1. 未登录状态浏览器直接输入列表页 URL<br>2. 未登录状态直接输入编辑页 URL(带公司 ID)<br>3. ACC-03 登录后直达两个 URL<br>4. 核对前端路由拦截与接口响应 | 页面路由 URL;公司编辑页 URL(LC-01);ACC-03;漏测清单 §3 | 1. 未登录直达跳转登录页,不渲染列表数据<br>2. 未授权角色直达返回 403/无权限页,不渲染数据<br>3. 列表/详情接口请求被服务端拒绝(401/403),无数据泄露<br>4. 前端路由与后端接口双重拦截均生效(绕过前端路由仍被接口拦截) | 对应TP-J-003;漏测清单 §3 未登录访问 |
| PLT_TMS_LC_060 | 平台端-基础信息-物流公司管理-权限与日志 | 验证低权限账号绕过前端直调写接口被拒绝 | P1 | 安全性测试 | ACC-03 已登录并取得有效会话凭证;接口工具可用;LC-01 与目标公司 ID 已知 | 1. 用 ACC-03 会话直接调用新增物流公司接口<br>2. 直接调用编辑/删除/启停用接口(携带 LC-01 ID)<br>3. 用 ACC-05(机构B)会话直调机构A公司写接口<br>4. 核对响应码与数据库数据 | ACC-03 会话;LC-01 ID;ACC-05;项目画像 §8.2 越权操作 | 1. 低权限直调写接口返回无权限(非 200 成功),统一错误码与提示<br>2. 直调他机构公司 ID 写接口被拒(数据权限校验独立于菜单)<br>3. 全部被拒请求后数据库无任何数据被修改(LC-01 字段与 deleted 值不变)<br>4. 越权尝试按平台口径写安全日志/拦截记录 | 对应TP-J-004;项目画像 §8.2 越权操作(漏测清单 §3) |
| PLT_TMS_LC_061 | 平台端-基础信息-物流公司管理-权限与日志 | 验证多机构数据隔离:跨机构列表/导出/搜索均不可见 | P0 | 安全性测试 | 机构A(ACC-01 或 ACC-02)与机构B(ACC-05,数据缺口 #4/#5)账号均可登录;机构B 已创建物流公司 1 家(如 LC-B01) | 1. 机构A 登录核对列表不含 LC-B01<br>2. 用机构A 导出列表核对文件不含跨机构公司<br>3. 机构A 模糊搜索 LC-B01 名称与代码前缀<br>4. 核对生效合同数等统计不泄露跨机构信息 | ACC-01/ACC-02(机构A);ACC-05(机构B);LC-B01;REQ-035/第 3 章;项目画像 §7.3/§8.2 | 1. 两机构分别登录列表互不可见(机构A 列表无 LC-B01,反向亦然)<br>2. 导出数据不含跨机构公司(服务端按机构过滤)<br>3. 模糊搜索无法搜出跨机构公司(搜索不绕过隔离)<br>4. 统计数(生效合同数等)不泄露跨机构信息;数据库查询恒带机构条件 | 对应TP-J-005;REQ-035/第 3 章(项目画像 §7.3 多机构隔离必测) |
| PLT_TMS_LC_062 | 平台端-基础信息-物流公司管理-权限与日志 | 验证跨机构篡改 ID 操作被拒绝且无信息泄露 | P0 | 安全性测试 | ACC-05(机构B)已登录;机构A 公司 ID 与合同 ID 已知(ACC-01 侧读取);接口工具可用 | 1. 用机构B 会话篡改编辑接口 ID 为机构A 公司 ID 提交<br>2. 篡改删除/启停用接口同理提交<br>3. 篡改合同接口(新增/编辑/删除)携带机构A 公司 ID<br>4. 直接 URL 访问机构A 公司编辑页 | ACC-05;机构A 公司 ID/合同 ID;项目画像 §7.3 | 1. 篡改 ID 的编辑/删除/启停用/合同接口全部被拒(非成功),数据无修改<br>2. 直接 URL 访问跨机构编辑页被拒(无权限页/404)<br>3. 错误提示不泄露跨机构数据明细(不含对方公司名称/字段值)<br>4. 全部越权尝试留痕(行为日志/安全日志记录操作人与 IP) | 对应TP-J-006;REQ-035/第 3 章(项目画像 §7.3) |
| PLT_TMS_LC_063 | 平台端-整车运输-承运结算-运费核算 | 验证选择弹窗数据范围按登录机构隔离 | P1 | 安全性测试 | ACC-03(机构A)已登录;机构B 存在启用公司 LC-B01 | 1. 机构A 打开选择物流公司弹窗核对集合<br>2. 搜索"LC-B01 名称"与"91530111"类代码前缀<br>3. 核对弹窗计数与机构A 启用公司数一致<br>4. 记录跨机构同码唯一性冲突的提示口径 | ACC-03(机构A);LC-B01(机构B);项目画像 §7.3 | 1. A 机构核算人员弹窗仅加载本机构启用公司(无 LC-B01)<br>2. 搜索关键词亦无法检出跨机构公司<br>3. 弹窗数据量与列表(同机构启用)计数一致<br>4. 跨机构同码公司建档时的重复提示口径记录实际行为供评审 | 对应TP-J-007;项目画像 §7.3(弹窗按机构隔离) |
| PLT_TMS_LC_064 | 平台端-基础信息-物流公司管理-权限与日志 | 验证物流公司增删改与启停用均写入行为日志四要素 | P0 | 安全性测试 | ACC-01/ACC-02 已登录;行为日志查询入口可用(运维工具-行为日志);已准备可操作公司 1 家(LC-04 系列操作样本) | 1. 依次执行:新增一家公司("云南测试日志校验物流有限公司")<br>2. 编辑该公司法人字段并保存;停用该公司;启用该公司;删除该公司<br>3. 在行为日志按操作人+时间检索五类记录<br>4. 核对日志四要素与变更摘要内容 | 日志校验样本公司;LC-04;REQ-035/第 3 章/第 7 章 | 1. 五类操作(新增/编辑/停用/启用/删除)均可查到对应日志记录<br>2. 每条日志含操作人、时间、IP、变更摘要四要素<br>3. 变更摘要能体现关键字段变化(如名称/状态/法人前后值)<br>4. 日志不可被普通角色篡改/删除(用 ACC-02 尝试无权操作并确认被拒) | 对应TP-J-008;REQ-035/第 3 章/第 7 章(行为日志四要素) |
| PLT_TMS_LC_065 | 平台端-基础信息-物流公司管理-权限与日志 | 验证合同操作与运单核算修改均留痕可追溯 | P1 | 安全性测试 | ACC-01/ACC-02 已登录;行为日志入口可用;LC-01 合同管理与 WT-01 运单核算可用 | 1. 新增合同 HT-2026-0003 并保存<br>2. 编辑该合同过期时间并保存;删除该合同<br>3. 对 WT-01 保存一次修改核算(覆盖更新)<br>4. 在行为日志按时间/操作人检索上述四类操作 | 合同日志样本;WT-01;REQ-035;漏测清单 §6 操作日志 | 1. 合同新增/编辑/删除均有日志记录(含操作人/时间/IP/摘要)<br>2. 核算保存/修改核算有日志记录(衔接 PLT_TMS_LC_017 覆盖更新链路)<br>3. 日志时间与实际操作时间一致(分钟级以内)<br>4. 可按时间/操作人检索定位(如平台行为日志支持多维检索) | 对应TP-J-009;REQ-035(漏测清单 §6 操作日志可追溯) |
| PLT_TMS_LC_066 | 平台端-基础信息-物流公司管理-权限与日志 | 验证敏感证件访问受控且留痕(合规) | P1 | 安全性测试 | ACC-01(授权)与 ACC-03(非授权)已登录;LC-01 含营业执照与身份证三类证件(OBS URL 已知);可访问 OBS 链接 | 1. 用 ACC-01 查看/下载 LC-01 证件并核对成功<br>2. 用 ACC-03 尝试查看证件与直接访问 OBS URL<br>3. 复制 OBS 链接到未登录浏览器访问<br>4. 在行为日志核对证件查看/下载留痕 | LC-01;DOC-01/03/05 OBS URL;SEC-05;RISK-COMPLIANCE | 1. 授权角色可正常查看/下载证件<br>2. 非授权角色无法查看/下载(页面无入口或接口拒绝)<br>3. 证件 OBS URL 具备鉴权(签名或权限校验),未授权直接访问被拒(记录实际鉴权方式供评审)<br>4. 查看/下载行为可追溯(行为日志记录,或明确记录实际审计方式) | 对应TP-J-010;RISK-COMPLIANCE(项目画像 §7.3 敏感信息) |
| PLT_TMS_LC_067 | 平台端-整车运输-承运结算 | 验证打款完成仍正常触发安徽运八第二次上报 | P0 | 回归测试 | ACC-04/ACC-01 已登录;存在可打款运单(含无外协公司运单 WT-02 与新关联公司运单 WT-01 各 1 张);安徽运八上报链路环境可用 | 1. 在货主打款页完成一笔含外协公司运单的打款<br>2. 核对第二次上报自动触发与状态流转<br>3. 完成一笔无外协公司运单(WT-02)的打款并核对上报触发<br>4. 核对新增筛选与展示列未改变触发时机与入口 | WT-01(新关联);WT-02(无外协);PY-06;分析 10.2-1/确认结论 §4 | 1. 改造后完成打款,第二次上报仍被自动触发且成功<br>2. 上报状态流转正常(上传中→已上传/通过)<br>3. 无外协公司的打款记录同样正常触发上报(10.2-3)<br>4. 新增筛选与展示列不改变触发时机、上报入口与上报数据字段来源 | 对应TP-X-001;[AI修正: 冲突修订]、[回归](分析 10.2/确认结论 §4) |
| PLT_TMS_LC_068 | 平台端-整车运输-承运结算 | 验证第二次上报资金流水金额来源为支付流水 | P0 | 回归测试 | ACC-04/ACC-01 已登录;存在已打款运单 Y1(可查支付流水);账户管理可调整打款金额(或构造财务调整场景) | 1. 完成 Y1 打款并触发第二次上报<br>2. 逐字段核对上报报文金额与支付流水表金额<br>3. 在账户管理调整 Y1 打款金额后重新触发上报<br>4. 核对上报使用调整后金额(非旧缓存值) | Y1 样本运单;PY-06;BUG-202607-03(跨模块数据不一致) | 1. 上报金额与支付流水完全一致(逐字段核对无差异)<br>2. 财务调整打款金额后,重新上报使用调整后最新实际金额(非旧缓存/旧快照)<br>3. 本次打款页面改造(筛选/展示列)不影响金额来源链路<br>4. 数据来源可溯源(服务端取数日志显示查询支付流水表) | 对应TP-X-002;[AI修正: 历史缺陷防御]、[AI修正: 冲突修订]、[回归](BUG-202607-03 防御) |
| PLT_TMS_LC_069 | 平台端-整车运输-承运结算 | 验证上报自动重试期间手动触发的幂等保护 | P1 | 回归测试 | ACC-04/ACC-01 已登录;具备模拟上报失败触发自动重试的手段;存在待上报运单 Y2 | 1. 使 Y2 上报首次失败进入自动重试等待<br>2. 重试期间在页面手动触发上传<br>3. 核对提示与是否重复提交<br>4. 恢复后核对最终上报记录条数 | Y2 样本运单;BUG-202607-02(重试幂等);漏测清单 §6 | 1. 重试期间手动触发提示"上报处理中"类文案并拒绝重复提交<br>2. 同一运单同一阶段短时间内仅一条成功上报记录<br>3. 改造后该链路行为与改造前一致(打款筛选/展示列不影响)<br>4. 无重复上报导致的数据不一致 | 对应TP-X-003;[AI修正: 历史缺陷防御]、[回归](BUG-202607-02 重试幂等防御) |
| PLT_TMS_LC_070 | 平台端-整车运输-承运结算 | 验证上报阶段依赖链的前后端双重校验 | P1 | 回归测试 | ACC-04/ACC-01 已登录;具备构造第一次上报 3 次重试全失败的场景(阻断上报接口或 mock);存在运单 Y3 | 1. 使 Y3 第一次上报 3 次重试全失败<br>2. 在页面尝试触发第二次上报核对前端拦截<br>3. 用接口工具绕过前端直接提交第二次上报请求<br>4. 核对后端返回与状态 | Y3 样本运单;BUG-202607-01(仅前端控制类缺陷) | 1. 前置上报未完成时前端按钮控制生效(不可点或明确提示)<br>2. 绕过前端直调第二次上报被后端拒绝并返回明确错误码/提示<br>3. 前端与后端校验同时生效(任一单独失效即为缺陷)<br>4. 改造后依赖链行为与改造前一致 | 对应TP-X-004;[AI修正: 历史缺陷防御]、[回归](BUG-202607-01 防御) |
| PLT_TMS_LC_071 | 平台端-整车运输-承运结算 | 验证安徽运八上报省份代码为 34 且行政区划字段正确 | P1 | 回归测试 | ACC-04/ACC-01 已登录;已完成一笔安徽运八链路打款并触发上报(可抓包或查上报报文) | 1. 抓取/查询该次上报报文<br>2. 核对省份代码字段值<br>3. 核对行政区划相关字段与目标省份一致<br>4. 检索报文确认无硬编码 28 回退 | 安徽运八上报报文样本;BUG-202607-04(省份代码错误);项目画像 §1(云南 reportProvince=28 对照) | 1. 上报报文中省份代码=34(安徽省代码,非项目默认 28)<br>2. 行政区划相关字段与目标省份一致(逐字段核对)<br>3. 无硬编码回退到 28 的回归现象<br>4. 本次打款页面改造未影响上述字段来源逻辑 | 对应TP-X-005;[AI修正: 历史缺陷防御]、[回归](BUG-202607-04 防御) |
| PLT_TMS_LC_072 | 平台端-整车运输-承运结算 | 验证打款金额计算口径回归(不受筛选/展示影响) | P0 | 回归测试 | ACC-04/ACC-01 已登录;PY-06 样本运单(含能源费/居间费/税费)改造前金额基线已记录 | 1. 对样本运单在改造后环境重算并核对货主合计付款(基础运费+服务费)<br>2. 核对能源费转化金额与比例<br>3. 核对居间费与车队长收款(居间费+1%税费)<br>4. 选择物流公司筛选后复核各金额字段不变 | PY-06(含能源费/居间费/税费的既有记录);项目画像 §5.4;RISK-FINANCIAL | 1. 改造前后各金额字段逐项对比无差异(货主合计付款/能源费/居间费/车队长收款)<br>2. 物流公司筛选与组合条件下金额值不变<br>3. 金额可追溯、前后端一致(项目画像 §5.1)<br>4. 无重复扣减、无因新增字段导致的计算链路变化 | 对应TP-X-006;[AI修正: 冲突修订]、[回归](RISK-FINANCIAL/项目画像 §5.4) |
| PLT_TMS_LC_073 | 平台端-整车运输-承运结算 | 验证打款/驳回操作入口与结果不受改造影响 | P0 | 回归测试 | ACC-04/ACC-01 已登录;货主打款与财务打款各备可打款、可驳回记录 1 条;改造前按钮显示条件基线已记录 | 1. 在货主打款页完成一笔打款核对状态流转与日志<br>2. 在财务打款页对一条记录执行驳回(填写驳回原因)核对结果与后续处理<br>3. 核对两页按钮显示条件(状态映射)与改造前一致<br>4. 核对操作日志完整性 | PY-07;PY-03(己)打款/驳回样本;验收要点 9 | 1. 打款操作正常完成、状态流转正确(与改造前一致)<br>2. 驳回操作正常(驳回原因、状态、后续处理与改造前一致)<br>3. 按钮显示条件(状态映射)不变,无因新列导致入口错位<br>4. 操作日志完整记录两类操作 | 对应TP-X-007;[AI修正: 冲突修订]、[回归](验收要点 9) |
| PLT_TMS_LC_074 | 平台端-整车运输-承运结算 | 验证无外协与新关联记录均可在两页正常查询打款 | P1 | 回归测试 | ACC-04/ACC-01 已登录;WT-02(无外协)与 WT-01(庚)各自生成打款记录 | 1. 在货主打款页用"无外协公司"筛出 WT-02 记录并执行打款<br>2. 在财务打款页筛出 WT-01 记录并执行打款<br>3. 核对两类记录的打款结果一致性<br>4. 核对"无外协公司"选项下记录正常操作与展示 | WT-02(无外协);WT-01(庚);PY-02;分析 10.2-3 | 1. 两类记录均可被筛出并正常执行打款(无阻断)<br>2. 打款结果一致(状态流转正确、金额与流水一致)<br>3. "无外协公司"选项下记录可执行打款/驳回,状态流转与未筛选时一致,展示列为"无外协公司"<br>4. 新关联公司记录展示快照名称 | 对应TP-X-008;[AI修正: 冲突修订]、[回归](分析 10.2-3);[AI修正: 评审修复 O-002] |
| PLT_TMS_LC_075 | 平台端-整车运输-承运结算-运费核算 | 验证运单核心状态机与物流公司关联解耦 | P1 | 功能测试 | ACC-01/ACC-03 已登录;备未选物流公司运单 W1 与已选公司运单 W2 各 1 张(均可走全流程) | 1. W1 走完 待运输→运输中→已卸货→已结算→已打款 全链路核对状态<br>2. W2 走同一链路核对状态与选择前一致<br>3. 检查打款筛选/展示列不引入状态副作用<br>4. 核对货源状态不因是否选择公司变化 | W1(未选);W2(已选);项目画像 §5.2;需求 7.4 解耦声明 | 1. 未选物流公司运单全流程状态流转正常(无阻断、无跳状态)<br>2. 已选公司运单状态流转与未选时一致,关联不是任何流转的前置/后置条件<br>3. 无跳状态/逆状态;打款筛选与展示列不引入状态副作用<br>4. 货源状态不因是否选择公司变化(BR-07.4) | 对应TP-X-009;需求 7.4 解耦声明/项目画像 §5.2 |
| PLT_TMS_LC_076 | 平台端-通用-跨需求回归 | 验证物流公司建档与小象开票收款方建档体系互不串扰 | P3 | 回归测试 | ACC-01 已登录;小象开票"收款方创建"功能可访问;已记录开票收款方体系现有数据量 | 1. 新增物流公司("云南测试开票串扰物流有限公司")后核对开票收款方列表无新增<br>2. 在小象开票新增一个收款方(使用物流公司测试代码)后核对物流公司列表无新增<br>3. 用同一信用代码分别在两体系建档,记录各自表现<br>4. 回读两体系数据核对互不引用 | 开票串扰样本公司;同一信用代码双体系样本;分析 10.1-1 | 1. 物流公司建档不影响开票收款方体系数据(两体系独立)<br>2. 两体系同为信用代码唯一防重但各自独立(同一代码在两体系的表现记录实际行为)<br>3. 两体系列表互不出现对方数据<br>4. 测试中未混淆两类"企业主体信息"建档(防串扰提醒落地) | 对应TP-X-010;[AI修正: 冲突修订]、[回归](分析 10.1-1 防串扰) |
| PLT_TMS_LC_077 | 平台端-通用-跨需求回归 | 验证运单资料文件包下载功能不受新增列干扰 | P3 | 回归测试 | ACC-01 已登录;运单资料文件包下载功能可用(相关需求已上线);存在已结算打款运单可打包 | 1. 对含新增列前后的运单执行文件包上传/打包/下载全链路<br>2. 核对文件包内容与既有口径一致<br>3. 核对运单管理既有列与导出(除新增列外)口径不变<br>4. 核对文件包数据不含/不依赖物流公司字段 | 运单资料文件包样本运单;分析 10.1-2 | 1. 文件包上传/异步打包/下载流程不受新增列影响(全链路成功)<br>2. 运单管理既有列与导出口径不变(除新增物流公司列外无差异)<br>3. 文件包不读取物流公司字段、内容不含该字段<br>4. 打包期间与完成后运单业务数据无修改 | 对应TP-X-011;[AI修正: 冲突修订]、[回归](分析 10.1-2) |
| PLT_TMS_LC_078 | 平台端-通用-跨需求回归 | 验证页面文案术语口径一致性(无"核算单"字样) | P3 | 功能测试 | ACC-01/ACC-03 已登录;权限覆盖运费核算与物流公司管理 | 1. 全站检索"核算单"字样(运费核算页/弹窗/菜单/提示)<br>2. 核对空值文案四处统一"无外协公司"<br>3. 抽查菜单名"物流公司管理"、弹窗名"修改核算"<br>4. 与术语表标准词比对(运营管理员/核算人员等) | 分析 §12 术语统一口径;术语表;TP-X-012 | 1. 页面无"核算单/新建核算单"字样(口径纠正落地)<br>2. 空值文案四处统一"无外协公司",无其他写法<br>3. 菜单名"物流公司管理"与弹窗名"修改核算"逐字一致<br>4. 角色称呼沿用标准词;文案抽查无术语混用 | 对应TP-X-012;REQ-036 术语口径(分析 §12) |
| PLT_TMS_LC_079 | 平台端-整车运输-承运结算 | 验证垫资两页范围防护与改造误伤回归 | P1 | 回归测试 | ACC-04/ACC-01 已登录;垫资运单样本(货主标记垫资 AND 货源标记垫资,项目画像 §5.3)1 张;已记录改造前垫资两页基线截图 | 1. 回归核对货主打款/财务打款两页新增筛选与展示列正常<br>2. 核对「垫资-货主打款」「垫资-财务打款」两页查询区与列表保持改造前原样(无物流公司筛选项与展示列)<br>3. 在垫资两页查询并完成一笔垫资运单打款,核对垫资金额与流程<br>4. 核对普通运单与垫资运单在两页归属不串数 | 垫资运单样本;项目画像 §2.3/§5.3;范围① | 1. 已改造两页(货主打款/财务打款)筛选与展示列正常(回归基线通过)<br>2. 垫资两页保持改造前原样:无"物流公司"筛选项与展示列、结构行为无变化(若共用组件重点核对筛选组件未泄露)<br>3. 垫资运单在垫资两页可正常查询与打款,垫资金额计算与流程不受影响<br>4. 普通运单与垫资运单归属展示不串数 | 对应TP-X-013;[回归];[待确认] 垫资两页是否同口径改造(范围①,见测试点待确认汇总) |
| PLT_TMS_LC_080 | 平台端-整车运输-承运结算-运费核算 | 验证两个「运费核算」菜单的改造落点与误伤防护 | P1 | 回归测试 | ACC-01/ACC-03 已登录;「运单认证核算」与「承运结算」两个菜单入口均可访问;已记录"运单认证核算→运费核算"页改造前基线 | 1. 从 整车运输 → 承运结算 → 运费核算 进入核对修改核算弹窗含"物流公司"与"客户收货地址"字段<br>2. 从「运单认证核算 → 运费核算」进入核对页面结构与行为保持原样<br>3. 核验两入口是否为同一页面/数据源(对比数据结构与路由)<br>4. 若为同一页面,任一路径下同一运单核算结果一致性核对 | 项目画像 §2.3;范围②;WT-01 样本 | 1. 承运结算→运费核算改造落点正确:弹窗含两字段且可用(与 PLT_TMS_LC_002 对应)<br>2. 「运单认证核算」下同名入口保持原样:无新增字段、无新增列、行为无变化(防误伤)<br>3. 两入口关系核验:若实际指向同一页面则任一路径同一运单核算结果一致、无二义(无双重写入/状态不一致);若独立页面则确认改造仅落"承运结算→运费核算"入口<br>4. 误伤防护结论记录供评审 | 对应TP-X-014;[回归];[待确认] 两个「运费核算」菜单是否为同一页面/数据源(范围②,见测试点待确认汇总) |
| PLT_TMS_LC_081 | 平台端-整车运输-端到端冒烟 | 验证建档到打款展示的物流公司全链路端到端冒烟 | P0 | 冒烟测试 | ACC-01 与 ACC-03/ACC-04 已登录;环境已备 DOC-01/03/05 证件样本与 AT-01 合同附件样本;数据字典-税源地已维护 | 1. ACC-01 新增物流公司"云南测试端到端物流有限公司"(上传三证件、填写全字段)→ 状态=启用<br>2. 编辑页合同管理 Tab 新增合同(生效时间=T、过期时间=T+365)→ 状态=生效中<br>3. ACC-01 发布货源 HY-E2E 选择该公司 → 保存快照<br>4. ACC-03 对 HY-E2E 关联运单打开修改核算弹窗(带入公司)→ 保存 → 核算状态=已核算<br>5. ACC-04 在货主打款页按该公司筛选并核对展示列 → 核对运单管理/货源管理列表展示 | 端到端公司(名称唯一);DOC-01/03/05;AT-01;HY-E2E;T=2026-09-29、T+365=2027-09-29 | 1. 新增成功(状态启用、列表出现、证件落库)<br>2. 合同保存成功且状态自动=生效中,公司列表生效合同数=1<br>3. 货源保存成功、列表快照显示公司名称<br>4. 核算保存成功(运单表三字段快照落库、状态已核算)、打款页按公司筛出该记录且四列表展示一致;全链路无阻断、无控制台报错 | 端到端冒烟(合成用例,串联 A/B/E/F/G/H/I 核心链路;对应 TP-B-019/TP-E-005/TP-G-005/TP-F-015/TP-H-001/TP-I-003) |
---
## P2/P3 用例取舍说明
- 本次**未裁剪任何 P2/P3 测试点**(P2 23 个、P3 5 个全部保留对应用例),理由:P2 中 TP-I-012(历史数据兼容)、TP-F-021(批量核算 Q7)、TP-D-005(货源引用删除口径)均为口径裁决依赖项,删除将导致待确认项失去验收载体;P3 中 TP-E-004(合同选择框无批量操作)、TP-I-011(列位置)、TP-X-010~012(小象开票防串扰、文件包不干扰、术语口径)为范围防护与防过度实现类验证点,执行成本低且能防止越界实现。
- 拆分/合并原则:同一测试点内"接受 vs 拒绝"(020 白名单内/外)、"启用/停用/已删除"三态(003、006)、"不同真实业务场景"(024 合法校验与 025 非法校验)拆为独立用例;同类边界两侧(50/51 字符、200/201 字符、20000/20001 条、30/31 与 20/21 字符)在一条用例内成对验证;纯记录实际行为类场景(026、041、046、053、078 等)独立成条并显式标注待确认,不静默按单一口径断言。
- 优先级校验:P0 用例 55 条占 33.5%,与测试点 P0 占比(53/159=33.3%)匹配;全部 P0 测试点 100% 有 P0 用例承接(TP-B-009 拆为 024/025 两条 P0,故 P0 用例 55 > P0 测试点 53);无高风险场景下沉到 P2(如 TP-F-018 状态已变化后操作为 RISK-DATA 相关,保持 P0)。
- 新增 081(端到端冒烟,P0)为合成用例,串联建档→合同→货源→核算→打款→四列表展示主链路,用于首轮冒烟与联调回归,不与明细用例重复计覆盖。
## 测试点 → 用例覆盖率统计
> 覆盖率总览:159/159 测试点全部对应用例(100%)。P0 测试点 53 个 100% 对应用例(对应 55 条 P0 用例,超出部分为 TP-B-009 的边界拆分);P1 测试点 78 个 100% 对应用例(对应 81 条 P1 用例,超出部分为 TP-B-010/TP-B-014 的字段拆分与 TP-B-009 的一条补充);P2 测试点 23 个 100% 保留;P3 测试点 5 个 100% 保留。覆盖率 100%(159/159),无遗漏、无静默裁剪。
> 模块 A(菜单与列表查询,15 个):TP-A-001→PLT_BSC_LC_001;TP-A-002→002;TP-A-003→003;TP-A-004→004;TP-A-005→005;TP-A-006→006;TP-A-007→007;TP-A-008→008;TP-A-009→009;TP-A-010→010;TP-A-011→011;TP-A-012→012;TP-A-013→013;TP-A-014→014;TP-A-015→015
> 模块 B(新增,24 个):TP-B-001→016;TP-B-002→017;TP-B-003→018;TP-B-004→019;TP-B-005→020;TP-B-006→021;TP-B-007→022;TP-B-008→023;TP-B-009→024/025/026;TP-B-010→027/028;TP-B-011→029;TP-B-012→030;TP-B-013→031;TP-B-014→032/033;TP-B-015→034;TP-B-016→035;TP-B-017→036;TP-B-018→037;TP-B-019→038;TP-B-020→039;TP-B-021→040;TP-B-022→041;TP-B-023→042;TP-B-024→043
> 模块 C(编辑,5 个):TP-C-001→044;TP-C-002→045;TP-C-003→046;TP-C-004→047;TP-C-005→048
> 模块 D(删除与启停用,13 个):TP-D-001→049;TP-D-002→050;TP-D-003→051;TP-D-004→052;TP-D-005→053;TP-D-006→054;TP-D-007→055;TP-D-008→056;TP-D-009→057;TP-D-010→058;TP-D-011→059;TP-D-012→060;TP-D-013→061
> 模块 E(合同管理,22 个):TP-E-001→062;TP-E-002→063;TP-E-003→064;TP-E-004→065;TP-E-005→066;TP-E-006→067;TP-E-007→068;TP-E-008→069;TP-E-009→070;TP-E-010→071;TP-E-011→072;TP-E-012→073;TP-E-013→074;TP-E-014→075;TP-E-015→076;TP-E-016→077;TP-E-017→078;TP-E-018→079;TP-E-019→080;TP-E-020→081;TP-E-021→082;TP-E-022→083
> 模块 F(运单核算关联,25 个):TP-F-001→PLT_TMS_LC_001;TP-F-002→002;TP-F-003→003;TP-F-004→004;TP-F-005→005;TP-F-006→006;TP-F-007→007;TP-F-008→008;TP-F-009→009;TP-F-010→010;TP-F-011→011;TP-F-012→012;TP-F-013→013;TP-F-014→014;TP-F-015→015;TP-F-016→016;TP-F-017→017;TP-F-018→018;TP-F-019→019;TP-F-020→020;TP-F-021→021;TP-F-022→022;TP-F-023→023;TP-F-024→024;TP-F-025→025
> 模块 G(货源选择,8 个):TP-G-001→026;TP-G-002→027;TP-G-003→028;TP-G-004→029;TP-G-005→030;TP-G-006→031;TP-G-007→032;TP-G-008→033
> 模块 H(打款筛选,11 个):TP-H-001→034;TP-H-002→035;TP-H-003→036;TP-H-004→037;TP-H-005→038;TP-H-006→039;TP-H-007→040;TP-H-008→041;TP-H-009→042;TP-H-010→043;TP-H-011→044
> 模块 I(列表展示与快照,12 个):TP-I-001→045;TP-I-002→046;TP-I-003→047;TP-I-004→048;TP-I-005→049;TP-I-006→050;TP-I-007→051;TP-I-008→052;TP-I-009→053;TP-I-010→054;TP-I-011→055;TP-I-012→056
> 模块 J(权限、隔离与日志,10 个):TP-J-001→057;TP-J-002→058;TP-J-003→059;TP-J-004→060;TP-J-005→061;TP-J-006→062;TP-J-007→063;TP-J-008→064;TP-J-009→065;TP-J-010→066
> 模块 X(跨需求回归与兼容,14 个):TP-X-001→067;TP-X-002→068;TP-X-003→069;TP-X-004→070;TP-X-005→071;TP-X-006→072;TP-X-007→073;TP-X-008→074;TP-X-009→075;TP-X-010→076;TP-X-011→077;TP-X-012→078;TP-X-013→079;TP-X-014→080
## 待确认项汇总(未收敛,相关用例不得按臆造规则执行)
> 分析 §11.2 五项 + 项目画像补充识别两项(测试点文件共 11 处 `⚠️ 待确认`),已分别落至用例备注:
> 1)Q7 批量核算是否支持批量填充"物流公司/客户收货地址"——承接用例 PLT_TMS_LC_021(P2),当前按"不支持"口径断言(批量不填充也不清除);建议产品明确并回写需求第八章,若确认支持则补充用例并回归。
> 2)口径① 运单管理列表/导出及打款筛选的"物流公司"取值口径矛盾(BR-09/6.9"随货源带入" vs 6.6"运单表";核算更换/清除或未核算时两口径结果不一致)——承接用例 PLT_TMS_LC_046(运单管理列)、PLT_TMS_LC_041(打款筛选依据)、PLT_TMS_LC_024(弹窗回显基准),三条按同一基准裁决(暂按"运单表快照为准;未核算运单回退取值待定");未核算回退取值需二选一定义(货源带入值 or "无外协公司")。
> 3)口径② BR-04 删除保护是否覆盖"仅被货源引用、尚无运单"的公司——承接用例 PLT_BSC_LC_053(P2),双口径样本(可删除/阻断)均备;当前按"仅生效合同/运单引用两条件阻断"设计。
> 4)口径③ 简称码空值唯一性、编辑"排除自身"字段范围(含合同编号)——承接用例 PLT_BSC_LC_036(空值不参与唯一)、PLT_BSC_LC_046(编辑排除自身)、PLT_BSC_LC_068(合同编号编辑排除自身);推荐口径"空值不参与唯一约束;名称/信用代码/简称码及合同编号编辑时均排除自身"。
> 5)口径④ "客户收货地址"展示载体与范围——承接用例 PLT_TMS_LC_020(P2),已按"至少运单详情只读展示"为验收基线,其余展示位记录实际行为。
> 6)范围① 垫资-货主打款/垫资-财务打款两页是否同口径改造——承接用例 PLT_TMS_LC_079(P1),当前按"不在改造范围、不被误伤"口径验证。
> 7)范围② 两个「运费核算」菜单(「运单认证核算」下与「承运结算」下)是同一页面/数据源还是独立功能——承接用例 PLT_TMS_LC_080(P1),按"同一页面则行为一致、独立页面则改造仅落承运结算入口"双分支记录。
> 另 6 项口径细化待确认(来自测试数据 §10,同样不得臆造):a) 合同附件扩展名大小写口径(.PDF/.Jpg 是否放行)——承接 PLT_BSC_LC_073/074;b) 联系方式是否严格要求 1[3-9]\\d{9}(是否允许座机/国际前缀)——承接 PLT_BSC_LC_029;c) 简称码是否仅接受大写字母("ab" 是否合法)——承接 PLT_BSC_LC_030;d) 唯一性判重是否对首尾空格 trim("甲公司 " 与"甲公司"是否冲突)——承接 PLT_BSC_LC_023/034;e) 统一社会信用代码是否校验第 18 位国标校验位(需求仅规定字符集正则)——承接 PLT_BSC_LC_026;f) 纯空格/空白字符在必填文本字段中是否按空处理(含 emoji/生僻字长度计数口径)——承接 PLT_BSC_LC_022/028/032。
> 以上待确认项对应的用例断言均按"记录实际行为 + 评审确认后回填/回归"方式设计,评审结论出具前不得将任何单一取值当作需求结论执行。
## 自检结论(按 review_checklist.md 第 1~4 节逐项)
> 结构:全文仅一个连续用例表(表头逐字为标准唯一表头、分隔线合规、164 行数据无空行/无标题插入),每行恰 10 列、单元格内无半角竖线、无单元格内换行(步骤与预期以 <br> 分隔);类型列全部取自枚举(功能测试 135/回归测试 13/安全性测试 11/冒烟测试 2/性能测试 1/兼容性测试 1/易用性测试 1,无"其他");模块列全部为 `-` 连接层级路径(导出时自动标准化为 `|`)。
> 覆盖:主流程/异常流程/边界条件/数据校验/状态流转/规则组合/幂等并发/权限越权/弱网超时/历史缺陷防御/跨需求冲突防御/项目差异化(多机构隔离、行为日志四要素、Excel 20000 上限、华为云 OBS 依赖、核算人员只读、敏感证件合规)12 维度全覆盖;后台 CRUD 正向成功链路(038/047/054/066/081)、选择弹窗六项细项(刷新/搜索/字段/分页/排序/反馈,004~010)、状态拆分三态(003/006/052/070)、查看只读(079)均已显式覆盖;金额相关以回归方式覆盖(042/072/073,本需求不新增金额计算,见测试点"不适用说明");预期结果均同时含 UI/接口反馈与数据状态变化(落库字段/状态位/日志/唯一约束/快照值),无"操作成功""功能正常"类空话。
> 风险场景:RISK-DATA P1 三类核心场景(唯一性双保险含并发 037、快照口径 050/051/052、删除保护 050/051/052/053)全部按 P0/P1 覆盖,无遗漏、无下沉;RISK-FINANCIAL(042/072/073)、RISK-COMPLIANCE(058/061/062/066)、RISK-AVAILABILITY(011/078/023)、RISK-COMPATIBILITY(056)逐项落用例。
> 追溯与来源:每条用例备注标注对应 TP 编号;历史缺陷防御用例(068~071)标 `[AI修正: 历史缺陷防御]`;跨需求回归用例(067~074/076/077/079/080)标 `[回归]` 或 `[AI修正: 冲突修订]`;待确认项 11+6 处均在备注与文末显式标注,未静默按单一口径断言。