Countly 25.03.45:几个小修复,解决实际踩坑问题

2026-05-27 28 预计阅读时间:1 分钟
来源:oschina.net AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:7 分钟

Countly 是一个开源的实时移动与 Web 分析平台,自建部署的用户不少。25.03.45 版本没有大功能更新,但修了几个在日常使用中容易遇到的麻烦——事件键带点号导致统计失真、图表笔记颜色验证报错、禁用插件后任务列表仍残留脏数据。这些 bug 不修,数据可信度会打折扣。

事件键含 . 的 topEvents 计算修复

在 Countly 中,事件键(event key)是标识用户行为的核心字段。很多团队习惯用层级命名,比如 purchase.button.clicklogin.form.submit,键里自然带上了 .

问题在于,Countly 内部在计算 topEvents 时,对包含 . 的键做了不当处理——可能是把 . 当成了 MongoDB 查询里的路径分隔符,导致聚合结果丢失或错位。25.03.45 修复了这一计算逻辑。

影响判断:如果你的事件键从未用过 .,这个修复与你无关。但一旦用了层级命名,之前的 topEvents 报表数据可能是不准确的,升级后建议重新审视相关报表。

图表笔记颜色验证不再报错

Countly 支持在图表上添加笔记(note),用来标注关键时间节点——比如"这天上线了新版本"。创建或编辑笔记时可以指定颜色,但旧版 saveNote 的 schema 只接受字符串类型的颜色值。

实际使用中,前端传过来的颜色值有时是数值(比如从颜色选择器返回的整数色值),schema 校验直接拒绝,笔记就保存失败。25.03.45 放宽了校验,数值颜色也能通过。

这个修复虽小,但体验影响不小——之前用户可能反复尝试保存笔记却始终报错,还很难定位原因。

禁用插件的任务不再污染任务列表

Countly 的插件体系允许按需启用/禁用。但旧版在获取任务列表(jobs list)时,没有过滤掉属于已禁用插件的任务。结果是:插件关了,它的定时任务还在列表里挂着,既占展示空间,又可能误导运维人员以为任务仍在执行。

25.03.45 在查询任务列表时加入了插件启用状态的过滤,列表更干净,也避免了误操作。

findGroups 聚合修复

摘要中提到 [groups] 的 findGroups 聚合也有修复,但具体细节被截断。从命名推断,这涉及用户分组查询的聚合逻辑——可能是分组条件组合时结果不准确,或某些边界条件下返回空集。如果你在使用 Countly 的用户分群功能,升级后留意分组结果是否与预期一致。

实践:自建部署 Countly 并追踪带层级的事件

下面给出一个最小化的 Docker Compose 部署示例,以及一段发送带 . 事件键的追踪代码,正是本次修复覆盖的场景。

Docker Compose 部署(最简配置)

# docker-compose.yml
version: "3.8"
services:
  countly-api:
    image: countly/api:25.03.45
    ports:
      - "6001:6001"
    environment:
      - COUNTLY_CONFIG__MONGODB=mongodb://countly-mongo:27017/countly
      - COUNTLY_CONFIG__REDIS=redis://countly-redis:6379
    depends_on:
      - countly-mongo
      - countly-redis

  countly-front:
    image: countly/frontend:25.03.45
    ports:
      - "6000:6000"
    depends_on:
      - countly-api

  countly-mongo:
    image: mongo:6.0
    volumes:
      - countly-mongo-data:/data/db

  countly-redis:
    image: redis:7-alpine
    volumes:
      - countly-redis-data:/data

volumes:
  countly-mongo-data:
  countly-redis-data:

启动:

docker compose up -d

访问 http://localhost:6000 进入管理界面,完成初始设置后获取 App Key。

Python SDK 发送层级事件键

# countly_event_demo.py
# 需要安装: pip install countly-sdk-python

import countly

# 替换为你的 App Key 和 Countly 服务器地址
COUNTLY_APP_KEY = "YOUR_APP_KEY"
COUNTLY_URL = "http://localhost:6001"

countly.init(COUNTLY_APP_KEY, COUNTLY_URL)

# 发送一个带 "." 的事件键——正是 25.03.45 修复的场景
countly.track_event(
    key="purchase.button.click",   # 层级命名,包含点号
    segmentation={
        "item_category": "electronics",
        "payment_method": "credit_card",
    },
    count=1,
    sum=299.99,
)

# 会话结束前必须调用,否则数据可能丢失
countly.end_session()

print("事件已发送,等待 Countly 处理后查看 topEvents 报表")

运行前把 YOUR_APP_KEY 替换成实际值。升级到 25.03.45 后,purchase.button.click 这类键在 topEvents 中会被正确聚合;旧版本则可能统计异常。

升级建议

检查项 说明
事件键命名是否含 . 有则必须升级,旧数据需重新评估
是否使用图表笔记功能 颜色保存失败的问题升级即解
是否有禁用插件 升级后任务列表更干净
是否使用用户分群 关注 findGroups 修复,验证分组结果

整体来看,25.03.45 是一个偏修复的版本,没有破坏性变更。自建部署的用户可以直接拉新镜像滚动升级,云端托管用户等待平台更新即可。如果你的事件键用了层级命名,这个版本值得尽快跟进——数据准确性不该因为一个点号而妥协。


相关推荐