Files
shanxia2.0/openspec/changes/transport-plan-management/specs/transport-plan/spec.md
T
2026-06-21 09:19:07 +08:00

7.5 KiB
Raw Blame History

Transport Plan (运输计划管理)

ADDED Requirements

Requirement: 计划可从 CRM 合同发起

系统 SHALL 支持从 CRM 合同发起运输计划,自动带入合同基本信息、商品明细、结算方式等数据。

Scenario: 从合同发起计划

  • WHEN 用户选择 CRM 合同并点击"发起计划"
  • THEN 系统 SHALL 自动带入客户信息(customer_id, customer_name)
  • AND 系统 SHALL 自动带入联系人信息(contact_name, contact_mobile)
  • AND 系统 SHALL 自动带入甲方/乙方信息(party_a*, party_b*)
  • AND 系统 SHALL 自动带入合同有效期(start_date, end_date)
  • AND 系统 SHALL 自动带入结算方式(settlement_method)
  • AND 系统 SHALL 自动带入商品明细(从 crm_contract_product 读取 product_id, product_name, model, unit, price)
  • AND 系统 SHALL 自动带入送货方式(delivery_method)

Scenario: 合同关联字段映射

CRM 合同字段 计划字段
customer_id customer_id
customer_name customer_name
contact_name contact_name
contact_mobile contact_mobile
party_a* party_a*
party_b* party_b*
start_date plan_start_date
end_date plan_end_date
settlement_method settlement_method

Requirement: 单据类型自动判断

系统 SHALL 根据供应商和目的地自动判断单据类型(直销单/入库单/出库单)。

Scenario: 判断为入库单

  • WHEN 目的地 = "安庆山峡" OR 目的地 = "安徽云栋"
  • THEN 系统 SHALL 将单据类型设置为"入库单"

Scenario: 判断为出库单

  • WHEN 供应商 = "安庆山峡" OR 供应商 = "安徽云栋"
  • THEN 系统 SHALL 将单据类型设置为"出库单"

Scenario: 判断为直销单

  • WHEN 供应商 ≠ "安庆山峡" AND 供应商 ≠ "安徽云栋" AND 目的地 ≠ "安庆山峡" AND 目的地 ≠ "安徽云栋"
  • THEN 系统 SHALL 将单据类型设置为"直销单"

Requirement: 产品属性检查

系统 SHALL 在安排运输前检查产品属性,易制毒/易制爆产品必须上传购买证和运输证。

Scenario: 易制毒产品需上传证件

  • WHEN 产品属性包含"易制毒"且用户点击"安排运输"
  • THEN 系统 SHALL 检查是否已上传购买证
  • AND 系统 SHALL 检查是否已上传运输证
  • IF 任一证件缺失
  • THEN 系统 SHALL 阻止安排运输并提示用户上传缺失证件

Scenario: 易制爆产品需上传证件

  • WHEN 产品属性包含"易制爆"且用户点击"安排运输"
  • THEN 系统 SHALL 检查是否已上传购买证
  • AND 系统 SHALL 检查是否已上传运输证
  • IF 任一证件缺失
  • THEN 系统 SHALL 阻止安排运输并提示用户上传缺失证件

Scenario: 普通产品无需证件

  • WHEN 产品不包含"易制毒"和"易制爆"属性
  • THEN 系统 SHALL 允许直接安排运输,无需上传证件

Requirement: 跟进状态流转

系统 SHALL 支持跟进状态的完整流转,并支持任意状态下取消。

Scenario: 直销单状态流转

  • WHEN 直销单状态为"等客户确认"且用户确认要货
  • THEN 系统 SHALL 将状态流转至"待采购"
  • WHEN 直销单状态为"待采购"且采购完成
  • THEN 系统 SHALL 将状态流转至"待发货"
  • WHEN 直销单状态为"待发货"且货物发出
  • THEN 系统 SHALL 将状态流转至"待收货"
  • WHEN 直销单状态为"待收货"且客户确认收货
  • THEN 系统 SHALL 将状态流转至"待归档"
  • WHEN 直销单状态为"待归档"且用户点击归档
  • THEN 系统 SHALL 将状态流转至"归档完成"

