游玩记录页面字段与分页参考
本页说明游玩记录页面的卡片结构、展开详情、资源读取、判定数据和分页行为,补充游玩记录页面与分页、范围读取与文件接口。
页面加载状态
页面可能显示:
- 加载中;
- 加载失败;
- 暂无记录;
- 当前页记录;
- 换页中。
换页时页面可能暂时清空旧卡片并显示加载状态,这是为了避免把上一页误认为当前页。不要在换页中重复点击多个页码。
页码与范围
页面有上一页、下一页、第一页、最后一页、附近页码、省略号和跳转页码输入。跳转输入会把字符串解析为整数,必须在 1 到总页数之间。
开发者使用公开接口时遵循 [start, end):
start包含;end不包含;- 下一页按实际返回数量推进;
total变化时保留当前范围记录。
记录卡片概要
每条卡片可能显示:
- TRACK 编号;
- 封面;
- 曲名;
- 难度;
- 游玩时间;
- 达成率;
- 评级;
- DX 分数;
- 游玩次数;
- 展开详情入口。
封面懒加载失败时,文字字段仍应保留。不要把图片失败当作记录失败。
展开/收起
卡片默认可以折叠,点击后展开详情,再点击收起。展开操作只影响当前浏览器,不会修改记录。打开详情时可能按需读取曲目 XML 或索引信息;详情失败时保留卡片概要并显示错误。
成绩区字段
展开后可能有:
- 达成率;
- DX 分数;
- Rating;
- 游玩次数;
- 最大连击和总连击;
- 最大同步和总同步;
- FAST;
- LATE。
缺失字段要隐藏或显示未提供,不要强制转换成 0。FAST/LATE 是判定统计的一部分,不等于网络延迟。
判定区
判定统计可能按类型显示数量或百分比。总量、最大连击和评分是不同概念:
- 最大连击表示连续状态;
- 总连击是记录中的目标总量/参考量;
- 判定分布说明输入结果;
- 不能用单个判定项推断机台网络。
导出时保留原字段和单位,页面格式化后的百分比不要再次换算。
基础信息区
可能显示:
- Music ID;
- 曲师;
- 谱面作者/配方作者;
- Genre;
- 内容版本;
- BPM;
- 谱面等级;
- 定数。
如果 XML/索引详情读取失败,页面可能只显示记录中的基础字段。详情缓存命中不代表服务端已经更新,内容更新后刷新页面确认。
伙伴/对手区
记录可能包含伙伴、对手、对战模式和对手 Rating。它们属于个人/互动信息:
- 对外截图前遮挡名称和时间;
- 缺失时不要显示“无对手”作为确定结论;
- 对战模式是记录字段,不一定表示当前机台模式仍开启;
- 对手 Rating 不等于当前用户 Rating。
时间语义
页面显示的时间可能来自机台记录、服务处理或浏览器格式化。上传时间与游玩时间可能不同。反馈时间问题时记录:
- 页面显示时间;
- 当前时区;
- 机台发生时间;
- 上传/处理时间(如页面可见)。
不要直接修改备份 JSON 来“对齐”时间。
空状态判断
| 页面表现 | 可能原因 | 下一步 |
|---|---|---|
| 暂无游玩记录 | 账号确实没有记录 | 确认账号和时间 |
| 某页为空 | 范围超出或服务过滤 | 返回上一页/刷新 |
| 整页加载失败 | Token/网络/服务 | 记录消息后重试读取 |
| 卡片有文字无封面 | 图片详情失败 | 单独重试图片 |
| 展开无详情 | XML/索引缺失 | 保留概要并反馈 |
分页回归清单
- [ ] 第一页和最后一页按钮边界正确;
- [ ] 当前页高亮;
- [ ] 跳转越界不会请求;
- [ ] 换页期间按钮状态清楚;
- [ ] 页码变化不会改变账号;
- [ ] 记录卡片展开状态不覆盖新页;
- [ ] 空页和请求失败文案不同;
- [ ] 账号切换后旧响应不会写入新页面。
隐私与导出
游玩记录可能含用户、地点、伙伴、对手和精确时间。导出/截图只保留排障所需字段,原始完整记录放在受保护位置,不要把记录 JSON 发送到公开聊天。
