@@ -427,71 +427,6 @@
|
||||
- 备选方案:16/32 位。
|
||||
- 影响:无产品行为差异。
|
||||
|
||||
### I2 / I3 / I4 2026-09-30
|
||||
|
||||
1. **服务方法可直接调用,未接 MQTT 分发**
|
||||
- 原条款:端协议帧经 broker 上行分发到 app。
|
||||
- 实际做法:`identity.App` / `presence.App` / `group.App` 实现 Service 方法;单测直接调用,不经 mochi。`cmd/nixmsg`/`wire.go` 未改。
|
||||
- 原因:任务要求可被协议分发调用的服务方法 + 直接调用验证;N3 连接事件与总控接线另波。
|
||||
- 备选方案:本分支顺带改 wire(与隔离冲突)。
|
||||
- 影响:合入后需总控/N 接线 HandleUplink → 各 Service;MQTT 帧路径未测。
|
||||
|
||||
2. **在线状态:库字段 + 可注入连接表 + 本包握手表**
|
||||
- 原条款:在线以真实连接为准;依赖 N3 连接事件。
|
||||
- 实际做法:`presence.ConnTable` 可注入;另用 `SetOnline`/`SetOffline` 维护内存表并写 `endpoints.online_since`/`offline_since`;查询优先 ConnTable,其次内存表,再回退库字段(`online_since` 晚于 `offline_since` 或后者为空)。
|
||||
- 原因:N3 可能尚未合入,不阻塞 I3。
|
||||
- 备选方案:阻塞等 N3。
|
||||
- 影响:未接线时须调用 SetOnline/SetOffline 或写库字段;拔网线心跳超时属 N 线,本波单测不覆盖。
|
||||
|
||||
3. **presence / group_event 经 Downlink QoS 0,可 nil**
|
||||
- 原条款:上下线与群事件尽力推送、不落库。
|
||||
- 实际做法:注入 `port.Downlink` 时编码帧并 `PublishDown`(presence/group_event QoS 0;退群已推送投递的 `revoked` 用 QoS 1);Downlink 为 nil 时跳过推送,业务库操作仍完成。
|
||||
- 原因:无 MQTT 时仍可测库逻辑。
|
||||
- 备选方案:强制假 Downlink。
|
||||
- 影响:接线后必须注入真实 Downlink 才有通知。
|
||||
|
||||
4. **self.logout 踢线可选**
|
||||
- 原条款:回 resp 后断开连接。
|
||||
- 实际做法:清 `session_hash`;若注入 `port.ConnControl` 则 `Disconnect`,否则仅清令牌。
|
||||
- 原因:未接 broker。
|
||||
- 备选方案:无。
|
||||
- 影响:接线方应注入 ConnControl。
|
||||
|
||||
5. **session_hash 存 SHA-256 十六进制**
|
||||
- 原条款:库中存会话令牌 SHA-256。
|
||||
- 实际做法:`hex.EncodeToString(hash)` 写入 TEXT 列。
|
||||
- 原因:文档未规定编码;十六进制便于调试与比对。
|
||||
- 备选方案:BLOB/Base64。
|
||||
- 影响:N3 校验须用同一编码。
|
||||
|
||||
6. **self.update 空 name 不写库**
|
||||
- 原条款:可更新 name。
|
||||
- 实际做法:`name` 非空才 UPDATE name;仅改 `default_delay_ms` 时不碰 name(JSON omitempty 无法区分省略与空串)。
|
||||
- 原因:避免误清空名称。
|
||||
- 备选方案:用指针字段区分。
|
||||
- 影响:端无法通过协议把名称改成空字符串(可用空格等)。
|
||||
|
||||
7. **进群密码校验不产生单聊授权**
|
||||
- 原条款:拉人须当次带密码;已有授权不能代替。
|
||||
- 实际做法:`CheckTalkPasswordForJoin` 只校验,不写 `talk_grants`。
|
||||
- 原因:与 F15「进群仍要密码」一致,避免进群副作用放宽单聊。
|
||||
- 备选方案:校验成功顺带写 password 授权。
|
||||
- 影响:仅进群成功后,单聊仍须 unlock/发送带密。
|
||||
|
||||
8. **群作废在 group 包内写 deliveries/messages**
|
||||
- 原条款:退群/踢人/解散的投递作废属 7.6,消息线亦相关。
|
||||
- 实际做法:I4 在 `group` 写操作里直接改 `pending→rejected`、`scheduled→completed/group_dissolved`,删正文行,需要时插消息级回执,已推送则经 Downlink 发 `revoked`。
|
||||
- 原因:I4 验收依赖作废规则;M 线完整推送循环可能未合入。
|
||||
- 备选方案:只调 message 钩子(接口尚未暴露)。
|
||||
- 影响:与后续 M 作废路径需保持同语义,避免重复作废。
|
||||
|
||||
9. **UnlockTalk / SelfChangeLoginPassword / CheckTalkPasswordForJoin 增加 remoteIP**
|
||||
- 原条款:锁定按发送方+对方 / 编号+IP。
|
||||
- 实际做法:Service 方法增加 `remoteIP` 参数供锁定计数;T0.4 Stub 同步改签名。
|
||||
- 原因:无 ConnInfo 的直接调用测试需要显式 IP。
|
||||
- 备选方案:塞进 context。
|
||||
- 影响:协议分发接线时从 `ConnInfo.RemoteIP` 传入。
|
||||
|
||||
## 后台接口 A
|
||||
|
||||
### A1 2026-09-30
|
||||
|
||||
Reference in New Issue
Block a user