用证管理按段次计量及合同双视角 #9

Closed
opened 2026-11-01 12:28:44 +00:00 by cykj · 0 comments
Owner

用证管理按段次计量及合同双视角

Why

用户于2026-11-01确认五个管理Tab及合同详情两个独立Tab。当前代码具备证件共享余额、合同产品适用范围、事务化安排预占,但只选择唯一装送计量侧,合法使用证明挂在计划产品上,不能满足各装送段分别校验、分别占用、分别上传的需求。

What Changes

  • Web用证管理增加证件建档、合同用证、证件用量、计划段次用证、合法使用证明五个视图。
  • 新增证件可在同一次保存中关联合同和合同产品;解析仍仅提供候选字段。
  • 合同详情在运输计划后依次增加“合同证件与额度”“运输计划合法使用证明”,两个独立Tab。
  • BREAKING 新规则按各段次产品独立用证:同证装货100吨、送货40吨及60吨,累计预占200吨。替代旧工单#4的装送去重要求;两类证各自核算。
  • 合法使用证明按每个段次产品分别上传,不提供一次上传批量覆盖多个段次的操作。
  • 现有已安排/已归档账目不自动重算;旧账使用版本化兼容处理。

Capabilities

New Capabilities

  • stop-cert-management: 五视图、合同双Tab、各段独立计量、段次产品资料及历史兼容。

Impact

Web管理端、共享后端、MySQL5.7迁移脚本及对应API/schema;H5/小程序调用兼容纳入验证,本轮不新增其五Tab界面。保留租户/数据权限、差量保存、幂等及额度事务。默认Agent测试;不执行生产迁移、部署或自动关闭既有工单。本阶段交付OpenSpec与可编辑原型,业务实现待新版原型确认。

ADDED Requirements

Requirement: 五视图与合同双Tab

系统 SHALL 提供证件建档、合同用证、证件用量、计划段次用证、合法使用证明五个管理视图;合同详情 SHALL 在运输计划之后依次提供合同证件与额度、运输计划合法使用证明两个独立Tab。

Scenario: 从合同查看用证和资料

  • WHEN 用户打开合同详情
  • THEN 两个独立Tab分别展示该合同证件统计/绑定维护和该合同相关段产品资料,不混入其他合同统计。

Requirement: 各装送段独立匹配与计量

新规则 SHALL 以每个适用段次产品为独立来源,按各自合同产品匹配购买证、运输证;同证不同段量 SHALL 累计,不做装送去重;两类证 SHALL 独立核算。

Scenario: 一装两送使用同一张证

  • WHEN 装货100吨、送货40吨和60吨,各段选用同一张购买证与同一张运输证且条件满足
  • THEN 购买证预占200吨、运输证预占200吨;任一证余额不足则安排失败且原账不变。

Scenario: 各段属于不同合同

  • WHEN 装货段属于合同A、送货段属于合同B
  • THEN 分别校验A与B的合同产品适用范围,A的可用绑定不能替代B缺失的绑定。

Requirement: 统一共享余额与范围统计

系统 SHALL 从同一份账本和使用明细产生统计,区分全证共享余额与本合同/产品预占和已用量,不跨单位或跨证种求和。

Scenario: 多合同共用证件

  • WHEN 核定300吨,本合同预占100吨,其他合同预占80吨,累计已用20吨
  • THEN 全证共享余额为100吨,本合同预占为100吨,绑定本身不扣量。

Requirement: 建档与合同产品绑定原子保存

系统 SHALL 在同一事务保存证件和本次提交的多合同产品适用范围,完整执行归属、权限及引用校验,差量更新已有明细。

Scenario: 任一合同产品无效

  • WHEN 建档同时绑定多个合同,其中一个产品不属于对应合同
  • THEN 全部保存失败,不留下新证件或部分成功关联。

Requirement: 段次产品独立资料

