语言 / LanguagePRD v1.16

Player Report · 周报与月报 · PRD

作者 Luke 版本 v1.16 日期 2026-09-17 状态 待开发评审 平台 BRAND_A & BRAND_B 类 R

目标:协助菲籍同事按月制作监管 Player Report。读者:菲籍报表人员、后台前端、报表后端与测试;开发与测试以本中文稿为准。

版本记录
版本 日期 变更摘要
v1.16 2026-09-17 依开发回馈在 §3 改为直接按 Player Report 画面表头说明字段,不要求开发另找监管月报或理解另一套栏号。明确 Partially / Initially Verified 与 Verified Player Counts 共同拆分本期 Registered Player Counts cohort;Total Registered Players 为累计值且不参与拆分。同步重申 Active、Suspended、Attendance、Line、player、测试账号与 fake=true 口径;业务公式不变。
v1.15 2026-09-15 依 Luke 确认在 §3 调整字段定义,并把 PAGCOR 月报—栏位校验 SOP 适配后写入附录 D:只统计 player,Line 依查询条件生效且不排除测试账号;03 + 04 = 01 为当期新注册 cohort 在注册后 3 日内的 KYC 二分;07 为当期发生冻结且截止仍冻结;Attendance 以实际成功金流/账变计算,不以 KYC 为前提;需求 20 的全程免 KYC/提款前 KYC 玩家在真实 KYC 前按 Filipino、Partially / Initially Verified、Active 与 Attendance 的实际事件归类,系统默认 fake=true 资料不得当真实 KYC 或年龄依据;跨月 Σ07 以账号并集去重。同版修正附录 C 的网页折叠边界、附录 D 代码块可读样式与双语 HTML 图片路径,并附上 PAGCOR OGP 月报 Excel 表。
v1.14 2026-09-14 依 Luke 最新确认在 §3 重定义 Attendance Player Counts:有效统计区间内完成任一成功交易的玩家都计入,包含仅充值、仅投注、仅提款、仅领取奖金及其他金流/账变操作;非成功终态不计,以完成时间归期并按账号去重。附录 A 同步补确定性案例,并明确不修改 PlatformReport · Bet Player Counts。
v1.13 2026-09-14 依 Luke 验收反馈修正 §3 与 §4 的 GamingVenue = All:不按实体站拆行,而是把全部实体站纳入同一统计范围后按账号去重;选择单一实体站时才只统计该站。同步修正第 16 栏、原型与验收案例。
v1.12 2026-09-11 §3 依监管月报补齐 Total Registered Players、Partially / Initially Verified、Suspended Player Accounts,报表由 13 栏改为 16 栏;明确未提交 KYC 的注册账号归 Filipino。L0 补写本需求用于协助菲籍同事制作月报。
v1.11 2026-09-11 Sonnet 首轮在 L0 ④ 写明 CMED-EG-1680 新定义覆盖原需求的旧口径;§2.3 补跨三个月的残月拆行算例;§3.6 补三个年龄跨档点及验收。
v1.10 2026-09-11 §3 明确一行粒度为「实体站 × 国籍 × 周期段」;状态型指标一律读取本行截止时点,并补齐 KYC、冻结及跨月宽限期的边界规则与算例;压缩重复描述并重绘资讯图表;本版正式进入评审。
v1.9 2026-09-10 §3 删除无法由正常 KYC 流程产生的「已提交但国籍为空/无效」与未知 KYC 状态分支;KYC 送出前由前台必填校验,送出后依申报国籍分为 Filipino/Non-Filipino。不改变 13 栏或其他统计口径;资讯图表同步删除不存在的异常分支。
v1.8 2026-09-10 §3 改为完整 13 栏字段表;注册账号尚未提交 KYC 时归 Filipino,已提交时依申报国籍分组;Suspended 定为全部冻结账号,不分原因;监管 Excel 没有 Dormant,本期移除并关闭原 OP1/OP2。同步更新验收与资讯图表。
v1.7 2026-09-10 §3 依 CMED-EG-1680 重写字段定义:注册改按完成注册时间,Active 改为「已通过 KYC、期间内登入且未冻结」,Inactive 改为「注册满 3 天仍未通过 KYC 且未冻结」,Verified 改为结算时点的 Verified 状态;新增 KYC 对账式、账号状态互斥顺序,以及“无 KYC 资料的注册账号归 Filipino”。保留现行 13 栏,列出 4 个尚未显示的 CMED 指标及 2 项 Open Points;同步更新附录 A、B。
v1.6 2026-09-10 两项查询日期行为结案:切换 ReportType 时重设为该类型第一颗快捷按钮,Time Period 保留原日期;周/月快捷范围都取完整自然周期,Last N 包含当前周期,未来日期照常查询。新增 AC34。
v1.5 2026-09-10 补齐导出档名、资料范围与查询基准;明确档名时间与搜索区间无关,0 笔也须导出只有表头的 CSV;补写查询条件须按 Search 才生效,并消除 Time Period「一行」的维度歧义。新增 AC29~AC33,尚有 2 项查询日期行为待确认。
v1.4 2026-09-10 Codex 精简比较稿:保留 L0 核心规则、§1~§5 完整业务口径与附录 A 的 28 条验收,将重复说明合并;版本记录、目录与各附录默认折叠;重做资讯图表,突出四档周期、账号去重及三个例外。原 v1.3 与通过 marker 不变。
v1.3 2026-09-09 既有需求重检:补 BO/Client 空视觉清单,建立可机判的视觉数量契约;为 L0「明确不做」逐项补正文锚点;把二至三级规格的续行并回所属编号段落;不改任何业务口径。
v1.2 2026-09-05 §4.6 与 §4.7 各把一处歧义写死。
① 排序方向:原写「沿用现行按 Date 的方向」没写方向,改成明写「新的在上」。
② 导出范围:原写「导出的就是画面上那几行」,在原型把分页做成真的会换页之后,这句话可以读成「只导当前页」。改成明写「整个查询范围,与分页无关」,并新增 §4.7.1:单次导出上限平台没有统一,本需求不自订。
两处都是既有行为,本需求不改行为,只把话写清楚。触发源:原型送外审,两处各被判过一次不一致。
v1.1 2026-09-05 L0 ④「明确不做」表新增一列「不改取数节奏」——需求原文 第 17 点逐字「更新周期沿用既有节奏,非实时。本需求不改取数节奏。」,v1.0 没落;L0 资讯图表下补本地图 md5 指纹。图没重出,指纹对应 infographic/prd_v1.0_infographic.png(图跟内容走,不跟版本号走)。触发源:补跑 Codex 外审前的自查。
v1.0 2026-08-28 初版。ReportType 由 1 档扩为 4 档(§1);人数类栏位改为按所选周期对「人」去重(§3);残段的取数与显示分开处理(§2);年龄分档按活跃当天的年龄归档,Total 与四档之和不再恒等(§3);Inactive Player Counts 取「期间内任一天曾触发」(§3);Attendance Player Counts 的 on the day 随 ReportType 走(§3)。附录给三组完整算例。
目录

