🎯 Seetong 问题雷达 17:00 第234期
时间窗口:2026-10-15 09:00:00 ~ 2026-10-15 17:00:00(Asia/Shanghai)
TL;DR 核心要点
- 🟠 Android 8.4.1.6 回放页「不常亮 + 时间轴不同步」双症状合并且在同一条反馈(严重度 62 / 100,置信度 中)——反馈 257450(realme RMX3461 / 江苏苏州)原话「回放是屏幕不是常亮。而且没个头回放时间转换不同步」,Logan 直证该用户回放全程零 Screen awake 日志,且 timeline time changed 的 timeSec 连续变化时 stateTimeSec 冻结在 32690 不变;同窗口 257394(Redmi M2012K11AC / 广东江门)「回放放大左下角有画面」,两次 applyZoomToTimeline zoomIn=true 后 RecordPlayerView-updateTransform 仍为 scale = 1.0 offsetX = 0.0 offsetY = 0.0,指向回放视口变换未随缩放生效,与本问题同一页面同一变换链路。沿用任务 T-20260926-170258-576a(回放熄屏,已连续第 4 期)、T-20260922-170415-9496(时间跳转异常)
- 🟠 HarmonyOS 1.1.1.11 端「回放不可用」再次独立出现(严重度 60 / 100,置信度 弱)——反馈 257443(HUAWEI CHZ-AL00 / 重庆)原话「看不到」,同窗口另有 257411「设备离线什么原因」、257393「无缘无故乱扣费」,1.1.1.11 版本占比 15 / 85(17.6%)居第二位;该端全部 15 条反馈 Logan 提供数为 0,本期为第 13 期零覆盖,无法做根因分析,只能给弱置信度。沿用任务 T-20260926-170258-2226(HarmonyOS 实时预览与回放大范围不可用)
- 现象描述:用户在 KMP 回放页看到三类表现同时存在——(a) 观看回放时手机不保持屏幕常亮,屏幕会自行熄灭;(b) 拖动时间轴时画面时间与时间轴状态不同步;(c) 双指放大回放画面后,画面变换未跟随缩放,左下角仍有残留画面。
最近一个月 Top 问题
按严重度与复发期数排序,已把跨期同类反馈归集;负责人由问题代码锚点对应的 Git 提交历史(blame / 近期主要提交者)反查;数据窗口:最近 30 天(截至 2026-10-15)。
| # | 问题(严重度降序) | 严重度 | 平台 | 版本 | 负责人 | 问题原因 |
|---|---|---|---|---|---|---|
| 1 | 升级后回放体验整体退化 4 期 · 18 条反馈 | 85 | Android · iOS | 8.4.1.6 / 8.3.14.2 | 唐胜、许源、欧阳荣、谭伟 | 8.4.1.6 对回放链路做了多处改动(时间条 UI、通道切换进度对齐、报警-录像联动),导致回放体验多点退化;Logan 显示取流层无崩溃,问题在"UI/状态对齐 + 报警录像关联"而非连接失败。 |
| 2 | 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,回放过程中发生系统级息屏。 |
| 3 | HarmonyOS 1.1.1.11 回放 / 监控链路不可用连续第 6 期聚集 14 期 · 130 条反馈 | 72 | HarmonyOS | 1.1.1.11 / 1.1.1 / 1.1.1.6 | 陈宝旺、冉博麟、唐胜、李国涛 | 待定——HarmonyOS 1.1.1.11 的回放 / 监控链路存在跨机型跨地区的选择性失败,但由于 HarmonyOS 端 Logan 上报链路自 2026-09 起持续缺失(连续 6 期 0 条可下载),根因无法从客户端日志侧确认,当前只能确认「影响面真实存在且在扩大机型覆盖面」。 |
| 4 | KMP 卡回放取「当天录像」时走云回放分支,失败后无超时兜底并反复重试 1 期 · 4 条反馈 | 71 | Android | 8.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) 固化到下一次。 |
| 5 | iOS 灯光配置「提示失败 / 实际成功」——`NetworkIndicatorEnable="-1"` 非法值导致 1521 返回 -1 1 期 · 3 条反馈 | 68 | iOS | 8.4.1.4 / 8.4.1.6 | 欧阳荣、谭伟 | iOS 端把 1301 + 1108 + 1521 三条独立协议的结果汇聚到同一个回调 block(UserClient.mm:1504 / 5091 / 5099),任一条失败即判定整次保存失败;当 1521 携带设备并不支持的 NetworkIndicatorEnable="-1" 字段时返回 Result="-1",UI 因此报「配置失败」,而 1301 / 1108 已生效 → 用户看到「提示失败、实际成功」。 |
| 6 | Android 8.4.1.6 进入监控长期「一直加载」——`add_watch_result=-1` 连续失败 40 次、首帧迟至 105 秒 3 期 · 10 条反馈 | 66 | Android · iOS | 8.4.1.6 | 唐胜、张威、谭伟、欧阳荣 | 进入监控页时 P2P 通道尚未建立,客户端在 105 秒窗口内以约 10 秒为周期反复 addWatch(返回 -1)→ stopWatch 空转,且无首帧超时兜底,用户侧表现为「一直加载」。 |
| 7 | iOS 回放「当前同时播放人数已达上限」误触发——NVR 主设备与通道共享 `cloudId` 导致额度自占 1 期 · 1 条反馈 | 64 | iOS | 8.3.14.3 / 8.4.1.6 | 欧阳荣、谭伟、位冬 | iOS 端 cloudId 被定义为「NVR 主设备与全部通道的公共分组键」(Camera.h:500 / STDeviceListModel.m:657),回放页又固定以 cameraArray.firstObject 作为回放上下文(STPlaybackVC.m:6046-6048),使单用户单设备场景下也可能同时占用「主设备会话」与「通道会话」两份 NVR 并发额度;一旦 NVR 返回 -7 / -14,STPlaybackVC.m:1422 立即把它翻译成「当前同时播放人数已达上限」并强制停止回放、隐藏功能栏,用户表现为「回放看不了」。 |
| 8 | Android 8.4.1.6「不存录像了」——设备侧存储能力位缺失 2 期 · 6 条反馈 | 63 | Android · HarmonyOS · iOS | 8.4.1.6 / 1.1.1.11 | 唐胜、张威 | 待补证——该 HONOR BRC-AN00 用户的设备在能力协商中未声明本地存储能力,客户端据此既不提示也无法确认存储可用,表现为「不存录像」;需设备端确认存储介质状态与固件行为。 |
| 9 | Android 8.4.1.6 卡回放开启 2 倍速后画面丢帧、时间轴跳 10 余秒 2 期 · 2 条反馈 | 62 | Android | 8.4.1.6 | 陈宝旺、唐胜 | 卡回放链路对时间轴滚动中间值未做节流(onTimeChanged 直通),且帧回调的去重粒度为固定 1 秒,在 2 倍速下单帧时间跨度已超过去重窗口,两者叠加使刻度尺与文案出现十秒级跳变;画面丢帧则需由播放器侧 controlNvrReplay(..., NVR_ACTION_FAST, speed, "") 的取流策略确认。 |
| 10 | 云录像漏录人(AI 人形录像缺失) 1 期 · 2 条反馈 | 62 | Android | 8.3.14.2 / 8.4.1.6 | 陈宝旺、唐胜 | 云录像片段的结束判定与人员活动尾段不匹配,导致"人走后最后一段"容易被提前截断;该链路缺少线上埋点,无法量化发生面。 |
🟠 问题 1:Android 8.4.1.6 回放页「不常亮 + 时间轴不同步 + 缩放不生效」同源聚集 | 负责人:唐胜、陈宝旺、谭伟
1. 现象与覆盖范围
- 现象描述:用户在 KMP 回放页看到三类表现同时存在——(a) 观看回放时手机不保持屏幕常亮,屏幕会自行熄灭;(b) 拖动时间轴时画面时间与时间轴状态不同步;(c) 双指放大回放画面后,画面变换未跟随缩放,左下角仍有残留画面。
- 涉及反馈:257450(Android 8.4.1.6 / realme RMX3461 / 江苏苏州常熟 / 15:58:32,Logan 可读)、257394(Android 8.4.1.6 / Redmi M2012K11AC / 广东江门 / 10:57:09,Logan 可读)、257383(Android 8.4.1.6 / OPPO PHJ110 / 河南开封 / 10:00:07,Logan 可读,「设备没法回放」)、257446(Android 8.4.1.6 / vivo V2164A / 山东临沂 / 15:16:27,Logan 无有效内容)
- 覆盖维度:1 平台(Android)× 1 版本(8.4.1.6)× 4 机型(realme / Redmi / OPPO / vivo)× 3 地区(江苏 / 广东 / 河南)= 3 个维度
- 时间分布:4 条分散在 10:00 ~ 15:58 之间,非单点突发
- 严重度评分:62 / 100(反馈量 20 / 共性 20 / 关键度 30)
- 反馈量 20:窗口内 4 条回放类反馈(3~5 条档),其中 3 条为可读 Logan 的独立样本
- 共性 20:4 机型 × 3 地区 × 1 版本(2 维)
- 关键度 30:录像回放类,取 30(低于设备掉线/远程查看的 40)
2. 神策证据(核心数据源)
- 事件可用性核验:
| 事件 | 近 7 天(10-09 ~ 10-15)触发 | 结论 |
|---|---|---|
NvrDeviceVideoPlayback | 仅 10-09 / 10-12 / 10-13 共 3 天有量,日触发 1~5 次、日用户 2~3 人 | 事件存在但近乎无埋点覆盖,不能作为回放链路健康度指标 |
UCCloudPlayBackResult | 查询返回 0 行 | 云存回放结果事件无数据 |
PlayBackEvent / MonitorScreenExit | 查询返回 0 行(列名为空) | 事件不存在或未接入 |
- 关键缺口:回放链路的屏幕常亮动作没有任何服务端埋点。Logan 中
KuiklyRenderActivity.setKeepScreenOn已在客户端打日志(SCREEN_AWAKE_TAG),但该日志不上报神策,因此无法从服务端回答「有多少回放会话请求过常亮、多少被拒绝」。这是本期最重要的证据边界。 - 趋势判断:无法下趋势结论。
NvrDeviceVideoPlayback的日均 1~5 次量级不足以支撑任何趋势或分布推断,禁止用该事件的口径代表线上回放整体情况。
3. Logan 关键日志(核心数据源)
- 反馈 257450(realme RMX3461 / 江苏苏州,405567 bytes / 21127 行,覆盖 10-15 全天含 15:29 时段)
- 该用户当日多次进入 KMP 回放页:
[L5256] KMP_SCAN_TRACE-onCreate page=PlayBackPage、data={"devId":"9388193-CH-2",...,"fromPreviewPlayback":true,"canRotate":true} - 回放正常启动并出首帧:
> [L5411] 2026-10-15 10:04:44.640 RecordPlayerView-startReplay: devId=9388193-CH-2, date=20261015090444, recordType=268435455 this=224737753 oldViewId=-1 oldOwner=null renderer=42987422
> [L5419] 2026-10-15 10:04:45.123 LibImpl-onNvrReplayResp, act=0,have audio=1,video codec=H264
> [L5425] 2026-10-15 10:04:45.715 RecordPlayerView-onRecvFirstFrame: devId=9388193-CH-2 this=224737753 viewId=29 owner=42987422 renderer=42987422 isOwner=true
- 常亮证据(关键):全份 21127 行日志中
Screen awake命中 0 次。代码里KuiklyRenderActivity.setKeepScreenOn(KuiklyRenderActivity.kt:84)必然打印"Screen awake requested=..."与"Screen awake applied=..."(:90/:96),未打印即表示该回放会话从未发起常亮请求。 - 同一 Activity 内其其它 KMP 页面确实发起过请求:
[L2647] Screen awake requested=false, page=DeviceListPage(DeviceListPage的关闭请求存在,说明桥接链路本身可用),反衬回放页没有对应请求。 - 时间轴不同步证据(关键):
> [L5430] 10:04:47.749 timeline time changed, source=portrait, timeSec=32958, text=09:09:18, stateTimeSec=32690
> [L5432] 10:04:47.767 timeline time changed, source=portrait, timeSec=33053, text=09:10:53, stateTimeSec=32690
> [L5434] 10:04:47.786 timeline time changed, source=portrait, timeSec=33115, text=09:11:55, stateTimeSec=32690
> [L5436] 10:04:47.801 timeline time changed, source=portrait, timeSec=33165, text=09:12:45, stateTimeSec=32690
> [L5438] 10:04:47.814 timeline time changed, source=portrait, timeSec=33249, text=09:14:09, stateTimeSec=32690
> [L5440] 10:04:47.833 timeline time changed, source=portrait, timeSec=33299, text=09:14:59, stateTimeSec=32690
—— 在 98 毫秒内 timeSec 从 32958 变到 33299(跨 341 秒),而 stateTimeSec 始终冻结在 32690。这与用户原话「回放时间转换不同步」逐字对应。
- 非预期事件:同会话内
receive playback play failed event, result=0反复出现([L5418]、[L5424]),result=0表示非失败码,属误报回放失败,与任务T-20261014-090647-bbbe(startReplay与失败事件竞态)同族,本期作为同页并发问题记录。 - 反馈 257394(Redmi M2012K11AC / 广东江门,覆盖 09:13 ~ 09:1x)
- 回放正常启动出首帧:
[L7893] RecordPlayerView-startReplay: devId=45809651 ... viewId=29、[L7915] receive playback play failed event, result=0 - 缩放不生效证据(关键):
> [L8288] 09:14:01.326 track playback event elementId=playback_card_timeline_zoom_long_press_in
> [L8289] 09:14:01.329 PlayBackPage:applyZoomToTimeline, zoomIn=true, fullscreen=false, immediate=true
> [L8292] 09:14:01.382 PlayBackPage:applyZoomToTimeline, zoomIn=true, fullscreen=false, immediate=true
> [L8295] 09:14:01.441 PlayBackPage:applyZoomToTimeline, zoomIn=true, fullscreen=false, immediate=true
而画面变换日志全程为:
> [L7557] 09:13:48.957 RecordPlayerView-updateTransform scale = 1.0---offsetX = 0.0---offsetY = 0.0
> [L8417] 09:14:04.973 RecordPlayerView-updateTransform scale = 1.0---offsetX = 0.0---offsetY = 0.0
> [L9081] 09:14:18.766 RecordPlayerView-updateTransform scale = 1.0---offsetX = 0.0---offsetY = 0.0
—— applyZoomToTimeline 已连续下发 3 次 zoomIn=true,updateTransform 的 scale 始终为 1.0、偏移始终为 0.0,即缩放事件未传递到视口变换层。这正是用户「回放放大左下角有画面」的直接机制。
- 反馈 257383(OPPO PHJ110 / 河南开封,覆盖 09:04 ~ 09:42)
- 回放链路成功:
[L16555] searchNvrRecByTimeEx ... devId=[31668148] 20261015→[L16631] startReplay: devId=31668148, date=20261015072835→[L16636] onNvrReplayResp, act=0, audio=1, video codec=H265→[L16643] mark card playback first frame(约 880 ms 出首帧) - 该用户在本份日志内两次回放均成功出首帧,与反馈「设备没法回放」不一致。判定为失败瞬间未被 Logan 覆盖(日志起点 09:04,用户 10:00 提交反馈),不作根因使用。
- 反馈 257446(vivo V2164A / 山东临沂,82310 bytes / 3927 行):日志内无任何回放页记录,为无效样本,标「Logan 未覆盖问题时段」。
- Logan 结论:257450 与 257394 两份样本同时覆盖了问题发生的动作时刻,且分别精确对上用户的 (a)(b) 与 (c) 两类描述——本问题的两条主证据链均来自 Logan 直证,置信度因此为「中」而非「弱」。
4. 代码定位(详细)
- 涉及模块:KMP 回放页(Android 宿主)—
Seetong5.0ForSeetong/Seetong5.0/kmp/与Seetong5.0ForSeetong/Seetong5.0/app/ - 关键类与锚点:
- 常亮桥接(链路完整但无人调用)
KuiklyRenderActivity.kt:84-92(setKeepScreenOn(pageName, enabled),入参落到screenAwakeRequested并打印SCREEN_AWAKE_TAG)KuiklyRenderActivity.kt:94-102(applyScreenAwakeRequest():window.addFlags(FLAG_KEEP_SCREEN_ON)/clearFlags,受isActivityResumed && screenAwakeRequested联合约束)KMPBridgeModule.kt:108-113(原生桥接方法"setKeepScreenOn",从params取pageName/enabled)- 结论:宿主侧接口齐备,但全仓库
setKeepScreenOn的调用者只有这一处桥接分发(KMPBridgeModule.kt:108),KMP 页面侧不存在调用点。 即回放页从未发起常亮请求——与 257450 日志零Screen awake完全吻合。 - ⚠️ 需注意:本仓库工作区为裁剪视图,KMP 前端页面(Kotlin/JS 侧的
PlayBackPage实现)不在当前工作区,「调用点完全不存在」需 owner 在前端页面仓库复核;但不改变「257450 该次回放确实没有发起常亮请求」这一事实。
- 视口变换 / 缩放链路(事件到达被丢弃)
PlayBackPage.applyZoomToTimeline(前端页面侧,日志可见zoomIn=true, fullscreen=false, immediate=true连续下发)RecordPlayerView.updateTransform(RecordPlayerView.kt内,日志固定输出scale = 1.0 offsetX = 0.0 offsetY = 0.0)RecordPlayerView.startReplay(RecordPlayerView.kt:220-259):device.m_view_id = playbackWindowId(:243)、device.m_video = openglesRender(:245)、IO 线程startNvrReplay+ 重试 +onReplayError(:249-258)
- 时间轴状态同步
KMPTimelineView.getCurrentScale(KMPTimelineView.kt,日志scale=10.0)PlayBackPage.timeline time changed(timeSec与stateTimeSec两个字段分离上报)- 调用链:
AlarmFragment2/ 预览页 →PlaybackPageRouter.openPlaybackPage(PlaybackPageRouter.kt:43-80)→shouldOpenCrossPlatformPlayback()(:84-96,读crossPlatformConfig.and)→openKmpPlaybackPage(:101-141)→ KuiklyPlayBackPage→KMPPlayBackVideoView.playVideoByTime(KMPPlayBackVideoView.kt:223-229)→RecordPlayerView.startReplay→LibImpl.startNvrReplay - 关键分支:
openKmpPlaybackPage构造页面参数时isCloudReplay一行仍处于注释状态(PlaybackPageRouter.kt:120,//put("isCloudReplay", isCloudReplay)),KMP 侧以默认值消费 → 与原生 legacy 路径行为分叉(本期新增关键证据:该注释由sheng.tang于 2026-07-27 提交e65cbfa20引入,提交信息为「安卓跳转回放参数不携带进入的tab,让KMP控制」,属于有意为之的参数移交,需确认 KMP 侧是否已真正接管该语义)- 257450 日志
resolveSavedPlaybackTabForCurrentDevice, devId=9388193-CH-2, supportCloud=false, savedTabIndex=1, targetTabIndex=1表明切页逻辑已由 KMP 接管,但savedTabIndex与supportCloud=false的组合语义待确认 - 修复方向锚点:
- 优先:在 KMP 回放页进入/退出时补齐
setKeepScreenOn(pageName="PlayBackPage", enabled=true/false)调用(宿主侧KuiklyRenderActivity.kt:84已就绪,无需改动宿主) - 排查
applyZoomToTimeline(zoomIn=true)到RecordPlayerView.updateTransform之间的变换参数传递,确认scale是否被硬编码为 1.0 或被后续事件覆盖 - 收敛
stateTimeSec与timeSec的双字段语义:拖动过程中stateTimeSec应随松手提交更新,而非冻结 - 修正
receive playback play failed event, result=0的误报过滤(result=0不应作为失败事件广播)
5. 根因结论
- 置信度:🟡 中
- 一句话根因:Android KMP 回放页的三处页面级状态没有被正确下发/承接——常亮请求从未发起(宿主接口空置)、缩放事件在通往视口变换层时被丢弃、时间轴
stateTimeSec冻结在拖动起始值;三者同属「KMP 页面状态 → 原生播放器渲染」这一条状态同步链路的系统性缺失,而非三个独立 Bug。 - 关键证据链:257450 的 Logan 同时提供「零
Screen awake且同 Activity 其它页有该日志」+「timeSec98 ms 内跳 341 秒而stateTimeSec冻结」;257394 的 Logan 提供「zoomIn=true三次而updateTransform恒为 1.0/0.0/0.0」;两条样本与用户原话逐条对应,且跨 4 机型 3 地区聚集。 - 明确不成立的推断:不得写成「8.4.1.6 回放完全不可用」——257383 的 Logan 显示另有一路回放在约 880 ms 内成功出首帧(
mark card playback first frame),说明初始化链路本身可用。
6. 建议下一步
- 分配给:唐胜(
RecordPlayerView.kt/KMPPlayBackVideoView.kt与PlaybackPageRouter.kt近期主要提交者,2026-07-1026da460ac、2026-07-27e65cbfa20);常亮桥接侧可一并知会 陈宝旺(KuiklyRenderActivity.kt2026-10-14855b1fe6维护者) - 优先处理项:
- 补齐回放页
setKeepScreenOn(enabled=true)调用(最小改动、收益最直接),并为该桥接补埋点,否则下期仍无法从服务端量化 - 复核
applyZoomToTimeline→updateTransform的变换参数链路
- 验证方法:真机连续回放 10 分钟确认不熄屏;双指放大后核对
updateTransform的scale/offset是否变化;拖动时间轴后确认stateTimeSec随松手更新。回归范围覆盖「卡回放 / 云回放」两种进入方式。
🟠 问题 2:HarmonyOS 1.1.1.11 端回放/预览不可用(第 13 期零 Logan)
1. 现象与覆盖范围
- 现象描述:用户在 HarmonyOS 端进入回放或实时画面看不到内容;同窗口还有「设备离线什么原因」「无缘无故乱扣费」等相邻表述,指向端侧整体可用性体感偏低。
- 涉及反馈:257443(Harmony 1.1.1.11 / HUAWEI CHZ-AL00 / 重庆 / 15:10:21,「看不到」)、257411(Harmony 1.1.1.11 / HUAWEI / 辽宁大连 / 12:47:20,「设备离线什么原因」)、257393(Harmony 1.1.1.11 / HUAWEI / 河南商丘 / 10:37:54,「无缘无故乱扣费」)
- 覆盖维度:1 平台(HarmonyOS)× 1 版本(1.1.1.11)× 3 地区(重庆 / 辽宁 / 河南)= 2 个维度
- 版本占比:本窗口 85 条中 HarmonyOS 1.1.1.11 占 15 条(17.6%),为占比第二高的版本(Android 8.4.1.6 为 60 条)
- 严重度评分:60 / 100(反馈量 10 / 共性 20 / 关键度 30)
- 反馈量 10:窗口内直接同类反馈 1 条,相邻可用性反馈 2 条
- 共性 20:3 地区 × 1 版本(2 维)
- 关键度 30:回放/监控可用性,取 30
- 降级说明:本问题因 Logan 零覆盖,子项评分已按最低档保守取值;置信度只能给「弱」。
2. 神策证据(核心数据源)
- 本期未取到 HarmonyOS 专属回放事件的有效数据:
NvrDeviceVideoPlayback近 7 天全平台仅 3 天有量(日均 1~5 次),无法按平台拆分;UCCloudPlayBackResult返回 0 行。 - 证据缺口说明:神策侧无法回答「HarmonyOS 回放请求数 / 失败数 / 失败码分布」,本问题的神策段结论为空,置信度随之下调。不得用 Android 回放事件的口径代替 HarmonyOS 结论。
3. Logan 关键日志(核心数据源)
- 反馈 257443 / 257411 / 257393 三条的
loganFileDownloadUrl全部为空字符串,按 skill 规则「Logan 未提供」处理,跳过下载,不阻塞报告。 - 本期窗口 HarmonyOS 反馈 15 条 / Logan 0 条,连续第 13 期零覆盖(上一期 2026-10-15-H09 为第 12 期)。
- 影响:HarmonyOS 侧任何问题都只能靠反馈文案聚类,无法定位类名、错误码、状态机分支,也无法区分「网络不可达」「首帧超时」「解码失败」「权限异常」中的哪一种。这已从「数据盲区」升级为结构性产品风险。
4. 代码定位(详细)
- 涉及模块:HarmonyOS 宿主 + KMP 共享层
- 可定位的共享锚点(与问题 1 同一套 KMP 渲染/回放代码):
KMPPlayBackVideoView.playVideoByTime(KMPPlayBackVideoView.kt:223-229)→RecordPlayerView.startReplay(RecordPlayerView.kt:220-259)LibImpl.startNvrReplay/onNvrReplayResp(回放应答与ret返回)- HarmonyOS 端专属代码未在工作区定位(当前工作区为 Android 裁剪视图),按 skill 规则标「代码待定位」,不阻塞报告。
- 调用链(推断,未经日志验证):HarmonyOS 页面 → KMP 共享回放视图 →
startNvrReplay→ 首帧回调。中间任一环失败均无法从现有证据区分。 - 修复方向锚点:
- 前置阻塞项:先修复 HarmonyOS Logan 上报链路(任务
T-20261008-142800-9c1e),否则后续所有修复都无法验证 - 为 HarmonyOS 回放链路补首帧超时兜底与显式失败提示(与任务
T-20260926-170258-2226的验证方法合并执行)
5. 根因结论
- 置信度:🔴 弱
- 一句话根因:无法给出根因。HarmonyOS 端连续 13 期零 Logan,叠加神策侧缺失可用的 HarmonyOS 回放失败事件,本问题当前只能确认「有用户报看不到」,不能确认失败环节。
- 关键证据链:仅有一条弱证据——1.1.1.11 版本在本窗口反馈占比 17.6% 且含回放类表述;证据不足以支撑任何根因判断。
- 明确不成立的推断:不得写成「HarmonyOS 1.1.1.11 回放功能损坏」;也可能是个别设备离线、网络受限或用户操作问题。
6. 建议下一步
- 分配给:HarmonyOS 端 owner(待定,需按 Logan 上报链路修复的归属确定);上报链路问题建议由 位冬 牵头推动提级
- 优先处理项:
- 把 Logan 零覆盖从 P1 提级为团队级阻塞项(已连续 13 期,该条建议自第 12 期起提出,本期无进展)
- 回访 257443(重庆 / CHZ-AL00)确认「看不到」的入口与复现步骤
- 验证方法:修复 Logan 上报后,取 3~5 名反馈用户复现,按
AddWatchEx返回值 / 连接类型 / 首帧回调串联核对
本期扫描全量(全部沉淀到知识库)
Markdown 里保留全部反馈(含 -102 等网络问题);HTML 呈现时渲染器会自动折叠 🟣 普遍性网络问题
(含中/英/俄/法/西/葡/土/阿/日多语言网络提示模板),只展示更有价值的条目,无需在本段手工删减。
| # | 关键词 | 反馈数 | 分类 | 处置 |
|---|---|---|---|---|
| 2 | 回放·监控画面(不常亮 / 时间轴不同步 / 放大残留 / 没法回放) | 6 | 🟠 进雷达 | 详细分析见问题 1 |
| 3 | HarmonyOS 可见性 / 离线 / 扣费 | 1 | 🟠 进雷达 | 详细分析见问题 2 |
| 4 | 咨询·操作指引(分享、绑定、二维码、初始卡) | 6 | 🟤 咨询建议 | 已排除 |
| 5 | 无效文本(单字、纯符号、乱码) | 4 | 🟢 无效文本 | 已排除 |
已折叠 2 条普遍性网络问题(含-102/-101/-1002与中/英/俄/法/西/葡/土/阿/日多语言网络提示模板,如Проверьте телефонную сеть、Please check your mobile network);全量明细见同名 Markdown 知识库。
本期重点反馈明细(非网络类,按时间倒序)
| ID | 时间 | 平台 | 版本 | 机型 | 地区 | 反馈摘要 | Logan | 处置 |
|---|---|---|---|---|---|---|---|---|
| 257460 | 17:00 | iOS | 8.4.1.6 | iPhone 26.6 | 河南驻马店 | 报警视频打开都好卡、反应慢、点不开划不动 | ✓ | 🟡 待补证(与第233期问题1同族) |
| 257450 | 15:58 | Android | 8.4.1.6 | realme RMX3461 | 江苏苏州 | 回放是屏幕不是常亮。而且没个头回放时间转换不同步 | ✓ | 🟠 问题 1(直证) |
| 257446 | 15:16 | Android | 8.4.1.6 | vivo V2164A | 山东临沂 | 一打不开监坑 | ✓(未覆盖问题时段) | 🟡 待补证 |
| 257443 | 15:10 | Harmony | 1.1.1.11 | HUAWEI CHZ-AL00 | 重庆 | 看不到 | ✗ | 🟠 问题 2 |
| 257441 | 14:55 | Harmony | 1.1.1.11 | HUAWEI ALN-AL10 | 安徽宣城 | 设备恢复出厂设置后怎么重新绑定 | ✗ | 🟤 咨询 |
| 257440 | 14:54 | Harmony | 1.1.1.11 | HUAWEI ALN-AL10 | 安徽宣城 | 设备恢复出厂设置后怎么重新绑定 | ✗ | 🟤 咨询 |
| 257439 | 14:45 | Android | 8.4.1.6 | HUAWEI LNA-AL00 | 江苏宿迁 | 普通用户想解绑工程商售后,工程商说无法删除 | ✓ | 🟡 待补证 |
| 257437 | 14:19 | Harmony | 1.1.1.11 | HUAWEI | 安徽合肥 | 输入密码上面显示密码错误不能正常登陆 | ✗ | 🟡 待补证 |
| 257433 | 14:12 | Android | 8.3.14.2 | Xiaomi | 陕西西安 | 建议增加二分屏模式 | ✓ | 🟤 建议 |
| 257432 | 14:12 | Harmony | 1.1.1.11 | HUAWEI | 海南海口 | . | ✗ | 🟢 无效文本 |
| 257430 | 14:11 | Harmony | 1.1.1.11 | HUAWEI | 海南海口 | .. | ✗ | 🟢 无效文本 |
| 257425 | 14:04 | Android | 8.1.5.3 | vivo | 江苏徐州 | (文本无意义) | ✗ | 🟢 无效文本 |
| 257422 | 13:57 | Harmony | 1.1.1.11 | HUAWEI | 山西临汾 | 怎么分享给别人微信? | ✗ | 🟤 咨询 |
| 257421 | 13:56 | Harmony | 1.1.1.11 | HUAWEI | 山西临汾 | 怎么分享给别人? | ✗ | 🟤 咨询 |
| 257417 | 13:16 | Android | 8.4.1.6 | HONOR CMA-AN00 | 山西晋中 | 纯手机号文本 | ✓ | 🟢 无效文本 |
| 257413 | 12:47 | Harmony | 1.1.1.11 | HUAWEI | 河北石家庄 | 二维码看不清了,怎么添加网络 | ✗ | 🟤 咨询 |
| 257412 | 12:47 | Harmony | 1.1.1.11 | HUAWEI | 河北石家庄 | 二维码看不清了,怎么添加网络 | ✗ | 🟤 咨询 |
| 257411 | 12:47 | Harmony | 1.1.1.11 | HUAWEI | 辽宁大连 | 设备离线什么原因 | ✗ | 🟠 问题 2 关联 |
| 257402 | 11:32 | Harmony | 1.1.1.11 | HUAWEI ADY-AL00 | 河南信阳 | 怎么样才能让卡初始 | ✗ | 🟤 咨询 |
| 257399 | 11:08 | Android | 8.4.1.6 | vivo V2172A | 山东临沂 | app卡顿 | ✓(无回放栈) | 🟡 待补证 |
| 257397 | 11:06 | Android | 8.4.1.6 | vivo V2172A | 山东临沂 | app | ✓ | 🟢 无效文本 |
| 257394 | 10:57 | Android | 8.4.1.6 | Redmi M2012K11AC | 广东江门 | 回放放大左下角有画面 | ✓ | 🟠 问题 1(直证) |
| 257393 | 10:37 | Harmony | 1.1.1.11 | HUAWEI | 河南商丘 | 无缘无故乱扣费 | ✗ | 🟠 问题 2 关联 |
| 257383 | 10:00 | Android | 8.4.1.6 | OPPO PHJ110 | 河南开封 | 设备没法回放 | ✓(回放成功,未覆盖失败时刻) | 🟡 待补证 |
| 257382 | 09:36 | iOS | 8.4.1.6 | iPhone 17.3 | 江苏扬州 | 画面杂音太大,无法听清人物对话 | ✓ | 🟡 待补证(音频类) |
| 257379 | 09:34 | Harmony | 1.1.1.11 | HUAWEI ALN-AL10 | 山东临沂 | 为什么有时监控到人走的图像 | ✗ | 🟡 待补证 |
| 257376 | 09:02 | Harmony | 1.1.1.11 | HUAWEI | 河南商丘 | (文本无意义) | ✗ | 🟢 无效文本 |
HarmonyOS Logan 覆盖情况(第 13 期连续零覆盖)
本窗口 HarmonyOS 反馈 15 条,Logan 提供数 0 条(0 / 15)。较上一期的 0 / 16 无改善,T-20261008-142800-9c1e 自第 12 期起建议提级,本期仍无进展。
任务账本联动
| 任务 ID | 标题 | 状态 | 处置 |
|---|---|---|---|
T-20260926-170258-576a | 核查 Android 8.4.1.6 KMP 回放页缺少屏幕常亮导致回放熄屏 | P1 / captured | 本期最强证据:257450 Logan 全份 21127 行零 Screen awake,且同 Activity 的 DeviceListPage 有该日志 → 直证回放页从未发起常亮请求。为该问题第 4 期,仍未修复 |
T-20260922-170415-9496 | 排查 Android 卡回放拖动卡顿与时间跳转异常 | P1 / captured | 本期新增直证:257450 日志 timeSec 98 ms 内跳 341 秒、stateTimeSec 冻结 32690,与「时间跳转异常」完全对上 |
T-20261014-090647-bbbe | 核查 Android 8.4.1.6 KMP 卡回放误报播放失败:startReplay 与失败事件竞态 | P1 / captured | 本期追加证据:257450 / 257394 / 257383 三份 Logan 均出现 receive playback play failed event, result=0(result=0 非失败码),误报为常态 |
T-20260926-170258-2226 | 排查 HarmonyOS 1.1.1.11 实时预览与回放大范围不可用 | P1 / captured | 本期延续(问题 2):257443「看不到」;仍因零 Logan 无法推进 |
T-20261008-142800-9c1e | 核查 HarmonyOS Logan 上报链路缺失 | P1 / captured | 沿用,第 13 期零覆盖;提级建议已连续 2 期未落地 |
T-20261015-090316-0dda | 核查 iOS 8.4.1.6 一键重置密码在授权 token 过期时无重试与恢复(30000126) | P1 / captured | 本窗口无新增同类反馈,维持观察 |
T-20261014-090651-44e1 | 核查 iOS 8.4.1.6 报警消息列表卡顿 | P1 / captured | 本期关联:257460(iOS 8.4.1.6 / iPhone 26.6)「报警视频打开都好卡、点不开划不动」,为该问题第 3 期;该条 Logan 未能覆盖问题时段,维持观察 |
T-20261014-090651-0bee | 核查 HarmonyOS 1.1.1.11 设备频繁离线且断电不恢复 | P1 / captured | 本期延续观察:257411「设备离线什么原因」,无 Logan |
说明一:问题 1 未新建任务,因其为T-20260926-170258-576a(熄屏)与T-20260922-170415-9496(时间轴)的同一期同页双证,而非新形态;新增的「缩放不生效」如在下期复现,即独立建单。
说明二:问题 1 新增的关键事实——PlaybackPageRouter.kt:120的isCloudReplay注释并非遗留调试,而是sheng.tang2026-07-27e65cbfa20「参数不携带进入的tab,让KMP控制」的有意移交——该结论已在本期更正,第233期「需 owner 确认意图」一项已闭环。
数据源状态汇总
| 数据源 | 状态 | 说明 |
|---|---|---|
| 反馈平台 | ✅ 正常 | total=85 / fetched=85 / complete=true,1 个 tool block 内真实分页拉全,覆盖完整 8h 窗口 |
| 心愿单 | ⚠️ 降级 | 本期 login_and_get_wish_list 返回 invalid_grant: 用户名或密码错误,未取到;不影响本期结论(本窗口无产品建议型反馈需要排除),下期重试 |
神策 NvrDeviceVideoPlayback | ⚠️ 近乎无覆盖 | 近 7 天仅 3 天有量、日 1~5 次,不足以支撑趋势或分布推断 |
神策 UCCloudPlayBackResult | ❌ 无数据 | 查询返回 0 行 |
神策 PlayBackEvent / MonitorScreenExit | ❌ 不存在 | 查询返回空列;不得再以这两个事件名取数 |
| 神策「回放屏幕常亮」埋点 | ❌ 完全缺失 | 客户端有 SCREEN_AWAKE_TAG 日志但未上报神策,服务端无法量化,已在「待补证」写明 |
| Logan(Android) | ✅ 有效 | 257450 / 257394 / 257383 三份可下载且覆盖问题动作时刻,问题 1 的两条主证据链由此而来 |
| Logan(iOS) | ⚠️ 部分有效 | 257460 可下载但未覆盖问题时段 |
| Logan(HarmonyOS) | ❌ 零覆盖 | 15 条反馈 0 份日志,连续第 13 期 |
| 代码定位 | ✅ 正常 | Android / KMP 仓库在标准路径可读;HarmonyOS 端专属代码未在工作区 |
| 友盟 | ⏭️ 未调用 | 本期无崩溃 / ANR / 闪退类反馈,按 skill 规则不查 |
心愿单亮点
本期心愿单接口认证失败(invalid_grant),未取到数据,故本段空缺。下期恢复后补。
待补证
- 回放屏幕常亮缺服务端埋点(问题 1 最大盲区):
KuiklyRenderActivity.setKeepScreenOn只在客户端打SCREEN_AWAKE_TAG日志,未上报神策。需在该方法内补一条事件(建议字段:page_name/enabled/applied),否则无法从服务端回答「多少回放会话请求过常亮、多少被拒绝」。 - KMP 前端页面调用点需在前端仓库复核:当前工作区为 Android 裁剪视图,
setKeepScreenOn仅见原生桥接分发(KMPBridgeModule.kt:108-113)。「KMP 页面侧完全无调用点」这一结论需 owner 在前端页面仓库确认;但 257450 该次回放确实未发起常亮请求这一事实不受影响。 - 缩放链路的具体断点:
applyZoomToTimeline(zoomIn=true)→RecordPlayerView.updateTransform(恒为scale=1.0)之间的参数为何丢失,需 owner 读代码确认是硬编码、被后续事件覆盖,还是两个独立变换体系。 stateTimeSec语义未确认:拖动过程中stateTimeSec冻结在起始值是设计如此(松手后才提交)还是缺陷,需 owner 明确后才能定修复方案。- HarmonyOS Logan 零覆盖连续 13 期:需服务端 / 客户端共同定位上报链路断点,提级建议已连续 2 期未落地。
- 心愿单接口认证失败:
login_and_get_wish_list返回invalid_grant: 用户名或密码错误,需核对~/.openclaw/secrets.json中seetong-feedback凭据;反馈列表接口同期使用相同凭据正常,故疑为心愿单接口单独鉴权变动。 isCloudReplay移交后的语义未验证:e65cbfa20明确把 tab 选择权移交 KMP,但 257450 日志resolveSavedPlaybackTabForCurrentDevice ... supportCloud=false, savedTabIndex=1, targetTabIndex=1的组合在supportCloud=false时是否合理,需 owner 确认。
下一期 = 第235期 = 2026-10-16-H09(明天早上 9:00;窗口 今日 17:00 ~ 明日 09:00)