本方案已经用户确认,关联统计分析需求和战略目标 goal-3。用户随后授权按本方案实现和验证,本次授权完成交付收尾、提交与推送。
音乐与影视使用相同的分析结构,分别读取各自收藏数据的 count,不混合排名。正文沿用项目中文规划约定;本文是图表选型、布局与统计口径的维护入口,需求文档保留结果层面的验收标准。
不新增统计页面。在现有音乐页和影视页的收藏概览区域增加“统计分析”展开入口,默认收起,展开内容位于筛选区与收藏列表之间。
页面标题
收藏概览 统计分析
筛选与排序
统计分析区域(展开时显示)
收藏列表
桌面端两图并排,移动端上下排列。不使用弹窗或嵌套卡片,不改变首页、主导航及收藏页的主要浏览路径。
使用纵向柱状图:横轴为离散的喜欢次数,纵轴为条目数。不是连续直方图,不使用饼图。
每根柱提供次数、条目数和占当前统计范围条目数的比例,支持数值读取,不仅依赖颜色或悬停。
使用横向条形图,展示作品名称和喜欢次数,条长表示次数。
count >= 2 的作品。设当前统计范围为 S,有效条目集合为 V,多次喜欢条目集合为 M,其中 M 为 V 中 count >= 2 的条目。每条记录计为一个条目,不按艺人、导演或主演重复展开。
| 指标 | 口径 |
|---|---|
| 累计喜欢次数 | V 中 count 的总和 |
| 多次喜欢条目 | M 的条目数,以及 M 的条目数除以 V 的条目数 |
| 多次喜欢贡献占比 | M 的 count 总和除以 V 的 count 总和 |
图表上方仅展示上述三项,避免重复现有收藏概览。占比必须明确分母;分母为 0 时显示“—”,不得产生无穷或非数值结果。
count 为非负整数才有效。缺失或非法值不静默按 0 计算,显示异常条目数,并明确统计仅包含有效记录。次数分布图中条目占比的分母同样为 V 的条目数。
以下为方案确认时对仓库数据的核对快照,不是固定展示值;实际实现须从数据重新计算。
| 项目 | 音乐 | 影视 |
|---|---|---|
| 收藏条目数 | 97 | 26 |
| 累计喜欢次数 | 122 | 26 |
| 喜欢次数至少 2 次的条目数 | 16 | 0 |
| 最高喜欢次数 | 5 | 1 |
音乐 1 至 5 次对应条目数分别为 81、10、4、1、1。多次喜欢条目占比为 16/97,约 16.5%;贡献占比为 41/122,约 33.6%。影视全部为 1 次,应呈现分布与无次数差异状态,而不是任意列出前十名。
数据来源:_data/music.yml、_data/movies.yml。页面现状依据:_pages/music.md、_pages/movies.md。
使用原生 HTML、CSS 与 JavaScript 渲染条形图,无额外图表运行依赖。统计模型位于 assets/js/like-count.js,页面控制器位于 assets/js/collection-analytics.js,通过现有筛选完成后的事件获取统计基准。脚本只在音乐和影视页加载,不改变书籍和诗文页的行为。
自动化检查入口:
make test:5 组统计模型测试,覆盖严格次数解析、两类占比分母、并列截断、空集合、零分母、非法次数及不变的统计基准。TEST_URL=http://127.0.0.1:4173 make test-browser:5 组 Playwright 浏览器测试,覆盖真实页面数据、筛选与排序、柱选择及清除、作品定位、收起时恢复列表、键盘操作、数据表、异常数据、无 JavaScript 降级与响应式排版。运行环境需能解析 Playwright 并提供 Chromium;外部包路径可通过 NODE_PATH 指定,详见 README。ruby script/validate_content.rb 与 bundle exec jekyll build:内容校验及站点构建。浏览器页面验证覆盖 1440、390、320 像素宽视口,检查图表非空、页面无横向溢出、窄屏指标不挤行及数据表展开状态,并人工复查截图。截图默认位于 /tmp/like-count-analytics,不作为站点资源发布。验证使用 Chromium 桌面与移动视口,不代表已进行实体手机或其他浏览器测试。
统计模型测试现已纳入 .github/workflows/ci.yml 的构建前门禁,测试失败会阻止后续构建与部署。浏览器验收仍是需要本地服务和已有 Playwright 环境的独立检查,未宣称已在 CI 自动执行。2026-10-23 的复验与 AI Cortex 接入范围见接入与交付验收。