feat: add official resource sync pipeline

Add the production-facing official update service and bat-official-sync watch CLI for unattended resource synchronization.

Support launcher-resource discovery without installing the launcher, remote marker snapshots, local manifest audit and repair, official seed hash validation, bootstrap caching, richer Addressables coverage, SQLite resource persistence, and FFI JSON helpers.
This commit is contained in:
2026-07-05 23:49:56 +08:00
parent 99e66a48d7
commit 789402c887
35 changed files with 6262 additions and 177 deletions
+11 -7
View File
@@ -15,7 +15,7 @@ BlueArchiveToolkit 不是一次性脚本,也不是演示项目。最终交付
2. **Rust 核心引擎**:负责 CAS、AssetBundle 解析、Patch、二进制安全处理和性能敏感逻辑。
3. **Go 服务层**:负责 CLI 编排、资源同步、下载器、API Server、任务调度和外部集成。
4. **Web 管理后台**:负责翻译审核、术语管理、全文搜索、历史版本、Diff 和 Dashboard。
5. **SDK/API**:提供稳定的 Go SDK、FFI 边界和 REST/OpenAPI 接口,方便其他工具复用。
5. **SDK/API**:提供稳定的 Go SDK、进程边界或必要时的 FFI 边界和 REST/OpenAPI 接口,方便其他工具复用。
6. **插件系统**:允许新增解析器、翻译 Provider、存储后端、Patch 算法,而不修改核心代码。
---
@@ -62,7 +62,7 @@ BlueArchiveToolkit 不是一次性脚本,也不是演示项目。最终交付
### 3.2 技术决策
1. **Rust**:保留为核心引擎语言,用于 CAS、AssetBundle、Patch、FFI
1. **Rust**:保留为核心引擎语言,用于 CAS、AssetBundle、Patch、完整资源拉取和更新检查核心逻辑,FFI 仅作为可选边界
2. **Go**:用于 CLI、同步器、API Server、任务编排、Provider 集成。
3. **PostgreSQL**:作为服务端主数据库,承载翻译记忆库、术语库、任务、审核和用户权限。
4. **SQLite**:仅作为本地 CLI 可选元数据后端,必须通过仓储抽象隔离,不能绑定业务逻辑。
@@ -133,7 +133,7 @@ BlueArchiveToolkit 不是一次性脚本,也不是演示项目。最终交付
**目标**:完成可长期使用的 Content Addressable Storage。
**当前状态**:已完成 CAS V1。FFI/Go 更高层调用边界将在 CLI/SDK 阶段继续扩展
**当前状态**:已完成 CAS V1。Go CLI 以最小稳定入口优先,Rust 继续承载完整资源拉取与更新检查核心逻辑;FFI 边界保持可选
交付物:
@@ -142,7 +142,7 @@ BlueArchiveToolkit 不是一次性脚本,也不是演示项目。最终交付
3. 实现引用计数、对象元数据、完整性校验、GC、统计信息。
4. 实现本地元数据后端:优先 SQLite,但必须隔离在 repository adapter 中。
5. 编写迁移、恢复、损坏检测和 `doctor cas`
6. 提供 FFI/Go 调用边界。
6. 提供稳定的 Go 调用边界,优先进程或 SDK,必要时再补 FFI
验收标准:
@@ -165,6 +165,8 @@ BlueArchiveToolkit 不是一次性脚本,也不是演示项目。最终交付
3. 实现 Go 下载器:并发、断点续传、限速、重试、校验、缓存。
4. 实现 `sync``manifest inspect``cache status`
5. 将下载结果写入 CAS,并写入 Resource Repository。
6. Linux 生产同步支持显式 `--auto-discover` 或已审计 metadata snapshot,不依赖已安装官方启动器。
7. 实现自动更新检查:保存上次官方 snapshot,定期 discovery,对比变化后按需拉取。
验收标准:
@@ -172,6 +174,8 @@ BlueArchiveToolkit 不是一次性脚本,也不是演示项目。最终交付
2. 断点续传和失败重试有可重复测试。
3. Manifest 解析失败时给出可定位的字段和偏移信息。
4. 同一资源跨版本复用同一 CAS 对象。
5. 生产同步入口必须显式选择 `--auto-discover` 或显式提供官方 `server-info` URL、`connection-group``app-version`,不得隐式启动 launcher/bootstrap 链路。
6. 自动更新入口必须做到无变化不下载,有变化下载成功后才写入新 snapshot。
---
@@ -394,9 +398,9 @@ BlueArchiveToolkit 不是一次性脚本,也不是演示项目。最终交付
处理策略:
1. Rust 提供稳定引擎能力,不承担 CLI 编排。
2. Go 负责用户命令、服务编排、网络和 Provider。
3. FFI 只暴露粗粒度、安全、可测试 API。
1. Rust 提供稳定引擎能力,不承担 CLI 编排,但负责完整资源拉取和更新检查的核心逻辑
2. Go 负责用户命令、最小稳定 CLI、服务编排、网络和 Provider。
3. 跨边界优先进程或 SDK,FFI 只作为可选的粗粒度、安全、可测试 API。
### 过早做 Web