status: complete created: 2026-07-19 complexity: 🔴复杂 parent: code-copilot/changes/定时任务优化/spec.md version: V8 dependency: 定时任务可靠性加固、定时任务并发重试治理 ui-baseline: code-copilot/changes/定时任务优化/ui-reference.md
允许受信任外部系统使用独立服务账号 Token 查询允许访问的任务、触发执行并查询执行状态,不暴露内部 Handler 协议。
/openapi/v1/jobs/** 和 /openapi/v1/executions/**,与管理接口和 /job/executor/execute 完全隔离。jobs:read、jobs:trigger、executions:read。Idempotency-Key,同一 Token、任务和 Key 在 24 小时内返回同一执行 ID。| 表 | 作用 |
|---|---|
| sys_job_api_token | Token HMAC Hash、Scope、JSON 资源范围、状态、过期和吊销信息 |
| sys_job_api_idempotency | Token、任务、幂等键 Hash、执行 ID 和过期时间 |
表必须包含 Forge 标准审计字段、tenant_id(默认租户数据为 1)、逻辑删除字段和必要唯一索引。明文 Token 和原始幂等键禁止落库和日志。
开放触发先创建状态为“已接受”的 sys_job_log 记录,再把执行 ID 透传给 Quartz;Quartz 启动后把同一记录推进到运行中和终态,不另建第二套执行日志。
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /openapi/v1/jobs | 查询 Token 有权访问的任务 |
| GET | /openapi/v1/jobs/{id} | 查询任务摘要 |
| POST | /openapi/v1/jobs/{id}/executions | 幂等触发任务 |
| GET | /openapi/v1/executions/{id} | 查询执行状态 |
管理端另提供 Token 创建、列表、吊销和轮换接口,均需要独立资源权限和操作审计。
executorBean、executorHandler、executorService、任务参数、结果正文或异常正文。fja_<keyId>_<secret>,随机部分使用 SecureRandom 和 URL-safe Base64;Hash 使用 HmacSHA256 与独立 Pepper。Idempotency-Key 只接受 8-128 位字母、数字及 ._:-,数据库和 Redis 均只使用其 SHA-256 Hash。137/137、前端全量 463/463、Admin Reactor 42/42 通过。git diff --check 静态检查通过。7/7、目标 ESLint 和前端生产构建通过,生成命令已确认包含 Bearer Token 与 Idempotency-Key。Idempotency-Key,查询示例保留任务 ID、执行 ID 占位符。