guoyu/log/1-AI指南.md
2025-12-12 11:42:50 +08:00

215 lines
5.3 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.

# AI工作指南
## 项目结构
### 1. 后端 + 管理后台
- **路径**: `Study-Vue-redis/`
- **技术栈**: Spring Boot + MyBatis + Vue.js
- **说明**: 包含后端API服务和管理后台前端
### 2. APP项目
- **路径**: `fronted_uniapp/`
- **技术栈**: uni-app (Vue.js)
- **说明**: 移动端应用可打包为Android/iOS
### 3. 数据库
- **导入脚本**: `log/数据库/dump-study-202512070856.sql`
- **数据库名**: `study`
- **默认账号**: `root` / `root`
### 4. 开发环境
- **本地开发**: Windows环境运行正常
- **部署环境**: Linux服务器存在环境差异问题
- **注意**: 部署前需要测试环境兼容性
---
## 工作原则
### 原则1主动获取信息
**优先使用工具获取信息,减少询问**
**应该做的:**
- 使用`grep_search`查找代码
- 使用`read_file`读取配置文件
- 使用`run_command`检查端口占用、进程状态
- 查询数据库获取数据状态(配置文件中有账号密码)
- 查看日志文件分析问题
**不应该做的:**
- 直接询问"端口是多少"(应该用命令查询)
- 询问"数据库密码是什么"(应该读取配置文件)
- 询问"这个文件在哪里"应该用find_by_name搜索
**例外情况:**
- 报错信息(需要用户提供控制台输出)
- 运行结果(需要用户反馈测试结果)
- 业务需求(需要用户明确需求细节)
---
### 原则2确认需求再执行
**信息不完整时,先确认再行动**
**检查清单:**
- [ ] 用户需求是否明确?有无歧义?
- [ ] 是否需要补充信息才能执行?
- [ ] 能否通过工具自行获取缺失信息?
- [ ] 执行前是否理解了预期结果?
**示例:**
- 用户说"修复这个bug" → 先确认具体是哪个bug复现步骤是什么
- 用户说"部署到服务器" → 先确认服务器地址、环境、部署方式
- 用户说"优化性能" → 先确认性能瓶颈在哪里,优化目标是什么
---
### 原则3简洁文档
**只在需要时写文档,内容精简实用**
**文档要求:**
- 用户明确要求时才写文档
- 用户会指定文档路径
- 只写必要内容,不要冗余
- 重点突出,步骤清晰
- 使用Markdown格式
**避免:**
- 自动生成大量README
- 过度详细的注释
- 重复的说明文档
- 长篇大论的总结
**例外情况:**
- SQL脚本需要记录修改
- 部署步骤(需要明确指引)
- 配置文件(需要说明参数)
---
### 原则4理解功能逻辑
**充分理解现有功能后再修改**
**功能理解流程:**
1. 使用`grep_search`和`code_search`查找相关代码
2. 阅读核心逻辑,理解业务流程
3. 用简洁语言总结功能逻辑
4. 提供实际应用场景示例
5. 确认理解正确后再进行修改
**示例:**
- 用户说"优化学习记录功能"
- → 先查找StudyLearningRecord相关代码
- → 理解当前如何记录学习进度
- → 总结每次上报时更新learning_record和learning_detail
- → 场景学生观看视频时每10秒上报一次进度
- → 确认理解无误后,再讨论优化方案
---
## 常见操作
### 编译后端
```bash
cd Study-Vue-redis
mvn clean package -DskipTests
```
### 启动后端
```bash
java -jar ry-study-admin/target/ry-study-admin.jar
```
### 查询数据库
```bash
mysql -u root -proot study -e "你的SQL语句"
```
### 查看端口占用
```powershell
netstat -ano | findstr :端口号
```
### 停止Java进程
```powershell
taskkill /F /IM java.exe
```
---
## 工作流程
### 1. 接收需求
- 阅读用户请求
- 识别关键信息
- 判断是否需要补充
### 2. 信息收集
- 优先使用工具获取
- 必要时向用户确认
- 确保信息完整
### 3. 分析问题
- 定位问题根源
- 查看相关代码
- 理解业务逻辑
### 4. 实施修改
- 最小化修改范围
- 保持代码风格一致
- 添加必要注释
### 5. 验证结果
- 编译测试
- 提供验证步骤
- 记录修改内容
---
## 经验总结
### BUG修复经验
#### 多视频时长问题2025-12-12
**问题**: 多个视频课件共用一个总时长字段
**方案**: 动态更新courseware.duration每个课件独立存储
**教训**: 数据设计要考虑一对多关系
#### 防快进检测2025-12-12
**问题**: 用户拖动到末尾就能完成
**方案**: 添加累计观看时长检测(>=80%
**教训**: 前端数据可被篡改,后端必须验证
#### 观看时长共用2025-12-12
**问题**: Mapper XML缺少coursewareId过滤
**方案**: 添加WHERE条件
**教训**: SQL查询必须明确过滤条件
#### 异常数据清理2025-12-12
**问题**: duration<=0的脏数据影响统计
**方案**: 清理异常数据,代码中过滤
**教训**: 数据验证要在代码和数据库两层进行
---
## 注意事项
1. **修改前先备份** - 重要文件修改前先备份
2. **测试后再部署** - 本地测试通过再部署到服务器
3. **保持代码风格** - 遵循项目现有代码规范
4. **避免过度设计** - 简单问题简单解决
5. **记录关键修改** - 重要修改需要记录在log目录
---
## 遇到问题时
1. 先查看日志文件
2. 使用grep搜索相关代码
3. 查询数据库验证数据
4. 尝试用命令诊断
5. 最后才询问用户
---
*最后更新: 2025-12-12*