Repository navigation
Commit bb09ac1
committed
feat(tasks): 后台任务手动触发(管理台「立即运行」)
POST /api/tasks/{key}/run(admin + CSRF):手动跑一轮后台任务并同步返回结果。
- 复用 TaskRunner._loop_specs():周期循环与手动触发共用一份清单,避免
「手动能跑但定时没接线」的双份维护漂移。
- 绕时点窗口(due()),不绕开关:activity 关闭时 run_once 返回 None,
如实回 ran=false,不把「关了」谎报成「跑过了」。
- 不排队:self._running 在真跑期间占 key,撞上即回 busy=true。
- 未知 / 未装配 key → 400;task_status() 改由 _loop_specs() 派生装配判断,
并新增 running 字段供前端禁用按钮。
- 前端任务卡片加「立即运行」按钮 + 三态结果文案(已跑一轮 / 没排上 / 被开关跳过)。
测试:后端 100% 覆盖(含 _run_guarded 各分支、端点鉴权与 400 路径);
前端 tsc + vitest + build 全过。1 parent 2e70ebf commit bb09ac1
13 files changed
Lines changed: 624 additions & 76 deletions
File tree
- src
- api
- tasks
- tests/tasks
- web/src
- api
- pages
- __tests__
- test-utils
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
164 | 164 | | |
165 | 165 | | |
166 | 166 | | |
167 | | - | |
| 167 | + | |
168 | 168 | | |
169 | 169 | | |
170 | 170 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
441 | 441 | | |
442 | 442 | | |
443 | 443 | | |
444 | | - | |
| 444 | + | |
445 | 445 | | |
446 | 446 | | |
447 | 447 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
406 | 406 | | |
407 | 407 | | |
408 | 408 | | |
409 | | - | |
| 409 | + | |
410 | 410 | | |
411 | 411 | | |
412 | 412 | | |
| |||
0 commit comments