全量回刷用户最后活跃时间(adminx)
1. 接口定位
- 接口名称: 全量回刷用户最后活跃时间
- 所属域: admin/user(adminx)
- 业务目标: 一次调用完成用户
last_active_time回刷,便于后台按不活跃排序
2. 请求定义
- Method:
POST - Path:
/adminx/user/last-active/backfill - Content-Type: 推荐
application/json - operationID: 必填,请通过 Header
operationID传入 - 鉴权: 必填,管理员 token
- 幂等性: 幂等(写入使用
$max,重复触发安全)
3. 请求参数
Header 参数
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| operationID | 是 | string | 链路追踪 ID |
| token | 是 | string | 管理员登录令牌 |
Body 参数
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| batchSize | 否 | uint32 | 每批处理条数,默认 5000,最大 5000 |
| limit | 否 | uint32 | 处理上限,默认 0(0 表示全量) |
| dryRun | 否 | bool | 仅统计不写库,默认 false |
4. 响应结构
data 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| totalUsers | uint32 | 用户总量(全量查询总数) |
| scannedUsers | uint32 | 本次参与计算的用户数 |
| updatedUsers | uint32 | 本次写库条数(dryRun=true 时为 0) |
| sourceLastActiveAt | uint32 | 来源为 LAST_ACTIVE_AT 的数量 |
| sourceDauDay | uint32 | 来源为 DAU_DAY 的数量 |
| sourceLastLogin | uint32 | 来源为 LAST_LOGIN 的数量 |
| sourceNone | uint32 | 来源为 NONE 的数量 |
| batchSize | uint32 | 实际批大小 |
| durationMs | int64 | 总耗时(毫秒) |
| completed | bool | 是否完成 |
| message | string | 结果说明,如 completed |
5. 业务规则
- 值回退链路固定为:
LAST_ACTIVE_AT -> DAU_DAY -> LAST_LOGIN -> NONE。 NONE写入值为0。- 写库采用 Mongo
$max,保证最后活跃时间只增不减。 - 内部会加分布式锁;若已有任务执行中,会拒绝重复触发。
6. 示例
请求示例
json
{
"batchSize": 5000,
"limit": 0,
"dryRun": false
}成功响应示例
json
{
"errCode": 0,
"errMsg": "",
"errDlt": "",
"data": {
"totalUsers": 60000,
"scannedUsers": 60000,
"updatedUsers": 60000,
"sourceLastActiveAt": 18000,
"sourceDauDay": 22000,
"sourceLastLogin": 15000,
"sourceNone": 5000,
"batchSize": 5000,
"durationMs": 24350,
"completed": true,
"message": "completed"
}
}7. 变更记录
- 2026-09-03: 首版发布,新增一次调用全量回刷最后活跃时间接口。