From 8668411b5e95c0de4d4988f0ac3ab00607e73fac Mon Sep 17 00:00:00 2001 From: wuzilong <704541015@qq.com> Date: Sun, 1 Nov 2026 22:48:39 +0800 Subject: [PATCH] =?UTF-8?q?docs(pl):=20=E8=A1=A5=E5=85=85=E6=AE=B5?= =?UTF-8?q?=E6=AC=A1=E7=94=A8=E8=AF=81=E8=BF=81=E7=A7=BB=E9=A1=BA=E5=BA=8F?= =?UTF-8?q?=E5=8F=8A=E6=9C=AA=E6=89=A7=E8=A1=8C=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E7=9A=84=E8=BE=B9=E7=95=8C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 1 + .../2026-11-01-pl-stop-cert-views.sql | 4 +-- docs/sql/pl-stop-cert-management-guide.md | 32 +++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 docs/sql/pl-stop-cert-management-guide.md diff --git a/docs/README.md b/docs/README.md index e7efe832d..59df11e57 100644 --- a/docs/README.md +++ b/docs/README.md @@ -25,6 +25,7 @@ | [文档库说明](../doclib/需求说明.md) | 当前文档库及旧集成保留边界 | | [生产部署说明](../生产环境部署/README.md) | 发布与运维入口 | | [SQL](sql/) | 表结构、增量迁移和恢复资料,不因文档清理删除 | +| [段次用证迁移指引](sql/pl-stop-cert-management-guide.md) | 工单 #9 前置结构、新增脚本及未完成数据库验证 | | [数据迁移输入](data-migration/README.md) | 仍被迁移脚本读取的 ID 映射和初始化 SQL | | [OpenSpec](../openspec/changes/) | 正式需求、工程约束及未完成变更,保持原状态 | | [清理记录](development/repository-cleanup.md) | 删除范围、保留理由和核验结果 | diff --git a/docs/sql/migrations/2026-11-01-pl-stop-cert-views.sql b/docs/sql/migrations/2026-11-01-pl-stop-cert-views.sql index f39bda305..615fb34dc 100644 --- a/docs/sql/migrations/2026-11-01-pl-stop-cert-views.sql +++ b/docs/sql/migrations/2026-11-01-pl-stop-cert-views.sql @@ -1,4 +1,4 @@ --- 工单 #4:Web 用证管理五个视图;MySQL 5.7。保留菜单身份与授权,不恢复删除项。 +-- 工单 #9:Web 用证管理五个视图;MySQL 5.7。保留菜单身份与授权,不恢复删除项。 SET NAMES utf8mb4; START TRANSACTION; INSERT INTO sys_menu ( @@ -6,7 +6,7 @@ INSERT INTO sys_menu ( tenant_no,order_num,remark,create_by,create_dept_id,create_time,update_time,del_flag ) SELECT target.id,target.name,COALESCE(folder.id,parent.id),'C',target.path,target.component,'pl:quota-cert:list',1,'1','1', - parent.tenant_no,target.sort_no,'工单#4:按合同与证件统计;不自动授权','system','',NOW(),NOW(),0 + parent.tenant_no,target.sort_no,'工单#9:按合同与证件统计;不自动授权','system','',NOW(),NOW(),0 FROM sys_menu parent JOIN sys_menu root ON root.id=parent.parent_id AND root.tenant_no=parent.tenant_no AND root.del_flag=0 LEFT JOIN sys_menu folder ON folder.id='PL_GROUP_CERT' AND folder.parent_id=parent.id diff --git a/docs/sql/pl-stop-cert-management-guide.md b/docs/sql/pl-stop-cert-management-guide.md new file mode 100644 index 000000000..12dc4cc31 --- /dev/null +++ b/docs/sql/pl-stop-cert-management-guide.md @@ -0,0 +1,32 @@ +# 工单 #9 段次用证迁移指引 + +本指引对应 `codex/pl-stop-cert-management`。本次开发未连接业务数据库执行迁移,未启动 MySQL 容器;实际 MySQL 5.7 事务、并发和迁移演练仍待验证。 + +## 前置结构 + +沿用工单 #4 的购买证、运输证、合同适用范围、额度流水及计划用证配置。执行前核对目标库已有结构,不要重复执行含 `ALTER TABLE ADD COLUMN` 的旧脚本: + +- [原额度表迁移](2026-11-01-pl-contract-cert-quota.sql) +- [原计划用证配置](migrations/2026-11-01-pl-quota-plan-configuration.sql) +- [原用证菜单](migrations/2026-11-01-pl-quota-cert-menus.sql) + +计量版本使用已有 `pl_plan.cert_configuration` 和额度快照中的 JSON 字段,无新增计量版本列。不要把历史 JSON 缺少版本的计划批量改成 `per_stop_v2`。 + +## 本次新增脚本 + +确认目标环境、备份并核对前置结构后,按以下顺序执行: + +1. [逐段产品合法使用证明](2026-11-01-pl-stop-legal-document.sql):新增 `pl_stop_legal_document`。`IF NOT EXISTS` 只避免重复建表,不校正已有同名表结构;已有表须核对字段及唯一索引。 +2. [Web 五视图菜单](migrations/2026-11-01-pl-stop-cert-views.sql):新增合同用证、证件用量两个菜单,并调整现有菜单名称和顺序。脚本限定 `shanxia2.0` 租户的 Web 根节点,不恢复软删除菜单,不自动给角色授权;其他租户需另行确认目标与菜单 ID。 + +脚本不迁移历史计划产品附件,不重算或补扣历史额度,不修改业务单据状态。新代码启用逐段资料功能前必须具备新资料表。 + +## 执行后核对 + +- 新表字段与 `PlStopLegalDocument` 一致;唯一索引覆盖租户、计划、段类型及段产品 ID。 +- Web 菜单顺序为证件建档、合同用证、证件用量、计划段次用证、合法使用证明;既有角色权限保留。 +- 使用合成数据验证同证装货 100、送货 40/60 合计 200,购买证和运输证独立计量;历史单侧计划仍按原口径处理。 +- 一个送货段上传资料后,全局显示 1/3、对应合同显示 1/1;其他段仍待上传,历史计划级附件不计入段完成数。 +- 在 MySQL 5.7 上验证额度并发、重复提交、失败回滚和资料引用保护;SQLite 回归不能代替这些检查。 + +如果回退应用版本,保留新表和资料,不使用删表或删除业务数据作为默认回退方式。用户确认验收前,工单和上述真实数据库验证保持待完成状态。