docs: document Translation Memory and config contracts
bat-rust / Build and test Rust (push) Canceled after 0s
bat-rust / Build and test Go API (push) Canceled after 0s

This commit is contained in:
2026-09-06 22:52:10 +08:00
parent e373e3fd32
commit 8fc93b8f39
17 changed files with 137 additions and 77 deletions
+10 -7
View File
@@ -152,7 +152,8 @@ current symlink → official-sync-snapshot.json + official-download-manifest.jso
**Go 当前职责**
- `bat-api` 通过 `bat.sock` RPC 读取 Rust 已发布 release、manifest、snapshot 和状态。
- 提供资源 bootstrap、server-info 改写、只读 CDN path、readiness、OpenAPI 和白名单管理转发
- 提供资源 bootstrap、server-info 改写、只读 CDN path、readiness、OpenAPI 和白名单管理转发
翻译任务与 TM 管理接口只通过 Rust RPC 代理,不在 Go 侧持有状态。
- 不运行另一套同步器,不直接管理官方下载、staging、version-state、CAS 或解析状态。
完整 API、服务编排、Provider 和用户配置属于目标扩展,不能从本节推断为当前已实现。
@@ -195,12 +196,13 @@ pub struct ParserRegistry {
### 4. 翻译系统(目标扩展,Go;当前 worker 由 Rust `bat` 承担)
当前已实现的是 Rust `bat` 的离线 TextUnit 队列、mock/Crowdin provider worker、
lease/retry结果落库Translation Memory、Glossary 和完整 Provider 体系仍属
后续缺口。
lease/retry结果落库和项目级 Translation Memory V1。TM 位于独立 SQLite,按 raw
source + 完整 context 做 trusted exact reusecandidate 必须显式 confirmGlossary、
模糊匹配和完整 Provider 体系仍属后续缺口。
**架构**
```
Text Extractor → Translation Memory (查询) → AI Provider → Glossary (术语替换) → Output
Text Extractor → TM exact query → AI Provider → Glossary (后续) → Output
↓ ↓
PostgreSQL 审核队列
```
@@ -226,9 +228,10 @@ type TranslationProvider interface {
- Azure Translator Provider
**翻译记忆库**
- 精确匹配:100% 匹配直接使用
- 模糊匹配:使用相似度算法(Levenshtein Distance
- 上下文匹配:根据前后文提高匹配准确度
- 当前 V1raw source 完全相同、完整 context 完全相同且记录为 trusted 时自动复用。
- provider 输出写入先是 candidatemanual task result 不会自动建立 TM 或 trusted。`bat i18n memory confirm` 显式确认单条记录后才可自动复用。
- source、context、release、TextUnit、provider 和 run provenance 保存在 Rust TM SQLite 中。
- 模糊匹配、术语优先级和 PostgreSQL 服务化仍不是当前实现。
---
@@ -26,7 +26,7 @@
- 通过 `bat.sock` RPC 发现 Rust 已发布的 `resource_root`、snapshot、manifest
和状态;
- 提供资源 bootstrap、server-info 改写、只读 CDN path、readiness、OpenAPI
以及鉴权后的白名单管理转发;
以及鉴权后的白名单管理转发;翻译任务和 TM 管理面只转发 Rust RPC
- 不下载官方资源、不写 staging、不维护 version-state,不复制 CAS、解析器、
Patch 核心算法或同步状态机。
@@ -36,8 +36,8 @@
- 新的跨语言控制和查询能力优先增加 Rust RPC contract,再由
`internal/backendrpc` 消费。
4. **完整游戏业务 API、完整 Web 协作后台、Translation Memory、Glossary 和
Provider 扩展体系仍是后续目标**,不能从目标架构图推断为当前已实现
4. **完整游戏业务 API、完整 Web 协作后台、Glossary 和 Provider 扩展体系仍是后续目标**
Translation Memory V1 已由 Rust `bat` 持有,不能从目标架构图推断 Go 侧拥有第二份状态
---
+1 -1
View File
@@ -208,7 +208,7 @@ catalog 仍按“明确不支持”处理,不把低保真路径伪装成完整
1. 继续补充 Addressables Windows/Android 真实 catalog 样本和独立二进制格式诊断。
2. 继续补充 TypeTree 字段 reader、MonoBehaviour/ScriptableObject 遍历和真实版本差异。
3. 基于 `translation.worker.run` 推进翻译记忆和通用 manifest Patch 构建。
3. 基于 `translation.worker.run` 扩展 TM/Glossary 和通用 manifest Patch 构建。
4. 扩展翻译任务结果在 CAS/ResourceRepository 查询面的索引。
5. 在通用 Binary/JSON/Text Patch 基础上继续扩展复杂 AssetBundle 重打包和通用
Patch 发布流程统一,保留当前受支持 localized patch 发布/rollback 链路。
@@ -162,7 +162,7 @@
### 3.5 导入到 CAS 和资源仓储
官方同步下载、校验并发布 release 后,可以通过 `--import-repository`
`.env` `BAT_IMPORT_REPOSITORY=1` 自动触发 CAS + `ResourceRepository`
`config.toml` / 环境变量 `BAT_IMPORT_REPOSITORY=1` 自动触发 CAS + `ResourceRepository`
导入:
1. 读取已发布 release 下的 `official-download-manifest.json`
@@ -180,12 +180,14 @@
`available=false`,不会因为查询创建空库。发布后的 TextUnit 队列还会在当前
release 根目录写入 `translation-tasks.sqlite`,由版本化 `schema_migrations`
管理 queued/running/failed/completed/skipped、provider run、lease、失败分类、
重试计划和 TextUnit 级译文结果。`translation.tasks` 优先查询这份状态库,
重试计划和 TextUnit 级译文结果。跨 release 的 Translation Memory V1 独立存储在
`<output>/translation-memory.sqlite`,记录 raw source/hash、完整 context、candidate/
trusted 和 release/TextUnit/provider/run provenance`translation.tasks` 优先查询这份状态库,
`translation.worker.run` 由 Rust worker 回写状态;`translation.task.update` 仍供外部 provider 流程回写状态;
没有状态库的旧 release 才回退到 immutable JSON 队列。`bat doctor cas`
已提供只读 CAS 根目录、对象目录、元数据库文件和对象统计诊断;`resource.index`
已把 release、平台、bundle path 和常用数组 metadata 过滤下推到 SQLite。G-011
剩余工作是更丰富的 TextUnit 查询、翻译记忆查询和通用 Patch 发布所需资源视图。
剩余工作是更丰富的 TextUnit/TM 查询和通用 Patch 发布所需资源视图。
对应实现主要在: