#!/usr/bin/env python3 # -*- coding: utf-8 -*- def safe_escape_js_string(text): """安全地转义JavaScript字符串""" # 转义反斜杠(必须首先执行) text = text.replace('\\', '\\\\') # 转义双引号 text = text.replace('"', '\\"') # 转义换行符 text = text.replace('\n', '\\n') # 转义回车符 text = text.replace('\r', '\\r') # 转义制表符 text = text.replace('\t', '\\t') return text def main(): # 读取BIM工程师的修改版简历 with open('网页未导入数据/土木水利产业/土木水利修改版简历/BIM工程师.md', 'r', encoding='utf-8') as f: bim_content = f.read() # 安全转义内容 escaped_content = safe_escape_js_string(bim_content) # 读取当前的resumeInterviewMock.js文件 with open('src/mocks/resumeInterviewMock.js', 'r', encoding='utf-8') as f: js_content = f.read() # 找到BIM工程师的起始位置 bim_start = js_content.find('"BIM工程师": {') if bim_start == -1: print("未找到BIM工程师条目") return # 找到这个条目的结束位置(下一个条目开始前的位置) # 查找下一个岗位条目或者resumeTemplates的结束 bim_end = bim_start brace_count = 0 i = bim_start # 找到第一个左大括号 while i < len(js_content) and js_content[i] != '{': i += 1 # 从左大括号开始计算嵌套层级 while i < len(js_content): if js_content[i] == '{': brace_count += 1 elif js_content[i] == '}': brace_count -= 1 if brace_count == 0: bim_end = i + 1 break i += 1 if bim_end <= bim_start: print("未找到BIM工程师条目的结束位置") return print(f"找到BIM工程师条目位置: {bim_start} - {bim_end}") # 构建新的BIM工程师条目 new_bim_entry = f'''\"BIM工程师\": {{ \"level\": \"基础岗\", \"category\": \"土木水利产业\", \"industry\": \"土木水利产业\", \"group\": \"设计与规划类\", \"experience\": \"实习经验\", \"avatar\": \"https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_position_avatar/recuPFY77UvzKs.jpeg\", \"content\": {{ \"original\": \"# 对应岗位:BIM工程师\\n\\n# 一、项目经历\\n\\n### (一)项目名称:重庆七层住宅楼 BIM 设计阶段协同深化项目\\n\\n### (二)实习岗位:BIM工程师助理\\n\\n### (三)实习单位:XXX\\n\\n### (四)实习时间:XXX\\n\\n### (五)岗位职责:\\n\\n1. 协助完成设计阶段BIM执行计划(BEP)的整理与实施,参与通用数据环境(CDE)平台的流程学习,掌握模型精度、参数规范和信息交换机制,提升协同建模意识。\\n2. 使用Revit参与建筑、结构与机电的初始模型搭建与修改,协助完成轴网、楼层高度、构件命名等基础校核,确保模型在标高与坐标上的一致性。\\n3. 参与管线综合与净高分析,协助在走廊、卫生间等空间进行净高控制与管线路由比选,学习如何在初步设计阶段处理多专业冲突。\\n4. 使用Navisworks参与碰撞检查,整理问题清单与BCF任务单,跟进设计整改并记录修改结果,学习设计问题闭环的完整流程。\\n5. 协助完成模型快照、施工图纸与项目报告的整理与输出,参与阶段性汇报资料编制,确保项目信息记录完整、成果表达清晰。\\n\\n# 二、专业技能\\n\\n### (一)核心能力\\n\\n1. 掌握BIM建模基础技能,能够在导师指导下使用Revit参与建筑、结构、机电模型的搭建与优化,理解LOD等级和信息深度要求。\\n2. 熟悉BIM执行计划(BEP)与通用数据环境(CDE)的流程与应用,能够参与模型精度控制、文件版本管理和跨专业信息交换。\\n3. 具备管线综合与净高控制的基础能力,能够协助开展走廊与卫生间吊顶区域的空间优化,提出初步的净高调整方案。\\n4. 能使用Navisworks进行基础的碰撞检查与任务分配,掌握问题标注、整改跟进与复检确认,理解BCF任务闭环管理流程。\\n5. 具备施工图纸输出能力,能够在导师指导下完成模型视图整理与图纸细化,理解图模一致的工程要求。\\n6. 具备工程文档与项目报告编制能力,能够参与整理设计条件、版本台账及阶段性成果文件,确保信息传递准确及时。\\n7. 拥有良好的跨专业协作与沟通意识,能够配合建筑、结构与机电团队进行协同工作,提升多专业协调经验。\\n\\n### (二)复合能力\\n\\n1. 智能建造认知: 关注并了解BIM技术在土木工程设计、施工、管理中的应用价值;认识智慧工地(如物联网监测、无人机测绘、信息化管理平台)及新型建造方式(如装配式建筑)的发展趋势与应用场景。\\n2. 设计制图应用能力: 掌握建筑设计及室内设计基本流程与规范要求;熟练运用CAD软件进行工程图纸(建筑、结构、设备)识图、绘制与基础修改;具备使用3DMax/SketchUp等软件进行基础建筑模型创建与效果表达的能力。\\n3. 工程材料与建筑结构认知: 熟悉常用建筑材料(混凝土、钢材、砌体、防水材料等)的物理力学性能、应用范围及质量控制要点;了解建筑结构体系(框架、剪力墙等)基本原理及受力特点。\\n4. 土木行业认知: 理解土木工程行业特性,熟悉行业主要规范标准体系与发展前景;\\n5. 全流程技术沟通: 具备清晰理解项目需求(设计意图、规范要求、甲方诉求)并进行有效技术沟通的能力;能够与设计、施工、监理、供应商等多方进行顺畅协作,准确传达信息并推动问题解决;具备基础的工程报告撰写与汇报能力。\\n6. 工程管理意识: 了解工程项目管理核心环节,包括工程造价估算与成本控制基础、招投标流程要点、施工进度计划(横道图/网络图)编制与监控方法、工程资料管理要求;具备初步的合同履约与风险防范意识。\\n7. 现场管理基础:具备基础施工现场问题识别与协调处理意识;理解施工组织设计/施工方案的核心内容。\\n8. 工程检测与质量控制: 理解工程材料检测、施工过程质量监控及竣工验收的流程与规范;掌握常用检测仪器(如回弹仪、靠尺、水平仪等)的基础操作及关键参数(强度、平整度、垂直度等)的解读;具备初步的工程质量问题分析与预防意识。\\n9. 施工技术基础能力: 了解建筑工程主体结构(土方、基础、钢筋、模板、混凝土)及关键安装工程(水电、暖通)的主要施工工艺、技术要点及质量验收标准;\\n\\n# 三、个人评价\\n\\n在该项目中,我系统学习了BIM在住宅楼设计阶段的应用,逐步掌握了从模型搭建到图纸输出的完整流程。我熟练使用Revit进行建模,并能配合使用Navisworks进行碰撞检查和问题闭环管理,积累了多专业协同与模型优化的实践经验。同时,我在项目报告与成果资料编制中提升了信息表达与版本控制能力。作为大专毕业生,我具备较强的学习与执行力,能够快速理解项目要求并配合团队完成协同任务,期待在未来岗位中不断提升建模深度与项目管理能力,成长为能够独立负责专业模块的BIM工程师。\", \"modified\": \"{escaped_content}\" }} }}''' # 替换内容 new_js_content = js_content[:bim_start] + new_bim_entry + js_content[bim_end:] # 保存修复后的文件 with open('src/mocks/resumeInterviewMock.js', 'w', encoding='utf-8') as f: f.write(new_js_content) print("已成功替换BIM工程师的完整条目") # 验证语法 import subprocess try: result = subprocess.run(['node', '-c', 'src/mocks/resumeInterviewMock.js'], capture_output=True, text=True) if result.returncode == 0: print("✅ JavaScript语法检查通过") else: print("❌ JavaScript语法错误:") print(result.stderr) except Exception as e: print("无法验证JavaScript语法:", e) if __name__ == "__main__": main()