# 服务注册管理实施计划 ## 项目现状分析 当前项目使用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. **功能完整性**:所有核心功能(服务分组、服务监控、系统集成)都能正常实现