Seetong · Report

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

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

📌TL;DR 核心要点

  • 🟠 HarmonyOS 1.1.2.3 的文字转语音上传链路没有把“语音生成并下载完成”和“上传传输完成”作为成功门禁。反馈 259428 明确表示上传一直失败;代码在 PCM 下载尚未完成时就写入可上传路径,下载失败只打印日志且不清空路径,上传层又把 FC_StartUploadFile、FC_SetUploadFile 的即时返回值当作最终结果,未监听设备侧完成或失败回调。严重度 65 / 100,根因置信度 中。
  • 反馈 259428:2026-10-25 09:15:16,HarmonyOS 1.1.2.3,HUAWEI BLK-AL80,河南南阳,原文为“文字转语音上传一直失败”。反馈未提供 Logan 或附件,因此无法从客户端日志确认失败发生在文本转语音接口、PCM 下载、上传启动、设备传输还是设备落盘阶段。
  • 该反馈位于“设备设置 → 智能报警 → 摄像机喇叭报警提示音 → 文字转语音”链路,影响的是报警提示音配置,不阻断实时预览、回放或设备连接。当前只有 1 名直接反馈用户,未见跨机型、跨地区共性问题。

🔥最近一个月 Top 问题

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

#问题(严重度降序)严重度平台版本负责人问题原因
1HarmonyOS `1.1.2.3` 多用户离线与核心视频链路失效
21 期 · 175 条反馈
100Android · HarmonyOS1.1.1.11 / 8.4.1.6 / 1.1.2.3唐胜、陈宝旺、冉博麟、谭伟HarmonyOS 客户端把 P2P 瞬时离线写成本地持久状态,并在后续在线判断中优先使用这个旧值,可能导致设备已恢复在线却仍显示离线;回放离线态和播放错误透传不足则放大了用户的“看不到画面”体验。
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升级后回放体验整体退化
5 期 · 20 条反馈
85Android · HarmonyOS · iOS8.4.1.6 / 1.1.2.3 / 8.3.14.2唐胜、许源、欧阳荣、谭伟8.4.1.6 对回放链路做了多处改动(时间条 UI、通道切换进度对齐、报警-录像联动),导致回放体验多点退化;Logan 显示取流层无崩溃,问题在"UI/状态对齐 + 报警录像关联"而非连接失败。
5KMP 回放页未申请屏幕常亮,回放中手机自动息屏
12 期 · 31 条反馈
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,回放过程中发生系统级息屏。
6Android 实时预览无首帧却被标记为“视频播放中”,并无限重试
5 期 · 12 条反馈
80Android · iOS8.4.1.6 / 8.4.1.4唐胜、张威、谭伟、欧阳荣预览页把“取流请求已提交”或“设备在线状态消息”误当成播放成功,而没有把首帧到达作为唯一成功门禁;add_watch_result=-1 后仍持续 10 秒重试并显示“视频播放中”,导致用户长时间等待且无法获得明确失败反馈。
7SD 卡跌至不可读写或反复未初始化,录像回放被直接阻断
3 期 · 9 条反馈
80Android · HarmonyOS · iOS8.4.1.6 / 1.1.1.11唐胜、张威、陈宝旺设备上报的 SD 卡状态在 258245 中持续处于未初始化/格式化中,在 258173 中由正常可读写跌至不可读写;App 按协议正确展示异常,根因更可能在 SD 卡、卡槽/供电、设备存储控制器或固件挂载逻辑,而不是 KMP 页面误报。
8iOS `8.4.1.6` 云回放卡顿,首帧与失败状态可能被提前结算
2 期 · 8 条反馈
80Android · iOS8.4.1.6 / 8.3.11.3 / 8.4.106陈宝旺、欧阳荣、谭伟iOS 云回放容器允许解析完成后在 1.2 秒无首帧时提前向 KMP 返回成功,同时把 IJK 播放错误与正常结束合并处理,导致页面对真实卡顿、缓冲超时或解码失败缺少准确状态和可回溯证据;这是高度可疑的共同客户端缺陷,但仍需复现确认其是否为 3 名用户的直接主因。
9iOS 8.1.2.4 微信登录授权码重复提交触发 30100225
1 期 · 3 条反馈
80iOS8.1.2.4 / 8.1.204 / 8.4.106待定微信回调与恢复登录没有一次性 state、幂等锁和授权码消费机制,重复回跳或重试会把同一个单次授权码再次发给服务端,服务端以 30100225 拒绝后客户端仍保留旧状态。
10Android `8.4.1.6` 在线状态不一致导致卡录像无法打开
1 期 · 1 条反馈
80Android8.4.1.6张威客户端继续使用一份已陈旧约 8 小时的在线缓存,同时又允许单次 P2P 离线事件直接覆盖设备状态;状态模型没有区分云端心跳、P2P 连通和播放出帧,导致用户看到“在线但录像打不开”,且回放页缺少可恢复路径。

