feat(admin): 用户使用状态页(MVP,内部观测) #18

Merged
wangjia merged 2 commits from feat/admin-user-usage into main 2026-09-12 13:37:20 +00:00
Owner

管理后台加一个只读的用户使用状态视图,方便一眼观察软件使用状况。

汇总卡:总用户 · 近7日活跃 · 付费用户 · 近7日新增 · 近7日总流量。

主表(最近活跃倒序,默认近30天;邮箱搜索 + 活跃窗口 + 付费筛选 + 分页):
邮箱(封禁/2FA)· 套餐+付费来源+到期剩余 · 最近活跃 · 首次使用 · 最近设备+客户端版本 ·
设备数 · 近7日用量(↑↓流量·时长·活跃天数·广告解锁) · 累计付费 · 邀请人数 · 注册。

观测标签:将到期/已过期 · 流失(>7天无活动) · 试用中。

实现:store.ListUsers(分页主查询 + 5 个按 user_id 批量补全)与 UserSummary;
全程可移植 SQL(时间边界 Go 端算好传 ?,无 MySQL 专属构造);周聚合取 usage_daily;
SQLite 派生时间列字符串经 asTimePtr 归一兼容 MySQL。路由 GET /users,导航/概览补入口。

测试:handler 渲染(空指针+满字段标签)+ SQLite 真库端到端;可移植 SQL 闸通过;go build/vet 干净。

第二期(未含):点行下钻用户详情(设备清单/订阅历史/逐日用量)。

🤖 Generated with Claude Code

管理后台加一个只读的**用户使用状态**视图,方便一眼观察软件使用状况。 **汇总卡**:总用户 · 近7日活跃 · 付费用户 · 近7日新增 · 近7日总流量。 **主表**(最近活跃倒序,默认近30天;邮箱搜索 + 活跃窗口 + 付费筛选 + 分页): 邮箱(封禁/2FA)· 套餐+付费来源+到期剩余 · 最近活跃 · 首次使用 · 最近设备+客户端版本 · 设备数 · 近7日用量(↑↓流量·时长·活跃天数·广告解锁) · 累计付费 · 邀请人数 · 注册。 **观测标签**:将到期/已过期 · 流失(>7天无活动) · 试用中。 **实现**:`store.ListUsers`(分页主查询 + 5 个按 user_id 批量补全)与 `UserSummary`; 全程可移植 SQL(时间边界 Go 端算好传 ?,无 MySQL 专属构造);周聚合取 `usage_daily`; SQLite 派生时间列字符串经 `asTimePtr` 归一兼容 MySQL。路由 `GET /users`,导航/概览补入口。 **测试**:handler 渲染(空指针+满字段标签)+ SQLite 真库端到端;可移植 SQL 闸通过;`go build/vet` 干净。 第二期(未含):点行下钻用户详情(设备清单/订阅历史/逐日用量)。 🤖 Generated with [Claude Code](https://claude.com/claude-code)
wangjia added 1 commit 2026-09-12 12:28:39 +00:00
管理后台加一个只读的用户使用状态视图,方便观察软件使用状况:

- 顶部汇总卡:总用户 / 近7日活跃 / 付费用户 / 近7日新增 / 近7日总流量。
- 主表(按最近活跃倒序,默认近30天活跃,支持邮箱搜索+活跃窗口+付费筛选、分页):
  邮箱(+封禁/2FA)、套餐+付费来源+到期剩余、最近活跃、首次使用、最近设备+客户端版本、
  设备数、近7日用量(↑↓流量·时长·活跃天数·广告解锁)、累计付费、邀请人数、注册。
- 派生观测标签:将到期/已过期(订阅)、流失(超7天无活动)、试用中。

实现:
- store.ListUsers(分页主查询 + 5 个按 user_id 批量补全:订阅/周用量/最近设备/最近会话/付费)
  与 UserSummary;全程可移植 SQL(时间边界 Go 端算好传 ?,无 MySQL 专属构造)。
- 周聚合取 usage_daily(DATE 粒度),活跃天数=COUNT(DISTINCT date)。
- SQLite 派生时间列返回字符串(modernc 怪癖)→ asTimePtr 统一归一,兼容 MySQL 的 time.Time。
- 路由 GET /users;导航与概览卡补入口;新增展示模板与函数(相对时间/字节/分钟/金额)。

测试:handler 渲染(空指针行+满字段标签)+ SQLite 真库端到端(ListUsers/UserSummary/搜索/筛选)。
可移植 SQL 闸通过。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
wangjia added 1 commit 2026-09-12 13:36:04 +00:00
原本客户端版本作为小字挂在「最近设备」列下,易漏。提成独立列(药丸样式),
方便扫版本分布/自动更新渗透率。测试补断言版本列渲染。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
wangjia merged commit e957894766 into main 2026-09-12 13:37:20 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wangjia/pangolin#18