42 lines
1.9 KiB
SQL
42 lines
1.9 KiB
SQL
-- =============================================================================
|
||
-- 刷脸照片保留期(最多 1 个月)+ 定期清理任务登记
|
||
-- 清理范围:apt_tablet_face_photo 中 COALESCE(uploaded_at, captured_at, create_time)
|
||
-- 早于 now - retentionDays 的记录:先删文件,再物理删记录。
|
||
-- 保留天数由 apt.photo.retention-days 控制(默认 30,上限按业务 1 个月)。
|
||
-- 任务:aptPhotoPurgeTask.purge(),建议每天 03:30(避开叫乘高峰)。
|
||
-- 幂等:sys_job 按 invoke_target 判重,可重复执行。
|
||
-- =============================================================================
|
||
SET NAMES utf8mb4;
|
||
|
||
INSERT INTO sys_job
|
||
(job_name, job_group, invoke_target, cron_expression,
|
||
misfire_policy, concurrent, status, create_by, create_time, remark)
|
||
SELECT '刷脸照片过期清理(保留 30 天)',
|
||
'SYSTEM',
|
||
'aptPhotoPurgeTask.purge()',
|
||
'0 30 3 * * ?',
|
||
'1',
|
||
1,
|
||
'1',
|
||
'IT-5',
|
||
NOW(3),
|
||
'每天 03:30 清理超过 apt.photo.retention-days(默认 30 天)的照片文件与记录'
|
||
FROM DUAL
|
||
WHERE NOT EXISTS (
|
||
SELECT 1 FROM sys_job WHERE invoke_target = 'aptPhotoPurgeTask.purge()'
|
||
);
|
||
|
||
-- -----------------------------------------------------------------------------
|
||
-- 校验
|
||
-- -----------------------------------------------------------------------------
|
||
SELECT '=== 44. 清理任务登记(应 1 行,status=1)===' AS section;
|
||
SELECT job_id, job_name, invoke_target, cron_expression, status
|
||
FROM sys_job
|
||
WHERE invoke_target = 'aptPhotoPurgeTask.purge()';
|
||
|
||
SELECT '=== 45. 当前照片记录与最老时间 ===' AS section;
|
||
SELECT COUNT(*) AS photos,
|
||
MIN(COALESCE(uploaded_at, captured_at, create_time)) AS oldest_at,
|
||
SUM(COALESCE(uploaded_at, captured_at, create_time) < DATE_SUB(NOW(3), INTERVAL 30 DAY)) AS expired
|
||
FROM apt_tablet_face_photo;
|