合法使用证明 SHALL 按每个适用段次产品分别上传、查看和统计,保留MinIO附件和审计;资料操作 SHALL 不改变额度、运输或库存。

Scenario: 多送货段仅一段上传

  • WHEN 一个计划有两个需要证明的送货段产品,仅第一段已上传
  • THEN 第一段已上传、第二段未上传,总计1/2;不能从计划产品的附件推断第二段齐全。

Scenario: 资料缺失仍可安排

  • WHEN 所有需证段产品的两证满足,但合法使用证明未上传
  • THEN 安排不因资料缺失受阻,资料界面继续显示待补。

Requirement: 历史计量与附件保护

系统 SHALL 保留旧计划的原计量口径和账目,新规则不得自动重算旧账;旧计划级附件 SHALL 独立保留且不得自动计作各段已上传。

Scenario: 旧计划已按唯一侧占用100吨

  • WHEN 系统升级到各段独立计量
  • THEN 旧占用仍为100吨并标识原口径,不自动增加到200吨;后续合法历史释放和结转仍可追溯。

Related: #4, #8. Branch: codex/pl-stop-cert-management. OpenSpec: openspec/changes/pl-stop-cert-management/.
Stage: specification and Figma prototype; no business implementation or database migration executed.

Figma v3 与规格进度

  • 原型总览:九个可编辑静态画面,待用户确认。
  • 合同详情分为合同证件与额度和运输计划合法使用证明两个独立Tab。
  • 原型截图已检查并修正文本换行;静态原型不代表功能或浏览器验收。
  • 本地规格提交:3a3cafc2c,分支 codex/pl-stop-cert-management;尚未推送。
  • openspec validate pl-stop-cert-management --strict、git diff --cached --check通过。
  • 已向用户发送具体v3确认题;业务代码、SQL与历史账目尚未修改。

v3已确认,进入实现

用户明确回复“采用 v3,继续实现(推荐)”。按 docs/superpowers/plans/2026-11-01-pl-stop-cert-management.md 顺序执行后端计量、段产品证明、合同证件统计/原子建档绑定、Web五视图和合同双Tab。

默认Agent测试;旧合法证明/合同范围/证件档案基线62项通过(SQLite合成数据)。不启动MySQL容器、不执行SQL、不改历史账。任务分支 codex/pl-stop-cert-management,实施计划提交771f2d756。

实施进展(持续更新)

已按用户确认v3及“参考已有界面样式”完成实现;沿用Fresh Mint、原列表/筛选/工具栏、弹窗及MinIO附件组件。

  • 五个Web视图:证件建档、合同用证、证件用量、计划段次用证、合法使用证明。
  • 建档证面与多合同产品绑定一次事务保存;保留已有关系/产品ID,受限范围只读并省略提交。
  • 合同详情“运输计划”后两个独立Tab:合同证件与额度、运输计划合法使用证明。证明只统计当前合同段产品;已验证全局1/3、合同二1/1、切合同三0/1。
  • 新版按各装送段自身合同产品匹配并累计,同证装100+送40+60=200,购买/运输证分别计量;历史单侧账本不重算,非易制毒无需双证,缺证明不阻断安排。
  • 合法证明逐段产品单独上传保存,历史计划级附件单独只读;真实浏览器发现并修复上传完成按钮未恢复的问题,保存失败保留附件后可重试。

验证与审查:

  • 各子任务规格/质量双审及最终全范围独立审查均通过,无新增P1/P2。
  • 最终后端SQLite合成组合523 passed;Web194 passed;小程序身份回归2 passed。
  • 最终pnpm build通过(39.61秒);vue-tsc仍为499项既有错误,归一化新增0、减少0,不声明全量类型检查通过。
  • 实际Chrome加载任务构建产物,网络全部合成拦截;统计分页/组合过滤、建档单次保存与ID、v2/legacy、上传中禁保存/500失败保留/单项重试、合同Tab顺序与scope均验证。最新证明及合同场景pageerror/unknown请求均0。
  • 既有mobile_stop_meta两项失败(历史SQL路径缺失、AST替身缺少assert_plan_can_arrange)未扩大修改。真实MySQL5.7事务/并发、迁移演练及真实服务集成未执行,不能以SQLite替代。

