Files
danyang-match/数据统计、运营指标与管理驾驶舱详细设计.md
T

3893 lines
47 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 丹阳公益婚恋服务平台
# V1.0 数据统计、运营指标与管理驾驶舱详细设计
版本:V1.0
适用范围:平台管理后台、机构管理后台、公益红娘工作台、活动管理后台
核心目标:统一指标口径、服务运营决策、发现业务问题、避免虚假繁荣、不过度建设大数据平台
---
# 第一章 设计目标
V1.0的数据统计不是为了做一个“很炫的驾驶舱”。
真正目的只有四个:
1. 看平台有没有人在正常使用
2. 看用户有没有真正形成有效匹配
3. 看公益红娘和活动有没有产生服务价值
4. 看哪里存在安全、服务或运营问题
因此V1.0坚持:
> **少而关键、口径统一、能够追溯、服务运营。**
不追求:
- 大屏动画
- 复杂BI
- 数据湖
- 实时数仓
- AI运营分析
- 百余项KPI
---
# 第二章 数据统计总原则
所有统计必须遵守:
> **同一指标只有一个正式定义。**
例如:
“注册用户数”
不能:
用户模块算一个数字。
后台Dashboard又算一个不同数字。
活动统计再算一个第三种口径。
---
# 第三章 指标定义结构
每个正式指标必须定义:
```text
指标名称
指标编码
指标解释
计算公式
数据来源
时间口径
去重规则
数据范围
是否实时
权限范围
```
---
# 第四章 建议指标目录
V1分为七类:
```text
01 用户增长与基础盘
02 认证与审核
03 推荐与匹配
04 沟通与关系进展
05 公益红娘服务
06 公益活动
07 安全与风控
```
---
# 第五章 时间口径
统一使用:
> 中国大陆业务时间。
建议:
```text
Asia/Shanghai
UTC+08:00
```
数据库仍使用:
> TIMESTAMPTZ
统计时按业务时区归属日期。
---
# 第六章 “今日”的定义
今日:
```text
当天00:00:00
至
当前时间
```
不是:
> 过去24小时。
---
# 第七章 “昨日”
```text
昨日00:00:00
至
昨日23:59:59.999...
```
---
# 第八章 “近7天”
建议定义:
> 含今天的连续7个自然日。
例如:
8月28日查看:
```text
8月22日~8月28日
```
---
# 第九章 月度口径
自然月:
```text
当月1日00:00
至
月底
```
不要把:
> 过去30天
叫“本月”。
---
# 第十章 用户总数
指标:
```text
USER_TOTAL
```
定义:
> 历史创建且未被物理删除的平台注册账号数量。
但Dashboard展示时更推荐:
> 当前有效用户
而不是单纯累计注册。
---
# 第十一章 当前有效用户
```text
ACTIVE_ACCOUNT_TOTAL
```
定义:
```text
account_status NOT IN (closed)
```
是否包含banned:
建议拆开统计。
更清晰:
```text
有效服务用户
封禁用户
已注销用户
```
---
# 第十二章 新增注册用户
```text
NEW_USERS
```
公式:
```text
COUNT(users.id)
WHERE created_at ∈ 时间范围
```
---
# 第十三章 新增实名用户
```text
NEW_VERIFIED_USERS
```
定义:
> 在统计期内首次实名认证成功的用户。
以:
```text
verified_at
```
为准。
不是:
> 当前所有已实名用户。
---
# 第十四章 新增审核通过用户
```text
NEW_APPROVED_USERS
```
定义:
> 在统计期内首次完成基础婚恋资料审核并通过的用户。
---
# 第十五章 可参与匹配用户
```text
MATCHABLE_USERS
```
定义必须同时满足:
```text
实名认证通过
+
资料审核通过
+
账号正常
+
婚恋状态允许匹配
+
未退出服务
```
这是比“注册用户数”更重要的基础盘指标。
---
# 第十六章 当前寻找中用户
```text
SEARCHING_USERS
```
条件:
```text
relationship_status = searching
AND
account_status = normal
AND
profile_review = approved
```
---
# 第十七章 暂停寻找用户
```text
PAUSED_USERS
```
用于观察:
> 有多少用户主动停止新推荐。
不能把他们算成“流失用户”。
---
# 第十八章 成功牵手用户
```text
SUCCESSFUL_USERS
```
定义:
> 已经通过双方成功牵手确认流程的用户。
不是:
- 双向Like
- 开始聊天
- 活动互选
这些都不能算“成功牵手”。
---
# 第十九章 成功牵手对数
```text
SUCCESSFUL_MATCH_PAIRS
```
公式:
```text
COUNT(matches)
WHERE status = successful
AND successful_at ∈ period
```
以:
> 对
为单位。
不要把两个人算成两对。
---
# 第二十章 注册转实名率
```text
VERIFICATION_RATE
```
建议使用同批用户漏斗口径:
```text
完成实名的新用户
/
对应注册用户
```
但V1 Dashboard可以先提供简单时期转化:
```text
统计期实名成功人数
/
统计期新增注册人数
```
需要在页面明确:
> 期间转化参考值。
---
# 第二十一章 实名转审核通过率
```text
PROFILE_APPROVAL_RATE
```
建议:
```text
审核通过人数
/
提交资料审核人数
```
比:
> 审核通过 / 实名人数
更符合审核流程。
---
# 第二十二章 首次审核通过率
```text
FIRST_REVIEW_PASS_RATE
```
定义:
```text
首次ReviewTask直接approved数量
/
首次ReviewTask完成数量
```
用于判断:
> 用户资料填写是否容易理解。
如果非常低:
可能不是用户质量差。
也可能是:
> 表单和规则设计不清楚。
---
# 第二十三章 审核退回率
```text
REVIEW_NEED_EDIT_RATE
```
用于发现:
- 头像问题
- 简介问题
- 资料矛盾
---
# 第二十四章 审核原因TOP
统计:
```text
AVATAR_NOT_CLEAR
CONTACT_INFO_INCLUDED
PROFILE_CONFLICT
...
```
帮助优化前端引导。
---
# 第二十五章 平均审核时长
```text
AVG_REVIEW_DURATION
```
建议:
```text
completed_at - submitted_at
```
同时看:
```text
P50
P90
```
V1如果实现成本有限:
平均值 + 待审核数量即可。
---
# 第二十六章 待审核积压
```text
PENDING_REVIEWS
```
Dashboard非常重要。
因为它直接影响:
> 用户多久才能进入匹配。
---
# 第二十七章 推荐曝光
```text
RECOMMENDATION_IMPRESSIONS
```
定义:
> 推荐卡实际被用户展示。
不能只是:
> 后台生成了一条推荐记录。
最好区分:
```text
generated
shown
```
---
# 第二十八章 推荐用户数
```text
RECOMMENDED_USERS
```
定义:
> 在统计期内至少看到一次推荐的去重用户数。
---
# 第二十九章 人均推荐曝光
```text
AVG_RECOMMENDATIONS_PER_USER
```
公式:
```text
推荐曝光总次数
/
收到推荐的用户数
```
---
# 第三十章 推荐详情查看率
```text
RECOMMENDATION_DETAIL_VIEW_RATE
```
公式:
```text
由推荐进入用户详情次数
/
推荐曝光次数
```
---
# 第三十一章 Like数
```text
LIKES
```
统计:
> 用户主动表达喜欢次数。
要排除:
- 重复幂等请求
- 系统重试
以最终业务事件为准。
---
# 第三十二章 推荐Like率
```text
RECOMMENDATION_LIKE_RATE
```
公式:
```text
推荐来源Like
/
推荐详情有效曝光或推荐曝光
```
建议正式口径:
> Like / 推荐曝光。
---
# 第三十三章 Pass率
```text
RECOMMENDATION_PASS_RATE
```
不是越低越好。
它只是:
> 用户筛选行为。
如果异常高:
可能:
- 推荐不准
- 用户条件表达不完整
- 用户池不足
---
# 第三十四章 Mutual Match数量
```text
MUTUAL_MATCHES
```
定义:
> 统计期内新形成有效双向Match的对数。
来源:
```text
user_like
activity
```
都可统计。
---
# 第三十五章 Mutual Match来源
必须拆:
```text
daily_recommendation
discover
matchmaker
activity
```
这样才能判断:
> 哪种服务机制有效。
---
# 第三十六章 Like转Mutual率
```text
LIKE_TO_MUTUAL_RATE
```
公式:
```text
形成Mutual Match的有效Like关系数
/
有效Like总数
```
因为一个Match由双方Like构成,统计时必须固定口径。
更简单的管理口径可以定义:
```text
Mutual Match对数
/
至少发出一次Like的用户数
```
但不能两个页面混用。
---
# 第三十七章 推荐到Mutual漏斗
核心:
```text
推荐曝光
↓
详情查看
↓
Like
↓
Mutual Match
```
这是算法效果核心漏斗。
---
# 第三十八章 Chat Started
```text
CHAT_STARTED
```
定义:
> Match形成后,双方Conversation中至少出现一条用户文本/图片消息。
System消息不算。
---
# 第三十九章 Mutual到聊天启动率
```text
MATCH_TO_CHAT_RATE
```
公式:
```text
启动真实聊天的Match
/
新形成Mutual Match
```
---
# 第四十章 为什么这个指标重要
如果Mutual很多,但没人聊天:
可能说明:
- Like过于随意
- 双向匹配质量一般
- 用户不知道怎么开场
红娘服务和破冰提示可以针对优化。
---
# 第四十一章 双方均发言会话
可定义:
```text
TWO_WAY_CHAT_STARTED
```
条件:
> Conversation中双方都至少发过一条用户消息。
这个比单方发“你好”更有意义。
---
# 第四十二章 不建议用消息总量作为成功指标
某两个人一天发500条:
不代表比另两个人更成功。
因此Dashboard不要突出:
> 总消息数。
只用于技术容量监控。
---
# 第四十三章 Getting To Know数量
如果用户正式使用:
```text
getting_to_know
```
状态,可统计:
```text
GETTING_TO_KNOW_USERS
GETTING_TO_KNOW_MATCHES
```
但需要确认最终业务状态模型后再固化。
---
# 第四十四章 Unmatch数量
```text
UNMATCHED_MATCHES
```
用于分析:
> 形成Match后又结束的关系。
---
# 第四十五章 Match解除率
```text
UNMATCH_RATE
```
建议按Match cohort分析更合理。
V1简单:
```text
统计期解除Match
/
统计期活跃Match
```
作为参考。
不要过度解读。
---
# 第四十六章 成功牵手转化漏斗
```text
Match
↓
Chat
↓
Getting to Know
↓
Successful
```
其中成功牵手必须:
> 双方确认。
---
# 第四十七章 成功牵手不能由运营手工累加
正式统计来源:
```text
matches.status = successful
```
或成功确认事件。
不能后台输入:
> “本月牵手20对”
然后直接作为正式数据。
---
# 第四十八章 公益红娘申请数
```text
MATCHMAKER_REQUESTS
```
定义:
> 新创建MatchmakerService数量。
---
# 第四十九章 红娘服务用户数
```text
MATCHMAKER_USERS
```
去重:
> 接受红娘服务的用户数。
---
# 第五十章 当前服务中数量
```text
MATCHMAKER_ACTIVE_SERVICES
```
状态:
```text
assigned
in_service
waiting_user
```
具体是否全部算active由状态表定义。
---
# 第五十一章 待分配服务
```text
MATCHMAKER_UNASSIGNED
```
是管理Dashboard的重要待办。
---
# 第五十二章 首次处理时长
```text
MATCHMAKER_FIRST_RESPONSE_TIME
```
定义:
```text
首次有效处理时间
-
service.created_at
```
不是简单:
> 红娘打开页面时间。
有效处理可以是:
- 接单并记录
- 首次推荐
- 首次跟进
需要研发统一。
---
# 第五十三章 红娘推荐数
```text
MATCHMAKER_RECOMMENDATIONS
```
统计:
> 正式发送给用户的人工推荐。
不是红娘看过的候选数。
---
# 第五十四章 人均人工推荐
```text
AVG_MATCHMAKER_RECOMMENDATIONS
```
只是运营参考。
不能作为:
> 红娘越高越好的绩效指标。
---
# 第五十五章 红娘推荐查看率
```text
MATCHMAKER_RECOMMENDATION_VIEW_RATE
```
---
# 第五十六章 红娘推荐Like率
```text
MATCHMAKER_RECOMMENDATION_LIKE_RATE
```
可以判断:
> 人工筛选是不是提供了额外价值。
---
# 第五十七章 红娘来源Mutual Match
```text
MATCHMAKER_MUTUAL_MATCHES
```
来源识别:
> Recommendation source / Match attribution。
---
# 第五十八章 红娘服务完成率
```text
MATCHMAKER_COMPLETION_RATE
```
公式:
```text
完成的服务
/
应结束的服务
```
但V1不要过度追求100%。
有些用户仍在服务中。
---
# 第五十九章 红娘超时服务数
```text
OVERDUE_MATCHMAKER_SERVICES
```
按:
```text
next_followup_at
```
和配置时限计算。
用于工作管理。
---
# 第六十章 红娘质量指标
更适合关注:
```text
首次响应及时率
按时跟进率
推荐查看率
推荐Like率
Mutual Match率
用户服务反馈
```
---
# 第六十一章 红娘绩效明确不使用
不作为主要指标:
```text
电话数
跟进条数
推荐数量
“优质资源”数量
```
---
# 第六十二章 活动发布数
```text
ACTIVITIES_PUBLISHED
```
统计正式发布活动。
草稿不算。
---
# 第六十三章 活动报名人数
```text
ACTIVITY_APPLICANTS
```
定义:
> 提交报名的用户数量。
---
# 第六十四章 活动审核通过人数
```text
ACTIVITY_APPROVED_REGISTRATIONS
```
---
# 第六十五章 活动签到人数
```text
ACTIVITY_CHECKINS
```
是真实到场人数的核心数据。
---
# 第六十六章 活动到场率
```text
ACTIVITY_ATTENDANCE_RATE
```
公式:
```text
签到人数
/
审核通过人数
```
---
# 第六十七章 活动报名通过率
```text
ACTIVITY_APPROVAL_RATE
```
公式:
```text
approved
/
已完成人工审核的报名
```
不要把pending放入分母。
---
# 第六十八章 活动男女结构
显示:
```text
报名男女
通过男女
签到男女
```
用于运营平衡。
不对用户公开。
---
# 第六十九章 活动年龄结构
按年龄段汇总即可。
V1不做过细的个人画像交叉分析。
---
# 第七十章 活动反馈提交率
```text
ACTIVITY_FEEDBACK_RATE
```
建议分母:
> 已签到用户。
---
# 第七十一章 活动意向提交率
```text
ACTIVITY_INTEREST_SUBMISSION_RATE
```
公式:
```text
提交活动意向用户
/
签到用户
```
---
# 第七十二章 活动双向互选对数
```text
ACTIVITY_MUTUAL_INTEREST_PAIRS
```
这是活动核心结果之一。
---
# 第七十三章 活动互选率
可以定义:
```text
至少形成1个双向互选的用户数
/
提交意向用户数
```
比:
> 双向对数 / 人数
更容易理解。
---
# 第七十四章 活动来源Match数
```text
ACTIVITY_MATCHES
```
如果双方活动互选创建Match,则计入。
---
# 第七十五章 活动来源聊天启动率
用于判断:
> 线下见面后是否真的继续交流。
---
# 第七十六章 活动来源成功牵手
长期指标:
```text
ACTIVITY_SUCCESSFUL_MATCHES
```
来源通过Match attribution追踪。
---
# 第七十七章 不把双向互选称“牵手成功”
后台正式术语:
> 双向互选。
只有:
```text
status = successful
```
才叫:
> 成功牵手。
---
# 第七十八章 举报数量
```text
REPORTS_CREATED
```
按类型拆:
```text
虚假资料
婚姻状态疑似虚假
骚扰
诈骗
金钱诱导
广告
其他
```
---
# 第七十九章 举报用户数
去重统计:
```text
被举报用户数
举报人用户数
```
---
# 第八十章 举报成立数
```text
CONFIRMED_REPORTS
```
只有人工处理确认成立。
---
# 第八十一章 举报成立率
```text
REPORT_CONFIRMATION_RATE
```
公式:
```text
confirmed
/
已完成处理举报
```
---
# 第八十二章 风控处置人数
按:
```text
warning
feature_limit
temporary_suspend
ban
```
分别统计。
---
# 第八十三章 当前风险账户
```text
RISK_USERS_CURRENT
```
按:
```text
watch
high
critical
```
分层。
---
# 第八十四章 风险处理时长
```text
AVG_REPORT_RESOLUTION_TIME
```
尤其关注:
> 高风险举报。
Dashboard可显示:
```text
高风险待处理数量
```
比平均值更实际。
---
# 第八十五章 申诉数量
```text
APPEALS_CREATED
```
及:
```text
APPEALS_APPROVED
```
用于发现:
> 风控误判是否过多。
---
# 第八十六章 拉黑行为统计
可以看:
```text
BLOCK_ACTIONS
```
但不要轻易把被拉黑次数做成用户质量排名。
只作为:
> 风控信号和整体平台体验指标。
---
# 第八十七章 安全事件率
例如:
```text
每1000个活跃用户举报数
```
比单纯举报总数更容易跨月份比较。
---
# 第八十八章 MAU
```text
MONTHLY_ACTIVE_USERS
```
V1建议“活跃”定义:
统计期内发生至少一种有效业务行为:
```text
登录进入核心页面
查看推荐/搜索
Like
聊天
活动
红娘服务
```
但为了实现简单,可使用:
> 有有效登录Session并进入小程序。
需要统一埋点。
---
# 第八十九章 DAU
同理:
> 当天至少一次有效平台访问用户。
---
# 第九十章 DAU/MAU
可以观察使用频率。
但公益婚恋不是短视频产品。
不应追求:
> 用户每天都必须打开。
---
# 第九十一章 婚恋产品的特殊成功逻辑
一个成功用户最终:
> 离开推荐系统
其实可能是产品成功。
因此:
> 留存越高不一定越好。
这是婚恋产品和内容产品最大的差异之一。
---
# 第九十二章 不把“成功用户流失”当流失
如果用户:
```text
matched_successfully
```
停止活跃。
这属于:
> 成功退出核心匹配服务。
Dashboard需要从普通流失中排除。
---
# 第九十三章 用户流失建议定义
V1不需要立即做复杂Churn模型。
可以简单看:
```text
审核通过
+
仍处于searching
+
30/60天未活跃
```
作为:
> 沉默用户。
---
# 第九十四章 沉默用户
可作为公益红娘/活动运营参考。
但不能:
> 自动骚扰用户。
仅在用户同意接收对应服务时触达。
---
# 第九十五章 用户池健康度
平台运营核心应该看:
```text
可匹配用户总数
男女结构
年龄结构
地区结构
近30天活跃
候选池不足用户比例
```
---
# 第九十六章 无候选用户比例
```text
NO_CANDIDATE_USER_RATE
```
定义:
> 当前Required双向过滤后,候选数量为0的searching用户比例。
非常重要。
---
# 第九十七章 候选池较小用户比例
例如:
```text
有效候选 <= 3
```
阈值配置。
帮助判断:
> 本地用户池是不是足够。
---
# 第九十八章 平均候选池大小
```text
AVG_CANDIDATE_POOL_SIZE
```
按性别/年龄段可拆。
这是比“注册人数”更能反映平台是否可用的指标。
---
# 第九十九章 推荐覆盖率
```text
RECOMMENDATION_COVERAGE_RATE
```
公式:
```text
当天获得至少1个有效推荐的searching用户
/
当天应获得推荐的searching用户
```
---
# 第一百章 推荐不足原因
后台可统计:
```text
无符合Required候选
候选已曝光完
用户池过小
隐私/状态限制
```
帮助运营而不是只看到:
> 推荐失败。
---
# 第一百零一章 平台核心漏斗一:用户准入
```text
注册
↓
手机号
↓
实名
↓
资料完成
↓
提交审核
↓
审核通过
↓
进入匹配
```
---
# 第一百零二章 平台核心漏斗二:线上匹配
```text
推荐曝光
↓
详情查看
↓
Like
↓
Mutual Match
↓
聊天启动
↓
进一步了解
↓
成功牵手
```
---
# 第一百零三章 平台核心漏斗三:公益红娘
```text
申请红娘服务
↓
红娘接手
↓
人工推荐
↓
用户查看
↓
用户Like
↓
Mutual Match
↓
进一步了解
```
---
# 第一百零四章 平台核心漏斗四:活动
```text
活动详情
↓
报名
↓
审核通过
↓
签到
↓
意向提交
↓
双向互选
↓
Match
↓
聊天
```
---
# 第一百零五章 Dashboard设计原则
首页不展示50个指标。
平台管理员首页只应该快速回答:
```text
今天有没有积压?
平台有没有正常匹配?
有没有高风险问题?
最近活动和红娘服务是否正常?
```
---
# 第一百零六章 平台Dashboard第一屏
建议6个任务型卡片:
```text
待审核资料
待处理高风险举报
红娘待分配
活动报名待审核
今日新增审核通过
今日新Mutual Match
```
---
# 第一百零七章 第二屏:核心业务漏斗
建议:
```text
近30天
推荐曝光
↓
Like
↓
Mutual Match
↓
聊天启动
↓
成功牵手
```
不要堆复杂3D图。
---
# 第一百零八章 第三屏:用户池健康
展示:
```text
当前可匹配用户
男性/女性结构
主要年龄段
无候选用户比例
近30天活跃用户
```
---
# 第一百零九章 第四屏:公益服务
左右:
```text
红娘
当前服务中
待跟进
本月人工推荐
形成Match
活动
报名中活动
本月到场人数
双向互选
活动来源Match
```
---
# 第一百一十章 第五屏:安全
展示:
```text
待处理举报
高风险举报
当前受限用户
本月封禁
本月申诉
```
---
# 第一百一十一章 不要Dashboard大红大绿
风险使用醒目颜色。
普通增长数据保持中性。
平台不是证券行情软件。
---
# 第一百一十二章 趋势图
V1最有价值的趋势:
```text
新增注册
审核通过
Mutual Match
活动签到
举报
```
按日/周。
---
# 第一百一十三章 图表数量
建议Dashboard同屏:
> 3~5张图以内。
其他数据进入专项分析页。
---
# 第一百一十四章 用户统计页
页面结构:
```text
顶部筛选
↓
核心指标
↓
用户准入漏斗
↓
用户结构
↓
趋势
```
---
# 第一百一十五章 用户结构
V1支持:
- 性别
- 年龄段
- 区域
学历等不是首页必看。
---
# 第一百一十六章 不统计敏感价值标签
不做:
- 高收入用户比例
- 高资产用户
- 高颜值用户
- “优质用户”占比
---
# 第一百一十七章 匹配统计页
建议:
```text
推荐曝光
详情查看
Like
Mutual Match
聊天启动
Unmatch
成功牵手
```
---
# 第一百一十八章 来源拆分
Match来源:
```text
系统推荐
主动找对象
公益红娘
线下活动
```
这是管理层最需要看的一项。
---
# 第一百一十九章 算法版本统计
可按:
```text
rule_version
```
查看:
- 推荐曝光
- Like率
- Mutual率
V1不需要复杂实验平台。
---
# 第一百二十章 红娘统计页
顶部:
```text
服务申请
当前服务中
待跟进
人工推荐
形成Match
```
下方:
> 红娘个人工作视图。
---
# 第一百二十一章 红娘个人数据
可以显示:
```text
服务中数量
首次响应及时率
待跟进
本月推荐
形成Mutual Match
```
但不公开做排行榜。
---
# 第一百二十二章 是否显示“成功牵手数/红娘”
内部可以查询服务贡献。
但不建议:
> 大屏排名“第一名牵手12对”。
避免诱导红娘为了指标过度干预。
---
# 第一百二十三章 活动统计页
每场活动:
```text
报名
通过
签到
到场率
反馈
意向
双向互选
后续Match
```
---
# 第一百二十四章 活动对比
可以看:
> 不同活动到场率、互选率。
用于改进活动形式。
---
# 第一百二十五章 风控统计页
建议:
```text
新举报
待处理
高风险
处理时长
成立率
处置
申诉
```
---
# 第一百二十六章 风控类型分布
例如:
```text
骚扰
虚假资料
诈骗
金钱诱导
广告
身份冒用
```
帮助安全运营。
---
# 第一百二十七章 组织统计
机构管理员:
> 只看本机构有业务关系的数据。
例如工会:
```text
本机构活动
本机构红娘服务
本机构工作人员任务
```
---
# 第一百二十八章 机构不能看到平台用户全局漏斗
除非明确授权。
组织Dashboard重点:
> 自己提供了哪些服务。
---
# 第一百二十九章 组织服务成效
可以统计:
```text
红娘服务人数
活动场次
报名人数
签到人数
人工推荐
形成Mutual Match
```
---
# 第一百三十章 数据范围继承权限模型
所有Analytics API:
必须调用:
> DataScopeService。
不能因为是“统计”就绕过数据范围。
---
# 第一百三十一章 小样本数据保护
例如:
某机构某年龄段只有1个女性用户。
不要支持:
> 性别+年龄+婚姻状态+职业
无限交叉筛选。
容易间接识别个人。
---
# 第一百三十二章 V1统计维度控制
主要:
```text
时间
性别
年龄段
区域
来源
组织
状态
```
足够。
---
# 第一百三十三章 指标实时性分级
## 实时/准实时
```text
待审核
待举报
待分配
当前活动报名
当前未读
```
## 小时级/日级
```text
推荐漏斗
用户结构
红娘效果
活动效果
```
---
# 第一百三十四章 不要所有Dashboard每秒刷新
增加数据库压力没有价值。
任务型数据:
> 手动刷新/分钟级。
统计:
> 小时/日汇总。
---
# 第一百三十五章 V1数据架构
建议:
```text
业务PostgreSQL
↓
SQL聚合
+
Daily Summary
↓
Analytics Service
↓
Admin Dashboard
```
不需要:
```text
Kafka → Flink → ClickHouse → BI
```
---
# 第一百三十六章 Daily Summary表
建议后续增加:
```text
daily_platform_metrics
```
---
# 第一百三十七章 daily_platform_metrics
建议字段:
```text
metric_date
new_users
new_verified_users
new_approved_users
active_users
recommendation_impressions
likes
mutual_matches
chat_started
successful_matches
matchmaker_requests
matchmaker_recommendations
activity_applications
activity_checkins
activity_mutual_pairs
reports
confirmed_reports
```
---
# 第一百三十八章 是否一张宽表足够
V1可以。
后续如果维度复杂再拆:
```text
daily_user_metrics
daily_match_metrics
daily_activity_metrics
```
早期不要过度设计。
---
# 第一百三十九章 组织日汇总
需要机构Dashboard时,可以增加:
```text
daily_organization_metrics
```
字段:
```text
date
organization_id
...
```
---
# 第一百四十章 指标不要直接存百分比
保存:
```text
numerator
denominator
```
或原始数量。
前端/Service计算比例。
避免后续口径难改。
---
# 第一百四十一章 日汇总生成时间
建议:
> 每天凌晨生成上一自然日。
并允许:
> 后台补算指定日期。
---
# 第一百四十二章 汇总任务必须幂等
重复运行:
> 覆盖/Upsert同一天正式结果。
不能越跑数字越大。
---
# 第一百四十三章 今日数据
当日实时Dashboard:
> 可以从业务表轻量聚合 + Redis缓存。
昨日以前:
> 读Daily Summary。
---
# 第一百四十四章 历史数据补算
如果Bug修复:
支持:
```text
rebuildMetrics(startDate,endDate)
```
重新计算。
这是非常重要的维护能力。
---
# 第一百四十五章 指标来源必须可追溯
例如:
Dashboard显示:
> 今日Mutual Match 12
至少技术上可以追到:
```text
matches matched_at today
```
不能是神秘缓存数字。
---
# 第一百四十六章 Event埋点
建议基础事件:
```text
app_open
login_success
verification_success
profile_submit
review_approved
recommendation_impression
profile_view
like_created
mutual_match_created
chat_started
matchmaker_service_created
matchmaker_recommendation_viewed
activity_view
activity_apply
activity_checkin
activity_interest_submit
relationship_success
```
---
# 第一百四十七章 业务表优先于前端埋点
例如:
Mutual Match:
> 以数据库Match为真。
不能只根据:
```text
frontend event = mutual_match
```
统计。
---
# 第一百四十八章 埋点主要用于什么
适合:
- 页面曝光
- 点击
- Funnel前端行为
不适合替代:
- 实名
- 审核
- Match
- 活动报名
- 举报
这些后端都有正式业务记录。
---
# 第一百四十九章 recommendation_impression
要避免:
> 后端返回6人就算6次曝光。
更准确:
> 卡片实际进入用户可视区域。
V1如果实现成本高:
可先以:
> 返回给首页并实际进入推荐列表
作为近似口径,但必须统一。
---
# 第一百五十章 Profile View
用户从:
- 推荐
- 找对象
- 红娘推荐
- 活动
打开资料时记录source。
---
# 第一百五十一章 Source Attribution
所有关键行为建议记录:
```text
source
```
例如Like:
```text
daily
discover
matchmaker
activity
```
---
# 第一百五十二章 Attribution规则
如果用户先在推荐看到B,过两天主动搜索并Like:
最终source应该如何归属?
V1建议:
> 以实际触发Like的入口为主。
即:
```text
like_source = discover
```
同时推荐历史仍保留。
---
# 第一百五十三章 Match Attribution
如果A从红娘推荐Like,B从每日推荐Like。
一个Match有两个不同来源。
建议保存:
```text
user_a_like_source
user_b_like_source
```
管理统计可以定义:
> 含红娘贡献的Match
只要一侧来源matchmaker即可。
避免强行单一归因。
---
# 第一百五十四章 Activity Match来源
双方活动互选:
```text
match.source = activity
```
明确。
---
# 第一百五十五章 成功牵手归因
如果双方最初由系统推荐,后来参加活动,再成功。
不建议V1做复杂多触点营销归因。
可以记录:
```text
original_match_source
```
作为主要来源。
---
# 第一百五十六章 数据质量检查
每天/定期检查:
```text
successful match但successful_at为空
conversation无match
activity registration关联无activity
review approved但profile状态异常
```
---
# 第一百五十七章 数据一致性异常
建立后台技术告警。
不要把脏数据悄悄算入Dashboard。
---
# 第一百五十八章 统计延迟说明
后台可以显示:
> 数据更新时间:10:30
避免运营以为绝对实时。
---
# 第一百五十九章 导出统计
允许:
> 聚合统计导出。
例如:
```text
2026年8月活动运营数据
```
不自动包含个人名单。
---
# 第一百六十章 数据导出权限
依然需要:
```text
analytics.export
```
单独权限。
---
# 第一百六十一章 政府/公益组织报表
未来可能需要:
- 月报
- 季报
- 项目服务数据
V1可以提供:
> 标准汇总导出。
但不要把它做成复杂报表设计器。
---
# 第一百六十二章 建议标准月报
包含:
```text
新增注册
新增实名
新增审核通过
当前可匹配
新Mutual Match
成功牵手
红娘服务人数
活动场次
活动到场人数
举报处置
```
---
# 第一百六十三章 对外公开数据必须谨慎
例如宣传:
> 本平台累计成功牵手XX对。
必须来源:
```text
双方确认successful
```
不能:
> 活动互选也算进去。
---
# 第一百六十四章 对外宣传不得虚构增长率
任何宣传数字:
> 必须能从系统正式口径还原。
---
# 第一百六十五章 Dashboard不显示用户个人排名
不做:
- 最受欢迎用户
- Like最多用户
- 被看最多用户
- 高分用户
这些都不符合公益产品方向。
---
# 第一百六十六章 红娘也不做公开榜
内部管理看:
> 服务任务和质量。
不做娱乐化排行。
---
# 第一百六十七章 风控指标不能成为“坏人榜”
后台可以案件排序。
但不要:
> 公开展示用户“风险排行榜”。
---
# 第一百六十八章 北极星指标
V1不建议只用:
> DAU
作为北极星。
更符合公益婚恋价值的是:
> **有效双向关系形成与进一步了解。**
---
# 第一百六十九章 推荐核心业务指标
建议核心管理层关注:
```text
当前可匹配用户数
推荐覆盖率
Mutual Match数
Match到聊天启动率
正在了解/成功牵手
公益红娘有效服务
活动双向互选
高风险待处理
```
---
# 第一百七十章 “成功牵手率”慎用
由于婚恋周期较长,简单:
```text
成功牵手 / 本月新注册
```
意义很低。
建议按:
> cohort
分析。
但V1不强制做复杂Cohort系统。
---
# 第一百七十一章 简单Cohort建议
可以按:
```text
审核通过月份
```
查看:
> 30/60/90天内形成Mutual Match的比例。
这是未来P2。
---
# 第一百七十二章 V1先记录好事件
只要:
- approved_at
- matched_at
- chat_started_at
- successful_at
完整。
未来随时可以做Cohort。
---
# 第一百七十三章 Dashboard页面结构建议
```text
┌─────────────────────────────────────────────┐
│ 平台运营概览 时间:近30天 │
├─────────────────────────────────────────────┤
│ 待审核 │ 高风险举报 │ 红娘待分配 │ 活动待审 │
├─────────────────────────────────────────────┤
│ 可匹配用户 │ Mutual Match │ Chat启动 │ 成功牵手│
├─────────────────────────────────────────────┤
│ 匹配漏斗 │
├──────────────────────┬──────────────────────┤
│ 用户池健康 │ 公益服务 │
├──────────────────────┼──────────────────────┤
│ 风控情况 │ 近期活动 │
└──────────────────────┴──────────────────────┘
```
---
# 第一百七十四章 Dashboard交互
点击:
> 待审核 28
直接进入:
```text
/reviews?status=pending
```
Dashboard必须是:
> 工作入口。
不是只能看不能做。
---
# 第一百七十五章 指标卡点击
例如:
> 高风险举报 3
点击:
> 风控列表,risk=high。
---
# 第一百七十六章 平台统计筛选
建议:
```text
今天
昨日
近7天
近30天
本月
自定义
```
---
# 第一百七十七章 不需要“今年/去年”放第一层
使用频率低。
可自定义。
---
# 第一百七十八章 机构统计筛选
增加:
> 组织
但普通机构管理员不能切换到其他组织。
平台管理员可选。
---
# 第一百七十九章 Activity Dashboard
每场活动详情可以有独立数据页。
避免全塞平台Dashboard。
---
# 第一百八十章 Matchmaker Dashboard
红娘本人更关注:
```text
今日待办
```
而不是平台全局数据。
因此:
> 统计和工作台必须分清。
---
# 第一百八十一章 Analytics权限
建议:
```text
analytics.platform.overview
analytics.users
analytics.matches
analytics.matchmaker
analytics.activities
analytics.risk
analytics.organization
analytics.export
```
---
# 第一百八十二章 Data Viewer角色
只拥有:
```text
analytics.*
```
必要只读权限。
不拥有:
> 用户详情敏感查询。
---
# 第一百八十三章 统计缓存
Redis Key示例:
```text
analytics:dashboard:platform:2026-08-28
```
TTL:
> 几分钟。
避免高频聚合。
---
# 第一百八十四章 统计缓存失效
不要求每一个Like都立即清所有统计缓存。
允许:
> 准实时。
减少复杂度。
---
# 第一百八十五章 待办指标例外
如:
```text
pendingReviews
pendingHighRiskReports
```
需要更实时。
可单独查询/短缓存。
---
# 第一百八十六章 数据库索引支持
统计常用:
```text
users.created_at
user_identities.verified_at
review_tasks.completed_at/status
recommendation_records.shown_at/source
user_relations.created_at
matches.matched_at/status/source
messages.created_at
matchmaker_services.created_at/status
activities.start_at/status
activity_registrations.registered_at/status
reports.created_at/status/risk_level
```
---
# 第一百八十七章 不为了统计重复大量业务数据
业务表是主数据。
Summary只用于:
> 加速。
不要出现:
> 主业务改了,统计表变成第二个业务真相。
---
# 第一百八十八章 数据回溯
如果成功牵手后来重新开启服务:
历史成功:
> 仍然保留。
SUCCESSFUL_MATCH_PAIRS历史不会因为恢复寻找就被减掉。
---
# 第一百八十九章 当前状态与历史事件分离
例如:
```text
当前成功牵手用户数
```
和:
```text
历史成功牵手对数
```
不是同一个指标。
必须分别定义。
---
# 第一百九十章 推荐曝光历史
同一个用户看到B三次:
> 算3次曝光。
去重用户指标另算。
不能混淆。
---
# 第一百九十一章 Like撤回
如果A先Like后取消。
历史Like事件:
> 仍可算行为发生。
当前Like关系:
> 不存在。
因此统计需区分:
```text
like_events
current_likes
```
V1如果关系表只存当前状态,Recommendation action/history需要保留事件价值。
---
# 第一百九十二章 建议增加业务事件表吗
V1不强制建设大型Event Store。
但可以有轻量:
```text
business_events
```
记录关键业务事件。
---
# 第一百九十三章 business_events适用
例如:
```text
USER_VERIFIED
PROFILE_APPROVED
LIKE_CREATED
MUTUAL_MATCH_CREATED
CHAT_STARTED
MATCH_UNMATCHED
RELATIONSHIP_SUCCESS
ACTIVITY_CHECKED_IN
```
---
# 第一百九十四章 是否必须新增
如果开发团队能从正式业务表准确统计:
> 可以先不建。
V1优先简单。
但对:
> chat_started
这种一次性事件,
建议保存明确时间字段或事件。
---
# 第一百九十五章 Conversation建议补充
可增加:
```text
first_user_message_at
two_way_chat_started_at
```
便于统计。
---
# 第一百九十六章 Match建议补充
可增加:
```text
getting_to_know_at
```
如果最终使用该状态。
---
# 第一百九十七章 MatchmakerService建议补充
```text
first_handled_at
```
便于计算首次响应。
---
# 第一百九十八章 Activity建议已有数据足够
报名、审核、签到、互选都有明确时间字段。
---
# 第一百九十九章 数据统计验收原则
对于Dashboard任意数字:
测试人员应能:
> 用数据库查询验证。
---
# 第二百章 统计测试场景一
今天注册10人。
其中:
- 7人实名
- 5人提交审核
- 4人通过
Dashboard应该:
```text
新增注册 10
新增实名 7
提交审核 5
审核通过 4
```
---
# 第二百零一章 统计测试场景二
A/B互相Like。
产生:
```text
2个Like关系
1个Mutual Match
```
Dashboard不能显示:
> 2个Match。
---
# 第二百零二章 统计测试场景三
Match创建时系统自动发System消息。
双方都没说话。
应:
```text
Mutual Match +1
Chat Started +0
```
---
# 第二百零三章 统计测试场景四
A发“你好”。
B没回复。
```text
Chat Started +1
Two-Way Chat +0
```
---
# 第二百零四章 统计测试场景五
活动100人报名。
90通过。
80签到。
50提交意向。
形成10对双向互选。
应:
```text
Applicants 100
Approved 90
Checkins 80
Attendance 88.89%
Interest submitters 50
Mutual pairs 10
```
不能说:
> 成功牵手10对。
---
# 第二百零五章 统计测试场景六
红娘系统里看了20个候选,只正式给用户发2个。
红娘推荐数:
> 2。
不是20。
---
# 第二百零六章 统计测试场景七
一个举报处理为:
```text
insufficient_evidence
```
不应算:
> confirmed report。
---
# 第二百零七章 统计测试场景八
用户成功牵手后一个月重新使用平台。
历史:
> 成功牵手对数仍保留。
当前:
> relationship status按新状态统计。
---
# 第二百零八章 统计一致性测试
平台Dashboard:
> Mutual Match 20
Match统计页同一时间同一范围:
> 必须也是20。
如果不同:
> 说明指标口径或缓存有问题。
---
# 第二百零九章 组织范围测试
机构A管理员:
> 只能看到机构A活动/红娘服务数据。
平台全局注册用户:
> 不能因为机构A管理员能看统计就暴露完整平台画像。
---
# 第二百一十章 隐私测试
统计API不能返回:
```text
某32岁离异女教师唯一用户ID
```
聚合页面只返回聚合数据。
---
# 第二百一十一章 Dashboard性能目标
平台首页:
```text
P95 < 2s
```
可通过:
- Daily Summary
- Redis
- 少量实时待办查询
实现。
---
# 第二百一十二章 Analytics API建议
```text
GET /admin/analytics/overview
GET /admin/analytics/users
GET /admin/analytics/matches
GET /admin/analytics/matchmaker
GET /admin/analytics/activities
GET /admin/analytics/risk
GET /admin/analytics/organizations/{id}
```
---
# 第二百一十三章 Overview响应示例
```json
{
"period": {
"startDate": "2026-08-01",
"endDate": "2026-08-28"
},
"tasks": {
"pendingReviews": 18,
"highRiskReports": 3,
"unassignedMatchmakerServices": 5,
"pendingActivityRegistrations": 26
},
"users": {
"newUsers": 328,
"newVerifiedUsers": 251,
"newApprovedUsers": 208,
"matchableUsers": 1356
},
"matching": {
"recommendationImpressions": 8620,
"likes": 1148,
"mutualMatches": 186,
"chatStarted": 139,
"successfulMatches": 8
}
}
```
数字仅为接口结构示例,不代表真实平台数据。
---
# 第二百一十四章 Match Funnel API
建议:
```json
{
"impressions": 8620,
"profileViews": 3240,
"likes": 1148,
"mutualMatches": 186,
"chatStarted": 139,
"successfulMatches": 8
}
```
---
# 第二百一十五章 趋势响应
```json
{
"series": [
{
"date": "2026-08-27",
"value": 18
},
{
"date": "2026-08-28",
"value": 21
}
]
}
```
---
# 第二百一十六章 前端图表规范
推荐:
- 折线:时间趋势
- 漏斗:业务转化
- 条形图:类别比较
- 环形/简单柱状:结构
不要使用:
- 3D饼图
- 3D柱图
- 地球旋转
- 粒子效果
---
# 第二百一十七章 图表必须显示样本量
例如:
```text
活动到场率 88.9%
80 / 90
```
比只显示:
> 88.9%
更可靠。
---
# 第二百一十八章 比例低样本提醒
例如:
只有:
```text
1/1 = 100%
```
不能让运营误以为巨大成功。
界面可以同时显示:
> 1/1。
---
# 第二百一十九章 趋势环比
V1可以显示:
```text
较上一周期 +12%
```
但要确保:
> 周期长度一致。
---
# 第二百二十章 零基数问题
上一期=0时:
不要显示:
> +∞%。
显示:
> 新增 / 无可比基数。
---
# 第二百二十一章 成功牵手展示
平台管理可以:
```text
本月新增成功牵手 8对
```
必须附:
> 双方确认口径。
至少在指标说明中明确。
---
# 第二百二十二章 指标说明入口
Dashboard每项重要指标可有:
```text
?
```
点击:
> 查看指标定义。
例如:
“成功牵手:指双方在平台完成成功牵手确认的Match。”
---
# 第二百二十三章 指标字典
后台最好建设轻量:
> 指标口径文档。
不一定做配置系统。
可以作为开发文档:
```text
docs/analytics-metrics.md
```
---
# 第二百二十四章 指标代码常量
例如:
```text
NEW_USERS
VERIFIED_USERS
MUTUAL_MATCHES
CHAT_STARTED
SUCCESSFUL_MATCHES
```
避免Service到处写中文指标名。
---
# 第二百二十五章 研发红线一
不能:
> 为了Dashboard快,前端自己累计数据。
所有正式数字来自服务端。
---
# 第二百二十六章 研发红线二
不能:
> 删除用户后直接让历史成功牵手、活动数据消失。
历史指标依然应保持一致。
---
# 第二百二十七章 研发红线三
不能:
> 把系统通知算聊天。
Chat Started只能是真实用户消息。
---
# 第二百二十八章 研发红线四
不能:
> 把活动双向互选当成功牵手。
---
# 第二百二十九章 研发红线五
不能:
> 把生成推荐等同曝光。
---
# 第二百三十章 研发红线六
不能:
> 把红娘查看候选等同正式推荐。
---
# 第二百三十一章 研发红线七
不能:
> 将pending举报算成立举报。
---
# 第二百三十二章 V1核心指标建议控制在20~30项
避免建立:
> 200项运营指标。
真正长期需要的再增加。
---
# 第二百三十三章 V1第一优先指标
必须上线:
```text
新增注册
新增实名
新增审核通过
当前可匹配用户
待审核
推荐曝光
Like
Mutual Match
Chat Started
Successful Match
红娘申请
红娘服务中
红娘人工推荐
活动报名
活动通过
活动签到
活动双向互选
待处理举报
高风险举报
封禁
```
---
# 第二百三十四章 V1第二优先指标
```text
推荐覆盖率
无候选用户比例
审核时长
红娘首次响应
红娘超时
活动到场率
举报成立率
申诉情况
```
---
# 第二百三十五章 V1后续指标
P2:
```text
30/60/90天Cohort
候选池健康分析
算法版本对比
长期服务效果
用户沉默分析
机构项目效果分析
```
---
# 第二百三十六章 不建设大型BI平台
V1:
> 后台自带固定统计页面。
数据量和团队规模都不需要:
- Superset复杂开放查询
- Tableau
- Data Warehouse
- ClickHouse
如果后期管理需求增长再接BI。
---
# 第二百三十七章 可考虑内部只读SQL/BI
未来技术人员可接:
> Metabase/Superset
用于内部分析。
但不能给普通运营:
> 随意查询实名数据。
---
# 第二百三十八章 分析数据脱敏
即使以后接BI:
> 默认只连接分析视图/脱敏数据。
不是直接把生产所有表暴露。
---
# 第二百三十九章 最终管理驾驶舱目标
平台负责人打开Dashboard应在30秒内知道:
```text
平台有没有新增用户?
有没有积压审核?
有没有用户能正常获得推荐?
有没有形成真实双向Match?
有没有开始聊天?
公益红娘有没有积压?
最近活动效果如何?
有没有严重风险举报没处理?
```
---
# 第二百四十章 最终指标体系
可以归纳为:
```text
用户池
↓
认证审核
↓
推荐
↓
喜欢
↓
双向Match
↓
聊天
↓
进一步了解
↓
成功牵手
```
辅助两条路径:
```text
公益红娘
→ Match
```
```text
公益活动
→ 双向互选
→ Match
```
安全贯穿全程:
```text
举报
→ 风控
→ 处置
→ 申诉
```
---
# 第二百四十一章 最终设计原则
V1.0数据统计必须坚持:
> **指标是为了帮助服务,不是为了制造好看的数字。**
> **注册人数不是平台最重要的结果,可匹配用户和有效关系才更重要。**
> **双向Like不是成功牵手。**
> **开始聊天不等于稳定关系。**
> **活动互选不等于成功牵手。**
> **红娘推荐数量不等于红娘服务质量。**
> **用户成功离开匹配系统不是“流失失败”,可能正是产品成功。**
> **所有正式指标必须有唯一计算口径和数据来源。**
> **组织只能看到其授权服务范围内的统计数据。**
> **统计数据也必须遵守隐私最小化原则。**
> **V1先把数据记正确,再谈复杂AI分析。**
最终管理驾驶舱不是为了回答:
> “平台看起来有多热闹?”
而是要持续回答三个真正重要的问题:
> **有没有足够真实、可服务的用户?**
> **平台有没有帮助这些用户形成真正的双向关系?**
> **公益组织能不能安全、稳定、持续地把这项服务做好?**