e847252e12
统一节点流量统计与限额展示口径,节点详情新增昨日流量, 并让今日、昨日和本月使用清晰的半开时间窗口聚合 同 machine_id 或同 host 的节点现在共享当前账期已用流量, 管理端优先使用后端 traffic_limit_snapshot 展示月额度状态, mi-node 下发的 current_used 也改为共享账期统计 新增 parent_auto_hidden 标记与父节点显隐联动服务,父节点 因自动上线或流量限额变为不可展示时会隐藏当前显示的子节点, 恢复时只恢复这批自动隐藏的子节点,避免覆盖手动操作
85 lines
3.7 KiB
Markdown
85 lines
3.7 KiB
Markdown
# 任务清单: node-traffic-yesterday-stats
|
|
|
|
> **@status:** completed | 2026-04-29 01:37
|
|
|
|
```yaml
|
|
@feature: node-traffic-yesterday-stats
|
|
@created: 2026-04-29
|
|
@status: completed
|
|
@mode: R2
|
|
```
|
|
|
|
## LIVE_STATUS
|
|
|
|
```json
|
|
{"status":"completed","completed":5,"failed":0,"pending":0,"total":5,"percent":100,"current":"节点昨日流量统计已实现并完成验证","updated_at":"2026-04-29 01:50:00"}
|
|
```
|
|
|
|
## 进度概览
|
|
|
|
| 完成 | 失败 | 跳过 | 总数 |
|
|
|------|------|------|------|
|
|
| 5 | 0 | 0 | 5 |
|
|
|
|
---
|
|
|
|
## 任务列表
|
|
|
|
### 1. 后端统计窗口
|
|
|
|
- [√] 1.1 修改 `app/Http/Controllers/V2/Admin/Server/ManageController.php`
|
|
- 预期变更: `traffic_stats` 增加 `yesterday`,今日/昨日/本月使用半开时间窗口聚合。
|
|
- 完成标准: 接口保留 `today/month/total`,新增 `yesterday`,空数据返回 0。
|
|
- 验证方式: `php -l app/Http/Controllers/V2/Admin/Server/ManageController.php`; `vendor/bin/phpunit --bootstrap vendor/autoload.php tests/Unit/Admin/NodeTrafficStatsWindowTest.php`
|
|
- depends_on: []
|
|
- 完成备注: 已新增 `resolveNodeTrafficWindows()` 并让 `fillTrafficWindow()` 使用 `record_at >= start` 与 `record_at < end` 的半开窗口。
|
|
|
|
### 2. 前端展示
|
|
|
|
- [√] 2.1 修改 `admin-frontend/src/types/api.d.ts`
|
|
- 预期变更: `AdminNodeTrafficStats` 类型增加 `yesterday: TrafficAmount`。
|
|
- 完成标准: TypeScript 类型与后端响应字段一致。
|
|
- 验证方式: `npm run build`
|
|
- depends_on: [1.1]
|
|
- 完成备注: `AdminNodeTrafficStats` 已包含 `yesterday`。
|
|
- [√] 2.2 修改 `admin-frontend/src/utils/nodes.ts`
|
|
- 预期变更: `getNodeTrafficDetails()` 在今日后展示昨日。
|
|
- 完成标准: 节点详情卡顺序为今日、昨日、本月、累计,缺失字段时显示 0。
|
|
- 验证方式: `npm run build`
|
|
- depends_on: [2.1]
|
|
- 完成备注: 节点流量详情顺序已调整为今日、昨日、本月、累计。
|
|
|
|
### 3. 验证与知识库
|
|
|
|
- [√] 3.1 新增或更新后端单元测试
|
|
- 预期变更: 覆盖今日、昨日、本月和累计窗口边界。
|
|
- 完成标准: 测试能证明未来记录不进入今日/月统计,昨日记录独立统计。
|
|
- 验证方式: `vendor/bin/phpunit --bootstrap vendor/autoload.php tests/Unit/Admin/NodeTrafficStatsWindowTest.php`
|
|
- depends_on: [1.1]
|
|
- 完成备注: 已新增窗口边界单元测试,覆盖普通日期和月初日期。
|
|
- [√] 3.2 执行构建/测试并同步知识库
|
|
- 预期变更: 运行可用验证命令,更新 `.helloagents` 模块文档和变更日志。
|
|
- 完成标准: 验证结果记录在执行日志,知识库反映 `traffic_stats.yesterday`。
|
|
- 验证方式: 文件检查 + 命令输出
|
|
- depends_on: [2.2, 3.1]
|
|
- 完成备注: 已通过 PHP 语法检查、PHPUnit 单元测试和管理端前端构建,知识库与 CHANGELOG 已同步。
|
|
|
|
---
|
|
|
|
## 执行日志
|
|
|
|
| 时间 | 任务 | 状态 | 备注 |
|
|
|------|------|------|------|
|
|
| 2026-04-29 01:23:00 | DESIGN | in_progress | 已完成上下文收集和方案包创建 |
|
|
| 2026-04-29 01:38:00 | DEVELOP 1.1 | completed | 后端新增 yesterday 窗口并收紧 today/month 上界 |
|
|
| 2026-04-29 01:40:00 | DEVELOP 2.1-2.2 | completed | 前端类型和节点详情卡展示已加入“昨日” |
|
|
| 2026-04-29 01:44:00 | DEVELOP 3.1 | completed | 新增节点流量窗口边界单元测试 |
|
|
| 2026-04-29 01:50:00 | DEVELOP 3.2 | completed | 验证命令通过,知识库同步完成 |
|
|
|
|
---
|
|
|
|
## 执行备注
|
|
|
|
- 面板链路中 `StatServer.u` 对应上行、`StatServer.d` 对应下行;本次不反转历史语义。
|
|
- 用户截图中的“今日下行多、本月上行多”本身可能是正常数据分布,因为本月包含今天及之前日期;新增昨日后便于判断差异来自哪一天。
|