Initial commit: 教务系统在线平台
- 包含4个产业方向的前端项目:智能开发、智能制造、大健康、财经商贸 - 已清理node_modules、.yoyo等大文件,项目大小从2.6GB优化至631MB - 配置完善的.gitignore文件 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
108
frontend_大健康/complete_ranking_data.py
Normal file
108
frontend_大健康/complete_ranking_data.py
Normal file
@@ -0,0 +1,108 @@
|
||||
#!/usr/bin/env python3
|
||||
"""补充完整的智能制造班级排名数据(10名学生)"""
|
||||
|
||||
import json
|
||||
import re
|
||||
from datetime import datetime
|
||||
|
||||
def load_manufacturing_data():
|
||||
"""加载智能制造个人档案数据"""
|
||||
with open('网页未导入数据/智能制造产业/智能制造个人档案.json', 'r', encoding='utf-8') as f:
|
||||
return json.load(f)
|
||||
|
||||
def load_avatar_list():
|
||||
"""加载头像列表"""
|
||||
with open('网页未导入数据/头像列表.json', 'r', encoding='utf-8') as f:
|
||||
avatars = json.load(f)
|
||||
avatar_urls = []
|
||||
for avatar in avatars[:20]:
|
||||
url = avatar['file_url']
|
||||
base_url = url.split('?')[0] if '?' in url else url
|
||||
avatar_urls.append(base_url)
|
||||
return avatar_urls
|
||||
|
||||
def transform_to_top_students(manufacturing_data, avatar_urls):
|
||||
"""转换为完整的topStudents格式(10名学生)"""
|
||||
top_students = []
|
||||
|
||||
for idx, student in enumerate(manufacturing_data[:10]): # 取前10名
|
||||
top_student = {
|
||||
"rank": int(student["班级排名"]),
|
||||
"studentId": student["学号"],
|
||||
"studentName": student["学员名称"],
|
||||
"name": student["学员名称"],
|
||||
"avatar": avatar_urls[idx % len(avatar_urls)],
|
||||
"score": int(student["学分"]),
|
||||
"credits": int(student["学分"]),
|
||||
"school": student["学校名称"],
|
||||
"major": student["专业名称"],
|
||||
"isMe": idx == 1 # 第2名(王强)是当前用户
|
||||
}
|
||||
top_students.append(top_student)
|
||||
|
||||
return top_students
|
||||
|
||||
def update_dashboard_statistics():
|
||||
"""更新mockData.js中的dashboardStatistics.ranking部分为完整的10名学生"""
|
||||
# 加载数据
|
||||
manufacturing_data = load_manufacturing_data()
|
||||
avatar_urls = load_avatar_list()
|
||||
|
||||
# 读取现有文件
|
||||
with open('src/data/mockData.js', 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
# 备份
|
||||
backup_time = datetime.now().strftime('%Y%m%d_%H%M%S')
|
||||
with open(f'src/data/mockData.js.backup_{backup_time}_complete', 'w', encoding='utf-8') as f:
|
||||
f.write(content)
|
||||
|
||||
# 生成完整的10名学生的topStudents数据
|
||||
top_students = transform_to_top_students(manufacturing_data, avatar_urls)
|
||||
|
||||
# 转换为JavaScript格式
|
||||
top_students_str = json.dumps(top_students, ensure_ascii=False, indent=6)
|
||||
# 去掉属性名的引号
|
||||
top_students_str = re.sub(r'"(\w+)":', r'\1:', top_students_str)
|
||||
|
||||
# 替换dashboardStatistics.ranking.topStudents
|
||||
# 使用更精确的模式匹配,确保替换整个数组
|
||||
pattern = r'(dashboardStatistics[^}]*?ranking:\s*{[^}]*?topStudents:\s*\[)[^\]]*(\],)'
|
||||
|
||||
def replace_dashboard_top_students(match):
|
||||
return match.group(1) + '\n' + top_students_str + '\n ' + match.group(2)
|
||||
|
||||
content = re.sub(pattern, replace_dashboard_top_students, content, flags=re.DOTALL)
|
||||
|
||||
# 更新myRank为王强(第2名)的数据
|
||||
current_student = manufacturing_data[1] # 第2名 王强
|
||||
|
||||
# 更新dashboardStatistics.ranking.myRank
|
||||
pattern = r'(dashboardStatistics[^}]*?ranking:\s*{[^}]*?myRank:\s*{[^}]*?)rank:\s*\d+'
|
||||
content = re.sub(pattern, rf'\1rank: 2', content, flags=re.DOTALL)
|
||||
|
||||
pattern = r'(dashboardStatistics[^}]*?ranking:\s*{[^}]*?myRank:\s*{[^}]*?)score:\s*\d+'
|
||||
if 'score:' not in content:
|
||||
# 如果没有score字段,在rank后添加
|
||||
pattern = r'(dashboardStatistics[^}]*?ranking:\s*{[^}]*?myRank:\s*{[^}]*?rank:\s*\d+,)'
|
||||
content = re.sub(pattern, rf'\1\n score: {current_student["学分"]},', content, flags=re.DOTALL)
|
||||
else:
|
||||
content = re.sub(pattern, rf'\1score: {current_student["学分"]}', content, flags=re.DOTALL)
|
||||
|
||||
# 写回文件
|
||||
with open('src/data/mockData.js', 'w', encoding='utf-8') as f:
|
||||
f.write(content)
|
||||
|
||||
print(f"✅ 已更新 dashboardStatistics.ranking 为完整的智能制造数据")
|
||||
print(f" - topStudents: {len(top_students)} 条数据")
|
||||
print(f" - 当前用户: {current_student['学员名称']} (第{current_student['班级排名']}名)")
|
||||
print(f" - 备份文件: mockData.js.backup_{backup_time}_complete")
|
||||
print("\n学生列表:")
|
||||
for student in top_students:
|
||||
me_flag = " (当前用户)" if student["isMe"] else ""
|
||||
print(f" {student['rank']}. {student['name']} - {student['score']}分{me_flag}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("🚀 开始补充完整的智能制造班级排名数据...")
|
||||
update_dashboard_statistics()
|
||||
print("🎉 完成!")
|
||||
Reference in New Issue
Block a user