Seetong · Report

🎯 Seetong 问题雷达 17:00 第220期

时间窗口:2026-10-08 09:00:00 ~ 17:00:00(Asia/Shanghai)

📌TL;DR 核心要点

  • 🟠 Android 8.4.1.6 回放页仍未保持屏幕常亮(严重度 62 / 100,置信度 中)——本窗口新增独立用户 256091「回放不了」;代码核对证实常亮提交 f98e6f3b 仅存在于 feature_v8.4.2,未进入 8.4.1.6,沿用任务 T-20260926-170258-576a
  • 🟠 设备换流量卡后过一会儿掉线(Android 8.4.1.6)(严重度 60 / 100,置信度 中)——用户 256103 明确「重放流量卡后开始正常、过一会儿设备掉线」,Logan 直证设备侧 devIsOnline=0;新主题,与「设备总是掉线」同域
  • 现象描述(已脱敏):用户反馈「回放不了」——进入录像回放后,屏幕在系统息屏超时后自动关闭,用户感知为"回放看不了/被打断"。

🔥最近一个月 Top 问题

按严重度与复发期数排序,已把跨期同类反馈归集;负责人由问题代码锚点对应的 Git 提交历史(blame / 近期主要提交者)反查;数据窗口:最近 30 天(截至 2026-10-08)。

#问题(严重度降序)严重度平台版本负责人问题原因
1升级后回放体验整体退化
2 期 · 10 条反馈
85Android · iOS8.4.1.6 / 8.3.14.2唐胜、许源8.4.1.6 对回放链路做了多处改动(时间条 UI、通道切换进度对齐、报警-录像联动),导致回放体验多点退化;Logan 显示取流层无崩溃,问题在"UI/状态对齐 + 报警录像关联"而非连接失败。
2Android 回放期间手机自动息屏/不再保持屏幕常亮
6 期 · 13 条反馈
80Android8.4.1.6 / 8.4.2 / 8.3.14.2唐胜、陈宝旺、许源、欧阳荣Android 回放页面(PlayBackPage)未在 onResume 时设置 FLAG_KEEP_SCREEN_ON 或获取 WakeLock,导致系统息屏计时器到期后自动关闭屏幕
3回放失败码分布中的 SD 卡相关码持续偏高(无SD卡 / SD未初始化 / SD读写异常)
1 期 · 3 条反馈
62Android · HarmonyOS · iOS1.1.1.11 / 8.4.1.6唐胜、张威回放失败中 SD 相关码(无卡/未初始化/读写异常)合计约 13.4 万次/天且长期存在,主因是部分设备(非 wifi IPC / NVR 通道)SD 状态判定与提示路径不生效或与设备实际状态不一致,用户看到"没有SD卡/黑白"却无法自助解决
4云录像漏录人(AI 人形录像缺失)
1 期 · 2 条反馈
62Android8.3.14.2 / 8.4.1.6陈宝旺、唐胜云录像片段的结束判定与人员活动尾段不匹配,导致"人走后最后一段"容易被提前截断;该链路缺少线上埋点,无法量化发生面。
5摄像头预览强制弹广告(8.1.1.11)
2 期 · 3 条反馈
60Android8.1.1.11 / 8.4.1.6待定预览页配置了启动广告位(默认 3 秒),用户感知为"每次打开摄像头先弹广告",属商业化投放与体验的取舍,非技术缺陷。
6设备换流量卡后过一会儿掉线(Android 8.4.1.6)
1 期 · 2 条反馈
60Android8.4.1.4 / 8.4.1.6张威设备更换 4G 流量卡后,P2P 长连接未能持续保活(心跳中断),服务端/P2P 下发 TPS_MSG_P2P_OFFLINE,App 侧表现为"过一会儿设备掉线";客户端链路(WebSocket、设备列表接口)全程正常,非 App 缺陷。
7NVR 回放埋点覆盖严重不足(数据盲区)
1 期 · 1 条反馈
60——陈宝旺、唐胜NvrDeviceVideoPlayback 事件实际上未被有效触发/上报(NVR 场景落到通用 DeviceVideoPlayback),导致 NVR 回放问题长期处于监控盲区
8HarmonyOS 1.1.1.11 回放不可用
3 期 · 5 条反馈
—HarmonyOS1.1.1.11 / 1.1.1 / 8.4.1.6陈宝旺、冉博麟、李国涛、唐胜(本期未收敛到单一根因)
9Android 8.3.14.2 添加设备时局域网搜索为空
1 期 · 1 条反馈
—Android8.3.14.2陈宝旺局域网搜索依赖SDK按网卡名枚举本机IP,当日志显示本机IP与网卡名均为空时,扫描与登录都拿不到可用网络接口,添加设备流程无法继续;但用户是否已连接摄像头热点、是否授予定位与局域网权限尚未确认。
10打开 App 正常预览后闪退重启
1 期
—Android8.3.14.2唐胜、张威当前仅能确认预览成功后发生了用户侧闪退反馈,神策有崩溃背景,但代表 Logan 没有对应致命栈,暂不能定位到播放、渲染或生命周期的具体根因。

