# 评分标准JSON迁移验证测试计划 ## 🎯 测试目标 验证评分标准从 `instructions` 字段的字符串格式迁移到 `scoring_criteria` 字段的JSON格式后,所有功能正常工作。 ## 📋 测试清单 ### Phase 1: 前端功能验证 #### 1.1 教师端 - 项目创建页面 (`project-create.uvue`) - [ ] **新建项目保存** - 填写项目基本信息 - 添加评分标准(多个等级) - 验证保存后数据库中 `scoring_criteria` 字段为JSON格式 - 验证包含 `criteria`, `scoring_method`, `weight_distribution` 字段 - [ ] **草稿保存功能** - 保存为草稿(`is_active: false`) - 验证数据正确保存 - 验证JSON结构完整 #### 1.2 教师端 - 项目编辑页面 (`project-edit.uvue`) - [ ] **编辑现有项目** - 加载项目数据 - 验证新JSON格式正确解析 - 验证旧格式兼容性(如果有legacy数据) - 修改评分标准并保存 - 验证更新后JSON结构正确 #### 1.3 教师端 - 项目详情页面 (`project-detail.uvue`) - [ ] **评分标准显示** - 查看项目详情 - 验证评分标准正确显示 - 验证分数范围、描述信息完整 - 测试新旧数据格式兼容性 #### 1.4 教师端 - 创建作业页面 (`create-assignment.uvue`) - [ ] **项目选择功能** - 项目列表正确加载(使用 `is_active: true` 过滤) - 项目信息正确显示 - 难度等级样式正确应用 (`getDifficultyClass`) #### 1.5 学生端 - 作业详情页面 (`assignment-detail.uvue`) - [ ] **评分标准显示** - 查看作业详情 - 验证评分标准正确解析和显示 - 测试新JSON格式解析 - 测试旧格式兼容性 ### Phase 2: 数据库验证 #### 2.1 数据结构验证 ```sql -- 验证字段类型 SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_name = 'ak_training_projects' AND column_name IN ('scoring_criteria', 'title', 'sport_type', 'difficulty_level', 'is_active'); ``` #### 2.2 JSON数据验证 ```sql -- 验证JSON结构 SELECT id, title, scoring_criteria, jsonb_typeof(scoring_criteria) as type, scoring_criteria ? 'criteria' as has_criteria, scoring_criteria ? 'scoring_method' as has_method, scoring_criteria ? 'weight_distribution' as has_weights, jsonb_array_length(scoring_criteria->'criteria') as criteria_count FROM ak_training_projects WHERE scoring_criteria IS NOT NULL LIMIT 5; ``` #### 2.3 数据完整性验证 ```sql -- 检查所有项目都有评分标准 SELECT COUNT(*) as total_projects, COUNT(scoring_criteria) as projects_with_criteria, COUNT(*) - COUNT(scoring_criteria) as missing_criteria FROM ak_training_projects; ``` ### Phase 3: 兼容性测试 #### 3.1 新旧数据共存测试 - [ ] 创建包含新JSON格式的项目 - [ ] 确保legacy数据(如果存在)仍能正常显示 - [ ] 验证前端代码能同时处理两种格式 #### 3.2 边界条件测试 - [ ] 空的评分标准数组 - [ ] 单个评分标准 - [ ] 最大数量评分标准(5-10个) - [ ] 特殊字符在描述中 - [ ] 极值分数(0, 100) ### Phase 4: 性能测试 #### 4.1 查询性能 ```sql -- 测试JSON查询性能 EXPLAIN ANALYZE SELECT * FROM ak_training_projects WHERE scoring_criteria ? 'criteria' AND jsonb_array_length(scoring_criteria->'criteria') > 3; ``` #### 4.2 页面加载性能 - [ ] 项目列表页面加载时间 - [ ] 项目详情页面加载时间 - [ ] 大量数据情况下的响应时间 ## 🚀 测试执行步骤 ### Step 1: 环境准备 1. 确保开发环境数据库连接正常 2. 备份当前数据库(可选) 3. 准备测试数据 ### Step 2: 前端测试 1. 启动开发服务器 2. 按照上述清单逐项测试 3. 记录任何异常或错误 ### Step 3: 数据库验证 1. 连接数据库 2. 执行验证SQL语句 3. 检查数据结构和内容 ### Step 4: 集成测试 1. 完整的创建-编辑-查看流程 2. 跨页面数据一致性验证 3. 用户体验测试 ## 📊 测试结果记录 ### 功能测试结果 | 功能项 | 状态 | 备注 | |--------|------|------| | 项目创建 | ⏳ | 待测试 | | 项目编辑 | ⏳ | 待测试 | | 项目详情 | ⏳ | 待测试 | | 作业创建 | ⏳ | 待测试 | | 作业详情 | ⏳ | 待测试 | ### 数据验证结果 | 验证项 | 状态 | 备注 | |--------|------|------| | 字段类型 | ⏳ | 待验证 | | JSON结构 | ⏳ | 待验证 | | 数据完整性 | ⏳ | 待验证 | ### 问题记录 - [ ] 问题1:[描述] - [ ] 问题2:[描述] ## 🔧 调试工具 ### 浏览器控制台命令 ```javascript // 检查页面数据 console.log('评分标准数据:', this.getScoringCriteria()); // 检查表单数据 console.log('表单数据:', this.formData); ``` ### 数据库调试SQL ```sql -- 查看最近创建的项目 SELECT * FROM ak_training_projects ORDER BY created_at DESC LIMIT 5; -- 查看特定项目的评分标准 SELECT title, scoring_criteria FROM ak_training_projects WHERE id = '[项目ID]'; ``` ## ✅ 完成标准 所有测试项都通过,包括: 1. 前端功能正常 2. 数据正确保存和加载 3. 新旧格式兼容 4. 性能满足要求 5. 用户体验良好 ## 🚨 问题升级标准 如果遇到以下情况,需要立即反馈: 1. 数据丢失或损坏 2. 功能完全无法使用 3. 严重性能问题 4. 安全相关问题 --- **测试负责人**: [填写] **测试时间**: [填写] **版本信息**: 评分标准JSON迁移 v1.0