# 服务注册管理实施计划

## 项目现状分析

当前项目使用Vue 3 + FastAPI + PostgreSQL技术栈，已经实现了基本的服务注册功能，但存在以下问题：

1. **前端认证机制不完善**：API调用缺少认证，导致加载仓库列表失败
2. **服务注册功能不完整**：使用模拟数据，缺少真实的仓库信息获取
3. **服务管理能力有限**：缺少服务分组、批量管理和监控功能
4. **数据库管理界面缺失**：无法直接查看数据库中的服务和仓库信息

## 实施计划

### 第一阶段：修复基础功能（已完成）

#### 1. 完善前端认证机制
- **修改前端API调用**：确保所有API调用都使用axios并自动携带认证token
- **实现token管理**：添加token过期检测和自动刷新机制
- **优化登录状态**：实现用户登录状态持久化和自动恢复

#### 2. 修复服务注册流程
- **实现真实仓库列表加载**：调用后端API获取数据库中的仓库信息
- **完善服务注册表单**：移除算法选择，添加仓库描述和地址展示
- **优化表单验证**：添加更严格的表单验证和错误提示

#### 3. 增强后端服务注册API
- **实现真实仓库信息获取**：从数据库中查询仓库详细信息
- **完善服务注册逻辑**：实现真实的服务创建和部署
- **添加错误处理**：增强API错误处理和异常捕获

### 第二阶段：核心功能实现

#### 1. 服务分组前端界面
- **分组管理功能**：创建、编辑、删除分组的弹窗界面
- **服务分类展示**：左侧分组树状结构，右侧对应分组的服务列表
- **服务与分组关联**：服务编辑时选择分组的下拉菜单
- **界面设计**：清晰的视觉层次和交互反馈

#### 2. 服务监控功能
- **健康检查机制**：后端定时任务检查服务状态，支持HTTP、TCP和自定义检查方式
- **实时状态监控**：使用WebSocket实现前端实时数据更新，减少轮询开销
- **监控指标**：CPU使用率、内存使用、响应时间、请求次数等核心指标
- **前端展示**：实时状态卡片、异常告警弹窗、监控指标列表
- **异常处理**：服务状态异常时触发告警，支持邮件通知（可选）

### 第三阶段：系统集成和优化

#### 1. 系统集成测试
- **测试范围**：服务分组管理、服务监控功能、服务注册流程、用户认证等核心功能
- **测试方法**：单元测试（pytest）、API测试（requests）、前端集成测试（Vue Test Utils）
- **测试重点**：功能实现验证，确保所有核心功能正常运行
- **测试目标**：确保系统稳定性和可靠性，不做复杂的性能测试

#### 2. 功能优化和完善
- **数据库管理界面**：实现服务和仓库数据展示
- **服务列表优化**：实现分页、筛选和详情展示
- **API文档自动生成**：使用FastAPI内置文档功能
- **文档完善**：API文档和使用说明

## 技术实现细节

### 前端技术实现
- **使用Pinia管理状态**：实现用户登录状态和服务数据管理
- **使用Element Plus组件**：构建美观的服务管理界面，包括Tree、Table、Dialog等组件
- **使用axios拦截器**：实现API调用的统一认证处理
- **使用WebSocket**：实现服务状态实时更新，减少轮询开销

### 后端技术实现
- **使用FastAPI构建API**：实现高性能的服务管理API
- **使用SQLAlchemy操作数据库**：实现服务和仓库的持久化
- **使用JWT进行认证**：实现安全的用户认证
- **使用Docker管理服务**：实现服务的容器化部署
- **使用apscheduler**：实现后端定时任务，用于服务健康检查
- **使用websockets**：实现后端WebSocket服务，用于实时数据推送

### 数据库设计
- **服务表**：存储服务基本信息、配置和状态
- **服务分组表**：存储服务分组信息，与服务表建立一对多关系
- **仓库表**：存储算法仓库信息，包括名称、描述和地址
- **监控数据表**：存储服务监控指标和健康检查结果

### 核心API设计

#### 服务分组API
- `GET /api/service-groups`：获取所有服务分组
- `POST /api/service-groups`：创建新的服务分组
- `GET /api/service-groups/{group_id}`：获取单个服务分组详情
- `PUT /api/service-groups/{group_id}`：更新服务分组信息
- `DELETE /api/service-groups/{group_id}`：删除服务分组

#### 服务监控API
- `GET /api/services/{service_id}/status`：获取单个服务状态
- `GET /api/services/status`：获取所有服务状态
- `GET /api/services/{service_id}/metrics`：获取服务监控指标
- `GET /api/services/metrics`：获取所有服务监控指标

#### WebSocket API
- `ws://{host}:{port}/ws/services`：实时服务状态更新
- `ws://{host}:{port}/ws/metrics`：实时监控指标更新

## 预期效果

1. **稳定的服务注册**：用户可以正常注册新服务，系统能正确处理认证和数据存储
2. **高效的服务管理**：支持服务分组管理和服务分类展示，提供清晰的服务组织方式
3. **实时的服务监控**：通过WebSocket实现服务状态实时更新，及时发现和处理异常
4. **完整的数据展示**：可以查看数据库中的所有服务和仓库信息，支持服务详情查看
5. **良好的用户体验**：界面简洁直观，操作流程顺畅，响应速度快
6. **可扩展的架构**：支持后续服务数量的增加和功能扩展

## 风险评估

1. **认证问题**：需要确保所有API调用都正确处理认证，避免401错误
2. **WebSocket连接**：需要处理WebSocket连接的稳定性和断线重连
3. **数据库性能**：需要优化数据库查询，确保服务管理的响应速度
4. **服务部署**：需要确保服务部署的可靠性和稳定性
5. **系统集成**：需要确保前后端和数据库的无缝集成

## 成功指标

1. **服务注册成功率**：100%的服务注册请求能够成功处理
2. **服务管理响应时间**：服务列表加载时间小于2秒，操作响应时间小于1秒
3. **监控数据更新**：监控数据更新延迟小于0.5秒，实现准实时监控
4. **系统稳定性**：连续运行7天无故障，服务监控功能正常运行
5. **用户满意度**：操作流程顺畅，界面美观易用，功能完整
6. **功能完整性**：所有核心功能（服务分组、服务监控、系统集成）都能正常实现