task-116: 后台管理新增/导入表单弹窗化 + 分组管理独立菜单与UI优化 + 轻量进度端点
Build Backend JAR / build (push) Has been cancelled

- 后台管理页(admin)所有面板的新增/导入表单改为弹窗操作,原有字段 ID 全部保留、提交逻辑不变;导入删除入口不再触发二次确认拦截
- 分组管理升级为独立菜单(V102 + schema initializer),移除 5 个面板内的管理分组按钮;分组列表改为蓝白主题、增加权限分组横幅
- Python 侧 group-manage 权限守卫(_ensure_backend_menu_access 补充 group-manage)
- 引入 V101(biz_task_file_job 复合索引)+ 新增 TaskProgressLight/TaskFileJob 轻量端点与进度聚合作
- 前端 progress-light / page-separated-loads / dispatch-guard 共享模块及单元测试
This commit is contained in:
2026-09-01 12:54:13 +08:00
parent 759f0b15d8
commit fa5a59e5cd
139 changed files with 10540 additions and 8834 deletions
@@ -0,0 +1,31 @@
-- Task 116(依赖 115 审计):biz_task_file_job 增加 (module_type, job_type, task_id) 复合索引。
-- 背景:findAssembleJobsByTaskIdsprogress/light)以 module_type + job_type 等值 + task_id IN 查询,
-- 现有 idx_file_job_task (task_id, module_type) 最左前缀不匹配,导致 index merge/大范围扫描。
-- 风险:ALTER TABLE ADD INDEX 需申请元数据锁(MySQL 8 在线 DDLINSTANT/INPLACE),
-- 建议在低峰窗口(凌晨 02:00-06:00)执行;表若极大,评估 pt-online-schema-change。
-- 回滚:DROP INDEX idx_file_job_module_type_task ON biz_task_file_job(见文件末尾注释块)。
SET @db_name = DATABASE();
SET @idx_exists := (
SELECT COUNT(*)
FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = @db_name
AND TABLE_NAME = 'biz_task_file_job'
AND INDEX_NAME = 'idx_file_job_module_type_task'
);
SET @sql := IF(@idx_exists = 0,
'ALTER TABLE biz_task_file_job ADD INDEX idx_file_job_module_type_task (module_type, job_type, task_id)',
'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 验证 SQL:应返回 1 行(索引已存在)
-- SELECT COUNT(*) FROM information_schema.STATISTICS
-- WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'biz_task_file_job'
-- AND INDEX_NAME = 'idx_file_job_module_type_task';
-- 回滚(低峰执行):
-- ALTER TABLE biz_task_file_job DROP INDEX idx_file_job_module_type_task;
@@ -0,0 +1,4 @@
-- 分组管理:独立管理后台菜单项,放入「账号与权限」菜单组(sort_order 25
INSERT INTO columns (name, column_key, menu_type, route_path, sort_order)
SELECT '分组管理', 'admin_group_manage', 'admin', 'group-manage', 25
WHERE NOT EXISTS (SELECT 1 FROM columns WHERE column_key = 'admin_group_manage');