mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-07-22 04:06:44 +08:00
refactor(ffi): 降级 FFI 为可选兼容层并整理文档
将 bat-ffi 明确收敛为无状态 C ABI 兼容层,默认集成路径改为 bat --json 进程边界或未来稳定 SDK。 同步 README、当前状态、项目计划、架构文档、开发指南和缺口清单,移除 FFI 作为主集成边界的表述。 新增 AGENTS.md 和 CONTRIBUTING.md,压缩 CLAUDE.md 为兼容入口,并归档阶段性报告、同步 .gitignore 规则。
This commit is contained in:
@@ -42,7 +42,7 @@ BlueArchive Toolkit 采用 **Monorepo + 多语言混合** 架构,旨在构建
|
||||
### 3. 数据流设计
|
||||
|
||||
```
|
||||
用户请求 → CLI/API → Go 业务层 → Rust 核心/同步层 → CAS 存储 → 数据库
|
||||
用户请求 → CLI/API → Go 业务层 → bat --json / SDK → Rust 核心/同步层 → CAS 存储 → 数据库
|
||||
↓ ↓
|
||||
Web UI 缓存层 (Redis)
|
||||
```
|
||||
@@ -128,7 +128,8 @@ current symlink → official-sync-snapshot.json + official-download-manifest.jso
|
||||
**后续 Go 职责**:
|
||||
|
||||
- 提供最小稳定 CLI。
|
||||
- 包装或调用 Rust 同步入口,需要机器输出时使用 `--json` 并转发结构化 report。
|
||||
- 默认通过 `bat --json` 进程边界包装 Rust 同步入口,并转发结构化 report。
|
||||
- `bat-ffi` 仅作为可选无状态 C ABI 兼容层,不承载官方同步 daemon、下载器或 CAS handle。
|
||||
- 编排 API Server、任务队列、Provider 和用户配置。
|
||||
|
||||
---
|
||||
@@ -320,7 +321,8 @@ CREATE TABLE resource_versions (
|
||||
```
|
||||
开发机器 (本地)
|
||||
├── CLI (Go)
|
||||
├── Rust 库
|
||||
├── Rust bat 进程 / 未来 SDK
|
||||
├── 可选 bat-ffi 兼容层
|
||||
└── 连接 → 远程数据库服务器 (裸金属)
|
||||
├── PostgreSQL
|
||||
└── Redis
|
||||
|
||||
@@ -35,7 +35,7 @@ BlueArchiveToolkit 的最终目标覆盖资源同步、CAS、AssetBundle 解析
|
||||
|
||||
3. **Go 应用层**
|
||||
- 负责 CLI、资源同步、下载器、API Server、任务调度、配置、日志、Provider 编排。
|
||||
- 通过稳定 SDK、进程边界,必要时再通过 FFI 调用 Rust 引擎能力。
|
||||
- 通过稳定 SDK 或进程边界调用 Rust 能力;FFI 只作为可选兼容层。
|
||||
- 不重复实现 AssetBundle 解析、Patch 算法或 CAS 对象存储核心逻辑。
|
||||
|
||||
4. **Web 层**
|
||||
@@ -48,7 +48,7 @@ BlueArchiveToolkit 的最终目标覆盖资源同步、CAS、AssetBundle 解析
|
||||
|
||||
1. Rust 引擎 API 必须保持业务无关,不出现 CLI 命令、HTTP 状态码、Web 页面状态。
|
||||
2. Go 应用层不得复制 Rust 引擎中的 Hash、Patch、AssetBundle 核心算法。
|
||||
3. 跨边界优先级应是进程边界或稳定 SDK,其次才是 FFI;若使用 FFI,必须只暴露粗粒度批量和事务语义。
|
||||
3. 跨边界优先级应是进程边界或稳定 SDK,其次才是 FFI;若使用 FFI,必须只暴露粗粒度、无状态、一次调用一次输入输出的兼容 API。
|
||||
4. 所有跨边界错误必须能映射到统一错误码和可读诊断信息。
|
||||
|
||||
---
|
||||
@@ -63,7 +63,7 @@ BlueArchiveToolkit 的最终目标覆盖资源同步、CAS、AssetBundle 解析
|
||||
|
||||
代价:
|
||||
|
||||
1. 需要维护 FFI 或 SDK 边界。
|
||||
1. 需要维护进程、SDK 和可选 FFI 兼容边界。
|
||||
2. 错误类型、数据结构和版本兼容性需要更早设计。
|
||||
3. 集成测试必须覆盖跨语言调用,而不能只看单 crate 单元测试。
|
||||
|
||||
@@ -75,4 +75,5 @@ BlueArchiveToolkit 的最终目标覆盖资源同步、CAS、AssetBundle 解析
|
||||
|
||||
1. `crates/bat-cas-engine` 是 CAS 核心实现位置。
|
||||
2. `infrastructure` 不再复制 CAS 存储算法,只做 `bat-core::repositories::CasRepository` 适配。
|
||||
3. Go CLI 后续通过稳定边界调用 CAS,不直接操作 CAS 内部目录结构。
|
||||
3. Go CLI 后续默认通过 `bat --json` 进程边界或稳定 SDK 调用 Rust 能力,不直接操作 CAS 内部目录结构。
|
||||
4. `bat-ffi` 只能保持为可选无状态兼容层,不能承担 daemon lifecycle、下载器状态、资源锁或 CAS handle。
|
||||
|
||||
@@ -183,6 +183,12 @@
|
||||
|
||||
`OfficialUpdateService` 是当前 Rust 侧的自动更新核心,正式命令入口是 `bat`。
|
||||
|
||||
集成边界:
|
||||
|
||||
1. 当前生产和 Go CLI 默认集成路径是运行 `bat --json` 并消费结构化 report。
|
||||
2. systemd、容器或上层 Go 进程只负责守护 `bat --watch` / `bat --daemon`,不直接接管下载器内部状态。
|
||||
3. `bat-ffi` 只允许作为可选无状态 C ABI 兼容层,用于 Manifest inspect 和 sync plan 这类一次性 JSON helper;它不是官方同步 daemon、下载器、资源锁、CAS handle 或主控制面的承载位置。
|
||||
|
||||
流程是:
|
||||
|
||||
1. 显式执行 `--auto-discover` 或读取已审计 `server-info` 输入。
|
||||
|
||||
Reference in New Issue
Block a user