交付(2026-11-02 更新):

  • 用户授权后已合入并推送 V3.0,本地主目录与远端一致为 ed22f7df4;业务及 SQL 提交 baf16d49b,其后仅执行记录文档。
  • 合并前重新运行后端 523 项、Web 194 项回归,全部通过;本次仅额外修正菜单 SQL 的环境 ID 差异,修复经只读预览 RED→GREEN 和独立审查 PASS。
  • 已在确认的测试库(MySQL 5.7.36)执行 2026-11-01-pl-stop-legal-document.sql 与 migrations/2026-11-01-pl-stop-cert-views.sql:新建资料表 1 张、新增菜单 2 行、更新原菜单 3 行;字段、唯一索引、InnoDB/DYNAMIC/utf8mb4 及菜单顺序检查通过。
  • 迁移前已备份受影响表结构与菜单,保存逐步执行日志。原角色授权保持不变、软删除分组未恢复;未重算历史额度、未迁移旧附件。详见 SQL 执行记录。
  • 本地主目录 39 个既有未提交文件内容全部保留。现有开发服务自动加载后,8000 健康检查、3006 页面均 200,OpenAPI 已出现段次证明及合同/证件统计新接口。未主动启停服务或操作生产环境。
  • 新菜单未自动给普通角色授权。真实业务事务/额度并发、完整登录联调和用户验收仍待完成;工单保持开放,不将结构迁移校验冒充业务验收。