Scenario: 入库单状态流转

  • WHEN 入库单状态为"待采购"且采购完成
  • THEN 系统 SHALL 将状态流转至"待发货"
  • WHEN 入库单状态为"待发货"且货物到达
  • THEN 系统 SHALL 将状态流转至"待入库"
  • WHEN 入库单状态为"待入库"且地磅确认入库
  • THEN 系统 SHALL 将状态流转至"已入库"
  • WHEN 入库单状态为"已入库"且用户点击归档
  • THEN 系统 SHALL 将状态流转至"归档完成"

Scenario: 出库单状态流转

  • WHEN 出库单状态为"等客户确认"且客户确认要货
  • THEN 系统 SHALL 将状态流转至"待出库"
  • WHEN 出库单状态为"待出库"且货物出库
  • THEN 系统 SHALL 将状态流转至"已出库"
  • WHEN 出库单状态为"已出库"且客户确认收货
  • THEN 系统 SHALL 将状态流转至"已收货"
  • WHEN 出库单状态为"已收货"且用户点击归档
  • THEN 系统 SHALL 将状态流转至"归档完成"

Scenario: 任意状态下取消计划

  • WHEN 用户在任意跟进状态下点击"取消计划"
  • THEN 系统 SHALL 将计划状态设置为"已取消"
  • AND 系统 SHALL 保留运输信息并标记为"已取消"
  • AND 系统 SHALL 禁止该计划继续流转

Requirement: 归档操作

系统 SHALL 支持归档操作,归档后自动更新归档状态和完成状态。

Scenario: 归档操作

  • WHEN 计划处于"待归档"状态且用户点击"归档"
  • THEN 系统 SHALL 将归档状态从"未归档"更新为"已归档"
  • AND 系统 SHALL 将完成状态从"否"更新为"是"
  • AND 系统 SHALL 禁止该计划继续修改

Requirement: 计划编号规则

系统 SHALL 按照规则自动生成计划订单编号。

Scenario: 计划编号生成

  • WHEN 用户新建计划
  • THEN 系统 SHALL 生成编号格式为 SXDDHYYYYMMDD######
  • WHEREIN YYYYMMDD 为当前日期
  • AND ###### 为当日6位序号(从000001开始,每日重置)

Requirement: 金额计算规则

系统 SHALL 支持入库金额和出库金额的自动计算。

Scenario: 入库金额计算

  • WHEN 用户填写入库数量或修改入库价
  • THEN 系统 SHALL 自动计算入库金额 = 入库数 × 入库价
  • AND 入库价默认值为合同价格,支持后续修改

Scenario: 出库金额计算

  • WHEN 用户填写出库数量或修改出库价
  • THEN 系统 SHALL 自动计算出库金额 = 出库数 × 出库价

Requirement: 通知信息生成

系统 SHALL 按模板生成通知信息,通知信息不可编辑。

Scenario: 通知信息模板

  • WHEN 系统生成通知信息
  • THEN 系统 SHALL 使用以下模板格式:
计划号:{plan_no}
企业名称:{customer_name}
提货单位:{destination}
到货时间:{delivery_date}
药品名称:{product_name}
到货吨位:{quantity}吨
备注:{remark}
  • AND 用户 SHALL NOT 直接编辑通知信息内容

Requirement: Web 管理端按钮须携带图标

运输计划模块 web-admin/src/views/pl/**(承运商管理、车辆管理、司机管理、运输计划、运输管理、运费结算、库存台账、证件提醒及 form/detail/arrange 子页)SHALL 遵循 OpenSpec ui-conventions 中 「按钮须携带图标」 Requirement:凡带可见文案的 el-button 须在文字前方包含 <el-icon>,图标从 @element-plus/icons-vue 显式导入。

Scenario: 运输计划菜单页面按钮展示

  • WHEN 用户打开运输计划菜单下任一列表、表单或详情页
  • THEN 筛选区「搜索」「重置」、工具栏「新增」、操作列「查看/编辑/删除/安排运输/提交/审核/处理」、弹窗与页脚「取消/确定/返回」等带文案按钮 SHALL 均携带语义图标
  • THEN SHALL NOT 出现仅有文字、无 <el-icon> 的按钮