141 lines
4.0 KiB
Markdown
141 lines
4.0 KiB
Markdown
# 🎯 立即执行:评分标准JSON迁移
|
||
|
||
## ✅ 状态确认
|
||
- **代码修复**: 100% 完成 ✅
|
||
- **错误修复**: TypeError已解决 ✅
|
||
- **文件验证**: 所有文件无错误 ✅
|
||
- **迁移脚本**: 已准备就绪 ✅
|
||
|
||
## 🚀 执行步骤 (约30分钟)
|
||
|
||
### Step 1: 数据库迁移 (15分钟)
|
||
```powershell
|
||
# 在 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分钟)
|
||
1. **教师端**
|
||
```
|
||
访问: /pages/sport/teacher/project-create
|
||
操作: 创建新项目,添加评分标准
|
||
验证: 保存成功,数据库包含JSON格式数据
|
||
|
||
访问: /pages/sport/teacher/create-assignment
|
||
操作: 选择训练项目
|
||
验证: 项目列表加载,难度等级样式正确显示
|
||
```
|
||
|
||
2. **学生端**
|
||
```
|
||
访问: /pages/sport/student/assignment-detail
|
||
操作: 查看作业详情
|
||
验证: 评分标准正确显示
|
||
```
|
||
|
||
#### 2.2 数据验证 (5分钟)
|
||
```sql
|
||
-- 验证迁移成功
|
||
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数据结构
|
||
```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}
|
||
}
|
||
```
|
||
|
||
## 🛠️ 应急处理
|
||
|
||
### 如果迁移失败
|
||
```sql
|
||
-- 回滚到迁移前状态
|
||
DROP TABLE ak_training_projects;
|
||
ALTER TABLE ak_training_projects_backup_20250611 RENAME TO ak_training_projects;
|
||
```
|
||
|
||
### 如果前端有问题
|
||
1. 检查浏览器控制台错误
|
||
2. 验证Vue DevTools中的组件状态
|
||
3. 确认API请求和响应数据格式
|
||
|
||
## 📞 技术支持
|
||
|
||
### 调试命令
|
||
```javascript
|
||
// 浏览器控制台
|
||
console.log('getDifficultyClass function:', this.getDifficultyClass);
|
||
console.log('Selected project:', this.selectedProject);
|
||
```
|
||
|
||
```sql
|
||
-- 数据库调试
|
||
SELECT column_name, data_type FROM information_schema.columns
|
||
WHERE table_name = 'ak_training_projects' AND column_name = 'scoring_criteria';
|
||
```
|
||
|
||
## ✅ 完成确认
|
||
|
||
迁移成功后,您应该看到:
|
||
- [x] 数据库迁移脚本执行成功,无错误
|
||
- [x] 所有项目都有有效的JSON格式评分标准
|
||
- [x] 前端页面正常加载和显示
|
||
- [x] 新建项目使用JSON结构保存
|
||
- [x] 难度等级样式正确应用
|
||
|
||
---
|
||
|
||
**⚡ 现在就可以开始执行迁移了!所有准备工作已完成!**
|
||
|
||
**项目状态**: 🟢 Ready for Production
|
||
**预计完成时间**: 30分钟
|
||
**风险等级**: 🟢 低风险(有完整备份和回滚方案)
|