docs: 更正 M2 交接面清单,回填 spec 与交付的实际偏差(ledger R35)
This commit is contained in:
@@ -4951,5 +4951,27 @@ Expected: 三行都是 `## main...origin/main`(不带 `[ahead N]`),且每
|
||||
**M2 交接提示**(本计划不实施):
|
||||
- 厂商通讯类原样拷贝到 `com.sr.smartring` 包(保持不改);
|
||||
- 新增 `data/sdk/SdkHealthDataRepository` 与 `SdkRingDeviceRepository` 实现同名的两个接口;
|
||||
- 在 `DefaultAppContainer` 中把 Mock 换成 SDK 实现——**这是 M2 唯一需要改动的既有文件**;
|
||||
- 在 `DefaultAppContainer` 中把 Mock 换成 SDK 实现;
|
||||
- BLE 权限(`BLUETOOTH_SCAN` / `BLUETOOTH_CONNECT` / 位置)在 M2 加入清单与运行时请求。
|
||||
|
||||
> ⚠️ **更正(ledger Ruling R35,全分支终审发现)—— 本节原先写的是
|
||||
> 「在 `DefaultAppContainer` 中把 Mock 换成 SDK 实现,这是 M2 唯一需要改动的既有文件」。
|
||||
> 那句话是错的,且已被写进 `verification-m1.md` 的交接叙述里,**必须按下面这份真实清单来规划 M2**,
|
||||
> 否则会在做到一半时才发现「接口要改」,而那正是「接口不变则 UI 零改动」失效的地方。**
|
||||
|
||||
**M2 的真实改动面(经终审逐文件核验):**
|
||||
|
||||
| 文件 | 为什么必须改 |
|
||||
|---|---|
|
||||
| `domain/repository/Repositories.kt` | `RingDeviceRepository` **只有** `deviceState` / `functionSettings` / `refreshDeviceState()` / `setFunctionEnabled(id, enabled)`。**没有扫描、没有连接、没有绑定、没有地址、没有权限/可用性查询** —— spec §10 的 M2 验收是「真机扫描到戒指、连接成功、读到电量/固件」,当前接口一个都表达不了 |
|
||||
| 同上(`setFunctionEnabled`) | 签名是 `fun setFunctionEnabled(id: String, enabled: Boolean)` —— **非 `suspend`、返回 `Unit`**。写开关到戒指(协议 0502/0504)是一次**可能失败、可能超时**的 BLE 往返。M2 要么改签名(级联到 `MockRingDeviceRepository` / `DeviceViewModel` / `DeviceSettingsScreen` / `DeviceViewModelTest`),要么在 UI 上留着这个谎 |
|
||||
| `AppContainer.kt` | `DefaultAppContainer` 是**无参构造**;SDK 适配器需要 `Context` / `Application` 才能拿到 `BluetoothAdapter`,所以 `RingHealthApplication.kt` 也要改 |
|
||||
| `AndroidManifest.xml` | BLE 权限(本节最后一条自己就要求「加入清单」,与「唯一一个文件」自相矛盾) |
|
||||
| `app/build.gradle.kts` + `libs.versions.toml` + 可能 `gradle.properties` | 厂商 Java 源码要接 EventBus / Support-Library,大概率还要 `android.enableJetifier=true`(spec:206 已把这条标为已知风险) |
|
||||
| `feature/device/DeviceScreen.kt` | **当前没有任何扫描 / 连接 / 绑定 UI**,而 spec §10 的 M2 验收要求它 |
|
||||
|
||||
**结论:读取路径(健康数据)的接缝是真的做对了 —— 换实现即可;但设备控制与发现这条路径压根还没开缝。**
|
||||
`refreshDeviceState()` 目前**一个调用点都没有**,所以「读到电量/固件」在 UI 上也没有触发入口。
|
||||
|
||||
**M1 阶段不做补救性改动**(对着尚不存在的 SDK 改接口属于投机设计)。
|
||||
本条的价值在于:**下一个里程碑照着这份清单立项,而不是照着那句错话。**
|
||||
|
||||
Reference in New Issue
Block a user