Seetong · Report

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

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

📌TL;DR 核心要点

  • 🔴 HarmonyOS 开启画中画后切换摄像头仍显示第一路画面,新反馈已从单点升级为两名独立用户复现,严重度 90 / 100,根因置信度中。反馈 258008 直接验证“关闭画中画后恢复正常”,覆盖 1.1.1.11、1.1.2.3、两款华为机型和两个省份;代码显示多个画面共用单例 PipManager,新旧画面会并发创建控制器并异步覆盖全局设备号,存在明确的旧选择回写窗口。沿用任务 T-20260924-090202-a811。
  • 🟠 远程视频与回放链路仍有 10 条延续信号,但按 24 小时去重不重复深挖。其中 258080 的 Logan 显示 4 路 NVR 通道均收到首帧,未支持“完全打不开”;“卡顿”仍需帧率、丢帧和渲染耗时才能判断。
  • 🟡 iOS 报警视频回放退化、手机号绑定失败、设备长期离线各为单点:分别只有 1 条直接反馈,均未达到 60 分雷达门槛;报警视频线关联既有任务 T-20261014-090651-44e1,本期仅列为观察。

🔥最近一个月 Top 问题

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

#问题(严重度降序)严重度平台版本负责人问题原因
1Android 8.4.1.6 及 HarmonyOS 1.1.1.11 单设备随机离线、P2P 恢复失败
16 期 · 145 条反馈
100Android · HarmonyOS1.1.1.11 / 8.4.1.6 / 1.1.1陈宝旺、冉博麟、唐胜、李国涛257582、257639 已确认是服务端心跳长期停更并伴随 P2P 离线,App 只是按离线状态展示;问题更可能在设备端、设备网关/P2P 服务或固件恢复机制,而不是 Android 播放器单点故障。
2Android 与 iOS 8.4.1.6 报警功能突然失效与通知不达
1 期 · 3 条反馈
90Android · iOS8.4.1.6陈宝旺、许源现有客户端样本表明 Android 通知权限与 token 注册均成功,故障更接近“服务端未生成报警或推送任务未送达”,但神策缺少报警生成与推送到达事件,iOS 样本又混合了通知权限关闭,当前不能完成单点定因。
3HarmonyOS 画中画状态导致切换设备后仍显示前一路画面
1 期 · 3 条反馈
90HarmonyOS1.1.1.11 / 1.1.2.3张跃译多个 HarmonyOS 画面共享一个无代次、无串行化、无旧控制器清理的 PipManager,切换设备时旧创建任务和新选择竞争,最终把第一路 XComponent、savId 或恢复状态保留下来。
4升级后回放体验整体退化
4 期 · 18 条反馈
85Android · iOS8.4.1.6 / 8.3.14.2唐胜、许源、欧阳荣、谭伟8.4.1.6 对回放链路做了多处改动(时间条 UI、通道切换进度对齐、报警-录像联动),导致回放体验多点退化;Logan 显示取流层无崩溃,问题在"UI/状态对齐 + 报警录像关联"而非连接失败。
5KMP 回放页未申请屏幕常亮,回放中手机自动息屏
11 期 · 29 条反馈
84Android · HarmonyOS8.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,回放过程中发生系统级息屏。
6iOS 8.1.2.4 微信登录授权码重复提交触发 30100225
1 期 · 3 条反馈
80iOS8.1.2.4 / 8.1.204 / 8.4.106待定微信回调与恢复登录没有一次性 state、幂等锁和授权码消费机制,重复回跳或重试会把同一个单次授权码再次发给服务端,服务端以 30100225 拒绝后客户端仍保留旧状态。
7iOS 老版本微信登录空授权码触发 30100222
1 期 · 1 条反馈
80iOS8.1.3.5 / 8.1.305 / 8.1.503位冬微信授权回跳在当前旧版 iOS 上返回了空 code,客户端没有把它视为失败边界,仍向服务端提交空授权码,最终稳定触发 30100222。
8KMP 卡回放取「当天录像」时走云回放分支,失败后无超时兜底并反复重试
1 期 · 4 条反馈
71Android8.3.11.3 / 8.4.1.6陈宝旺、谭伟KMP 回放页在选择 Tab 时只信设备记忆、不信设备能力,把 supportCloud=false 的设备硬切到云回放 Tab 并以「前一天」初始化;云链路从未 prepared(currentVideoUrl 空、cloudPrepared=false),失败事件 result=0 又恰好落入 result<0 的无退避重试分支,同时 SD 异常态在非 WiFi IPC 上被 return NONE 吞掉——三者叠加,用户既看不到当天录像也收不到失败提示,且失败状态被 saveLastPlaybackTab(tabIndex=1) 固化到下一次。
9iOS 8.4.1.6 冷启动点击离线报警推送后未进入回放
1 期 · 2 条反馈
70iOS8.4.1.6 / 8.4.106欧阳荣、谭伟、陈宝旺当前冷启动没有留下通知响应回调或 KMP 回放路由证据,用户实际停留在普通启动链路;最可能的缺口是冷启动通知回调 / 参数分支未被当前处理逻辑承接或没有兜底,但尚不能确认是 APNs payload 缺 content、回调未到、视图条件拦截还是路由失败。
10Android 8.4.1.7 KMP 回放页关闭窗口无效
1 期 · 1 条反馈
70Android8.4.1.6 / 8.4.1.7唐胜、陈宝旺当前只能确认 KMP 回放页成功创建并出流、用户随后进入其他页面,无法确认关闭请求是否到达 closePage;最可疑点是关闭桥接缺少结果反馈,以及返回键存在双重消费路径,但尚未形成直证。

