# MeshRay 全功能遍历与问题排查计划 ## 📋 遍历方法论 ### 用户视角遍历 - **起点**: 用户第一个触点(登录/注册) - **路径**: 按照实际使用流程 - **覆盖**: 前端页面 → API 接口 → 业务逻辑 → 数据库 - **深度**: 每个功能的完整实现链路 ### 技术栈遍历 - **前端**: Vue 组件、路由、状态管理、API 调用 - **后端**: Handler → Service → Model/Store - **核心**: Ctr → Core → WireGuard - **数据**: SQLite 表结构、关系、完整性 --- ## 🗺️ 功能模块地图 ### 1. 用户认证与系统入口 - [ ] 登录页面 (`/login`) - [ ] 注册页面 (`/register`) - [ ] 首页/Dashboard (`/`) - [ ] 系统配置 ### 2. 网络管理(核心功能) - [ ] 网络列表页面 (`/networks`) - [ ] 创建网络 - [ ] 网络详情 - [ ] 网络配置 - [ ] Peer 管理 - [ ] IP 地址分配 ### 3. STUN/TURN 服务 - [ ] STUN 服务器配置 - [ ] TURN 服务器配置 - [ ] 服务可用性检测 - [ ] 自动打洞配置 ### 4. DDNS 服务 - [ ] DDNS Provider 配置 - [ ] DDNS Usage 管理 - [ ] 域名绑定 - [ ] 自动更新 ### 5. 系统管理 - [ ] 备份恢复 - [ ] 通知中心 - [ ] 系统更新检查 - [ ] 日志查看 ### 6. Core 协议层 - [ ] Core 客户端连接 - [ ] 设备发现 - [ ] NAT 类型检测 - [ ] 打洞策略 - [ ] 中继 fallback --- ## 🔍 详细遍历路径 ### 路径 1: 用户首次使用 - 创建网络 **前端**: 1. 登录 → Dashboard 2. 点击"创建网络" 3. 填写网络配置(名称、IP 段、MTU 等) 4. 提交创建 5. 跳转到网络详情 **后端**: 1. `POST /api/v1/networks` 2. `handler.NetworkHandler.CreateNetwork` 3. `service.NetworkService.CreateNetwork` 4. 验证配置 5. 生成雪花 ID 6. 分配子网 7. 创建管理员 Peer 8. 保存到数据库 **Core 层**: 1. Ctr 监听网络创建事件 2. 配置 WG 设备 3. 生成密钥对 4. 设置监听端口 **排查点**: - ✅ 雪花 ID 生成是否正确(uint64 处理) - ✅ 子网分配算法 - ✅ Peer 配置生成 - ✅ WG 设备创建成功 - ✅ 数据库事务完整性 --- ### 路径 2: 添加 Peer(用户态模式) **前端**: 1. 网络详情页 → "添加 Peer" 2. 选择"用户态模式" 3. 填写 Peer 信息(名称、IP) 4. 下载配置文件 5. 启动 Peer **后端**: 1. `POST /api/v1/networks/{id}/peers` 2. `handler.PeerHandler.CreatePeer` 3. `service.PeerService.CreatePeer` 4. 验证 IP 可用性 5. 生成 Peer 配置 6. 返回 WireGuard 配置 **Core 层**: 1. Ctr 收到 Peer 创建事件 2. 调用 `wg.AddPeer` 3. 配置用户态 WG 设备 4. 设置代理规则 **排查点**: - ✅ Peer IP 冲突检测 - ✅ 配置文件格式正确 - ✅ WG 设备添加成功 - ✅ 路由表更新 - ✅ 连通性测试 --- ### 路径 3: STUN 自动配置 **前端**: 1. 网络详情 → STUN 配置 2. 启用 STUN 穿透 3. 选择 STUN 服务器 4. 保存配置 **后端**: 1. `PUT /api/v1/networks/{id}/stun` 2. `handler.NetworkHandler.UpdateSTUNConfig` 3. `service.STUNService.Configure` 4. 验证 STUN 服务器可用性 5. 更新网络配置 **Core 层**: 1. Ctr 监听 STUN 配置变更 2. 自动配置 STUN 给 WG 3. 设置 endpoint 发现机制 **排查点**: - ✅ STUN 服务器可达性 - ✅ WG Endpoint 自动填充 - ✅ NAT 类型检测准确 - ✅ 打洞成功率统计 --- ### 路径 4: TURN 中继 fallback **前端**: 1. 网络详情 → TURN 配置 2. 启用 TURN 中继 3. 配置 TURN 服务器 4. 设置 fallback 条件 **后端**: 1. `PUT /api/v1/networks/{id}/turn` 2. `handler.NetworkHandler.UpdateTURNConfig` 3. `service.TURNServerService.Validate` 4. 测试 TURN 服务器连接 5. 保存配置 **Core 层**: 1. Ctr 监听 TURN 配置 2. 监控打洞失败 3. 自动切换到 TURN 中继 4. 更新 Peer 配置 **排查点**: - ✅ TURN 凭证生成 - ✅ fallback 触发条件 - ✅ 中继路由优先级 - ✅ 切换延迟 --- ### 路径 5: DDNS 全自动模式 **前端**: 1. DDNS 管理 → 创建 Provider 2. 配置 API Token 3. 创建 DDNS Usage 4. 绑定到网络 **后端**: 1. `POST /api/v1/ddns/providers` 2. `POST /api/v1/ddns/usages` 3. `POST /api/v1/networks/{id}/bind-ddns` 4. 验证 Provider 配置 5. 测试 DNS API 6. 建立绑定关系 **Core 层**: 1. 监听 IP 变化 2. 自动更新 DNS 记录 3. 同步到所有 Peer **排查点**: - ✅ Provider 验证逻辑 - ✅ DNS 记录创建成功 - ✅ IP 检测准确性 - ✅ 更新频率控制 - ✅ 错误重试机制 --- ### 路径 6: 备份与恢复 **前端**: 1. 系统管理 → 备份 2. 点击"创建备份" 3. 下载备份文件 4. 上传备份恢复 **后端**: 1. `POST /api/v1/system/backup` 2. `handler.BackupHandler.CreateBackup` 3. `service.BackupService.CreateBackup` 4. 导出数据库 5. 打包配置文件 6. 返回 ZIP 文件 **恢复流程**: 1. `POST /api/v1/system/restore` 2. 上传 ZIP 文件 3. 解压 4. 恢复数据库 5. 恢复配置 6. 重启服务 **排查点**: - ✅ 数据库导出完整 - ✅ 配置文件备份 - ✅ 压缩包格式正确 - ✅ 恢复时事务安全 - ✅ 服务重启成功 --- ### 路径 7: 实时通知推送 **前端**: 1. WebSocket 连接 2. 监听通知事件 3. 显示通知弹窗 4. 标记已读 **后端**: 1. WebSocket 握手 2. 认证中间件 3. 维护连接池 4. 广播通知 **排查点**: - ✅ WebSocket 认证 - ✅ 心跳保活 - ✅ 断线重连 - ✅ 消息不丢失 - ✅ 并发连接处理 --- ### 路径 8: Core 协议通信 **Core 客户端**: 1. TLS 握手 2. 认证(Token/mTLS) 3. 能力协商 4. 订阅事件 **Core 服务端**: 1. 监听端口 2. 接受连接 3. 验证客户端 4. 发送事件 **排查点**: - ✅ Proto 定义一致性 - ✅ TLS 证书验证 - ✅ 消息序列化 - ✅ 错误处理 - ✅ 重连机制 --- ## 🐛 重点排查问题清单 ### P0 - 严重问题 1. **网络创建失败** - 雪花 ID、子网分配 2. **Peer 无法连接** - WG 配置、路由表 3. **STUN 打洞无效** - Endpoint 发现 4. **DDNS 更新失败** - API 调用、权限 ### P1 - 重要问题 1. **备份恢复不完整** - 表遗漏、配置缺失 2. **通知推送延迟** - WebSocket 连接 3. **TURN 切换失败** - fallback 逻辑 4. **Core 连接断开** - 心跳、重连 ### P2 - 次要问题 1. **UI 显示异常** - 数据格式化 2. **错误提示不清** - 错误包装 3. **性能问题** - 查询优化 4. **文档缺失** - API 注释 --- ## 🔧 排查工具与方法 ### 代码审查 - ✅ TODO/FIXME 标记 - ✅ 错误处理完整性 - ✅ 日志输出充分性 - ✅ 边界条件检查 ### 运行时排查 - ✅ 编译检查 - ✅ 单元测试 - ✅ 集成测试 - ✅ 手动验证 ### 数据验证 - ✅ 数据库约束 - ✅ 外键关系 - ✅ 索引效率 - ✅ 事务完整性 --- ## 📊 预期输出 1. **问题清单** - 按优先级分类 2. **修复方案** - 具体代码修改 3. **验证结果** - 测试通过证明 4. **文档更新** - 使用说明完善 --- **开始时间**: 2026-03-20 **预计耗时**: 2-3 小时 **目标**: 零遗漏、零死角、全功能可用