✨ 打卡照片按类型最多传 9 张,照片列加宽为 text

- 节点打卡提交新增 photoItems(带显式类型),photos 原样保留供旧版小程序按下标回推
- 打卡照片是每个打卡节点必有的类型,不由过程配置决定,与各凭证类型各自最多 9 张
- 新版提交要求每个类型至少 1 张;旧版仍只要求至少 1 张,避免打断未升级的小程序
- 管理端订正只校验每类上限,不校验必填
- photos 由 varchar(2000) 改 text:36 张约 4000 字符,旧列宽约 17 张即溢出
- 基线建表脚本补 COLLATE=utf8mb4_0900_ai_ci(与本机库实际排序规则一致)
This commit is contained in:
2026-10-07 16:49:19 +08:00
parent e9156ab56b
commit 2e5eae4d32
9 changed files with 606 additions and 33 deletions
@@ -11,7 +11,7 @@ CREATE TABLE IF NOT EXISTS `blade_waybill_node_punch` (
`longitude` decimal(12, 8) DEFAULT NULL COMMENT '经度',
`latitude` decimal(12, 8) DEFAULT NULL COMMENT '纬度',
`address` varchar(500) DEFAULT NULL COMMENT '打卡地址',
`photos` varchar(2000) DEFAULT NULL COMMENT '凭证照片URL,多张逗号分隔',
`photos` text DEFAULT NULL COMMENT '照片 JSON 数组 [{type,url}],每类型至多 9 张',
`weight` varchar(32) DEFAULT NULL COMMENT '重量(吨)',
`volume` varchar(32) DEFAULT NULL COMMENT '体积(方)',
`quantity` varchar(32) DEFAULT NULL COMMENT '数量(件)',
@@ -27,4 +27,4 @@ CREATE TABLE IF NOT EXISTS `blade_waybill_node_punch` (
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_node_punch_waybill` (`waybill_id`, `node_code`, `punch_time`) USING BTREE,
KEY `idx_node_punch_driver` (`driver_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运单过程节点打卡记录';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='运单过程节点打卡记录';
@@ -0,0 +1,10 @@
-- ----------------------------
-- 节点打卡照片列加宽:varchar(2000) 改为 text
-- ----------------------------
-- 一个节点可传「打卡照片 9 张 + 每个凭证类型各 9 张」,勾了 4 类凭证时共 45 张;
-- 库里实测每张照片含类型的 JSON 串约 111 字符,36 张约 4000 字符,已超 varchar(2000) 一倍。
-- 超长时严格模式报 Data too long,非严格模式会静默截断成半个 JSON,后者更难查。
-- 内容形状不变,仍是扁平 [{"type","url"}]。可重复执行。
ALTER TABLE `blade_waybill_node_punch`
MODIFY COLUMN `photos` text DEFAULT NULL COMMENT '照片 JSON 数组 [{type,url}],每类型至多 9 张';