#!/usr/bin/env python3 # -*- coding: utf-8 -*- import json import re def escape_for_js(text): """转义文本以适合在JavaScript字符串中使用""" # 转义反斜杠(必须首先做) text = text.replace('\\', '\\\\') # 转义换行符 text = text.replace('\n', '\\n') # 转义双引号 text = text.replace('"', '\\"') # 转义单引号 text = text.replace("'", "\\'") return text def main(): # 读取完整数据 with open('complete_project_data.json', 'r', encoding='utf-8') as f: complete_data = json.load(f) # 读取当前的mock文件 with open('src/mocks/projectLibraryMock.js', 'r', encoding='utf-8') as f: mock_content = f.read() # 为每个项目更新完整的详情 updates_made = 0 for project in complete_data: project_id = project['id'] name = project['name'] print(f"\n处理项目 {project_id}: {name}") print(f" 流程数: {project['process_count']}, 技术点数: {project['keypoints_count']}") # 转义内容 overview = escape_for_js(project['overview']) process = escape_for_js(project['process']) keypoints = escape_for_js(project['keypoints']) # 构建查找项目的正则表达式 # 查找项目在详情数组中(getMockProjectDetail函数中) pattern = rf'(\{{\s*"id":\s*{project_id},\s*"name":\s*"[^"]+",.*?"unit":\s*"[^"]+",)\s*"overview":\s*"[^"]*",\s*"process":\s*"[^"]*",\s*"keyPoints":\s*"[^"]*"' # 创建替换内容 replacement = rf'\1\n "overview": "{overview}",\n "process": "{process}",\n "keyPoints": "{keypoints}"' # 执行替换 new_content, count = re.subn(pattern, replacement, mock_content, flags=re.DOTALL) if count > 0: mock_content = new_content updates_made += count print(f" ✅ 更新成功") else: print(f" ⚠️ 未找到匹配") # 保存更新后的文件 with open('src/mocks/projectLibraryMock.js', 'w', encoding='utf-8') as f: f.write(mock_content) print(f"\n✅ 完成!共更新了 {updates_made} 处项目详情") # 验证JavaScript语法 import subprocess result = subprocess.run(['node', '-c', 'src/mocks/projectLibraryMock.js'], capture_output=True, text=True) if result.returncode == 0: print("✅ JavaScript语法检查通过") else: print(f"❌ JavaScript语法错误: {result.stderr}") if __name__ == "__main__": main()