4.0 KiB
ADDED Requirements
Requirement: 地磅后端子域路由注册
系统 SHALL 在 shanxia2.0 Python 后端提供 db 子域 API,并在 app/main.py 与 app/api/__init__.py 注册路由。所有业务接口 SHALL 经过门户鉴权中间件,且查询与写入 SHALL 按当前用户 tenant_no 隔离。
Scenario: 路由可访问
- WHEN 已登录管理员请求地磅计划列表 API
- THEN 返回
{ code: 0, data: ... }且仅含当前租户数据
Requirement: 车牌管理 CRUD
系统 SHALL 提供 db_vehicle 的列表(分页)、详情、新增、修改、软删除 API。车牌号在同一租户下 SHALL 唯一(未删除记录)。
Scenario: 新增车牌
- WHEN 用户提交车牌号「皖A12345」
- THEN 创建成功并返回 UUID 主键,
del_flag=0
Scenario: 重复车牌拒绝
- WHEN 用户提交已存在且未删除的车牌号
- THEN 返回业务错误提示车牌已存在
Requirement: 计划管理 CRUD 与计划号生成
系统 SHALL 提供计划的分页列表、详情、新增、修改、软删除 API。新增计划时 SHALL 自动生成 plan_no(格式与原系统一致:SX- + 时间戳序号)。计划 SHALL 支持 auto_generate_enabled 等自动生成相关字段的读写。
Scenario: 创建计划
- WHEN 用户创建入库计划并填写产品名称、计划数量
- THEN 系统生成唯一
plan_no并持久化,execution_status为初始待执行状态
Requirement: 出入库管理 CRUD
系统 SHALL 提供出入库单的分页列表、详情、新增、修改、软删除 API,字段语义与原 inbound_outbound 一致(含 partner_company、quantity 吨、status 等)。
Scenario: 查询出入库列表
- WHEN 用户按日期范围筛选出入库列表
- THEN 返回匹配记录,默认按
create_time DESC排序
Requirement: 地磅单管理与联动事务
系统 SHALL 提供地磅单的列表、详情、新增、修改、作废 API。保存地磅单时 SHALL 在同一数据库事务内:更新关联计划的 executed_quantity 与 execution_status;创建或更新关联 db_inbound_outbound 记录;回写 purchase_plan_id 与 inbound_outbound_id。作废地磅单 SHALL 设置 is_voided=1 并回滚已计入计划的执行量(若适用)。
Scenario: 保存地磅单联动计划
- WHEN 用户保存一张关联计划的地磅单且净重有效
- THEN 关联计划的
executed_quantity增加,last_weighing_slip_id更新为当前地磅单 id
Scenario: 作废地磅单
- WHEN 用户对已保存地磅单执行作废
- THEN 该记录
is_voided=1,计划执行量相应回滚,列表默认不展示作废单(或按原系统规则过滤)
Requirement: 仪表盘统计 API
系统 SHALL 提供仪表盘聚合 API,至少包含与原系统对等的统计维度(如计划/地磅/出入库数量概览、近期趋势),数据 SHALL 按 tenant_no 过滤。
Scenario: 仪表盘数据
- WHEN 用户打开地磅仪表盘页并请求统计 API
- THEN 返回当前租户下的汇总指标 JSON
Requirement: 计划按月自动生成任务
系统 SHALL 提供定时任务,每月对 auto_generate_enabled=1 且未过 auto_generate_end_month 的计划复制生成新月计划,并更新 auto_generate_last_month 以防重复,逻辑与原 auto-create-plan 脚本等价。
Scenario: 月初自动生成
- WHEN 定时任务在新区间第一天运行且存在符合条件的模板计划
- THEN 生成新计划记录且模板计划的
auto_generate_last_month更新为当前月
Requirement: 主数据下拉只读 CRM
计划/地磅/出入库表单所需产品、客户选项 SHALL 通过已有 CRM API 获取;后端 SHALL NOT 新建 cargos/companies 表或对应 CRUD 路由。
Scenario: 产品下拉数据源
- WHEN 前端请求 CRM 产品列表用于地磅单表单
- THEN 使用现有 CRM 产品 API,选中后仅将
product_name写入地磅业务字段