鸿蒙实践中心每日任务判定机制实测:dwell 会话与 GitCode Star 的 external_check

举报
yd_271900498 发表于 2026/11/07 09:53:39 2026/11/07
【摘要】 今天在鸿蒙开发实践中心(harmonybp)做每日积分任务时,顺手观察了它的任务判定机制,记录几个实测结论,供同样在做鸿蒙生态任务的开发者参考。1. 浏览案例(dwell 判定)不是"打开页面"就行「每日浏览一个案例」任务描述是"打开案例详情页并保持浏览 30 秒"。实测发现,仅打开案例详情页停留再久,elapsed_seconds 始终是 0。该任务的 evaluator 是 dwell,...

今天在鸿蒙开发实践中心(harmonybp)做每日积分任务时,顺手观察了它的任务判定机制,记录几个实测结论,供同样在做鸿蒙生态任务的开发者参考。

1. 浏览案例(dwell 判定)不是"打开页面"就行

「每日浏览一个案例」任务描述是"打开案例详情页并保持浏览 30 秒"。实测发现,仅打开案例详情页停留再久,elapsed_seconds 始终是 0。该任务的 evaluator 是 dwell,需要前端通过站点自身的会话接口上报:先 POST /api/growth/tasks/case-view-daily/sessions(body 里带 case_id,也就是案例 URL 中 /cases/<32位hex> 那一段),拿到 session_id 后,每隔不超过 max_gap_ms(实测 15 秒)向 /api/growth/sessions/<sid>/heartbeat 发一次心跳,累计 counted_ms 达到 30000 后 completed 变 true,today_status 才翻成 done。

两个容易踩的坑:一是心跳间隔要留出请求耗时余量,一旦 gap 超过 15 秒,accumulated_ms 会归零重算(我第二次心跳 gap 到 17 秒就断了);二是响应里回传的 session_id 与请求用的不一致,后续心跳要改用响应里回传的那个 id,否则累计不连续。

2. Star 任务是 external_check,站点侧状态天然滞后

「Star 鸿蒙案例代码仓」的 evaluator 是 external_check:完成 Star 动作后,harmonybp 的 /api/growth/tasks 接口里 today_status 可能仍是 todo,这是华为服务端异步去 GitCode 核查的正常延迟,不要当天反复重做。另外任务配置里 repos 为空、orgs 只限定 harmony-practice-center、match 为 any,也就是说该组织下任意一个仓库的 Star 都能被识别,遇到某个案例仓 404 时换一个仓库即可。

3. 成长中心侧的 is_finish 同步更晚

harmonybp 自己的任务接口显示 done 之后,developer.huaweicloud.com/grow 成长中心的任务面板(query-mission-list-by-condition 接口)的 is_finish 还会再滞后一段时间才变成 1。判断任务是否真的完成,建议直接查 harmonybp 的 /api/growth/tasks,而不是只看成长中心面板。

总体来说,这套积分任务体系的判定都是服务端行为驱动:dwell 靠心跳、Star 靠外部核查、云端实践靠报表,前端页面状态只是展示层。理解了这一点,就不会在"明明操作了但面板没变"上浪费排查时间。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。