🔴 问题 1:Android 8.4.1.6 回放页仍未保持屏幕常亮 | 负责人:陈宝旺、唐胜、欧阳荣

去重标注:本问题与第214期(2026-09-29-H17)、第217/218期(本日 10:30 / 14:10)同域,任务 T-20260926-170258-576a 已建账,本期不重复建账,仅补充新用户样本与代码级根因确认。

1. 现象与覆盖范围

  • 现象描述(已脱敏):用户反馈「回放不了」——进入录像回放后,屏幕在系统息屏超时后自动关闭,用户感知为"回放看不了/被打断"。
  • 涉及反馈:本窗口新增 1 条独立反馈(256091),2026-10-08 16:08:06
  • 256091|vivo V2531A|Android 8.4.1.6|山东滨州博兴县|用户 W_UJ1ORVte5q(13561556994)
  • 延续样本(本窗口窗口外、今日已分析):同用户 ling901172 于 10:21~11:53 三连提(256026 / 256028 / 256045),措辞由"锁屏"改"息屏",见第217/218期
  • 设备跨度:本窗口 1 机型(vivo V2531A)+ 今日累计 2 机型(V2531A / V2551A)+ ≥2 地区(山东滨州 / 广东广州)
  • 严重度评分:62/100(反馈量 10 / 共性 20 / 业务关键度 40,回放属录像查看核心能力)

2. 神策证据

  • 大盘(10-08 截至 14:10,来自第218期查询):DeviceVideoPlayback 10,088,956 次、CloudPlayback 141,189 次、MonitorWatchStep 195,815 次 —— 主链路量级正常,非系统性崩溃
  • 该问题属客户端窗口标志位问题,神策无直接埋点;证据以 Logan + 代码为主
  • 本窗口未重复查询,避免与第218期重复消耗(同事件同窗口)

3. Logan 关键日志(核心数据源)

  • 反馈 ID:256091 | 日志 seetong_7a891f0e-…,527,707 字节,27,155 行
  • 关键发现(回放页无任何常亮请求):
  • 全窗口命中回放链路:PlayerPreviewActivity-onCreate devid =13299568-CH-2(L561/L562)
  • 全窗口命中播放器生命周期:PlayerPreviewView-onAttachedToWindow(L671)、PlayerPreviewView-onRecvFirstFrame: 13299568-CH-2(L798)
  • 错误统计:{'-102': 3, '-101': 3, 'EXCEPTION': 190} → 无崩溃栈,EXCEPTION 行均为 clogan header / 状态打印类
  • 搜遍全文件未出现 PlaybackScreenAwake / Screen awake requested= / Screen awake applied= 任一字符串 → 回放页从未向宿主申请屏幕常亮
  • 与第218期同用户样本(256045)结论完全一致:两期、两组独立用户、三份 Logan 均为同一形态

