execution-log.md 3.8 KB

定时任务告警权限审计执行记录

status: complete

2026-07-20 基线

  • 用户要求继续下阶段,V6 按 定时任务告警权限审计 进入 apply。
  • 依赖 V1、V5 已完成;V5 基线为 Job 94/94、前端 16/16、Admin Reactor 42/42、前端生产构建和静态检查通过。
  • 当前最大 Flyway 版本为 V1.0.44,V6 迁移使用 V1.0.45。
  • 范围确认:首期仅站内信和邮件;只创建权限资源,不创建角色模板;不开放 Webhook。
  • 默认不启动真实 MySQL、Redis、Admin 或 Quartz 集群;真实 Flyway、消息投递、权限分配和审计查询由开发环境验收。
  • V1-V5 未提交改动与 V6 共用 Job 核心文件,本轮保留现有改动且不自动创建边界不清的提交。

2026-07-20 V6 实施完成

  • 数据库:新增 V1.0.45__add_job_alarm_permissions.sql,为 sys_job_config 增加告警开关、渠道和平台用户字段;新增 sys_job_alarm_channel 的 WEB/EMAIL 字典、13 个业务权限和 15 个 API 资源。全部使用 tenant_id=1NOT EXISTS,未写入 sys_role_resource
  • 后端:新增最终失败告警服务和管理安全服务;只有 FAILED 终态 CAS 成功后发送一次告警,WEB 使用幂等业务键,EMAIL 发送配置邮箱;消息失败只记录结构化 ERROR 与指标,不覆盖任务状态。
  • 权限:三个 Job 管理 Controller 移除 ApiPermissionIgnore + assertAdmin,按配置、启停、触发、同步、日志、导出、清理和敏感详情增加 @SaCheckPermission;BEAN/RPC、代码登记任务和敏感日志详情保留 Service 二次校验。
  • 审计:新增、编辑、删除、启停、立即执行、同步、计划更新、日志导出和清理增加安全 @OperationLog;关闭原始请求/响应保存,审计快照不含任务参数、邮箱或异常正文。
  • 前端:任务列表、日志列表和编辑器按权限裁剪操作;工作台增加 WEB/EMAIL 渠道、平台用户和邮箱配置,并在提交前归一化和校验;不展示或提交 Webhook。

2026-07-20 自动化验证

  • Java 17:mvn -Penable-tests -pl forge-framework/forge-plugin-parent/forge-plugin-job -am test,Job 模块 106/106 通过,Reactor BUILD SUCCESS。测试中预期的 Quartz shutdown 和消息失败 ERROR 来自故障分支断言,不是测试失败。
  • Node 20.19.0:V6 定向 pnpm exec eslint 无输出通过。
  • Node 20.19.0:pnpm exec vitest run src/views/system/job-config/__tests__/job-config-form.test.js src/views/system/job-config/__tests__/job-permission.test.js src/views/system/__tests__/job-log-query.test.js,3 个文件、18/18 通过。
  • Node 20.19.0:NODE_OPTIONS=--max-old-space-size=8192 pnpm build 通过,耗时约 1 分 24 秒;保留仓库既有非阻断警告。
  • Java 17:mvn -pl forge-admin-server -am package -DskipTests,42/42 模块成功,BUILD SUCCESS;首次执行因手工收窄 PATH 导致 mvn 未找到,修正为仅固定 JAVA_HOME 后通过,该失败未进入编译阶段。
  • 静态检查:两个 Job Mapper XML 通过 xmllint --noout;Flyway ${...}ApiPermissionIgnore/assertAdmin、V1.0.45 Webhook/角色模板、告警服务 Webhook 和冲突标记扫描均无输出;git diff --check 通过。
  • 生产预览:vite preview --host 127.0.0.1 --port 4173 下 HTTP 200,标题为“企业级中后台基础框架”,Vue 根节点存在且已渲染启动壳,JS/CSS 资源已加载,console/page error 均为空。后端未启动导致 networkidle=false,未验证登录后 Job 页面和真实 API。
  • 服务清理:本轮启动的 Vite preview 已停止,4173 端口无监听;未启动 MySQL、Redis、Admin、Quartz 或其它服务。
  • 环境验收项:真实 Flyway、站内信/邮件投递、角色资源分配、操作审计查询和调度集群仍由开发环境验证。