[TOC]


L0 · 先看结论

Player Report 周报与月报 · 一页式资讯图表

⓪ 换版差异(开发手上 v1.15 → v1.16)

#改了什么v1.15v1.16查
1字段定义说明用监管月报栏号转述规则,开发必须先理解另一张表直接按画面表头写定义、范围与等式;不要求另找监管月报或建立栏号映射§3.2~§3.3、附录 D

没有改的:本期注册 cohort、三日 KYC 判定期限、Active、Suspended、Line、测试账号、fake=true 与 Attendance 的业务公式均不变。

只改说明方式的:删除跨报表栏号映射,改由字段名称直接说明计算口径,并在原型说明栏同步显示。

① 一句话需求

Player Report 新增 Weekly、Monthly、Time Period,各人数栏在每个报表周期内按用户账号去重;注册、KYC 与账号状态改按 CMED-EG-1680 定义计算。

② 术语写死表

词 唯一含义
周 周一到周日的完整一周,不是滚动 7 天
月 自然月
残段 查询只覆盖某周/月的一部分;数字算查询天,标签写完整周/月
有效统计区间 本行周期与查询日期的交集,采用左闭右开
本行截止时点 有效统计区间结束时刻;状态型指标只读取该时点的历史状态

③ 全局红线表

# 必须成立 最常见错误 验证
G1 13 个人数栏分别 COUNT(DISTINCT 用户账号) 把日报相加,导致同一人重复计数 AC1 AC2 AC3
G2 周一至周日;月为自然月 做成滚动 7 天或周日起算 AC4 AC5
G3 残段只算查询到的天;Date 仍写完整周/月 擅自补齐数字或把标签改成残段 AC6 AC7 AC8
G4 当期发生冻结且本行截止仍冻结才计 Suspended;累计冻结状态仍用于排除 Active/Inactive 把往期冻结存量重算进当期 07,或让同一人重复进入多类 AC12 AC13 AC37 AC50
G5 当期新注册 cohort 必须满足 Partial / Initial + Fully Verified = Registered 拿累计 Total Registered 与当期 03/04 对账 AC35 AC36 AC49
G6 年龄只用真实 KYC 生日、按登入当天分档;无真实生日的 Active 只进 Total,故 Total 可大于四档之和 拿 fake=true 的默认生日做监管年龄,或强制加总相等 AC9 AC10 AC11 AC20 AC53
G7 新字段定义同时适用于四种 ReportType 只改周报/月报,留下另一套日报口径 AC16 AC28
G8 GamingVenue = All 时跨全部实体站合并统计,不按站拆行 把 All 展开成每站一行 AC44

④ 适用范围与「不做」边界

本期做:ReportType 四档、快捷按钮随档切换、周期切分、13 个人数栏按周期去重、对应的 Date 显示,以及 §3 的 16 栏字段定义。

定义优先级:Luke 已确认本版依 CMED-EG-1680 新定义执行。因此,原需求中「既有取数口径不改」「不重定义栏位」「日报数字不变」只保留为历史记录,并由本版覆盖。覆盖范围限于 Registered、Total Registered、Partial / Initial、Active 与年龄档、Inactive、Suspended、Verified;四种 ReportType(含 Daily)统一使用新定义。

明确不做:增加 Quarter、Year、Bi-weekly、Dormant、合计行、筛选项、权限点、提示语、残段标记、导出上限及“Active Total 必须等于年龄分档和”的校验;不改 Tax Report、PlatformReport、代理盈亏、其他报表的 ReportType、二级子表 Forfeited Players 与非实时取数节奏。


1. ReportType 与快捷按钮

适用页面:ReportManagement ▸ Player Report。本文将查询日期栏统一称为 DateRange。

