Files
shanxia2.0/openspec/changes/dibang-migration/specs/dibang-backend/spec.md
T
2026-06-10 22:59:34 +08:00

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 写入地磅业务字段