4.0 KiB
4.0 KiB
🎯 立即执行:评分标准JSON迁移
✅ 状态确认
- 代码修复: 100% 完成 ✅
- 错误修复: TypeError已解决 ✅
- 文件验证: 所有文件无错误 ✅
- 迁移脚本: 已准备就绪 ✅
🚀 执行步骤 (约30分钟)
Step 1: 数据库迁移 (15分钟)
# 在 PowerShell 中执行,当前目录已在 h:\blews\akmon
psql -h [数据库主机] -U [用户名] -d [数据库名] -f migrate_scoring_criteria_simple.sql
# 常见示例:
# psql -h localhost -U postgres -d akmon_dev -f migrate_scoring_criteria_simple.sql
# 或者使用 Supabase:
# psql "postgresql://[user]:[pass]@[host]:5432/[db]" -f migrate_scoring_criteria_simple.sql
迁移内容:
- 创建备份表
ak_training_projects_backup_20250611 - 转换
scoring_criteria字段为 JSONB 格式 - 添加默认JSON结构给缺失数据的项目
- 创建性能优化索引
- 验证迁移结果
Step 2: 功能验证 (15分钟)
2.1 前端测试 (10分钟)
-
教师端
访问: /pages/sport/teacher/project-create 操作: 创建新项目,添加评分标准 验证: 保存成功,数据库包含JSON格式数据 访问: /pages/sport/teacher/create-assignment 操作: 选择训练项目 验证: 项目列表加载,难度等级样式正确显示 -
学生端
访问: /pages/sport/student/assignment-detail 操作: 查看作业详情 验证: 评分标准正确显示
2.2 数据验证 (5分钟)
-- 验证迁移成功
SELECT
COUNT(*) as total_projects,
COUNT(CASE WHEN scoring_criteria ? 'criteria' THEN 1 END) as with_json_criteria,
COUNT(CASE WHEN jsonb_typeof(scoring_criteria->'criteria') = 'array' THEN 1 END) as valid_structure
FROM ak_training_projects;
-- 查看示例数据
SELECT title, scoring_criteria->'criteria' as criteria
FROM ak_training_projects
WHERE scoring_criteria IS NOT NULL
LIMIT 3;
📊 预期结果
数据库层面
总项目数: N
有JSON评分标准的项目: N
有效JSON结构的项目: N
✅ 迁移成功率: 100%
前端层面
- ✅ 项目创建页面:评分标准输入和保存正常
- ✅ 项目编辑页面:数据加载和更新正常
- ✅ 作业创建页面:项目选择和难度显示正常
- ✅ 作业详情页面:评分标准显示正常
JSON数据结构
{
"criteria": [
{"min_score": 90, "max_score": 100, "description": "优秀:表现卓越"},
{"min_score": 80, "max_score": 89, "description": "良好:符合要求"},
{"min_score": 70, "max_score": 79, "description": "及格:基本达标"},
{"min_score": 0, "max_score": 69, "description": "不及格:需要改进"}
],
"scoring_method": "comprehensive",
"weight_distribution": {"technique": 0.4, "effort": 0.3, "improvement": 0.3}
}
🛠️ 应急处理
如果迁移失败
-- 回滚到迁移前状态
DROP TABLE ak_training_projects;
ALTER TABLE ak_training_projects_backup_20250611 RENAME TO ak_training_projects;
如果前端有问题
- 检查浏览器控制台错误
- 验证Vue DevTools中的组件状态
- 确认API请求和响应数据格式
📞 技术支持
调试命令
// 浏览器控制台
console.log('getDifficultyClass function:', this.getDifficultyClass);
console.log('Selected project:', this.selectedProject);
-- 数据库调试
SELECT column_name, data_type FROM information_schema.columns
WHERE table_name = 'ak_training_projects' AND column_name = 'scoring_criteria';
✅ 完成确认
迁移成功后,您应该看到:
- 数据库迁移脚本执行成功,无错误
- 所有项目都有有效的JSON格式评分标准
- 前端页面正常加载和显示
- 新建项目使用JSON结构保存
- 难度等级样式正确应用
⚡ 现在就可以开始执行迁移了!所有准备工作已完成!
项目状态: 🟢 Ready for Production
预计完成时间: 30分钟
风险等级: 🟢 低风险(有完整备份和回滚方案)