Files
online_sys/frontend_智能开发/fix_brackets.py
KQL a7242f0c69 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>
2025-12-12 18:16:55 +08:00

138 lines
5.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
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_brackets', 'w', encoding='utf-8') as f:
f.write(content)
print("✅ 已创建备份: resumeInterviewMock.js.backup_brackets")
lines = content.split('\n')
# 分析括号匹配
def check_brackets(start_line, end_line):
"""检查指定范围内的括号匹配"""
bracket_stack = []
for i in range(start_line, min(end_line, len(lines))):
line = lines[i]
# 忽略字符串中的括号
# 简单处理,移除字符串内容
cleaned = re.sub(r'"[^"]*"', '""', line)
cleaned = re.sub(r"'[^']*'", "''", cleaned)
cleaned = re.sub(r'`[^`]*`', '``', cleaned)
for char in cleaned:
if char in '{[(':
bracket_stack.append((char, i))
elif char in '}])':
if not bracket_stack:
print(f"{i+1}行: 多余的关闭括号 '{char}'")
return False
open_bracket, open_line = bracket_stack.pop()
expected = {'(': ')', '[': ']', '{': '}'}
if expected[open_bracket] != char:
print(f"{i+1}行: 括号不匹配 '{open_bracket}'(第{open_line+1}行) vs '{char}'")
return False
if bracket_stack:
for bracket, line_num in bracket_stack:
print(f"{line_num+1}行: 未关闭的括号 '{bracket}'")
return False
return True
# 查找关键位置
print("\n查找关键结构位置...")
industries_start = None
industries_end = None
resumeTemplates_start = None
resumeTemplates_end = None
myResume_start = None
for i, line in enumerate(lines):
if 'const industries = [' in line:
industries_start = i
print(f"industries开始: 第{i+1}")
elif industries_start and not industries_end and line.strip() == '];':
industries_end = i
print(f"industries结束: 第{i+1}")
elif 'const resumeTemplates = {' in line:
resumeTemplates_start = i
print(f"resumeTemplates开始: 第{i+1}")
elif 'const myResume = {' in line:
myResume_start = i
print(f"myResume开始: 第{i+1}")
# resumeTemplates应该在myResume之前结束
if resumeTemplates_start and not resumeTemplates_end:
# 找到resumeTemplates的结束位置
for j in range(myResume_start-1, resumeTemplates_start, -1):
if lines[j].strip() == '};':
resumeTemplates_end = j
print(f"resumeTemplates结束: 第{j+1}")
break
# 检查各部分的括号匹配
print("\n检查industries数组括号匹配:")
if industries_start and industries_end:
if check_brackets(industries_start, industries_end + 1):
print(" ✅ industries数组括号匹配正确")
print("\n检查resumeTemplates对象括号匹配:")
if resumeTemplates_start and resumeTemplates_end:
if not check_brackets(resumeTemplates_start, resumeTemplates_end + 1):
print(" ❌ resumeTemplates对象括号不匹配")
# 尝试修复
print("\n尝试自动修复...")
# 检查第6514-6516行附近的问题
for i in range(6513, min(6517, len(lines))):
print(f"{i+1}行: {lines[i][:60]}")
# 如果第6516行是 "};"这应该是resumeTemplates的结束
if len(lines) > 6515 and lines[6515].strip() == '};':
print(" 找到resumeTemplates结束标记在第6516行")
resumeTemplates_end = 6515
print("\n检查myResume对象括号匹配:")
if myResume_start:
# 找到myResume的结束
myResume_end = None
for i in range(myResume_start + 1, min(myResume_start + 50, len(lines))):
if lines[i].strip() == '};':
myResume_end = i
print(f"myResume结束: 第{i+1}")
break
if myResume_end and check_brackets(myResume_start, myResume_end + 1):
print(" ✅ myResume对象括号匹配正确")
# 验证语法
print("\n验证修复后的语法...")
import subprocess
result = subprocess.run(['node', '-c', 'src/mocks/resumeInterviewMock.js'],
capture_output=True, text=True)
if result.returncode == 0:
print("✅ 语法验证通过!")
else:
print(f"❌ 仍有语法错误:")
# 只显示错误的第一行
error_lines = result.stderr.split('\n')
for line in error_lines[:5]:
print(f" {line}")
# 提取错误行号
match = re.search(r':(\d+)', result.stderr)
if match:
error_line = int(match.group(1))
print(f"\n错误发生在第 {error_line} 行附近:")
for i in range(max(0, error_line-3), min(len(lines), error_line+3)):
prefix = ">>> " if i == error_line-1 else " "
print(f"{prefix}{i+1}: {lines[i][:80]}")