Files
yinjianm 1739f7a2f9 feat(api): 新增节点流量悬浮详情与即时自动上线同步
为 server/manage/getNodes 返回节点级今日、本月与累计流量统计,
并在节点管理页名称悬浮层展示上行、下行和合计流量。

同时为自动上线补齐单节点同步入口,在管理端保存、
批量更新以及 REST/WS 心跳后立即同步 show 状态,
避免复制节点后开启自动上线仍需等待定时任务。

另优化管理端前端 Docker 发布流程,默认仅构建 amd64,
并收敛 BuildKit 缓存导出以缩短发布时间
2026-04-28 16:51:35 +08:00

3.6 KiB
Raw Blame History

任务清单: admin-frontend-node-auto-online-immediate-sync

@status: completed | 2026-04-28 16:37

@feature: admin-frontend-node-auto-online-immediate-sync
@created: 2026-04-28
@status: completed
@mode: R2

LIVE_STATUS

{"status":"completed","completed":5,"failed":0,"pending":0,"total":5,"percent":100,"current":"开发实施完成,方案包已归档","updated_at":"2026-04-28 16:43:00"}

进度概览

完成 失败 跳过 总数
5 0 0 5

任务列表

1. 自动上线服务

  • [√] 1.1 修改 app/Services/ServerAutoOnlineService.php
    • 预期变更: 抽出单节点同步入口 syncServer(Server $server),让全量 sync() 复用同一判定逻辑。
    • 完成标准: 单节点和全量同步返回结构一致,仍包含 total/updated/shown/hidden/unchanged
    • 验证方式: vendor/bin/phpunit tests/Unit/ServerAutoOnlineServiceTest.php
    • depends_on: []

2. 触发点接入

  • [√] 2.1 修改 app/Services/ServerService.php

    • 预期变更: touchNode() 更新节点心跳缓存后,对 auto_online=true 的节点立即调用单节点同步。
    • 完成标准: 自动上线节点心跳后无需等待 Scheduler 即可同步 show,未开启自动上线的节点不受影响。
    • 验证方式: vendor/bin/phpunit tests/Unit/ServerAutoOnlineServiceTest.php
    • depends_on: [1.1]
  • [√] 2.2 修改 app/WebSocket/NodeEventHandlers.php

    • 预期变更: WebSocket 节点状态上报改为复用 ServerService::touchNode(),避免绕过自动上线即时同步。
    • 完成标准: REST 与 WebSocket 心跳入口都收敛到同一个自动上线触发点。
    • 验证方式: 代码检查 + vendor/bin/phpunit tests/Unit/ServerAutoOnlineServiceTest.php
    • depends_on: [2.1]
  • [√] 2.3 修改 app/Http/Controllers/V2/Admin/Server/ManageController.php

    • 预期变更: save()update()batchUpdate() 在保存或开启 auto_online 后立即执行单节点同步。
    • 完成标准: 管理端保存复制节点、行级开启自动上线、批量开启自动上线后会立即按当前状态同步 show
    • 验证方式: 代码检查 + vendor/bin/phpunit tests/Unit/ServerAutoOnlineServiceTest.php
    • depends_on: [1.1]

3. 验证覆盖

  • [√] 3.1 修改 tests/Unit/ServerAutoOnlineServiceTest.php
    • 预期变更: 增加单节点同步和 touchNode() 触发自动上线的测试。
    • 完成标准: 新测试能复现复制节点 show=0 + auto_online=1 在线后立即 show=1 的核心行为。
    • 验证方式: vendor/bin/phpunit tests/Unit/ServerAutoOnlineServiceTest.php
    • depends_on: [1.1, 2.1]

执行日志

时间 任务 状态 备注
2026-04-28 16:32 DESIGN completed 已确认唯一方案并创建任务清单
2026-04-28 16:37 1.1 completed 已抽出单节点自动上线同步入口并复用全量同步逻辑
2026-04-28 16:38 2.1/2.2 completed 已接入节点心跳、管理端保存、行级更新和批量更新触发点
2026-04-28 16:39 3.1 completed 已补充单节点同步和心跳即时同步测试
2026-04-28 16:40 验证 warning npm --prefix admin-frontend run build 通过;本机缺少 PHP/vendorPHPUnit 未运行
2026-04-28 16:43 2.2 completed 已补齐 WebSocket 状态上报入口,统一复用 touchNode()

执行备注

  • 本次不修改前端视觉和接口签名,前端现有 @success="() => loadNodeBoard()" 会在保存成功后刷新列表。
  • 后端自动上线仍以 available_status 和墙状态为准,不做无条件显示。