Files
BlueArchiveToolkit/adapters/tests/golden/real_addressables.json
T
nyaKazuhaandClaude Fable 5 8efd8f36b4 feat(addressables): 提取 m_Crc 并提供 size/CRC 校验 API(issue #2)
Addressables catalog 里的 m_Crc(bundle IEEE CRC-32)此前从未解析;
声明的 size 也只作元数据、无校验能力。本次:

- ResourceEntry 新增 crc: Option<u32>(serde default 向后兼容),
  compact 与 expanded 两种 catalog 形态均解析 m_Crc/m_Crc→crc
- core 新增 crc32_ieee(IEEE CRC-32,等价 zlib/Unity m_Crc)与
  ResourceEntry::{declared_crc, verify_downloaded_bytes}:按声明的
  size/crc 校验字节,0 视为「无 CRC」跳过
- SqliteResourceRepository 持久化 crc 列,旧库经幂等 ensure_column
  迁移补列(pragma_table_info 判断后 ALTER)
- golden 投影与 fixture 补 crc 字段,验证真实形态 catalog 提取贯通

校验 API 暂不接入 import 覆盖路径(该路径按 CAS id 重写 hash/size 是
既定语义,且合成测试的声明值不匹配实际字节);接入下载/导入校验留
待 G-011。

验证:core crc32 标准向量 + verify 分支单测、expanded 形态非零 crc
提取单测、golden 端到端;core/adapters/infrastructure 全测试 + fmt +
clippy --all-targets -D warnings 全绿。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 02:41:41 -07:00

49 lines
1.3 KiB
JSON

{
"format": "AddressablesCatalog",
"locator_id": "AddressablesMainContentCatalog",
"cdn_prefixes": [],
"resource_count": 3,
"resources": [
{
"path": "academy-_mxload-prefabs-2025-07-02_assets_all_638981069.bundle",
"hash": "hash-main",
"size": 1932872,
"resource_type": "AssetBundle",
"address": "academy-_mxload-prefabs-2025-07-02_assets_all_638981069.bundle",
"dependencies": [
"shared_assets_all_123.bundle"
],
"crc": 0
},
{
"path": "academy-_mxload-prefabs-2025-08-26_assets_all_1581352935.bundle",
"hash": "hash-second",
"size": 162134,
"resource_type": "AssetBundle",
"address": "academy-_mxload-prefabs-2025-08-26_assets_all_1581352935.bundle",
"dependencies": [],
"crc": 0
},
{
"path": "shared_assets_all_123.bundle",
"hash": "hash-shared",
"size": 153480,
"resource_type": "AssetBundle",
"address": "shared_assets_all_123.bundle",
"dependencies": [],
"crc": 0
}
],
"metadata": {
"internal_id_count": "3",
"resource_type_count": "1",
"key_object_count": "4",
"bucket_record_count": "4",
"entry_record_count": "3",
"key_data_string_len": "260",
"bucket_data_string_len": "72",
"entry_data_string_len": "120",
"extra_data_string_len": "1316"
}
}