import json # JSON 매핑 테이블 로드 def load_mapping_table(json_file_path): """매핑 테이블 JSON 파일을 로드합니다.""" with open(json_file_path, 'r', encoding='utf-8') as file: return json.load(file) class FieldMapper: def __init__(self, mapping_data): self.mapping_data = mapping_data self.ailabel_to_systems = mapping_data['mapping_table']['ailabel_to_systems'] self.system_mappings = mapping_data['mapping_table']['system_mappings'] def ailabel_to_expressway(self, ailabel): """AI 라벨을 고속도로공사 필드명으로 변환""" if ailabel in self.ailabel_to_systems: return self.ailabel_to_systems[ailabel]['expressway'] return None def expressway_to_transportation(self, expressway_field): """고속도로공사 필드명을 교통부 필드명으로 변환""" if expressway_field in self.system_mappings['expressway_to_transportation']: return self.system_mappings['expressway_to_transportation'][expressway_field] return None def ailabel_to_transportation_via_expressway(self, ailabel): """AI 라벨 → 고속도로공사 → 교통부 순서로 변환""" expressway_field = self.ailabel_to_expressway(ailabel) if expressway_field: return self.expressway_to_transportation(expressway_field) return None def get_all_system_fields(self, ailabel): """AI 라벨에 해당하는 모든 시스템의 필드명을 반환""" if ailabel in self.ailabel_to_systems: return self.ailabel_to_systems[ailabel] return None # 사용 예제 if __name__ == "__main__": # 매핑 테이블 로드 mapping_data = load_mapping_table('mapping_table.json') mapper = FieldMapper(mapping_data) # 사용 사례 1: AILABEL => EXPRESSWAY print("=== AI 라벨 → 고속도로공사 필드명 변환 ===") test_labels = ["도면명", "편철번호", "도면번호", "Main Title", "계정번호"] for label in test_labels: expressway_field = mapper.ailabel_to_expressway(label) print(f"{label} → {expressway_field}") print("\n=== 고속도로공사 → 교통부 필드명 변환 ===") # 사용 사례 2: EXPRESSWAY => TRANSPORTATION expressway_fields = ["TD_DNAME_MAIN", "TD_DWGNO", "TD_DWGCODE", "TR_RNUM1"] for field in expressway_fields: transportation_field = mapper.expressway_to_transportation(field) print(f"{field} → {transportation_field}") print("\n=== AI 라벨 → 고속도로공사 → 교통부 (연속 변환) ===") # 연속 변환 예제 for label in test_labels: transportation_field = mapper.ailabel_to_transportation_via_expressway(label) expressway_field = mapper.ailabel_to_expressway(label) print(f"{label} → {expressway_field} → {transportation_field}") print("\n=== 특정 AI 라벨의 모든 시스템 필드명 ===") # 모든 시스템 필드명 조회 all_fields = mapper.get_all_system_fields("도면명") if all_fields: print("도면명에 해당하는 모든 시스템 필드:") for system, field in all_fields.items(): print(f" {system}: {field}") # 배치 처리 함수 def batch_convert_ailabel_to_expressway(mapper, ailabels): """여러 AI 라벨을 한번에 고속도로공사 필드명으로 변환""" results = {} for label in ailabels: results[label] = mapper.ailabel_to_expressway(label) return results def batch_convert_expressway_to_transportation(mapper, expressway_fields): """여러 고속도로공사 필드를 한번에 교통부 필드명으로 변환""" results = {} for field in expressway_fields: results[field] = mapper.expressway_to_transportation(field) return results