Files
Yb-QaAutomationHub/output/versions/物流公司管理需求/v1/物流公司管理需求_分析.md
T
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

48 KiB
Raw Blame History

物流公司管理需求 需求分析

生成时间: 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-0107=P0,FR-0810=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