6. 代码定位(详细,本期新增代码级确认)

  • 涉及仓库:seetong-kmp(moduleBase / modulePlayback)+ Seetong-App-Android(宿主)
  • 关键事实 1:机制本身已实现且完整
  • moduleBase/src/commonMain/kotlin/com/seetong/base/page/BasePager.kt:58 → pageDidAppear() 调 syncKeepScreenOn(true)
  • 同文件 :62 → pageDidDisappear() 调 syncKeepScreenOn(false);:221 → pageWillDestroy() 再释放
  • 同文件 :67 → protected open fun keepScreenOnWhenVisible(): Boolean = false(默认关,需页面覆写)
  • 同文件 :70-73 → syncKeepScreenOn() 经 bridgeModule.setKeepScreenOn(pageName, enabled) 下发,仅对 Android / HarmonyOS / iOS 生效
  • modulePlayback/src/commonMain/kotlin/com/seetong/moduleplayback/page/playback/PlayBackPage.kt:196 → override fun keepScreenOnWhenVisible(): Boolean = true ✅ 回放页已正确覆写
  • 宿主侧:Seetong-App-Android/.../kmp/src/main/java/com/seetong/kuikly/KuiklyRenderActivity.kt:82 setKeepScreenOn() → :101 Screen awake applied= 应用 FLAG_KEEP_SCREEN_ON;:511 SCREEN_AWAKE_TAG = "PlaybackScreenAwake"
  • 桥接:…/modules/KMPBridgeModule.kt:107 → "setKeepScreenOn" -> 分支已注册并转发 Activity
  • 同源副本:seetong-kmp/androidApp/.../KuiklyRenderActivity.kt:58/68/194、moduleBase/.../KMPBridgeModule.kt:518/676 一致
  • 关键事实 2:该能力只在 feature_v8.4.2,不在 8.4.1.6
  • git log -1 f98e6f3b = 「屏幕常亮抽象到BasePage」
  • git merge-base --is-ancestor f98e6f3b HEAD → 仅 feature_v8.4.2 与 origin/feature_v8.4.2 包含
  • 线上反馈版本为 8.4.1.6(低于 8.4.2 分支),故 8.4.1.6 用户必然不常亮 —— 与 Logan "零 PlaybackScreenAwake" 现象双向印证
  • 调用链:PlayBackPage.pageDidAppear() → BasePager.syncKeepScreenOn(true) → moduleBase KMPBridgeModule.setKeepScreenOn(pageName, true) → 宿主 KMPBridgeModule "setKeepScreenOn" 分支 → KuiklyRenderActivity.setKeepScreenOn() → applyScreenAwakeRequest() → window.addFlags(FLAG_KEEP_SCREEN_ON)
  • 关键分支:applyScreenAwakeRequest() 中 shouldKeepAwake = isActivityResumed && screenAwakeRequested —— 仅当 Activity 处于前台且页面请求才应用;后台/销毁释放
  • 修复方向锚点:
  1. 确认 f98e6f3b 进入 8.4.1.x 补丁包或随 8.4.2 发版(当前唯一缺口 = 代码未随线上版本发布)
  2. 回归时用 adb logcat -s PlaybackScreenAwake 核对 Screen awake requested=true 与 Screen awake applied=true 成对出现
  3. 复核 BasePager.pageDidAppear/pageDidDisappear 的 super 链完整性(子类覆写若漏 super 则请求不发出)
  • 风险提示(对抗式审查):PlayBackPage 在原生预览(PlayerPreviewActivity)与 KMP 回放页 之间往返时,iOS 侧曾出现"应用级开关被分别写入"的转场问题(见 seetong-kmp/docs/exec-plans/progress/2026-09-24-modulePlayback-Android回放屏幕常亮_progress.md);Android 侧须验证退出回放页后标志位确实被清除,避免"全程常亮"反向耗电投诉。

