Files
online_sys/frontend_财经商贸/fix_all_structure.py

100 lines
3.7 KiB
Python
Raw Permalink Normal View History

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import re
print("正在修复文件结构...")
# 读取文件
with open('src/mocks/resumeInterviewMock.js', 'r', encoding='utf-8') as f:
content = f.read()
# 备份原始文件
with open('src/mocks/resumeInterviewMock.js.backup_structure', 'w', encoding='utf-8') as f:
f.write(content)
print("✅ 已创建备份文件: src/mocks/resumeInterviewMock.js.backup_structure")
# 查找所有在 }] 后面出现的孤立的 compound_skills 或其他内容
# 这些是破坏结构的多余内容
issues_found = 0
# 第一步查找并删除所有多余的compound_skills等内容
# 在每个行业数组结束后,如果有多余的内容,删除它们
pattern = r'(\}\s*\}\s*\],)\s*compound_skills:\s*\[[^\]]*?\],\s*personal_summary:\s*"[^"]*?"\s*\}\s*\}\s*\],\s*("[\w\u4e00-\u9fff]+": \[)'
matches = re.findall(pattern, content)
if matches:
print(f"发现 {len(matches)} 处多余的compound_skills结构")
content = re.sub(pattern, r'\1\n \2', content)
issues_found += len(matches)
# 第二步:查找并删除孤立的数组元素
# 在 ], 后面直接跟着字符串的情况
pattern2 = r'(\],)\s*("[^"]+",[\s\S]*?)\],\s*personal_summary:'
matches2 = re.findall(pattern2, content)
if matches2:
print(f"发现 {len(matches2)} 处孤立的数组元素")
# 只保留第一个 ],
content = re.sub(pattern2, r'\1', content)
issues_found += len(matches2)
# 第三步确保resumeTemplates正确结束
# 检查第6516行附近的结构
lines = content.split('\n')
for i in range(len(lines)):
if i > 6510 and i < 6520:
# 在resumeTemplates结束的地方确保有正确的分号
if lines[i].strip() == '};' and i == 6515:
# 这是正确的
pass
elif lines[i].strip() == '}' and i == 6515:
lines[i] = ' };'
print(f"修复了第 {i+1} 行:添加了分号")
issues_found += 1
content = '\n'.join(lines)
# 写回文件
with open('src/mocks/resumeInterviewMock.js', 'w', encoding='utf-8') as f:
f.write(content)
print(f"\n✅ 修复完成,共修复了 {issues_found} 处问题")
# 验证文件语法
import subprocess
result = subprocess.run(['node', '-c', 'src/mocks/resumeInterviewMock.js'],
capture_output=True, text=True)
if result.returncode == 0:
print("✅ 文件语法验证通过!")
# 测试数据加载
test_code = """
const { resumeInterviewMockData } = require('./src/mocks/resumeInterviewMock.js');
console.log('Industries数量:', resumeInterviewMockData.industries.length);
console.log('ResumeTemplates键数量:', Object.keys(resumeInterviewMockData.resumeTemplates).length);
const camping = resumeInterviewMockData.resumeTemplates['露营地运营'];
console.log('露营地运营模板数量:', camping ? camping.length : 0);
"""
with open('test_load.js', 'w') as f:
f.write(test_code)
result2 = subprocess.run(['node', 'test_load.js'], capture_output=True, text=True)
if result2.returncode == 0:
print("\n数据加载测试:")
print(result2.stdout)
else:
print(f"\n数据加载失败: {result2.stderr}")
else:
print(f"❌ 文件仍有语法错误:\n{result.stderr}")
print("\n尝试定位错误位置...")
# 提取错误行号
import re
match = re.search(r':(\d+)', result.stderr)
if match:
line_num = int(match.group(1))
print(f"错误在第 {line_num} 行附近:")
for i in range(max(0, line_num-3), min(len(lines), line_num+3)):
prefix = ">>> " if i == line_num-1 else " "
print(f"{prefix}{i+1}: {lines[i][:100]}")