mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-09-18 11:56:23 +08:00
docs: 校正文档分类与当前边界
This commit is contained in:
@@ -1,11 +1,17 @@
|
||||
# ADR 0001: Rust 引擎与 Go 应用层边界
|
||||
|
||||
**状态**:已接受
|
||||
**状态**:已接受(历史决策;资源同步职责已由 ADR 0004 取代)
|
||||
**日期**:2026-06-28
|
||||
**关联计划**:`../../../PROJECT_PLAN.md`
|
||||
|
||||
---
|
||||
|
||||
> 历史说明:本文保留 2026-06-28 的原始语言和层次决策。其关于 Go 负责资源同步、
|
||||
> 下载器和任务调度的职责描述已被当前实现和 ADR 0004 取代;阅读当前资源边界时,
|
||||
> 以 ADR 0004、`CURRENT_STATUS.md` 和 `docs/reports/GO_STATUS.md` 为准。
|
||||
|
||||
---
|
||||
|
||||
## 背景
|
||||
|
||||
BlueArchiveToolkit 的最终目标覆盖资源同步、CAS、AssetBundle 解析、文本提取、翻译、Patch、CLI、API Server、Web 和 SDK。项目天然包含二进制解析、文件完整性、网络同步、任务编排、数据库、用户界面等不同类型的问题。
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
# ADR 0004: Rust bat 与 Go bat-api 当前资源控制面边界
|
||||
|
||||
**状态**:已接受
|
||||
**日期**:2026-09-04
|
||||
**关联文档**:`../../../CURRENT_STATUS.md`、`../../../docs/reports/GO_STATUS.md`
|
||||
|
||||
---
|
||||
|
||||
## 背景
|
||||
|
||||
项目同时包含 Rust 资源引擎和 Go HTTP 服务。历史设计曾把资源同步、下载器
|
||||
和任务调度归入 Go 应用层,但当前实现已经由 Rust `bat` 统一持有这些长期状态。
|
||||
如果继续沿用旧职责描述,会让 Go、Web 或其他入口重复实现资源状态机。
|
||||
|
||||
---
|
||||
|
||||
## 决策
|
||||
|
||||
1. **Rust `bat` 是官方资源生产者和状态拥有者**:
|
||||
- 负责官方 metadata 发现、下载、校验、staging、release 发布和 `current` 切换;
|
||||
- 负责 watch/daemon、`bat.sock` JSON-RPC、任务、日志、版本状态、解析、
|
||||
翻译 worker 和 localized release 状态;
|
||||
- 负责 CAS、AssetBundle 解析、Patch 核心算法及其文件安全边界。
|
||||
|
||||
2. **Go `bat-api` 是资源读侧和管理入口**:
|
||||
- 通过 `bat.sock` RPC 发现 Rust 已发布的 `resource_root`、snapshot、manifest
|
||||
和状态;
|
||||
- 提供资源 bootstrap、server-info 改写、只读 CDN path、readiness、OpenAPI
|
||||
以及鉴权后的白名单管理转发;
|
||||
- 不下载官方资源、不写 staging、不维护 version-state,不复制 CAS、解析器、
|
||||
Patch 核心算法或同步状态机。
|
||||
|
||||
3. **Go `cmd/bat` 和 `bat-ffi` 不是主集成边界**:
|
||||
- `cmd/bat` 只保留试验 CLI;
|
||||
- `bat-ffi` 只保留无状态、粗粒度、一次调用一次输入输出的兼容 helper;
|
||||
- 新的跨语言控制和查询能力优先增加 Rust RPC contract,再由
|
||||
`internal/backendrpc` 消费。
|
||||
|
||||
4. **完整游戏业务 API、完整 Web 协作后台、Translation Memory、Glossary 和
|
||||
Provider 扩展体系仍是后续目标**,不能从目标架构图推断为当前已实现。
|
||||
|
||||
---
|
||||
|
||||
## 后果
|
||||
|
||||
- 资源同步只有一个长期状态拥有者,`bat-api` 可以安全地横向扩展为只读服务。
|
||||
- Rust RPC、release layout、manifest 和 `status/status_code` 成为跨语言稳定契约。
|
||||
- Go 侧新增控制接口必须经过白名单和 RPC schema 复核。
|
||||
- 完整业务 API 和协作后台未来落地时,仍需遵守 Rust `bat` 对资源状态的所有权。
|
||||
|
||||
---
|
||||
|
||||
## 当前验证依据
|
||||
|
||||
- `infrastructure/src/bin/bat/`
|
||||
- `infrastructure/src/official_update.rs`
|
||||
- `internal/backendrpc/`
|
||||
- `cmd/bat-api/`
|
||||
- `docs/reference/rpc-backend-api.md`
|
||||
- `internal/api/testdata/contract/`
|
||||
Reference in New Issue
Block a user