11 KiB
11 KiB
配送点管理系统需求
1. 文档目的
本文以 docs/05-平台总后台需求.md 的资源、权限、状态机和验收口径为基线,定义配送点管理系统的实施范围。
- 前端:
frontend/delivery_admin。 - 后端:复用
backend/api,业务逻辑位于internal/logic/delivery。 - API 前缀:
/heqi/delivery/v1。 - 前端开发端口:
5176。 - 数据模型:复用现有
backend/api/internal/models,本期不新增角色、菜单、邀请、库存或质控表。
2. 系统定位与边界
配送点管理系统面向配送点管理员,负责当前配送点的人员、用户、合同、订单调度、财务和邀请注册。所有资源必须以后端 JWT 中的 delivery_basic_identity 为数据范围。
本期包含:
- 本点运营概览及订单状态报表。
- 配送点资料只读视图。
- 本点配送人员、账号和资质管理。
- 本点用户、地址和唯一服务关系管理。
- 本点用户配送合同、合同气瓶和修订记录。
- 创建配送订单、调整金额、分配、回收及本点改派。
- 订单异常、恢复和取消。
- 本点钱包、银行卡、支付、流水、退款、充值、提现和结算。
- 基于所属气站及当前配送点 identity 的邀请二维码。
本期明确不包含:
- 库存、配送仓、库存流水、调拨和盘点。
- 电商商品、购物车、商城订单、评价和营销。
- 营业设置、班次、组织变更申请、独立质控记录、服务记录、用户变更申请和对账异议。
- 平台治理、生产设备和客服工单。
- Web 后台补录配送、定位、扫码、签收、收款或现场证据。
3. 配置、身份与鉴权
3.1 全局配置
气站端、配送点端和平台钱包共用:
Global:
UserRegisterURL: http://localhost:5174/register
ManualRechargeMaxAmount: 100000000
充值上限单位为分。启动时必须校验注册地址为有效 HTTP/HTTPS URL,充值上限大于零。
3.2 登录与会话
- 配送点管理员账号由平台或所属气站创建。
- 仅启用、关联启用配送点且
role_code = admin的delivery_account可以登录。 - JWT 客户端固定为
delivery_admin,与平台和气站管理端会话隔离。 - 菜单由后端
delivery_menu接口按role_code返回,前端登录后据此渲染。 - 修改本人密码必须校验当前密码;新密码只要求不少于 6 位。
- 配送人员和用户账号新增或重置密码时同样只要求不少于 6 位。
- 不新增角色表或菜单表。
3.3 数据身份与归属
- HTTP、前端、日志和审计统一使用
identity,不暴露数据库自增 ID。 - 配送点只能访问
delivery_basic_id为当前配送点的人员、用户关系、合同和订单。 - 当前配送点所属气站由后端解析,前端不能提交其他气站或配送点改变归属。
- 每个用户只能存在一条未归档服务关系,并固定归属一个气站和一个配送点。
- 所有删除均为归档;订单、合同修订、资金流水、轨迹、签收和支付事实不得物理删除。
4. 菜单与功能
4.1 数据概述
| 菜单 | 能力 |
|---|---|
| 运营概览 | 本点配送人员、用户、合同和订单数量 |
| 订单报表 | 本点订单状态分布 |
报表只使用当前配送点真实数据,不混入其他配送点或电商数据。
4.2 配送点资料
- 查看当前配送点编码、名称、负责人、地址、所属气站和状态。
- 配送点不能在本系统修改组织主数据、归属气站或状态。
4.3 配送人员管理
- 配送点可创建、编辑、启停、重置密码和归档本点配送人员。
- 新建人员的
role_code由服务端固定为delivery。 - 人员的气站及配送点归属由服务端固定为当前范围。
- 资质支持新增、编辑、启停和归档。
- 删除均为归档;存在未完成订单时禁止归档人员。
- 不允许创建安装、运维、仓管、调度员或质控角色账号。
4.4 用户管理
- 支持本点用户新增、编辑、启停、重置密码和归档。
- 创建用户时在同一事务内建立所属气站与当前配送点服务关系。
- 支持本点用户地址新增、编辑、启停和归档。
- 配送点不能将用户迁移到其他配送点或其他气站。
- 归档用户时同时归档地址及服务关系。
- 用户存在未完成订单、未关闭工单、钱包余额、可提现余额或待处理提现时禁止归档。
4.5 合同管理
- 配送点可完整管理当前配送点用户的配送合同。
- 支持创建、草稿编辑、启用、续签和终止。
- 支持绑定和受控解绑当前用户已有气瓶。
- 合同修订记录只读。
- 服务端强制合同所属气站和配送点为当前范围。
- 不得查看或操作所属气站下其他配送点的合同。
4.6 配送订单与调度
- 配送点可根据当前配送点生效合同创建订单。
- 服务端强制订单创建方为当前配送点。
- 商品金额依据合同气瓶单价由服务端计算。
- 配送点可分配、回收或在本点配送人员之间改派。
- 可选配送人员必须同时满足:
- 属于当前配送点及所属气站;
- 账号启用且未归档;
role_code = delivery;work_status = on_duty;- 至少有一条启用且未过期的资质。
- 不支持跨配送点调度。
- 配送点后台可执行:创建、分配、回收、改派、调整金额、标记异常、恢复、取消。
- 配送点后台不得执行:开始罐装、罐装完成、开始配送、到达、等待签收、完成订单。
- App 产生的定位、扫码、照片、视频、签名、收款、签收和现场证据只读,后台不得补造或修改。
4.7 订单金额调整
- 仅待处理或已分配订单允许调整。
- 存在成功支付记录后禁止调整。
- 只允许修改配送费和优惠金额。
- 商品金额保持合同计算结果。
- 应付金额由服务端重新计算:
应付金额 = 商品金额 + 配送费 - 优惠金额
- 配送费和优惠金额不得为负,应付金额必须大于零,并校验整数溢出。
- 每次调整必须填写原因,记录调整操作人和不可变历史。
- 前端不得直接提交或覆盖商品金额和最终应付金额。
4.8 财务管理
- 本点钱包、银行卡、支付记录、钱包流水、退款和结算结果只读。
- 配送点可以创建提现申请,但不能审批、驳回或标记完成。
- 配送点管理员可以给当前配送点钱包自主充值。
- 充值必须填写幂等号、金额、原因和备注。
- 单笔充值金额必须大于零且不超过
Global.ManualRechargeMaxAmount。 - 充值在数据库事务内增加钱包余额并创建不可变
wallet_record。 - 自主充值不增加可提现余额,防止充值后直接提现。
- 充值流水记录配送点管理员 identity 和显示名称。
- 禁止给其他配送点充值,禁止修改或删除充值流水。
- 现有对账模型没有配送点归属字段,因此本期不展示平台全局对账记录,也不新增对账异议模型。
4.9 邀请注册
- 邀请二维码不持久化,不新增邀请表。
- 后端基于
Global.UserRegisterURL实时生成:
register?gas_identity={所属气站identity}&delivery_identity={当前配送点identity}
- 前端生成二维码并支持下载 PNG。
- 不提供启停、过期、扫码记录和邀请统计。
- 二维码不得携带数据库 ID、密码或 JWT。
5. 资源页面模式
| 资源 | 模式 | 说明 |
|---|---|---|
delivery_profile |
readonly |
当前配送点资料 |
staff_account、staff_credential |
writable |
仅配送角色,删除为归档 |
user_account、user_address |
writable |
服务关系由服务端事务维护 |
gasorder_contract |
managed |
生命周期使用专用动作 |
gasorder_contract_product |
append_only |
解绑使用专用动作 |
gasorder_contract_revision、product_info |
readonly |
合同历史及可选气瓶 |
gasorder_basic |
append_only |
创建及专用调度/状态动作 |
wallet_basic、wallet_bank、wallet_payment、wallet_record、wallet_refund |
readonly |
当前配送点钱包范围 |
wallet_recharge、wallet_apply_cash |
append_only |
充值及提现申请 |
fin_settlement |
readonly |
当前配送点结算结果 |
6. 菜单输出
菜单定义位于 backend/api/internal/logic/delivery/menu.go,仅 admin 返回:
- 数据概述:运营概览、订单报表。
- 配送点资料:本点资料。
- 配送人员管理:新增配送人员、配送人员列表;资质为隐藏子资源。
- 用户管理:用户账户;地址和服务关系为隐藏子资源。
- 合同管理:配送合同;合同气瓶、修订记录、可选气瓶为隐藏子资源。
- 配送订单:创建订单、订单列表;分配、状态、轨迹、签收、支付记录为隐藏只读子资源。
- 财务管理:钱包、银行卡、支付记录、钱包流水、退款记录、钱包充值、提现申请、结算结果。
- 邀请注册:邀请二维码。
菜单中不得出现库存、配送仓、电商、平台治理、生产设备、客服工单或独立质控模块。
7. 接口与安全要求
- 匿名接口仅允许登录,其余接口必须验证 JWT、客户端、角色、账号状态和当前配送点。
- 路由、菜单、资源模式、后端契约和前端页面必须同步。
- 状态流转、金额、归属、调度资质、用户唯一服务关系和归档阻断均由服务端校验。
- 密码、银行卡密文和证件密文不得返回前端。
- 手机号、地址、定位、合同文件及现场证据遵循统一敏感数据保护规则。
- 订单创建、金额调整、分配、回收、改派、充值和提现必须记录操作人及原因。
- 充值、订单创建和提现使用幂等号,重复请求不得重复生成业务事实。
- 前端菜单隐藏和按钮禁用不构成权限控制。
8. 验收标准
- 配送点管理员登录后由后端菜单渲染前端,非
admin角色无菜单。 - 平台、气站和配送点 JWT 互相隔离。
- 所有业务资源只能访问当前配送点数据。
- 配送人员、用户、合同、订单调度、财务和邀请功能可用。
- 系统中没有库存、配送仓、电商和无模型支撑的规划功能。
- 调度严格校验本点归属、配送角色、在岗状态和有效资质。
- 金额调整只影响配送费和优惠金额,成功支付后不可调整。
- Web 后台不暴露罐装、开始配送、到达、签收或完成订单动作。
- 自主充值只增加余额、不增加可提现余额,并产生不可变资金流水。
- 用户、人员等删除均为归档,并正确执行未完成业务阻断。
- 邀请二维码实时生成且不持久化。
- 后端测试、权限路由测试、契约检查、前端类型检查和生产构建全部通过。