主要内容: - 包含12个产业的完整教务系统前端代码 - 智能启动脚本 (start-industry.sh) - 可视化产业导航页面 (index.html) - 项目文档 (README.md) 优化内容: - 删除所有node_modules和.yoyo文件夹,从7.5GB减少到2.7GB - 添加.gitignore文件避免上传不必要的文件 - 自动依赖管理和智能启动系统 产业列表: 1. 文旅产业 (5150) 2. 智能制造 (5151) 3. 智能开发 (5152) 4. 财经商贸 (5153) 5. 视觉设计 (5154) 6. 交通物流 (5155) 7. 大健康 (5156) 8. 土木水利 (5157) 9. 食品产业 (5158) 10. 化工产业 (5159) 11. 能源产业 (5160) 12. 环保产业 (5161) 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
138 lines
5.0 KiB
Python
138 lines
5.0 KiB
Python
#!/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]}") |