1.1 ReportType 沿用横排 radio,四档同时显示,顺序固定:

Daily → Weekly → Monthly → Time Period

默认选中 Daily,日期默认 Today。Time Period 不切周期;每个 Nationality 在整个查询区间聚合为一行。

1.2 切换 ReportType 时,快捷按钮整组替换:

ReportType 快捷按钮 数量
Daily Today / Yesterday / Last 7 Days / Last 14 Days / Last 30 Days / Last Month / This Month 7
Weekly This Week / Last Week / Last 3 Weeks / Last 6 Weeks 4
Monthly This Month / Last Month / Last 3 Months / Last 6 Months 4
Time Period 无 0

Time Period 的按钮整组消失,不显示置灰按钮。快捷按钮只填写查询日期,不改变 §2 的周期规则。

切换 ReportType 时,日期重设为该类型第一颗快捷按钮;切到 Time Period 时保留原日期。周/月快捷按钮都填写完整自然周期:This 填当前完整周/月,Last N 填当前周期及前 N-1 个完整周期。区间可含未来日期;未来日期没有资料时计 0。

1.3 变更 ReportType、日期、快捷按钮或其他筛选项,只更新尚未送出的查询条件;表格维持上一次成功查询。按 Search 后才同时套用全部条件并回到第 1 页。Export 一律依据上一次成功查询,不读取尚未送出的修改。

1.4 Date 显示格式:

ReportType 格式 示例
Daily YYYY/MM/DD 2026/08/25
Weekly 完整周的 YYYY/MM/DD ~ YYYY/MM/DD 2026/08/17 ~ 2026/08/23
Monthly YYYY/MM 2026/06
Time Period 查询区间 YYYY/MM/DD ~ YYYY/MM/DD 2026/08/28 ~ 2026/08/28

Time Period 查询单日也保留相同的起止日期,不缩成单一日期。


2. 周期与残段

2.1 周:周一 00:00:00.000 至周日 23:59:59.999,两端都含;不是滚动 7 天,也不是周日起算。

2.2 月:自然月 1 日 00:00:00.000 至最后一日 23:59:59.999;2 月按当年实际天数。

2.3 残段:查询只覆盖某周或某月的一部分时,必须同时满足:

项目 规则
数字 只统计查询区间内的天,不补入区间外资料
Date 仍显示该行所属的完整周或 YYYY/MM
画面 不增加“本行是残段”的标记或提示

例:Weekly 查询 2026/08/20 ~ 2026/08/23,Date 显示 2026/08/17 ~ 2026/08/23,数字只包含 4 天。

Monthly 查询 2026/06/30 ~ 2026/08/31 时,依新到旧输出三行:

Date 实际统计区间
2026/08 08/01 ~ 08/31
2026/07 07/01 ~ 07/31
2026/06 仅 06/30

3. 取数口径

3.1 共通基准

  • 定义来源:CMED-EG-1680。原型搜索区必须显示 Def by CMED-EG-1680。
  • 去重键为用户账号。每一行、每一个人数栏分别去重;不用姓名、手机号或 KYC 资料去重。
  • 只统计 player(usertype=0),代理不计。Line 是现行查询条件:选 All 纳入全部 userline,选特定值则只统计该 userline;不得在取数层额外写死 userline=1。正式与测试账号都计入,不以 istester 排除。
  • 需求 20 的节点 1(全程免 KYC)与节点 2(提款前才校验 KYC)是现行正常业务分支,不是异常账号排除条件。fake=true 的系统默认 KYC 资料视为尚未提交真实 KYC。
  • Nationality:结算时点尚未提交 KYC 的注册账号归 Filipino;已提交 KYC 的账号依申报国籍归 Filipino 或 Non-Filipino。KYC 国籍为前台必填项,未填写不能提交。
  • 区间采用左闭右开:开始时间 <= event_time < 结束时间的下一毫秒;沿用平台既有时区。
  • 事件型指标读取“有效统计区间”;状态型指标读取“结算时点”。历史报表不得用查询当下的状态代替历史状态。

3.2 现行 16 栏字段表

开发与测试只需按画面表头辨识字段;下表的定义、计算条件与时间口径就是唯一实现依据。本需求不要求另找监管月报截图,也不要求建立另一套栏号与 BO 栏位的映射。

一行=Nationality × 周期段。GamingVenue 是查询筛选,不是拆行维度;每个指标按用户账号去重。本页没有合计行,因此“合计”均为 —。

