✨ 新增认证记录不可变快照数据模型与迁移脚本

按 ADR-0001/0002 建立司机与车辆共用的认证记录表 blade_transport_cert_record
(biz_type 区分、载荷存 JSON、检索字段提升为真实列),并为司机/车辆表补生效快照指针。

不变式结构性保证:
- I1 同对象至多一条待审:生成列 pending_biz_id + 唯一索引,数据库层拦截;
  生成列同时排除 is_deleted,避免逻辑删除的待审记录永久占用唯一键。
- I3 快照不可变:snapshot_json 等 5 列标 FieldStrategy.NEVER,永不进入 UPDATE。
- status 承载审核状态(0审核中/1已通过/2已驳回/3已作废),新增时必须显式设置:
  框架 resolveEntity 会把 null 的 status 静默填成 1(即「已通过」),
  且继承来的 changeStatus 可直接写 status,两条通道均已封堵。

其他:司机表补身份证有效期三列并订正排序规则为 utf8mb4_general_ci
(原先为 0900_ai_ci,与车辆表 JOIN 已发生过 Illegal mix of collations);
生效快照指针加 @JsonProperty(READ_ONLY),防止以 /submit 请求体自行「认证」自己;
同步基线建表脚本与认证审核菜单/权限码。本票不含任何业务接口。
This commit is contained in:
2026-10-02 14:40:56 +08:00
parent 087f361a8b
commit 87f4c3a830
13 changed files with 852 additions and 4 deletions
+7 -1
View File
@@ -17,6 +17,9 @@ CREATE TABLE `blade_transport_driver` (
`posts` varchar(100) DEFAULT NULL COMMENT '岗位,多个使用逗号分隔',
`id_card_front` varchar(1000) DEFAULT NULL COMMENT '身份证正面照',
`id_card_back` varchar(1000) DEFAULT NULL COMMENT '身份证反面照',
`id_card_valid_start` date DEFAULT NULL COMMENT '身份证有效期起',
`id_card_valid_end` date DEFAULT NULL COMMENT '身份证有效期止',
`id_card_long_term` int(11) DEFAULT '0' COMMENT '身份证长期有效:0否 1是',
`head_photo` varchar(1000) DEFAULT NULL COMMENT '大头照',
`driving_type` varchar(20) NOT NULL COMMENT '准驾车型',
`driving_license_no` varchar(50) DEFAULT NULL COMMENT '驾驶证档案编号',
@@ -39,6 +42,9 @@ CREATE TABLE `blade_transport_driver` (
`emergency_contact_name` varchar(20) NOT NULL COMMENT '紧急联系人姓名',
`emergency_contact_mobile` varchar(20) NOT NULL COMMENT '紧急联系人手机号',
`remark` varchar(200) DEFAULT NULL COMMENT '备注',
`certification_status` int(11) DEFAULT NULL COMMENT '最新提交状态展示缓存:0审核中 1已通过 2已驳回 3已作废,NULL为从未提交',
`certification_reject_reason` varchar(200) DEFAULT NULL COMMENT '最新一次驳回原因展示缓存',
`effective_cert_record_id` bigint(20) DEFAULT NULL COMMENT '生效快照指针:指向 blade_transport_cert_record.id,NULL 表示从未认证通过;一经设置永不回退',
`create_user` bigint(20) DEFAULT NULL COMMENT '创建人',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
@@ -54,7 +60,7 @@ CREATE TABLE `blade_transport_driver` (
KEY `idx_transport_driver_license_end` (`driving_license_end_date`) USING BTREE,
KEY `idx_transport_driver_qualification_end` (`qualification_end_date`) USING BTREE,
KEY `idx_transport_driver_status` (`status`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='司机管理';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='司机管理';
-- ----------------------------
-- Records of blade_menu for transport capacity driver