🔴 问题 1:HarmonyOS 画中画状态导致切换设备后仍显示前一路画面 | 负责人:张跃译

现象与覆盖范围

  • 258003:HarmonyOS 1.1.1.11、HUAWEI VYG-AL30、山西朔州,反馈“打开第一个画面后,想看其他画面怎么点都是第一个”;1 名用户、1 个版本、1 个机型、1 个地区。
  • 258004、258008:HarmonyOS 1.1.2.3、HUAWEI MRT-AL10、山东威海,为同一用户连续反馈。258004 描述必须重启后才能短暂切到第二路;258008 补充,关闭画中画后切换恢复正常,这是本期最强的客户端状态线索。
  • 共 3 条反馈、2 名独立用户,覆盖 2 个版本、2 个机型、2 个省级地区。不能把同一用户 9 分钟内的两次反馈算成两名用户。
  • 严重度评分:90 / 100。
  • 反馈量 20:3 条同域反馈,处于 3~5 条档。
  • 共性广度 30:版本、机型、地区三个维度均有两项,满足至少三个维度。
  • 业务关键度 40:实时预览是安防主链路,且画面身份错配会直接影响用户对监控对象的判断。
  • 证据边界:当前只能确认“当前账号下切换设备时画面没有随选择更新”,不能仅凭症状认定跨账号视频串流或隐私泄漏;尚缺设备 ID、实际流来源和 Logan 的对应关系。

神策证据

  • 本期尝试查询 PreviewSessionSummary 的 HarmonyOS 版本分布、MonitorFrameResult.fail_reason 和 AccountBind.error_code,三条聚合查询均超时;随后神策 MCP 服务断开。按本 skill 的同一查询失败阈值,已停止继续重试,因此本期没有可用于证明该问题影响面的线上聚合数据。
  • 现有神策事件中没有“点击目标设备 ID”与“实际渲染设备 ID”的一致性字段,即使服务恢复,也只能提供预览会话量和版本背景,不能直接替代客户端状态链证据。
  • 因此根因判断主要依赖两份独立用户的文本复现、明确的画中画开关对照,以及代码中的单例覆盖路径;不把缺失的神策数据填成 0。

Logan 关键日志

  • 258003、258004、258008 的 loganFileDownloadUrl 均为空,没有类名、错误码、控制器创建结果或实际流设备 ID 可引用。
  • 这三条反馈发生在 09:31~09:37,用户没有提供日志;不能在报告中伪造类名、行号或 PiPWindow 状态码。
  • 下一步必须补采日志,并至少记录点击的 devId、PipManager.savId、PipManager 当前控制器对应的设备、XComponentController 所属画面、PiPWindow.create/startPiP/stopPiP 返回值。没有这些字段时,只能把根因置信度定为中,不能定为强。