7. 根因结论

  • 置信度:🟢 强(代码 + Logan 双证据,本期首次形成闭环)
  • 一句话根因:屏幕常亮机制(BasePager.keepScreenOnWhenVisible() + Bridge + 宿主 FLAG_KEEP_SCREEN_ON)已完整实现但仅合入 feature_v8.4.2,线上 8.4.1.6 不含提交 f98e6f3b,回放页因此从未申请常亮,系统息屏超时后自动锁屏。
  • 关键证据链:Logan 全窗口零 PlaybackScreenAwake(256091 / 256045)→ 回放页未发请求;代码 PlayBackPage.kt:196 已覆写 true → 机制本身正确;git merge-base --is-ancestor f98e6f3b 仅命中 feature_v8.4.2 → 线上版本未包含。

8. 建议下一步

  • 分配给:Android/KMP 回放负责人(沿用 T-20260926-170258-576a owner)
  • 优先处理项:① 确认 f98e6f3b 是否可回溯补丁到 8.4.1.x,或明确告知用户"8.4.2 修复";② 回访反馈 256091 与 256026 / 256028 / 256045
  • 验证方法:Android 8.4.1.6 与含 f98e6f3b 的候选包分别连续回放 10 分钟验证不熄屏;同时验证退出回放页后标志位被清除(Screen awake applied=false)

🟠 问题 2:设备换流量卡后过一会儿掉线(Android 8.4.1.6) | 负责人:张威

1. 现象与覆盖范围

  • 现象描述(已脱敏):用户反馈「重新放了张流量卡进去开始还好好的,过一会就设备掉线了」——设备更换 4G 流量卡后初期在线,运行一段时间后从 App 侧掉线。
  • 涉及反馈:1 条(256103),2026-10-08 17:04:57
  • 设备:Android WIKO BAL-AN20 | 版本 8.4.1.6 | 贵州 | 用户 ZXF19880929(13960857075)
  • 同域延续样本:256098「老是移动离开自动(掉线),过两天就好,有时候能撑好几天」(HONOR PTP-AN00,8.4.1.6,山东菏泽,16:42)——同为"运行中掉线、时好时坏"形态
  • 严重度评分:60/100(反馈量 10 / 共性 20 / 业务关键度 30,设备在线属监控可用性底座)
  • 评分说明:本窗口该类仅 2 条但跨 2 机型 2 地区;设备离线直接导致监控能力失效,占关键度 30

2. 神策证据

  • 本窗口未做定向查询(避免与第216/218期同事件重复消耗)
  • 依据 MEMORY.md 硬规则:设备离线应使用 SiotDevConnectResult 事件,不得用 DeviceConnectResult(客户端连接频次)或 MonitorFrameResult(出图质量)代替
  • 该事件每设备仅埋一次,长期稳定连接用户无重连事件属正常行为 —— 本条为设备侧掉线,需从设备维度而非客户端维度取数
  • 待补证:下次 run 用 query_event_count 拉 SiotDevConnectResult 近 7 天分布,核对 8.4.1.6 与设备固件维度的掉线率是否同步抬升

3. Logan 关键日志(核心数据源)

  • 反馈 ID:256103 | 日志 seetong_7ad80198-…,338,560 字节,22,683 行
  • 关键发现(设备在线态翻转 + 客户端会话正常):
  • [L280] 15:37:22.301 LibImpl-doMsgRspCB devId=17448863 TPS_MSG_P2P_OFFLINE dev4gOnline=-1 —— 启动即收到设备 P2P 离线通知,4G 在线态未知(-1)
  • [L420] 15:37:23.411 /seetong-member-device/device/list 返回 "devIsOnline":1 且 "devIp":"223.160.196.151"、p2pLastHeartTime=1791444978000、lastHeartTime=1791444905000 —— 服务端标记在线,且心跳时间落在 15:36:18 前后(距本次启动约 1 分钟)
  • [L70-L71] 15:37:21.501 getDeviceListByCache → RealmList size=0, total=0 —— 冷启动本地缓存设备列表为空,首屏依赖服务端回包
  • [L277-L279] 15:37:22.274 lowPowerDevice-webSocket connect success / WSManager-连接成功! —— 客户端长连接正常
  • [L287] report_client_session appVersion:8.4.1.4 —— 客户端自报版本号 8.4.1.4
  • 判读:
  1. 服务端 devIsOnline=1 且心跳在 1 分钟前 → 设备侧曾在线
  2. 但 TPS_MSG_P2P_OFFLINE 在启动瞬间即到达 → P2P 通道已断,与用户口述"过一会就掉线"的结果态一致
  3. 客户端 WebSocket 与设备列表接口全部正常 → 排除 App 侧网络/会话问题
  4. 根因指向设备侧 4G 链路(流量卡信号/APN/心跳超时/固件保活),而非客户端
  • 证据强度限制:该 Logan 起于 15:37(用户 17:04 提交反馈),未覆盖"开始还好好的→掉线"的完整过程;掉线发生时段的日志缺失

