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:
@@ -62,10 +62,10 @@ chore: establish development baseline
|
||||
|
||||
```bash
|
||||
git status --short --branch
|
||||
git check-ignore -v Cargo.lock CLAUDE.md
|
||||
git check-ignore -v Cargo.lock CLAUDE.md AGENTS.md CONTRIBUTING.md
|
||||
```
|
||||
|
||||
`Cargo.lock` 和 `CLAUDE.md` 必须纳入版本控制。
|
||||
`Cargo.lock`、`CLAUDE.md`、`AGENTS.md` 和 `CONTRIBUTING.md` 必须纳入版本控制。
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# 开发指南
|
||||
|
||||
本指南是本地开发流程的权威入口。贡献协作规则见 `../../CONTRIBUTING.md`,AI agent 长期规则见 `../../AGENTS.md`。
|
||||
|
||||
## 环境准备
|
||||
|
||||
### 安装依赖
|
||||
@@ -59,6 +61,14 @@ make test
|
||||
make fmt
|
||||
```
|
||||
|
||||
开发约束:
|
||||
|
||||
1. 先阅读相关文档和代码,再判断实现方式。
|
||||
2. 跨模块、架构、数据格式或用户工作流变更必须先说明设计取舍。
|
||||
3. 保持改动聚焦,不做无关重构、批量格式化或元数据 churn。
|
||||
4. 公共接口、状态文件、manifest、catalog、patch 和下载流程变更必须补充测试或 fixture。
|
||||
5. 用户可见命令、运行路径、配置、状态文件、日志或缺口状态变化时,同步更新 README、指南、架构文档或 `docs/reports/CURRENT_GAPS.md`。
|
||||
|
||||
### 3. 提交
|
||||
|
||||
```bash
|
||||
@@ -86,6 +96,10 @@ git push origin feature/your-feature-name
|
||||
|
||||
## 代码规范
|
||||
|
||||
默认使用简体中文写文档、提交说明、开发日志和面向用户的说明。代码标识符、协议字段、数据库字段、包名和命令参数保持英文命名规范。
|
||||
|
||||
禁止使用 demo、临时实现、硬编码路径或只为当前测试通过的伪实现。确实未完成的能力应写入当前缺口文档,而不是用 `TODO` 或 `FIXME` 隐藏。
|
||||
|
||||
### Go
|
||||
- 遵循 [Effective Go](https://golang.org/doc/effective_go)
|
||||
- 使用 `gofmt` 格式化
|
||||
@@ -104,16 +118,30 @@ git push origin feature/your-feature-name
|
||||
|
||||
## 测试
|
||||
|
||||
### 当前必跑测试
|
||||
### 合并前通用门禁
|
||||
|
||||
```bash
|
||||
cargo fmt --check
|
||||
cargo test --workspace
|
||||
cargo clippy --workspace --all-targets -- -D warnings
|
||||
```
|
||||
|
||||
Go CLI 尚未实现时,`go test ./...` 可能没有产品级 package 可运行;Makefile 会在空 Go 阶段清晰跳过。
|
||||
|
||||
### 常用聚焦命令
|
||||
|
||||
```bash
|
||||
cargo test -p bat-core -- --nocapture
|
||||
cargo test -p bat-adapters -- --nocapture
|
||||
cargo test -p bat-ffi -- --nocapture
|
||||
cargo test -p bat-infrastructure -- --nocapture
|
||||
cargo test -p bat-infrastructure --bin bat -- --nocapture
|
||||
cargo clippy -p bat-core -p bat-adapters -p bat-infrastructure --all-targets -- -D warnings
|
||||
```
|
||||
|
||||
Go CLI 尚未实现时,`go test ./...` 可能没有产品级 package 可运行;Makefile 会在空 Go 阶段清晰跳过。
|
||||
官方资源同步、下载、daemon、status、verify 或 repair 相关改动必须至少覆盖 `bat-infrastructure` 和 `bat` 二进制测试。
|
||||
|
||||
`bat-ffi` 只是可选无状态 C ABI 兼容层。修改 FFI 导出、JSON schema、错误返回或 `internal/ffi` CGO 包装时必须运行 `cargo test -p bat-ffi -- --nocapture`;Go CLI 和生产同步默认应通过 `bat --json` 进程边界集成。
|
||||
|
||||
### 集成测试
|
||||
|
||||
@@ -141,6 +169,8 @@ cargo run -p bat-infrastructure --bin bat -- \
|
||||
|
||||
开发环境真实下载默认写入 `./bat-resources`;如果要覆盖,必须使用 `/tmp` 或其他隔离目录,不要写入现有资源目录。
|
||||
|
||||
生产或 CI 环境不得依赖安装官方启动器。需要启动器信息时,只能分析启动器资源、官方 manifest 或公开更新数据,并将解析结果固化为可验证流程。
|
||||
|
||||
### 基准测试
|
||||
|
||||
```bash
|
||||
@@ -180,9 +210,11 @@ cargo fetch
|
||||
|
||||
先确认失败是否来自真实网络或本地资源路径。默认测试应使用 fixture/mock,不应依赖官方线上资源或开发机已有资源目录。
|
||||
|
||||
### 3. FFI 绑定问题
|
||||
### 3. FFI 兼容层问题
|
||||
|
||||
重新生成绑定:
|
||||
`bat-ffi` 不是主集成边界,只用于需要 C ABI 的兼容场景。默认 Go CLI 集成优先运行 Rust `bat --json`。
|
||||
|
||||
重新构建兼容库:
|
||||
```bash
|
||||
cd crates/bat-ffi
|
||||
cargo build
|
||||
|
||||
Reference in New Issue
Block a user