代码定位

  • feater/playDevice/src/main/ets/view/videoPreview/comp/SingleVideoComp.ets:193-205:每个画面组件把自己的 XComponentController 写入同一个 PipManager,随后调用 creatPip(this.devId);异步完成后,未校验结果是否仍对应当前选中的设备,就更新全局 savId 并持久化该画面的 pipModule。
  • basic/src/main/ets/utils/PipManager.ets:61-106:PipManager 是单例,只持有一个 mXComponentController 和一个 pipController;creatPip() 可被多个画面并发调用,创建新控制器前没有先停止并注销旧控制器,也没有请求代次或取消机制。较晚完成的旧请求可覆盖新请求。
  • feater/playDevice/src/main/ets/view/videoPreview/comp/SingleVideoComp.ets:479-495:点击新画面时只更新共享的 currDevId 和 selectedIndex,没有先解绑旧的画中画控制器;随后 currDevIdChange() 在 :207-216 触发新画面再次 pipInit(),形成新旧控制器的切换竞争。
  • basic/src/main/ets/utils/PipManager.ets:149-167:状态回调继续使用共享的 savId 和持久化 pipModule;当旧创建任务最后完成时,ABOUT_TO_RESTORE/STARTED/STOPPED 都会落到旧设备,和当前界面选择不一致。
  • basic/src/main/ets/utils/PipManager.ets:170-180:stopPip() 的完成回调还会注销监听,但没有“仅注销当前代次”判断;在快速切换设备时,旧 Promise 完成可能清理新控制器刚注册的监听。
  • 调用链:点击设备卡片 → SingleVideoComp.onClick 更新 currDevId → 新画面 currDevIdChange/pipInit → PipManager.updateXComponentController → PiPWindow.create → 旧请求与新请求异步竞争 → 全局控制器/持久化设备号可能保留第一路画面。
  • 修复方向锚点
  • 将 deviceId + XComponentController + generation 作为一个原子参数传给 PipManager,禁止分两步更新全局选择。
  • 每次切设备先停止并销毁旧 PiPController;若 API 不支持并发创建,则把创建串行化。
  • 每个异步 create/start/stop/restore 完成后校验 generation;旧请求只能释放自己的资源,不能写 savId、偏好缓存或新控制器的监听。
  • onStateChange、controlEvent、ABOUT_TO_RESTORE 均应显式绑定创建时的 devId,不再读取共享的“最后一次写入”状态。
  • 关闭画中画时应彻底注销控制器和本页面监听,不能让上一画面的系统画中画会话继续持有首个 XComponent。

根因结论

  • 置信度:🟡 中。
  • 一句话根因:多个 HarmonyOS 画面共享一个无代次、无串行化、无旧控制器清理的 PipManager,切换设备时旧创建任务和新选择竞争,最终把第一路 XComponent、savId 或恢复状态保留下来。
  • 关键证据链:两名独立用户均描述第二路持续显示第一路;其中 258008 直接证明关闭画中画后恢复;代码确认每个画面都异步改写同一单例且没有“当前选择”校验。缺少 Logan,因此不能判断是 create 失败、控制器复用还是偏好回写最先触发。
  • 安全边界:当前证据不足以宣称跨账号画面泄漏;应作为高优先级画面身份一致性缺陷处理,并在复现时核对两个设备是否属于同一账号。

建议下一步

  • 分配给:冉博麟(画面组件与画中画切换)、张跃译(PipManager 单例和控制器生命周期);欧阳荣复核 HarmonyOS 行为并确认是否存在跨账号风险。
  • 先修单例生命周期:切换画面时停止旧控制器、串行创建新控制器、引入请求代次并禁止旧 Promise 回写。
  • 回归矩阵覆盖 1.1.1.11 与 1.1.2.3、同账号两台 IPC、NVR 多通道、快速连点 A→B→C、画中画开启/关闭、应用前后台切换、画中画恢复、页面返回后再次进入八种场景。
  • 每个场景记录点击目标、currentDevId、displayDevIdList、savId、控制器所属 devId、XComponent 所属 devId、首帧设备标识及 PiPWindow 状态;确认画面身份后才允许把任务升级或关闭。
  • 任务账本:沿用 T-20260924-090202-a811,保持 P1 / captured,本期新增两名独立用户和画中画关闭对照证据。

补充观察与去重

  • 远程视频/回放延续线 10 条:258014、258026、258028、258037、258053、258057、258071、258075、258080、258105。H09 第239期已在同一 24 小时窗口分析跨端视频与回放多点失败,这些反馈不重复展开为新根因。258080 的 Logan 在 14:54:52~14:54:57 显示 NVR 34723630 的 CH-5~CH-8 均返回 AddWatch nResult=0 并收到 onRecvFirstFrame,只能证明首帧曾成功,不能证明持续播放不卡;仍需帧率、丢帧、解码和渲染耗时。
  • iOS 报警视频退化 1 条:258028 描述更新后点击报警视频卡在报警图、反复操作才偶尔回放。该症状与既有报警入口稳定性任务 T-20261014-090651-44e1 同域,但本期只有 1 条、无 Logan,不单独升级。
  • 手机号/账号绑定 1 条:258063 在注册、找回密码和设备绑定相关链路多次请求服务端,随后同一会话成功通过微信登录,服务端没有持续拒绝同一操作;当前不能认定 App 无法绑定手机号,需补用户实际操作页面与验证码阶段截图。
  • 设备离线 3 条:258092 的 Logan 与设备列表接口持续返回 devIsOnline=0;lastHeartTime=2026-09-08 14:50:58、p2pLastHeartTime=2026-09-08 15:53:21,且反复收到 TPS_MSG_P2P_OFFLINE。这证明服务端在 10 月 18 日仍认定设备自 9 月 8 日起离线,不能归因为 App 画中画或预览状态;258020、258034 缺少设备 ID 和心跳证据。
  • 灯光与 AI 侦测各 1 条:258066 的 Logan 证明设备支持 soft_pr_luma_day_to_night、LightBoard_DoublePWM_IPC 等能力,灯光设置页请求返回 ret=0,但无法证明物理红外灯/白光灯已执行;需设备固件与现场视频。258089“人形追踪不录屏”无 Logan,需核对追踪开关、录像策略与事件生成。
  • 产品变化/无效样本 7 条:258030 为更新后默认进入监控画面而非首页,属产品行为变化待确认;258021、258031、258036、258061、258062、258098 语境不足或重复提交,不能作为独立故障样本。

