Files
youwei-business-school/有维项目/.qoder/repowiki/zh/content/扩展与集成/API集成方案.md
2026-03-25 14:15:04 +08:00

327 lines
11 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.
# API集成方案
<cite>
**本文档引用的文件**
- [index.html](file://index.html)
</cite>
## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构总览](#架构总览)
5. [详细组件分析](#详细组件分析)
6. [依赖关系分析](#依赖关系分析)
7. [性能考量](#性能考量)
8. [故障排查指南](#故障排查指南)
9. [结论](#结论)
10. [附录](#附录)
## 简介
本文件面向“有维项目”的API集成与前端交互基于仓库中提供的单页应用入口文件梳理用户认证、数据存储、第三方服务集成微信登录、短信、支付相关的RESTful API规范、认证与安全策略、调用示例、错误处理、性能优化、版本管理与迁移、限流与缓存、监控告警等。由于当前仓库仅包含前端页面与脚本本文档在未直接分析具体后端实现的前提下提供可落地的API集成蓝图与最佳实践便于前后端协作与后续扩展。
## 项目结构
- 仓库根目录包含一个HTML入口文件内含完整的前端页面结构、样式与脚本涵盖登录、仪表盘、AI智能体等页面与交互逻辑。
- 该HTML文件承担了用户认证、页面切换、用户菜单、AI对话等前端功能但未包含任何后端API调用逻辑。
```mermaid
graph TB
A["index.html<br/>前端入口"] --> B["登录页面<br/>表单与社交登录"]
A --> C["仪表盘页面<br/>导航与Tab"]
A --> D["AI智能体页面<br/>对话与筛选"]
A --> E["聊天弹窗<br/>消息收发"]
A --> F["用户菜单<br/>账户设置与退出"]
```
图表来源
- [index.html](file://index.html)
章节来源
- [index.html](file://index.html)
## 核心组件
- 登录与认证:包含用户名/密码登录、记住我、忘记密码、社交登录(微信、手机验证码)等入口。
- 仪表盘包含平台概览、有维教育、AI工具、有维校友、会员体系等Tab页面。
- AI智能体提供多种AI助手卡片支持快速问答与对话。
- 用户菜单:用户头像、通知、账户设置、退出登录。
- 聊天对话:模态框内的消息发送、快捷问答、自动滚动。
章节来源
- [index.html](file://index.html)
## 架构总览
前端采用单页应用SPA模式页面通过JavaScript控制切换与状态更新用户认证与业务数据通过后端API提供。下图展示了从前端到后端的关键交互路径。
```mermaid
graph TB
subgraph "前端"
U["用户界面<br/>index.html"] --> L["登录流程"]
U --> D["仪表盘与Tab"]
U --> A["AI智能体与对话"]
U --> M["用户菜单"]
end
subgraph "后端API"
AUTH["认证服务<br/>登录/注册/会话"]
DATA["数据服务<br/>用户信息/课程/对话历史"]
THIRD["第三方服务<br/>微信/短信/支付"]
end
L --> AUTH
D --> DATA
A --> DATA
M --> AUTH
AUTH --> THIRD
DATA --> THIRD
```
图表来源
- [index.html](file://index.html)
## 详细组件分析
### 用户认证API
- 登录接口
- 方法与URLPOST /api/v1/auth/login
- 请求参数:
- username: 字符串,支持手机号或邮箱
- password: 字符串
- rememberMe: 布尔值(可选)
- 成功响应:返回令牌与用户信息
- 失败响应:返回错误码与错误信息
- 注册接口
- 方法与URLPOST /api/v1/auth/register
- 请求参数:
- username: 字符串
- email: 字符串
- password: 字符串
- 成功响应返回用户ID与状态
- 失败响应:返回错误码与错误信息
- 忘记密码接口
- 方法与URLPOST /api/v1/auth/forgot-password
- 请求参数:
- email: 字符串
- 成功响应:返回操作结果
- 失败响应:返回错误码与错误信息
- 社交登录接口
- 微信登录
- 方法与URLPOST /api/v1/auth/wechat
- 请求参数:
- code: 字符串,授权码
- 成功响应:返回令牌与用户信息
- 失败响应:返回错误码与错误信息
- 手机验证码登录
- 方法与URLPOST /api/v1/auth/sms-login
- 请求参数:
- phone: 字符串
- smsCode: 字符串
- 成功响应:返回令牌与用户信息
- 失败响应:返回错误码与错误信息
- 会话管理
- 刷新令牌
- 方法与URLPOST /api/v1/auth/refresh
- 请求参数:
- refreshToken: 字符串
- 成功响应:返回新令牌
- 失败响应:返回错误码与错误信息
- 退出登录
- 方法与URLPOST /api/v1/auth/logout
- 请求参数:无
- 成功响应:返回操作结果
- 失败响应:返回错误码与错误信息
章节来源
- [index.html](file://index.html)
### 数据存储API
- 用户信息获取
- 方法与URLGET /api/v1/users/profile
- 认证Bearer Token
- 成功响应:返回用户基本信息
- 失败响应:返回错误码与错误信息
- 课程数据同步
- 获取课程列表
- 方法与URLGET /api/v1/courses
- 查询参数:
- page: 整数(可选)
- limit: 整数(可选)
- 成功响应:返回分页课程列表
- 失败响应:返回错误码与错误信息
- 获取课程详情
- 方法与URLGET /api/v1/courses/{id}
- 成功响应:返回课程详情
- 失败响应:返回错误码与错误信息
- AI对话历史存储
- 保存对话
- 方法与URLPOST /api/v1/ai/conversations
- 请求参数:
- agentId: 字符串
- messages: 数组用户与AI消息
- 成功响应返回对话ID
- 失败响应:返回错误码与错误信息
- 获取对话历史
- 方法与URLGET /api/v1/ai/conversations
- 查询参数:
- agentId: 字符串(可选)
- limit: 整数(可选)
- 成功响应:返回历史记录列表
- 失败响应:返回错误码与错误信息
章节来源
- [index.html](file://index.html)
### 第三方服务集成API
- 微信登录API
- 授权回调
- 方法与URLGET /api/v1/oauth/wechat/callback
- 查询参数:
- code: 字符串
- 成功响应:返回令牌与用户信息
- 失败响应:返回错误码与错误信息
- 短信服务接口
- 发送验证码
- 方法与URLPOST /api/v1/sms/send
- 请求参数:
- phone: 字符串
- templateId: 字符串模板ID
- 成功响应:返回发送结果
- 失败响应:返回错误码与错误信息
- 支付网关集成
- 创建支付订单
- 方法与URLPOST /api/v1/payments/orders
- 请求参数:
- amount: 整数(分)
- productId: 字符串
- paymentMethod: 字符串(如 wechat 或 alipay
- 成功响应:返回支付链接或二维码
- 失败响应:返回错误码与错误信息
- 支付状态查询
- 方法与URLGET /api/v1/payments/orders/{orderId}
- 成功响应:返回订单状态
- 失败响应:返回错误码与错误信息
章节来源
- [index.html](file://index.html)
### API认证与安全
- 认证方法
- JWT令牌所有受保护接口需携带 Authorization: Bearer <token>
- OAuth2.0:社交登录采用授权码模式,回调后换取令牌
- 安全措施
- HTTPS所有API必须通过HTTPS传输
- 数据加密:敏感字段(如密码)需服务端加密存储
- 防重放攻击引入随机nonce与时间戳校验
- 防暴力破解:登录失败次数限制与临时封禁
- CORS严格配置允许域与方法
- CSRF对状态变更请求启用CSRF令牌校验
章节来源
- [index.html](file://index.html)
### 错误处理策略
- 错误码规范
- 通用错误400参数错误、401未授权、403权限不足、404资源不存在、429请求过频、500服务器内部错误
- 自定义错误:业务错误返回业务码与中文描述
- 前端处理
- 统一拦截器捕获HTTP错误并提示用户
- 重试机制对瞬时错误如502/503进行指数退避重试
- 降级策略:网络异常时使用本地缓存数据
章节来源
- [index.html](file://index.html)
### API调用示例示意
- 登录
- POST /api/v1/auth/login
- 请求体:{"username":"user","password":"pass","rememberMe":true}
- 成功响应:{"token":"...","user":{"id":"...","name":"..."}}
- 获取用户信息
- GET /api/v1/users/profile
- 请求头Authorization: Bearer <token>
- 成功响应:{"id":"...","name":"...","email":"..."}
- 发送短信验证码
- POST /api/v1/sms/send
- 请求体:{"phone":"13800000000","templateId":"SMS_XXXXXX"}
- 成功响应:{"success":true,"message":"发送成功"}
章节来源
- [index.html](file://index.html)
## 依赖关系分析
- 前端依赖
- HTML/CSS/JS单页应用结构无外部框架依赖
- 交互逻辑通过原生JavaScript实现页面切换、用户菜单、聊天对话
- 后端依赖
- 认证服务JWT/OAuth2.0
- 数据服务:用户、课程、对话历史
- 第三方服务:微信、短信、支付
```mermaid
graph LR
FE["前端(index.html)"] --> AUTH["认证服务"]
FE --> DATA["数据服务"]
FE --> THIRD["第三方服务"]
```
图表来源
- [index.html](file://index.html)
章节来源
- [index.html](file://index.html)
## 性能考量
- 前端优化
- 懒加载按需加载AI卡片与对话内容
- 缓存策略:本地存储用户信息与最近对话,减少重复请求
- 防抖节流:输入框与筛选操作使用防抖
- 后端优化
- 分页与索引:课程列表与对话历史分页查询
- CDN静态资源走CDN加速
- 异步处理:短信与支付异步回调,避免阻塞主流程
章节来源
- [index.html](file://index.html)
## 故障排查指南
- 登录失败
- 检查用户名/密码是否正确
- 确认网络与HTTPS可用
- 查看浏览器控制台是否有跨域错误
- 社交登录异常
- 确认微信授权回调地址配置正确
- 检查授权码是否过期
- 短信发送失败
- 检查手机号格式与模板ID
- 查看短信服务商返回状态
- 支付异常
- 检查订单状态与回调通知
- 确认支付金额与支付方式匹配
章节来源
- [index.html](file://index.html)
## 结论
本方案基于现有前端页面给出了完整的API集成蓝图涵盖认证、数据存储与第三方服务。建议尽快完善后端服务与数据库设计确保API的高可用、高性能与安全性。后续可根据业务发展逐步引入版本管理、灰度发布与监控告警体系。
## 附录
### API版本管理与迁移
- 版本策略
- 使用语义化版本号:/api/v1/...
- 保持向后兼容:新增字段以默认值存在
- 迁移指南
- 提供迁移脚本与兼容层
- 旧版本在到期前提供过渡期
### 限流与缓存
- 限流
- 登录接口每IP每分钟限制10次
- 短信接口每IP每小时限制50条
- 缓存
- 课程列表Redis缓存TTL 5分钟
- 用户信息:本地存储,带失效时间
### 监控告警
- 指标
- 请求量、错误率、响应时间、缓存命中率
- 告警
- 错误率超过阈值触发告警
- 响应时间异常波动告警