yinshepaix.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # 2️ 解析审查项配置
  2. from typing import List, Dict, Union
  3. def _replace_review_suffix(items: List[str], mapping: Dict[str, Union[str, List[str]]]) -> List[str]:
  4. """
  5. 将列表中字符串的下划线后内容替换为映射表中的对应值
  6. 处理多值映射(如completeness_check对应两个值时生成两条结果)
  7. """
  8. result = []
  9. for item in items:
  10. # 拆分下划线前后部分(只拆分第一个下划线,因为后缀可能包含下划线)
  11. if '_' in item:
  12. prefix, suffix = item.split('_', 1) # split('_', 1) 确保只拆分一次
  13. else:
  14. # 无下划线时直接保留原字符串(根据实际需求可调整)
  15. result.append(item)
  16. continue
  17. # 获取映射值,无匹配时保留原后缀
  18. mapped_value = mapping.get(suffix, suffix)
  19. # 处理单值映射
  20. if isinstance(mapped_value, str):
  21. result.append(f"{prefix}_{mapped_value}")
  22. # 处理多值映射(列表类型)
  23. elif isinstance(mapped_value, list):
  24. for val in mapped_value:
  25. result.append(f"{prefix}_{val}")
  26. return result
  27. review_func_mapping: Dict[str, Union[str, List[str]]] = {
  28. 'sensitive_word_check': 'sensitive_word_check',
  29. 'semantic_logic_check': 'check_semantic_logic',
  30. 'completeness_check': ['check_completeness', 'outline_check'],
  31. 'timeliness_check': 'timeliness_basis_reviewer',
  32. 'reference_check': 'reference_basis_reviewer',
  33. 'sensitive_check': 'check_sensitive',
  34. 'non_parameter_compliance_check': 'check_non_parameter_compliance',
  35. 'parameter_compliance_check': 'check_parameter_compliance'
  36. }
  37. review_item_config = [
  38. "safety_sensitive_check",
  39. "overview_completeness_check",
  40. "basis_timeliness_check",
  41. "basis_sensitive_word_check",
  42. "catalogue_sensitive_word_check",
  43. "catalogue_semantic_logic_check",
  44. "basis_timeliness_check",
  45. ]
  46. review_item_config = _replace_review_suffix(review_item_config, review_func_mapping)
  47. review_item_dict = {}
  48. for item in review_item_config:
  49. key, value = item.split("_", 1)
  50. review_item_dict.setdefault(key, []).append(value)
  51. # 依据方案标准章节顺序进行排序
  52. sgfa_chapter_index_order = ["catalogue", "basis", "overview", "plan","technology", "safety", "quality", "environment",
  53. "management", "acceptance", "other"]
  54. all_keys = review_item_dict.keys()
  55. sorted_keys = sorted(
  56. all_keys,
  57. key=lambda x :sgfa_chapter_index_order.index(x)
  58. )
  59. review_item_dict_sorted = {}
  60. for key in sorted_keys:
  61. review_item_dict_sorted[key] = review_item_dict[key]
  62. print(f"审查项配置解析完成: {review_item_dict_sorted}")
  63. # 3️ 获取结构化内容