# 表头 定义 计算/取值 时间口径 合计 备注
1 Nationality 本行国籍分组 未提交 KYC=Filipino;已提交 KYC=依申报国籍分为 Filipino/Non-Filipino 本行截止时点 — KYC 国籍未填写时不能提交
2 Date 本行对应的报表周期 依 §1.4 显示日、完整周、自然月或查询区间 本行周期 — 残段仍显示完整周/月标签
3 Registered Player Counts 本期新增注册人数 COUNT(DISTINCT 用户账号);完成注册时间落在有效统计区间 完成注册时间 — 不以 KYC 提交时间计算
4 Total Registered Players 截止时点前已完成注册的总人数 COUNT(DISTINCT 用户账号);完成注册时间早于本行截止时点 本行截止时点 — 包含尚未提交 KYC 的账号
5 Partially / Initially Verified 当期新注册中,KYC 判定期限内未完成验证的账号数 只取本行 Registered Player Counts 所包含的新增注册账号;在 min(registration_time + 3 days, 本行截止时点) 仍为 Not Set / Under Review / Rejected;按账号去重 每个账号的 KYC 判定期限 — Not Set 归 Filipino;后续通过不得回写历史
6 Verified Player Counts 当期新注册中,KYC 判定期限内完成验证的账号数 只取本行 Registered Player Counts 所包含的新增注册账号;review_time <= min(registration_time + 3 days, 本行截止时点) 且结果为 Verified;按账号去重 每个账号的 KYC 判定期限 — 与 Partially / Initially Verified 相加必须等于 Registered Player Counts;后续通过不得回写历史
7 Active Player Counts · Total 本期活跃账号数 未冻结、有效统计区间内至少登入 1 次,且符合下列任一身份:真实 KYC = Verified;或需求 20 当前节点仍有效且 fake=true 的免 KYC/提款前 KYC player 登入事件+本行截止时点 — 充值或投注不能单独触发 Active;特殊 KYC 分支是合法 Active 身份
8 Active Player Counts · Age: 21 to 30 Active 中登入当天为 21~30 岁的账号数 先符合 Active,再按每次登入当天的真实 KYC 生日分档并去重 登入当天 — fake=true 默认生日不可使用;无真实生日时只计 Active Total
9 Active Player Counts · Age: 31 to 40 Active 中登入当天为 31~40 岁的账号数 先符合 Active,再按每次登入当天的 KYC 生日分档并去重 登入当天 — 同账号跨年龄档时可进入多个年龄栏
10 Active Player Counts · Age: 41 to 50 Active 中登入当天为 41~50 岁的账号数 先符合 Active,再按每次登入当天的 KYC 生日分档并去重 登入当天 — 同账号跨年龄档时可进入多个年龄栏
11 Active Player Counts · Age: 51 and above Active 中登入当天为 51 岁以上的账号数 先符合 Active,再按每次登入当天的 KYC 生日分档并去重 登入当天 — 同账号跨年龄档时可进入多个年龄栏
12 Inactive Player Counts 注册满 3 天仍未通过 KYC 的账号数 KYC != Verified、registration_time + 3 days < 本行截止时点,且未冻结;按账号去重 本行截止时点 — 等于 3 天时仍在宽限期
13 Suspended Player Accounts 当期曾被冻结且截止仍冻结的账号数 有效统计区间内至少一笔冻结事件,且本行截止时点最终状态仍为冻结;按账号去重 冻结事件+本行截止时点 — 不分冻结原因;往期已冻结但本期没有冻结事件的账号不重复计入
14 Forfeited Player Counts 本期发生有效没收的账号数 [409] forfeiture 且理由不为 Violation of TOU;按账号去重 没收事件时间 — 只取有效统计区间内事件
15 Attendance Player Counts 本期完成任一成功金流/账变的账号数 有效统计区间内至少 1 笔金流或账变最终状态为成功/完成;类型包含但不限于充值、投注、提款、领取奖金及其他金流/账变操作;按账号去重 交易完成时间 — 依已成功事件如实计算,不以 KYC 状态或 fake 为统计前提;非成功终态不计
16 Gaming Venue 本次查询套用的实体站范围 筛选为 All 时显示 All,13 个人数栏合并统计全部实体站;选择单一实体站时显示该站并只统计该站 查询条件 — 不把 All 展开成多个实体站列或多行

3.3 KYC 状态与对账

KYC 只允许四个值:Not Set、Under Review、Rejected、Verified。尚未提交 KYC 的注册账号按 Not Set 计算,并归入 Filipino。

CMED 指标 定义 现行 Player Report
Newly Registered Players 完成注册时间落在有效统计区间 对应 Registered Player Counts
Total Registered Players 完成注册时间早于结算时点的全部账号 对应同名栏位
Partially / Initially Verified 当期新注册账号在个别 KYC 判定期限仍未通过 对应同名栏位
Fully Verified 当期新注册账号在个别 KYC 判定期限内完成验证 对应 Verified Player Counts
Active Player Accounts 规则见 §3.2 对应 Active Total 与年龄档
Inactive / Deactivated Player Accounts 规则见 §3.2 对应 Inactive Player Counts
Suspended Player Accounts 当期曾冻结且结算时点仍冻结的账号,不分冻结原因 对应同名栏位

同一当期新注册 cohort、筛选条件与 KYC 判定期限下,必须满足:

Partially / Initially Verified + Fully Verified = Registered Player Counts

Total Registered Players 是截至本行截止时点的累计注册数,不参与当期 03/04 二分。跨月对账时,必须以每个月的注册 cohort 累加 03/04,不能拿单月 03/04 与累计 02 相加或比较。

3.4 账号状态互斥

每个账号依下列顺序判断,命中后停止:

  1. 结算时点已冻结:先排除于 Active/Inactive;若冻结事件发生在有效统计区间内,计入当期 Suspended,否则归为「往期冻结存量 C」。
  2. 否则,真实 KYC 已通过,或需求 20 当前节点仍有效且 fake=true;有效统计区间内登入过时计 Active。
  3. 否则,真实 KYC 未通过且注册满 3 天:Inactive / Deactivated。
  4. 其余不进入画面上的三类。