🟠 问题 1:HarmonyOS 文字转语音上传缺少完整状态机与传输完成回调 | 负责人:唐胜

现象与覆盖范围

  • 反馈 259428:2026-10-25 09:15:16,HarmonyOS 1.1.2.3,HUAWEI BLK-AL80,河南南阳,原文为“文字转语音上传一直失败”。反馈未提供 Logan 或附件,因此无法从客户端日志确认失败发生在文本转语音接口、PCM 下载、上传启动、设备传输还是设备落盘阶段。
  • 该反馈位于“设备设置 → 智能报警 → 摄像机喇叭报警提示音 → 文字转语音”链路,影响的是报警提示音配置,不阻断实时预览、回放或设备连接。当前只有 1 名直接反馈用户,未见跨机型、跨地区共性问题。
  • 严重度评分:65 / 100。反馈量 10(1 条直接反馈)、共性广度 30(HarmonyOS、1.1.2.3、HUAWEI 机型、河南地区共 4 个维度,但只有单一样本)、业务关键度 25(报警提示音设置失败)。
  • 去重判定:最近 24 小时内的反馈雷达未分析过文字转语音上传问题,任务账本也没有同题任务,因此本期进入详细分析。其他 HarmonyOS 离线反馈已在 24 小时内分析,仍沿用既有任务,不重复展开。

神策证据

  • 查询 2026-10-25 事件清单成功,共返回当日在报事件;清单中没有文字转语音、语音生成、提示音上传或上传结果的专用事件,因此无法从神策量化该功能的成功率、失败率和影响用户数。
  • AppButtonClick、$AppViewScreen 等通用事件不能区分“文字转语音上传”与其他设置点击;把通用事件量当作该功能成功量会制造伪结论,本期不采用。
  • 现有 PlayingPopup 是低功耗设备播放提示弹窗事件,与报警提示音上传无关,本期不混用其 578,046 次事件作为该问题证据。

Logan 关键日志

  • 反馈 259428 的 loganFileDownloadUrl 为空,且没有 fileUrl,属于 Logan 未提供,无法给出类名、行号、错误码或调用栈。
  • 现有证据能确认用户反馈的具体功能与平台版本,但不能据此断言问题来自设备不支持、网络传输超时、音频格式不兼容或用户权限不足;上述分支都需要一次带日志的复现来区分。
  • 代码审查发现的是可稳定复核的契约缺口,不是根据缺失日志推断出的单一错误码。

