# MeshRay 项目 TODO 功能完善清单 **更新时间**: 2026-03-24 **TODO 总数**: 48 处(后端 23 + 前端 25) **优先级分类**: P1 高 (8) | P2 中 (15) | P3 低 (25) --- ## 📊 **TODO 分布统计** | 模块 | TODO 数量 | 优先级 | 说明 | |------|-----------|--------|------| | **internal/ctr** | 8 | P2-P3 | Engine 状态管理、Core 进程管理 | | **internal/service** | 7 | P1-P2 | DDNS、设备管理核心功能 | | **internal/api/handler** | 2 | P1 | Dashboard 日志和链路统计 | | **internal/tray** | 2 | P3 | 系统托盘功能 | | **web/src/views/Monitor** | 7 | P1 | 监控页面对接 | | **web/src/views/Networks** | 9 | P2 | 网络管理功能 | | **web/src/components** | 6 | P2 | 组件功能完善 | | **web/src/views/Dashboard** | 1 | P3 | 图表集成 | | **总计** | **48** | - | - | --- ## 🎯 **P1 - 高优先级(8 个)** ### 1. Dashboard 日志获取 API 🔥 **位置**: `internal/api/handler/dashboard.go:53` **当前代码**: ```go // GetLogs 获取系统日志 func (h *DashboardHandler) GetLogs(c *gin.Context) { // TODO: 实现日志获取 c.JSON(200, gin.H{"logs": []string{}}) } ``` **需要实现**: - ✅ 从 lumberjack 日志文件读取 - ✅ 支持分页(page/size) - ✅ 支持级别筛选(debug/info/warn/error) - ✅ 支持时间范围筛选 - ✅ 返回最近 N 条日志 **预期响应**: ```json { "data": { "total": 100, "logs": [ { "level": "info", "message": "Device connected", "timestamp": "2026-03-24T10:00:00Z" } ] } } ``` **工作量**: 0.5 天 --- ### 2. Dashboard 链路分布统计 🔥 **位置**: `internal/api/handler/dashboard.go:78` **当前代码**: ```go // GetLinkDistribution 获取链路分布数据 func (h *DashboardHandler) GetLinkDistribution(c *gin.Context) { // TODO: 实现链路分布获取 c.JSON(200, gin.H{"distribution": []map[string]interface{}{}}) } ``` **需要实现**: - ✅ 统计直连链路数量 - ✅ 统计中继链路数量 - ✅ 统计 TURN 链路数量 - ✅ 计算各类型占比 - ✅ 返回链路质量分布(延迟分段) **预期响应**: ```json { "data": { "total_links": 50, "by_type": { "direct": 30, "relay": 15, "turn": 5 }, "by_latency": { "<10ms": 20, "10-50ms": 25, ">50ms": 5 } } } ``` **工作量**: 0.5 天 --- ### 3. Monitor 实时页面 - CPU 监控 🔥 **位置**: `web/src/views/Monitor/Realtime.vue:371` **当前代码**: ```javascript const loadCpuMetrics = async () => { // TODO: 实现 CPU 监控 API 后调用 // const res = await request.get('/monitor/metrics') // cpuUsage.value = res.data.cpu.usage_percent } ``` **状态**: ✅ **API 已实现** (`GET /api/v1/monitor/metrics`) **需要完成**: - ✅ 取消注释并调用 API - ✅ 每 5 秒轮询更新 - ✅ 添加加载状态处理 - ✅ 错误处理和重试机制 **工作量**: 0.1 天(只需取消注释) --- ### 4. Monitor 实时页面 - 内存监控 🔥 **位置**: `web/src/views/Monitor/Realtime.vue:391` **当前代码**: ```javascript const loadMemoryMetrics = async () => { // TODO: 实现内存监控 API 后调用 // const res = await request.get('/monitor/metrics') // memoryUsage.value = res.data.memory.alloc_mb } ``` **状态**: ✅ **API 已实现** **需要完成**: - ✅ 取消注释并调用 API - ✅ 格式化 MB 显示 - ✅ 添加趋势图表(可选) **工作量**: 0.1 天 --- ### 5. Monitor 实时页面 - 网络监控 🔥 **位置**: `web/src/views/Monitor/Realtime.vue:411` **当前代码**: ```javascript const loadNetworkMetrics = async () => { // TODO: 实现网络监控 API 后调用 } ``` **需要实现**: - ✅ 调用 `/monitor/metrics` 获取设备在线数 - ✅ 显示总设备数、在线数、离线数 - ✅ 添加网络总数统计 **工作量**: 0.1 天 --- ### 6. Monitor 实时页面 - 业务监控 🔥 **位置**: `web/src/views/Monitor/Realtime.vue:428` **当前代码**: ```javascript const loadBusinessMetrics = async () => { // TODO: 实现业务监控 API 后调用 } ``` **需要实现**: - ✅ 组网数量统计 - ✅ MeshSeed 使用统计 - ✅ 设备连接成功率 - ✅ 平均延迟统计 **建议**: 可以整合到 `/monitor/metrics` 或单独 API **工作量**: 0.3 天 --- ### 7. Monitor 实时页面 - 质量监控 🔥 **位置**: `web/src/views/Monitor/Realtime.vue:446` **当前代码**: ```javascript const loadQualityMetrics = async () => { // TODO: 实现质量监控 API 后调用 } ``` **需要实现**: - ✅ 链路质量分布(延迟分段) - ✅ 丢包率统计 - ✅ 带宽利用率 **建议**: 需要从 Core 模块采集数据 **工作量**: 0.5 天 --- ### 8. Monitor 实时页面 - 切换统计 🔥 **位置**: `web/src/views/Monitor/Realtime.vue:488` **当前代码**: ```javascript const loadSwitchStats = async () => { // TODO: 实现切换统计 API 后调用 } ``` **需要实现**: - ✅ 路径切换次数统计 - ✅ 切换原因分析 - ✅ 切换成功率 **工作量**: 0.3 天 --- ## 🎯 **P2 - 中优先级(15 个)** ### 9. Networks Pending - 待审批列表 **位置**: `web/src/views/Networks/Pending.vue` (5 处 TODO) **TODO 列表**: - Line 115: 取消注释 API 调用 - Line 150: 调用批准 API - Line 181: 调用 API 获取组网列表 - Line 249: 调用拒绝 API - Line 269: 调用批量操作 API - Line 283: 跳转详情页 **需要实现**: - ✅ 后端提供待审批列表 API - ✅ 批准/拒绝接口 - ✅ 前端调用并处理响应 **工作量**: 0.5 天 --- ### 10. ShareSeedModal - MeshSeed 生成 **位置**: `web/src/components/ShareSeedModal.vue:214` **当前代码**: ```javascript const generateMeshSeed = async () => { // TODO: 调用 API 生成 MeshSeed // const res = await request.post(`/networks/${networkId.value}/meshseeds`, form) } ``` **状态**: ✅ **API 已实现** (`POST /api/v1/networks/:id/meshseeds`) **需要完成**: - ✅ 取消注释并调用 API - ✅ 处理返回的 MeshSeed URL - ✅ 显示二维码 **工作量**: 0.2 天 --- ### 11. JoinNetworkModal - MeshSeed 解析和加入 **位置**: `web/src/components/JoinNetworkModal.vue` (2 处 TODO) **TODO 列表**: - Line 112: 调用 API 解析 MeshSeed - Line 146: 调用 API 提交加入 **需要实现**: - ✅ `POST /api/v1/networks/join/parse` - 解析 MeshSeed - ✅ `POST /api/v1/networks/join` - 提交加入申请 - ✅ 前端调用并处理 **工作量**: 0.3 天 --- ### 12. Network Detail - 配置生成 **位置**: `web/src/views/Networks/Detail.vue` (2 处 TODO) **TODO 列表**: - Line 919: 调用 API 生成配置 - Line 957: 实现下载逻辑 - Line 962: 实现编辑逻辑 - Line 1058: 加载拓扑数据 - Line 1104: 实现下载逻辑 **状态**: ⚠️ **API 已实现但有占位符** **需要完成**: - ✅ 后端实现真实的 GenerateDeviceConfig - ✅ 前端调用并下载配置文件 - ✅ 添加编辑对话框 **工作量**: 0.5 天 --- ### 13. FooterStatusBar - 系统信息 **位置**: `web/src/components/FooterStatusBar.vue` (2 处 TODO) **TODO 列表**: - Line 106: 调用 API `/api/v1/settings/system-info` - Line 125: 连接 WebSocket `/ws/metrics` **需要实现**: - ✅ 后端提供 system-info API - ✅ WebSocket 推送 metrics 数据 - ✅ 前端连接并更新状态栏 **工作量**: 0.3 天 --- ### 14. NotificationDropdown - 告警通知 **位置**: `web/src/components/NotificationDropdown.vue:184` **当前代码**: ```javascript // TODO: 连接 WebSocket /ws/alerts 和 /ws/pending-join ``` **需要实现**: - ✅ WebSocket 告警推送 - ✅ 待审批通知推送 - ✅ 实时角标更新 **工作量**: 0.3 天 --- ### 15. Device Service - 设备清理 **位置**: `internal/service/device.go:145-146` **当前代码**: ```go // TODO: 如果设备在线,需要先断开连接 // TODO: 清理相关路由和配置 ``` **需要实现**: - ✅ 停止设备对应的 WireGuard 进程 - ✅ 清理路由表配置 - ✅ 释放端口资源 **工作量**: 0.5 天 --- ### 16. DDNS - 硬件指纹采集 **位置**: `internal/service/ddns.go:67` **当前代码**: ```go // TODO: 实现真实的硬件指纹采集(CPU ID + 主板序列号 + MAC 地址) ``` **需要实现**: - ✅ 跨平台硬件信息采集 - ✅ Windows: WMI 获取 CPU/主板 - ✅ Linux: dmidecode 或/sys 文件系统 - ✅ macOS: system_profiler **工作量**: 1 天 --- ### 17. DDNS - 连通性测试 **位置**: `internal/service/ddns.go:262` **当前代码**: ```go // TODO: 实现真实的连通性测试(调用各 DNS 厂商 API) ``` **需要实现**: - ✅ 阿里云 DNS API 调用 - ✅ 腾讯云 DNS API 调用 - ✅ Cloudflare DNS API 调用 - ✅ 验证 DDNS 记录是否生效 **工作量**: 0.5 天 --- ### 18. DDNS - 手动同步 **位置**: `internal/service/ddns.go:277` **当前代码**: ```go // TODO: 实现手动同步逻辑 ``` **需要实现**: - ✅ 用户触发手动同步 - ✅ 立即更新 DDNS 记录 - ✅ 返回同步结果 **工作量**: 0.3 天 --- ## 🎯 **P3 - 低优先级(25 个)** ### 19. Ctr - Core 进程管理(8 个) **位置**: `internal/ctr/ctr.go` 和 `internal/ctr/interface.go` **TODO 列表**: - Line 60: 启动 Watchdog 监控 - Line 76: 实现 Core 的停止方法 - Line 123: 实现 Engine 的停止方法 - Line 241: 实现 Engine.GetStatus() 方法 - Line 253-279: P3-1 阶段实现(5 处) **需要实现**: - ✅ Core 进程健康监控 - ✅ 自动重启机制 - ✅ 状态查询接口 **工作量**: 2 天 --- ### 20. Ctr - WireGuard 管理(2 个) **位置**: `internal/ctr/wg_manager.go` **TODO 列表**: - Line 104: 实现 wireguard-go 进程管理 - Line 201: 实现平台特定的网络配置 **需要实现**: - ✅ 启动/停止 wireguard-go - ✅ Windows: 安装 TUN 驱动 - ✅ Linux: 配置 iptables/NAT - ✅ macOS: 配置 pf 防火墙 **工作量**: 2 天 --- ### 21. Tray - 系统托盘(2 个) **位置**: `internal/tray/tray.go` **TODO 列表**: - Line 113: 实现重启逻辑 - Line 127: 检查服务状态并更新菜单 **需要实现**: - ✅ 右键菜单重启功能 - ✅ 定期检查服务状态 - ✅ 动态更新菜单项 **工作量**: 0.5 天 --- ### 22. Dashboard - ECharts 图表(1 个) **位置**: `web/src/views/Dashboard.vue:153` **当前代码**: ```vue ``` **需要实现**: - ✅ 安装 echarts - ✅ 添加设备趋势图 - ✅ 添加链路分布饼图 - ✅ 添加延迟折线图 **工作量**: 0.5 天 --- ### 23. Monitor - 导出功能(1 个) **位置**: `web/src/views/Monitor/Realtime.vue:526` **当前代码**: ```javascript const exportMetrics = () => { // TODO: 实现导出逻辑 } ``` **需要实现**: - ✅ 导出为 CSV 格式 - ✅ 导出为 JSON 格式 - ✅ 导出为 PDF 报告(可选) **工作量**: 0.3 天 --- ## 📋 **实施计划** ### 第一阶段:Monitor 页面对接(0.5 天) **目标**: 让监控页面显示真实数据 **任务**: 1. ✅ 取消 Monitor/Realtime.vue 所有注释(0.1 天) 2. ✅ 添加错误处理和重试(0.1 天) 3. ✅ 添加加载状态(0.1 天) 4. ✅ 测试数据展示(0.2 天) **预期效果**: - CPU 使用率实时更新 - 内存使用量显示 - 设备在线统计 - 网络数量统计 --- ### 第二阶段:Dashboard 完善(1 天) **目标**: 完善 Dashboard 核心功能 **任务**: 1. ✅ 实现 GetLogs API(0.5 天) 2. ✅ 实现 GetLinkDistribution API(0.5 天) 3. ✅ 集成 ECharts 图表(0.5 天) **预期效果**: - 日志列表展示 - 链路分布饼图 - 设备趋势图表 --- ### 第三阶段:网络管理功能(1.5 天) **目标**: 完善网络管理核心功能 **任务**: 1. ✅ ShareSeedModal 调用 API(0.2 天) 2. ✅ JoinNetworkModal 调用 API(0.3 天) 3. ✅ Network Detail 配置下载(0.5 天) 4. ✅ Networks Pending 审批功能(0.5 天) **预期效果**: - MeshSeed 正常生成和分享 - 新设备可以加入网络 - 配置文件可下载 - 待审批列表可用 --- ### 第四阶段:DDNS 和设备管理(1.5 天) **目标**: 实现 DDNS 核心功能 **任务**: 1. ✅ 硬件指纹采集(1 天) 2. ✅ 连通性测试(0.5 天) 3. ✅ 手动同步(0.3 天) 4. ✅ 设备清理(0.5 天) **预期效果**: - DDNS 正常更新 - 硬件指纹唯一 - 设备管理完善 --- ### 第五阶段:Core 进程管理(2 天) **目标**: 完善 Core 模块管理 **任务**: 1. ✅ Ctr 进程管理(1 天) 2. ✅ WireGuard 管理(1 天) 3. ✅ 系统托盘优化(0.5 天) **预期效果**: - Core 进程稳定运行 - WireGuard 自动管理 - 托盘功能完善 --- ### 第六阶段:其他功能(1 天) **目标**: 清理剩余 TODO **任务**: 1. ✅ FooterStatusBar 系统信息(0.3 天) 2. ✅ NotificationDropdown 通知(0.3 天) 3. ✅ Monitor 导出功能(0.3 天) 4. ✅ 其他零散 TODO(0.1 天) **预期效果**: - 状态栏显示完整信息 - 实时通知推送 - 数据导出功能 --- ## 📊 **总结** ### TODO 分类统计 | 类别 | 数量 | 工作量 | 优先级 | |------|------|--------|--------| | **监控 API 对接** | 7 | 0.5 天 | P1 | | **Dashboard 功能** | 3 | 1 天 | P1-P3 | | **网络管理** | 9 | 1.5 天 | P2 | | **DDNS 功能** | 4 | 1.5 天 | P2 | | **设备管理** | 2 | 0.5 天 | P2 | | **Core 管理** | 10 | 2 天 | P3 | | **其他功能** | 13 | 1.5 天 | P2-P3 | | **总计** | **48** | **8.5 天** | - | --- ### 推荐实施顺序 **第一周(3 天)**: - Day 1: Monitor 页面对接 ✅ - Day 2: Dashboard 日志和链路统计 ✅ - Day 3: 网络管理功能完善 ✅ **第二周(3 天)**: - Day 4: DDNS 硬件指纹和测试 ✅ - Day 5: 设备管理和清理 ✅ - Day 6: Core 进程管理(上)✅ - Day 7: Core 进程管理(下)✅ **第三周(2.5 天)**: - Day 8: 系统托盘和状态栏 ✅ - Day 9: 通知和导出功能 ✅ - Day 10: 缓冲和测试 ✅ --- ### 预期成果 **完成后**: - ✅ 监控页面完整可用 - ✅ Dashboard 数据丰富 - ✅ 网络管理功能完善 - ✅ DDNS 正常工作 - ✅ Core 进程稳定 - ✅ 用户体验流畅 **TODO 清理率**: 100% **项目完成度**: 99/100 --- **状态**: 📋 **TODO 清单已整理完毕** **下一步**: 按优先级逐步实施 **预计完成时间**: 2026-04-07 *MeshRay - 持续改进,追求卓越!* ✨🎯