mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-09-18 10:54:55 +08:00
docs: 校正文档分类与当前边界
This commit is contained in:
+62
-30
@@ -4,7 +4,7 @@
|
||||
|
||||
BlueArchive Toolkit 采用 **Monorepo + 多语言混合** 架构,旨在构建一个可持续维护十年以上的工业级开源项目。
|
||||
|
||||
当前文档描述目标架构和已经落地的关键边界。它不是部署手册;当前可部署能力包括 Rust 官方资源同步任务和 Go `cmd/bat-api` 资源 bootstrap/分发服务。完整游戏业务 API、Web、Provider 编排和 SDK 仍未完成,实际实现状态以根目录 `CURRENT_STATUS.md` 和 `PROJECT_PLAN.md` 为准。
|
||||
当前文档描述目标架构和已经落地的关键边界。它不是部署手册;当前可部署能力包括 Rust 官方资源同步任务和 Go `cmd/bat-api` 资源 bootstrap/分发服务。完整游戏业务 API、Web、Provider 编排和 SDK 仍未完成,实际实现状态以源码、测试和根目录 `CURRENT_STATUS.md` 为准;`PROJECT_PLAN.md` 只描述目标和路线图。
|
||||
|
||||
当前已经可用的官方资源入口包括:
|
||||
|
||||
@@ -25,9 +25,11 @@ BlueArchive Toolkit 采用 **Monorepo + 多语言混合** 架构,旨在构建
|
||||
|
||||
已接受的架构决策:
|
||||
|
||||
- `adr/0001-engine-and-application-boundaries.md`:Rust 引擎与 Go 应用层边界。
|
||||
- `adr/0001-engine-and-application-boundaries.md`:历史语言/层次边界决策;资源同步职责已由 ADR 0004 取代。
|
||||
- `adr/0002-cas-v1-design-boundary.md`:CAS V1 设计边界。
|
||||
- `adr/0003-cas-core-interface-and-error-boundary.md`:CAS 核心接口与错误边界冻结。
|
||||
- `adr/0004-rust-bat-go-bat-api-resource-boundary.md`:当前 Rust `bat` 与 Go `bat-api`
|
||||
的资源控制面边界。
|
||||
|
||||
---
|
||||
|
||||
@@ -41,16 +43,30 @@ BlueArchive Toolkit 采用 **Monorepo + 多语言混合** 架构,旨在构建
|
||||
|
||||
### 2. 语言选型
|
||||
|
||||
| 模块 | 语言 | 理由 |
|
||||
| 模块 | 语言 | 当前定位 |
|
||||
|------|------|------|
|
||||
| CLI、API Server、服务编排 | Go | 并发模型优秀、部署简单、生态成熟 |
|
||||
| 官方资源同步核心、AssetBundle 解析、Patch 引擎、CAS 引擎 | Rust | 零成本抽象、内存安全、性能和二进制处理更可靠 |
|
||||
| Web 管理后台 | Vue 3 + TypeScript | 渐进式、类型安全、生态完善 |
|
||||
| 官方资源同步与运维 CLI、同步核心 | Rust | **当前实现**;`bat` 负责生产资源和长期状态 |
|
||||
| 资源 bootstrap、只读分发和 Rust 管理入口 | Go | **当前实现**;`cmd/bat-api` 通过 `bat.sock` RPC 工作 |
|
||||
| AssetBundle 解析、Patch 引擎、CAS 引擎 | Rust | **当前已有基础,复杂覆盖仍按路线图推进** |
|
||||
| 完整 API、服务编排和 Provider | Go | **目标设计,尚未完整实现** |
|
||||
| 完整 Web 协作后台 | Vue 3 + TypeScript | **目标设计**;当前只有内嵌 dashboard MVP |
|
||||
|
||||
### 3. 数据流设计
|
||||
|
||||
当前已落地的数据流:
|
||||
|
||||
```
|
||||
用户请求 → CLI/API → Go 业务层 → bat --json / SDK → Rust 核心/同步层 → CAS 存储 → 数据库
|
||||
官方 metadata → Rust bat / daemon → release + current + manifest
|
||||
↓
|
||||
bat.sock JSON-RPC
|
||||
↓
|
||||
Go bat-api → bootstrap / CDN / dashboard
|
||||
```
|
||||
|
||||
目标扩展数据流(其中 Go 业务层、SDK、数据库和 Redis 尚未全部实现):
|
||||
|
||||
```
|
||||
用户请求 → CLI/API → Go 业务层 → bat.sock RPC / SDK → Rust 核心/同步层 → CAS 存储 → 数据库
|
||||
↓ ↓
|
||||
Web UI 缓存层 (Redis)
|
||||
```
|
||||
@@ -99,7 +115,7 @@ cas/
|
||||
|
||||
---
|
||||
|
||||
### 2. 官方资源同步器 (Rust 当前实现,Go 侧读取与编排)
|
||||
### 2. 官方资源同步器 (Rust 当前实现,Go 侧读取)
|
||||
|
||||
**职责**:从官方日服 HTTP metadata 自动发现资源入口,下载 Windows + Android 官方资源,增量检查,完整性校验,保持本地状态。
|
||||
|
||||
@@ -133,20 +149,24 @@ current symlink → official-sync-snapshot.json + official-download-manifest.jso
|
||||
- 本地文件损坏时 repair。
|
||||
- 官方 seed `.hash` 强校验;Addressables `catalog_*.hash` 作为变更 marker。
|
||||
|
||||
**后续 Go 职责**:
|
||||
**Go 当前职责**:
|
||||
|
||||
- 提供最小稳定 CLI。
|
||||
- 默认通过 `bat --json` 进程边界包装 Rust 同步入口,并转发结构化 report。
|
||||
- `bat-ffi` 仅作为可选无状态 C ABI 兼容层,不承载官方同步 daemon、下载器或 CAS handle。
|
||||
- 编排 API Server、任务队列、Provider 和用户配置。
|
||||
- `bat-api` 通过 `bat.sock` RPC 读取 Rust 已发布 release、manifest、snapshot 和状态。
|
||||
- 提供资源 bootstrap、server-info 改写、只读 CDN path、readiness、OpenAPI 和白名单管理转发。
|
||||
- 不运行另一套同步器,不直接管理官方下载、staging、version-state、CAS 或解析状态。
|
||||
|
||||
完整 API、服务编排、Provider 和用户配置属于目标扩展,不能从本节推断为当前已实现。
|
||||
|
||||
---
|
||||
|
||||
### 3. AssetBundle 解析器 (Rust)
|
||||
### 3. AssetBundle 解析器 (Rust,当前基础与目标扩展)
|
||||
|
||||
**职责**:解析 Unity AssetBundle,提取资源
|
||||
|
||||
**插件化架构**:
|
||||
以下插件注册和动态加载是目标扩展;当前实现以 `crates/bat-assetbundle`、
|
||||
`bat-adapters` 和真实 fixture 覆盖为准。
|
||||
|
||||
**目标插件化架构**:
|
||||
```rust
|
||||
pub trait AssetParser {
|
||||
fn name(&self) -> &str;
|
||||
@@ -172,7 +192,11 @@ pub struct ParserRegistry {
|
||||
|
||||
---
|
||||
|
||||
### 4. 翻译系统 (Go)
|
||||
### 4. 翻译系统 (目标设计,Go)
|
||||
|
||||
当前已实现的是 Rust `bat` 的离线 TextUnit 队列、mock/Crowdin provider worker、
|
||||
lease/retry 和结果落库;Translation Memory、Glossary 和完整 Provider 体系仍属
|
||||
后续缺口。
|
||||
|
||||
**架构**:
|
||||
```
|
||||
@@ -204,7 +228,7 @@ type TranslationProvider interface {
|
||||
|
||||
---
|
||||
|
||||
### 5. Patch 引擎 (Rust)
|
||||
### 5. Patch 引擎 (Rust,当前基础与目标扩展)
|
||||
|
||||
**职责**:生成和应用补丁
|
||||
|
||||
@@ -232,7 +256,10 @@ patch/
|
||||
|
||||
---
|
||||
|
||||
### 6. API Server (Go)
|
||||
### 6. API Server (Go,目标设计)
|
||||
|
||||
当前可用的 Go HTTP 服务是 `cmd/bat-api` 的资源 bootstrap、只读分发和 Rust 管理
|
||||
入口,不是下列完整游戏业务 API。
|
||||
|
||||
**框架**:Gin 或 Echo
|
||||
|
||||
@@ -259,7 +286,9 @@ HTTP Request → Middleware (Auth, CORS, Logger) → Handler → Service → Rep
|
||||
|
||||
---
|
||||
|
||||
### 7. Web 后台 (Vue 3)
|
||||
### 7. Web 后台 (Vue 3,目标设计)
|
||||
|
||||
当前只有 `bat-api` 内嵌 dashboard MVP;登录、角色、术语管理和完整协作审核仍未实现。
|
||||
|
||||
**技术栈**:
|
||||
- Vue 3 + Composition API
|
||||
@@ -278,7 +307,10 @@ HTTP Request → Middleware (Auth, CORS, Logger) → Handler → Service → Rep
|
||||
|
||||
---
|
||||
|
||||
## 数据库设计
|
||||
## 数据库设计(目标设计)
|
||||
|
||||
当前 Rust 资源链路使用 SQLite 维护本地 CAS、ResourceRepository 和翻译任务状态;
|
||||
PostgreSQL/Redis 业务服务端方案尚未完整落地。
|
||||
|
||||
### PostgreSQL Schema
|
||||
|
||||
@@ -322,7 +354,11 @@ CREATE TABLE resource_versions (
|
||||
|
||||
---
|
||||
|
||||
## 部署架构
|
||||
## 部署架构(目标设计)
|
||||
|
||||
当前可部署形态是 Rust `bat` 官方资源同步任务和同机/共享文件系统的 Go
|
||||
`bat-api` 资源 bootstrap/分发服务。以下多实例 API、PostgreSQL 主从和 Redis
|
||||
集群属于目标部署形态。
|
||||
|
||||
### 本地开发模式
|
||||
|
||||
@@ -350,7 +386,7 @@ API Server (多实例)
|
||||
|
||||
---
|
||||
|
||||
## 安全设计
|
||||
## 安全设计(目标设计)
|
||||
|
||||
1. **认证**:JWT Token
|
||||
2. **授权**:RBAC (Role-Based Access Control)
|
||||
@@ -361,7 +397,7 @@ API Server (多实例)
|
||||
|
||||
---
|
||||
|
||||
## 性能优化
|
||||
## 性能优化(目标设计)
|
||||
|
||||
1. **缓存策略**:
|
||||
- Redis 缓存热点数据
|
||||
@@ -380,7 +416,7 @@ API Server (多实例)
|
||||
|
||||
---
|
||||
|
||||
## 监控与日志
|
||||
## 监控与日志(目标设计)
|
||||
|
||||
- **日志**:结构化日志(JSON 格式)
|
||||
- **指标**:Prometheus + Grafana
|
||||
@@ -401,10 +437,6 @@ API Server (多实例)
|
||||
更多详细设计文档:
|
||||
|
||||
- [官方资源后端说明](./official-resource-backend.md)
|
||||
- [资源 release 布局与分发契约](./resource-release-layout.md)
|
||||
- [AssetBundle 解析与发布路线图](./assetbundle.md)
|
||||
- [API 设计](../api/README.md)
|
||||
|
||||
待创建的详细设计文档:
|
||||
|
||||
- `docs/architecture/cas.md`
|
||||
- `docs/architecture/assetbundle.md`
|
||||
- `docs/architecture/translation.md`
|
||||
|
||||
@@ -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/`
|
||||
@@ -1,9 +1,9 @@
|
||||
# AssetBundle 与资源解析路线图
|
||||
|
||||
- **更新时间**:2026-09-02
|
||||
- **更新时间**:2026-09-04
|
||||
- **适用范围**:Rust 解析引擎、官方同步后的解析缓存、CAS/ResourceRepository 接入、后续文本提取和 Patch 发布。
|
||||
- **权威关联**:`PROJECT_PLAN.md` Milestone 3/4/5/8,`docs/reports/CURRENT_GAPS.md` G-005/G-007/G-011/G-011D。
|
||||
- **维护冻结**:解析扩展遵循 [`docs/reports/PARSER_FREEZE.md`](../reports/PARSER_FREEZE.md),冻结期只接受稳定性、诊断、真实回归和文档一致性修复。
|
||||
- **开发状态**:解析扩展当前按路线图和真实回归继续推进。
|
||||
|
||||
---
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
| UnityFS container | `.bundle`、zip 内 bundle | header、block、directory、解压文件、基础摘要 | 已支持基础解包、LZ4/LZMA、alignment、大小/计数/路径/边界校验 |
|
||||
| Serialized file | UnityFS directory 文件 | header、type table、TypeTree node、object table、TextAsset bytes | 已支持基础表结构和 TextAsset bytes |
|
||||
| Unity 对象字段 | TextAsset、MonoBehaviour、ScriptableObject | 可翻译文本单元、上下文、资源定位 | TypeTree 基础字段读取、`SerializedReference` / prefixed managed-reference metadata alias、payload 提取和字符串提取已落地,真实结构覆盖继续扩大 |
|
||||
| Patch 发布 | 已翻译 TextUnit、中间格式、原版资源 | 可验证 localized patch manifest、汉化 release 目录、current/state | TextAsset、TypeTree string field 和 managed-reference string field 的 localized publish/rollback 已落地;整体 AssetBundle 重打包与通用 manifest 发布仍冻结 |
|
||||
| Patch 发布 | 已翻译 TextUnit、中间格式、原版资源 | 可验证 localized patch manifest、汉化 release 目录、current/state | TextAsset、TypeTree string field 和 managed-reference string field 的 localized publish/rollback 已落地;整体 AssetBundle 重打包与通用 manifest 发布仍未完成 |
|
||||
|
||||
---
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
当前还不能宣称完整:
|
||||
|
||||
1. TypeTree-covered managed reference 字段和 registry 记录已可结构化解码并参与文本提取,常见 registry 命名别名(含 `m_ManagedReferences`、`RefIds`、`m_RefIds`、verbose type 字段)、metadata 命名别名(含 `id`、`typeInfo`)、payload 命名别名(含 `data`、`value`、`payload`、`object`、`managedReferencePayload`、`referencePayload`、`serializedReferencePayload`、`managedReferenceValue`、`referenceValue`、`serializedReferenceValue`、`managedReferenceObject`、`referenceObject`、`serializedReferenceObject`、`managedReferenceData`、`referenceData`、`serializedData`)、full typename 拆解和 payload-only TextUnit 提取已有回归覆盖,多记录 registry 聚合也已有单元回归;fallback 字段遍历会跳过常见 registry 元数据字符串,避免误入翻译队列,并按记录前缀或子字段可推导 metadata 保留 managed-reference TextUnit context。enum `value__` backing field 和 `LayerMask` / `BitField` 的 `m_Bits` backing field 已可语义化解码和替换;`Vector2f/3f/4f`、`Quaternionf`、`ColorRGBA`、`Rectf`、`AABB/Bounds/Ray`、`Matrix4x4f`、`Vector2Int/Vector3Int`、`RectInt`、`BoundsInt`、`RangeInt`、`GUID`、`Hash128` 等固定 Unity 值类型的 leaf 和 direct child TypeTree 形态已可结构化解码和语义替换;array/vector/staticvector/List/HashSet/map 元素与 registry payload 字段已保留独立 field path、offset 和 byte size,可用于字符串元素 patch,managed-reference registry payload 字符串、enum、bit_field、unknown fixed-size raw bytes、object 字段组合和 TypeTree schema 支撑的 array/vector/List/HashSet/map 已可整体变长替换,`first/second` 与 `key/value` map entry schema 已有 serialized 和 UnityFS 重建回归,ScriptableObject `key/value` map 解析、变长替换和 UnityFS 重建已有专门回归,且嵌套 vector `Array`、`List<T>` / `HashSet<T>` 集合 alias、enum、bit_field、unknown fixed-size raw bytes 与 managed-reference payload 字段已有重建回归覆盖;解析模块当前处于维护冻结,未见样本驱动的完整 managed reference registry / map entry 变体、unknown 字段结构语义和版本差异冻结后再推进。
|
||||
1. TypeTree-covered managed reference 字段和 registry 记录已可结构化解码并参与文本提取,常见 registry 命名别名(含 `m_ManagedReferences`、`RefIds`、`m_RefIds`、verbose type 字段)、metadata 命名别名(含 `id`、`typeInfo`)、payload 命名别名(含 `data`、`value`、`payload`、`object`、`managedReferencePayload`、`referencePayload`、`serializedReferencePayload`、`managedReferenceValue`、`referenceValue`、`serializedReferenceValue`、`managedReferenceObject`、`referenceObject`、`serializedReferenceObject`、`managedReferenceData`、`referenceData`、`serializedData`)、full typename 拆解和 payload-only TextUnit 提取已有回归覆盖,多记录 registry 聚合也已有单元回归;fallback 字段遍历会跳过常见 registry 元数据字符串,避免误入翻译队列,并按记录前缀或子字段可推导 metadata 保留 managed-reference TextUnit context。enum `value__` backing field 和 `LayerMask` / `BitField` 的 `m_Bits` backing field 已可语义化解码和替换;`Vector2f/3f/4f`、`Quaternionf`、`ColorRGBA`、`Rectf`、`AABB/Bounds/Ray`、`Matrix4x4f`、`Vector2Int/Vector3Int`、`RectInt`、`BoundsInt`、`RangeInt`、`GUID`、`Hash128` 等固定 Unity 值类型的 leaf 和 direct child TypeTree 形态已可结构化解码和语义替换;array/vector/staticvector/List/HashSet/map 元素与 registry payload 字段已保留独立 field path、offset 和 byte size,可用于字符串元素 patch,managed-reference registry payload 字符串、enum、bit_field、unknown fixed-size raw bytes、object 字段组合和 TypeTree schema 支撑的 array/vector/List/HashSet/map 已可整体变长替换,`first/second` 与 `key/value` map entry schema 已有 serialized 和 UnityFS 重建回归,ScriptableObject `key/value` map 解析、变长替换和 UnityFS 重建已有专门回归,且嵌套 vector `Array`、`List<T>` / `HashSet<T>` 集合 alias、enum、bit_field、unknown fixed-size raw bytes 与 managed-reference payload 字段已有重建回归覆盖;后续仍需继续补齐真实样本驱动的完整 managed reference registry / map entry 变体、unknown 字段结构语义和版本差异。
|
||||
2. Addressables 当前目标 JSON/compact 字段链已补齐;未识别的独立二进制格式仍返回明确错误,不静默降级。
|
||||
3. 官方 release 已可配置导入 CAS + ResourceRepository,并可通过 `resource.index` 查询现有资源索引;Resource metadata 已记录 release、平台、bundle path、parse status、TextAsset 名称和 TextUnit 摘要。
|
||||
4. 不能完成复杂对象字段重打包,也不能从真实 Crowdin 结果自动生成完整汉化文件集合。
|
||||
@@ -99,7 +99,7 @@
|
||||
4. 将 Windows/Android catalog 样本拆成可复现 fixture,不把大文件纳入 Git。
|
||||
5. 对未知结构返回明确错误或保真 raw metadata,不静默丢字段。
|
||||
|
||||
本次 issue #2 交付已完成上述 JSON/compact 字段链:provider ID、bundle name、
|
||||
当前 JSON/compact 字段链已完成:provider ID、bundle name、
|
||||
primary/dependency key、resource type、hash、size 和 CRC 会进入 `ResourceEntry`,
|
||||
并通过 SQLite `ResourceRepository` 持久化;旧索引会按列迁移继续可读。独立二进制
|
||||
catalog 仍按“明确不支持”处理,不把低保真路径伪装成完整解析。
|
||||
@@ -202,12 +202,13 @@ catalog 仍按“明确不支持”处理,不把低保真路径伪装成完整
|
||||
|
||||
---
|
||||
|
||||
## 7. 近期关闭路径
|
||||
## 7. 后续推进路径
|
||||
|
||||
优先顺序:
|
||||
|
||||
1. 完成 Addressables Windows/Android 当前版本 catalog 样本集合,关闭 G-007 当前阶段。
|
||||
2. 完成 TypeTree 字段 reader 和 MonoBehaviour/ScriptableObject 遍历,推进 G-005。
|
||||
1. 继续补充 Addressables Windows/Android 真实 catalog 样本和独立二进制格式诊断。
|
||||
2. 继续补充 TypeTree 字段 reader、MonoBehaviour/ScriptableObject 遍历和真实版本差异。
|
||||
3. 基于 `translation.worker.run` 推进翻译记忆和通用 manifest Patch 构建。
|
||||
4. 扩展翻译任务结果在 CAS/ResourceRepository 查询面的索引,推进 G-011。
|
||||
5. 在通用 Binary/JSON/Text Patch 基础上继续扩展复杂 AssetBundle 重打包和通用 Patch 发布流程统一,保留当前受支持 localized patch 发布/rollback 链路。
|
||||
4. 扩展翻译任务结果在 CAS/ResourceRepository 查询面的索引。
|
||||
5. 在通用 Binary/JSON/Text Patch 基础上继续扩展复杂 AssetBundle 重打包和通用
|
||||
Patch 发布流程统一,保留当前受支持 localized patch 发布/rollback 链路。
|
||||
|
||||
@@ -219,7 +219,9 @@ release 根目录写入 `translation-tasks.sqlite`,由版本化 `schema_migrat
|
||||
|
||||
集成边界:
|
||||
|
||||
1. 当前生产集成路径是 Rust `bat --watch` / `bat --daemon` 持久运行;Go `bat-api` 应优先通过 `internal/backendrpc` 调用 daemon RPC,one-shot/fallback 场景才运行 `bat --json` 并消费结构化 report。
|
||||
1. 当前生产集成路径是 Rust `bat --watch` / `bat --daemon` 持久运行;Go `bat-api`
|
||||
通过 `internal/backendrpc` 调用 daemon RPC,读取已发布 release 和状态,不运行
|
||||
另一套同步器。`bat --json` 只表示 Rust CLI 的机器输出形态。
|
||||
2. systemd、容器或上层 Go 进程只负责守护 `bat --watch` / `bat --daemon`,不直接接管下载器内部状态。
|
||||
3. `bat-ffi` 只允许作为可选无状态 C ABI 兼容层,用于 Manifest inspect 和 sync plan 这类一次性 JSON helper;它不是官方同步 daemon、下载器、资源锁、CAS handle 或主控制面的承载位置。
|
||||
|
||||
@@ -356,7 +358,7 @@ JSON-RPC 2.0 服务,是面向上层服务(Go 层)的**主要跨语言边
|
||||
- Go 层负责:资源 bootstrap、资源内容分发(`cmd/bat-api`)、HTTP API 进程配置、
|
||||
以及通过 `internal/backendrpc` 作为 RPC client 调用本机 daemon(连接
|
||||
`bat.sock`,每行一个 JSON-RPC 请求/响应)。`cmd/bat` 仍是试验骨架,不是产品级用户 CLI。
|
||||
- **`bat-api`(资源分发,issue #19)**:
|
||||
- **`bat-api`(资源分发)**:
|
||||
- 提供 `/v1/bootstrap`,把 `bat` 的 RPC 健康、release 摘要、server-info URL、
|
||||
client-patch base 和改写后的 Addressables root 组织成启动前资源发现响应。
|
||||
- 提供 `/healthz` 作为 liveness + 最近一次 RPC refresh 诊断,提供 `/readyz`
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 官方资源 Release 布局与资源侧契约
|
||||
|
||||
- **更新时间**:2026-09-02
|
||||
- **更新时间**:2026-09-04
|
||||
- **用途**:冻结日服官方资源在本地发布根上的布局、URL 映射、seed 规则、`bat`/`bat-api` 关系,以及 `bat-api` 分发 path 的 1:1 对应关系。
|
||||
- **范围**:资源发现 / 清单 / 落盘 / 只读分发(**不是**完整游戏业务 API)。
|
||||
- **权威代码**:
|
||||
@@ -319,18 +319,18 @@ Addressables 改写后客户端拼接:
|
||||
|
||||
---
|
||||
|
||||
## 9. issue #2 / #3 样本索引(R4/R5 预置)
|
||||
## 9. 真实资源样本索引
|
||||
|
||||
在服务器 release 上优先采集到 `/tmp` 隔离目录(**不入库大文件**):
|
||||
|
||||
| 用途 | 建议路径模式 |
|
||||
|---|---|
|
||||
| Addressables(#2) | `{PatchDir}/catalog_*.zip` 解压后的 JSON/bin + 旁路 `.hash` |
|
||||
| UnityFS(#3) | `FullPatch_*.zip` 内抽样 `.bundle`,或已解包 bundle |
|
||||
| Addressables | `{PatchDir}/catalog_*.zip` 解压后的 JSON/bin + 旁路 `.hash` |
|
||||
| UnityFS | `FullPatch_*.zip` 内抽样 `.bundle`,或已解包 bundle |
|
||||
| seed 加固(R2) | 各平台 `TableCatalog` / `BundlePackingInfo` / `MediaCatalog` 的 `.bytes`+`.hash` |
|
||||
|
||||
字段目标(#2,已有 `m_Crc` 部分):继续扩大 hash/size/CRC/依赖等可校验字段覆盖。
|
||||
结构目标(#3):header / block / directory / metadata / object table 引擎级解析。
|
||||
字段目标(已有 `m_Crc` 部分):继续扩大 hash/size/CRC/依赖等可校验字段覆盖。
|
||||
结构目标:header / block / directory / metadata / object table 引擎级解析。
|
||||
|
||||
---
|
||||
|
||||
@@ -360,7 +360,7 @@ bat.sock 或 state-dir: ...
|
||||
- `docs/architecture/official-resource-backend.md` — 拉取后端总览
|
||||
- `docs/reference/rpc-backend-api.md` — RPC 契约
|
||||
- `docs/guides/official-resource-test-pull.md` — 用户向运行说明
|
||||
- `docs/reports/CURRENT_GAPS.md` — G-009 / #2 / #3
|
||||
- `docs/reports/CURRENT_GAPS.md` — G-005 / G-007 / G-009
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user