# 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
<!-- TODO: 集成 ECharts 图表 -->
```

**需要实现**:
- ✅ 安装 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 - 持续改进，追求卓越！* ✨🎯
