Seetong · Report
🎯 Seetong 问题雷达 09:00 第247期
时间窗口:2026-10-21 17:00:32~2026-10-22 09:00:32(Asia/Shanghai)
TL;DR 核心要点
- 🔴 HarmonyOS 1.1.2.3 在 16 小时内出现 4 名独立用户的视频、录像与回放链路多点失效:预览后提示网络断开、卡回放无内容、设备经常不录像、手机端看不到监控,覆盖 4 个 HUAWEI 机型和 4 个省级地区。严重度 90 / 100,现象置信度强,根因置信度弱,沿用 T-20260926-170258-2226。
- 🟠 Android 8.4.1.6 KMP 卡回放缩放时间轴时,游标从正在查看的时间点回跳约 10 分 31 秒,随后拖动过程中显示时间与状态时间持续错位。反馈 258835 的 Logan 直接记录 31935 → 31304 的回跳,代码定位到“缩放刷新携带旧 currentTimeSec”的状态同步缺陷。严重度 70 / 100,现象与根因置信度均为强,沿用 T-20260922-170415-9496。
- 258795:HarmonyOS 6.0、HUAWEI ALN-AL80、山东潍坊。登录后设备页下滑出现卡顿,点击设备预览后提示“网络断开”,用户明确写明“必现”,卸载重装仍无效。
最近一个月 Top 问题
按严重度与复发期数排序,已把跨期同类反馈归集;负责人由问题代码锚点对应的 Git 提交历史(blame / 近期主要提交者)反查;数据窗口:最近 30 天(截至 2026-10-22)。
| # | 问题(严重度降序) | 严重度 | 平台 | 版本 | 负责人 | 问题原因 |
|---|---|---|---|---|---|---|
| 1 | Android 8.4.1.6 及 HarmonyOS 1.1.1.11 单设备随机离线、P2P 恢复失败 20 期 · 164 条反馈 | 100 | Android · HarmonyOS | 1.1.1.11 / 8.4.1.6 / 1.1.2.3 | 陈宝旺、唐胜、冉博麟、谭伟 | 257582、257639 已确认是服务端心跳长期停更并伴随 P2P 离线,App 只是按离线状态展示;问题更可能在设备端、设备网关/P2P 服务或固件恢复机制,而不是 Android 播放器单点故障。 |
| 2 | Android 与 iOS 8.4.1.6 报警功能突然失效与通知不达 1 期 · 3 条反馈 | 90 | Android · iOS | 8.4.1.6 | 唐胜、许源 | 现有客户端样本表明 Android 通知权限与 token 注册均成功,故障更接近“服务端未生成报警或推送任务未送达”,但神策缺少报警生成与推送到达事件,iOS 样本又混合了通知权限关闭,当前不能完成单点定因。 |
| 3 | HarmonyOS 画中画状态导致切换设备后仍显示前一路画面 1 期 · 3 条反馈 | 90 | HarmonyOS | 1.1.1.11 / 1.1.2.3 | 张跃译 | 多个 HarmonyOS 画面共享一个无代次、无串行化、无旧控制器清理的 PipManager,切换设备时旧创建任务和新选择竞争,最终把第一路 XComponent、savId 或恢复状态保留下来。 |
| 4 | 升级后回放体验整体退化 4 期 · 18 条反馈 | 85 | Android · iOS | 8.4.1.6 / 8.3.14.2 | 唐胜、许源、欧阳荣、谭伟 | 8.4.1.6 对回放链路做了多处改动(时间条 UI、通道切换进度对齐、报警-录像联动),导致回放体验多点退化;Logan 显示取流层无崩溃,问题在"UI/状态对齐 + 报警录像关联"而非连接失败。 |
| 5 | KMP 回放页未申请屏幕常亮,回放中手机自动息屏 11 期 · 29 条反馈 | 84 | Android · HarmonyOS | 8.4.1.6 / 8.4.1 / 8.4.2 | 唐胜、陈宝旺、许源、谭伟 | KMP 回放页的屏幕常亮能力已在代码中完整实现(KMP 公共层 → 桥接层 → Android 宿主层齐备),但承载该实现的提交只落在 feature_v8.4.2 一条分支上,feature_v8.4.4、master、hotfix_v1.1.1 全部不含,因此所有已发布版本(Android 8.4.1.6 / HarmonyOS 1.1.1.11)在运行时都走不到 FLAG_KEEP_SCREEN_ON,回放过程中发生系统级息屏。 |
| 6 | Android 实时预览无首帧却被标记为“视频播放中”,并无限重试 5 期 · 12 条反馈 | 80 | Android · iOS | 8.4.1.6 / 8.4.1.4 | 唐胜、张威、谭伟、欧阳荣 | 预览页把“取流请求已提交”或“设备在线状态消息”误当成播放成功,而没有把首帧到达作为唯一成功门禁;add_watch_result=-1 后仍持续 10 秒重试并显示“视频播放中”,导致用户长时间等待且无法获得明确失败反馈。 |
| 7 | SD 卡跌至不可读写或反复未初始化,录像回放被直接阻断 3 期 · 9 条反馈 | 80 | Android · HarmonyOS · iOS | 8.4.1.6 / 1.1.1.11 | 唐胜、张威、陈宝旺 | 设备上报的 SD 卡状态在 258245 中持续处于未初始化/格式化中,在 258173 中由正常可读写跌至不可读写;App 按协议正确展示异常,根因更可能在 SD 卡、卡槽/供电、设备存储控制器或固件挂载逻辑,而不是 KMP 页面误报。 |
| 8 | iOS `8.4.1.6` 云回放卡顿,首帧与失败状态可能被提前结算 2 期 · 8 条反馈 | 80 | Android · iOS | 8.4.1.6 / 8.3.11.3 / 8.4.106 | 陈宝旺、欧阳荣、谭伟 | iOS 云回放容器允许解析完成后在 1.2 秒无首帧时提前向 KMP 返回成功,同时把 IJK 播放错误与正常结束合并处理,导致页面对真实卡顿、缓冲超时或解码失败缺少准确状态和可回溯证据;这是高度可疑的共同客户端缺陷,但仍需复现确认其是否为 3 名用户的直接主因。 |
| 9 | iOS 8.1.2.4 微信登录授权码重复提交触发 30100225 1 期 · 3 条反馈 | 80 | iOS | 8.1.2.4 / 8.1.204 / 8.4.106 | 待定 | 微信回调与恢复登录没有一次性 state、幂等锁和授权码消费机制,重复回跳或重试会把同一个单次授权码再次发给服务端,服务端以 30100225 拒绝后客户端仍保留旧状态。 |
| 10 | iOS 老版本微信登录空授权码触发 30100222 1 期 · 1 条反馈 | 80 | iOS | 8.1.3.5 / 8.1.305 / 8.1.503 | 位冬 | 微信授权回跳在当前旧版 iOS 上返回了空 code,客户端没有把它视为失败边界,仍向服务端提交空授权码,最终稳定触发 30100222。 |
🔴 问题 1:HarmonyOS 1.1.2.3 视频、录像与回放链路多点失效
1. 现象与覆盖范围
- 258795:HarmonyOS 6.0、HUAWEI
ALN-AL80、山东潍坊。登录后设备页下滑出现卡顿,点击设备预览后提示“网络断开”,用户明确写明“必现”,卸载重装仍无效。 - 258821:HarmonyOS
1.1.2.3、HUAWEITLR-AL00、辽宁沈阳。用户反馈“大门回放不出来任何东西”。 - 258774:HarmonyOS
1.1.2.3、HUAWEIBLK-AL80、上海。用户反馈“有人不能录像经常有”,指向人形事件发生时不录像。 - 258743:HarmonyOS
1.1.2.3、HUAWEISUP-AL90、浙江温州。用户反馈“监控怎么从手机上看不到了”,手机端核心查看能力不可用。 - 以上为 4 名独立用户,覆盖 4 个机型、4 个省级地区,均集中在同一版本。它们可能不是同一个根因,但共同落在“预览 → 录像 → 回放 → 手机查看”主链路,不能作为普通网络噪声或单条咨询忽略。
- 严重度评分:90 / 100。反馈量 20(4 名独立用户)、共性广度 30(HarmonyOS、同一版本、4 个机型、4 个地区)、业务关键度 40(实时查看与录像取证均为核心能力)。
- 去重判定:与既有 HarmonyOS 实时预览和回放大范围不可用任务同域,沿用
T-20260926-170258-2226,不重复创单;本期新增1.1.2.3的多机型聚集证据。
2. 神策证据
- 2026-10-22 截至 09:07,HarmonyOS
1.1.2.3的DeviceVideoPlayback为 167,628 PV / 92,285 UV,其中error_code=200为 161,701 PV,失败约 5,927 PV,失败率 3.54%。 - 同一时点的
error_code明细查询返回 5,925 条失败,和总数口径相差 2 条,属于实时入库差异。失败主要来自SA1060063,725 条、SA106012531 条、SA106008530 条、SA106010431 条、SA106001382 条。 - 近 7 天同版本播放失败率依次为 5.471%、4.064%、3.370%、2.878%、2.600%、2.585%、3.536%。10 月 22 日为未完整日,不能直接与前六个完整日等同,但从 10 月 21 日的 2.585% 回升到当前 3.536%,与本窗口用户聚集方向一致。
MonitorFrameResult在 HarmonyOS1.1.2.3下没有查询到可用记录,因此预览首帧成功率无法按该版本量化。这是观测缺口,不等于预览未失败;258795 的预览故障仍需补埋点。- 反馈平台
clientId尚未映射到神策distinct_id,不能把上述大盘失败逐条归到 4 名反馈用户,神策只用于判断同版本风险背景。
3. Logan 与附件
- 258795、258821、258774、258743 均未提供 Logan,无法定位具体失败返回值、连接类型、设备固件和首帧时间。
- 258795 写明“必现”且卸载重装无效,提供了较强的现象证据,但当前只能排除“用户误操作”这一弱解释,不能区分:
ts_AddWatchEx同步返回失败;- P2P/relay 已建立但长时间无首帧;
- 设备本身离线或网络不可达;
- 播放组件或页面状态错误覆盖;
- 设备无录像、存储异常或事件列表查询失败。
4. 代码定位
- HarmonyOS 原生回放页:
seetong-app-harmony/feater/playDevice/src/main/ets/view/replay/ReplayPage.ets:153-155。isOffline只声明为false,注释明确“目前未赋值”;全文件仅在:3887读取它展示离线态,没有发现写入路径。 - 快速预览组件:
seetong-app-harmony/feater/playDevice/src/main/ets/view/AutoPlayDeviceView.ets:21-43。页面展示后直接调用playDevice,但忽略返回的布尔值,也没有注册call回调、错误态或首帧超时;deviceFirstFrameEvent只负责隐藏进度圈,若首帧不到,页面可以永久停留加载态。 - 播放服务:
seetong-app-harmony/feater/playDevice/src/main/ets/service/DeviceServiceImpl.ets:5493-5548。ts_AddWatchEx的具体返回值被折叠成ret == 0,上层拿不到-1/-6/-10等错误语义。 - 统一播放入口:
seetong-app-harmony/feater/playDevice/src/main/ets/utils/ViewPageUtil.ets:270-298。结果-1的提示被注释掉,未知错误分支也不展示任何提示,因此实际失败可能表现为静默、长转圈或被其他网络提示覆盖。 - 回放页的数据加载另有明确超时分支,例如
ReplayPage.ets:758-978与:1240-1309;但当前没有 4 名用户的日志,无法证明“不录像”和“回放为空”由这些分支触发。
5. 根因结论
- 置信度:现象 🟢 强;根因 🔴 弱。
- 一句话根因:当前证据只能确认 HarmonyOS
1.1.2.3在核心视频链路上出现跨用户聚集,尚不能把四种症状归为同一根因;代码侧明确存在“播放返回值被折叠、错误提示分支缺失、离线状态从未赋值、预览首帧缺少超时兜底”的观测与状态处理缺口。 - 明确不下的结论:不把问题直接归因为 4 名用户手机网络差,也不把“不录像”与“回放为空”未经证据合并成同一设备故障。
6. 建议下一步
- 分配给:HarmonyOS 播放链路负责人,设备服务与 KMP 回放负责人配合;沿用任务
T-20260926-170258-2226,状态保持P1 / captured。 - 首先补齐端到端可观测性:每次预览和回放生成
requestId,统一记录devId、设备固件、网络类型、ts_AddWatchEx返回值、连接类型、首帧耗时、onError和退出原因;MonitorFrameResult必须覆盖 HarmonyOS1.1.2.3。 - 修复错误透传:
playDevice返回具体错误码而非布尔折叠结果;-1/-6/-10、超时和无首帧必须进入明确失败态,并在 10 秒内提供重试入口,不得永久转圈。 - 为
isOffline建立唯一写入源:只由设备在线态更新,不能把一次预览失败永久改写成离线,也不能让离线提示因状态从未赋值而永不出现。 - 将“无录像”“存储卡异常”“NVR 事件列表超时”“设备离线”拆成不同提示和埋点,禁止统一显示为“网络断开”。
- 回访 13508965818、18241935168、13853977052、18658717811,索取设备型号、固件、SN、发生时刻及 Harmony 日志;分别在华为 6.0 与 5.x、Wi-Fi 与移动网络下连续预览、录像、回放各 20 次。
🟠 问题 2:Android KMP 卡回放缩放时游标回跳并产生时间状态错位 | 负责人:陈宝旺、谭伟
1. 现象与覆盖范围
- 258835:Android
8.4.1.6、Xiaomi23116PN5BC、山东潍坊,反馈“回放放大时间的时候,光标指示条乱跳”,同时提供 Logan 与 OBS 日志。 - 用户不是泛指卡顿。日志明确记录了缩放后游标从
08:52:15回跳到08:41:44,随后拖动时显示时间继续变化,而状态时间停留在旧值。 - 严重度评分:70 / 100。反馈量 10(1 名独立用户)、共性广度 30(Android、
8.4.1.6、具体机型、山东地区)、业务关键度 30(历史录像定位属于核心取证链路)。 - 去重判定:任务账本已有
T-20260922-170415-9496“排查 Android 卡回放拖动卡顿与时间跳转异常”,其下一步正是核对stateTimeSec与timeSec偏差;本期是该状态的同域复现,更新既有任务,不另建重复任务。
2. 神策证据
- 2026-10-22 截至查询时,Android
8.4.1.6的DeviceVideoPlayback约 2,477,470 PV / 1,227,557 UV,成功 2,350,156 PV,失败 127,314 PV,失败率 5.139%。 - 10 月 16 日至 21 日的完整日失败率分别为 3.944%、4.125%、4.103%、4.010%、4.012%、4.065%。10 月 22 日为未完整日,当前 5.139% 可用于风险提示,但不能直接解释为整天恶化。
DeviceVideoPlayback只能覆盖播放启动错误和大盘失败,不能度量“游标视觉位置跳变”。258835 在进入回放时上报的errorCode=200,说明播放链路本身成功,而用户看到的是页面状态同步错误;因此这不是“神策失败率未升高所以用户无问题”的反证。- 当前没有独立的
timeline_zoom_state_mismatch指标,无法估算该交互问题在全部缩放用户中的发生率。
3. Logan 关键日志
- 反馈 ID:258835。Logan 共 8,556 行、210,869 字节,另有 3 个 OBS logcat 附件。
08:54:48.145:KMPTimelineView.getCurrentScale callback, scale=1.0。08:54:48.541:首次调整后scale=10.0。08:54:49.992:DeviceVideoPlayback errorCode=200,说明首次进入回放成功。08:54:59.137-08:54:59.962:连续缩放期间,页面多次收到onTimeChanged timeSec=31935,对应08:52:15;日志中的stateTimeSec也是 31935。08:55:02.084至08:55:02.590:再次缩放后,onTimeChanged突然变成timeSec=31304,对应08:41:44;此时stateTimeSec=31304/31305。相对上一位置回跳 631 秒,即 10 分 31 秒。08:55:03.808-08:55:03.946:用户开始拖动,时间从 31335 连续变化到 31364,但stateTimeSec一直停在 31306,形成 29~58 秒的实时偏差。08:55:04.005:onTimeSelected timeSec=31375;08:55:04.309才把stateTimeSec更新到 31375,并执行seekReplay date=20261022084255。- 日志中的“回跳”和“显示值与状态值分离”与用户“光标指示条乱跳”的描述一致,不是主观误判。
4. 代码定位
seetong-kmp/modulePlayback/src/commonMain/kotlin/com/seetong/moduleplayback/page/playback/card/CardPlayBackPageTimeline.kt:65-76:每次构建TimelineConfig都把ctx.card.currentTimeSec下发给原生时间轴。- 同文件
:81-90:onTimeChanged只更新currentTimeText,没有同步更新currentTimeSec。因此拖动和缩放期间,原生时间轴的真实位置持续前进,而共享状态仍保留上一次松手时的时间。 CardPlayBackPageLogic.kt:191-218:applyZoomToTimeline先更新portraitTimelineScale和fullscreenTimelineScale,再调用原生applyScale。比例状态变化会触发页面重组,而重组携带的currentTimeSec是旧快照。Seetong-App-Android/.../KMPTimelineView.kt:125-158:updateConfig从配置中重新读取currentTimeSec,随后无条件center(currentTimeSec, false)。KMPTimelineView.kt:228-231:setScale又使用传入的anchor重新居中。配置更新与原生缩放方法之间没有版本号或交互锚点保护,旧状态可以覆盖新位置。- 调用链可归纳为:拖动或播放推进原生游标 →
onTimeChanged仅更新文本 → 点击缩放修改 scale 状态 → Kuikly 重组并重发旧currentTimeSec→updateConfig强制居中到旧时间 → 游标回跳。
5. 根因结论
- 置信度:现象 🟢 强;根因 🟢 强。
- 一句话根因:时间轴在交互过程中由原生控件持有最新时间,但页面共享状态只更新显示文本;缩放触发重配置时又把旧的
currentTimeSec下发给原生并重新居中,导致游标回跳与状态时间滞后。 - 关键证据链:用户现象与 Logan 的 631 秒回跳完全对应;代码中
onTimeChanged不写currentTimeSec、缩放会触发配置重组、原生updateConfig无条件居中到配置时间,三段形成闭合链路。
6. 建议下一步
- 分配给:Android KMP 卡回放负责人;沿用任务
T-20260922-170415-9496,状态保持P1 / captured。 - 缩放只更新
scale,不要用完整的旧TimelineConfig重新覆盖原生时间位置;若框架必须重组,配置必须使用当前原生游标或递增的交互版本号。 onTimeChanged同步更新一个轻量interactiveTimeSec,与最终提交的currentTimeSec分离;缩放、旋转、全屏恢复都读取交互锚点,松手onTimeSelected后再原子提交最终 seek 时间。- 在原生
KMPTimelineView中增加configVersion/gestureEpoch;若配置版本早于当前缩放或拖动操作,直接丢弃旧时间锚点。 - 回归覆盖播放中放大/缩小、拖动中缩放、连续点击 10 次、00:00 与 24:00 边界、倍速、切通道、前后台、横竖屏和枪球双轨。每个场景断言游标时间单调变化、显示值与状态值偏差不超过 1 秒、缩放前后锚点偏差不超过 1 秒。
- 新增埋点记录
beforeZoomTimeSec、afterZoomTimeSec、stateTimeSec、scale、gestureSeq,用于后续监控同一次缩放是否出现超过 5 秒的异常回跳。
本期扫描全量
| 分类与处置 | 反馈数 | 反馈 ID 或说明 |
|---|---|---|
🔴 HarmonyOS 1.1.2.3 视频、录像与回放链路聚集,进入问题 1 | 4 | 258795、258821、258774、258743 |
| 🟠 Android KMP 回放缩放游标回跳,进入问题 2 | 1 | 258835 |
| 🟡 回放或存储单点、缺少可归属证据 | 4 | 258836、258814、258783、258808 |
| 🟡 预览、连接、离线或设备可见性单点 | 9 | 258834、258826、258825、258822、258813、258776、258770、258762、258765 |
| 🟡 账号、付费套餐、电脑端登录或服务咨询 | 7 | 258793、258784、258757、258750、258804、258801、258798 |
| 🟡 设备硬件、灯光设置或单设备异常 | 2 | 258805、258760 |
| 🟤 低信息文本、测试文本或无效描述 | 4 | 258816、258749、258747、258746 |
| 🟢 用户操作或设备状态提示 | 1 | 258803 |
已折叠 1 条普遍性网络问题(含-102/-101/-1002与中/英/俄/法/西/葡/土/阿/日多语言网络提示模板,如Проверьте телефонную сеть、Please check your mobile network);全量明细见同名 Markdown 知识库。
反馈接口返回 total=96 / fetched=96 / complete=true / pages=2。上表按主问题唯一归类,合计 96 条;同一用户短时重复提交不放大反馈量。
心愿单亮点
| 心愿单 ID | 平台与版本 | 诉求 | 价值判断 |
|---|---|---|---|
| 5442 | Android / 8.3.14.2 | 增加被分享方继续共享摄像头的能力 | ⭐⭐ 可降低多级共享的操作成本,但需要明确权限边界和撤销链路 |
| 5441 | Android / 8.4.1.6 | 在画面信息中显示镜头焦距毫米数 | ⭐ 有助于工程与售后识别设备,需确认各机型字段是否稳定下发 |
| 5439 | Android / 8.4.1.6 | 支持在电视上安装 App 查看监控 | ⭐⭐ 可扩展固定场景查看入口,需评估大屏适配、账号权限和遥控器交互 |
数据源状态与待补证
- 反馈平台:✅ 正常。
total=96 / fetched=96 / complete=true / pages=2,时间窗口内无接口截断。 - 心愿单:✅ 正常。
total=16 / fetched=16 / complete=true。 - 神策:✅ 主查询成功。获得 HarmonyOS
1.1.2.3与 Android8.4.1.6的DeviceVideoPlayback错误码和近 7 天趋势;首次三条 SQL 因字段限定写成event.error_code失败,核对事件字段后改用error_code重跑成功,未使用失败结果生成结论。 - Logan:⚠️ 部分可用。258835 的 Logan 与 OBS 完整;问题 1 的 4 名 HarmonyOS 用户全部未提供 Logan,根因只能定为弱置信度。
- 代码仓:✅ Android、HarmonyOS、
seetong-kmp均在标准路径。已定位 Android 时间轴状态覆盖链路,以及 HarmonyOS 播放返回值、离线态和首帧错误处理缺口。 - 友盟:⏭️ 未调用。本期进入雷达的问题是功能不可用与时间轴状态错误,不是崩溃或 ANR。
- TAPD:⏭️ 未调用。两项均有任务账本中的既有捕获任务,先完成日志补齐与本地复现,不以历史 Bug 搜索替代根因验证。
- 待补证:HarmonyOS 4 名用户需要设备 SN、固件、网络类型和发生时刻日志;258835 需要补充不同缩放倍数与枪球双轨的录屏,以验证 631 秒回跳是否与时间和缩放比例变化呈固定关系。
下一期 = 第248期 = 2026-10-22-H17.md(今天下午 17:00;窗口 今日 09:00:32~17:00)