e393b11b61
补齐节点管理真实新增、编辑与排序流程,接入权限组与路由组 维护页,并支持 11 种协议的动态配置表单 开放礼品卡管理入口,交付模板、兑换码、使用记录与统计四页签 工作台,接入 gift-card 相关后台接口 将知识库、权限组与路由管理从占位页升级为真实页面,并修复侧边栏 低高度裁切问题 修复仪表盘 24h 流量排行涨跌始终为 0 的问题,改为对比昨天整日统 计并补充单元测试
2.6 KiB
2.6 KiB
变更提案: admin-frontend-dashboard-rank-24h-compare
元信息
类型: 缺陷修复
方案类型: implementation
优先级: P1
状态: 已完成
创建: 2026-04-24
1. 需求
背景
用户反馈 admin-frontend 仪表盘中的“节点流量排行 / 用户流量排行”在 24h 视图下,右侧趋势百分比始终显示 0%。当前期望是:24h 口径应与“昨天同日统计”做对比,而不是固定归零。
目标
- 修复
24h排行涨跌百分比的对比窗口。 - 保持本轮范围最小,只处理
24h口径,不改动7天 / 30天的既有对比方式。
约束条件
范围约束: 仅修复 admin 仪表盘 traffic rank 的 24h 对比逻辑
技术约束: 优先做后端定点修复,不改动前端排行展示结构
业务约束: 24h 必须与昨天整日统计对比;7天/30天 本轮保持现状
验证约束: 本地无 composer vendor,无法直接跑 Laravel/PHPUnit 全量测试
验收标准
stat/getTrafficRank在单日窗口下返回的change不再因昨日统计行被排除而全部回退为0- 节点排行与用户排行共用同一修复逻辑
- 修改文件通过基础语法校验
.helloagents变更记录已同步
2. 方案
根因
后端 StatUserJob / StatServerJob 会把日统计记录写入当天 00:00:00 的 record_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。
修复策略
- 在
StatController中新增单独的对比窗口解析方法。 - 当当前窗口是单日口径时,上一窗口直接固定为
start_time - 86400 ~ start_time,精确命中昨天整日统计。 - 多日窗口沿用现有等跨度逻辑,避免超出本轮范围。
- 增加单元测试覆盖窗口计算规则,便于后续回归。
3. 技术决策
admin-frontend-dashboard-rank-24h-compare#D001: 仅修复 24h 与昨天对比逻辑,7天/30天 保持现状
日期: 2026-04-24 状态: ✅采纳 背景: 用户在确认阶段明确选择“只修复 24h,对昨天同时间窗口比较;7天 / 30天 保持现状”。 决策: 后端只对单日窗口切换为“昨天整日”比较,多日窗口不在本轮调整。 理由: 与用户确认范围一致,改动最小,回归风险最低。