# AI学习搭子需求文档 ## 1. 项目概述 ### 1.1 项目名称 AI学习搭子 - 智能学习伙伴应用 ### 1.2 项目背景 本项目旨在开发一款基于AI技术的学习辅助应用,帮助用户制定学习目标、智能出题、记录学习进度,并提供AI交流功能,打造个性化的学习体验。 ### 1.3 项目目标 - 提供智能化的学习目标设定和管理 - 基于AI技术的个性化出题系统 - 详细的学习进度跟踪和数据分析 - 智能AI助手提供学习指导和答疑 - 丰富的学习报告和成就系统 ## 2. 功能需求 ### 2.1 用户管理模块 #### 2.1.1 用户注册/登录 - 支持用户名密码注册登录 - 用户信息包含头像、用户名、年级等基本信息 - 支持头像上传和更换 #### 2.1.2 个人中心 - 个人信息展示和编辑 - 学习统计数据展示 - 系统设置管理 ### 2.2 学习目标管理模块 #### 2.2.1 目标设定 - 支持多种学科类型选择(数学、英语、物理、化学等) - 目标类型设定:学习时长、题目数量、单词量等 - 难度级别选择:简单、中等、困难 - 预计用时设定 - 目标描述自定义 #### 2.2.2 目标管理 - 目标列表展示(未开始、进行中、已完成) - 目标进度实时更新 - 目标编辑和删除 - 目标完成状态跟踪 ### 2.3 AI出题系统 #### 2.3.1 智能出题 - 根据学科、难度、知识点智能生成题目 - 支持多种题型:选择题、填空题、单词练习 - 题目内容包含题干、选项、答案、知识点 - 难度自适应调整 #### 2.3.2 答题功能 - 在线答题界面 - 答题计时功能 - 实时答案校验 - 答题记录保存 ### 2.4 AI交流模块 #### 2.4.1 智能对话 - 支持文字对话交流 - AI助手提供学习指导 - 学习问题答疑解惑 - 学习建议和鼓励 #### 2.4.2 对话记录 - 聊天记录保存 - 历史对话查看 - 对话内容搜索 ### 2.5 学习报告模块 #### 2.5.1 学习统计 - 每日学习时长统计 - 各科目学习时长占比 - 学习目标完成情况 - 连续学习天数记录 #### 2.5.2 学习报告 - 详细的学习报告生成 - 正确率分析 - 知识点掌握情况分析 - 难度分析报告 - 报告分享功能 ### 2.6 成就系统 #### 2.6.1 成就管理 - 多种学习成就设定 - 成就获得条件判断 - 成就展示和分享 - 成就激励机制 ### 2.7 系统设置 #### 2.7.1 个性化设置 - 学习提醒开关 - AI助手功能开关 - 护眼模式设置 - 其他个性化配置 ## 3. 技术架构 ### 3.1 系统架构 - 前端:移动端应用(Android/iOS) - 后端:Spring Boot + MySQL - AI服务:集成第三方AI API或自建AI模型 - 文件存储:云存储服务(头像、报告等) ### 3.2 技术栈 - 后端框架:Spring Boot 2.x - 数据库:MySQL 8.0 - 缓存:Redis - 消息队列:RabbitMQ(可选) - AI集成:OpenAI API 或其他AI服务 ## 4. 数据库设计 ### 4.1 用户信息表(user_info) ```sql CREATE TABLE user_info ( user_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID', avatar_url VARCHAR(255) COMMENT '头像存储路径', username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名', password VARCHAR(255) NOT NULL COMMENT '密码', grade VARCHAR(20) COMMENT '年级信息', create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ); ``` ### 4.2 目标表(goals) ```sql CREATE TABLE goals ( goal_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '目标ID', user_id BIGINT NOT NULL COMMENT '用户ID', subject VARCHAR(50) NOT NULL COMMENT '学科类型', goal_type VARCHAR(50) NOT NULL COMMENT '目标类型', goal_content TEXT COMMENT '目标描述', difficulty VARCHAR(20) COMMENT '难度', total_quantity INT DEFAULT 0 COMMENT '目标总量', completed_quantity INT DEFAULT 0 COMMENT '已完成量', estimated_time INT COMMENT '预计用时(分钟)', start_time TIMESTAMP COMMENT '开始时间', status TINYINT DEFAULT 0 COMMENT '状态(0-未开始,1-进行中,2-已完成)', create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', FOREIGN KEY (user_id) REFERENCES user_info(user_id) ); ``` ### 4.3 AI对话表(ai_chat) ```sql CREATE TABLE ai_chat ( chat_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '对话ID', user_id BIGINT NOT NULL COMMENT '用户ID', content TEXT NOT NULL COMMENT '消息内容', type TINYINT NOT NULL COMMENT '消息类型(0=用户,1=AI)', timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '消息时间戳', FOREIGN KEY (user_id) REFERENCES user_info(user_id) ); ``` ### 4.4 目标详情表(goal_of_detail) ```sql CREATE TABLE goal_of_detail ( detail_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '详情ID', goal_id BIGINT NOT NULL COMMENT '目标ID', subject VARCHAR(50) COMMENT '学科', content_type TINYINT COMMENT '类型(1-选择题,2-填空题,3-单词)', content TEXT COMMENT '内容详情', options JSON COMMENT '选项', answer TEXT COMMENT '答案', difficulty VARCHAR(20) COMMENT '难度', knowledge_point VARCHAR(100) COMMENT '知识点', FOREIGN KEY (goal_id) REFERENCES goals(goal_id) ); ``` ### 4.5 学习报告表(study_report) ```sql CREATE TABLE study_report ( report_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '报告ID', goal_id BIGINT NOT NULL COMMENT '目标ID', user_id BIGINT NOT NULL COMMENT '用户ID', generate_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '生成时间', accuracy DECIMAL(5,2) COMMENT '正确率', knowledge_analysis JSON COMMENT '知识点分析', difficulty_analysis JSON COMMENT '难度分析', share_url VARCHAR(255) COMMENT '分享链接', FOREIGN KEY (goal_id) REFERENCES goals(goal_id), FOREIGN KEY (user_id) REFERENCES user_info(user_id) ); ``` ### 4.6 用户答题记录表(user_answer) ```sql CREATE TABLE user_answer ( answer_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '记录ID', user_id BIGINT NOT NULL COMMENT '用户ID', goal_id BIGINT NOT NULL COMMENT '目标ID', content_id BIGINT NOT NULL COMMENT '题目ID', user_answer TEXT COMMENT '用户答案', is_correct TINYINT COMMENT '是否正确', spend_time INT COMMENT '单题用时(秒)', answer_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '答题时间', FOREIGN KEY (user_id) REFERENCES user_info(user_id), FOREIGN KEY (goal_id) REFERENCES goals(goal_id), FOREIGN KEY (content_id) REFERENCES goal_of_detail(detail_id) ); ``` ### 4.7 学习统计表(study_stats) ```sql CREATE TABLE study_stats ( stats_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '统计ID', user_id BIGINT NOT NULL COMMENT '用户ID', daily_study_hours JSON COMMENT '每日学习时长', subject_study_duration JSON COMMENT '各科目学习时长占比', completed_goals INT DEFAULT 0 COMMENT '已完成目标数量', streak_days INT DEFAULT 0 COMMENT '连续学习天数', week_start_date DATE COMMENT '统计周开始日期', FOREIGN KEY (user_id) REFERENCES user_info(user_id) ); ``` ### 4.8 学习成就表(achievements) ```sql CREATE TABLE achievements ( achievement_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '成就ID', user_id BIGINT NOT NULL COMMENT '用户ID', achievement_name VARCHAR(100) NOT NULL COMMENT '成就名称', achievement_source VARCHAR(255) COMMENT '成就图片资源', description TEXT COMMENT '成就说明', is_achieved TINYINT DEFAULT 0 COMMENT '是否获得成就', achieve_date TIMESTAMP NULL COMMENT '获得成就日期', FOREIGN KEY (user_id) REFERENCES user_info(user_id) ); ``` ### 4.9 系统设置表(system_settings) ```sql CREATE TABLE system_settings ( setting_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '设置ID', user_id BIGINT NOT NULL COMMENT '用户ID', study_reminder_enabled TINYINT DEFAULT 1 COMMENT '学习提醒开关', ai_assistant_enabled TINYINT DEFAULT 1 COMMENT 'AI助手开关', eye_protection_enabled TINYINT DEFAULT 0 COMMENT '护眼模式开关', FOREIGN KEY (user_id) REFERENCES user_info(user_id) ); ``` ## 5. 接口设计 ### 5.1 用户管理接口 - POST /api/users/register - 用户注册 - POST /api/users/login - 用户登录 - GET /api/users/{id} - 获取用户信息 - PUT /api/users/{id} - 更新用户信息 - POST /api/users/{id}/avatar - 上传头像 ### 5.2 目标管理接口 - POST /api/goals - 创建学习目标 - GET /api/goals/user/{userId} - 获取用户目标列表 - PUT /api/goals/{id} - 更新目标 - DELETE /api/goals/{id} - 删除目标 - POST /api/goals/{id}/start - 开始目标 - POST /api/goals/{id}/complete - 完成目标 ### 5.3 AI出题接口 - POST /api/ai/generate-questions - AI生成题目 - GET /api/questions/goal/{goalId} - 获取目标题目 - POST /api/questions/{id}/answer - 提交答案 ### 5.4 AI对话接口 - POST /api/ai/chat - 发送消息 - GET /api/ai/chat/history/{userId} - 获取聊天记录 ### 5.5 学习报告接口 - GET /api/reports/user/{userId} - 获取用户报告 - POST /api/reports/generate - 生成学习报告 - GET /api/reports/{id}/share - 分享报告 ### 5.6 统计数据接口 - GET /api/stats/user/{userId} - 获取用户统计 - GET /api/stats/weekly/{userId} - 获取周统计 ### 5.7 成就系统接口 - GET /api/achievements/user/{userId} - 获取用户成就 - POST /api/achievements/check - 检查成就获得 ### 5.8 系统设置接口 - GET /api/settings/user/{userId} - 获取用户设置 - PUT /api/settings/user/{userId} - 更新用户设置 ## 6. 非功能性需求 ### 6.1 性能要求 - 系统响应时间不超过2秒 - 支持并发用户数1000+ - 数据库查询优化,复杂查询时间不超过1秒 ### 6.2 安全要求 - 用户密码加密存储 - API接口权限验证 - 数据传输HTTPS加密 - 防止SQL注入和XSS攻击 ### 6.3 可用性要求 - 系统可用性99.5%以上 - 支持数据备份和恢复 - 异常情况下的优雅降级 ### 6.4 扩展性要求 - 支持水平扩展 - 模块化设计,便于功能扩展 - 支持多种AI模型接入 ## 7. 开发计划 ### 7.1 第一阶段(4周) - 基础架构搭建 - 用户管理模块开发 - 数据库设计和实现 ### 7.2 第二阶段(6周) - 目标管理模块开发 - AI出题系统集成 - 答题功能实现 ### 7.3 第三阶段(4周) - AI对话模块开发 - 学习报告系统实现 - 统计数据功能 ### 7.4 第四阶段(3周) - 成就系统开发 - 系统设置功能 - 整体测试和优化 ### 7.5 第五阶段(2周) - 性能优化 - 安全加固 - 部署上线 ## 8. 风险评估 ### 8.1 技术风险 - AI接口稳定性和响应速度 - 大量用户并发访问性能问题 - 数据安全和隐私保护 ### 8.2 业务风险 - 用户接受度和使用习惯 - 竞品分析和市场定位 - 内容质量和准确性 ### 8.3 风险应对 - 多AI服务商备选方案 - 性能测试和优化 - 用户反馈收集和快速迭代 ## 9. 总结 本需求文档详细描述了AI学习搭子应用的功能需求、技术架构、数据库设计等关键内容。项目将采用现代化的技术栈,提供智能化的学习体验,帮助用户提高学习效率和学习兴趣。通过分阶段的开发计划,确保项目按时高质量交付。