Files
Xboard/.helloagents/plan/202604241925_admin-frontend-dashboard-rank-24h-compare/proposal.md
T
yinjianm d4168720ac feat(admin-frontend): 补齐用户节点与订单运营工作台
新增用户高级筛选、批量操作与更多行级动作,支持邮件、
CSV、封禁恢复、订单分配、邀请查看、流量记录与重置流量

增强节点管理页的分页、父子筛选、跨页勾选、批量修改与
单节点置顶,并补齐后端批量更新 host、group_ids、rate

修复订单佣金状态误判问题,新增真实佣金筛选与行级确认,
同时优化仪表盘排行悬浮详情展示

补充 admin-frontend 独立 Dockerfile、Caddy 配置与 GHCR
发布工作流,支持通过独立镜像部署管理前端
2026-04-24 23:15:48 +08:00

3.5 KiB

变更提案: admin-frontend-dashboard-rank-24h-compare

元信息

类型: 缺陷修复
方案类型: implementation
优先级: P1
状态: 已完成
创建: 2026-04-24

1. 需求

背景

用户反馈 admin-frontend 仪表盘中的“节点流量排行 / 用户流量排行”在 24h 视图下,右侧趋势百分比始终显示 0%。当前期望是:24h 口径应与“昨天同日统计”做对比,而不是固定归零。

目标

  • 修复 24h 排行涨跌百分比的对比窗口。
  • 保持本轮范围最小,只处理 24h 口径,不改动 7天 / 30天 的既有对比方式。
  • 为排行项补充 hover 详情卡,并把当前流量值移动到右侧强化展示。

约束条件

范围约束: 仅修复 admin 仪表盘 traffic rank 的 24h 对比逻辑
技术约束: 后端做 24h 定点修复,前端仅做排行 hover 信息与右侧值展示的增量调整
业务约束: 24h 必须与昨天整日统计对比;7天/30天 本轮保持现状
验证约束: 本地无 composer vendor,无法直接跑 Laravel/PHPUnit;优先执行 admin-frontend 构建验证

验收标准

  • stat/getTrafficRank 在单日窗口下返回的 change 不再因昨日统计行被排除而全部回退为 0
  • 节点排行与用户排行共用同一修复逻辑
  • 排行项 hover 时可看到“当前流量 / 上期流量 / 变化率”详情
  • 当前流量值固定在排行项右侧,视觉上不再被节点名吞没
  • admin-frontend 构建通过
  • .helloagents 变更记录已同步

2. 方案

根因

后端 StatUserJob / StatServerJob 会把日统计记录写入当天 00:00:00record_at。现有 getTrafficRank 在单日窗口下使用“当前秒级跨度回推上一窗口”的方式计算:

  • 当前窗口:2026-04-24 00:00:00 ~ 2026-04-24 23:59:59
  • 旧逻辑上一窗口起点:2026-04-23 00:00:01

这样会把昨天 00:00:00 的整日统计记录排除掉,导致 previousValue = 0,最终 change 全部落回 0

修复策略

  1. StatController 中新增单独的对比窗口解析方法。
  2. 当当前窗口是单日口径时,上一窗口直接固定为 start_time - 86400 ~ start_time,精确命中昨天整日统计。
  3. 多日窗口沿用现有等跨度逻辑,避免超出本轮范围。
  4. 前端排行项补充 ElTooltip 悬浮详情卡,并将当前流量值右移到独立右侧列。
  5. 增加单元测试覆盖窗口计算规则,便于后续回归。

3. 技术决策

admin-frontend-dashboard-rank-24h-compare#D001: 仅修复 24h 与昨天对比逻辑,7天/30天 保持现状

日期: 2026-04-24 状态: 采纳 背景: 用户在确认阶段明确选择“只修复 24h,对昨天同时间窗口比较;7天 / 30天 保持现状”。 决策: 后端只对单日窗口切换为“昨天整日”比较,多日窗口不在本轮调整。 理由: 与用户确认范围一致,改动最小,回归风险最低。

admin-frontend-dashboard-rank-24h-compare#D002: 排行项补充 hover 详情卡,并将当前流量右移显示

日期: 2026-04-24 状态: 采纳 背景: 用户补充要求鼠标移入节点排行时展示“当前 / 上期 / 变化率”,并指出当前流量值放在左侧不够明显。 决策: 节点 / 用户排行统一复用 tooltip 详情卡,同时把当前流量值移到右侧与涨跌列组合显示。 理由: 复用同一排行结构即可满足需求,且不会引入新的页面层级或交互负担。