Seetong · Report
🎯 Seetong 问题雷达 17:00 第98期
时间窗口:2026-08-07 09:00 ~ 17:00
TL;DR 核心要点
- 🔴 登录失效频繁重新登录(v8.0.2.2,严重度 65/100,置信度 中)——isDelToken 机制导致旧设备被服务端强制登出;本质是安全设计但用户教育不足。
- 🟠 设备掉线(3条反馈,WebSocket 反复 EOF 断开),与 -102 网络问题高度重叠,持续观察。
- 现象:用户反馈"登录这个账号为啥几天就得从新登录呢"(v8.0.2.2,Android OPPO),即使用户手机网络正常、账号密码未改,仍被强制登出要求重新登录。
最近一个月 Top 问题
按严重度与复发期数排序,已把跨期同类反馈归集;负责人由问题代码锚点对应的 Git 提交历史(blame / 近期主要提交者)反查;数据窗口:最近 30 天(截至 2026-08-07)。
| # | 问题(严重度降序) | 严重度 | 平台 | 版本 | 负责人 | 问题原因 |
|---|---|---|---|---|---|---|
| 1 | Harmony 1.1.1.6 多用户"离线/看不到监控"聚集(严重度 90/100,置信度 弱) 1 期 | 90 | Android · iOS | 1.1.0.9 / 1.1.1.6 | 待定 | 可能为 Harmony 1.1.1.6 客户端连接信令或 P2P SDK 与 HUAWEI 设备兼容性偶发问题;需补 Logan 才能确认 |
| 2 | HarmonyOS 1.1.1.6 看不到回放 / 回放卡顿 3 期 | 80 | Android · HarmonyOS | 1.1.1.6 / 1.1.6 | 张威、唐胜、许源、谭伟 | HarmonyOS 1.1.1.6 用户在 5+ 省、3 款 HUAWEI 机型上持续报"看不到回放 / 回放卡顿",已累计 4 期观测(8/1 H09 / 8/3 H17 / 8/4 H17 / 8/5 H09),疑似 1.1.1.6 版本云回放链路(P2P 协商 / RTSP 拉流 / KMP 播放器初始化)某分支与 HarmonyOS 系统调度兼容性问题 |
| 3 | 4G摄像机画面卡顿 / 回放卡顿 1 期 | 70 | Android · HarmonyOS · iOS | 8.3.13.3 / 8.3.14.2 | 待定 | 4G摄像机默认走RELAY转发(占71-72%),在4G信号弱(wifiSignal 2-4)时,RELAY转发带宽不足导致H265+视频流卡顿;P2P直连在4G场景下多数失败(connect=-1) |
| 4 | 在线看不到 1 期 | 70 | Android | 8.3.13.3 | 张威、唐胜 | NVR 通道预览链路在握手后立即被底层判为 PeerOffLine,APP 按现有逻辑只做快速重试,没有把通道离线与临时连接抖动区分开,最终表现为“在线看不到”。 |
| 5 | 多端手机端无回放 1 期 | 70 | Android | 1.1.1.6 / 8.3.13.3 | 冉博麟、李国涛 | (本期未收敛到单一根因) |
| 6 | 设备离线/掉线后无法预览 1 期 | 70 | Android · iOS | 1.1.1.6 / 8.2.2.1 / 8.3.13.3 | 唐胜、张威 | 设备预览链路在收到 TPS_MSG_P2P_OFFLINE 后直接走离线兜底分支,UI 进入“该设备不在线”,而自动恢复逻辑又被离线判断短路,导致用户感知为“掉线后无法再连上”。 |
| 7 | 录像回放缺失 — 无 SD 卡的设备被直接引导云存购买(产品设计问题) 1 期 | 65 | Android · iOS | 8.3.12.5 / 8.3.13.3 / 8.3.13.4 | 张威、唐胜、陈宝旺 | 无 SD 卡 + 未开通云存的设备,在 NVR 回放协议响应无效时直接跳转云存购买页,没有任何"为什么没录像"的说明,用户感知是"以前能看现在不能" |
| 8 | Android NVR 回放/预览偶发不出图,断开重连后恢复 1 期 | 60 | Android | — | 唐胜、张威 | NVR 回放/预览链路在首次 addWatch + 查询录像时间片 阶段存在瞬时失败,UI 侧又把多类失败统一收敛为空/超时,导致用户感知为“不出图,重连才恢复”。 |
| 9 | Android 监控预览 addWatch 失败 + 10 秒循环重试 1 期 | 60 | Android | 8.3.13.3 | 唐胜 | Android 端 LibImpl.startPlay 把 addWatch 返回的 P2P 断连错误码(-1)通过 if (ret == SDK_CONSTANT.ERR_P2P_DISCONNECTED) ret = 0; 强制归零,导致上层误以为流启动成功,进入 10 秒循环重试;用户看到的"长时间缓冲"实质是 10 秒 × N 次的循环重试视觉感受 |
| 10 | HarmonyOS 设备 WiFi 连接成功但无画面 1 期 | 60 | HarmonyOS | 1.1.1.6 | 唐胜、张威 | (本期未收敛到单一根因) |
🔴 问题 1:登录失效频繁重新登录 | 负责人:许源、唐胜
1. 现象与覆盖范围
- 现象:用户反馈"登录这个账号为啥几天就得从新登录呢"(v8.0.2.2,Android OPPO),即使用户手机网络正常、账号密码未改,仍被强制登出要求重新登录。
- 涉及反馈:1 条(该版本 8.0.2.2 为较老版本,国内用户)
- 严重度评分:65/100(反馈量 10 + 共性 20 + 关键度 35)
2. 神策证据
- Login 事件:8月6日全量去重用户 97.4 万 / 总登录 153.5 万次,无版本分布细分。
- 本期无按版本筛选(
eq函数 GRPC 异常),置信度降为中。 - 整体登录量稳定,未见异常高峰。
3. Logan 关键日志(核心数据源)
- 反馈 ID:FB-241309(设备掉线对比参照,clientId 一致)
- 关键发现(Logan 1893行):
- 用户登录成功后 accessToken 有效期至
1786099356(≈2026年9月)、refreshToken 至1786099356(≈2026年10月),token 本身未过期 - WebSocket 反复断开:
EOFException出现 10+ 次(14:45~14:50 内连续 4 次重连) seetong_app_logoutWS消息出现在网络不稳定后- 设备心跳
lastHeartTime: 1786076172000(≈当日 14:36),之后停止更新 → 设备判定离线 - 登录失效根因(Android 代码定位):
LogoutManager.kt:logoutByType()处理TOKEN_EXPIRE/TOKEN_INVALIDATE→ 调用MainActivity2.logout(false)→deleteLoginToken()LoginServiceImpl.kt:275:if(it.isDelToken)时 logout API 携带 refreshToken → 服务端使旧 token 失效- 本质:用户从新设备/新 session 登录时,服务端使旧设备 refreshToken 失效 → 旧设备下次请求返回 ERROR_REFRESH_TOKEN_INVALID → 强制弹窗"账号登录失效,请重新登录"
4. 代码定位
- 涉及模块:
login(Android) - 关键类:
LogoutManager.kt(app/src/main/java/com/seetong/app/seetong/login/LogoutManager.kt) - 调用链:
LogoutManager.logoutBySdk(dataJson)→getLogoutType()解析 ERROR_REFRESH_TOKEN_INVALID →logoutByType(TOKEN_INVALIDATE)→showLoginExpireDialog()→ 弹窗 +gotoLoginActivity() - 关键分支:服务端 WS 推送
seetong_app_logout消息 或 API 返回ERROR_REFRESH_TOKEN_INVALID→ 触发登出流程 - 修复方向锚点:
LogoutManager.kt:showLoginExpireDialog()提示文案不够明确,建议区分"被动登出(其他设备登录)"vs"主动登出"LogoutManager.getInvalidateTips()目前统一返回"账号未登录",建议增加"您的账号在其他设备登录,当前设备已登出"
5. 根因结论
- 置信度:🟡 中(神策按版本筛选失败,依赖 Logan + 代码定位)
- 一句话根因:多设备登录时服务端主动使旧设备 refreshToken 失效(
isDelToken=true),旧设备收到 WS 登出消息或 API 错误码后强制弹窗,用户感知为"几天就得重新登录" - 关键证据链:Logan token 未过期(accessToken 9月有效)+
seetong_app_logoutWS 消息 +LogoutManager.logoutBySdk()代码逻辑
6. 建议下一步
- 分配给:APP 登录模块负责人
- 优先处理项:1)LogoutManager 登出提示文案优化,区分多设备冲突登出 vs 异常登出;2)增加神策埋点记录"登出原因"字段分布
- 验证方法:多设备登录场景回归测试;观察改进后用户"登录失效"类反馈是否减少
🟠 问题 2:设备持续掉线(WebSocket EOF 循环)
1. 现象与覆盖范围
- 现象:用户反馈"设备经常不在线"(Android HONOR v8.3.14.2)、"天天掉线"(Harmony v1.1.1.6)、"监控现在不能用了"(Harmony v1.1.1.6)
- 涉及反馈:3 条,多平台(Android/Harmony)、多版本
- 严重度评分:55/100(反馈量 15 + 共性 15 + 关键度 25)
2. Logan 关键日志
- 反馈 ID:FB-241300(设备掉线,clientId=15c96971)
- 关键栈:
WSManager.m:EOFException → WSManager.Reconnect()
→ getWsUrlAndConnect() → netty server 分配新 IP:port
→ 再次 EOFException(14:45~14:50 内 4 次)
- 设备状态:
devIsOnline=0,lastHeartTime=1786076172000停止更新 - 错误分布(Logan 末行):
-102:4次,-101:2次,ssl_connect:1次,EXCEPTION:10次 - 注:该 Logan 为设备掉线反馈(非登录失效),两类问题高度共线
3. 根因结论
- 置信度:🟡 中(仅 1 条 Logan,共线 -102 普遍问题)
- 一句话根因:Netty WebSocket 连接持续 EOF 异常 → 设备心跳停止 → 设备离线 → 用户看到"设备不在线"
- 建议:持续性 EOF 建议排查 Netty 服务端连接超时配置;结合 -102 问题协同处理
本期扫描全量
| # | 关键词 | 反馈数 | 分类 | 处置 |
|---|---|---|---|---|
| 2 | 心愿单建议(动物检测/录像配额等) | 约20 | 🟤 心愿单建议 | 排除 |
| 3 | 设备掉线/不在线 | 3 | 🟠 进雷达(问题2) | 详见上文 |
| 4 | 登录失效需重新登录 | 1 | 🔴 进雷达(问题1) | 详见上文 |
| 5 | SD卡初始化失败 | 1 | 🟡 单设备问题 | 未达评分门槛 |
| 6 | Harmony 无画面/监控不能用 | 3 | 🟡 配置/设备问题 | 与掉线问题共线 |
| 7 | 无效/无意义字符反馈 | 约3 | 🟢 无效反馈 | 排除 |
| 8 | NVR预览画面闪烁 | 1 | 🟡 单例功能反馈 | 未达评分门槛 |
已折叠 1 条普遍性网络问题(含-102/-101/-1002与中/英/俄/法/西/葡/土/阿/日多语言网络提示模板,如Проверьте телефонную сеть、Please check your mobile network);全量明细见同名 Markdown 知识库。
数据源状态
- 反馈平台:正常,8h 内 100 条有效反馈。
- 神策:
query_segmentation_report按版本筛选失败(eq函数 GRPC 异常 COMMON-R-131-1),全量 Login 数据正常;降级为"全量数据参考 + 代码定位"。 - Logan:设备掉线 Logan 下载成功(1893行);登录失效 Logan OBS 下载失败(HTTP 500);降级为"部分 Logan 可用"。
- 友盟/TAPD:无崩溃/ANR 关键词或已知 BUG 单号触发条件,未查询。
待补证
- 神策按版本(
$app_version)筛选失败,下次确认字段名后重试 - 登录失效代表性 Logan 未下载成功,需下次补充
下一期 = 第99期 = 2026-08-08-H09(明天早上9:00)
本消息由 Seetong小助手 自动生成,欧阳荣 监督发布。