代码定位

  • 涉及模块:seetong-app-harmony/feater/playDevice 的文字转语音页面、设备上传服务,以及 seetongLibrary 的 NAPI 上传桥接。
  • customSound.ets:153-183:调用 /seetong-resource/text-to-speech/convert 取得 PCM 地址后,仅调用 startDownloadTask,没有等待下载完成;接口异常只显示通用错误。
  • customSound.ets:188-215:在 request.downloadFile 启动前就把 temporaryDowURL 写入 filePathAboutTextToVoice。downloadTask.on('fail') 只执行 console.info,没有清空路径、重置播放状态、隐藏加载框或提示下载失败。
  • customSound.ets:341-352:提交文字转语音时只检查 filePathAboutTextToVoice != ''。由于失败下载留下的路径仍非空,用户可能再次提交一个不存在、零字节或不完整 PCM 文件。此处调用 uploadAlarmTone 也未 await,文字转语音分支与录制语音分支的异步处理不一致。
  • customSound.ets:373-390:uploadAlarmToneFile 返回 true 就视为上传成功,并延迟 2 秒提示成功;返回 false 时仅提示通用“上传失败,请重新尝试”,没有错误码或阶段信息。
  • DeviceServiceImpl.ets:5092-5096:startUploadFile 实际只是把同步 NAPI 返回值包装成 Promise,不是等待设备完成握手。
  • DeviceServiceImpl.ets:5106-5126:仅检查 FC_StartUploadFile 与 FC_SetUploadFile 的即时返回值,setRes === 0 就返回成功;没有等待 TPS_MSG_RSP_UPLOAD_OK、TPS_MSG_RSP_UPLOAD_FAILED 或进度回调。setRes 非 0 时也未调用停止上传清理会话。
  • 对照实现:Seetong-App-iOS/.../UserClient.mm:843-865 在启动和设置文件后注册 setUploadFileCallBackBlock,只有收到 TPS_MSG_RSP_UPLOAD_OK 或失败状态才结束,并在结束时调用 FC_StopUploadFile。HarmonyOS 当前 NAPI 只暴露 ts_startUploadFile 与 ts_setUploadFile,未暴露停止上传和完成回调接口。
  • 相关提交:0f128ac2c 引入设备设置提示音上传页面;550b701fd 新增 HarmonyOS 提示音协议封装。当前仓库分支 feature_v8.4.2、HEAD 06a65a1bbc,工作区无未提交改动。
  • 修复方向锚点:先补齐 HarmonyOS 的 startUploadFile、上传进度/结果回调、stopUploadFile 三个 NAPI 能力;页面增加 idle → generating → downloading → ready → uploading → success/failure 状态机,只有下载成功且文件非空、格式和长度校验通过后才允许上传;上传按钮必须等待 Promise,失败时清除坏路径并展示具体阶段。
  • 次级修复:每次重新生成文本前先删除旧临时文件并清空路径;下载先写 .part 文件,完成并校验后再原子重命名;downloadTask.on('fail') 必须复位页面状态;上传结束时始终停止 SDK 上传会话,避免残留会话影响下一次重试。

根因结论

  • 置信度:🟡 中。代码契约缺口明确,但单条反馈缺少 Logan,无法确认用户实际卡在生成、下载、启动还是传输阶段。
  • 一句话根因:HarmonyOS 文字转语音链路把临时路径创建当成“音频已可用”、把上传请求入队当成“上传已完成”,同时没有暴露 SDK 的上传完成与停止回调,导致失败状态和临时文件都可能被错误保留,用户只能得到无法区分阶段的通用失败提示。
  • 关键证据链:反馈明确指向文字转语音上传 → 代码在下载开始前写入可用路径 → 下载失败只打印日志且路径不清 → 上传层仅检查同步返回值、没有完成回调 → 与 iOS 使用上传结果回调的实现形成明确跨端差异。
  • 明确不下的结论:不能仅凭 1 条无 Logan 反馈认定所有 HarmonyOS 1.1.2.3 用户都无法上传,也不能认定失败一定由 PCM 下载引起;当前结论只能确认上传成功判定与失败恢复不满足可靠状态机要求。