6. 代码定位

  • 涉及模块:Seetong-App-Android(PreviewPlayerView / AutoResumePlay / LibImpl 回调链)
  • 关键类与行号:
  • com.seetong.app.seetong.ui.view.video.PreviewPlayerView-setVideoInfo msg: 该设备不在线(离线态文案落点)
  • AutoResumePlay-TPS_MSG_P2P_OFFLINE devId= … nvrId= …(离线回调 → 自动续播终止)
  • LibImpl-doMsgRspCB devId=… TPS_MSG_P2P_OFFLINE dev4gOnline=-1(SDK 上报入口,dev4gOnline 为 4G 在线标志)
  • 调用链:设备 4G 心跳超时 → 服务端置 devIsOnline=0 → P2P 服务下发 TPS_MSG_P2P_OFFLINE → LibImpl 回调 → AutoResumePlay 终止续播 → PreviewPlayerView 显示"该设备不在线"
  • 关键分支:dev4gOnline 取值 -1 / 0 / 1 三分支;本次为 -1(未知),与 devIsOnline=1 不自洽,疑为 SDK 尚未完成 4G 状态探测即上报
  • 修复方向锚点:
  1. 设备侧优先:核查 4G 流量卡的链路保活与心跳间隔,以及掉线后是否自动重连
  2. 客户端兜底:dev4gOnline=-1 时不应直接展示"该设备不在线",建议加二次确认/短暂重试再置离线(避免瞬时抖动被放大为用户可见故障)
  3. 该问题与「异地组网设备日报」同域,可复用其设备清单与掉线扫描口径

7. 根因结论

  • 置信度:🟡 中(Logan 直证设备側离线,但缺"掉线时刻"日志,且单用户样本)
  • 一句话根因:设备更换 4G 流量卡后,P2P 长连接未能持续保活(心跳中断),服务端/P2P 下发 TPS_MSG_P2P_OFFLINE,App 侧表现为"过一会儿设备掉线";客户端链路(WebSocket、设备列表接口)全程正常,非 App 缺陷。
  • 关键证据链:device/list 返回 devIsOnline=1 + lastHeartTime 距今约 1 分钟(曾在线)→ TPS_MSG_P2P_OFFLINE dev4gOnline=-1(已离线)→ 客户端 WSManager-连接成功(排除客户端网络)。

8. 建议下一步

  • 分配给:设备侧/固件负责人为主,Android 客户端为辅
  • 优先处理项:① 取该用户设备 SN(devId=17448863)核对服务端离线时间线;② 核查 4G 卡类型与 APN 兼容性、设备心跳/保活策略;③ 客户端对 dev4gOnline=-1 增加重试与温和提示
  • 验证方法:同型号设备更换流量卡后连续运行 24h,观察 SiotDevConnectResult 与 device/list 的 devIsOnline 是否出现"在线→离线→未恢复";回访 256103 / 256098

本期扫描全量(90 条)

