# AI近视防控系统 - API文档 ## 项目概述 AI近视防控系统是一套用于监测、分析和预防青少年近视发展的智能平台。通过眼动追踪、视力检测算法和智能训练内容,帮助学校和家庭及时发现并干预近视发展。 ## API基础信息 - **Base URL**: `https://api.myopia-prevention.com/v1` - **协议**: HTTPS - **数据格式**: JSON - **字符编码**: UTF-8 ## 认证方式 ### JWT Token认证 所有需要认证的API接口都需要在请求头中添加JWT Token: ``` Authorization: Bearer {token} ``` ### 登录接口 ``` POST /api/v1/auth/login ``` **请求参数**: ```json { "username": "用户名或手机号", "password": "密码", "device_id": "设备ID(可选)" } ``` **响应示例**: ```json { "code": 0, "message": "登录成功", "data": { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "expires_at": "2026-03-29T10:00:00Z", "user_id": 1, "username": "admin", "name": "管理员", "role": "admin" } } ``` ## API接口列表 ### 1. 用户认证相关 #### 1.1 用户注册 ``` POST /api/v1/auth/register ``` **请求参数**: ```json { "username": "用户名", "password": "密码", "name": "姓名", "phone": "手机号", "role": "角色(student/parent/teacher)" } ``` #### 1.2 获取用户资料 ``` GET /api/v1/auth/profile ``` #### 1.3 更新用户资料 ``` PUT /api/v1/auth/profile ``` **请求参数**: ```json { "name": "姓名", "phone": "手机号" } ``` #### 1.4 修改密码 ``` PUT /api/v1/auth/password ``` **请求参数**: ```json { "old_password": "旧密码", "new_password": "新密码" } ``` ### 2. 检测服务相关 #### 2.1 发起检测 ``` POST /api/v1/detections/start ``` **请求参数**: ```json { "class_id": 1, "teacher_id": 1, "student_count": 30, "detection_type": "vision" // vision/fatigue/training } ``` **响应示例**: ```json { "code": 0, "message": "检测任务已创建", "data": { "task_id": "1", "task_no": "task_20260328_123456_001", "start_time": "2026-03-28T10:00:00Z" } } ``` #### 2.2 提交检测结果 ``` POST /api/v1/detections/submit ``` **请求参数**: ```json { "student_id": 1, "detection_id": "1", "vision": { "vision_left": 5.0, "vision_right": 4.9, "confidence": "high" }, "eye_movement": { "left_eye": { "x": 120.5, "y": 85.3, "radius": 3.2, "confidence": 0.95 }, "right_eye": { "x": 140.2, "y": 84.8, "radius": 3.1, "confidence": 0.93 }, "gaze_point": { "x": 1920, "y": 540, "confidence": 0.9 }, "timestamp": 1711612800000 }, "response": { "accuracy": 0.85, "response_time": 2.5, "errors": 2 }, "timestamp": 1711612800000, "device_id": 1 } ``` #### 2.3 获取检测报告 ``` GET /api/v1/detections/report/:detection_id/student/:student_id ``` #### 2.4 获取检测历史 ``` GET /api/v1/detections/history ``` **查询参数**: - `student_id`: 学生ID - `class_id`: 班级ID - `start_date`: 开始日期 - `end_date`: 结束日期 - `page`: 页码,默认1 - `page_size`: 每页数量,默认20 #### 2.5 获取班级统计 ``` GET /api/v1/detections/class/:class_id/stats ``` **查询参数**: - `start_date`: 开始日期 - `end_date`: 结束日期 **响应示例**: ```json { "code": 0, "message": "获取成功", "data": { "class_id": 1, "class_name": "一年级一班", "total_students": 30, "tested_students": 28, "avg_vision_left": 4.9, "avg_vision_right": 4.8, "vision_decline_count": 2, "avg_fatigue_score": 25.5, "alert_count": 3, "alert_distribution": { "green": 20, "yellow": 5, "orange": 2, "red": 1 }, "created_at": "2026-03-28T10:00:00Z" } } ``` ### 3. 预警服务相关 #### 3.1 获取预警列表 ``` GET /api/v1/alerts ``` **查询参数**: - `student_id`: 学生ID - `class_id`: 班级ID - `level`: 预警级别 - `status`: 预警状态 - `page`: 页码 - `page_size`: 每页数量 #### 3.2 处理预警 ``` POST /api/v1/alerts/:alert_id/handle ``` **请求参数**: ```json { "handle_remark": "处理备注" } ``` ### 4. 训练服务相关 #### 4.1 获取训练任务 ``` GET /api/v1/training/tasks ``` **查询参数**: - `student_id`: 学生ID - `date`: 日期 #### 4.2 提交训练记录 ``` POST /api/v1/training/records ``` **请求参数**: ```json { "student_id": 1, "task_id": 1, "score": 95, "accuracy": 0.9, "duration": 300, "performance_metrics": { "eye_movement_accuracy": 0.95, "focus_time": 280 } } ``` ### 5. 设备服务相关 #### 5.1 设备注册 ``` POST /api/v1/devices/register ``` **请求参数**: ```json { "device_no": "设备编号", "device_name": "设备名称", "device_type": "设备类型", "school_id": 1, "class_id": 1 } ``` ## 错误码说明 | 错误码 | 说明 | |--------|------| | 0 | 成功 | | 400 | 请求参数错误 | | 401 | 未授权/认证失败 | | 403 | 禁止访问/权限不足 | | 404 | 资源不存在 | | 500 | 服务器内部错误 | ## 数据模型 ### 用户模型 - ID: 唯一标识符 - Username: 用户名 - Name: 姓名 - Phone: 手机号 - Role: 角色 (student/parent/teacher/admin) - Status: 状态 (1:正常, 0:禁用) ### 学生模型 - ID: 唯一标识符 - StudentNo: 学号 - Name: 姓名 - Gender: 性别 (1:男, 2:女) - BirthDate: 出生日期 - ClassID: 班级ID - ParentID: 家长ID ### 检测模型 - ID: 唯一标识符 - TaskID: 检测任务ID - StudentID: 学生ID - DetectionTime: 检测时间 - VisionLeft: 左眼视力 - VisionRight: 右眼视力 - FatigueScore: 疲劳分数 - AlertLevel: 预警级别 ### 预警模型 - ID: 唯一标识符 - StudentID: 学生ID - DetectionID: 检测ID - AlertLevel: 预警级别 (1:关注, 2:预警, 3:告警) - AlertType: 预警类型 - Status: 状态 (0:未处理, 1:已通知, 2:已处理) ## 限流策略 - 普通用户: 100次/分钟 - 教师用户: 200次/分钟 - 设备接口: 500次/分钟 ## 部署信息 - 环境: 生产环境 - 版本: v1.0.0 - 部署时间: 2026-03-28