建议下一步

  • 分配给:谭伟复核并补齐 HarmonyOS 上传 NAPI 的完成、失败和停止接口;李国涛复核文字转语音页面下载状态、临时文件生命周期与提交按钮门禁。
  • 优先处理:先按 259428 的设备类型补采一次复现日志,记录转语音接口 HTTP 状态、下载文件大小、PCM 时长、FC_StartUploadFile 返回值、FC_SetUploadFile 返回值、上传进度、设备返回状态和最终停止结果。
  • 验证方法:分别模拟转语音接口失败、下载中断、零字节文件、设备断网、上传中途取消、设备返回失败、正常上传 7 类场景;7 类场景都必须进入唯一终态,禁止出现“提示失败但路径残留”或“提示成功但设备未落盘”。
  • 回归要求:正常提示音连续上传 20 次、上传中切后台/前台 10 次、上传中切换通道 10 次,确认下一次上传不继承上一次会话;设备端重启后回读提示音,确认内容与最新一次上传一致。
  • 产品反馈:将通用“上传失败,请重新尝试”拆分为“语音生成失败”“音频下载失败”“设备连接失败”“设备拒绝音频”四类,便于客服和研发定位。

本期扫描全量

分类与处置反馈数反馈 ID 或说明
🟠 HarmonyOS 文字转语音上传,进入问题 11259428
🔁 HarmonyOS 1.1.2.3 离线反馈延续,24 小时内已分析5259445、259446、259466、259475、259478;沿用 T-20260926-115214-fdf9,其中 259445/259446 为同一用户双提交
🟡 登录、变倍、省电提醒、重新登录入口、自动追踪或 AI 录像提示单点6259438、259447、259463、259468、259470、259489
🟤 产品建议、使用咨询、无效或信息不足5259449、259467、259473、259454、259513
已折叠 1 条普遍性网络问题(含 -102/-101/-1002 与中/英/俄/法/西/葡/土/阿/日多语言网络提示模板,如 Проверьте телефонную сеть、Please check your mobile network);全量明细见同名 Markdown 知识库。
接口返回 total=95 / fetched=95 / complete=true / pages=2。上表按主问题唯一归类,合计 95 条。259426 创建于 09:03:22,是本期严格时间窗口内首条反馈;259520 创建于 16:59:55。

心愿单亮点

心愿单 ID平台与版本诉求价值判断
5503Android / 8.4.1.6希望支持转动视角⭐⭐ 与云台控制有关,但未说明设备是否具备云台能力,需先确认能力与入口
5498Android / 8.4.1.6希望推出带雨刷的小球机⭐⭐ 属硬件产品诉求,可作为户外雨雪场景的产品规划输入
5499Android / 8.4.1.6三个月无画面,要求退还账户余额⭐⭐⭐ 表象是功能诉求,实质涉及长期不可用、维修与售后,需人工优先核实

数据源状态与待补证

  • 反馈平台:✅ 正常。首次并行查询时一次验证码识别失败,随后单独登录并通过已登录查询完整拉取 95/95 条,complete=true;反馈按主问题逐条唯一归类。
  • 心愿单:✅ 正常。total=7 / fetched=7 / complete=true / pages=1。
  • 神策:⚠️ 基础可用。2026-10-25 事件清单查询成功;没有文字转语音或提示音上传专用事件,无法计算功能成功率。通用事件与低电量播放弹窗事件均未混作本问题指标。
  • Logan:⚠️ 缺失。259428 未提供 Logan 或附件,代码结论置信度降为中等。
  • 友盟:⏭️ 未调用。反馈未表现为崩溃、ANR、闪退或卡死。
  • TAPD:⏭️ 未调用。没有用户提供的 BUG 单号,本期按功能代码链路分析,不以历史 Bug 搜索替代直接证据。
  • 代码仓:✅ seetong-app-harmony 与 Seetong-App-iOS 已只读核对;HarmonyOS 分支 feature_v8.4.2 工作区干净。
  • 任务账本:新增 T-20261025-170540-f49b,状态 P1 / captured,跟踪下载状态机、上传结果回调与停止会话修复。
  • 待补证:需要 259428 或同机型用户提供一次完整 Logan;需要确认设备是否支持 TransparentUploadAudioFile、PCM 格式与大小限制、上传结果码,以及当前 1.1.2.3 实际包是否包含上述代码。

下一期 = 第255期 = 2026-10-26-H09.md(明天早上 09:00;窗口 今日 17:00:41~明日 09:00)

🗂️历史期次

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