统一合同气阀候选与绑定入口

This commit is contained in:
czl231
2026-08-31 22:04:22 +08:00
parent 9a23ab2f5a
commit 0f2475098f
23 changed files with 352 additions and 47 deletions

View File

@@ -106,7 +106,7 @@
- 配送合同创建、草稿编辑和续签必须填写到期时间,且到期时间必须晚于生效时间;历史缺失值应提示补录,不得推测回填。
- 合同只能选择当前气站用户及当前气站配送点。
- 合同附件仅支持单个不超过 10 MiB 的 PDF创建和草稿编辑时通过受控接口上传、替换或移除详情页通过气站鉴权和合同归属校验后预览不向前端暴露内部存储地址。
- 合同气瓶支持绑定和受控解绑。
- 合同气瓶支持绑定和受控解绑;绑定候选必须按所选合同筛选,只允许选择属于合同签约用户、已启用、未报废且未重复绑定的智能气阀。缺少合同上下文时不得返回当前气站其他用户的设备;无候选设备时应引导平台总后台先将设备归属变更为合同用户
- 合同修订记录只读,不允许修改或删除。
- 合同修订记录不展示公共软删除时间等无业务意义的基础设施字段。
- 合同状态只能通过专用动作接口推进,不能通用编辑 `contract_status`

View File

@@ -113,7 +113,7 @@ Global:
- 配送点可完整管理当前配送点用户的配送合同。
- 支持创建、草稿编辑、启用、续签和终止。
- 启用仅适用于草稿合同;已终止合同不得直接启用,只能通过续签填写新的生效时间、到期时间和原因后恢复履约。
- 支持绑定和受控解绑当前用户已有气瓶。
- 支持绑定和受控解绑当前用户已有气瓶;绑定候选必须按所选合同筛选,只允许选择属于合同签约用户、已启用、未报废且未重复绑定的智能气阀,并要求该用户当前仍属于本配送点。缺少合同上下文时不得返回本点其他用户的设备;无候选设备时应引导平台总后台先将设备归属变更为合同用户
- 合同修订记录只读。
- 服务端强制合同所属气站和配送点为当前范围。
- 不得查看或操作所属气站下其他配送点的合同。

View File

@@ -0,0 +1,26 @@
# 合同气阀候选范围统一操作日志
操作时间2026-08-31
操作类型:修改
影响模块:平台合同候选、气站合同、配送点合同
## 操作前状态
平台总后台按合同用户筛选可绑定智能气阀;气站端按当前气站全部服务用户筛选,配送点端按当前配送点全部服务用户筛选。组织端可能显示其他用户的设备,配送点绑定入口也未单独判断用户是否仍属于当前配送点。
## 具体操作
1. 提取平台、气站和配送点共用的合同智能气阀候选规则。
2. 气站和配送点候选接口要求合同上下文,并校验当前组织范围。
3. 配送点合同响应增加当前配送点服务关系派生状态。
4. 配送点绑定接口增加当前配送点服务关系校验。
5. 两个组织端的智能气阀下拉携带合同标识,并统一空状态引导。
6. 增加 SQL 范围测试和前端静态契约检查。
## 操作后状态
三个管理端均只展示当前合同用户可绑定的智能气阀。缺少合同上下文时不返回组织范围设备;配送点用户转出后不能再从页面或接口绑定气阀。
## 风险评估
候选范围较原组织端更严格,历史上依赖组织级宽泛候选的错误操作将不再可用。合同气瓶最终绑定接口原有的设备归属校验保持不变,不影响合法绑定记录及历史数据。

View File

@@ -0,0 +1,30 @@
# 操作日志:配送点合同气瓶绑定入口
操作时间2026-08-31
操作类型:扩展
影响模块:配送点合同列表、合同气瓶新建页
## 操作前状态
配送点需求、后端接口和隐藏子路由均支持合同气瓶绑定,但配送合同列表没有进入新建页的入口。
## 具体操作
1. 草稿合同且签约用户服务关系有效时显示“绑定气瓶”。
2. 点击后进入合同气瓶新建页,并传递当前合同唯一标识和返回地址。
3. 从列表进入时锁定预填合同,禁止切换到其他合同。
4. 增加入口、状态条件、目标路由和合同锁定的静态契约检查。
## 操作后状态
配送点管理员可从草稿合同所在行直接绑定气瓶;非草稿合同不显示入口。
## 验证结果
- `npm.cmd run type:check`:通过。
- `npm.cmd run resource-pages:check`:通过,详情 17、新建 9、编辑 5。
- `npm.cmd run build`通过2648 个模块完成生产构建。
## 风险评估
复用既有隐藏路由、接口与权限模型,仅增加缺失的前端入口和上下文锁定,不改变合同状态或数据范围。

View File

@@ -0,0 +1,31 @@
# 项目文档:合同气阀候选范围统一 v1.0
## 1. 项目概述
平台总后台、气站后台和配送点后台统一使用合同级智能气阀候选规则。组织端不再按全部服务用户返回设备,避免其他用户的智能气阀进入当前合同候选。
## 2. 核心规则
- 候选请求必须提供 `contract_identity`,缺少合同上下文时返回空列表。
- 智能气阀必须直接归属于合同签约用户。
- 智能气阀记录必须启用,设备生命周期不得为已报废。
- 已在当前合同中有效绑定的设备不得重复进入候选。
- 气站端要求合同用户当前仍属于合同气站。
- 配送点端要求合同用户当前仍属于合同气站及当前配送点。
- 配送点用户转出后隐藏绑定入口,绑定接口继续执行相同的服务端范围校验。
## 3. 页面行为
- 合同气瓶新建页先取得已锁定的合同,再携带 `contract_identity` 加载智能气阀候选。
- 切换合同会清空原智能气阀选择并重新加载。
- 无候选设备时提示管理员由平台总后台先将设备归属变更为合同用户。
## 4. 接口兼容性
继续使用现有 `/product_info` 候选资源和合同气瓶绑定接口,不新增数据库字段。新增的 `user_delivery_service_active` 是合同查询派生字段,用于配送点页面和服务端动作范围判断,不修改合同表结构。
## 5. 验证方法
- 运行平台合同、产品、气站合同及配送点订单逻辑测试。
- 运行气站与配送点资源页面静态契约检查。
- 运行两个组织端的 TypeScript 类型检查和生产构建。

View File

@@ -58,6 +58,8 @@ frontend/delivery_admin/
创建配送订单时以配送合同为父级收货地址只加载合同签约用户地址合同气瓶只加载当前未解绑绑定切换合同清空旧值并丢弃过期响应。候选为空或仍在加载时禁止保存金额区只提供预估最终金额继续由服务端计算。详细规则见《项目文档_配送点订单创建联动_v1.0.md》。
配送合同列表仅对草稿合同且签约用户服务关系仍有效的记录显示“绑定气瓶”。入口进入合同气瓶独立新建页,自动带入并锁定当前合同,保存或取消后可返回原合同列表;生效、过期、终止合同不显示该入口。
订单详情的“调整金额”动作读取当前配送费和优惠金额作为弹窗初始值,并完成分到元的展示转换;本次操作原因继续单独填写,不复用历史原因。
配送人员资质列表必须由配送人员列表进入。页面先通过受保护人员详情接口回查姓名,再以当前气站、配送点、`delivery` 角色和人员 ID 四重条件加载资质;缺少、无效或越权人员上下文时停止加载,绝不回退为全部资质。标题和上下文区域显示人员姓名及可复制唯一标识,表格隐藏重复人员列。新建页自动预填所属人员,创建和编辑均锁定该关系,返回地址只接受安全站内路径。