import os import shutil import logging from pathlib import Path # 로깅 설정 logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') logger = logging.getLogger("DataMigration") SOURCE_DIR = Path(r"D:\00.Work_AI_Tool\06.GPTs_kcsc") TARGET_DIR = Path(r"D:\00.Work_AI_Tool\03.KCSC_MCP\data") MAPPING_PLAN = [ { "src": SOURCE_DIR / "enhanced_markdown_contents_improved.json", "dst": TARGET_DIR / "raw" / "standards.json", "desc": "표준 규정 파싱 데이터 (KDS/KCS)" }, { "src": SOURCE_DIR / "extracted_qa_data.json", "dst": TARGET_DIR / "raw" / "qa_dataset.json", "desc": "평가용 QA 데이터셋" }, { "src": SOURCE_DIR / "kcsc_final_url_mapping_20250811_190643.json", "dst": TARGET_DIR / "raw" / "mappings.json", "desc": "URL 및 코드 맵핑 데이터" }, { "src": SOURCE_DIR / "knowledge_graph.db", "dst": TARGET_DIR / "graph" / "knowledge_graph.db", "desc": "지식 그래프 DB" } ] def create_directory_structure(): logger.info("데이터 트리 구조 생성 시작...") dirs_to_create = [ TARGET_DIR / "raw", TARGET_DIR / "graph", TARGET_DIR / "indices" / "chromadb", TARGET_DIR / "indices" / "bm25" ] for d in dirs_to_create: d.mkdir(parents=True, exist_ok=True) logger.info(f"디렉토리 준비됨: {d}") def migrate_data(): logger.info("데이터 복사 및 이관 시작...") for item in MAPPING_PLAN: src = item["src"] dst = item["dst"] desc = item["desc"] if src.exists(): logger.info(f"[{desc}] 복사 중...\n - Source: {src}\n - Target: {dst}") # 대용량 파일 복사 try: shutil.copy2(src, dst) size_mb = dst.stat().st_size / (1024 * 1024) logger.info(f"[{desc}] 복사 완료 (크기: {size_mb:.2f} MB)") except Exception as e: logger.error(f"[{desc}] 복사 실패: {e}") else: logger.warning(f"[{desc}] 원본 파일을 찾을 수 없습니다: {src}") if __name__ == "__main__": create_directory_structure() migrate_data() logger.info("모든 마이그레이션 작업이 완료되었습니다.")