因此同一人不得同时进入 Active、Inactive、当期 Suspended 或「往期冻结存量 C」;画面上的三类相加不一定等于 Total Registered Players。以下两类也会落在“其余”:

  • 注册未满 3 天、KYC 尚未通过、未冻结。
  • KYC 已通过、期间内未登入、未冻结。

3.5 截止时点与三天宽限期

状态型指标只看本行截止时点,不以查询执行时间或截止后的状态回写历史。Inactive 在 registration_time + 3 days < 本行截止时点 时才算逾期;两者相等时仍在宽限期。Rejected 不提前计入 Inactive。

本段的 03/04 是监管月报编号,不是 Player Report 画面的第 3/4 栏。03/04 只二分本行新增注册 cohort。每个账号的 KYC 判定期限为 min(registration_time + 3 days, 本行截止时点);在期限内完成并通过 KYC 计 04,否则计 03。月报因此同时具有「当月新注册」范围与「月底截止」限制;月底之后才完成的 KYC 不得回写该月。若账号注册满 3 天的时点早于月底,则以满 3 天时点冻结 03/04 归类。

查询 8 月资料的情形 8 月结果
7/30 注册,8/1 KYC 通过 Registered=0;截止时点为 Verified。是否 Active 另看 8 月内登入与冻结状态。
7/30 注册,8 月截止时仍未通过 KYC Registered=0;宽限期已过且未冻结时 Inactive=1。
8/31 注册,截止时仍未通过 KYC Registered=1;仍在宽限期,Inactive=0。

KYC 在截止边界当刻完成、或冻结状态在边界当刻改变,均归入下一段;同一区间内多次变更只取截止时点最后状态。历史重跑必须读取当时快照。部分周/月也以该残段结束时刻为截止,不等待完整周期结束。

需求 20 已定义两种现行流程:节点 1 全程免 KYC,节点 2 在提交提款前才校验 KYC。这些 player 在 fake=true 期间视为没有真实 KYC:国籍归 Filipino,当期注册 cohort 归 Partially / Initially Verified而非 Fully Verified;只要符合登入/成功金流事件,仍可分别进入 Active Total 与 Attendance。提交真实 KYC 后 fake=false,国籍、KYC 状态与后续 Active 身份就按一般流程判定;03/04 历史 cohort 仍守原判定期限,不因晚到的 KYC 回写。

3.6 年龄分档

只使用玩家提交的真实 KYC 生日,以登入当天的年龄归档。fake=true 的系统默认生日不是真实身份资料,不得用于监管年龄栏;这类玩家可计 Active Total,但在真实 KYC 提交前不进四个年龄档。会员在同一周期跨年龄档且两边都有登入时,可同时进入两个年龄档;Total 仍只计一个账号。因此 Total 与四档之和不必相等。

跨档点只有 30 → 31、40 → 41、50 → 51。Daily 不会跨档;Weekly、Monthly 可能跨档,且 Monthly 较常发生。三个跨档点都使用相同规则。

3.7 数据时间

报表沿用非实时更新节奏。所有状态型字段必须能还原结算时点的 KYC 与冻结状态;若现有资料只能取得当前状态,开发须在开工前提出,不得静默改成当前快照。

本需求的最低取数来源为:会员注册与账号属性、KYC 历程、登录日志、冻结/解冻日志、成功金流/账变明细,以及没收资料。月报人工执行可继续以「会员注册档、登录日志、冻结日志」三份基础档为起点,但涉及 03/04、08 与 Forfeited 的检核,必须再回查对应历程或明细,不得把三份基础档齐全误判成所有指标来源齐全。


4. 页面、排序与导出

4.1 表格为 §3.2 的 16 栏。人数显示整数与千分位;零显示 0,不显示 --。Nationality 维持 Filipino/Non-Filipino 两组,并依 §3.2 分组。

4.2 按周期起始日由新到旧排序;分页沿用现行。

4.3 导出契约:

项目 规则
查询条件 取按下 Export 时「上一次成功查询」的 ReportType、日期、筛选与排序;尚未按 Search 的修改不生效
资料范围 导出该查询的全部结果,与当前分页无关;Weekly 导周粒度、Monthly 导月粒度,不导底层日报
栏位 与列表 16 栏一致;不含评审标记,也不展开 Forfeited Players 二级明细
档案 CSV、UTF-8 with BOM;档名为 PlayerReport_yyyymmdd_hhmmss.csv。日期与时间取按下 Export 的当下,不取搜索区间
0 笔结果 Export 仍可点击;CSV 只写 16 栏表头,数据列为空

其余导出行为沿用现行;本需求不新增统一笔数上限。

4.4 GamingVenue、Line、Platform 三个筛选项及 Forfeited Players 二级明细沿用现行;不增加合计行。GamingVenue = All 的语义为“不按实体站过滤”:全部实体站合并统计,每个 Nationality × 周期段 只出一行,第 16 栏显示 All;不得把各实体站逐一列出。选择特定实体站时,第 16 栏显示该站且只统计该站。


5. 权限与提示语

5.1 不新增权限点。四档随 Player Report 查看权限出现,导出沿用既有权限。

5.2 本需求不新增提示语。查询失败、无数据与导出沿用页面既有处理;残段不提示。

原型若呈现查无资料,必须逐字使用:

场景 英文文案(上线基准) 呈现
查无资料 No More Data 页内空态

该文案来自后台通用空态;若线上 Player Report 实测不同,以线上为准并同步修改 PRD 与 HTML。


