Initial commit

This commit is contained in:
2026-06-30 15:14:37 +08:00
commit 15dab96872
311 changed files with 95639 additions and 0 deletions
@@ -0,0 +1,695 @@
# 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 - 持续改进,追求卓越!* ✨🎯