feat(bat): 补全工作流命令与人工校对状态
bat-rust / Build and test Rust (push) Canceled after 0s
bat-rust / Build and test Go API (push) Canceled after 0s

Refs #43
This commit is contained in:
2026-08-19 21:33:33 +08:00
parent 550ee7fd9a
commit 72c1a879a3
21 changed files with 797 additions and 41 deletions
+24 -2
View File
@@ -6,7 +6,7 @@ Rust `bat` 的工作流入口按三个一级命令组织:
- `parse`:当前官方 release 的解析和 UnityFS 重打包。
- `i18n`:离线翻译工作台、人工文本修改和汉化 release 发布。
`resource``resources``translation``translate` 仍作为长别名接受,但文档示例统一使用 `res``i18n`
`resource``resources``translation``translate` 仍作为长别名接受,但文档示例统一使用 `res``i18n`;例如 `resource status``resource schedule``translation tasks``translation handoff``translation status` 都会落到同一组已实现命令
## 资源拉取
@@ -106,7 +106,8 @@ bat i18n unset \
--translation-id <text-unit-id>
```
这些工作台操作也可以写成 `bat i18n workbench set|get|unset|validate ...`
这些工作台操作也可以写成 `bat i18n workbench set|get|unset|validate ...`
`--translation-file` 也可简写为 `--workbench`
工作台会保存 source text、release ID、TextUnit 目标和人工译文;发布前会重新读取当前
TextUnit 索引,拒绝过期 release、source text 或 patch 目标。
@@ -149,10 +150,27 @@ bat i18n task update \
`--task-status` 支持 Rust contract 中的 `queued``running``failed`
`completed``skipped`;命令只更新当前 release 的
`translation-tasks.sqlite`,不会创建任意翻译任务。
任务查询和交接查询可以用 `bat i18n tasks` / `bat i18n handoff`
汉化发布状态可以用 `bat i18n status`。这些只读入口也可以写成
`bat translation tasks|handoff|status`,其中 `translation` / `translate`
是一级命令长别名。
需要把当前汉化 workflow 切到人工校对中时,可用:
```bash
bat i18n proofread \
--output /tmp/bat-resources \
--localized-output /tmp/bat-localized
```
该命令只改写 `localized-version-state.json` 中的工作流标记,不会改动已发布的
汉化 release 指针;如果自动汉化已经发布,后续仍可继续正常发布汉化资源。
## 持久化调度
每个一级工作流都可以管理自己的 schedule。调度计划保存在 `--state-dir/bat-schedules.json`,计划记录包含动作、参数、下一次执行时间、周期、剩余次数、启用状态和最近错误。
`parse schedule``res schedule` / `i18n schedule` 共用同一份计划库,
`--id` / `--action` 分别是 `--schedule-id` / `--schedule-action` 的简写。
新增一个每天执行的资源拉取计划:
@@ -175,6 +193,7 @@ bat res schedule list --state-dir /tmp/bat-schedule
bat res schedule update --state-dir /tmp/bat-schedule --schedule-id daily-pull --schedule-every 12h
bat res schedule remove --state-dir /tmp/bat-schedule --schedule-id daily-pull
bat res schedule run --state-dir /tmp/bat-schedule
bat parse schedule list --state-dir /tmp/bat-schedule
```
`parse schedule add` 默认动作是 `run``i18n schedule add` 默认动作也是 `run`;可以用 `--schedule-action repack``--schedule-action publish` 选择对应动作。`--schedule-count` 限定执行次数,省略表示周期无限执行;没有 `--schedule-every` 的计划执行一次后自动停用。
@@ -210,6 +229,9 @@ contract`id`、`group`、`action`、`args`、`next_run_unix_seconds`、
`task_id``status`,以及可选的 `failure_reason``provider_run_id`
该接口只转发 `translation.task.update`
`POST /admin/control/translation-proofread` 会把当前汉化 workflow 标记为人工校对中;
该接口只转发 `translation.proofread`,不会改动已发布汉化 release 指针。
## 边界
解析器新增类型覆盖和新的解析格式仍受 `docs/reports/PARSER_FREEZE.md` 约束。本次 issue 43 的例外只开放已有解析输出的手动编排、缓存刷新、工作台编辑、既有 patch 实现的重打包和独立汉化发布,不扩展 UnityFS/AssetBundle/Addressables/TypeTree 的解析类型覆盖。
+4 -1
View File
@@ -273,7 +273,10 @@ worker 状态、parse status、TextUnit format、队列 reason 和 provider fail
`resource-index` 返回的资源 JSON 包含 release、平台、bundle path、TextAsset 和 TextUnit metadata
并可按 release、平台、destination、bundle path、archive entry、parse status 和 TextUnit format 做资源级过滤;
`localized-status` 只有在 `localized-version-state.json``current` symlink 和
`localized-patch-manifest.json` 都匹配当前官方 release 时才返回 `localized`
`localized-patch-manifest.json` 都匹配当前官方 release 时才返回 `localized`
当 workflow 被 `translation.proofread` 标记为人工校对中时,会额外返回
`translation_workflow_status=manual_proofreading`
`translation_workflow_status_code=translation.manual_proofreading`,但不会遮蔽已发布的汉化 release。
文件级写入命令只处理显式输入/输出文件,不切换官方或汉化 release: