mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-09-18 06:34:54 +08:00
fix(glossary): 绑定 QA identity 与人工 override
This commit is contained in:
@@ -89,7 +89,23 @@ bat i18n set \
|
||||
--translated-text '中文文本'
|
||||
```
|
||||
|
||||
也可以使用 `--translated-file` 读取 UTF-8 文本。需要复核单条内容时:
|
||||
也可以使用 `--translated-file` 读取 UTF-8 文本。
|
||||
如果译文触发 blocking Glossary QA,需先从 diagnose/任务结果取得当前
|
||||
`qa_identity`,并与 reviewer、reason、provenance 一起提交;系统不会根据 workbench
|
||||
中旧的 QA 自动补填:
|
||||
|
||||
```bash
|
||||
bat i18n set \
|
||||
--translation-file /tmp/bat-workbench.json \
|
||||
--translation-id <text-unit-id> \
|
||||
--translated-text '人工确认的译文' \
|
||||
--glossary-qa-identity <qa-identity> \
|
||||
--glossary-reviewer operator \
|
||||
--glossary-reason '人工确认术语偏离' \
|
||||
--glossary-provenance workbench
|
||||
```
|
||||
|
||||
需要复核单条内容时:
|
||||
|
||||
```bash
|
||||
bat i18n get \
|
||||
@@ -166,7 +182,8 @@ Glossary V1 是 Rust `bat` 持有的独立项目级 SQLite 资产,默认位于
|
||||
`BAT_GLOSSARY_PATH` 或 `[translation.worker].glossary_path` 指定。worker 只把
|
||||
`approved` term 转成 provider-neutral constraints,并在 TM 复用、provider 返回
|
||||
和人工工作台/任务回写时执行相同的确定性 QA。冲突或不符合推荐/允许译法的结果会
|
||||
阻止自动完成;必须提交带 reviewer、reason 和 provenance 的显式 override。
|
||||
阻止自动完成;必须提交带当前 `qa_identity`、reviewer、reason 和 provenance 的显式
|
||||
override。
|
||||
|
||||
常用 Glossary 操作:
|
||||
|
||||
@@ -303,7 +320,9 @@ Rust `translation.tasks` / `translation.handoff`,不在 Go 侧维护状态。
|
||||
`translation.task.update`。人工校对流程提交译文时必须使用 `status=completed`,
|
||||
并为每个 `translation_results[]` 提供 `unit_id`、`source_text` 和
|
||||
`translated_text`,Rust 会用当前 `official-textunit-index.json` 校验 unit、
|
||||
source text、destination 和 archive entry 后再落库。
|
||||
source text、destination 和 archive entry 后再落库。blocking Glossary QA 还必须提交
|
||||
与当前 QA 完全相等的 `glossary_override.qa_identity`;旧或缺少 identity 的 override
|
||||
不会授权。
|
||||
|
||||
`POST /admin/control/translation-worker-run` 会触发 Rust 侧
|
||||
`translation.worker.run`,请求字段为 `provider`、`fixture_path`、
|
||||
@@ -320,8 +339,8 @@ source text、destination 和 archive entry 后再落库。
|
||||
release,校验工作台与当前 TextUnit 索引的 source/location 一致后,写入已有支持
|
||||
范围内的 TextAsset、TypeTree string field 和 managed-reference string field
|
||||
patch。校验通过后才原子切换 `localized/current`,并在 release manifest 中记录
|
||||
源/目标 BLAKE3、字节数、patch kind、TextUnit、provider、review 和 rollback
|
||||
信息。ZIP 内 bundle 不会被静默改写。
|
||||
源/目标 BLAKE3、字节数、patch kind、TextUnit、provider、review、发布时重新计算的
|
||||
Glossary QA/override 和 rollback 信息。ZIP 内 bundle 不会被静默改写。
|
||||
|
||||
使用人工编辑的工作台发布:
|
||||
|
||||
|
||||
@@ -287,8 +287,10 @@ offset 和 error。TypeTree-covered managed reference 字段会进入结构化
|
||||
`status=completed` 时额外提交 `provider`、`provider_run_id` 和
|
||||
`translation_results[]`,每个结果必须包含 `unit_id`、`source_text` 和
|
||||
`translated_text`;结果也可以提交完整的 `glossary_override`(`reviewer`、
|
||||
`reason`、`provenance`、`confirmed_unix_seconds`),用于人工确认 Glossary
|
||||
blocking deviation。Rust 会用当前 `official-textunit-index.json` 校验 unit、
|
||||
`reason`、`provenance`、`confirmed_unix_seconds` 和当前 blocking QA 的
|
||||
`qa_identity`),用于人工确认 Glossary blocking deviation。`qa_identity` 必须与
|
||||
Rust 重新计算的当前 QA 完全相等;缺失或过期的 override 不授权。Rust 会用当前
|
||||
`official-textunit-index.json` 校验 unit、
|
||||
source text、destination 和 archive entry 后再落库。因此 worker 或人工校对流程
|
||||
消费 handoff 后,bat-api 可通过 `translation.tasks` 查询单项任务,也可通过
|
||||
`translation.handoff` 获取完整 job/unit/provider run 状态。`translation.handoff`
|
||||
@@ -326,7 +328,9 @@ Glossary 只把 `approved` term 发送为 provider constraints。worker 会在 t
|
||||
复用前、provider 返回后、人工 `translation.task.update` 和 workbench publish 前执行
|
||||
同一套确定性 QA;冲突或未使用推荐/允许译法的结果不会自动完成或发布。允许但非推荐译法
|
||||
产生 warning;blocking deviation 必须在对应结果中提交 `glossary_override`,并包含
|
||||
`reviewer`、`reason`、`provenance` 和确认时间。系统不会在译文生成后做静默字符串替换。
|
||||
`qa_identity`、`reviewer`、`reason`、`provenance` 和确认时间。Glossary 定义变化会
|
||||
只使受影响 QA 的旧 override 失效;无关术语变化不会改变该 QA identity。系统不会在
|
||||
译文生成后做静默字符串替换。
|
||||
|
||||
### localized
|
||||
|
||||
@@ -351,6 +355,9 @@ Glossary 只把 `approved` term 发送为 provider constraints。worker 会在 t
|
||||
`patch_manifest_path`、`patch_manifest_available`、
|
||||
`patch_manifest_matches_release`、`patch_file_count`、
|
||||
`patch_text_asset_operation_count` 和 `rollback_previous_current_target`。
|
||||
每个 localized patch operation 的 manifest metadata 记录发布时重新计算的
|
||||
`glossary_qa`(包括 `qa_identity`)及对应 `glossary_override`,不会复用 workbench
|
||||
中已经过期的 QA 快照。
|
||||
|
||||
### catalog
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ Rust `bat` 已提供独立项目级 SQLite TM,记录 raw source/hash、完整
|
||||
|
||||
### G-013:Glossary V1 已实现,协作视图仍缺失
|
||||
|
||||
Rust `bat` 已提供独立项目级 `glossary.sqlite`:term/alias/recommended/allowed/category/priority、全局与 TextUnit scope、source history、approved review、冲突诊断、provider-neutral constraints 和确定性 QA 均由 Rust 持有。trusted TM 复用会先经过 Glossary QA;provider、TM、人工 task/workbench 结果都记录 QA,blocking deviation 必须显式提交 reviewer/reason/provenance。`translation.glossary.*` 已通过 `bat.sock` 暴露,Go 仅提供鉴权后的 typed forwarding。剩余缺口是完整 Web 术语协作视图和更丰富的导入/搜索能力。
|
||||
Rust `bat` 已提供独立项目级 `glossary.sqlite`:term/alias/recommended/allowed/category/priority、全局与 TextUnit scope、source history、approved review、冲突诊断、provider-neutral constraints 和确定性 QA 均由 Rust 持有。trusted TM 复用会先经过 Glossary QA;provider、TM、人工 task/workbench 结果都记录 QA,blocking deviation 必须显式提交与当前 QA 精确绑定的 `qa_identity` 及 reviewer/reason/provenance。localized publish 会把发布时重算的 QA 写入 manifest。`translation.glossary.*` 已通过 `bat.sock` 暴露,Go 仅提供鉴权后的 typed forwarding。剩余缺口是完整 Web 术语协作视图和更丰富的导入/搜索能力。
|
||||
|
||||
### G-014:完整 Provider 扩展体系未实现
|
||||
|
||||
|
||||
Reference in New Issue
Block a user