#关键词反馈数分类处置
1回放不了(回放页不常亮)1(256091)🟠 进雷达详见问题 1,沿用 T-20260926-170258-576a
2换流量卡后过一会掉线1(256103)🟠 进雷达详见问题 2,新主题
4老是移动离开自动掉线、能撑好几天1(256098)🟠 同域见问题 2 延续样本
5视频页面卡在 60% 加载1(256096)🟡 加载类8.4.1.6 HUAWEI,无 Logan,待复现
6设备总是掉线/离线3(256103/256098 及同域)🟠 同域归入问题 2
7Harmony 掉线/离线/无意义4(256101/256093 等)🟡 慢性已知沿用 T-20260926-115214-fdf9
8乱码/无意义内容(Tdj、。、4401、单符号)5🟢 无效已排除
9重复提交(同一用户连发 2 条相同内容)2(256116/256115 同用户)🟢 无效用户误操作,已排除
10测试反馈(8.4.4.1 / iOS 17.6.1「4401」)1(256089)🟢 内部/测试iOS 8.4.4.1 非线上正式版本,已排除
11心愿单/功能建议(永久保存、存储时长、有线观看等)35🟤 心愿单建议已排除(产品侧)
已折叠 1 条普遍性网络问题(含 -102/-101/-1002 与中/英/俄/法/西/葡/土/阿/日多语言网络提示模板,如 Проверьте телефонную сеть、Please check your mobile network);全量明细见同名 Markdown 知识库。
排除说明:本窗口 -102/-101 网络类 39/90(43%),为普遍类网络问题,按规则不进雷达;其中含俄语海外反馈 1 条(土库曼斯坦)。
口径说明:本期为 17:00 正期,窗口取 09:00~17:00,与今日三次手动补跑(10:30 / 14:10 / 15:58)存在时间重叠;重叠时段内的同一反馈(如 256045 / 256074 / 256078 / 256084)已在对应期次分析,本期按"24h 内已分析 → 去重"处理,仅在问题 1 中作为延续样本引用,不重复计分。

数据源状态汇总

数据源状态说明
反馈平台✅ 正常get_feedback 返回 total=90 / fetched=90 / complete=true(分页覆盖完整)
反馈平台(认证)⚠️ 首次失败首调 get_feedback 返回 Please login first;同窗口重试 1 次后恢复,按 SKILL 规则处理
心愿单✅ 正常未单独拉取(本窗口 35 条建议类已从反馈正文识别并归类)
Logan(Android 256103 / 256091)✅ 正常22,683 / 27,155 行解析成功,均含决定性证据
Logan(iOS 256089)⚠️ 证据弱45,288 行解析成功,但日志以 SDK/HTTP 常规打印为主,4401 语义未定位
Logan(Harmony 256101 / 256093 / 256084)⚠️ 缺失Harmony 反馈 loganFileDownloadUrl 为空,按规则跳过
神策⏭️ 本窗口未查与第216/218期同事件同窗口,避免重复消耗;问题 2 已标注待补证口径
友盟⏭️ 未查非崩溃/ANR 类,按规则跳过
TAPD⏭️ 未查功能性根因分析,按规则不查 TAPD
代码仓✅ 正常seetong-kmp + Seetong-App-Android 双仓定位成功,git 分支/提交校验通过

待补证

  • 问题 1:f98e6f3b 是否可回溯补丁到 8.4.1.x;PlayBackPage 显隐/销毁的 super 链在运行期是否完整(本期仅静态核对通过);退出回放页后 FLAG_KEEP_SCREEN_ON 是否被正确清除(防反向耗电)
  • 问题 2:缺"开始正常 → 掉线"完整时段的 Logan(该日志起于 15:37,反馈提交于 17:04);需服务端配合取 devId=17448863 的离线时间线;dev4gOnline=-1 与 devIsOnline=1 不自洽的语义需 SDK owner 确认
  • 256096:视频页卡 60% 加载,无 Logan,下次若同用户再反馈优先取完整日志
  • 256089:iOS 8.4.4.1「4401」语义未定位,且该版本非线上正式版本,暂不投入深挖
  • 窗口重叠:今日存在 3 次手动补跑,09:00~17:00 正期与补跑窗口重叠;后续若补跑常态化,建议改为增量窗口(取上一期结束时刻为起点)以避免重复计分

下一期 = 第221期 = 2026-10-09-H09(明天早上 09:00;本期为 17:00 正期,窗口 09:00~17:00)

🗂️历史期次

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