Repository navigation
[Feature] 探测工具过滤 + 端口层重绑模式开关 / Tool filter for auto-select & port rebind mode switch - #31
Conversation
53bc008 to
1a7f785
Compare
PIKACHUIM
left a comment
There was a problem hiding this comment.
🙏 感谢 @suantea 提交!
🤖 AI 自动审核声明:本评审报告由 AI 自动生成,当前使用 gpt-5.6-sol 模型进行分析。
🎯 结论
🔄 Request Changes — 存在阻塞性问题,建议修复并重新评审
📖 概要
[Feature] 探测工具过滤 + 端口层重绑模式开关 / Tool filter for auto-select & port rebind mode switch · 作者 @suantea
目标:围绕 NetPanel 的功能、监控、安全或 UI 能力进行增量改动。
整体方案按后端模型/服务/路由与前端 API/页面分层组织,方向与项目现有结构基本一致。
🧭 整体改动方案
- 方案思路:沿用现有 Go 服务、Gin 路由、GORM 模型和 React/TypeScript 页面分层,新增能力通过已有 API 与配置模型接入。
- 改动组织:后端负责状态、探测、隧道或安全逻辑,前端负责配置和结果展示;stacked PR 之间存在共享基础改动,合并顺序需要维护者统一安排。
- 方案评估:整体路线可行,但需要重点确认错误处理、并发边界、API 签名兼容及前端编译完整性。
📊 变更统计与评分
- 改动文件:? 个(+? / -? 行)
- 评分:功能 ⭐⭐⭐⭐ | 最小改动 ⭐⭐⭐⭐ | 前向兼容 ⭐⭐⭐ | 方案设计 ⭐⭐⭐⭐
🚨 关键问题(按优先级分级)
- P0
webpage/src/i18n/locales/en.ts, webpage/src/i18n/locales/zh.ts:同一 locale 对象中重复定义 cftunnel 键,会触发 TypeScript TS1117 并阻塞前端编译。 - P1
webpage/src/api/index.ts / MCP integration:本 PR 与相邻 stacked PR 共享 API/配置改动,需确认 GetLogs 等签名变更的所有调用方已同步。
📂 文件改动分析(意图 + 合理性)
| 文件 | 改动意图 | 合理性 | 问题 |
|---|---|---|---|
backend/api/handlers/linereg.go |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
backend/api/router.go |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
backend/main.go |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
backend/model/models.go |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
backend/service/cert/manager.go |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
backend/service/cftunnel/manager.go |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
backend/service/linereg/linereg.go |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
backend/service/linereg/linereg_test.go |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
backend/service/mcp/server.go |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
backend/service/selector/selector.go |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
backend/service/selector/selector_test.go |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
backend/service/tunservice/manager.go |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
backend/service/wireguard/manager.go |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
webpage/src/api/index.ts |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | P1: 本 PR 与相邻 stacked PR 共享 API/配置改动,需确认 GetLogs 等签名变更的所有调用方已同步。 |
webpage/src/i18n/locales/en.ts |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | P0: 同一 locale 对象中重复定义 cftunnel 键,会触发 TypeScript TS1117 并阻塞前端编译。 |
webpage/src/i18n/locales/zh.ts |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | P0: 同一 locale 对象中重复定义 cftunnel 键,会触发 TypeScript TS1117 并阻塞前端编译。 |
webpage/src/pages/CfTunnel.tsx |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
webpage/src/pages/TunService.tsx |
支撑本 PR 的后端/前端功能接入、配置或展示 | ✅ 方向与改动目标一致,需结合整体合并顺序验证 | ✅ 未发现直接问题 |
✅ 待处理清单
- [P0]
webpage/src/i18n/locales/en.ts, webpage/src/i18n/locales/zh.ts:确认并处理上述问题 - [P1]
webpage/src/api/index.ts / MCP integration:确认并处理上述问题
🎯 结论:🔄 Request Changes — 存在阻塞性问题,建议修复并重新评审。
PIKACHUIM
left a comment
There was a problem hiding this comment.
🙏 感谢 @suantea 提交!
🤖 AI 自动审核声明:本评审报告由 AI 自动生成,当前使用 Claude 模型进行分析。
🔄 增量评审:v1 → v2
本轮新增 1 个 commit(20db762),改动文件:webpage/src/i18n/locales/en.ts、webpage/src/i18n/locales/zh.ts
新增改动的问题:
无新增问题。
旧问题解决情况:
- ✅
en.ts/zh.ts重复定义 cftunnel 键(TS1117)→ 已删除重复块、quickUrl并入完整对象,P0 解决 - ⏳ GetLogs 等共享签名变更 → 仍为 stacked PR 合并顺序问题,建议维护者合并时统一确认调用方
🎯 结论:✅ Approve — 阻塞问题已解决
🔧 PR #31 冲突解决指南PR #38(初始化向导)已合并,导致本 PR 出现 18 个文件冲突。 解决步骤git fetch origin
git checkout feat/linereg-policy
git rebase origin/main
# 解决冲突后:
git add <冲突文件>
git rebase --continue
git push origin feat/linereg-policy --force关键冲突
验证清单
完整指南见 |
20db762 to
b44d911
Compare
b44d911 to
d613d0a
Compare
This comment has been minimized.
This comment has been minimized.
🔧 PR #31 冲突解决指南(更新)原因:PR #19/39/40 已合并(2026-08-26 10:28-10:29),导致本 PR 出现新的冲突。 解决步骤git fetch origin
git checkout feat/linereg-policy
git rebase origin/main
# 解决冲突后:
git add <冲突文件>
git rebase --continue
git push origin feat/linereg-policy --force关键冲突点
验证清单
由 github-pr-reviewer Expert 自动生成(2026-08-26 18:30) |
- CftunnelConfig 新增 QuickURL 字段:从 cloudflared stdout 提取 trycloudflare.com 临时地址并落库,进程停止/退出时自动清理 - 前端表格新增 Quick 入口列(可点击直达),补全缺失的 cftunnel i18n 键 Co-Authored-By: AtomCode (deepseek-v4-flash) <noreply@atomgit.com>
- probe_config_get:读取探测策略(间隔/失败阈值/容差/并发/工具过滤/重绑模式) - probe_config_set:部分字段更新 + 范围校验,持久化并立即应用 - tunservice_diag:服务状态 + 最近错误 + 选线快照 + 待重绑清单一站式诊断 Co-Authored-By: AtomCode (deepseek-v4-flash) <noreply@atomgit.com>
- CftunnelConfig 新增 QuickURL 字段:从 cloudflared stdout 提取 trycloudflare.com 临时地址并落库,进程停止/退出时自动清理 - 前端表格新增 Quick 入口列(可点击直达),补全缺失的 cftunnel i18n 键 Co-Authored-By: AtomCode (deepseek-v4-flash) <noreply@atomgit.com>
工具过滤(按工具限制参与自动选线,兑现 issue PIKACHUIM#3「仅 WG 参与」承诺): - selector 新增 SetToolFilter:非空集合时仅 Tool 命中的线路参与自动选线, 其余线路仍注册展示/可手动锁定;防抖逻辑同步跳过被过滤的当前线路 - linereg/handlers 新增 probe_tool_filter 配置(逗号分隔,空=全部), GET/PUT /v1/linereg/config 支持读写 - 前端线路策略 Modal 增加「参与选线的工具」输入框 + i18n(zh/en) - selector 测试:过滤后仅允许工具参与自动选线、手动锁定不受过滤影响、 空过滤=全部参与 端口层重绑模式开关(PIKACHUIM#10 延伸,保守部署可选): - linereg 新增 rebindMode(auto 自动 / manual 半自动 / off 关闭): manual 模式只记录待重绑清单(svcID->lineID),由用户手动触发; off 模式完全跳过端口层重绑 - 新增 GET /v1/linereg/rebind-pending、POST /v1/linereg/rebind-apply - SystemConfig 键 port_rebind_mode 持久化,LoadProbeConfig 启动加载 - 前端线路策略 Modal 增加模式选择 + 手动重绑按钮 + i18n(zh/en) - linereg 测试:manual 排队+手动应用+清空、off 跳过 Co-Authored-By: AtomCode (deepseek-v4-flash) <noreply@atomgit.com>
- cftunnel Manager.GetStatus/Stop 签名改为上游单返回值形式 - webpage: 移除重复 tunserviceApi 声明、cftunnel 重复 quickUrl 键 - ProbeConfig 补齐 tool_filter/rebind_mode 字段
d613d0a to
2be372a
Compare
|
🙏 感谢 @suantea 提交! 🔄 增量评审(rebase 适配)本轮新增 1 个 commit 新增改动问题:无。 旧问题回查:
🎯 结论:✅ Approve — rebase 适配正确,无新增问题,旧问题已解决。 |
功能说明 / Overview
承接 #9/#10 延伸,两项独立的线路策略能力(基于 #16 自动选线主线)。
Two independent line-policy capabilities extending the auto line-selection work (#16).
1. 探测工具过滤 / Probe tool filter
兑现 issue #3 讨论承诺的「按工具过滤」:只让指定工具的线路参与自动选线,其余工具线路仍展示/可手动锁定。
Honors the "filter by tool" commitment from issue #3: only lines of allowed tools join auto-selection; others stay visible/manually lockable.
SetToolFilter:空集合=全部参与;非空时仅 Tool 命中的线路进入自动选线,防抖逻辑同步跳过被过滤线路probe_tool_filter配置(逗号分隔,空=全部),GET/PUT/v1/linereg/config读写2. 端口层重绑模式开关 / Port rebind mode switch
端口层切换落地(#10)的保守选项:auto(选线变化自动重绑)/ manual(只记录待重绑清单,手动触发)/ off(关闭)。
Conservative option for port-level switch landing (#10): auto / manual (queue rebinds, apply manually) / off.
rebindMode,manual 模式记录待重绑清单(svcID->lineID),新增rebind-pending/rebind-apply端点port_rebind_mode持久化,启动时加载依赖 / Dependencies