附录 A:验收标准(默认折叠)
# P 验收点
AC1 P0 已通过 KYC、未冻结的同一会员周一与周三各登入一次:该周 Active Total 计 1(G1)
AC2 P0 AC1 的两天日报各计 1;周报计 1,不得把日报相加成 2(G1)
AC3 P0 同一会员期间内被没收两次:Forfeited 计 1(G1)
AC4 P0 周一开始、周日结束;不得按滚动 7 天切分(G2)
AC5 P0 月按自然月切分;2 月为 28 或 29 天(G2)
AC6 P0 残周查询 08/20 ~ 08/23,Date 显示完整周 08/17 ~ 08/23(G3)
AC7 P0 承 AC6,数字只含 4 天,不等于整周数字(G3)
AC8 P0 残月 2026/06 行只统计 06/30,标签仍为 2026/06(G3)
AC9 P0 会员跨年龄档前后各登入一天:两个年龄档各计 1(G6)
AC10 P0 承 AC9,Total=1、四档之和 =2 为正确结果(G6)
AC11 P0 只在跨档前登入:只进入旧年龄档(G6)
AC12 P0 账号在有效统计区间内发生冻结且结算时点仍冻结时,不论原因,也不论 KYC 或登入状态,都只计当期 Suspended(G4)
AC13 P0 已通过 KYC但期间未登入、未冻结时,不计入 Active/Inactive/Suspended(G4)
AC14 P0 Weekly Attendance 为有效统计区间内任一成功金流/账变的去重人数;不以 KYC 为前提,交易类型不限于投注
AC15 P0 Daily Attendance 按当日完成任一成功金流/账变的账号去重;只改变统计区间,不改变交易类型范围
AC16 P0 Registered、Active、Inactive、Verified 的新定义同时适用于四种 ReportType(G7)
AC17 P0 PlatformReport · Bet Player Counts 上线前后不变
AC18 P1 去重键必须为用户账号,不得改用姓名或手机号
AC19 P1 残段不显示额外标记或提示语
AC20 P0 Daily 下,具真实 KYC 生日的 Active 必须恰好进入一个年龄档;若存在 fake=true 且无真实生日的 Active,Active Total 可大于四档之和(G6)
AC21 P0 已注册但在 KYC 判定期限仍未提交的账号按 KYC = Not Set 并归入 Filipino;仍计入 Registered、Total Registered 与当期 Partial / Initial
AC22 P1 KYC 国籍未填写时不能提交;提交后依申报国籍归 Filipino 或 Non-Filipino
AC23 P1 Weekly 与 Monthly 各显示正确的 4 颗快捷按钮
AC24 P1 Time Period 的快捷按钮整组消失
AC25 P1 Time Period 查单日仍显示完整起止区间
AC26 P1 Forfeited Players 二级明细不受 ReportType 影响
AC27 P1 表格依 §3.2 显示完整 16 栏,不增不减
AC28 P0 同一查询条件重复执行,四种 ReportType 都使用 §3 的同一组字段定义(G7)
AC29 P0 修改条件但未按 Search 时,表格与导出都维持上一次成功查询;按下后套用全部条件并回第 1 页
AC30 P1 导出档名符合 PlayerReport_yyyymmdd_hhmmss.csv;日期与时间取按下 Export 的当下,不取搜索区间;档案为 UTF-8 with BOM
AC31 P0 导出包含上一次成功查询的全部 16 栏结果,与分页无关
AC32 P0 Time Period 跨多周/月时,每个 Nationality 只出一行;13 个人数栏在整个查询区间按账号去重
AC33 P0 查询结果为 0 笔时 Export 仍可点击;下载的 CSV 只有 16 栏表头,没有数据列
AC34 P1 切换 ReportType 后日期按规则重设;周/月 Last N 含当前完整自然周期,未来日期没有资料时计 0
AC35 P0 同一当期注册 cohort 与判定期限下,Partial / Initial + Fully Verified = Registered;不得改与累计 Total Registered 对账(G5)
AC36 P0 registration_time + 3 days = 结算时点 时不计 Inactive;结算时点再往后才计 Inactive
AC37 P0 未通过 KYC 且已逾 3 天的账号若本期冻结并在截止仍冻结,只计当期 Suspended,不计 Inactive;若冻结发生在往期,则归往期冻结存量 C,也不计 Inactive
AC38 P0 查询历史周期时,KYC 与冻结状态取该行结算时点,不取查询当下的当前状态
AC39 P0 未冻结且期间有登入时,真实 KYC = Verified 或需求 20 当前节点仍有效且 fake=true 的 player 计 Active;充值或投注不能单独触发 Active
AC40 P1 原型搜索区逐字显示 Def by CMED-EG-1680
AC41 P0 Monthly 查询 2026/06/30 ~ 2026/08/31 时,依序输出 2026/08、2026/07、2026/06 三行;6 月行只统计 06/30。
AC42 P0 在 30 → 31、40 → 41、50 → 51 任一跨档点前后各登入时,两个年龄档各计 1,Active Total 仍只计 1。
AC43 P0 同一行必须同时显示 Registered Player Counts、Total Registered Players、Partially / Initially Verified、Verified Player Counts 与 Suspended Player Accounts;Registered、Partial/Initial、Verified 满足 G5,Total Registered 保持累计。
AC44 P0 GamingVenue = All 时,每个 Nationality × 周期段 只出一行,第 16 栏显示 All,13 个人数栏以全部实体站账号合并去重;选择 Gaming Venue 2 后仍每组一行,第 16 栏只显示该站且只统计该站(G8)。
AC45 P0 5 个不同账号在期间内分别只完成充值、投注、提款、领取奖金、另一种金流/账变交易;其中可同时包含已验证与需求 20 fake=true 合法免 KYC 账号:Attendance Player Counts = 5。
AC46 P0 同一账号在期间内完成充值、投注与提款各 1 笔:Attendance 仍只计 1。
AC47 P0 账号期间内只有处理中、失败、拒绝、取消或已撤销交易:Attendance 计 0。
AC48 P0 交易建立时间在区间内但完成时间在区间外时不计;完成时间落在左闭右开有效统计区间内时才计。
AC49 P0 当月 01 为 10,其中 6 个账号在各自注册后 3 日与月底较早者前完成 KYC、4 个未完成:04=6、03=4、03 + 04 = 01 = 10;02 仍为含往月账号的累计值。
AC50 P0 账号上月冻结且本月无冻结事件、月底仍冻结:本月 07=0,账号归往期冻结存量 C,且不得回流 Active/Inactive;跨月累计 07 使用 username 并集去重。
AC51 P0 Line=All、Line=1、Line=2 各查一次:只统计 usertype=0 的 player,特定 Line 只取该 userline,All 取全部 userline;代理排除,正式与测试账号均纳入。
AC52 P0 需求 20 节点 1 与节点 2 各一个 fake=true player:未冻结且期间登入时计 Active Total;期间有成功金流时计 Attendance;两者均归 Filipino,不因未 KYC 报错或排除。
AC53 P0 fake=true player 的系统默认 KYC 记录不得计 Fully Verified,默认 nationality 与 birthday 不得用于国籍或年龄分档;当期注册时计 Partially / Initially Verified,Active 只进 Total 不进年龄档。
AC54 P0 同一节点 2 player 在提款前提交真实 KYC:fake=false 后依真实审核状态、申报国籍与真实生日走一般归类;已冻结的 03/04 历史 cohort 不回写。
附录 B:四组基准算例(默认折叠)

