Files
xst 8c61209dd4 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 脚本骨架、覆盖率审计脚本与指标、评审修复脚本
2026-09-29 10:03:35 +08:00

459 lines
51 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 物流公司管理需求 需求分析
> 生成时间: 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 项待确认,**均已于 2026-09-29 由需求方逐项确认**(结论见第 11.2 节;权威口径见需求文档第八章补充确认 Q7~Q19)
> 术语统一口径: 标准词沿用术语表(运八平台端 / 运单 / 货源 / 运费核算 / 货主打款 / 财务打款 / 幂等性 / 审计日志 / 权限控制 / 机构数据隔离);需求文档自有词以需求为准(物流公司 / 物流合同 / 生效合同 / 无外协公司 / 核算状态)。**全文禁用"核算单"表述**——核算即运单核算,无独立核算单(第八章口径纠正),操作对象一律为运单
---
## 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. **批量核算**:沿用现有逻辑;**不支持**批量填充物流公司/客户收货地址(Q7 已确认,见 11.2 #1:不填充也不清除,两个字段仅单笔"修改核算"弹窗可填)。
**BR-07 货源选择物流公司(FR-08)**
- 新建/编辑货源(发布货源页面)增加"物流公司"字段:选填、单选,交互复用 BR-06 的选择弹窗(仅启用公司);
- 所选公司仅作为该货源及其关联运单的**记录信息**展示与追溯,不参与货源、运单、结算的任何流程判断与计费;
- 编辑货源可更换或清除所选公司;保存时写入信息快照(BR-07.3)。
**BR-08 打款列表物流公司筛选(FR-09)【金额相关·重点:不得触碰金额逻辑】**
- 打款分为**货主打款**与**财务打款**两个独立页面(均位于整车运输 → 承运结算),两页面查询区均增加"物流公司"下拉筛选项;**打款记录页同步增加**;
- 下拉选项:全部 / 无外协公司 / 各物流公司(**含停用状态**——历史打款记录需可按原公司查出);
- 过滤依据为运单上记录的物流公司(核算保存写入运单表;货源所选公司由核算弹窗默认带入,Q8 已确认);未关联公司的运单归入"无外协公司";可与其他筛选条件组合查询;
- 仅作查询过滤与结果展示,**不影响打款流程、金额计算与任何审批动作**。
**BR-09 列表显示物流公司(FR-10)**
- 4 个列表显示"物流公司"列:货源管理列表(该货源所选公司)/ 运单管理(**运单表**记录的物流公司——核算保存时写入,货源所选公司由核算弹窗默认带入;未核算或未关联显示"无外协公司",**不联表实时取货源当前值**,Q8 已确认)/ 货主打款 / 财务打款(运单上记录的公司快照);未关联统一显示"**无外协公司**";
- 展示口径为公司名称**快照**:公司后续改名/停用/删除,历史记录仍显示保存时的名称,不受影响;
- 该列为只读展示,不参与任何流程;列表导出 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 项口径细化建议)——**全部已于 2026-09-29 确认**
> ✅ 本节 5 项均已于 2026-09-29 由需求方逐项确认,结论列于各项之后(权威口径见需求文档第八章补充确认 Q7~Q19);风险矩阵(11.1)保持不变。
> 本次确认同时覆盖:合同附件扩展名大小写(Q10,.PDF/.Jpg 放行)、联系方式仅手机号(Q11,座机/国际前缀不支持)、简称码大小写不限(Q12)、判重前 trim(Q13)、信用代码不校验校验位(Q14)、纯空格按空处理(Q15)、垫资两页不改造(Q17)、仅改造承运结算入口(Q18)等口径,已同步落至测试数据 §10、测试点与测试用例(均改为确定断言)。
> ⚠️ 待确认:**批量核算是否需要支持批量填充"物流公司 / 客户收货地址"(需求第八章 Q7,P1)**、影响范围:运费核算批量入口的交互与落库逻辑、批量场景测试用例设计(当前按"不支持"口径生成——批量核算逻辑不变,不填充也不清除已存公司与地址)、若后续确认支持需补充用例与回归、建议确认方向:产品明确批量核算的字段范围(推荐维持不支持,或明确"批量仅处理原有核算字段,物流公司/客户收货地址仅单笔修改核算弹窗可填"),并把决议回写需求第八章。
> ✅ 已确认(2026-09-29):批量核算**不支持**批量填充物流公司/客户收货地址——批量逻辑不变,不填充也不清除;两个字段仅单笔"修改核算"弹窗可填(见需求文档第八章 Q7~Q19)。
> ⚠️ 待确认:**运单管理列表/导出及打款筛选的"物流公司"取值口径(P1,数据一致性——RISK-DATA 相关)**、问题:BR-09/6.9 表述运单管理显示"关联货源上记录的物流公司(随货源带入)",而 6.6 表述"展示运单表中的公司信息";当核算环节更换/清除了货源带入公司、或运单未核算时,两种口径结果不一致;且核算弹窗再次打开时的回显基准(运单表已存值 vs 货源当前值)未明确、影响范围:运单管理展示列与导出、货主打款/财务打款筛选过滤依据与展示列、快照一致性验证、建议确认方向:明确以运单表快照为准(核算保存即固化;未核算运单的回退取值——货源带入值或"无外协公司"——需二选一定义),并同步修订 BR-09/6.9 表述使全文一致。
> ✅ 已确认(2026-09-29):运单管理列/打款筛选/导出的取值**一律以运单表为准**——货源所选物流公司为货源维度记录;核算时按货源所选公司默认带入"修改核算"弹窗(运单表初始无值:**未核算的运单没有值**;弹窗内可清除或更换),确认核算后写入运单表(运单维度);未核算或未关联显示"无外协公司",**不联表实时取货源当前值**。BR-09.2 / 6.9 / BR-07.2 / 6.7 已同步修订(见需求文档第八章 Q7~Q19)。
> ⚠️ 待确认:**BR-04 删除保护是否应覆盖"仅被货源引用、尚未产生任何运单"的物流公司(P2)**、影响范围:删除阻断判定逻辑、货源追溯完整性(删除后货源列表仍显示快照名称、不空白;但公司档案不可再查)、建议确认方向:二选一定义——(a) 维持现状:仅"生效合同/运单引用"两条件阻断(推荐,货源快照已保真);(b) 追加"被货源引用"为阻断条件,同步修订 BR-04 与验收要点 2。
> ✅ 已确认(2026-09-29):**不覆盖**——删除保护仍仅"存在生效中合同""被任一运单引用"两条件阻断;仅被货源引用、无运单的公司**可删除**,货源列表按快照展示名称不受影响(见需求文档第八章 Q7~Q19)。
> ⚠️ 待确认:**唯一性校验的边界口径(P3)**、问题:(a) 选填"简称码"的空值是否参与全平台唯一(多家公司均留空是否冲突);(b) 编辑时"排除自身"是否覆盖名称/信用代码/简称码全部三类字段(6.3 仅明示名称与信用代码重校验),以及合同编号编辑时的排除自身校验、影响范围:新增/编辑表单校验用例、并发场景、数据库唯一约束对空值的处理语义、建议确认方向:明确"空值不参与唯一约束;名称/信用代码/简称码及合同编号编辑时均排除自身"为口径(推荐),并写入评审结论。
> ✅ 已确认(2026-09-29):简称码空值**不参与**全平台唯一(多家公司可同时留空,DB 层空值可多条共存);编辑时**名称/统一社会信用代码/简称码/合同编号均排除自身**;唯一性判重在提交前 trim 首尾空格,"甲公司 "与"甲公司"视为重复(见需求文档第八章 Q7~Q19)。
> ⚠️ 待确认:**"客户收货地址"的展示载体与范围(P3)**、问题:BR-06.7 仅述"填充到运单表并随运单展示",具体展示页面未明确(运单详情/运单管理列表列/运费核算列表/导出是否包含)、影响范围:展示类测试点与用例的断言位置、导出列范围、建议确认方向:明确至少"运单详情只读展示"为验收基线;是否加入列表列与导出列单独确认(推荐不加入列表列,避免列表字段膨胀)。
> ✅ 已确认(2026-09-29):以**运单详情只读展示**为验收基线;**不加入运单管理列表列**;导出暂不要求包含该列(见需求文档第八章 Q7~Q19)。
---
## 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 |