a62a124710
统一自动墙检查询逻辑,兼容 parent_id 为 null 或 0 的父节点 将 gfw_check_enabled 的空值视为开启,避免页面显示已启用却未入队 同时调整管理端自动墙检统计仅计算父节点 并更新 CI 配置以忽略 .helloagents 变更触发后端发布
3.3 KiB
3.3 KiB
任务清单: fix-admin-node-gfw-null-enabled
@status: completed | 2026-04-28 14:48
@feature: fix-admin-node-gfw-null-enabled
@created: 2026-04-28
@status: completed
@mode: R2
LIVE_STATUS
{"status":"completed","completed":4,"failed":0,"pending":0,"total":4,"percent":100,"current":"代码修复、前端构建和知识库同步已完成;后端目标测试因本机缺少 PHP 未执行","updated_at":"2026-04-28 14:50:00"}
进度概览
| 完成 | 失败 | 跳过 | 总数 |
|---|---|---|---|
| 4 | 0 | 0 | 4 |
任务列表
1. 后端墙检启用语义
- [√] 1.1 修改
app/Services/ServerGfwCheckService.php- 预期变更: 抽出父节点和启用过滤查询方法,让自动墙检入队同时覆盖
parent_id = NULL与parent_id = 0,并让最新墙状态查询把NULL启用值视为开启。 - 完成标准:
startAutomaticChecks()与getLatestStatusesForServers()的查询条件均与项目父节点判断和isGfwCheckEnabled()语义一致。 - 验证方式: 阅读代码并运行
php artisan test --filter=ServerGfwCheckServiceTest。 - depends_on: []
- 预期变更: 抽出父节点和启用过滤查询方法,让自动墙检入队同时覆盖
2. 前端统计口径
- [√] 2.1 修改
admin-frontend/src/utils/nodes.ts- 预期变更:
countAutoGfwCheckNodes()只统计开启墙检托管的父节点,避免把不会独立检测的子节点计入自动墙检数量。 - 完成标准: 统计口径与
startAutomaticChecks()的父节点范围一致。 - 验证方式: 运行
npm run build(admin-frontend)。 - depends_on: [1.1]
- 预期变更:
3. 回归测试
- [√] 3.1 修改
tests/Unit/ServerGfwCheckServiceTest.php- 预期变更: 补充
parent_id = 0父节点会被自动入队、显式关闭仍跳过的测试。 - 完成标准: 新测试能失败于旧父节点查询语义,成功于修复后的查询语义。
- 验证方式: 运行
php artisan test --filter=ServerGfwCheckServiceTest。 - depends_on: [1.1]
- 预期变更: 补充
4. 知识库与验收
- [√] 4.1 同步知识库并执行目标验证
- 预期变更: 更新节点管理上下文或模块文档,记录
gfw_check_enabled空值按开启处理的长期约定;执行后端目标测试和前端构建。 - 完成标准: 知识库反映代码事实;验证结果明确记录。
- 验证方式: 检查
.helloagents/context.md或相关模块文档,查看测试/构建输出。 - depends_on: [2.1, 3.1]
- 预期变更: 更新节点管理上下文或模块文档,记录
执行日志
| 时间 | 任务 | 状态 | 备注 |
|---|---|---|---|
| 2026-04-28 14:41 | DESIGN | completed | 已完成上下文收集、唯一方案规划与方案包创建 |
| 2026-04-28 14:45 | 1.1/2.1/3.1 | completed | 已完成后端查询语义、前端统计口径和回归测试用例修改 |
| 2026-04-28 14:50 | 4.1 | completed | 前端构建通过;知识库已同步;后端目标测试因本机缺少 PHP 未执行 |
执行备注
- 本次修复不新增迁移,优先保证查询语义对历史空值数据鲁棒。
- 当前工作树存在其他未提交变更和未完成 CI 方案包,本方案只修改墙检相关文件。
- 验证记录:
ADMIN_BUILD_OUT_DIR=dist npm run build通过;php artisan test --filter=ServerGfwCheckServiceTest因本机php不在 PATH 未执行;git diff --check对本次代码文件通过,仅提示 Windows 换行转换。