1.7 KiB
1.7 KiB
Context
已有 ETC/加油(申请→发放看板)与车辆维保(申请→处理看板)两套实现。尿素申请含 计划金额 + 入库数量,发放为 实付金额,语义上更接近 ETC 的「待发放/已发放」,但申请字段更丰富。
约束:MySQL 5.7、租户隔离、Fresh Mint UI、frontend 静态路由、软删除。
Goals / Non-Goals
Goals: 双菜单 CRUD、1:0~1 关联、无申请补录、发放金额默认带出申请金额、角色菜单幂等迁移。
Non-Goals: 审批、库存系统、尿素主数据、选车提醒、车辆状态联动。
Decisions
D1 平行复制 ETC 模块
新建 pl_vehicle_urea_* 表与 Service,发放页复用 disburse-board 模式。理由:与 ETC 文案/状态一致,工期可控。
D2 双金额字段
- 申请表
apply_amount(计划,必填) - 发放表
amount(实付,必填) - 发放弹窗默认
amount = apply_amount,允许修改。
D3 状态 disbursed
不设 is_processed;发放成功 → 申请 disbursed。
D4 单位与数量
unit varchar + UI 预设「吨桶」+ allow-create;quantity decimal(10,2) 必填 > 0。
D5 单号
SXNS(尿素申请)、SXUF(尿素发放)。
D6 角色菜单 id
super_admin 用固定 id PL_Urea_RM_SA_*;其他角色用 MD5(CONCAT(role_id, ':', menu_id)),避免 UUID() 1062。
Risks / Trade-offs
| 风险 | 缓解 |
|---|---|
| 申请/发放金额不一致难对账 | 看板同时展示两列金额 |
| 与 ETC 代码重复 | 接受;第三模块后再抽象 |
Migration Plan
- 执行
2026-06-29-pl-vehicle-urea.sql - 部署后端与前端
- 重新登录刷新菜单
Open Questions
- (无)