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)。

#问题(严重度降序)严重度平台版本负责人问题原因
1Harmony 1.1.1.6 多用户"离线/看不到监控"聚集(严重度 90/100,置信度 弱)
1 期
90Android · iOS1.1.0.9 / 1.1.1.6待定可能为 Harmony 1.1.1.6 客户端连接信令或 P2P SDK 与 HUAWEI 设备兼容性偶发问题;需补 Logan 才能确认
2HarmonyOS 1.1.1.6 看不到回放 / 回放卡顿
3 期
80Android · HarmonyOS1.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 系统调度兼容性问题
34G摄像机画面卡顿 / 回放卡顿
1 期
70Android · HarmonyOS · iOS8.3.13.3 / 8.3.14.2待定4G摄像机默认走RELAY转发(占71-72%),在4G信号弱(wifiSignal 2-4)时,RELAY转发带宽不足导致H265+视频流卡顿;P2P直连在4G场景下多数失败(connect=-1)
4在线看不到
1 期
70Android8.3.13.3张威、唐胜NVR 通道预览链路在握手后立即被底层判为 PeerOffLine,APP 按现有逻辑只做快速重试,没有把通道离线与临时连接抖动区分开,最终表现为“在线看不到”。
5多端手机端无回放
1 期
70Android1.1.1.6 / 8.3.13.3冉博麟、李国涛(本期未收敛到单一根因)
6设备离线/掉线后无法预览
1 期
70Android · iOS1.1.1.6 / 8.2.2.1 / 8.3.13.3唐胜、张威设备预览链路在收到 TPS_MSG_P2P_OFFLINE 后直接走离线兜底分支,UI 进入“该设备不在线”,而自动恢复逻辑又被离线判断短路,导致用户感知为“掉线后无法再连上”。
7录像回放缺失 — 无 SD 卡的设备被直接引导云存购买(产品设计问题)
1 期
65Android · iOS8.3.12.5 / 8.3.13.3 / 8.3.13.4张威、唐胜、陈宝旺无 SD 卡 + 未开通云存的设备,在 NVR 回放协议响应无效时直接跳转云存购买页,没有任何"为什么没录像"的说明,用户感知是"以前能看现在不能"
8Android NVR 回放/预览偶发不出图,断开重连后恢复
1 期
60Android—唐胜、张威NVR 回放/预览链路在首次 addWatch + 查询录像时间片 阶段存在瞬时失败,UI 侧又把多类失败统一收敛为空/超时,导致用户感知为“不出图,重连才恢复”。
9Android 监控预览 addWatch 失败 + 10 秒循环重试
1 期
60Android8.3.13.3唐胜Android 端 LibImpl.startPlay 把 addWatch 返回的 P2P 断连错误码(-1)通过 if (ret == SDK_CONSTANT.ERR_P2P_DISCONNECTED) ret = 0; 强制归零,导致上层误以为流启动成功,进入 10 秒循环重试;用户看到的"长时间缓冲"实质是 10 秒 × N 次的循环重试视觉感受
10HarmonyOS 设备 WiFi 连接成功但无画面
1 期
60HarmonyOS1.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_logout WS消息出现在网络不稳定后
  • 设备心跳 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_logout WS 消息 + 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)详见上文
5SD卡初始化失败1🟡 单设备问题未达评分门槛
6Harmony 无画面/监控不能用3🟡 配置/设备问题与掉线问题共线
7无效/无意义字符反馈约3🟢 无效反馈排除
8NVR预览画面闪烁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小助手 自动生成,欧阳荣 监督发布。

🗂️历史期次

查看全部历史期次(近 90 天)→