#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 更新mockData.js中的bigScreenData部分 """ import json import re # 读取生成的大屏数据 with open('分析报告/generated_bigscreen_data.json', 'r', encoding='utf-8') as f: bigscreen_data = json.load(f) # 读取mockData.js文件 with open('src/utils/mockData.js', 'r', encoding='utf-8') as f: content = f.read() # 构建新的bigScreenData JavaScript对象 def build_grade_distribution_js(grades): """构建成绩分布数组的JavaScript代码""" lines = [] for grade in grades: lines.append(f" {{ grade: '{grade['grade']}', count: {grade['count']}, color: '{grade['color']}' }},") return '\n'.join(lines) def build_ability_matrix_js(matrix): """构建能力矩阵的JavaScript代码""" dimensions = ", ".join([f"'{d}'" for d in matrix['dimensions']]) students_lines = [] for student in matrix['students']: values = ", ".join([str(v) for v in student['values']]) students_lines.append(f" {{ name: '{student['name']}', values: [{values}], color: '{student['color']}' }},") students_js = '\n'.join(students_lines) return f""" dimensions: [{dimensions}], students: [ {students_js} ]""" def build_practice_stats_js(stats): """构建实践统计的JavaScript代码""" lines = [] for stat in stats: lines.append(f" {{ label: '{stat['label']}', value: {stat['value']}, icon: '{stat['icon']}', trend: '{stat['trend']}' }},") return '\n'.join(lines) def build_real_time_data_js(data): """构建实时数据的JavaScript代码""" return f""" studentCount: {data['studentCount']}, evaluationCount: {data['evaluationCount']}, completionRate: {data['completionRate']}, averageScore: {data['averageScore']}""" # 组装完整的bigScreenData grade_distribution_js = build_grade_distribution_js(bigscreen_data['gradeDistribution']) ability_matrix_js = build_ability_matrix_js(bigscreen_data['abilityMatrix']) practice_stats_js = build_practice_stats_js(bigscreen_data['practiceStats']) real_time_data_js = build_real_time_data_js(bigscreen_data['realTimeData']) new_bigscreen_data = f"""export const bigScreenData = {{ // 成绩分布数据 gradeDistribution: [ {grade_distribution_js} ], // 能力矩阵数据(三角形雷达图) abilityMatrix: {{ {ability_matrix_js} }}, // 实习统计数据 practiceStats: [ {practice_stats_js} ], // 实时数据更新 realTimeData: {{ {real_time_data_js} }} }}""" # 使用正则表达式替换bigScreenData部分 pattern = r'export const bigScreenData = \{[\s\S]*?\n\}' replacement = new_bigscreen_data # 执行替换 new_content = re.sub(pattern, replacement, content) # 写回文件 with open('src/utils/mockData.js', 'w', encoding='utf-8') as f: f.write(new_content) print("✅ bigScreenData更新完成!") print(f" - 成绩分布: {len(bigscreen_data['gradeDistribution'])}个档次") print(f" - 能力矩阵: {len(bigscreen_data['abilityMatrix']['dimensions'])}个维度") print(f" - 实践统计: {len(bigscreen_data['practiceStats'])}项指标") print(f" - 实时数据: 学生{bigscreen_data['realTimeData']['studentCount']}人,完成率{bigscreen_data['realTimeData']['completionRate']}%")