B.1 年龄跨档

查 2026/08/24 ~ 2026/08/30 周报。会员甲已通过 KYC 且未冻结,08/27 满 31 岁,并在 08/25 与 08/28 登入。

结果 值
Active Total 1
21 to 30 1
31 to 40 1
四档之和 2

Total=1、分档和 =2 是正确结果。

B.2 三天宽限期

会员乙在 09/01 10:00 完成注册,KYC 为 Under Review,账号未冻结。结算时点为 09/04 10:00 时仍不计 Inactive;结算时点晚于该时间后才计 1。

B.3 状态优先级

会员丙已冻结、KYC 为 Rejected、注册超过 3 天,且期间内曾登入。只计 Suspended;Inactive 与 Active 都不计。

B.4 残段

Weekly 查询 2026/08/20 ~ 2026/08/23。Date 显示完整周 2026/08/17 ~ 2026/08/23,数字只来自查询覆盖的 4 天。

附录 C:原型视觉清单(默认折叠)

原型视觉清单

视觉 ID 载体 用途 证据
VIS-BO-NONE BO 后台页面没有图片或图片占位 BO 原型
VIS-CLIENT-NONE Client 本需求不产出客户端页面 L0 ④

报表表格、载入骨架与标注符号不属于视觉素材槽位。

附录 D:PAGCOR 月报栏位校验 SOP(默认折叠)

附件:PAGCOR OGP 月报 Excel 表

阅读方式:本附录也以字段名称为准。来源附件中的栏号只是原表顺序,不是开发实现条件;开发与测试无需另建 BO 栏位映射,直接依 §3.2 的同名字段定义验收。

D.1 适用范围与判定等级

  • 适用:Player Monthly Operational Summary 的 01~08 栏;只统计 usertype=0 的 player,Line 范围必须与该次查询条件一致(All 或特定 Line),不排除测试账号。
  • 硬性校验:资料缺漏、数学恒等式、Line/player 范围不一致、需求 20 的 fake=true 默认资料被误认为真实 KYC,或无法回源时,必须阻止送出,修复或取得具名业务确认后才可继续。“KYC 前已发生合法金流”本身不是异常。
  • 预警校验:历史比率、单日低点、月增减幅仅用于提示人工复核;偏离阈值本身不直接阻止送出,但必须留下原因与证据。
  • 月报完成顺序固定为 L0 资料源完整性 → L1 单栏自检 → L2 跨栏交叉检核 → L3 回源对账 → 六桶对账。

D.2 L0 — 资料源完整性

# 检核 通过标准 等级
L0-1 登录日志时间范围 MIN(时间) <= 月初 且 MAX(时间) >= 月底;以实际资料时间为准,不信档名 硬性
L0-2 登录日志逐日笔数 无缺日;任一天低于当月中位数 30% 时复核日志与事件 缺日为硬性;30% 为预警
L0-3 注册即登录命中率 当月注册账号与登录日志回查;低于 99% 复核,低于 95% 优先查漏 预警;已提交 KYC 却无登录为硬性异常
L0-4 冻结日志结构 每列数量、CSV 引号与逗号跳脱正确,零笔解析异常 硬性
L0-5 指标明细可用 KYC 历程、成功金流/账变明细、没收资料均可按账号及时间回查 硬性

