Files
Meshray-Manager/docs/MeshRay 项目 TODO 功能完善清单.md
T
2026-06-30 15:14:37 +08:00

696 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 API0.5 天)
2. ✅ 实现 GetLinkDistribution API0.5 天)
3. ✅ 集成 ECharts 图表(0.5 天)
**预期效果**:
- 日志列表展示
- 链路分布饼图
- 设备趋势图表
---
### 第三阶段:网络管理功能(1.5 天)
**目标**: 完善网络管理核心功能
**任务**:
1. ✅ ShareSeedModal 调用 API0.2 天)
2. ✅ JoinNetworkModal 调用 API0.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 - 持续改进,追求卓越!* ✨🎯