Files
Xboard/.helloagents/archive/2026-04/202604280024_node-gfw-auto-check-and-online/tasks.md
T
yinjianm ff50030364 feat(api): 新增节点墙检测自动托管与显隐
新增定时墙检测命令与节点托管字段,自动为开启托管的父
节点创建检测任务,并在 blocked 时自动隐藏节点、normal
时仅恢复由墙检测自动隐藏的节点

更新自动上线服务以尊重 blocked 与自动隐藏状态,避免疑
似被墙节点被重新发布;同时补齐管理端墙检测托管开关、
刷新入口、批量设置与相关测试和知识库同步
2026-04-28 00:51:49 +08:00

4.8 KiB
Raw Blame History

任务清单: node-gfw-auto-check-and-online

@status: completed | 2026-04-28 00:41

@feature: node-gfw-auto-check-and-online
@created: 2026-04-28
@status: completed
@mode: R2

LIVE_STATUS

{"status":"completed","completed":8,"failed":0,"pending":0,"total":8,"percent":100,"current":"开发实施完成,准备归档方案包","updated_at":"2026-04-28 00:48:00"}

进度概览

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

任务列表

1. 后端数据与调度

  • [√] 1.1 新增 database/migrations/*_add_gfw_auto_fields_to_v2_server_table.php

    • 预期变更: 为 v2_server 增加 gfw_check_enabledgfw_auto_hiddengfw_auto_action_at 字段。
    • 完成标准: 迁移包含字段存在性保护和 down 回滚逻辑;默认节点自动墙检测开启。
    • 验证方式: 代码审查迁移字段和回滚逻辑。
    • depends_on: []
  • [√] 1.2 修改 app/Models/Server.phpapp/Http/Requests/Admin/ServerSave.phpapp/Http/Controllers/V2/Admin/Server/ManageController.php

    • 预期变更: 模型 casts、保存、单节点更新和批量更新支持新增字段。
    • 完成标准: getNodes/save/update/batchUpdate 可读写新增字段,现有字段不回退。
    • 验证方式: 代码审查请求校验和 payload 字段。
    • depends_on: [1.1]
  • [√] 1.3 修改 app/Services/ServerGfwCheckService.php

    • 预期变更: 新增自动检测批量创建、跳过 active 任务、blocked/normal 自动显隐、blocked 状态查询辅助。
    • 完成标准: 自动检测只作用父节点;子节点继承检测结果但不创建任务;partial/failed 不改变 show。
    • 验证方式: 单元测试覆盖自动检测、自动隐藏、自动恢复和子节点联动。
    • depends_on: [1.2]
  • [√] 1.4 新增 app/Console/Commands/SyncServerGfwChecks.php 并修改 app/Console/Kernel.php

    • 预期变更: 新增 sync:server-gfw-checks 命令并加入 Laravel Scheduler。
    • 完成标准: 命令输出 started/skipped/active 等统计;调度不与现有命令冲突。
    • 验证方式: 代码审查命令签名、调度频率和 withoutOverlapping。
    • depends_on: [1.3]
  • [√] 1.5 修改 app/Services/ServerAutoOnlineService.php

    • 预期变更: 自动上线同步时把最新 inherited/source 墙状态 blocked 作为显示否决条件。
    • 完成标准: auto_online=1 且在线的 blocked 节点仍保持隐藏;非 blocked 继续按在线状态同步。
    • 验证方式: 单元测试覆盖 blocked 不被自动上线重新显示。
    • depends_on: [1.3]

2. 管理端前端

  • [√] 2.1 修改 admin-frontend/src/types/api.d.tsadmin-frontend/src/api/admin.tsadmin-frontend/src/utils/nodes.ts

    • 预期变更: 类型、更新 payload、统计和搜索文本支持 gfw_check_enabled/gfw_auto_hidden/gfw_auto_action_at
    • 完成标准: TypeScript 可识别新增字段;搜索可命中自动墙检/自动隐藏相关关键词。
    • 验证方式: npm run build
    • depends_on: [1.2]
  • [√] 2.2 修改 admin-frontend/src/views/nodes/NodesView.vueNodeBatchEditDialog.vue、节点编辑映射工具

    • 预期变更: 新增刷新数据按钮、墙检测托管开关、批量设置入口和编辑保存字段映射。
    • 完成标准: 父节点可切换自动墙检测;子节点开关提示只控制随父节点自动隐藏/恢复;刷新按钮显示加载反馈。
    • 验证方式: npm run build + 代码级 UI 审查。
    • depends_on: [2.1]

3. 测试与知识库

  • [√] 3.1 修改/新增 tests/Unit/ServerAutoOnlineServiceTest.phptests/Unit/ServerGfwCheckServiceTest.php
    • 预期变更: 覆盖自动墙检测任务创建、blocked 自动隐藏、normal 自动恢复、自动上线 blocked 否决。
    • 完成标准: 测试断言自动动作不会误恢复手动隐藏节点。
    • 验证方式: 本机可用时运行 PHPUnit;不可用时报告 PHP CLI 缺失。
    • depends_on: [1.3, 1.5]

执行日志

时间 任务 状态 备注
2026-04-28 00:24 方案设计 in_progress 已选择方案 A,准备开发实施
2026-04-28 00:36 后端开发 completed 已新增自动检测字段、命令、服务联动和测试
2026-04-28 00:43 前端开发 completed 已新增刷新按钮、墙检测托管开关和批量设置入口
2026-04-28 00:48 验证 completed npm run build 通过;PHP/Composer 不在 PATHPHPUnit 未执行

执行备注

  • 用户确认“隐藏”即不发布到订阅配置;当前实现以 show=0 为发布边界。
  • 子节点不创建自动检测任务,但可继承父节点检测结果;子节点开关只控制是否随父节点自动隐藏/恢复。
  • partial/failed 不主动恢复由墙检测隐藏的节点;只有 normal 结果会恢复 gfw_auto_hidden=1 的节点。