mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-10-13 04:36:37 +08:00
72 lines
3.4 KiB
Markdown
72 lines
3.4 KiB
Markdown
# Session Context
|
||
|
||
Session ID: ses_34dfda207ffeiBV2rCgJW708ip
|
||
Commit Message: 配置下发也没兼容,请全量检查一下,哪些功能需要一起改造
|
||
|
||
## Prompts
|
||
|
||
### Prompt 1
|
||
|
||
211 任务的没有完全完成1. 选择IP后诊断还会诊断默认IP
|
||
2. 选择隧道出口IP后,入口还是会链接默认IP,没有链接选择的IP
|
||
请分析后制定修复计划
|
||
|
||
### Prompt 2
|
||
|
||
配置下发也没兼容,请全量检查一下,哪些功能需要一起改造
|
||
|
||
## Summary
|
||
|
||
你提得很对,我按“配置下发全链路”重新过了一遍(只读分析)。结论是:**需要一起改造的不是一个点,而是“诊断链路 + 重部署链路 + 回归测试链路”**。
|
||
|
||
目前状态可以分成三类:
|
||
|
||
- **已兼容(创建/更新时下发)**
|
||
- 隧道创建/更新时,`connectIp` 已进入运行时下发选择逻辑(`selectTunnelDialHost`)。
|
||
- 本地/联邦 runtime apply 都会吃 `target.ConnectIP`(前提是 state 里有值)。
|
||
- 参考:`go-backend/internal/http/handler/mutations.go:2588`, `go-backend/internal/http/handler/mutations.go:2348`
|
||
|
||
- **未兼容(你反馈的核心问题)**
|
||
- 诊断链路未传 `connectIp`,导致总走默认IP。
|
||
- 参考:`go-backend/internal/http/handler/control_plane.go:75`, `go-backend/internal/http/handler/control_plane.go:1102`
|
||
|
||
- **半兼容(配置重建时丢字段)**
|
||
- 重部署时从 DB 重建 runtime state,**没把 `ConnectIP` 带回去**,所以 redeploy 后会回退默认IP。
|
||
- 参考:`go-backend/internal/http/handler/mutations.go:883`, `go-backend/internal/http/handler/mutations.go:897`
|
||
|
||
---
|
||
|
||
**需要一起改造的功能范围(建议一次性做完)**
|
||
|
||
- `诊断(非流式 + 流式)`
|
||
- 隧道诊断、转发诊断都要改(共用 `prepare*Diagnosis` + `appendChainHopDiagnosis`)。
|
||
- 流式 start 预览项也要改,否则 UI 一开始仍显示默认IP。
|
||
- 目标文件:`go-backend/internal/http/handler/control_plane.go`, `go-backend/internal/http/handler/diagnosis_stream.go`
|
||
|
||
- `配置下发(重部署路径)`
|
||
- 单条重部署、批量重部署都依赖 `reconstructTunnelState`,必须补 `ConnectIP` 回填。
|
||
- 目标文件:`go-backend/internal/http/handler/mutations.go`
|
||
|
||
- `联邦节点运行时下发一致性`
|
||
- 逻辑本身已支持 `ConnectIP`,但受上一步 state 丢字段影响;修复后自动恢复一致。
|
||
- 重点验证:remote middle hop `ApplyRole.Targets` 的 Host 选取。
|
||
|
||
- `回归测试`
|
||
- 新增诊断用例:选了 `connectIp` 后,`targetIp` 必须是选中值(tunnel/forward + stream start/item)。
|
||
- 新增重部署用例:redeploy 后仍使用 `connectIp`,不回退默认IP。
|
||
- 目标文件建议:`go-backend/tests/contract/diagnosis_contract_test.go`,补 handler 级或 contract 级 redeploy 用例。
|
||
|
||
---
|
||
|
||
**实施计划(修复包)**
|
||
|
||
1. 修 `diagnosis` 调用链:所有 `resolveChainProbeTarget` 调用传入 `workItem.toNode.ConnectIP`。
|
||
2. 修 `reconstructTunnelState`:出口节点和中继节点都回填 `ConnectIP`。
|
||
3. 补测试:覆盖“诊断用选中IP”“重部署不丢IP”“connectIp为空仍走默认”的三组场景。
|
||
4. 联调验证:创建/更新、诊断、单重部署、批量重部署、联邦节点场景各跑一遍。
|
||
|
||
---
|
||
|
||
我建议按这个范围做成一次完整修复(避免只修诊断后你再次遇到“重部署又回退”的问题)。
|
||
如果你同意,我下一步就按这个“全量改造范围”进入实施。
|