本期扫描全量

分类反馈数反馈 ID处置
-102、-101、-117681602 普遍网络提示79258000、258001、258002、258005、258006、258007、258009、258010、258011、258012、258013、258015、258016、258017、258018、258019、258022、258023、258024、258025、258027、258029、258032、258033、258035、258038、258039、258040、258041、258042、258043、258044、258045、258046、258047、258048、258049、258050、258051、258052、258054、258055、258056、258058、258059、258060、258064、258065、258067、258068、258069、258070、258072、258073、258074、258076、258077、258079、258081、258082、258083、258084、258085、258086、258087、258088、258090、258091、258093、258094、258095、258096、258097、258099、258100、258101、258102、258103、258104🟣 排除;仅网络提示,无具体业务链路
HarmonyOS 画中画切设备后画面不更新3258003、258004、258008🔴 进雷达;详情见问题 1
远程视频、回放、录像不可用或卡顿延续线10258014、258026、258028、258037、258053、258057、258071、258075、258080、258105🟡 24 小时同域去重;关联既有视频与回放任务
设备离线、掉线或长期不可恢复3258020、258034、258092🟡 设备/心跳证据不足;258092 已确认服务端离线
红外灯与白光灯不亮1258066🟡 单点;转设备固件与现场环境核查
人形追踪不录屏1258089🟡 单点;需追踪开关、录像策略和算法事件
无法登录1258078🟡 单点;无错误码与 Logan
无法绑定手机号1258063🟡 单点;同会话后续登录成功,需补复现页面
更新后默认进入监控画面1258030🟡 产品行为变化待确认
无效、重复或语境不足6258021、258031、258036、258061、258062、258098🟢 不计入故障共性
合计106进雷达 3 条 + 排除 103 条

心愿单亮点与数据源状态

心愿单 ID平台/版本诉求价值判断
5370HarmonyOS/1.1.2.3卡回放时在时间轴小画面标出人形事件,减少逐段盲找⭐⭐⭐ 与现有 AI 侦测能力协同,适合做回放检索增强
5371Android/8.3.14.2微弱光线下红外灯和白光灯均不亮的故障诉求⭐⭐⭐ 与反馈 258066 同日同账号,应优先按设备缺陷处理而非普通建议
5373、5374Android/8.4.1.6设备时间持续校准失败,同一用户重复提交⭐⭐ 属设备时间同步稳定性问题,需核对设备 RTC 与服务端校时
5375Android/8.4.1.6“卡卡卡”并附两张截图⭐ 信息不足,需确认卡顿页面和发生时段
  • 反馈平台:✅ 正常。接口返回 total=106 / fetched=106 / complete=true;日期窗口由接口过滤,并按 createTime 复核为 106 条。
  • 心愿单:✅ 正常。窗口内 total=7 / fetched=7 / complete=true;5372、5376 无明确诉求,未列入亮点表。
  • 神策:⚠️ 本轮 PreviewSessionSummary、MonitorFrameResult、AccountBind 三次聚合查询连续超时,随后服务断开;已按阈值停止重试,不将缺失数据写为 0。
  • Logan:⚠️ 问题 1 的 3 条均未提供日志;离线样本 258092 和灯光样本 258066 已取得有效日志。其余单点没有统一覆盖。
  • 代码仓:✅ 正常,seetong-app-harmony 已定位到具体文件、调用链和异步覆盖分支。
  • 友盟:⏭️ 未调用,本期无崩溃、ANR、闪退类主问题。
  • TAPD:⏭️ 未调用,功能性根因分析阶段不引入历史 Bug 干扰。
  • 待补证:补采问题 1 三份 Logan;神策恢复后查询 HarmonyOS 各版本预览会话量;258063 补充实际绑定阶段与响应页;258066 获取现场视频及灯光控制响应 XML;258089 核对设备算法事件和录像计划。

下一期 = 第241期 = 2026-10-19-H09.md(明天上午 09:00;窗口 2026-10-18 17:00:30 ~ 2026-10-19 09:00)

🗂️历史期次

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