# 丹阳公益婚恋服务平台 # 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分析。** 最终管理驾驶舱不是为了回答: > “平台看起来有多热闹?” 而是要持续回答三个真正重要的问题: > **有没有足够真实、可服务的用户?** > **平台有没有帮助这些用户形成真正的双向关系?** > **公益组织能不能安全、稳定、持续地把这项服务做好?**