88 lines
3.2 KiB
Python
88 lines
3.2 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
import json
|
|||
|
|
import re
|
|||
|
|
|
|||
|
|
def verify_positions_update():
|
|||
|
|
"""验证所有项目的岗位列表是否已正确更新"""
|
|||
|
|
|
|||
|
|
# 读取化工项目案例数据
|
|||
|
|
with open('网页未导入数据/化工产业/化工项目案例.json', 'r', encoding='utf-8') as f:
|
|||
|
|
source_data = json.load(f)
|
|||
|
|
|
|||
|
|
# 读取更新后的mock文件
|
|||
|
|
with open('src/mocks/projectLibraryMock.js', 'r', encoding='utf-8') as f:
|
|||
|
|
mock_content = f.read()
|
|||
|
|
|
|||
|
|
print("=" * 80)
|
|||
|
|
print("岗位列表更新验证报告")
|
|||
|
|
print("=" * 80)
|
|||
|
|
|
|||
|
|
all_correct = True
|
|||
|
|
total_positions_expected = 0
|
|||
|
|
total_positions_found = 0
|
|||
|
|
|
|||
|
|
for i, project in enumerate(source_data, 1):
|
|||
|
|
project_name = project.get('案例名称', '')
|
|||
|
|
positions_str = project.get('适用岗位', '')
|
|||
|
|
|
|||
|
|
# 期望的岗位列表
|
|||
|
|
if positions_str:
|
|||
|
|
expected_positions = [p.strip() for p in positions_str.replace(',', ',').split(',') if p.strip()]
|
|||
|
|
else:
|
|||
|
|
expected_positions = []
|
|||
|
|
|
|||
|
|
total_positions_expected += len(expected_positions)
|
|||
|
|
|
|||
|
|
print(f"\n项目 {i}: {project_name}")
|
|||
|
|
print(f" 期望岗位数: {len(expected_positions)}")
|
|||
|
|
|
|||
|
|
# 在mock文件中查找该项目的岗位
|
|||
|
|
# 查找项目ID后的positions数组
|
|||
|
|
# 需要更精确的模式,因为positions可能跨多行
|
|||
|
|
pattern = rf'"id":\s*{i}[^{{]*?"positions":\s*\[((?:[^[\]]|\[[^]]*\])*?)\]'
|
|||
|
|
match = re.search(pattern, mock_content, re.DOTALL)
|
|||
|
|
|
|||
|
|
if match:
|
|||
|
|
positions_block = match.group(1)
|
|||
|
|
# 提取所有岗位名称
|
|||
|
|
position_matches = re.findall(r'"position":\s*"([^"]+)"', positions_block)
|
|||
|
|
|
|||
|
|
total_positions_found += len(position_matches)
|
|||
|
|
|
|||
|
|
if len(position_matches) == len(expected_positions):
|
|||
|
|
# 检查每个岗位是否匹配
|
|||
|
|
missing = []
|
|||
|
|
for exp_pos in expected_positions:
|
|||
|
|
if exp_pos not in position_matches:
|
|||
|
|
missing.append(exp_pos)
|
|||
|
|
|
|||
|
|
if missing:
|
|||
|
|
print(f" ❌ 岗位不匹配,缺少: {', '.join(missing)}")
|
|||
|
|
all_correct = False
|
|||
|
|
else:
|
|||
|
|
print(f" ✅ 所有 {len(expected_positions)} 个岗位已正确更新")
|
|||
|
|
else:
|
|||
|
|
print(f" ❌ 岗位数量不匹配: 实际 {len(position_matches)},期望 {len(expected_positions)}")
|
|||
|
|
print(f" 期望: {', '.join(expected_positions)}")
|
|||
|
|
print(f" 实际: {', '.join(position_matches)}")
|
|||
|
|
all_correct = False
|
|||
|
|
else:
|
|||
|
|
print(f" ❌ 未找到项目的positions数组")
|
|||
|
|
all_correct = False
|
|||
|
|
|
|||
|
|
print("\n" + "=" * 80)
|
|||
|
|
print("汇总统计")
|
|||
|
|
print("=" * 80)
|
|||
|
|
print(f"总期望岗位数: {total_positions_expected}")
|
|||
|
|
print(f"总实际岗位数: {total_positions_found}")
|
|||
|
|
|
|||
|
|
if all_correct and total_positions_expected == total_positions_found:
|
|||
|
|
print("\n✅ 所有项目的岗位列表已完全正确更新!")
|
|||
|
|
else:
|
|||
|
|
print("\n❌ 存在更新问题,请检查上述错误信息")
|
|||
|
|
|
|||
|
|
return all_correct
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
verify_positions_update()
|