feat(web): add interactions-per-hour stat to up page

This commit is contained in:
kairee committed 2026-11-01 17:09:25 +08:00
1 parent 9757415ee3
commit 7907216c1b
3 files changed
+3 -2

No files matched your search

+1 -1
View File
@@ -544,7 +544,7 @@ P3 实现说明:
| UP主(`/ups`) | 独立入口,不再与视频混排;卡片显示 UP 头像、视频数与总时长、最新粉丝数,以及当前排序的主/副指标(「总播放」排序时副指标为「平均播放」);排序下拉含内容效率、互动效率、内容量、总播放、视频数、平均播放、总互动、最近发布;不提供按视频数筛选。 |
| 数据说明(`/about`) | 数据来源与更新、发布时间/入库时间/快照日期、指标公式、时长与成熟窗口筛选、粉丝快照覆盖与已知局限;数值由 `/api/about` 动态读取。 |
| 视频详情 | 元数据、分 P 数、七项指标、内容/互动效率、入库时粉丝数、单指标趋势、快照表、同 UP 对比。 |
| UP 页 | 该 UP 的头像、mid、首RE时间、最近发布时间、全部视频、聚合趋势、单视频对比、总时长与播放·小时、入库时与当前粉丝数。 |
| UP 页 | 该 UP 的头像、首次观看与最近观看时间、全部视频(默认按发布时间排序)、聚合趋势、单视频对比、总时长与播放·小时/互动·小时、入库时与当前粉丝数。 |
| 粉丝页 | 粉丝总数、日增、7 日净增、累计增长(标注起始日期);支持预设和自选日期,范围超过一年时按每月峰值日期聚合;最近记录默认 14 天并显示“较上一成功日”增量;不叠加视频数据。 |
| 候选池 | 待确认候选、规则命中、剩余保留时间;操作指向 Telegram/CLI。 |
| 系统状态 | 最近扫描、同步、快照、下次运行、备份、鉴权、黑名单与访问统计(近 30 天 PV/UV 与 Top 页面)。 |
+1 -1
View File
@@ -707,7 +707,7 @@ UP 内容效率 = EB 收缩后的 Σview / Σ内容小时
| 工具条 | 顺序为「排序」(带 label)→ 时间(无 label)→ 右侧自适应搜索框(最大 320px,放大镜按钮内嵌),gap 10px,PC 与移动均一行 |
| 数据说明 | 数据来源与更新节奏、三个时间概念、指标公式、时长/成熟窗口筛选、粉丝快照覆盖与已知局限;数值由 `/api/about` 动态读取当前配置 |
| 视频详情 | 元数据 + 分 P 数 + 七项指标 + 内容/互动效率 + 入库时粉丝数 + 单指标趋势 + 同 UP 对比 + 快照表 |
| UP 页 | 该 UP 全部视频、聚合趋势、单视频对比、总时长/播放·小时、入库时与当前粉丝数 |
| UP 页 | 首次/最近观看时间、全部视频(默认按发布时间排序)、聚合趋势、单视频对比、总时长、播放/小时与互动/小时、入库时与当前粉丝数 |
| **粉丝页** | 咻咻满粉丝数曲线 + 每日/7 日净增 + 累计增长(标注起始日期)+ 最近 14 天记录;支持 7/30/90/全部与自选起止日期,范围不超过一年按日绘制,超过一年按每月峰值日期绘制;只画粉丝,不叠加视频数据 |
| **候选池** | 候选、得分、通知时间、剩余 TTL;只读展示,操作指向 Telegram/CLI |
| **系统状态** | 最近任务、采集成功率、下次任务、备份、鉴权、黑名单与访问统计(PV/UV) |
+1
View File
@@ -58,6 +58,7 @@ export async function renderUp(root, { params, query }) {
<div><span>视频数</span><strong>${formatCount(up.video_count)}</strong></div>
<div><span>总时长</span><strong>${up.content_hours == null ? "—" : `${formatCount(up.content_hours)} 小时`}</strong></div>
<div><span>播放/小时</span><strong>${formatCount(up.views_per_hour)}</strong></div>
<div><span>互动/小时</span><strong>${formatCount(up.interactions_per_hour)}</strong></div>
<div><span>总播放</span><strong>${formatCount(up.total_views)}</strong></div>
<div><span>平均播放</span><strong>${formatCount(up.avg_views)}</strong></div>
<div><span>总互动</span><strong>${formatCount(up.total_interactions)}</strong></div>