请完善并实施山峡系统“购买证、运输证与合同额度控制”改造。
先阅读当前 AGENTS.md、个人开发入口、工程规则、子数据保存规则,以及受影响应用的目录规则。核对现有代码与以下方案,发现方案和本提示词冲突时,以本提示词及用户最新确认为准:
上述内容目前是设计草案,不代表功能已经实现,也不能直接当作生产迁移执行。请先核实当前实现与数据结构,补齐设计和实施清单,再按照项目流程开发、测试。
一、改造目标
彻底取消“证书齐备”概念及人工放行机制,改为:
证件建档 → 合同绑定 → 指定适用产品 → 自动匹配与分配 → 安排成功时预占 → 归档时按实际量核销。
移除确认齐备、取消齐备、批量齐备、附件上传完整自动放行等逻辑。旧 hazard_cert_ready 标记不能再影响运输安排或绕过额度校验。
合法使用证明针对易制爆产品,提供独立资料界面,允许用户后续上传,未上传不影响运输安排。
二、证件档案与录入
保留 pl_purchase_cert、pl_transport_cert 两类档案,均支持:
图片解析结果不是最终数据。全部证面字段可编辑,最终以用户确认保存的内容为准。 识别失败可手工填写,未识别字段留空,不猜测数量、单位、证号或有效期。 解析不能自动启用证件、绑定合同、预占额度或核销。 重新解析不得直接覆盖人工修改,补传图片不得新建另一份额度或改变历史用量。
购买证保存以下9组元素及全部子字段:
运输证保存以下9组元素及全部子字段:
数量与单位必须分开存储。 运输证支持多个车牌、多个引用证号。 证件已有用量后,修改单位、核定量等关键字段必须保护历史账目,不能通过普通编辑重置额度。
三、合同与产品关系
证件绑定山峡自己的采购或销售合同,再明确选择适用的合同产品行。
合同签约方与实际装货方、收货方不能强制相同。例如:
系统管理山峡自身交易的合同和证件,不要求录入A与B的下游交易资料。
合同产品与购买证、运输证均支持多对多:
例如50%硫酸、98%硫酸,可以共用证面品名为“硫酸”的证。 通过人工勾选合同产品确定适用范围,不要求证件绑定单一SKU,不自动按品名相似匹配,不按浓度折纯。
绑定只是适用范围,不扣量、不为每个产品复制额度。 每张证无论关联多少产品、车辆,都只有一份总额度。
四、自动匹配与预占
可安排余量 = 证面总量 - 已发生量 - 已预占量。
系统根据合同、产品、数量、执行日期、车辆等匹配适用证件,检查有效期、有效次数、使用条件、运输证引用关系及可用额度。
两类证均支持自动跨证分配: 第一张证剩20吨,本次需要30吨,则第一张预占20吨,第二张预占10吨;仍不足时继续寻找下一张符合条件的证。
购买证与运输证分别分配、分别核算,不要求两类证张数一致。 运输证分配必须与其引用的购买证及对应货物范围匹配。
默认优先使用较早到期的证件;同到期日、同单位下优先使用剩余量较少的证,最后按稳定顺序选择。 必须考虑整个计划的可行组合,优先保障可选证较少的产品,不能简单逐行贪心导致错误报缺口。
预览、打开页面时不预占;安排提交成功时才预占。 提交时服务端重新检查余额与版本,事务内完成计划安排、所有证件占用和流水。 任一证件不满足条件,全部回滚,不产生部分安排或部分扣量。 支持并发锁和幂等,重复点击、网络重试不得重复占用。
单位一致时自动分配。 单位不一致时,由用户分别填写来源分配量和证件单位下的数量;系统不自动换算,即使吨和千克也不自动换算,不推算密度、浓度或历史系数。
无法可靠自动判断的条件,应明确提示人工确认,不能假装已经自动核验。
五、运输证多车辆共享
运输证上的多个车牌表示这些车辆可以共同使用该证总量,不是每辆车各有一份额度。
示例: 运输证总量100吨,车辆A已用20吨,车辆B预占30吨,车辆C预占10吨,则全证可安排余量为40吨。
所有登记车辆共享这40吨,未登记车辆不能使用该证。 不同车辆同时安排时,也必须控制同一份证件余额。
六、归档、释放与调整
保存每个来源产品的证件分配顺序和数量。 同单位归档按实际发生量及原分配顺序结转,不按比例平均摊分。
核心验收例子:
实际18吨时,第一张使用18吨、第二张使用0吨,释放未用的2吨和10吨。 实际超过预占时,超出部分重新校验并补充分配;不足时保留真实数据进入异常处理,不伪造实际量、不直接超额扣减。
多个产品共用证件时,先按各产品实际量和原分配明细处理,再按证汇总。 异单位归档须重新确认实际折算量,不自动沿用计划比例。
取消未执行计划释放占用;已有执行证据不能直接当作未用释放。 改派、改车辆、改合同、改产品或数量时,统一处理新旧占用,失败保留原占用。 重复归档不得重复核销,归档后调整按差额留痕。
同一批货装货段、送货段都有记录时,同张证不能重复累计两次。明确唯一计量来源,另一侧只用于追溯。 合同履行统计与证件用量统计分别保持正确口径。
七、彻底退出“证书齐备”
检查并替换所有相关入口,包括:
新界面展示动态结果,例如: 待绑定证件、待人工折算、额度不足、条件不匹配、可安排、已预占、已核销。
结果由后端计算,不允许用户直接修改为“通过”。 查询已安排计划时,要识别其自身已持有的占用,不能把自己的占用误报为余额不足。 旧字段可暂留用于历史审计,但不得作为新业务判断依据。 旧齐备写接口不能继续成功放行,应明确提示升级或迁移。
八、合法使用证明独立后补
用户已明确确认: 合法使用证明针对易制爆产品,独立提供界面,允许后续上传,未上传不影响运输安排。
独立界面支持:
沿用并保护现有 legal_use_cert_url 历史数据,业务名称统一为“合法使用证明”。 补传资料保留计划、产品明细ID和结算数据,不触发重新安排、额度变化或库存变化。
纯易制爆且无需两证控制的产品,不得因证明缺失或易制爆标志本身强制要求购买证、运输证额度。 混合计划中,需证产品继续执行购买证、运输证额度控制,但合法使用证明缺失不构成运输阻断。 资料待补数量与运输额度缺口分别展示,不恢复任何“齐备”开关。
九、SQL与数据一致性
以现有8表草案为基础核实完善:
保持证件总账、计划按证汇总、产品分配明细和变更流水一致。 保留来源数量与单位、证件数量与单位、分配顺序、版本、操作人及折算记录。 原始完整来源量在跨证明细中只是快照,不能重复求和。
遵循MySQL5.7、UUID主键、公共字段顺序、租户隔离、数据权限和软删除规则。 所有数量使用Decimal。 子数据差量更新,保留有效明细ID、创建信息和未提交字段;遗漏集合不变,显式清空须先校验引用。 主单、子单和关系在同一事务保存,禁止全删全增。
十、迁移与交付
历史齐备标记和图片不能推定真实额度。 切换前核实证件总量、历史已用量、在途预占及期初截止点,避免历史重复扣量。 缺少资料的记录明确进入补齐流程,不创建无限额度、不虚构使用量。
先完成有针对性的回归和隔离数据库验证,再提出切换步骤。 重点验证:
完成后说明实际修改、验证结果和未完成项。 未经验证不得声称功能已完成;不擅自执行生产迁移、部署、push或合并。 graphify已停用,不执行旧计划中的图谱更新。
No dependencies set.
The note is not visible to the blocked user.
请完善并实施山峡系统“购买证、运输证与合同额度控制”改造。
先阅读当前 AGENTS.md、个人开发入口、工程规则、子数据保存规则,以及受影响应用的目录规则。核对现有代码与以下方案,发现方案和本提示词冲突时,以本提示词及用户最新确认为准:
上述内容目前是设计草案,不代表功能已经实现,也不能直接当作生产迁移执行。请先核实当前实现与数据结构,补齐设计和实施清单,再按照项目流程开发、测试。
一、改造目标
彻底取消“证书齐备”概念及人工放行机制,改为:
证件建档 → 合同绑定 → 指定适用产品 → 自动匹配与分配 → 安排成功时预占 → 归档时按实际量核销。
移除确认齐备、取消齐备、批量齐备、附件上传完整自动放行等逻辑。旧 hazard_cert_ready 标记不能再影响运输安排或绕过额度校验。
合法使用证明针对易制爆产品,提供独立资料界面,允许用户后续上传,未上传不影响运输安排。
二、证件档案与录入
保留 pl_purchase_cert、pl_transport_cert 两类档案,均支持:
图片解析结果不是最终数据。全部证面字段可编辑,最终以用户确认保存的内容为准。
识别失败可手工填写,未识别字段留空,不猜测数量、单位、证号或有效期。
解析不能自动启用证件、绑定合同、预占额度或核销。
重新解析不得直接覆盖人工修改,补传图片不得新建另一份额度或改变历史用量。
购买证保存以下9组元素及全部子字段:
运输证保存以下9组元素及全部子字段:
数量与单位必须分开存储。
运输证支持多个车牌、多个引用证号。
证件已有用量后,修改单位、核定量等关键字段必须保护历史账目,不能通过普通编辑重置额度。
三、合同与产品关系
证件绑定山峡自己的采购或销售合同,再明确选择适用的合同产品行。
合同签约方与实际装货方、收货方不能强制相同。例如:
系统管理山峡自身交易的合同和证件,不要求录入A与B的下游交易资料。
合同产品与购买证、运输证均支持多对多:
例如50%硫酸、98%硫酸,可以共用证面品名为“硫酸”的证。
通过人工勾选合同产品确定适用范围,不要求证件绑定单一SKU,不自动按品名相似匹配,不按浓度折纯。
绑定只是适用范围,不扣量、不为每个产品复制额度。
每张证无论关联多少产品、车辆,都只有一份总额度。
四、自动匹配与预占
可安排余量 = 证面总量 - 已发生量 - 已预占量。
系统根据合同、产品、数量、执行日期、车辆等匹配适用证件,检查有效期、有效次数、使用条件、运输证引用关系及可用额度。
两类证均支持自动跨证分配:
第一张证剩20吨,本次需要30吨,则第一张预占20吨,第二张预占10吨;仍不足时继续寻找下一张符合条件的证。
购买证与运输证分别分配、分别核算,不要求两类证张数一致。
运输证分配必须与其引用的购买证及对应货物范围匹配。
默认优先使用较早到期的证件;同到期日、同单位下优先使用剩余量较少的证,最后按稳定顺序选择。
必须考虑整个计划的可行组合,优先保障可选证较少的产品,不能简单逐行贪心导致错误报缺口。
预览、打开页面时不预占;安排提交成功时才预占。
提交时服务端重新检查余额与版本,事务内完成计划安排、所有证件占用和流水。
任一证件不满足条件,全部回滚,不产生部分安排或部分扣量。
支持并发锁和幂等,重复点击、网络重试不得重复占用。
单位一致时自动分配。
单位不一致时,由用户分别填写来源分配量和证件单位下的数量;系统不自动换算,即使吨和千克也不自动换算,不推算密度、浓度或历史系数。
无法可靠自动判断的条件,应明确提示人工确认,不能假装已经自动核验。
五、运输证多车辆共享
运输证上的多个车牌表示这些车辆可以共同使用该证总量,不是每辆车各有一份额度。
示例:
运输证总量100吨,车辆A已用20吨,车辆B预占30吨,车辆C预占10吨,则全证可安排余量为40吨。
所有登记车辆共享这40吨,未登记车辆不能使用该证。
不同车辆同时安排时,也必须控制同一份证件余额。
六、归档、释放与调整
保存每个来源产品的证件分配顺序和数量。
同单位归档按实际发生量及原分配顺序结转,不按比例平均摊分。
核心验收例子:
运输证执行完全相同的规则。
实际18吨时,第一张使用18吨、第二张使用0吨,释放未用的2吨和10吨。
实际超过预占时,超出部分重新校验并补充分配;不足时保留真实数据进入异常处理,不伪造实际量、不直接超额扣减。
多个产品共用证件时,先按各产品实际量和原分配明细处理,再按证汇总。
异单位归档须重新确认实际折算量,不自动沿用计划比例。
取消未执行计划释放占用;已有执行证据不能直接当作未用释放。
改派、改车辆、改合同、改产品或数量时,统一处理新旧占用,失败保留原占用。
重复归档不得重复核销,归档后调整按差额留痕。
同一批货装货段、送货段都有记录时,同张证不能重复累计两次。明确唯一计量来源,另一侧只用于追溯。
合同履行统计与证件用量统计分别保持正确口径。
七、彻底退出“证书齐备”
检查并替换所有相关入口,包括:
新界面展示动态结果,例如:
待绑定证件、待人工折算、额度不足、条件不匹配、可安排、已预占、已核销。
结果由后端计算,不允许用户直接修改为“通过”。
查询已安排计划时,要识别其自身已持有的占用,不能把自己的占用误报为余额不足。
旧字段可暂留用于历史审计,但不得作为新业务判断依据。
旧齐备写接口不能继续成功放行,应明确提示升级或迁移。
八、合法使用证明独立后补
用户已明确确认:
合法使用证明针对易制爆产品,独立提供界面,允许后续上传,未上传不影响运输安排。
独立界面支持:
沿用并保护现有 legal_use_cert_url 历史数据,业务名称统一为“合法使用证明”。
补传资料保留计划、产品明细ID和结算数据,不触发重新安排、额度变化或库存变化。
纯易制爆且无需两证控制的产品,不得因证明缺失或易制爆标志本身强制要求购买证、运输证额度。
混合计划中,需证产品继续执行购买证、运输证额度控制,但合法使用证明缺失不构成运输阻断。
资料待补数量与运输额度缺口分别展示,不恢复任何“齐备”开关。
九、SQL与数据一致性
以现有8表草案为基础核实完善:
保持证件总账、计划按证汇总、产品分配明细和变更流水一致。
保留来源数量与单位、证件数量与单位、分配顺序、版本、操作人及折算记录。
原始完整来源量在跨证明细中只是快照,不能重复求和。
遵循MySQL5.7、UUID主键、公共字段顺序、租户隔离、数据权限和软删除规则。
所有数量使用Decimal。
子数据差量更新,保留有效明细ID、创建信息和未提交字段;遗漏集合不变,显式清空须先校验引用。
主单、子单和关系在同一事务保存,禁止全删全增。
十、迁移与交付
历史齐备标记和图片不能推定真实额度。
切换前核实证件总量、历史已用量、在途预占及期初截止点,避免历史重复扣量。
缺少资料的记录明确进入补齐流程,不创建无限额度、不虚构使用量。
先完成有针对性的回归和隔离数据库验证,再提出切换步骤。
重点验证:
完成后说明实际修改、验证结果和未完成项。
未经验证不得声称功能已完成;不擅自执行生产迁移、部署、push或合并。
graphify已停用,不执行旧计划中的图谱更新。