ff50030364
新增定时墙检测命令与节点托管字段,自动为开启托管的父 节点创建检测任务,并在 blocked 时自动隐藏节点、normal 时仅恢复由墙检测自动隐藏的节点 更新自动上线服务以尊重 blocked 与自动隐藏状态,避免疑 似被墙节点被重新发布;同时补齐管理端墙检测托管开关、 刷新入口、批量设置与相关测试和知识库同步
4.8 KiB
4.8 KiB
任务清单: 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_enabled、gfw_auto_hidden、gfw_auto_action_at字段。 - 完成标准: 迁移包含字段存在性保护和 down 回滚逻辑;默认节点自动墙检测开启。
- 验证方式: 代码审查迁移字段和回滚逻辑。
- depends_on: []
- 预期变更: 为
-
[√] 1.2 修改
app/Models/Server.php、app/Http/Requests/Admin/ServerSave.php、app/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]
- 预期变更: 自动上线同步时把最新 inherited/source 墙状态
2. 管理端前端
-
[√] 2.1 修改
admin-frontend/src/types/api.d.ts、admin-frontend/src/api/admin.ts、admin-frontend/src/utils/nodes.ts- 预期变更: 类型、更新 payload、统计和搜索文本支持
gfw_check_enabled/gfw_auto_hidden/gfw_auto_action_at。 - 完成标准: TypeScript 可识别新增字段;搜索可命中自动墙检/自动隐藏相关关键词。
- 验证方式:
npm run build。 - depends_on: [1.2]
- 预期变更: 类型、更新 payload、统计和搜索文本支持
-
[√] 2.2 修改
admin-frontend/src/views/nodes/NodesView.vue、NodeBatchEditDialog.vue、节点编辑映射工具- 预期变更: 新增刷新数据按钮、墙检测托管开关、批量设置入口和编辑保存字段映射。
- 完成标准: 父节点可切换自动墙检测;子节点开关提示只控制随父节点自动隐藏/恢复;刷新按钮显示加载反馈。
- 验证方式:
npm run build+ 代码级 UI 审查。 - depends_on: [2.1]
3. 测试与知识库
- [√] 3.1 修改/新增
tests/Unit/ServerAutoOnlineServiceTest.php、tests/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 不在 PATH,PHPUnit 未执行 |
执行备注
- 用户确认“隐藏”即不发布到订阅配置;当前实现以
show=0为发布边界。 - 子节点不创建自动检测任务,但可继承父节点检测结果;子节点开关只控制是否随父节点自动隐藏/恢复。
partial/failed不主动恢复由墙检测隐藏的节点;只有normal结果会恢复gfw_auto_hidden=1的节点。