三份基础档为会员注册档、登录日志、冻结日志;但三份齐全不等于所有栏位来源齐全。03/04 必须有 KYC 历程,08 必须有成功金流/账变明细,Forfeited 必须有没收资料。

D.3 L1 — 单栏自检

栏 栏位 自检规则
01 Newly Registered registertime 落在当月;范围为该次 Line 查询值下的 usertype=0, isdeleted=0,不加 istester=0;Line=All 不得暗中改为 userline=1。与会员档逐笔对账且 username 不重复。单日注册量低于前 7 日中位数 10% 只触发预警与说明。
02 Total Registered 算法 A:前月 02+本月 01;算法 B:月底前累计完成注册数。A 必须等于 B;不等时追查软删除或历史回补,不可直接用 B 覆盖。
03/04 Partially / Fully Verified 只取本月 01 cohort;每个账号以 min(registertime + 3 days, 月底) 为判定期限。期限内真实 KYC 通过计 04,其余计 03;需求 20 fake=true 的系统默认记录一律计未 KYC,不得计 04。必须满足 03 + 04 = 01,且历史重跑不得漂移。
05 Active Player 本月曾登录 ∩ 月底未冻结 ∩(真实 KYC 已通过,或需求 20 当前节点有效且 fake=true);按账号去重。不再检查 05 <= 已完成 KYC;检查 05 >= 08 及月变动,超过 50% 为预警。无真实生日者只计 Active Total,不使用默认生日进年龄档。
06 Inactive / Deleted 未命中 05 ∩ 注册满 3 日 ∩ 月底仍未通过真实 KYC ∩ 月底未冻结;冻结排除使用累计最终状态,不只看本月新增冻结。需求 20 fake=true 玩家若本月已登入则已进 05,不可重复进 06。
07 Suspended Player 本月至少一笔冻结事件 ∩ 月底最终状态仍冻结;同月解冻后再冻结仍计 1,按账号去重,不以「冻结笔数−解冻笔数」计算。往月冻结、本月无冻结事件的存量归六桶 C,不重复计入 07。
08 Attendance Player 本月任何一笔最终成功/完成的金流或账变账号,类型含充值、投注、提款、领取奖金及其他账变;以完成时间归期并按账号去重。不以 KYC 或 fake 为统计前提;需求 20 允许的 KYC 前成功金流正常计入。非成功终态不计。检查 08 <= 05、08 <= 当月不重复登录人数、08 <= 02;08/05 落在 0.2~0.7 之外只触发预警。

03/04 不采用查询当下的 KYC 快照。若真实 KYC 在个别判定期限之后才通过,该历史 cohort 仍保持 03,不得回写为 04。需求 20 的 fake=true 默认记录不是真实 KYC;节点 1 全程免 KYC,节点 2 提款前才校验,故 KYC 前金流必须依实际成功事件计 08,不得当异常排除。

D.4 L2 — 跨栏交叉检核

# 检核式 判定
1 02(M) = 02(M−1) + 01(M) 硬性;软删除或历史回补须逐笔解释并形成调整记录
2 03(M) + 04(M) = 01(M) 硬性;三者必须是同一当月注册 cohort
3 Σ03 + Σ04 = 02(期末) 硬性;从报表起始 cohort 连续累加,期初存量须单列带入
4 05 = 已验证且本月登录未冻结 ∪ 需求 20 有效节点下 fake=true 且本月登录未冻结 硬性;两集按 username 并集去重
5 06 <= 截止时累计未完成 KYC 硬性
6 05 + 06 + 07 <= 02 硬性;另以六桶式确认未显示的往月冻结存量、宽限与休眠
7 COUNT(DISTINCT UNION(月份 07 的 username)) <= 02(期末) 硬性;禁止直接算术相加各月 07,避免同账号跨月重复
8 08 <= 05 硬性;失败时先查 Line/player 范围、登录、冻结时点与需求 20 节点判定,不得直接排除 KYC 前交易

六桶对账必须以互斥账号集合计算,差额为 0:

02 期末在册 = 05 活跃
              + 06 非活跃
              + 07 本月冻结且月底仍冻结
              + A 休眠(已验证、本月未登录、月底未冻结)
              + B 宽限(未验证、注册未满 3 日、月底未冻结)
              + C 往月冻结存量(本月无冻结事件、月底仍冻结)

D.5 L3 — 回源对账与出表

# 对账项 通过标准
1 冻结/解冻日志账号对会员档 100% 可回查,且 07 与 C 的分流可逐账号复现
2 08 账号对金流、需求 20 节点与登录 每个账号都有区间内成功终态并可在登录日志回查;未完成真实 KYC 者必须可还原当时有效的需求 20 节点,不得以 KYC 缺失直接剔除
3 登录日志账号对会员档 交集比例与该次 Line 查询值及 usertype=0 player 范围一致
4 国籍分类 nation_type 与 kyc_info.nationality 的映射一致;差异逐笔列出
5 03/04 历史重跑 用 KYC 历程依个别判定期限重算,与已出月份完全一致

最终执行顺序:先跑 L0;再依 01 → 02 → 03/04 → 05 → 06 → 07 → 08 完成 L1;接着跑 L2、L3 与六桶对账。所有硬性校验通过且预警均有说明后才可出表;输出须附当月已知差异、责任人与处理状态。


文档版本:v1.16 | 日期: 2026-09-17 | 作者: Luke | 文档状态:待开发评审