Files
jiaowu-test/update_job_levels_v2.py
KQL 561d5c286d feat: 实现日历课程点击跳转到直播间功能
- 添加日历课程详情弹窗的点击跳转功能
- 公共课直播间和课程直播间支持URL参数自动选中课程
- 优化岗位详情页面样式,复用简洁卡片样式
- 为岗位详情标题添加图标
- 调整不同类型课程的跳转逻辑

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-11 14:14:45 +08:00

200 lines
7.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 json
import os
import re
from datetime import datetime
# 读取岗位等级数据
def load_job_levels():
with open('网页未导入数据/文旅产业/岗位等级.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# 创建岗位名称到等级的映射
job_levels_map = {}
for item in data:
job_name = item['❌岗位名称']
level = item['前端查询名称']
job_levels_map[job_name] = level
return job_levels_map
# 更新resumeInterviewMock.js文件 - 添加level字段
def update_resume_interview_mock(job_levels_map):
file_path = 'src/mocks/resumeInterviewMock.js'
# 备份文件
backup_path = f'{file_path}.backup_{datetime.now().strftime("%Y%m%d_%H%M%S")}_levels'
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
with open(backup_path, 'w', encoding='utf-8') as f:
f.write(content)
print(f"已备份: {backup_path}")
# 更新内容
updated_count = 0
lines = content.split('\n')
new_lines = []
i = 0
while i < len(lines):
line = lines[i]
new_lines.append(line)
# 查找title字段
if 'title:' in line and 'positions' not in line:
# 提取岗位名称
match = re.search(r'title:\s*["\']([^"\']+)["\']', line)
if match:
position_name = match.group(1)
if position_name in job_levels_map:
level = job_levels_map[position_name]
# 检查下一行是否已经有level字段
has_level = False
for j in range(i+1, min(i+5, len(lines))):
if 'level:' in lines[j]:
has_level = True
# 更新现有的level字段
lines[j] = re.sub(
r'level:\s*["\'][^"\']*["\']',
f'level: "{level}"',
lines[j]
)
updated_count += 1
print(f"更新: {position_name} -> {level}")
break
# 如果没有level字段添加一个
if not has_level:
# 在title后面添加level字段
indent = len(line) - len(line.lstrip())
new_level_line = ' ' * indent + f'level: "{level}",'
# 找到合适的位置插入在title之后
new_lines.append(new_level_line)
updated_count += 1
print(f"添加: {position_name} -> {level}")
i += 1
# 写回文件
with open(file_path, 'w', encoding='utf-8') as f:
f.write('\n'.join(new_lines))
print(f"resumeInterviewMock.js 更新完成,共更新 {updated_count}")
# 更新companyJobsNew.json文件
def update_company_jobs(job_levels_map):
file_path = 'src/data/companyJobsNew.json'
# 备份文件
backup_path = f'{file_path}.backup_{datetime.now().strftime("%Y%m%d_%H%M%S")}_levels'
with open(file_path, 'r', encoding='utf-8') as f:
data = json.load(f)
with open(backup_path, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
print(f"已备份: {backup_path}")
# 更新数据
updated_count = 0
added_count = 0
for company in data:
if 'jobs' in company:
for job in company['jobs']:
position_name = job.get('positionName', '')
if position_name in job_levels_map:
new_level = job_levels_map[position_name]
if 'jobLevel' in job:
old_level = job['jobLevel']
if old_level != new_level:
job['jobLevel'] = new_level
updated_count += 1
print(f"更新: {position_name}: {old_level} -> {new_level}")
else:
job['jobLevel'] = new_level
added_count += 1
print(f"添加: {position_name} -> {new_level}")
# 写回文件
with open(file_path, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
print(f"companyJobsNew.json 更新完成,更新 {updated_count} 处,新增 {added_count}")
# 检查mockData.js中的项目库数据
def check_mock_data_projects(job_levels_map):
file_path = 'src/data/mockData.js'
print("检查mockData.js中的项目库数据...")
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
# 查找所有引用的岗位
found_positions = set()
# 查找relatedPositions和targetPositions中的岗位
pattern = r'["\']([^"\']+)["\']'
# 查找包含positions的行
lines = content.split('\n')
for i, line in enumerate(lines):
if 'relatedPositions:' in line or 'targetPositions:' in line:
# 查找数组内容
j = i
bracket_count = 0
in_array = False
while j < len(lines):
if '[' in lines[j]:
in_array = True
bracket_count += lines[j].count('[')
if in_array:
matches = re.findall(pattern, lines[j])
for match in matches:
if match in job_levels_map:
found_positions.add(match)
bracket_count -= lines[j].count(']')
if in_array and bracket_count <= 0:
break
j += 1
print(f"在项目库中找到 {len(found_positions)} 个不同的岗位引用:")
for pos in sorted(found_positions):
print(f" - {pos}: {job_levels_map[pos]}")
# 主函数
def main():
print("=" * 50)
print("开始更新岗位等级数据 V2")
print("=" * 50)
# 加载岗位等级映射
job_levels_map = load_job_levels()
print(f"已加载 {len(job_levels_map)} 个岗位等级映射")
# 显示等级分布
level_counts = {}
for level in job_levels_map.values():
level_counts[level] = level_counts.get(level, 0) + 1
print("\n岗位等级分布:")
for level, count in level_counts.items():
print(f" {level}: {count} 个岗位")
print("\n" + "=" * 50)
# 更新各个文件
print("\n1. 更新简历面试题数据...")
update_resume_interview_mock(job_levels_map)
print("\n2. 更新公司岗位数据...")
update_company_jobs(job_levels_map)
print("\n3. 检查项目库数据...")
check_mock_data_projects(job_levels_map)
print("\n" + "=" * 50)
print("所有更新完成!")
print("=" * 50)
if __name__ == "__main__":
main()