# 用证管理按段次计量及合同双视角 ## Why 用户于2026-11-01确认五个管理Tab及合同详情两个独立Tab。当前代码具备证件共享余额、合同产品适用范围、事务化安排预占,但只选择唯一装送计量侧,合法使用证明挂在计划产品上,不能满足各装送段分别校验、分别占用、分别上传的需求。 ## What Changes - Web用证管理增加证件建档、合同用证、证件用量、计划段次用证、合法使用证明五个视图。 - 新增证件可在同一次保存中关联合同和合同产品;解析仍仅提供候选字段。 - 合同详情在运输计划后依次增加“合同证件与额度”“运输计划合法使用证明”,两个独立Tab。 - **BREAKING** 新规则按各段次产品独立用证:同证装货100吨、送货40吨及60吨,累计预占200吨。替代旧工单#4的装送去重要求;两类证各自核算。 - 合法使用证明按每个段次产品分别上传,不提供一次上传批量覆盖多个段次的操作。 - 现有已安排/已归档账目不自动重算;旧账使用版本化兼容处理。 ## Capabilities ### New Capabilities - `stop-cert-management`: 五视图、合同双Tab、各段独立计量、段次产品资料及历史兼容。 ## Impact Web管理端、共享后端、MySQL5.7迁移脚本及对应API/schema;H5/小程序调用兼容纳入验证,本轮不新增其五Tab界面。保留租户/数据权限、差量保存、幂等及额度事务。默认Agent测试;不执行生产迁移、部署或自动关闭既有工单。本阶段交付OpenSpec与可编辑原型,业务实现待新版原型确认。 ## ADDED Requirements ### Requirement: 五视图与合同双Tab 系统 SHALL 提供证件建档、合同用证、证件用量、计划段次用证、合法使用证明五个管理视图;合同详情 SHALL 在运输计划之后依次提供合同证件与额度、运输计划合法使用证明两个独立Tab。 #### Scenario: 从合同查看用证和资料 - **WHEN** 用户打开合同详情 - **THEN** 两个独立Tab分别展示该合同证件统计/绑定维护和该合同相关段产品资料,不混入其他合同统计。 ### Requirement: 各装送段独立匹配与计量 新规则 SHALL 以每个适用段次产品为独立来源,按各自合同产品匹配购买证、运输证;同证不同段量 SHALL 累计,不做装送去重;两类证 SHALL 独立核算。 #### Scenario: 一装两送使用同一张证 - **WHEN** 装货100吨、送货40吨和60吨,各段选用同一张购买证与同一张运输证且条件满足 - **THEN** 购买证预占200吨、运输证预占200吨;任一证余额不足则安排失败且原账不变。 #### Scenario: 各段属于不同合同 - **WHEN** 装货段属于合同A、送货段属于合同B - **THEN** 分别校验A与B的合同产品适用范围,A的可用绑定不能替代B缺失的绑定。 ### Requirement: 统一共享余额与范围统计 系统 SHALL 从同一份账本和使用明细产生统计,区分全证共享余额与本合同/产品预占和已用量,不跨单位或跨证种求和。 #### Scenario: 多合同共用证件 - **WHEN** 核定300吨,本合同预占100吨,其他合同预占80吨,累计已用20吨 - **THEN** 全证共享余额为100吨,本合同预占为100吨,绑定本身不扣量。 ### Requirement: 建档与合同产品绑定原子保存 系统 SHALL 在同一事务保存证件和本次提交的多合同产品适用范围,完整执行归属、权限及引用校验,差量更新已有明细。 #### Scenario: 任一合同产品无效 - **WHEN** 建档同时绑定多个合同,其中一个产品不属于对应合同 - **THEN** 全部保存失败,不留下新证件或部分成功关联。 ### Requirement: 段次产品独立资料 合法使用证明 SHALL 按每个适用段次产品分别上传、查看和统计,保留MinIO附件和审计;资料操作 SHALL 不改变额度、运输或库存。 #### Scenario: 多送货段仅一段上传 - **WHEN** 一个计划有两个需要证明的送货段产品,仅第一段已上传 - **THEN** 第一段已上传、第二段未上传,总计1/2;不能从计划产品的附件推断第二段齐全。 #### Scenario: 资料缺失仍可安排 - **WHEN** 所有需证段产品的两证满足,但合法使用证明未上传 - **THEN** 安排不因资料缺失受阻,资料界面继续显示待补。 ### Requirement: 历史计量与附件保护 系统 SHALL 保留旧计划的原计量口径和账目,新规则不得自动重算旧账;旧计划级附件 SHALL 独立保留且不得自动计作各段已上传。 #### Scenario: 旧计划已按唯一侧占用100吨 - **WHEN** 系统升级到各段独立计量 - **THEN** 旧占用仍为100吨并标识原口径,不自动增加到200吨;后续合法历史释放和结转仍可追溯。 Related: #4, #8. Branch: codex/pl-stop-cert-management. OpenSpec: openspec/changes/pl-stop-cert-management/. Stage: specification and Figma prototype; no business implementation or database migration executed. ## Figma v3 与规格进度 - [原型总览](https://www.figma.com/design/ImDcikQnCX5GiJQLwUHwDC/shanxia2.0?node-id=26-3):九个可编辑静态画面,待用户确认。 - 合同详情分为[合同证件与额度](https://www.figma.com/design/ImDcikQnCX5GiJQLwUHwDC/shanxia2.0?node-id=26-445)和[运输计划合法使用证明](https://www.figma.com/design/ImDcikQnCX5GiJQLwUHwDC/shanxia2.0?node-id=26-513)两个独立Tab。 - 原型截图已检查并修正文本换行;静态原型不代表功能或浏览器验收。 - 本地规格提交:3a3cafc2c,分支 codex/pl-stop-cert-management;尚未推送。 - openspec validate pl-stop-cert-management --strict、git diff --cached --check通过。 - 已向用户发送具体v3确认题;业务代码、SQL与历史账目尚未修改。 ## v3已确认,进入实现 用户明确回复“采用 v3,继续实现(推荐)”。按 docs/superpowers/plans/2026-11-01-pl-stop-cert-management.md 顺序执行后端计量、段产品证明、合同证件统计/原子建档绑定、Web五视图和合同双Tab。 默认Agent测试;旧合法证明/合同范围/证件档案基线62项通过(SQLite合成数据)。不启动MySQL容器、不执行SQL、不改历史账。任务分支 codex/pl-stop-cert-management,实施计划提交771f2d756。 ## 实施进展(持续更新) 已按用户确认v3及“参考已有界面样式”完成实现;沿用Fresh Mint、原列表/筛选/工具栏、弹窗及MinIO附件组件。 - 五个Web视图:证件建档、合同用证、证件用量、计划段次用证、合法使用证明。 - 建档证面与多合同产品绑定一次事务保存;保留已有关系/产品ID,受限范围只读并省略提交。 - 合同详情“运输计划”后两个独立Tab:合同证件与额度、运输计划合法使用证明。证明只统计当前合同段产品;已验证全局1/3、合同二1/1、切合同三0/1。 - 新版按各装送段自身合同产品匹配并累计,同证装100+送40+60=200,购买/运输证分别计量;历史单侧账本不重算,非易制毒无需双证,缺证明不阻断安排。 - 合法证明逐段产品单独上传保存,历史计划级附件单独只读;真实浏览器发现并修复上传完成按钮未恢复的问题,保存失败保留附件后可重试。 验证与审查: - 各子任务规格/质量双审及最终全范围独立审查均通过,无新增P1/P2。 - 最终后端SQLite合成组合523 passed;Web194 passed;小程序身份回归2 passed。 - 最终pnpm build通过(39.61秒);vue-tsc仍为499项既有错误,归一化新增0、减少0,不声明全量类型检查通过。 - 实际Chrome加载任务构建产物,网络全部合成拦截;统计分页/组合过滤、建档单次保存与ID、v2/legacy、上传中禁保存/500失败保留/单项重试、合同Tab顺序与scope均验证。最新证明及合同场景pageerror/unknown请求均0。 - 既有mobile_stop_meta两项失败(历史SQL路径缺失、AST替身缺少assert_plan_can_arrange)未扩大修改。真实MySQL5.7事务/并发、迁移演练及真实服务集成未执行,不能以SQLite替代。 交付(2026-11-02 更新): - 用户授权后已合入并推送 V3.0,本地主目录与远端一致为 ed22f7df4;业务及 SQL 提交 baf16d49b,其后仅执行记录文档。 - 合并前重新运行后端 523 项、Web 194 项回归,全部通过;本次仅额外修正菜单 SQL 的环境 ID 差异,修复经只读预览 RED→GREEN 和独立审查 PASS。 - 已在确认的测试库(MySQL 5.7.36)执行 2026-11-01-pl-stop-legal-document.sql 与 migrations/2026-11-01-pl-stop-cert-views.sql:新建资料表 1 张、新增菜单 2 行、更新原菜单 3 行;字段、唯一索引、InnoDB/DYNAMIC/utf8mb4 及菜单顺序检查通过。 - 迁移前已备份受影响表结构与菜单,保存逐步执行日志。原角色授权保持不变、软删除分组未恢复;未重算历史额度、未迁移旧附件。详见 [SQL 执行记录](https://gitea.aichengyan.com/cykj/shanxia2.0/src/branch/V3.0/docs/sql/pl-stop-cert-management-guide.md)。 - 本地主目录 39 个既有未提交文件内容全部保留。现有开发服务自动加载后,8000 健康检查、3006 页面均 200,OpenAPI 已出现段次证明及合同/证件统计新接口。未主动启停服务或操作生产环境。 - 新菜单未自动给普通角色授权。真实业务事务/额度并发、完整登录联调和用户验收仍待完成;工单保持开放,不将结构迁移校验冒充业务验收。
cykj closed this issue 2026-11-02 04:32:44 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cykj/shanxia2.0#9