feat(bat): 暴露翻译任务状态控制

Refs #43
This commit is contained in:
2026-08-12 09:11:09 +08:00
parent 1933d6acb0
commit 974a6e18c3
17 changed files with 341 additions and 13 deletions
+21
View File
@@ -115,6 +115,22 @@ bat i18n publish \
当前 `i18n run` 是离线工作流:刷新 TextUnit 队列,并可用 `--translation-file` 导出工作台;不会假装调用未接入的外部 provider。
provider worker 消费 handoff 后,可以用 `i18n task update` 回写当前 release 的任务状态:
```bash
bat i18n task update \
--state-dir /tmp/bat-state \
--task-id textunit/v-current/TextAssets/Scenario.json \
--task-status failed \
--failure-reason "provider rejected payload" \
--provider-run-id provider-run-1 \
--json
```
`--task-status` 支持 Rust contract 中的 `queued``running``failed`
`completed``skipped`;命令只更新当前 release 的
`translation-tasks.sqlite`,不会创建任意翻译任务。
## 持久化调度
每个一级工作流都可以管理自己的 schedule。调度计划保存在 `--state-dir/bat-schedules.json`,计划记录包含动作、参数、下一次执行时间、周期、剩余次数、启用状态和最近错误。
@@ -170,6 +186,11 @@ contract`id`、`group`、`action`、`args`、`next_run_unix_seconds`、
`enabled``schedule.list` 额外接受 `id``group``enabled` 过滤,
`schedule.run` 额外接受 `group``force``max_runs`
翻译任务状态也可由已鉴权的 dashboard 通过
`POST /admin/control/translation-task-update` 回写,请求字段为
`task_id``status`,以及可选的 `failure_reason``provider_run_id`
该接口只转发 `translation.task.update`
## 边界
解析器新增类型覆盖和新的解析格式仍受 `docs/reports/PARSER_FREEZE.md` 约束。本次 issue 43 的例外只开放已有解析输出的手动编排、缓存刷新、工作台编辑、既有 patch 实现的重打包和独立汉化发布,不扩展 UnityFS/AssetBundle/Addressables/TypeTree 的解析类型覆盖。