diff --git a/01_copy_files_answer.py b/01_copy_files_answer.py
index 998c1e6..aa9e8f8 100644
--- a/01_copy_files_answer.py
+++ b/01_copy_files_answer.py
@@ -3,11 +3,11 @@ import shutil
from pathlib import Path
import re
-# 채점자료 정답 파일만 복사하는 스크립트
+# 회차별채점자료/회차명 폴더안 정답 파일만 복사하는 스크립트
# ===== 사용자 설정 =====
-source_dir = r"D:\project\HWP\HWP-Scoring\회차별채점자료\2601"
-exam_round = "2601" # 회차명
+source_dir = r"D:\project\HWP\HWP-Scoring\회차별채점자료\2622"
+exam_round = "2622" # 회차명
exam_code = "DIW" # 코드명
# =======================
@@ -16,8 +16,9 @@ def get_exam_type(filename: str):
"""
파일명에서 확장자 앞의 마지막 알파벳을 추출 (예: 국어A.hwpx → A)
"""
- match = re.search(r"([A-Za-z])\.hwpx$", filename)
- return match.group(1).upper() if match else None
+ # match = re.search(r"([A-Za-z])\.hwpx$", filename)
+ match = re.search(r'[A-Za-z](?=[^A-Za-z]*\.[^.]*$)', filename)
+ return match.group().upper() if match else None
def copy_exam_files():
@@ -30,14 +31,14 @@ def copy_exam_files():
copied = 0
for path in src.rglob("*"):
- if path.is_file() and path.suffix.lower() == ".hwpx":
+ if path.is_file() and path.suffix.lower() == ".hwpx" and "정답" in path.name:
exam_type = get_exam_type(path.name)
if not exam_type:
continue # 마지막 문자가 알파벳이 아니면 건너뜀
dest_dir = base_dest / exam_type / exam_code
dest_dir.mkdir(parents=True, exist_ok=True)
- dest_path = dest_dir / path.name
+ dest_path = dest_dir / f"DIW_{exam_round}{exam_type}.hwpx"
# 같은 이름의 파일이 있을 경우 숫자 붙이기
counter = 1
diff --git a/01_copy_files_by_origin.py b/01_copy_files_by_origin.py
index 6de02fd..a699af2 100644
--- a/01_copy_files_by_origin.py
+++ b/01_copy_files_by_origin.py
@@ -41,10 +41,10 @@ def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, t
print(f"Skipping {dir_name} under {parent_dir}, as it doesn't match '2교시' or '3교시'.")
# 사용법
-exam_round = "2601_2"
+exam_round = "2601"
# exam_round = "2510_4"
# source_directory = r"D:\project\data\제2510회 수시2(제주)\답안파일\제2510회 수시2 제주지부_답안파일"
-source_directory = r"D:\project\data\제2601회 수시2(제주)\제2601회 수시2(제주)\답안파일\2601회 수시2 답안파일"
+source_directory = r"D:\project\data\제2601회 정기\제2601회 정기\과목별답안파일"
target_directory_a = f".\\input\\{exam_round}\\A" # '1교시'의 타겟 경로
diff --git a/01_copy_files_by_subject.py b/01_copy_files_by_subject.py
index 1240aed..ccc8218 100644
--- a/01_copy_files_by_subject.py
+++ b/01_copy_files_by_subject.py
@@ -76,8 +76,8 @@ def copy_exam_files(exam_round, exam_codes, source_dir):
# 사용 예시
if __name__ == "__main__":
# [source_dir경로\DIW] 디렉토리 안에 A형, B형... 폴더가 존재해야 함
- exam_round = "2512"
+ exam_round = "2601"
exam_codes = ["DIW"]
- source_dir = r"D:\project\data\제2512회 정기_DIAT\답안파일"
+ source_dir = r"D:\project\data\제2601회 정기\과목별답안파일"
copy_exam_files(exam_round, exam_codes, source_dir)
diff --git a/02_conversion_hwp_to_xml.py b/02_conversion_hwp_to_xml.py
index 154e77b..f0262c1 100644
--- a/02_conversion_hwp_to_xml.py
+++ b/02_conversion_hwp_to_xml.py
@@ -166,7 +166,7 @@ if __name__ == "__main__":
setup_logging()
exam_rounds = [
- "2601",
+ "2622",
]
# 변환할 폴더 경로 설정
@@ -178,6 +178,8 @@ if __name__ == "__main__":
(f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\C\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\C\\DIW"),
(f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\D\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\D\\DIW"),
(f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\E\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\E\\DIW"),
+
+ # (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}"),
]
# folders = [
diff --git a/DIW_2601A.json b/JSON/2601/DIW_2601A.json
similarity index 100%
rename from DIW_2601A.json
rename to JSON/2601/DIW_2601A.json
diff --git a/DIW_2601B.json b/JSON/2601/DIW_2601B.json
similarity index 100%
rename from DIW_2601B.json
rename to JSON/2601/DIW_2601B.json
diff --git a/DIW_2601C.json b/JSON/2601/DIW_2601C.json
similarity index 100%
rename from DIW_2601C.json
rename to JSON/2601/DIW_2601C.json
diff --git a/JSON/2622/DIW_2622A.json b/JSON/2622/DIW_2622A.json
new file mode 100644
index 0000000..e0ce2e0
--- /dev/null
+++ b/JSON/2622/DIW_2622A.json
@@ -0,0 +1,850 @@
+{
+ "0": {
+ "0": {
+ "path": "",
+ "path2": "",
+ "points": 0,
+ "category": "파일저장",
+ "item": "파일명 (수검번호.hwp/hwpx)"
+ },
+ "1": {
+ "path": "//PAGEMARGIN",
+ "value": {
+ "Top": 20,
+ "Bottom": 20,
+ "Left": 20,
+ "Right": 20,
+ "Header": 10,
+ "Footer": 10,
+ "Gutter": 0
+ },
+ "tolerance": 1,
+ "points": 4,
+ "category": "PageSetting",
+ "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
+ },
+ "2": {
+ "path": "",
+ "value": {
+ "FontName": "바탕",
+ "FontSize": "1000",
+ "Alignment": "Justify",
+ "LineSpacing": "160"
+ },
+ "points": 4,
+ "category": "BasicSetting",
+ "item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
+ },
+ "3": {
+ "path": "",
+ "value": null,
+ "points": 40,
+ "category": "오타감점",
+ "item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
+ }
+ },
+ "1": {
+ "1": {
+ "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
+ "searchValue": "나라사랑고궁사랑걷기대회",
+ "value": "돋움체",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (나라사랑고궁사랑걷기대회)/① 글씨체 (돋움체)"
+ },
+ "2": {
+ "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
+ "searchValue": "나라사랑고궁사랑걷기대회",
+ "value": "241,31,18",
+ "points": 2,
+ "category": "Color",
+ "item": "문구 (나라사랑고궁사랑걷기대회)/② 채우기 : 색상(RGB:241,31,18)"
+ },
+ "3": {
+ "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
+ "searchValue": "나라사랑고궁사랑걷기대회",
+ "value": "120",
+ "tolerance": 1,
+ "points": 2,
+ "category": "mmSize",
+ "item": "문구 (나라사랑고궁사랑걷기대회)/③ 크기-너비 (120 mm)"
+ },
+ "4": {
+ "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
+ "searchValue": "나라사랑고궁사랑걷기대회",
+ "value": "20",
+ "tolerance": 1,
+ "points": 2,
+ "category": "mmSize",
+ "item": "문구 (나라사랑고궁사랑걷기대회)/④ 크기-높이 (20 mm)"
+ },
+ "5": {
+ "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
+ "searchValue": "나라사랑고궁사랑걷기대회",
+ "value": "true",
+ "points": 2,
+ "category": "OneAnswer",
+ "item": "문구 (나라사랑고궁사랑걷기대회)/⑤ 위치 (글자처럼 취급)"
+ },
+ "6": {
+ "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
+ "searchValue": "나라사랑고궁사랑걷기대회",
+ "value": "Center",
+ "points": 2,
+ "category": "OneAnswer",
+ "item": "문구 (나라사랑고궁사랑걷기대회)/⑥ 정렬 (가운데 정렬)"
+ },
+ "7": {
+ "path": "//TEXTART[@Text='{searchValue}']",
+ "searchValue": "나라사랑고궁사랑걷기대회",
+ "value": true,
+ "points": 2,
+ "category": "Boolean",
+ "item": "문구 (나라사랑고궁사랑걷기대회)/⑦ 글맵시모양 (육안확인)"
+ },
+ "8": {
+ "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
+ "searchValue": "도",
+ "value": {
+ "Height": 2800,
+ "Width": 2800
+ },
+ "tolerance": 200,
+ "points": 1,
+ "category": "TwoLineSize",
+ "item": "어/① 모양 (2줄)"
+ },
+ "9": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "도",
+ "value": "중고딕",
+ "points": 1,
+ "category": "FontName",
+ "item": "어/② 글씨체 (중고딕)"
+ },
+ "10": {
+ "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
+ "searchValue": "도",
+ "value": "43,224,208",
+ "points": 2,
+ "category": "Color",
+ "item": "어/③ 면색 : 색상(RGB:43,224,208)"
+ },
+ "11": {
+ "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
+ "searchValue": "도",
+ "value": "3.0",
+ "tolerance": 1,
+ "points": 2,
+ "category": "mmSize",
+ "item": "어/④ 본문과의 간격 : 3.0mm"
+ },
+ "12": {
+ "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
+ "searchValue": "나라 사랑 고궁 사랑 걷기대회",
+ "value": "BOLD",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/① BOLD"
+ },
+ "13": {
+ "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
+ "searchValue": "나라 사랑 고궁 사랑 걷기대회",
+ "value": "ITALIC",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/② ITALIC"
+ },
+ "14": {
+ "path": "//CHAR[contains(string(.),'{char1}')]/text()",
+ "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
+ "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
+ "char1": "◈",
+ "char2": "◈",
+ "char3": "※",
+ "value": 3,
+ "points": 3,
+ "category": "SpecialChar",
+ "item": "① ◈, ② ◈, ③ ※"
+ },
+ "15": {
+ "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
+ "searchValue": "참가안내",
+ "value": "궁서",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구 (◈ 참가안내 ◈)/① 글씨체 (궁서)"
+ },
+ "16": {
+ "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
+ "match_str": "참가안내",
+ "value": "Center",
+ "points": 1,
+ "category": "Align",
+ "item": "문구 (◈ 참가안내 ◈)/② 정렬 (가운데 정렬)"
+ },
+ "17": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
+ "searchValue": "나라사랑고궁사랑걷기대회 홈페이지(http://www.ihd.or.kr)",
+ "value": "ITALIC",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구 (나라사랑고궁사랑걷기대회 홈페이지(http://www.ihd.or.kr))/① ITALIC"
+ },
+ "18": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
+ "searchValue": "나라사랑고궁사랑걷기대회 홈페이지(http://www.ihd.or.kr)",
+ "value": "UNDERLINE",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구 (나라사랑고궁사랑걷기대회 홈페이지(http://www.ihd.or.kr))/② UNDERLINE"
+ },
+ "19": {
+ "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
+ "searchValue": "기타사항",
+ "value": {
+ "Left": 10,
+ "Indent": 12
+ },
+ "points": 2,
+ "category": "ParaShape",
+ "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10), 내어쓰기 (12)",
+ "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
+ },
+ "20": {
+ "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
+ "searchValue": "2026. 02. 08.",
+ "value": "1400",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (2026. 02. 08.)/① 크기 (1400)",
+ "desc": "1pt당 100"
+ },
+ "21": {
+ "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
+ "searchValue": "2026. 02. 08.",
+ "value": "Center",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (2026. 02. 08.)/② 정렬 (가운데 정렬)"
+ },
+ "22": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "고궁걷기대회추진위원회",
+ "value": "돋움",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구 (고궁걷기대회추진위원회)/① 글씨체 (돋움)"
+ },
+ "23": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "고궁걷기대회추진위원회",
+ "value": "2200",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (고궁걷기대회추진위원회)/② 크기 (2200)"
+ },
+ "24": {
+ "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
+ "searchValue": "고궁걷기대회추진위원회",
+ "value": "Center",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (고궁걷기대회추진위원회)/③ 정렬 (가운데 정렬)"
+ },
+ "25": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "DIAT",
+ "value": "굴림",
+ "points": 1,
+ "category": "Header.FontName",
+ "item": "문구 (DIAT)/① 글꼴 (굴림)"
+ },
+ "26": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "DIAT",
+ "value": "900",
+ "points": 1,
+ "category": "Header.OneAnswer",
+ "item": "문구 (DIAT)/② 크기 (9pt)"
+ },
+ "27": {
+ "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
+ "searchValue": "DIAT",
+ "value": "Right",
+ "points": 1,
+ "category": "Header.OneAnswer",
+ "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
+ },
+ "28": {
+ "path": "//PAGENUM/@FormatType",
+ "value": "LatinCapital",
+ "points": 2,
+ "category": "PageNumber",
+ "item": "① 쪽 번호 매기기 (가,나,다 순으로)",
+ "desc1": {
+ "가,나,다": "HangulSyllable",
+ "1,2,3": "Digit",
+ "일,이,삼": "HangulPhonetic",
+ "갑,을,병": "DecagonCircle",
+ "A,B,C": "LatinCapital",
+ "a,b,c": "LatinSmall",
+ "Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
+ "①,②,③": "CircledDigit",
+ "一,二,三": "Ideograph",
+ "㉠,㉡,㉢": "CircledHangulJamo",
+ "ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
+ "㊀,㊁,㊂": "CircledIdeograph",
+ "i,ii,iii": "RomanSmall",
+ "I,II,III": "RomanCapital",
+ "甲,乙,丙": "DecagonCircleHanja",
+ "+,++,+++": "UserChar",
+ "*,**,***": "UserChar",
+ "정답에 맞는 값 value에 입력": ""
+ },
+ "desc2": "1, 2페이지 모두 정답이어야 점수 부여"
+ },
+ "29": {
+ "path": "//PAGENUM/@Pos",
+ "value": "BottomCenter",
+ "points": 2,
+ "category": "PageNumber",
+ "item": "가운데 아래",
+ "desc": "1, 2페이지 모두 정답이어야 점수 부여",
+ "desc2": {
+ "가운데 아래": "BottomCenter",
+ "오른쪽 아래": "BottomRight",
+ "왼쪽 아래": "BottomLeft"
+ }
+ },
+ "30": {
+ "path": "//CHAR[contains(text(),'{searchValue}')]",
+ "searchValue": "http",
+ "value": true,
+ "points": 2,
+ "category": "hyperlink",
+ "item": "문구 (http://www.ihd.or.kr)/하이퍼링크 없이 작성",
+ "desc": "searchValue에 해당하는 주소 문구에 하이퍼링크가 하나라도 설정되어 있으면 오답"
+ },
+ "31": {
+ "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
+ "value": "190",
+ "first_word": "도",
+ "points": 2,
+ "category": "LineSpacing",
+ "item": "문제 1 줄간격 190% 설정",
+ "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
+ }
+ },
+ "2": {
+ "1": {
+ "path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside",
+ "path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]",
+ "value": {
+ "header_inside": true,
+ "all_double_slim": true
+ },
+ "points": 4,
+ "category": "PageBorder",
+ "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
+ },
+ "2": {
+ "path": "count(//SECTION)>1",
+ "value": true,
+ "points": 3,
+ "category": "Boolean",
+ "item": "① 구역나누기",
+ "desc": "섹션이 1개 이상이면 점수부여"
+ },
+ "3": {
+ "path": "./TEXT/COLDEF/@Count",
+ "value": "2",
+ "points": 3,
+ "category": "TwoColumn",
+ "item": "② 다단 2단"
+ },
+ "4": {
+ "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
+ "value": "65",
+ "points": 2,
+ "category": "Rectangle.mmSize",
+ "item": "문구 (궁궐 건축 양식)/① 크기-너비 (65 mm)"
+ },
+ "5": {
+ "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
+ "value": "12",
+ "points": 2,
+ "category": "Rectangle.mmSize",
+ "item": "문구 (궁궐 건축 양식)/② 크기-높이 (12 mm)"
+ },
+ "6": {
+ "path": "//RECTANGLE//LINESHAPE",
+ "value": {
+ "Style": "DoubleSlim",
+ "Width": "283"
+ },
+ "points": 2,
+ "category": "Rectangle.LineShape",
+ "item": "문구 (궁궐 건축 양식)/③ 테두리 : 이중 실선(1.00mm)",
+ "desc": "1mm = 283pt value['Width']에 pt값 입력"
+ },
+ "7": {
+ "path": "//RECTANGLE/@Ratio",
+ "value": "50",
+ "points": 2,
+ "category": "Rectangle.OneAnswer",
+ "item": "문구 (궁궐 건축 양식)/④ 글상자 모서리 (둥근모양)",
+ "desc": "모서리 비율 반원:50 / 둥근모양:20"
+ },
+ "8": {
+ "path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
+ "value": "240,199,123",
+ "points": 2,
+ "category": "Rectangle.Color",
+ "item": "문구 (궁궐 건축 양식)/⑤ 채우기 : 색상(RGB:240,199,123)"
+ },
+ "9": {
+ "path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
+ "value": "true",
+ "points": 1,
+ "category": "Rectangle.OneAnswer",
+ "item": "문구 (궁궐 건축 양식)/⑥ 글상자 위치 (글자처럼 취급)"
+ },
+ "10": {
+ "path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
+ "value": "Center",
+ "points": 1,
+ "category": "Rectangle.TextBoxAlign",
+ "item": "문구 (궁궐 건축 양식)/⑦ 글상자 정렬 (가운데 정렬)"
+ },
+ "11": {
+ "path": ".//RECTANGLE//TEXT/@CharShape",
+ "value": "견고딕",
+ "points": 1,
+ "category": "Rectangle.FontName",
+ "item": "문구 (궁궐 건축 양식)/⑧ 글씨체 (견고딕)"
+ },
+ "12": {
+ "path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
+ "value": "2000",
+ "points": 1,
+ "category": "Rectangle.FontSize",
+ "item": "문구 (궁궐 건축 양식)/⑨ 글씨크기 (2000)",
+ "desc": "1pt당 100"
+ },
+ "13": {
+ "path": "//PARASHAPE[@Id={rect_parashape_id}]/@Align",
+ "value": "Center",
+ "points": 1,
+ "category": "Rectangle.TextBoxAlign",
+ "item": "문구 (궁궐 건축 양식)/⑩ 정렬 (가운데 정렬)"
+ },
+ "14": {
+ "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
+ "value": true,
+ "points": 2,
+ "category": "Boolean",
+ "item": "① 파일명 \"그림A.jpg\" 삽입",
+ "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
+ },
+ "15": {
+ "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
+ "value": "85",
+ "points": 2,
+ "category": "mmSize",
+ "item": "② 크기-너비 (85 mm)"
+ },
+ "16": {
+ "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
+ "value": "40",
+ "points": 2,
+ "category": "mmSize",
+ "item": "③ 크기-높이 (40 mm)"
+ },
+ "17": {
+ "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
+ "value": "0",
+ "points": 2,
+ "category": "mmSize",
+ "item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
+ },
+ "18": {
+ "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
+ "value": "24",
+ "points": 2,
+ "category": "mmSize",
+ "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)"
+ },
+ "19": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "1. 궁궐 건축의 이해",
+ "value": "돋움",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구① (1. 궁궐 건축의 이해)/① 글씨체 (돋움)"
+ },
+ "20": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "1. 궁궐 건축의 이해",
+ "value": "1200",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구① (1. 궁궐 건축의 이해)/② 크기 (1200)"
+ },
+ "21": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "searchValue": "1. 궁궐 건축의 이해",
+ "value": "BOLD",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구① (1. 궁궐 건축의 이해)/③ 진하게"
+ },
+ "22": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "2. 경복궁",
+ "value": "돋움",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구② (2. 경복궁)/① 글씨체 (돋움)"
+ },
+ "23": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "2. 경복궁",
+ "value": "1200",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구② (2. 경복궁)/② 크기 (1200)"
+ },
+ "24": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "searchValue": "2. 경복궁",
+ "value": "BOLD",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구② (2. 경복궁)/③ 진하게"
+ },
+ "25": {
+ "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
+ "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
+ "option": "종묘",
+ "value": true,
+ "points": 2,
+ "category": "Boolean",
+ "item": "문구 (종묘)/① 각주 설정 및 문구 입력"
+ },
+ "26": {
+ "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
+ "searchValue": "조선 시대에 임금과 왕비의 위패를 모시던 사당",
+ "value": "궁서체",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구 (종묘)/② 글씨체 (궁서체)"
+ },
+ "27": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
+ "searchValue": "조선 시대에 임금과 왕비의 위패를 모시던 사당",
+ "value": "900",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (종묘)/③ 크기 (9pt)"
+ },
+ "28": {
+ "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
+ "searchValue": "조선 시대에 임금과 왕비의 위패를 모시던 사당",
+ "value": "UserChar",
+ "points": 2,
+ "category": "OneAnswer",
+ "item": "문구 (전당)/④ 각주 번호모양",
+ "desc": {
+ "가,나,다": "HangulSyllable",
+ "1,2,3": "Digit",
+ "일,이,삼": "HangulPhonetic",
+ "갑,을,병": "DecagonCircle",
+ "A,B,C": "LatinCapital",
+ "a,b,c": "LatinSmall",
+ "Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
+ "①,②,③": "CircledDigit",
+ "一,二,三": "Ideograph",
+ "㉠,㉡,㉢": "CircledHangulJamo",
+ "ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
+ "㊀,㊁,㊂": "CircledIdeograph",
+ "i,ii,iii": "RomanSmall",
+ "I,II,III": "RomanCapital",
+ "甲,乙,丙": "DecagonCircleHanja",
+ "+,++,+++": "UserChar",
+ "*,**,***": "UserChar",
+ "정답에 맞는 값 value에 입력": ""
+ }
+ },
+ "29": {
+ "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
+ "ignoreWord": "Palace",
+ "value": true,
+ "points": 3,
+ "category": "Boolean",
+ "item": "Palace/영단어 미입력, 대소문자/오타 시 전체 감점",
+ "desc": ""
+ },
+ "30": {
+ "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
+ "word": [
+ ["별궁", "別宮"],
+ ["행궁", "行宮"],
+ ["도읍", "都邑"],
+ ["남면", "南面"],
+ ["영추", "迎秋"]
+ ],
+ "value": 10,
+ "points": 10,
+ "category": "Hanja",
+ "item": "① 별궁(別宮), ② 행궁(行宮), ③ 도읍(都邑), ④ 남면(南面), ⑤ 영추(迎秋)"
+ },
+ "31": {
+ "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'르는지방')])",
+ "value": true,
+ "points": 3,
+ "category": "Boolean",
+ "item": "문구 (…일정 기간씩 머무르은 지방에…)>'은' → '는' 글자바꿈"
+ },
+ "32": {
+ "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'물로하층')])",
+ "value": true,
+ "points": 3,
+ "category": "Boolean",
+ "item": "문구 (…누각 하층은 건물로 네모진…)>'하층은' / '건물로' 순서바꿈"
+ },
+ "33": {
+ "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
+ "searchValue": "연령별 참가 만족도 조사(단위:%)",
+ "value": "굴림체",
+ "points": 1,
+ "category": "FontName",
+ "item": "제목 문구 (연령별 참가 만족도 조사(단위:%))/① 글씨체 (굴림체)"
+ },
+ "34": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "연령별 참가 만족도 조사(단위:%)",
+ "value": "1200",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (연령별 참가 만족도 조사(단위:%))/② 크기 (1200)"
+ },
+ "35": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "searchValue": "연령별 참가 만족도 조사(단위:%)",
+ "value": "BOLD",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "제목 문구 (연령별 참가 만족도 조사(단위:%))/③ 진하게"
+ },
+ "36": {
+ "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
+ "searchValue": "연령별 참가 만족도 조사(단위:%)",
+ "value": "Center",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (연령별 참가 만족도 조사(단위:%))/④ 정렬 (가운데 정렬)"
+ },
+ "37": {
+ "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
+ "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
+ "value": "205,170,213",
+ "points": 2,
+ "category": "Color",
+ "item": "위쪽 제목 셀/① 색상(RGB:205,170,213)"
+ },
+ "38": {
+ "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
+ "value": "BOLD",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "위쪽 제목 셀/② 진하게",
+ "desc": "글자 속성이라 CELLZONE으로 적용 되지 않음"
+ },
+ "39": {
+ "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type",
+ "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type",
+ "value": "DoubleSlim",
+ "points": 2,
+ "category": "TableAnswer",
+ "item": "제목 셀 아래선/① 이중실선"
+ },
+ "40": {
+ "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width",
+ "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width",
+ "value": "0.5mm",
+ "points": 2,
+ "category": "TableAnswer",
+ "item": "제목 셀 아래선/② 0.5mm"
+ },
+ "41": {
+ "path": "//TABLE//TEXT/@CharShape",
+ "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
+ "value": "맑은고딕",
+ "points": 1,
+ "category": "TableFontName",
+ "category_tmp": "FontName",
+ "item": "글자모양/① 글씨체 (맑은고딕)",
+ "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
+ },
+ "42": {
+ "path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
+ "value": "1000",
+ "points": 1,
+ "category": "TableAnswer",
+ "item": "글자모양/② 크기 (1000)"
+ },
+ "43": {
+ "path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
+ "value": "Center",
+ "points": 1,
+ "category": "TableAnswer",
+ "item": "글자모양/③ 정렬 (가운데 정렬)"
+ },
+ "44": {
+ "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
+ "option": "AVG",
+ "value": true,
+ "points": 4,
+ "category": "Boolean",
+ "item": "블록 계산식/합계",
+ "desc": "option값에 합계는 SUM / 평균은 AVG"
+ },
+ "45": {
+ "chart_xpath": "",
+ "chart_type": "묶은 가로 막대형",
+ "value": true,
+ "points": 2,
+ "category": "ChartType",
+ "item": "① 종류 (묶은 가로 막대형)",
+ "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
+ },
+ "46": {
+ "chart_xpath": "//c:valAx/c:majorTickMark/@val",
+ "value": "out",
+ "points": 2,
+ "category": "ChartOneAnswer",
+ "item": "② 값 축 주 눈금선",
+ "desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
+ },
+ "47": {
+ "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
+ "value": "80",
+ "points": 2,
+ "category": "mmSize",
+ "item": "③ 크기-너비 (80 mm)"
+ },
+ "48": {
+ "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
+ "value": "90",
+ "points": 2,
+ "category": "mmSize",
+ "item": "④ 크기-높이 (90 mm)"
+ },
+ "49": {
+ "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
+ "value": true,
+ "points": 2,
+ "category": "Boolean",
+ "item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
+ "desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
+ },
+ "50": {
+ "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
+ "searchValue": "연령별 참가 만족도 조사",
+ "value": "궁서",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (연령별 참가 만족도 조사)/① 글씨체 (궁서)"
+ },
+ "51": {
+ "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
+ "searchValue": "연령별 참가 만족도 조사",
+ "value": "1400",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (연령별 참가 만족도 조사)/② 크기 (1400)"
+ },
+ "52": {
+ "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
+ "option": "b",
+ "searchValue": "연령별 참가 만족도 조사",
+ "value": "1",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (연령별 참가 만족도 조사)/③ 기울임",
+ "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
+ },
+ "53": {
+ "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface",
+ "value": "굴림체",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "X축/① 글꼴 (굴림체)"
+ },
+ "54": {
+ "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
+ "value": "900",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "X축/② 크기 (9pt)"
+ },
+ "55": {
+ "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
+ "option": "i",
+ "value": "1",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "X축/③ 기울임",
+ "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
+ },
+ "56": {
+ "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface",
+ "value": "굴림체",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "Y축/① 글꼴 (굴림체)"
+ },
+ "57": {
+ "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
+ "value": "900",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "Y축/② 크기 (9pt)"
+ },
+ "58": {
+ "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
+ "option": "i",
+ "value": "1",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "Y축/③ 기울임",
+ "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
+ },
+ "59": {
+ "chart_xpath": "//c:legend//a:ea/@typeface",
+ "value": "굴림체",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "범례/① 글꼴 (굴림체)"
+ },
+ "60": {
+ "chart_xpath": "//c:legend//a:defRPr/@sz",
+ "value": "900",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "범례/② 크기 (9pt)"
+ },
+ "61": {
+ "chart_xpath": "//c:legend//a:defRPr/@{option}",
+ "option": "i",
+ "value": "1",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "범례/③ 기울임",
+ "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
+ }
+ }
+}
diff --git a/DIW_2601_2A copy 2.json b/JSON/2622/DIW_2622B.json
similarity index 75%
rename from DIW_2601_2A copy 2.json
rename to JSON/2622/DIW_2622B.json
index d018b95..e544759 100644
--- a/DIW_2601_2A copy 2.json
+++ b/JSON/2622/DIW_2622B.json
@@ -46,65 +46,65 @@
"1": {
"1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
- "searchValue": "재활용의 날 행사",
- "value": "맑은고딕",
+ "searchValue": "광양매실축제안내",
+ "value": "맑은 고딕",
"points": 1,
"category": "OneAnswer",
- "item": "문구 (재활용의 날 행사)/① 글씨체 (맑은고딕)"
+ "item": "문구 (광양매실축제안내)/① 글씨체 (맑은 고딕)"
},
"2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
- "searchValue": "재활용의 날 행사",
- "value": "49,95,151",
+ "searchValue": "광양매실축제안내",
+ "value": "199,80,124",
"points": 2,
"category": "Color",
- "item": "문구 (재활용의 날 행사)/② 채우기 : 색상(RGB:49,95,151)"
+ "item": "문구 (광양매실축제안내)/② 채우기 : 색상(RGB:199,80,124)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
- "searchValue": "재활용의 날 행사",
- "value": "100",
+ "searchValue": "광양매실축제안내",
+ "value": "110",
"tolerance": 1,
"points": 2,
"category": "mmSize",
- "item": "문구 (재활용의 날 행사)/③ 크기-너비 (100 mm)"
+ "item": "문구 (광양매실축제안내)/③ 크기-너비 (110 mm)"
},
"4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
- "searchValue": "재활용의 날 행사",
+ "searchValue": "광양매실축제안내",
"value": "20",
"tolerance": 1,
"points": 2,
"category": "mmSize",
- "item": "문구 (재활용의 날 행사)/④ 크기-높이 (20 mm)"
+ "item": "문구 (광양매실축제안내)/④ 크기-높이 (20 mm)"
},
"5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
- "searchValue": "재활용의 날 행사",
+ "searchValue": "광양매실축제안내",
"value": "true",
"points": 2,
"category": "OneAnswer",
- "item": "문구 (재활용의 날 행사)/⑤ 위치 (글자처럼 취급)"
+ "item": "문구 (광양매실축제안내)/⑤ 위치 (글자처럼 취급)"
},
"6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
- "searchValue": "재활용의 날 행사",
+ "searchValue": "광양매실축제안내",
"value": "Center",
"points": 2,
"category": "OneAnswer",
- "item": "문구 (재활용의 날 행사)/⑥ 정렬 (가운데 정렬)"
+ "item": "문구 (광양매실축제안내)/⑥ 정렬 (가운데 정렬)"
},
"7": {
"path": "//TEXTART[@Text='{searchValue}']",
- "searchValue": "재활용의 날 행사",
+ "searchValue": "광양매실축제안내",
"value": true,
"points": 2,
"category": "Boolean",
- "item": "문구 (재활용의 날 행사)/⑦ 글맵시모양 (육안확인)"
+ "item": "문구 (광양매실축제안내)/⑦ 글맵시모양 (육안확인)"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
- "searchValue": "한",
+ "searchValue": "올",
"value": {
"Height": 2800,
"Width": 2800
@@ -116,23 +116,23 @@
},
"9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
- "searchValue": "한",
- "value": "돋움체",
+ "searchValue": "올",
+ "value": "궁서체",
"points": 1,
"category": "FontName",
- "item": "어/② 글씨체 (돋움체)"
+ "item": "어/② 글씨체 (궁서체)"
},
"10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
- "searchValue": "한",
- "value": "210,154,216",
+ "searchValue": "올",
+ "value": "186,255,26",
"points": 2,
"category": "Color",
- "item": "어/③ 면색 : 색상(RGB:210,154,216)"
+ "item": "어/③ 면색 : 색상(RGB:186,255,26)"
},
"11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
- "searchValue": "한",
+ "searchValue": "올",
"value": "3.0",
"tolerance": 1,
"points": 2,
@@ -141,126 +141,126 @@
},
"12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
- "searchValue": "자원재활용이 이루어지는 과정을 담은 영상물 관람과 시설 견학이 있을 예정",
- "value": "BOLD",
+ "searchValue": "봄 매화, 여름 매실로 우리 함께 힐링합시다",
+ "value": "ITALIC",
"points": 1,
"category": "FontAttribute",
- "item": "문구 (자원재활용이 이루어지는 과정을 담은 영상물 관람과 시설 견학이 있을 예정)/① BOLD"
+ "item": "문구 (봄 매화, 여름 매실로 우리 함께 힐링합시다)/① ITALIC"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
- "searchValue": "자원재활용이 이루어지는 과정을 담은 영상물 관람과 시설 견학이 있을 예정",
+ "searchValue": "봄 매화, 여름 매실로 우리 함께 힐링합시다",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
- "item": "문구 (자원재활용이 이루어지는 과정을 담은 영상물 관람과 시설 견학이 있을 예정)/② UNDERLINE"
+ "item": "문구 (봄 매화, 여름 매실로 우리 함께 힐링합시다)/② UNDERLINE"
},
"14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()",
- "char1": "▣",
- "char2": "▣",
+ "char1": "→",
+ "char2": "←",
"char3": "※",
"value": 3,
"points": 3,
"category": "SpecialChar",
- "item": "① ▣ , ② ▣ , ③ ※"
+ "item": "① → , ② ← , ③ ※"
},
"15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
- "searchValue": "행사안내",
- "value": "돋움",
+ "searchValue": "축제안내",
+ "value": "굴림체",
"points": 1,
"category": "FontName",
- "item": "문구 (▣ 행사안내 ▣)/① 글씨체 (돋움)"
+ "item": "문구 (→ 축제안내 ←)/① 글씨체 (굴림체)"
},
"16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
- "match_str": "행사안내",
+ "match_str": "축제안내",
"value": "Center",
"points": 1,
"category": "Align",
- "item": "문구 (▣ 행사안내 ▣)/② 정렬 (가운데 정렬)"
+ "item": "문구 (→ 축제안내 ←)/② 정렬 (가운데 정렬)"
},
"17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
- "searchValue": "부산시청 앞 광장, 부산시 쓰레기 매립장 등",
+ "searchValue": "광양매실축제 홈페이지(http://www.ihd.or.kr)",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
- "item": "문구 (부산시청 앞 광장, 부산시 쓰레기 매립장 등)/① BOLD"
+ "item": "문구 (광양매실축제 홈페이지(http://www.ihd.or.kr))/① BOLD"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
- "searchValue": "부산시청 앞 광장, 부산시 쓰레기 매립장 등",
+ "searchValue": "광양매실축제 홈페이지(http://www.ihd.or.kr)",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
- "item": "문구 (부산시청 앞 광장, 부산시 쓰레기 매립장 등)/② ITALIC"
+ "item": "문구 (광양매실축제 홈페이지(http://www.ihd.or.kr))/② ITALIC"
},
"19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "기타사항",
"value": {
- "Left": 12,
+ "Left": 15,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
- "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (12), 내어쓰기 (12)",
+ "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
- "searchValue": "2026. 1. 21.",
- "value": "1200",
+ "searchValue": "2026. 02. 08.",
+ "value": "1400",
"points": 1,
"category": "OneAnswer",
- "item": "문구 (2026. 1. 21.)/① 크기 (1200)",
+ "item": "문구 (2026. 02. 08.)/① 크기 (1400)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
- "searchValue": "2026. 1. 21.",
+ "searchValue": "2026. 02. 08.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
- "item": "문구 (2026. 1. 21.)/② 정렬 (가운데 정렬)"
+ "item": "문구 (2026. 02. 08.)/② 정렬 (가운데 정렬)"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
- "searchValue": "한국환경보전단체",
- "value": "궁서",
+ "searchValue": "광양매실축제위원회",
+ "value": "견고딕",
"points": 1,
"category": "FontName",
- "item": "문구 (한국환경보전단체)/① 글씨체 (궁서)"
+ "item": "문구 (광양매실축제위원회)/① 글씨체 (견고딕)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
- "searchValue": "한국환경보전단체",
- "value": "2400",
+ "searchValue": "광양매실축제위원회",
+ "value": "2600",
"points": 1,
"category": "OneAnswer",
- "item": "문구 (한국환경보전단체)/② 크기 (2400)"
+ "item": "문구 (광양매실축제위원회)/② 크기 (2600)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
- "searchValue": "한국환경보전단체",
+ "searchValue": "광양매실축제위원회",
"value": "Center",
"points": 1,
"category": "OneAnswer",
- "item": "문구 (한국환경보전단체)/③ 정렬 (가운데 정렬)"
+ "item": "문구 (광양매실축제위원회)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
- "value": "돋움",
+ "value": "굴림",
"points": 1,
"category": "Header.FontName",
- "item": "문구 (DIAT)/① 글꼴 (돋움)"
+ "item": "문구 (DIAT)/① 글꼴 (굴림)"
},
"26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
@@ -280,10 +280,10 @@
},
"28": {
"path": "//PAGENUM/@FormatType",
- "value": "HangulSyllable",
+ "value": "CircledDigit",
"points": 2,
"category": "PageNumber",
- "item": "① 쪽 번호 매기기 (가,나,다 순으로)",
+ "item": "① 쪽 번호 매기기 (①,②,③ 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
@@ -331,7 +331,7 @@
"31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "190",
- "first_word": "한",
+ "first_word": "올",
"points": 2,
"category": "LineSpacing",
"item": "문제 1 줄간격 190% 설정",
@@ -367,17 +367,17 @@
},
"4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
- "value": "50",
+ "value": "55",
"points": 2,
"category": "Rectangle.mmSize",
- "item": "문구 (재활용 방법)/① 크기-너비 (50 mm)"
+ "item": "문구 (매화와 매실)/① 크기-너비 (55 mm)"
},
"5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12",
"points": 2,
"category": "Rectangle.mmSize",
- "item": "문구 (재활용 방법)/② 크기-높이 (12 mm)"
+ "item": "문구 (매화와 매실)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE//LINESHAPE",
@@ -387,7 +387,7 @@
},
"points": 2,
"category": "Rectangle.LineShape",
- "item": "문구 (재활용 방법)/③ 테두리 : 이중 실선(1.00mm)",
+ "item": "문구 (매화와 매실)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
@@ -395,43 +395,43 @@
"value": "20",
"points": 2,
"category": "Rectangle.OneAnswer",
- "item": "문구 (재활용 방법)/④ 글상자 모서리 (둥근모양)",
+ "item": "문구 (매화와 매실)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
- "value": "227,220,193",
+ "value": "122,179,64",
"points": 2,
"category": "Rectangle.Color",
- "item": "문구 (재활용 방법)/⑤ 채우기 : 색상(RGB:227,220,193)"
+ "item": "문구 (매화와 매실)/⑤ 채우기 : 색상(RGB:122,179,64)"
},
"9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true",
"points": 1,
"category": "Rectangle.OneAnswer",
- "item": "문구 (재활용 방법)/⑥ 글상자 위치 (글자처럼 취급)"
+ "item": "문구 (매화와 매실)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
- "item": "문구 (재활용 방법)/⑦ 글상자 정렬 (가운데 정렬)"
+ "item": "문구 (매화와 매실)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": ".//RECTANGLE//TEXT/@CharShape",
- "value": "굴림체",
+ "value": "중고딕",
"points": 1,
"category": "Rectangle.FontName",
- "item": "문구 (재활용 방법)/⑧ 글씨체 (굴림체)"
+ "item": "문구 (매화와 매실)/⑧ 글씨체 (중고딕)"
},
"12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
- "value": "1800",
+ "value": "2000",
"points": 1,
"category": "Rectangle.FontSize",
- "item": "문구 (재활용 방법)/⑨ 글씨크기 (1800)",
+ "item": "문구 (매화와 매실)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100"
},
"13": {
@@ -439,22 +439,22 @@
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
- "item": "문구 (재활용 방법)/⑩ 정렬 (가운데 정렬)"
+ "item": "문구 (매화와 매실)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true,
"points": 2,
"category": "Boolean",
- "item": "① 파일명 \"그림A.jpg\" 삽입",
+ "item": "① 파일명 \"그림B.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
- "value": "80",
+ "value": "85",
"points": 2,
"category": "mmSize",
- "item": "② 크기-너비 (80 mm)"
+ "item": "② 크기-너비 (85 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
@@ -472,87 +472,87 @@
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
- "value": "22",
+ "value": "24",
"points": 2,
"category": "mmSize",
- "item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)"
+ "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)"
},
"19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
- "searchValue": "1. 재활용이란?",
- "value": "돋움체",
+ "searchValue": "1. 매화의 특징",
+ "value": "돋움",
"points": 1,
"category": "FontName",
- "item": "문구① (1. 재활용이란?)/① 글씨체 (돋움체)"
+ "item": "문구① (1. 매화의 특징)/① 글씨체 (돋움)"
},
"20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
- "searchValue": "1. 재활용이란?",
+ "searchValue": "1. 매화의 특징",
"value": "1200",
"points": 1,
"category": "OneAnswer",
- "item": "문구① (1. 재활용이란?)/② 크기 (1200)"
+ "item": "문구① (1. 매화의 특징)/② 크기 (1200)"
},
"21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
- "searchValue": "1. 재활용이란?",
+ "searchValue": "1. 매화의 특징",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
- "item": "문구① (1. 재활용이란?)/③ 진하게"
+ "item": "문구① (1. 매화의 특징)/③ 진하게"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
- "searchValue": "2. 식재료 재활용 방법",
- "value": "돋움체",
+ "searchValue": "2. 매실의 효능",
+ "value": "돋움",
"points": 1,
"category": "FontName",
- "item": "문구② (2. 식재료 재활용 방법)/① 글씨체 (돋움체)"
+ "item": "문구② (2. 매실의 효능)/① 글씨체 (돋움)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
- "searchValue": "2. 식재료 재활용 방법",
+ "searchValue": "2. 매실의 효능",
"value": "1200",
"points": 1,
"category": "OneAnswer",
- "item": "문구② (2. 식재료 재활용 방법)/② 크기 (1200)"
+ "item": "문구② (2. 매실의 효능)/② 크기 (1200)"
},
"24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
- "searchValue": "2. 식재료 재활용 방법",
+ "searchValue": "2. 매실의 효능",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
- "item": "문구② (2. 식재료 재활용 방법)/③ 진하게"
+ "item": "문구② (2. 매실의 효능)/③ 진하게"
},
"25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
- "option": "얼룩",
+ "option": "문인화",
"value": true,
"points": 2,
"category": "Boolean",
- "item": "문구 (얼룩)/① 각주 설정 및 문구 입력"
+ "item": "문구 (문인화)/① 각주 설정 및 문구 입력"
},
"26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
- "searchValue": "본바탕에 다른 빛깔의 점이나 줄 따위가 뚜렷하게 섞인 자국",
+ "searchValue": "그림을 직업으로 하지 않는 선비나 사대부들이 여흥으로 자신들의 심중을 표현하여 그린 그림",
"value": "돋움체",
"points": 1,
"category": "FontName",
- "item": "문구 (얼룩)/② 글씨체 (돋움체)"
+ "item": "문구 (문인화)/② 글씨체 (돋움체)"
},
"27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
- "searchValue": "본바탕에 다른 빛깔의 점이나 줄 따위가 뚜렷하게 섞인 자국",
+ "searchValue": "그림을 직업으로 하지 않는 선비나 사대부들이 여흥으로 자신들의 심중을 표현하여 그린 그림",
"value": "900",
"points": 1,
"category": "OneAnswer",
- "item": "문구 (얼룩)/③ 크기 (9pt)"
+ "item": "문구 (문인화)/③ 크기 (9pt)"
},
"28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
- "searchValue": "본바탕에 다른 빛깔의 점이나 줄 따위가 뚜렷하게 섞인 자국",
+ "searchValue": "그림을 직업으로 하지 않는 선비나 사대부들이 여흥으로 자신들의 심중을 표현하여 그린 그림",
"value": "LatinSmall",
"points": 2,
"category": "OneAnswer",
@@ -580,80 +580,80 @@
},
"29": {
"path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
- "ignoreWord": "Refrigerator",
+ "ignoreWord": "Vitamin",
"value": true,
"points": 3,
"category": "Boolean",
- "item": "Refrigerator/영단어 미입력, 대소문자/오타 시 전체 감점",
+ "item": "Vitamin/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
},
"30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [
- ["적자", "赤字"],
- ["가치", "價値"],
- ["제거", "除去"],
- ["청소", "淸掃"],
- ["광택", "光澤"]
+ ["매향", "梅香"],
+ ["불의", "不義"],
+ ["국화", "菊花"],
+ ["매실", "梅實"],
+ ["해독", "解毒"]
],
"value": 10,
"points": 10,
"category": "Hanja",
- "item": "① 적자(赤字), ② 가치(價値), ③ 제거(除去), ④ 청소(淸掃), ⑤ 광택(光澤)"
+ "item": "① 매향(梅香), ② 불의(不義), ③ 국화(菊花), ④ 매실(梅實), ⑤ 해독(解毒)"
},
"31": {
- "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'용은주로')])",
+ "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'흰색,분')])",
"value": true,
"points": 3,
"category": "Boolean",
- "item": "문구 (…재활용이 주로 정치적…)>'이'→'은' 글자바꿈"
+ "item": "문구 (…청색, 분홍색, 붉은색 등 다양한 색을…)>'청 → 흰' 글자바꿈"
},
"32": {
- "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'량만재활')])",
+ "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'킨과폴리')])",
"value": true,
"points": 3,
"category": "Boolean",
- "item": "문구 (상징적으로 재활용 소량만 하는 경우도)>'재활용 / 소량만' 순서바꿈"
+ "item": "문구 (…항산화 성분인 폴리페놀은 카테킨과 해독(解讀)과…)>'폴리페놀은 / 카테킨과' 순서바꿈"
},
"33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
- "searchValue": "재활용 주민 참여율(%)",
- "value": "궁서",
+ "searchValue": "광양매실축제 만족도(단위 : %)",
+ "value": "굴림체",
"points": 1,
"category": "FontName",
- "item": "제목 문구 (재활용 주민 참여율(%))/① 글씨체 (궁서)"
+ "item": "제목 문구 (광양매실축제 만족도(단위 : %))/① 글씨체 (굴림체)"
},
"34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
- "searchValue": "재활용 주민 참여율(%)",
+ "searchValue": "광양매실축제 만족도(단위 : %)",
"value": "1200",
"points": 1,
"category": "OneAnswer",
- "item": "제목 문구 (재활용 주민 참여율(%))/② 크기 (1200)"
+ "item": "제목 문구 (광양매실축제 만족도(단위 : %))/② 크기 (1200)"
},
"35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
- "searchValue": "재활용 주민 참여율(%)",
+ "searchValue": "광양매실축제 만족도(단위 : %)",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
- "item": "제목 문구 (재활용 주민 참여율(%))/③ 진하게"
+ "item": "제목 문구 (광양매실축제 만족도(단위 : %))/③ 진하게"
},
"36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
- "searchValue": "재활용 주민 참여율(%)",
+ "searchValue": "광양매실축제 만족도(단위 : %)",
"value": "Center",
"points": 1,
"category": "OneAnswer",
- "item": "제목 문구 (재활용 주민 참여율(%))/④ 정렬 (가운데 정렬)"
+ "item": "제목 문구 (광양매실축제 만족도(단위 : %))/④ 정렬 (가운데 정렬)"
},
"37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
- "value": "33,174,201",
+ "value": "251,205,151",
"points": 2,
"category": "Color",
- "item": "위쪽 제목 셀/① 색상(RGB:33,174,201)"
+ "item": "위쪽 제목 셀/① 색상(RGB:251,205,151)"
},
"38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -682,11 +682,11 @@
"41": {
"path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
- "value": "굴림",
+ "value": "돋움체",
"points": 1,
"category": "TableFontName",
"category_tmp": "FontName",
- "item": "글자모양/① 글씨체 (굴림)",
+ "item": "글자모양/① 글씨체 (돋움체)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
},
"42": {
@@ -714,11 +714,11 @@
},
"45": {
"chart_xpath": "",
- "chart_type": "표식만 있는 분산형",
+ "chart_type": "곡선이 있는 분산형",
"value": true,
"points": 2,
"category": "ChartType",
- "item": "① 종류 (표식만 있는 분산형)",
+ "item": "① 종류 (곡선이 있는 분산형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
},
"46": {
@@ -738,10 +738,10 @@
},
"48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
- "value": "80",
+ "value": "90",
"points": 2,
"category": "mmSize",
- "item": "④ 크기-높이 (80 mm)"
+ "item": "④ 크기-높이 (90 mm)"
},
"49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
@@ -753,28 +753,28 @@
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
- "searchValue": "도시별 재활용 참여율",
- "value": "돋움",
+ "searchValue": "광양매실축제 만족도",
+ "value": "궁서체",
"points": 1,
"category": "OneAnswer",
- "item": "제목 문구 (도시별 재활용 참여율)/① 글씨체 (돋움)"
+ "item": "제목 문구 (광양매실축제 만족도)/① 글씨체 (궁서체)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
- "searchValue": "도시별 재활용 참여율",
+ "searchValue": "광양매실축제 만족도",
"value": "1300",
"points": 1,
"category": "OneAnswer",
- "item": "제목 문구 (도시별 재활용 참여율)/② 크기 (1300)"
+ "item": "제목 문구 (광양매실축제 만족도)/② 크기 (1300)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b",
- "searchValue": "도시별 재활용 참여율",
+ "searchValue": "광양매실축제 만족도",
"value": "1",
"points": 1,
"category": "OneAnswer",
- "item": "제목 문구 (도시별 재활용 참여율)/③ 기울임",
+ "item": "제목 문구 (광양매실축제 만족도)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
diff --git a/JSON/2622/DIW_2622C.json b/JSON/2622/DIW_2622C.json
new file mode 100644
index 0000000..3eea433
--- /dev/null
+++ b/JSON/2622/DIW_2622C.json
@@ -0,0 +1,850 @@
+{
+ "0": {
+ "0": {
+ "path": "",
+ "path2": "",
+ "points": 0,
+ "category": "파일저장",
+ "item": "파일명 (수검번호.hwp/hwpx)"
+ },
+ "1": {
+ "path": "//PAGEMARGIN",
+ "value": {
+ "Top": 20,
+ "Bottom": 20,
+ "Left": 20,
+ "Right": 20,
+ "Header": 10,
+ "Footer": 10,
+ "Gutter": 0
+ },
+ "tolerance": 1,
+ "points": 4,
+ "category": "PageSetting",
+ "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
+ },
+ "2": {
+ "path": "",
+ "value": {
+ "FontName": "바탕",
+ "FontSize": "1000",
+ "Alignment": "Justify",
+ "LineSpacing": "160"
+ },
+ "points": 4,
+ "category": "BasicSetting",
+ "item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
+ },
+ "3": {
+ "path": "",
+ "value": null,
+ "points": 40,
+ "category": "오타감점",
+ "item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
+ }
+ },
+ "1": {
+ "1": {
+ "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
+ "searchValue": "새콤달콤토마토축제",
+ "value": "돋움",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (새콤달콤토마토축제)/① 글씨체 (돋움)"
+ },
+ "2": {
+ "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
+ "searchValue": "새콤달콤토마토축제",
+ "value": "217,113,111",
+ "points": 2,
+ "category": "Color",
+ "item": "문구 (새콤달콤토마토축제)/② 채우기 : 색상(RGB:217,113,111)"
+ },
+ "3": {
+ "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
+ "searchValue": "새콤달콤토마토축제",
+ "value": "130",
+ "tolerance": 1,
+ "points": 2,
+ "category": "mmSize",
+ "item": "문구 (새콤달콤토마토축제)/③ 크기-너비 (130 mm)"
+ },
+ "4": {
+ "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
+ "searchValue": "새콤달콤토마토축제",
+ "value": "20",
+ "tolerance": 1,
+ "points": 2,
+ "category": "mmSize",
+ "item": "문구 (새콤달콤토마토축제)/④ 크기-높이 (20 mm)"
+ },
+ "5": {
+ "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
+ "searchValue": "새콤달콤토마토축제",
+ "value": "true",
+ "points": 2,
+ "category": "OneAnswer",
+ "item": "문구 (새콤달콤토마토축제)/⑤ 위치 (글자처럼 취급)"
+ },
+ "6": {
+ "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
+ "searchValue": "새콤달콤토마토축제",
+ "value": "Center",
+ "points": 2,
+ "category": "OneAnswer",
+ "item": "문구 (새콤달콤토마토축제)/⑥ 정렬 (가운데 정렬)"
+ },
+ "7": {
+ "path": "//TEXTART[@Text='{searchValue}']",
+ "searchValue": "새콤달콤토마토축제",
+ "value": true,
+ "points": 2,
+ "category": "Boolean",
+ "item": "문구 (새콤달콤토마토축제)/⑦ 글맵시모양 (육안확인)"
+ },
+ "8": {
+ "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
+ "searchValue": "토",
+ "value": {
+ "Height": 2800,
+ "Width": 2800
+ },
+ "tolerance": 200,
+ "points": 1,
+ "category": "TwoLineSize",
+ "item": "어/① 모양 (2줄)"
+ },
+ "9": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "토",
+ "value": "궁서체",
+ "points": 1,
+ "category": "FontName",
+ "item": "어/② 글씨체 (궁서체)"
+ },
+ "10": {
+ "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
+ "searchValue": "토",
+ "value": "163,232,239",
+ "points": 2,
+ "category": "Color",
+ "item": "어/③ 면색 : 색상(RGB:163,232,239)"
+ },
+ "11": {
+ "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
+ "searchValue": "토",
+ "value": "3.0",
+ "tolerance": 1,
+ "points": 2,
+ "category": "mmSize",
+ "item": "어/④ 본문과의 간격 : 3.0mm"
+ },
+ "12": {
+ "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
+ "searchValue": "세계 10대 건강식품",
+ "value": "ITALIC",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구 (세계 10대 건강식품)/① ITALIC"
+ },
+ "13": {
+ "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
+ "searchValue": "세계 10대 건강식품",
+ "value": "UNDERLINE",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구 (세계 10대 건강식품)/② UNDERLINE"
+ },
+ "14": {
+ "path": "//CHAR[contains(string(.),'{char1}')]/text()",
+ "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
+ "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
+ "char1": "◎",
+ "char2": "◎",
+ "char3": "※",
+ "value": 3,
+ "points": 3,
+ "category": "SpecialChar",
+ "item": "① ◎, ② ◎, ③ ※"
+ },
+ "15": {
+ "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
+ "searchValue": "축제안내",
+ "value": "굴림",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구 (◎ 축제안내 ◎)/① 글씨체 (굴림)"
+ },
+ "16": {
+ "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
+ "match_str": "축제안내",
+ "value": "Center",
+ "points": 1,
+ "category": "Align",
+ "item": "문구 (◎ 축제안내 ◎)/② 정렬 (가운데 정렬)"
+ },
+ "17": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
+ "searchValue": "다양한 유기농 농산물(토마토, 블루베리, 새싹 등)",
+ "value": "BOLD",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구 (다양한 유기농 농산물(토마토, 블루베리, 새싹 등))/① BOLD"
+ },
+ "18": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
+ "searchValue": "다양한 유기농 농산물(토마토, 블루베리, 새싹 등)",
+ "value": "UNDERLINE",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구 (다양한 유기농 농산물(토마토, 블루베리, 새싹 등))/② UNDERLINE"
+ },
+ "19": {
+ "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
+ "searchValue": "기타사항",
+ "value": {
+ "Left": 13,
+ "Indent": 12
+ },
+ "points": 2,
+ "category": "ParaShape",
+ "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (13), 내어쓰기 (12)",
+ "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
+ },
+ "20": {
+ "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
+ "searchValue": "2026. 02. 08.",
+ "value": "1300",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (2026. 02. 08.)/① 크기 (1300)",
+ "desc": "1pt당 100"
+ },
+ "21": {
+ "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
+ "searchValue": "2026. 02. 08.",
+ "value": "Center",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (2026. 02. 08.)/② 정렬 (가운데 정렬)"
+ },
+ "22": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "한국유기농토마토협회",
+ "value": "견고딕",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구 (한국유기농토마토협회)/① 글씨체 (견고딕)"
+ },
+ "23": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "한국유기농토마토협회",
+ "value": "2400",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (한국유기농토마토협회)/② 크기 (2400)"
+ },
+ "24": {
+ "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
+ "searchValue": "한국유기농토마토협회",
+ "value": "Center",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (한국유기농토마토협회)/③ 정렬 (가운데 정렬)"
+ },
+ "25": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "DIAT",
+ "value": "궁서",
+ "points": 1,
+ "category": "Header.FontName",
+ "item": "문구 (DIAT)/① 글꼴 (궁서)"
+ },
+ "26": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "DIAT",
+ "value": "900",
+ "points": 1,
+ "category": "Header.OneAnswer",
+ "item": "문구 (DIAT)/② 크기 (9pt)"
+ },
+ "27": {
+ "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
+ "searchValue": "DIAT",
+ "value": "Right",
+ "points": 1,
+ "category": "Header.OneAnswer",
+ "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
+ },
+ "28": {
+ "path": "//PAGENUM/@FormatType",
+ "value": "HangulSyllable",
+ "points": 2,
+ "category": "PageNumber",
+ "item": "① 쪽 번호 매기기 (가,나,다 순으로)",
+ "desc1": {
+ "가,나,다": "HangulSyllable",
+ "1,2,3": "Digit",
+ "일,이,삼": "HangulPhonetic",
+ "갑,을,병": "DecagonCircle",
+ "A,B,C": "LatinCapital",
+ "a,b,c": "LatinSmall",
+ "Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
+ "①,②,③": "CircledDigit",
+ "一,二,三": "Ideograph",
+ "㉠,㉡,㉢": "CircledHangulJamo",
+ "ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
+ "㊀,㊁,㊂": "CircledIdeograph",
+ "i,ii,iii": "RomanSmall",
+ "I,II,III": "RomanCapital",
+ "甲,乙,丙": "DecagonCircleHanja",
+ "+,++,+++": "UserChar",
+ "*,**,***": "UserChar",
+ "정답에 맞는 값 value에 입력": ""
+ },
+ "desc2": "1, 2페이지 모두 정답이어야 점수 부여"
+ },
+ "29": {
+ "path": "//PAGENUM/@Pos",
+ "value": "BottomCenter",
+ "points": 2,
+ "category": "PageNumber",
+ "item": "가운데 아래",
+ "desc": "1, 2페이지 모두 정답이어야 점수 부여",
+ "desc2": {
+ "가운데 아래": "BottomCenter",
+ "오른쪽 아래": "BottomRight",
+ "왼쪽 아래": "BottomLeft"
+ }
+ },
+ "30": {
+ "path": "//CHAR[contains(text(),'{searchValue}')]",
+ "searchValue": "http",
+ "value": true,
+ "points": 2,
+ "category": "hyperlink",
+ "item": "문구 (http://www.ihd.or.kr)/하이퍼링크 없이 작성",
+ "desc": "searchValue에 해당하는 주소 문구에 하이퍼링크가 하나라도 설정되어 있으면 오답"
+ },
+ "31": {
+ "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
+ "value": "200",
+ "first_word": "토",
+ "points": 2,
+ "category": "LineSpacing",
+ "item": "문제 1 줄간격 200% 설정",
+ "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
+ }
+ },
+ "2": {
+ "1": {
+ "path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside",
+ "path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]",
+ "value": {
+ "header_inside": true,
+ "all_double_slim": true
+ },
+ "points": 4,
+ "category": "PageBorder",
+ "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
+ },
+ "2": {
+ "path": "count(//SECTION)>1",
+ "value": true,
+ "points": 3,
+ "category": "Boolean",
+ "item": "① 구역나누기",
+ "desc": "섹션이 1개 이상이면 점수부여"
+ },
+ "3": {
+ "path": "./TEXT/COLDEF/@Count",
+ "value": "2",
+ "points": 3,
+ "category": "TwoColumn",
+ "item": "② 다단 2단"
+ },
+ "4": {
+ "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
+ "value": "60",
+ "points": 2,
+ "category": "Rectangle.mmSize",
+ "item": "문구 (슈퍼푸드 토마토)/① 크기-너비 (60 mm)"
+ },
+ "5": {
+ "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
+ "value": "12",
+ "points": 2,
+ "category": "Rectangle.mmSize",
+ "item": "문구 (슈퍼푸드 토마토)/② 크기-높이 (12 mm)"
+ },
+ "6": {
+ "path": "//RECTANGLE//LINESHAPE",
+ "value": {
+ "Style": "DoubleSlim",
+ "Width": "283"
+ },
+ "points": 2,
+ "category": "Rectangle.LineShape",
+ "item": "문구 (슈퍼푸드 토마토)/③ 테두리 : 이중 실선(1.00mm)",
+ "desc": "1mm = 283pt value['Width']에 pt값 입력"
+ },
+ "7": {
+ "path": "//RECTANGLE/@Ratio",
+ "value": "50",
+ "points": 2,
+ "category": "Rectangle.OneAnswer",
+ "item": "문구 (슈퍼푸드 토마토)/④ 글상자 모서리 (둥근모양)",
+ "desc": "모서리 비율 반원:50 / 둥근모양:20"
+ },
+ "8": {
+ "path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
+ "value": "250,171,226",
+ "points": 2,
+ "category": "Rectangle.Color",
+ "item": "문구 (슈퍼푸드 토마토)/⑤ 채우기 : 색상(RGB:250,171,226)"
+ },
+ "9": {
+ "path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
+ "value": "true",
+ "points": 1,
+ "category": "Rectangle.OneAnswer",
+ "item": "문구 (슈퍼푸드 토마토)/⑥ 글상자 위치 (글자처럼 취급)"
+ },
+ "10": {
+ "path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
+ "value": "Center",
+ "points": 1,
+ "category": "Rectangle.TextBoxAlign",
+ "item": "문구 (슈퍼푸드 토마토)/⑦ 글상자 정렬 (가운데 정렬)"
+ },
+ "11": {
+ "path": ".//RECTANGLE//TEXT/@CharShape",
+ "value": "돋움체",
+ "points": 1,
+ "category": "Rectangle.FontName",
+ "item": "문구 (슈퍼푸드 토마토)/⑧ 글씨체 (돋움체)"
+ },
+ "12": {
+ "path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
+ "value": "2000",
+ "points": 1,
+ "category": "Rectangle.FontSize",
+ "item": "문구 (슈퍼푸드 토마토)/⑨ 글씨크기 (2000)",
+ "desc": "1pt당 100"
+ },
+ "13": {
+ "path": "//PARASHAPE[@Id={rect_parashape_id}]/@Align",
+ "value": "Center",
+ "points": 1,
+ "category": "Rectangle.TextBoxAlign",
+ "item": "문구 (슈퍼푸드 토마토)/⑩ 정렬 (가운데 정렬)"
+ },
+ "14": {
+ "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
+ "value": true,
+ "points": 2,
+ "category": "Boolean",
+ "item": "① 파일명 \"그림C.jpg\" 삽입",
+ "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
+ },
+ "15": {
+ "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
+ "value": "80",
+ "points": 2,
+ "category": "mmSize",
+ "item": "② 크기-너비 (80 mm)"
+ },
+ "16": {
+ "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
+ "value": "40",
+ "points": 2,
+ "category": "mmSize",
+ "item": "③ 크기-높이 (40 mm)"
+ },
+ "17": {
+ "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
+ "value": "0",
+ "points": 2,
+ "category": "mmSize",
+ "item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
+ },
+ "18": {
+ "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
+ "value": "23",
+ "points": 2,
+ "category": "mmSize",
+ "item": "⑤ 위치 (어울림 : 세로-쪽의 위 23 mm)"
+ },
+ "19": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "1. 토마토의 종류",
+ "value": "굴림체",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구① (1. 토마토의 종류)/① 글씨체 (굴림체)"
+ },
+ "20": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "1. 토마토의 종류",
+ "value": "1200",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구① (1. 토마토의 종류)/② 크기 (1200)"
+ },
+ "21": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "searchValue": "1. 토마토의 종류",
+ "value": "BOLD",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구① (1. 토마토의 종류)/③ 진하게"
+ },
+ "22": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "2. 토마토의 효능",
+ "value": "굴림체",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구② (2. 토마토의 효능)/① 글씨체 (굴림체)"
+ },
+ "23": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "2. 토마토의 효능",
+ "value": "1200",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구② (2. 토마토의 효능)/② 크기 (1200)"
+ },
+ "24": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "searchValue": "2. 토마토의 효능",
+ "value": "BOLD",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구② (2. 토마토의 효능)/③ 진하게"
+ },
+ "25": {
+ "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
+ "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
+ "option": "혈관",
+ "value": true,
+ "points": 2,
+ "category": "Boolean",
+ "item": "문구 (혈관)/① 각주 설정 및 문구 입력"
+ },
+ "26": {
+ "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
+ "searchValue": "혈액을 온몸으로 순환시키는 통로",
+ "value": "굴림",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구 (혈관)/② 글씨체 (굴림)"
+ },
+ "27": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
+ "searchValue": "혈액을 온몸으로 순환시키는 통로",
+ "value": "900",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (혈관)/③ 크기 (9pt)"
+ },
+ "28": {
+ "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
+ "searchValue": "혈액을 온몸으로 순환시키는 통로",
+ "value": "CircledLatinSmall",
+ "points": 2,
+ "category": "OneAnswer",
+ "item": "문구 (전당)/④ 각주 번호모양",
+ "desc": {
+ "가,나,다": "HangulSyllable",
+ "1,2,3": "Digit",
+ "일,이,삼": "HangulPhonetic",
+ "갑,을,병": "DecagonCircle",
+ "A,B,C": "LatinCapital",
+ "a,b,c": "LatinSmall",
+ "Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
+ "①,②,③": "CircledDigit",
+ "一,二,三": "Ideograph",
+ "㉠,㉡,㉢": "CircledHangulJamo",
+ "ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
+ "㊀,㊁,㊂": "CircledIdeograph",
+ "i,ii,iii": "RomanSmall",
+ "I,II,III": "RomanCapital",
+ "甲,乙,丙": "DecagonCircleHanja",
+ "+,++,+++": "UserChar",
+ "*,**,***": "UserChar",
+ "정답에 맞는 값 value에 입력": ""
+ }
+ },
+ "29": {
+ "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
+ "ignoreWord": "Diabetes",
+ "value": true,
+ "points": 3,
+ "category": "Boolean",
+ "item": "Diabetes/영단어 미입력, 대소문자/오타 시 전체 감점",
+ "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
+ },
+ "30": {
+ "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
+ "word": [
+ ["재배", "栽培"],
+ ["전후", "前後"],
+ ["모양", "模樣"],
+ ["당도", "糖度"],
+ ["개선", "改善"]
+ ],
+ "value": 10,
+ "points": 10,
+ "category": "Hanja",
+ "item": "① 재배(栽培), ② 전후(前後), ③ 모양(模樣), ④ 당도(糖度), ⑤ 개선(改善)"
+ },
+ "31": {
+ "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'토와150g')])",
+ "value": true,
+ "points": 3,
+ "category": "Boolean",
+ "item": "문구 (…전후(前後)인 방울토마토가 150g 이상인…)>'가'→'와' 글자바꿈"
+ },
+ "32": {
+ "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'광의기능')])",
+ "value": true,
+ "points": 3,
+ "category": "Boolean",
+ "item": "문구 (…원활하게 해주어 기능을 방광의 촉진 시켜주기…)>'기능을 / 방광의' 순서바꿈"
+ },
+ "33": {
+ "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
+ "searchValue": "연령별 축제 만족도(단위:%)",
+ "value": "궁서체",
+ "points": 1,
+ "category": "FontName",
+ "item": "제목 문구 (연령별 축제 만족도(단위:%))/① 글씨체 (궁서체)"
+ },
+ "34": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "연령별 축제 만족도(단위:%)",
+ "value": "1200",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (연령별 축제 만족도(단위:%))/② 크기 (1200)"
+ },
+ "35": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "searchValue": "연령별 축제 만족도(단위:%)",
+ "value": "BOLD",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "제목 문구 (연령별 축제 만족도(단위:%))/③ 진하게"
+ },
+ "36": {
+ "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
+ "searchValue": "연령별 축제 만족도(단위:%)",
+ "value": "Center",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (연령별 축제 만족도(단위:%))/④ 정렬 (가운데 정렬)"
+ },
+ "37": {
+ "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
+ "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
+ "value": "152,250,148",
+ "points": 2,
+ "category": "Color",
+ "item": "위쪽 제목 셀/① 색상(RGB:152,250,148)"
+ },
+ "38": {
+ "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
+ "value": "BOLD",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "위쪽 제목 셀/② 진하게",
+ "desc": "글자 속성이라 CELLZONE으로 적용 되지 않음"
+ },
+ "39": {
+ "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type",
+ "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type",
+ "value": "DoubleSlim",
+ "points": 2,
+ "category": "TableAnswer",
+ "item": "제목 셀 아래선/① 이중실선"
+ },
+ "40": {
+ "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width",
+ "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width",
+ "value": "0.5mm",
+ "points": 2,
+ "category": "TableAnswer",
+ "item": "제목 셀 아래선/② 0.5mm"
+ },
+ "41": {
+ "path": "//TABLE//TEXT/@CharShape",
+ "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
+ "value": "중고딕",
+ "points": 1,
+ "category": "TableFontName",
+ "category_tmp": "FontName",
+ "item": "글자모양/① 글씨체 (중고딕)",
+ "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
+ },
+ "42": {
+ "path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
+ "value": "1000",
+ "points": 1,
+ "category": "TableAnswer",
+ "item": "글자모양/② 크기 (1000)"
+ },
+ "43": {
+ "path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
+ "value": "Center",
+ "points": 1,
+ "category": "TableAnswer",
+ "item": "글자모양/③ 정렬 (가운데 정렬)"
+ },
+ "44": {
+ "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
+ "option": "AVG",
+ "value": true,
+ "points": 4,
+ "category": "Boolean",
+ "item": "블록 계산식/합계",
+ "desc": "option값에 합계는 SUM / 평균은 AVG"
+ },
+ "45": {
+ "chart_xpath": "",
+ "chart_type": "묶은 가로 막대형",
+ "value": true,
+ "points": 2,
+ "category": "ChartType",
+ "item": "① 종류 (묶은 가로 막대형)",
+ "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
+ },
+ "46": {
+ "chart_xpath": "//c:valAx/c:majorTickMark/@val",
+ "value": "out",
+ "points": 2,
+ "category": "ChartOneAnswer",
+ "item": "② 값 축 주 눈금선",
+ "desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
+ },
+ "47": {
+ "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
+ "value": "80",
+ "points": 2,
+ "category": "mmSize",
+ "item": "③ 크기-너비 (80 mm)"
+ },
+ "48": {
+ "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
+ "value": "90",
+ "points": 2,
+ "category": "mmSize",
+ "item": "④ 크기-높이 (90 mm)"
+ },
+ "49": {
+ "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
+ "value": true,
+ "points": 2,
+ "category": "Boolean",
+ "item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
+ "desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
+ },
+ "50": {
+ "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
+ "searchValue": "연령별 축제 만족도",
+ "value": "굴림체",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (연령별 축제 만족도)/① 글씨체 (굴림체)"
+ },
+ "51": {
+ "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
+ "searchValue": "연령별 축제 만족도",
+ "value": "1400",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (연령별 축제 만족도)/② 크기 (1400)"
+ },
+ "52": {
+ "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
+ "option": "b",
+ "searchValue": "연령별 축제 만족도",
+ "value": "1",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (연령별 축제 만족도)/③ 기울임",
+ "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
+ },
+ "53": {
+ "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface",
+ "value": "바탕체",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "X축/① 글꼴 (바탕체)"
+ },
+ "54": {
+ "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
+ "value": "900",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "X축/② 크기 (9pt)"
+ },
+ "55": {
+ "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
+ "option": "i",
+ "value": "1",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "X축/③ 기울임",
+ "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
+ },
+ "56": {
+ "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface",
+ "value": "바탕체",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "Y축/① 글꼴 (바탕체)"
+ },
+ "57": {
+ "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
+ "value": "900",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "Y축/② 크기 (9pt)"
+ },
+ "58": {
+ "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
+ "option": "i",
+ "value": "1",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "Y축/③ 기울임",
+ "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
+ },
+ "59": {
+ "chart_xpath": "//c:legend//a:ea/@typeface",
+ "value": "바탕체",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "범례/① 글꼴 (바탕체)"
+ },
+ "60": {
+ "chart_xpath": "//c:legend//a:defRPr/@sz",
+ "value": "900",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "범례/② 크기 (9pt)"
+ },
+ "61": {
+ "chart_xpath": "//c:legend//a:defRPr/@{option}",
+ "option": "i",
+ "value": "1",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "범례/③ 기울임",
+ "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
+ }
+ }
+}
diff --git a/JSON/2622/DIW_2622D.json b/JSON/2622/DIW_2622D.json
new file mode 100644
index 0000000..d28589c
--- /dev/null
+++ b/JSON/2622/DIW_2622D.json
@@ -0,0 +1,841 @@
+{
+ "0": {
+ "0": {
+ "path": "",
+ "path2": "",
+ "points": 0,
+ "category": "파일저장",
+ "item": "파일명 (수검번호.hwp/hwpx)"
+ },
+ "1": {
+ "path": "//PAGEMARGIN",
+ "value": {
+ "Top": 20,
+ "Bottom": 20,
+ "Left": 20,
+ "Right": 20,
+ "Header": 10,
+ "Footer": 10,
+ "Gutter": 0
+ },
+ "tolerance": 1,
+ "points": 4,
+ "category": "PageSetting",
+ "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
+ },
+ "2": {
+ "path": "",
+ "value": {
+ "FontName": "바탕",
+ "FontSize": "1000",
+ "Alignment": "Justify",
+ "LineSpacing": "160"
+ },
+ "points": 4,
+ "category": "BasicSetting",
+ "item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
+ },
+ "3": {
+ "path": "",
+ "value": null,
+ "points": 40,
+ "category": "오타감점",
+ "item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
+ }
+ },
+ "1": {
+ "1": {
+ "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
+ "searchValue": "별사랑천문대캠프안내",
+ "value": "궁서체",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (별사랑천문대캠프안내)/① 글씨체 (궁서체)"
+ },
+ "2": {
+ "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
+ "searchValue": "별사랑천문대캠프안내",
+ "value": "53,164,78",
+ "points": 2,
+ "category": "Color",
+ "item": "문구 (별사랑천문대캠프안내)/② 채우기 : 색상(RGB:53,164,78)"
+ },
+ "3": {
+ "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
+ "searchValue": "별사랑천문대캠프안내",
+ "value": "120",
+ "tolerance": 1,
+ "points": 2,
+ "category": "mmSize",
+ "item": "문구 (별사랑천문대캠프안내)/③ 크기-너비 (120 mm)"
+ },
+ "4": {
+ "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
+ "searchValue": "별사랑천문대캠프안내",
+ "value": "20",
+ "tolerance": 1,
+ "points": 2,
+ "category": "mmSize",
+ "item": "문구 (별사랑천문대캠프안내)/④ 크기-높이 (20 mm)"
+ },
+ "5": {
+ "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
+ "searchValue": "별사랑천문대캠프안내",
+ "value": "true",
+ "points": 2,
+ "category": "OneAnswer",
+ "item": "문구 (별사랑천문대캠프안내)/⑤ 위치 (글자처럼 취급)"
+ },
+ "6": {
+ "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
+ "searchValue": "별사랑천문대캠프안내",
+ "value": "Center",
+ "points": 2,
+ "category": "OneAnswer",
+ "item": "문구 (별사랑천문대캠프안내)/⑥ 정렬 (가운데 정렬)"
+ },
+ "7": {
+ "path": "//TEXTART[@Text='{searchValue}']",
+ "searchValue": "별사랑천문대캠프안내",
+ "value": true,
+ "points": 2,
+ "category": "Boolean",
+ "item": "문구 (별사랑천문대캠프안내)/⑦ 글맵시모양 (육안확인)"
+ },
+ "8": {
+ "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
+ "searchValue": "별",
+ "value": {
+ "Height": 2800,
+ "Width": 2800
+ },
+ "tolerance": 200,
+ "points": 1,
+ "category": "TwoLineSize",
+ "item": "어/① 모양 (2줄)"
+ },
+ "9": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "별",
+ "value": "굴림체",
+ "points": 1,
+ "category": "FontName",
+ "item": "어/② 글씨체 (굴림체)"
+ },
+ "10": {
+ "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
+ "searchValue": "별",
+ "value": "211,202,24",
+ "points": 2,
+ "category": "Color",
+ "item": "어/③ 면색 : 색상(RGB:211,202,24)"
+ },
+ "11": {
+ "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
+ "searchValue": "별",
+ "value": "3.0",
+ "tolerance": 1,
+ "points": 2,
+ "category": "mmSize",
+ "item": "어/④ 본문과의 간격 : 3.0mm"
+ },
+ "12": {
+ "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
+ "searchValue": "천문우주과학 체험학습",
+ "value": "BOLD",
+ "points": 2,
+ "category": "FontAttribute",
+ "item": "문구 (천문우주과학 체험학습)/① BOLD"
+ },
+ "13": {
+ "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
+ "searchValue": "천문우주과학 체험학습",
+ "value": "UNDERLINE",
+ "points": 2,
+ "category": "FontAttribute",
+ "item": "문구 (천문우주과학 체험학습)/② UNDERLINE"
+ },
+ "14": {
+ "path": "//CHAR[contains(string(.),'{char1}')]/text()",
+ "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
+ "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
+ "char1": "●",
+ "char2": "●",
+ "char3": "※",
+ "value": 3,
+ "points": 3,
+ "category": "SpecialChar",
+ "item": "① ● , ② ● , ③ ※"
+ },
+ "15": {
+ "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
+ "searchValue": "참가안내",
+ "value": "굴림",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구 (● 참가안내 ●)/① 글씨체 (굴림)"
+ },
+ "16": {
+ "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
+ "match_str": "참가안내",
+ "value": "Center",
+ "points": 1,
+ "category": "Align",
+ "item": "문구 (● 참가안내 ●)/② 정렬 (가운데 정렬)"
+ },
+ "17": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
+ "searchValue": "그룹별 20명(선착순 마감)",
+ "value": "ITALIC",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구 (그룹별 20명(선착순 마감))/① ITALIC"
+ },
+ "18": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
+ "searchValue": "그룹별 20명(선착순 마감)",
+ "value": "UNDERLINE",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구 (그룹별 20명(선착순 마감))/② UNDERLINE"
+ },
+ "19": {
+ "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
+ "searchValue": "기타사항",
+ "value": {
+ "Left": 15,
+ "Indent": 14
+ },
+ "points": 2,
+ "category": "ParaShape",
+ "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15), 내어쓰기 (14)",
+ "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
+ },
+ "20": {
+ "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
+ "searchValue": "2026. 02. 08.",
+ "value": "1400",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (2026. 02. 08.)/① 크기 (1400)",
+ "desc": "1pt당 100"
+ },
+ "21": {
+ "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
+ "searchValue": "2026. 02. 08.",
+ "value": "Center",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (2026. 02. 08.)/② 정렬 (가운데 정렬)"
+ },
+ "22": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "별사랑천문대",
+ "value": "맑은 고딕",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구 (별사랑천문대)/① 글씨체 (맑은 고딕)"
+ },
+ "23": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "별사랑천문대",
+ "value": "2600",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (별사랑천문대)/② 크기 (2600)"
+ },
+ "24": {
+ "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
+ "searchValue": "별사랑천문대",
+ "value": "Center",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (별사랑천문대)/③ 정렬 (가운데 정렬)"
+ },
+ "25": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "DIAT",
+ "value": "돋움",
+ "points": 1,
+ "category": "Header.FontName",
+ "item": "문구 (DIAT)/① 글꼴 (돋움)"
+ },
+ "26": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "DIAT",
+ "value": "900",
+ "points": 1,
+ "category": "Header.OneAnswer",
+ "item": "문구 (DIAT)/② 크기 (9pt)"
+ },
+ "27": {
+ "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
+ "searchValue": "DIAT",
+ "value": "Right",
+ "points": 1,
+ "category": "Header.OneAnswer",
+ "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
+ },
+ "28": {
+ "path": "//PAGENUM/@FormatType",
+ "value": "LatinCapital",
+ "points": 2,
+ "category": "PageNumber",
+ "item": "① 쪽 번호 매기기 (A,B,C 순으로)",
+ "desc1": {
+ "가,나,다": "HangulSyllable",
+ "1,2,3": "Digit",
+ "일,이,삼": "HangulPhonetic",
+ "갑,을,병": "DecagonCircle",
+ "A,B,C": "LatinCapital",
+ "a,b,c": "LatinSmall",
+ "Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
+ "①,②,③": "CircledDigit",
+ "一,二,三": "Ideograph",
+ "㉠,㉡,㉢": "CircledHangulJamo",
+ "ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
+ "㊀,㊁,㊂": "CircledIdeograph",
+ "i,ii,iii": "RomanSmall",
+ "I,II,III": "RomanCapital",
+ "甲,乙,丙": "DecagonCircleHanja",
+ "+,++,+++": "UserChar",
+ "*,**,***": "UserChar",
+ "정답에 맞는 값 value에 입력": ""
+ },
+ "desc2": "1, 2페이지 모두 정답이어야 점수 부여"
+ },
+ "29": {
+ "path": "//PAGENUM/@Pos",
+ "value": "BottomCenter",
+ "points": 2,
+ "category": "PageNumber",
+ "item": "가운데 아래",
+ "desc": "1, 2페이지 모두 정답이어야 점수 부여",
+ "desc2": {
+ "가운데 아래": "BottomCenter",
+ "오른쪽 아래": "BottomRight",
+ "왼쪽 아래": "BottomLeft"
+ }
+ },
+ "30": {
+ "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
+ "value": "180",
+ "first_word": "별",
+ "points": 2,
+ "category": "LineSpacing",
+ "item": "문제 1 줄간격 180% 설정",
+ "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
+ }
+ },
+ "2": {
+ "1": {
+ "path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside",
+ "path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]",
+ "value": {
+ "header_inside": true,
+ "all_double_slim": true
+ },
+ "points": 4,
+ "category": "PageBorder",
+ "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
+ },
+ "2": {
+ "path": "count(//SECTION)>1",
+ "value": true,
+ "points": 3,
+ "category": "Boolean",
+ "item": "① 구역나누기",
+ "desc": "섹션이 1개 이상이면 점수부여"
+ },
+ "3": {
+ "path": "./TEXT/COLDEF/@Count",
+ "value": "2",
+ "points": 3,
+ "category": "TwoColumn",
+ "item": "② 다단 2단"
+ },
+ "4": {
+ "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
+ "value": "60",
+ "points": 2,
+ "category": "Rectangle.mmSize",
+ "item": "문구 (하늘의 꽃, 별자리)/① 크기-너비 (60 mm)"
+ },
+ "5": {
+ "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
+ "value": "12",
+ "points": 2,
+ "category": "Rectangle.mmSize",
+ "item": "문구 (하늘의 꽃, 별자리)/② 크기-높이 (12 mm)"
+ },
+ "6": {
+ "path": "//RECTANGLE//LINESHAPE",
+ "value": {
+ "Style": "DoubleSlim",
+ "Width": "283"
+ },
+ "points": 2,
+ "category": "Rectangle.LineShape",
+ "item": "문구 (하늘의 꽃, 별자리)/③ 테두리 : 이중 실선(1.00mm)",
+ "desc": "1mm = 283pt value['Width']에 pt값 입력"
+ },
+ "7": {
+ "path": "//RECTANGLE/@Ratio",
+ "value": "20",
+ "points": 2,
+ "category": "Rectangle.OneAnswer",
+ "item": "문구 (하늘의 꽃, 별자리)/④ 글상자 모서리 (둥근모양)",
+ "desc": "모서리 비율 반원:50 / 둥근모양:20"
+ },
+ "8": {
+ "path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
+ "value": "191,179,233",
+ "points": 2,
+ "category": "Rectangle.Color",
+ "item": "문구 (하늘의 꽃, 별자리)/⑤ 채우기 : 색상(RGB:191,179,233)"
+ },
+ "9": {
+ "path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
+ "value": "true",
+ "points": 1,
+ "category": "Rectangle.OneAnswer",
+ "item": "문구 (하늘의 꽃, 별자리)/⑥ 글상자 위치 (글자처럼 취급)"
+ },
+ "10": {
+ "path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
+ "value": "Center",
+ "points": 1,
+ "category": "Rectangle.TextBoxAlign",
+ "item": "문구 (하늘의 꽃, 별자리)/⑦ 글상자 정렬 (가운데 정렬)"
+ },
+ "11": {
+ "path": ".//RECTANGLE//TEXT/@CharShape",
+ "value": "중고딕",
+ "points": 1,
+ "category": "Rectangle.FontName",
+ "item": "문구 (하늘의 꽃, 별자리)/⑧ 글씨체 (중고딕)"
+ },
+ "12": {
+ "path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
+ "value": "1600",
+ "points": 1,
+ "category": "Rectangle.FontSize",
+ "item": "문구 (하늘의 꽃, 별자리)/⑨ 글씨크기 (1600)",
+ "desc": "1pt당 100"
+ },
+ "13": {
+ "path": "//PARASHAPE[@Id={rect_parashape_id}]/@Align",
+ "value": "Center",
+ "points": 1,
+ "category": "Rectangle.TextBoxAlign",
+ "item": "문구 (하늘의 꽃, 별자리)/⑩ 정렬 (가운데 정렬)"
+ },
+ "14": {
+ "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
+ "value": true,
+ "points": 2,
+ "category": "Boolean",
+ "item": "① 파일명 \"그림D.jpg\" 삽입",
+ "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
+ },
+ "15": {
+ "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
+ "value": "80",
+ "points": 2,
+ "category": "mmSize",
+ "item": "② 크기-너비 (80 mm)"
+ },
+ "16": {
+ "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
+ "value": "40",
+ "points": 2,
+ "category": "mmSize",
+ "item": "③ 크기-높이 (40 mm)"
+ },
+ "17": {
+ "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
+ "value": "0",
+ "points": 2,
+ "category": "mmSize",
+ "item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
+ },
+ "18": {
+ "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
+ "value": "24",
+ "points": 2,
+ "category": "mmSize",
+ "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)"
+ },
+ "19": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "1. 별자리란?",
+ "value": "돋움체",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구① (1. 별자리란?)/① 글씨체 (돋움체)"
+ },
+ "20": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "1. 별자리란?",
+ "value": "1200",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구① (1. 별자리란?)/② 크기 (1200)"
+ },
+ "21": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "searchValue": "1. 별자리란?",
+ "value": "BOLD",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구① (1. 별자리란?)/③ 진하게"
+ },
+ "22": {
+ "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
+ "searchValue": "2. 우리나라 계절별 별자리",
+ "value": "돋움체",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구② (2. 우리나라 계절별 별자리)/① 글씨체 (돋움체)"
+ },
+ "23": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "2. 우리나라 계절별 별자리",
+ "value": "1200",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구② (2. 우리나라 계절별 별자리)/② 크기 (1200)"
+ },
+ "24": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "searchValue": "2. 우리나라 계절별 별자리",
+ "value": "BOLD",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "문구② (2. 우리나라 계절별 별자리)/③ 진하게"
+ },
+ "25": {
+ "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
+ "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
+ "option": "북두칠성",
+ "value": true,
+ "points": 2,
+ "category": "Boolean",
+ "item": "문구 (북두칠성)/① 각주 설정 및 문구 입력"
+ },
+ "26": {
+ "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
+ "searchValue": "큰곰자리의 꼬리에 해당하는 7개의 별",
+ "value": "굴림",
+ "points": 1,
+ "category": "FontName",
+ "item": "문구 (북두칠성)/② 글씨체 (굴림)"
+ },
+ "27": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
+ "searchValue": "큰곰자리의 꼬리에 해당하는 7개의 별",
+ "value": "900",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "문구 (북두칠성)/③ 크기 (9pt)"
+ },
+ "28": {
+ "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
+ "searchValue": "큰곰자리의 꼬리에 해당하는 7개의 별",
+ "value": "CircledLatinCapital",
+ "points": 2,
+ "category": "OneAnswer",
+ "item": "문구 (전당)/④ 각주 번호모양",
+ "desc": {
+ "가,나,다": "HangulSyllable",
+ "1,2,3": "Digit",
+ "일,이,삼": "HangulPhonetic",
+ "갑,을,병": "DecagonCircle",
+ "A,B,C": "LatinCapital",
+ "a,b,c": "LatinSmall",
+ "Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
+ "①,②,③": "CircledDigit",
+ "一,二,三": "Ideograph",
+ "㉠,㉡,㉢": "CircledHangulJamo",
+ "ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
+ "㊀,㊁,㊂": "CircledIdeograph",
+ "i,ii,iii": "RomanSmall",
+ "I,II,III": "RomanCapital",
+ "甲,乙,丙": "DecagonCircleHanja",
+ "+,++,+++": "UserChar",
+ "*,**,***": "UserChar",
+ "정답에 맞는 값 value에 입력": ""
+ }
+ },
+ "29": {
+ "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
+ "ignoreWord": "Babylonia",
+ "value": true,
+ "points": 3,
+ "category": "Boolean",
+ "item": "Babylonia/영단어 미입력, 대소문자/오타 시 전체 감점",
+ "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
+ },
+ "30": {
+ "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
+ "word": [
+ ["성좌", "星座"],
+ ["유래", "由來"],
+ ["표석", "標石"],
+ ["천구", "天球"],
+ ["계절", "季節"]
+ ],
+ "value": 10,
+ "points": 10,
+ "category": "Hanja",
+ "item": "① 성좌(星座), ② 유래(由來), ③ 표석(標石), ④ 천구(天球), ⑤ 계절(季節)"
+ },
+ "31": {
+ "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'역에해당')])",
+ "value": true,
+ "points": 3,
+ "category": "Boolean",
+ "item": "문구 (…지역이 해당하는 티그리스강과…)>'이 → 에' 글자바꿈"
+ },
+ "32": {
+ "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'나는반드')])",
+ "value": true,
+ "points": 3,
+ "category": "Boolean",
+ "item": "문구 (…둘 중 반드시 하나는…)>'반드시 / 하나는' 순서바꿈"
+ },
+ "33": {
+ "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
+ "searchValue": "지역별 천문대 수",
+ "value": "돋움체",
+ "points": 1,
+ "category": "FontName",
+ "item": "제목 문구 (지역별 천문대 수)/① 글씨체 (돋움체)"
+ },
+ "34": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
+ "searchValue": "지역별 천문대 수",
+ "value": "1200",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (지역별 천문대 수)/② 크기 (1200)"
+ },
+ "35": {
+ "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
+ "searchValue": "지역별 천문대 수",
+ "value": "BOLD",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "제목 문구 (지역별 천문대 수)/③ 진하게"
+ },
+ "36": {
+ "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
+ "searchValue": "지역별 천문대 수",
+ "value": "Center",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (지역별 천문대 수)/④ 정렬 (가운데 정렬)"
+ },
+ "37": {
+ "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
+ "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
+ "value": "255,164,95",
+ "points": 2,
+ "category": "Color",
+ "item": "위쪽 제목 셀/① 색상(RGB:255,164,95)"
+ },
+ "38": {
+ "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
+ "value": "BOLD",
+ "points": 1,
+ "category": "FontAttribute",
+ "item": "위쪽 제목 셀/② 진하게",
+ "desc": "글자 속성이라 CELLZONE으로 적용 되지 않음"
+ },
+ "39": {
+ "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type",
+ "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type",
+ "value": "DoubleSlim",
+ "points": 2,
+ "category": "TableAnswer",
+ "item": "제목 셀 아래선/① 이중실선"
+ },
+ "40": {
+ "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width",
+ "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width",
+ "value": "0.5mm",
+ "points": 2,
+ "category": "TableAnswer",
+ "item": "제목 셀 아래선/② 0.5mm"
+ },
+ "41": {
+ "path": "//TABLE//TEXT/@CharShape",
+ "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
+ "value": "궁서",
+ "points": 1,
+ "category": "TableFontName",
+ "category_tmp": "FontName",
+ "item": "글자모양/① 글씨체 (궁서)",
+ "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
+ },
+ "42": {
+ "path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
+ "value": "1000",
+ "points": 1,
+ "category": "TableAnswer",
+ "item": "글자모양/② 크기 (1000)"
+ },
+ "43": {
+ "path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
+ "value": "Center",
+ "points": 1,
+ "category": "TableAnswer",
+ "item": "글자모양/③ 정렬 (가운데 정렬)"
+ },
+ "44": {
+ "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
+ "option": "SUM",
+ "value": true,
+ "points": 4,
+ "category": "Boolean",
+ "item": "블록 계산식/합계",
+ "desc": "option값에 합계는 SUM / 평균은 AVG"
+ },
+ "45": {
+ "chart_xpath": "",
+ "chart_type": "묶은 가로 막대형",
+ "value": true,
+ "points": 2,
+ "category": "ChartType",
+ "item": "① 종류 (묶은 가로 막대형)",
+ "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
+ },
+ "46": {
+ "chart_xpath": "//c:valAx/c:majorTickMark/@val",
+ "value": "out",
+ "points": 2,
+ "category": "ChartOneAnswer",
+ "item": "② 값 축 주 눈금선",
+ "desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
+ },
+ "47": {
+ "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
+ "value": "80",
+ "points": 2,
+ "category": "mmSize",
+ "item": "③ 크기-너비 (80 mm)"
+ },
+ "48": {
+ "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
+ "value": "90",
+ "points": 2,
+ "category": "mmSize",
+ "item": "④ 크기-높이 (90 mm)"
+ },
+ "49": {
+ "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
+ "value": true,
+ "points": 2,
+ "category": "Boolean",
+ "item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
+ "desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
+ },
+ "50": {
+ "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
+ "searchValue": "지역별 천문대 수",
+ "value": "맑은 고딕",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (지역별 천문대 수)/① 글씨체 (맑은 고딕)"
+ },
+ "51": {
+ "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
+ "searchValue": "지역별 천문대 수",
+ "value": "1400",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (지역별 천문대 수)/② 크기 (1400)"
+ },
+ "52": {
+ "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
+ "option": "b",
+ "searchValue": "지역별 천문대 수",
+ "value": "1",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "제목 문구 (지역별 천문대 수)/③ 기울임",
+ "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
+ },
+ "53": {
+ "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface",
+ "value": "바탕",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "X축/① 글꼴 (바탕)"
+ },
+ "54": {
+ "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
+ "value": "900",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "X축/② 크기 (9pt)"
+ },
+ "55": {
+ "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
+ "option": "i",
+ "value": "1",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "X축/③ 기울임",
+ "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
+ },
+ "56": {
+ "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface",
+ "value": "바탕",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "Y축/① 글꼴 (바탕)"
+ },
+ "57": {
+ "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
+ "value": "900",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "Y축/② 크기 (9pt)"
+ },
+ "58": {
+ "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
+ "option": "i",
+ "value": "1",
+ "points": 1,
+ "category": "ChartOneAnswer",
+ "item": "Y축/③ 기울임",
+ "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
+ },
+ "59": {
+ "chart_xpath": "//c:legend//a:ea/@typeface",
+ "value": "바탕",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "범례/① 글꼴 (바탕)"
+ },
+ "60": {
+ "chart_xpath": "//c:legend//a:defRPr/@sz",
+ "value": "900",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "범례/② 크기 (9pt)"
+ },
+ "61": {
+ "chart_xpath": "//c:legend//a:defRPr/@{option}",
+ "option": "i",
+ "value": "1",
+ "points": 1,
+ "category": "OneAnswer",
+ "item": "범례/③ 기울임",
+ "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
+ }
+ }
+}
diff --git a/checklist.xbook b/checklist.xbook
index 3f978e8..ffcdd3f 100644
--- a/checklist.xbook
+++ b/checklist.xbook
@@ -1 +1 @@
-[{"kind":1,"language":"markdown","value":"# XPath Notebook\nDate: 2025-01-22 Time: 16:12:58"},{"kind":1,"language":"markdown","value":"* mm > pt 변환비율 = 2.83465 \r\n* 283.465"},{"kind":1,"language":"markdown","value":"- 색상 demical 코드 [1-2] [1-10] [2-8] [2-37]"},{"kind":2,"language":"xpath","value":"//TEXTART[@Text='클라우드컴퓨팅컨퍼런스']/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE[.//CHAR[text()='전']]//WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor"},{"kind":1,"language":"markdown","value":"- [1-10] ① ●, ② ●, ③ ※"},{"kind":2,"language":"xpath","value":"\"path\": \"count(//CHAR[contains(text(),'●')]) + count(//CHAR[contains(text(),'※')])\",\r\n \"path2\": \"string-length(//CHAR[contains(text(),'●')]) - string-length(translate(//CHAR[contains(text(),'●')], '●', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))\","},{"kind":1,"language":"markdown","value":"- [1-28] [2-28] @FormatType 종류\r\n - HangulSyllable : 가나다\r\n - Digit : 123\r\n - DecagonCircle : 갑을병정\r\n - LatinCapital : ABC\r\n - CircledDigit : ①,②,③\r\n - Ideograph : 一,二,三\r\n - CircledHangulJamo : ㉠,㉡,㉢\r\n - CircledLatinSmall : ⓐ,ⓑ,ⓒ\r\n - RomanSmall : i,ii,iii"},{"kind":2,"language":"xpath","value":"//SECTION[1]//PAGENUM/@FormatType"},{"kind":2,"language":"xpath","value":"//P[TEXT[CHAR[contains(text(), '눈으로 읽는 대신 귀로 들을 수 있게 책의 내용(문자)을 음성으로 녹음하여 기록한 것을 의미함')]]]//AUTONUMFORMAT/@Type"},{"kind":1,"language":"markdown","value":"- [2-30] ① 저감(低減), ② 화석(化石), ③ 투자(投資), ④ 달성(達成), ⑤ 세금(稅金)"},{"kind":2,"language":"xpath","value":"(count(//CHAR[contains(text(),'저감')][contains(text(),'低減')])+count(//CHAR[contains(text(),'화석')][contains(text(),'化石')])+count(//CHAR[contains(text(),'투자')][contains(text(),'投資')])+count(//CHAR[contains(text(),'달성')][contains(text(),'達成')])+count(//CHAR[contains(text(),'세금')][contains(text(),'稅金')]))*2"},{"kind":1,"language":"markdown","value":"- [2-37] [2-39] [2-40] @EndColAddr 속성값 \r\n - 표의 열 갯수-1\r\n - 4개=3 / 3개=2 / 2개=1"},{"kind":2,"language":"xpath","value":"@EndColAddr='2'"},{"kind":1,"language":"markdown","value":"- [2-45]\r\n - 꺾은선형 //c:lineChart[c:grouping[@val='standard']]\r\n - 묶은가로막대형 //c:barChart[c:barDir[@val='bar'] and c:grouping[@val='clustered']]\r\n - 묶은세로막대형 //c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']]\r\n - 원형 //c:pieChart\r\n - 분산형 //c:scatterChart"},{"kind":1,"language":"markdown","value":"//c:{chart_type}Chart/"},{"kind":2,"language":"xpath","value":"boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])"},{"kind":2,"language":"xpath","value":"//c:valAx/c:majorTickMark/@val"},{"kind":2,"language":"xpath","value":"boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])"},{"kind":2,"language":"xpath","value":"//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '=AVG')]"},{"kind":2,"language":"xpath","value":"//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '=AVG')]"}]
\ No newline at end of file
+[{"kind":1,"language":"markdown","value":"# XPath Notebook\nDate: 2025-01-22 Time: 16:12:58"},{"kind":2,"language":"xpath","value":""},{"kind":1,"language":"markdown","value":"* mm > pt 변환비율 = 2.83465 \r\n* 283.465"},{"kind":1,"language":"markdown","value":"- 색상 demical 코드 [1-2] [1-10] [2-8] [2-37]"},{"kind":2,"language":"xpath","value":"//TEXTART[@Text='클라우드컴퓨팅컨퍼런스']/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE[.//CHAR[text()='전']]//WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor"},{"kind":1,"language":"markdown","value":"- [1-10] ① ●, ② ●, ③ ※"},{"kind":2,"language":"xpath","value":"\"path\": \"count(//CHAR[contains(text(),'●')]) + count(//CHAR[contains(text(),'※')])\",\r\n \"path2\": \"string-length(//CHAR[contains(text(),'●')]) - string-length(translate(//CHAR[contains(text(),'●')], '●', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))\","},{"kind":1,"language":"markdown","value":"- [1-28] [2-28] @FormatType 종류\r\n - HangulSyllable : 가나다\r\n - Digit : 123\r\n - DecagonCircle : 갑을병정\r\n - LatinCapital : ABC\r\n - CircledDigit : ①,②,③\r\n - Ideograph : 一,二,三\r\n - CircledHangulJamo : ㉠,㉡,㉢\r\n - CircledLatinSmall : ⓐ,ⓑ,ⓒ\r\n - RomanSmall : i,ii,iii"},{"kind":2,"language":"xpath","value":"//SECTION[1]//PAGENUM/@FormatType"},{"kind":2,"language":"xpath","value":"//P[TEXT[CHAR[contains(text(), '눈으로 읽는 대신 귀로 들을 수 있게 책의 내용(문자)을 음성으로 녹음하여 기록한 것을 의미함')]]]//AUTONUMFORMAT/@Type"},{"kind":1,"language":"markdown","value":"- [2-30] ① 저감(低減), ② 화석(化石), ③ 투자(投資), ④ 달성(達成), ⑤ 세금(稅金)"},{"kind":2,"language":"xpath","value":"(count(//CHAR[contains(text(),'저감')][contains(text(),'低減')])+count(//CHAR[contains(text(),'화석')][contains(text(),'化石')])+count(//CHAR[contains(text(),'투자')][contains(text(),'投資')])+count(//CHAR[contains(text(),'달성')][contains(text(),'達成')])+count(//CHAR[contains(text(),'세금')][contains(text(),'稅金')]))*2"},{"kind":1,"language":"markdown","value":"- [2-37] [2-39] [2-40] @EndColAddr 속성값 \r\n - 표의 열 갯수-1\r\n - 4개=3 / 3개=2 / 2개=1"},{"kind":2,"language":"xpath","value":"@EndColAddr='2'"},{"kind":1,"language":"markdown","value":"- [2-45]\r\n - 꺾은선형 //c:lineChart[c:grouping[@val='standard']]\r\n - 묶은가로막대형 //c:barChart[c:barDir[@val='bar'] and c:grouping[@val='clustered']]\r\n - 묶은세로막대형 //c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']]\r\n - 원형 //c:pieChart\r\n - 분산형 //c:scatterChart"},{"kind":1,"language":"markdown","value":"//c:{chart_type}Chart/"},{"kind":2,"language":"xpath","value":"boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])"},{"kind":2,"language":"xpath","value":"//c:valAx/c:majorTickMark/@val"},{"kind":2,"language":"xpath","value":"boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])"},{"kind":2,"language":"xpath","value":"//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '=AVG')]"},{"kind":2,"language":"xpath","value":"//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '=AVG')]"}]
\ No newline at end of file
diff --git a/diwScoring.py b/diwScoring.py
deleted file mode 100644
index 5ee834a..0000000
--- a/diwScoring.py
+++ /dev/null
@@ -1,659 +0,0 @@
-import tkinter as tk
-from tkinter import filedialog, messagebox
-from datetime import datetime
-import difflib
-import json
-from pathlib import Path
-import os
-from lxml import etree as ET
-import re
-from difflib import SequenceMatcher
-import pandas as pd
-import base64
-# from xpathSearch import XMLPathHandler
-
-class XMLScorer:
- # 채점 기준 경로 초기화
- def __init__(self, scoring_criteria_path):
- # 채점 기준 로드
- self.scoring_criteria = self._load_scoring_criteria(scoring_criteria_path)
-
- def set_typo_score(self, score):
- self.typo_score = score
-
- def get_typo_score(self):
- return self.typo_score
-
- # 채점 기준파일 로드(JSON 파일)
- def _load_scoring_criteria(self, file_path):
- with open(file_path, 'r', encoding='utf-8') as f:
- return json.load(f)
-
- # XML 파일에서 element의 값을 찾아 반환
- def query_xml(self, root, *args):
- first_xpath = args[0]
- second_xpath = args[1]
- points = args[2]
- category = args[3]
- right_answer = args[4]
-
- if "Hyperlink" in category:
- is_hyperlink = self.scoring_criteria["1"]["17"]["hyperlink"]
- hyperlink_xpath = self.scoring_criteria["1"]["17"]["hyperlink_xpath"]
- right_text = self.scoring_criteria["1"]["17"]["searchValue"].replace(" ","")
- try:
- # 하이퍼링크가 포함된 p태그 인지 확인
- p_elements = root.xpath(is_hyperlink)
-
- for p in p_elements:
- text_list = p.xpath(".//CHAR/text()")
- full_text = ''.join(text_list).replace(" ", "")
- # right_text의 첫 문자
- first_char = right_text[0]
- # full_text에서 첫 문자 위치 찾기
- index = full_text.find(first_char)
-
- if index != -1:
- trimmed_full_text = full_text[index:]
- else:
- trimmed_full_text = full_text # 일치 문자 없으면 원본 그대로
-
- similarity = difflib.SequenceMatcher(None, trimmed_full_text, right_text).ratio()
- # 두 문자열이 같을 경우만 하이퍼링크 확인
- if similarity >= 0.7:
- inside_field = False
- charshape_values = []
-
- for elem in p.iter():
- # 시작 지점 확인
- if elem.tag == "FIELDBEGIN":
- inside_field = True
- elif elem.tag == "FIELDEND":
- inside_field = False
- elif inside_field and elem.tag == "TEXT":
- charshape = elem.get("CharShape")
- if charshape:
- charshape_values.append(charshape)
-
- # 하이퍼링크에 해당하는 P태그 내 존재하는 charshape ID값 모두를 비교해 해당 속성(ITALIC, BOLD, UNDERLINE) 확인
- if charshape_values:
- for charshape in charshape_values:
- result = root.xpath(hyperlink_xpath.replace('{charshape_id}', charshape))
- # 해당 속성이 하나라도 적용되어있지 않으면 False 반환
- if not result:
- return result
- return True
- else:
- return False
-
- except ET.XPathEvalError as e:
- return None
-
- if ("특수문자" in category) and (second_xpath is not None):
- try:
- result = root.xpath(first_xpath)
- # 결과값이 리스트형인데 내부에 정보가 없는경우
- # 결과값이 없음
- if type(result) is list and len(result) == 0:
- return None
- elif result < points:
- result2 = root.xpath(second_xpath)
- return max(result, result2)
- else:
- return result
-
- except ET.XPathEvalError as e:
- return None
-
- # xpath2가 있는 경우
- elif second_xpath is not None:
- try:
- result1 = root.xpath(first_xpath)
- result2 = root.xpath(second_xpath)
- if (type(result1) is list and len(result1) == 0) and (type(result2) is list and len(result2) == 0):
- return None
-
- # xpath1과 xpath2의 결과값이 모두 리스트인 경우
- # 두 결과값 중 정답이 포함된 리스트를 반환
- if type(result1) is list and type(result2) is list:
- if right_answer in result1:
- return result1
- elif right_answer in result2:
- return result2
-
- return result1 if result1 else result2
-
- except ET.XPathEvalError as e:
- return None
-
- else:
- try:
- result = root.xpath(first_xpath)
- if type(result) is list and len(result) == 0:
- return None
- return result
- except ET.XPathEvalError as e:
- return None
-
- def chart_query_xml(self, tree, xpath, namespaces):
-
- result = tree.xpath(xpath, namespaces=namespaces)
- if type(result) is list and len(result) == 0:
- return None
-
- return result
-
-
- # 유사한 텍스트 찾기
- def find_similar_text(self, root, target_text, threshold=0.7):
- """
- 전체 문서에서 유사한 텍스트를 찾아 반환
-
- Args:
- root (_type_): xml root element 객체
- target_text (_type_): 찾을 텍스트
- threshold (float, optional): 유사도 설정 Defaults to 0.3.
-
- Returns:
- str: 유사도 기준을 만족하는 텍스트
- """
- # 전체 텍스트 추출
- # all_text = root.xpath(f"//CHAR/text()")
- # all_text.append(root.xpath(f"//TEXTART/@text"))
-
- namespaces = {
-
- 'a': 'http://schemas.openxmlformats.org/drawingml/2006/main',
- 'c': 'http://schemas.openxmlformats.org/drawingml/2006/chart'
- }
-
- if type(root) is str:
- all_text = root
- else:
- all_text = root.xpath(f"//BODY//text() | //TEXTART/@Text | //c:chart//text()", namespaces=namespaces)
-
- # 유사도 비교
- max_score = 0
- similar_text = ''
-
- for text in all_text:
- score = SequenceMatcher(None, target_text, text).ratio()
-
- if score > max_score:
- max_score = score
- similar_text = text
-
- if max_score >= threshold:
- return similar_text
- else:
- return None
-
- # 하나의 XML 파일 채점
- def _score_xml_file(self, xml_file, chart_xml):
- try:
- tree = ET.parse(xml_file)
- root = tree.getroot()
-
- # 네임스페이스 정의
- namespaces = {
- 'a': 'http://schemas.openxmlformats.org/drawingml/2006/main',
- 'c': 'http://schemas.openxmlformats.org/drawingml/2006/chart'
- }
-
- # 차트 XML 파일이 없는 경우 0점 채점을 위헤 빈 XML 생성
- if chart_xml is None:
- chart_tree = ET.fromstring('')
- else:
- chart_tree = ET.fromstring(chart_xml)
-
- # 결과값을 Dictionary로 저장
- results = {
- 'filename': os.path.basename(xml_file),
- 'score_results': [],
- 'total_score': 0,
- 'partial_scores': []
- }
-
- print(f"File name: {results['filename']}")
-
- total_score = 0
- for section_id, section in self.scoring_criteria.items():
- partial_score = 0
-
- for criterion_id, criterion in section.items():
- id = criterion_id
- xpath = criterion['path'] if 'path' in criterion else None
- xpath2 = criterion['path2'] if 'path2' in criterion else None
- search_value = criterion['searchValue'] if 'searchValue' in criterion else None
- right_answer = criterion['value'] if 'value' in criterion else None
- points = criterion['points'] if 'points' in criterion else None
- category = criterion['category'] if 'category' in criterion else None
- item = criterion['item']
- similar_text = None
-
- # chart xml 파일에서 채점하는 경우
- if "chart_xml" in category:
- if search_value is not None:
- similar_text = self.find_similar_text(chart_tree, search_value)
- if similar_text is None:
- xpath = xpath.replace('{searchValue}', search_value)
- else:
- xpath = xpath.replace('{searchValue}', similar_text)
-
- result = self.chart_query_xml(chart_tree, xpath, namespaces)
-
- # 그 외의 hml 파일에서 채점하는 경우
- else:
- if search_value is not None:
- similar_text = self.find_similar_text(root, search_value)
- if similar_text is None:
- xpath = xpath.replace('{searchValue}', search_value)
- else:
- xpath = xpath.replace('{searchValue}', similar_text)
-
- result = self.query_xml(root, xpath, xpath2, points, category, right_answer)
-
- # [ boolean 타입 ]
- # 1. 이텔릭체, 굵게, 밑줄 등 효과가 적용 여부에 따라
- # [ITALIC] [BOLD] [UNDERLINE] 태그가 있거나 없을 수 있으므로
- # 존재 유무에 따라 True, False로 판단
- # 2. 두 가지 이상의 조건을 모두 만족해야 하는 경우 and 연산자로 연결되어
- # 반환값 True/False로 판단
- # [ float 타입 ]
- # 1. 부분점수의 합산으로 반환되는 경우 float 타입으로 반환
- if type(result) is not list:
- if type(result) is float and (result > points):
- actual_answer = float(points)
- else:
- actual_answer = result
- else:
- if type(right_answer) is int:
- actual_answer = int(result[0])
- else:
- actual_answer = result[0]
-
- if "오타감점" in category:
- points = self.get_typo_score()
-
- scoring = {
- 'section': section_id,
- 'id': id,
- 'category': category, # 채점 분류
- 'item': item, # 채점 항목
- 'right_answer': right_answer, # 정답
- 'actual_answer': actual_answer, # 실제 작성 답안
- 'points': points,
- 'deductions': [] # 각 기준별 감점 내역
- }
-
- # 점수 차감 조건
- # 1. 정답이 실수형으로 반환받은 경우는 채점항목의 부분점수 합산 결과이므로
- # 반환받은 값 그대로를 점수로 사용
- # 2. 정답이 정수형(사이즈 비교)의 경우 오차범위를 넘는다면 감점
- # 3. 그 외의 경우 정답과 실제 작성 답안이 다른 경우 점수 차감
- if type(actual_answer) is float:
- scoring['points'] = actual_answer
-
- elif type(actual_answer) is int:
- # 오차범위 3 이상이면 감점
- if abs(actual_answer - right_answer) > 3:
- scoring['points'] -= points
- else:
- # right_answer(JSON파일 내 valuer값) null일 경우 점수감점 없이 진행
- if right_answer != actual_answer:
- scoring['points'] -= points
-
- results['score_results'].append(scoring)
- total_score += scoring['points']
- partial_score += scoring['points']
-
- print(f'scoring: {scoring}')
-
- results['partial_scores'].append({
- 'section': section_id,
- 'score': partial_score
- })
- results['total_score'] = total_score
- return results
-
- except ET.ParseError as e:
- return {
- 'filename': os.path.basename(xml_file),
- 'error': f"XML 파싱 오류: {str(e)}",
- 'total_score': 0
- }
-
- def binary_to_chartxml(self, xml_path):
- tree = ET.parse(xml_path)
- root = tree.getroot()
-
- binary_data = root.xpath('//BINDATA[@Id=//BINITEM[@Format="OLE"]/@BinData]/text()')
- if not binary_data:
- return None
- binary_data = binary_data[0].encode('utf-8')
-
- # 태그와 그 내부 내용을 삭제합니다.
- encoded_data = re.sub(b'', b'', binary_data)
- encoded_data = encoded_data.replace(b'', b'')
- encoded_data = encoded_data.replace(b'\r\n', b'')
-
- # base64 디코딩을 수행합니다.
- decoded_data = base64.b64decode(encoded_data+b'==')
-
- # 디코딩된 데이터 내용 중 xml 형식만 추출할 때 , 사이의 데이터만 추출.
- start = decoded_data.find(b'')
- print(end)
- xml_data = decoded_data[start:end+len(b'')]
-
- # xml 데이터가 없는 경우 None을 반환합니다.
- if -1 in [start, end]:
- return None
-
- # 디코딩된 데이터를 파일로 저장합니다.
- base_filename = os.path.splitext(xml_path)[0]
- new_filename = f'{base_filename}.xml'
- with open(new_filename, 'wb') as file:
- file.write(xml_data)
-
- return xml_data
-
- def typo_check(self, correct_answer_file, user_answer_file, chart_xml):
- user_answer_tree = ET.parse(user_answer_file)
- user_answer_root = user_answer_tree.getroot()
- correct_answer_tree = ET.parse(correct_answer_file)
- correct_answer_root = correct_answer_tree.getroot()
-
- # xpath로 바이너리 부분추출
- user_input_text = user_answer_root.xpath('//CHAR//text()[not(ancestor::HEADER) and not(ancestor::TABLE)]')
- user_table_text = user_answer_root.xpath('//TABLE//CHAR//text()')
- user_input_text += user_table_text
-
- correct_input_text = correct_answer_root.xpath('//CHAR//text()[not(ancestor::HEADER) and not(ancestor::TABLE)]')
- correct_table_text = correct_answer_root.xpath('//TABLE//CHAR//text()')
- correct_input_text += correct_table_text
-
- # 차트 XML에서 제목 추출
- if chart_xml is not None:
- chart_xml_tree = ET.fromstring(chart_xml)
-
- # 차트 제목 추출
- user_chart_title = chart_xml_tree.xpath('/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:r/a:t', namespaces={'c': 'http://schemas.openxmlformats.org/drawingml/2006/chart', 'a': 'http://schemas.openxmlformats.org/drawingml/2006/main'})
-
- # 차트 제목이 존재하는 경우
- if user_chart_title:
- user_input_text.append(user_chart_title[0].text)
-
- # 차트 제목 정답 텍스트 추출
- correct_chart_title = self.scoring_criteria["2"]["50"]["searchValue"]
- correct_input_text.append(correct_chart_title)
-
- # 각 요소에서 공백 제거
- user_input_text = [text.replace(' ', '') for text in user_input_text]
- correct_input_text = [text.replace(' ', '') for text in correct_input_text]
-
-
- # 숫자와 특정 형식 제거 (예: 1., 2., 3., -)
- user_input_text = [re.sub(r'\d+\.\s*|-', '', text) for text in user_input_text]
- correct_input_text = [re.sub(r'\d+\.\s*|-', '', text) for text in correct_input_text]
-
- try :
- # xpath = self.scoring_criteria["2"]["29"]['path'].split("'")[1]
- # ignore_word = xpath.split("'")[1]
- ignore_word = self.scoring_criteria["2"]["29"]["ignoreWord"]
- # 특정 단어 제거
- # 오타와 누락의 경우만 판단하면 정상작동하지만
- # 추가 된 단어의 경우를 채점기준에 추가하면 정확하게 채점 되지 않을 수 있음
- # [정답] Hybrid [실제작성]
- user_input_text = [text.replace(ignore_word, '') for text in user_input_text]
- correct_input_text = [text.replace(ignore_word, '') for text in correct_input_text]
- except (KeyError, IndexError, AttributeError):
- ignore_word = None
-
- print(f"ignore_word: {ignore_word}")
-
- # 리스트를 하나의 문자열로 변경
- user_input_text_str = ''.join(user_input_text)
- currect_input_text_str = ''.join(correct_input_text)
-
- print("user_input_text as string:")
- print(user_input_text_str)
- print("\ncurrect_input_text_answer as string:")
- print(currect_input_text_str)
-
-
- # 문자열의 차이를 비교
- diff = difflib.ndiff(currect_input_text_str, user_input_text_str)
- diff_list = list(diff)
-
- # 차이점을 정리하여 result_diff에 저장
- result_diff = []
-
- # 누락 된 단어만 따로 리스트로 저장
- missing_list = []
-
- # 오타와 누락된 단어 리스트 저장
- error_missing_list = []
-
- skip_next = False
-
- for i, line in enumerate(diff_list):
- if skip_next:
- skip_next = False
- continue
- # diff_list의 line 시작이 '-'이면서 다음 line이 '+'이면 두 line을 붙여서 맞춤법이 틀린 단어로 판단
- if line.startswith('- '):
- # 오타
- if i + 1 < len(diff_list) and diff_list[i + 1].startswith('+ '):
- line = line.replace('- ', '-')
- next = diff_list[i + 1].replace('+ ', '')
- result_diff.append(line+'=>'+next)
- error_missing_list.append(line+'=>'+next)
- skip_next = True
- # 누락
- else:
- line = line.replace('- ', '-')
- result_diff.append(line)
- missing_list.append(line)
- error_missing_list.append(line)
- # 없어도 되는 글자가 있는 경우 (추가)
- elif line.startswith('+ '):
- line = line.replace('+ ', '+')
- result_diff.append(line)
-
- # result_diff 출력
- # print("\nResult Differences:")
- # for diff in result_diff:
- # print(diff)
-
- # result_diff 배열의 길이를 맨 앞에 저장
-
- # 모든 차이를 계산해 점수 차감
- # temp = 40 - min(len(result_diff)*2, 40)
-
- # 누락된 텍스트만 계산해 점수 차감
- # temp = 40 - min(len(missing_list)*2, 40)
-
- # 2503회 기준 오타 1개당 [2점]->[1점] 차감
- temp = 40 - min(len(error_missing_list)*1, 40)
-
- self.set_typo_score(temp)
-
- result_diff.insert(0, temp)
- return result_diff
-
- # XML 파일 채점
- def score_directory(self, xml_directory, correct_answer_file):
- # xml 파일 불러오기
- xml_files = Path(xml_directory).glob('*.hml')
-
- # 결과 저장할 리스트
- results = []
-
- for user_answer_file in xml_files:
- result = {}
- chart_xml = self.binary_to_chartxml(user_answer_file)
- result['typo'] = self.typo_check(correct_answer_file, user_answer_file, chart_xml)
- result['score'] = self._score_xml_file(user_answer_file, chart_xml)
- # result['score']['score_results'][2]['points'] = result['typo'][0]
- results.append(result)
- return results
-
- def parse_filename(self, filename):
- if isinstance(filename, dict):
- filename = filename.get('파일명', '')
- match = re.match(r'.*-(\d+)-(.+)\.hml', filename)
- if match:
- number = match.group(1)
- name = match.group(2)
- return number, name
-
- return None, None
-
- def export_to_excel(self, results, output_path=None):
- if output_path is None:
- timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") #연월일_시분초
- # timestamp = datetime.now().strftime("%Y%m%d") #연월일
- output_path = f"scoring_results_{timestamp}.xlsx"
-
- summary_data = []
- detail_data = []
- typo_data = []
-
- for temp in results:
- # 요약 정보
- result = temp['score']
- summary_row = {
- '파일명': result['filename'],
- '총점': result.get('total_score', 0)
- }
- if 'error' in result:
- summary_row['오류'] = result['error']
-
- summary_data.append(summary_row)
-
- # 상세 정보
- if 'score_results' in result:
- filename = {'파일명': result['filename']}
- number, name = self.parse_filename(filename)
- if (number or name) is None:
- detail_row = {'채점항목': result['filename'] }
- else:
- detail_row = {'채점항목':f"{number}-{name}"}
-
- section_num = None
- row_index = []
- for i, score_result in enumerate(result['score_results']):
- current_section = score_result['section']
-
- if section_num is None:
- section_num = current_section
-
- # 다음 섹션(문제0 => 문제1)로 넘어갔을 경우 or 마지막 문제일 경우
- if current_section != section_num:
- # 이전 섹션의 부분합을 출력
- detail_row[f'문제{section_num}'] = result['partial_scores'][int(section_num)]['score']
- row_index.append(f'문제{section_num}')
- section_num = current_section
-
- detail_row[f'{i+1}'] = score_result['points']
- row_index.append(score_result['id'])
-
- # 마지막 섹션(문제2)부분합 점수를 출력
- if i == len(result['score_results']) - 1:
- detail_row[f'문제{current_section}'] = result['partial_scores'][int(current_section)]['score']
- row_index.append(f'문제{current_section}')
-
- detail_row['총점'] = result.get('total_score', 0)
- row_index.append('총점')
- detail_data.append(detail_row)
-
- summary_df = pd.DataFrame(summary_data)
- detail_df = pd.DataFrame(detail_data).transpose()
- detail_df.columns = detail_df.iloc[0]
- detail_df = detail_df[1:]
-
- detail_df.index = row_index
- # detail_df = pd.DataFrame(detail_data)
-
- for temp in results:
- result = temp['typo']
- typo_data.append(result)
-
- typo_df = pd.DataFrame(typo_data).transpose()
- # detail_df = pd.DataFrame(detail_data)
-
- # ExcelWriter 객체 생성
- with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
- summary_df.to_excel(writer, sheet_name='채점결과요약', index=False)
- detail_df.to_excel(writer, sheet_name='채점상세내역', index=True)
- typo_df.to_excel(writer, sheet_name='오타내역', index=False)
-
- # 열 너비 자동 조정
- # for sheet_name in writer.sheets:
- # worksheet = writer.sheets[sheet_name]
- # for column_cells in worksheet.columns:
- # max_length = 0
- # column = column_cells[0].column_letter # 열의 문자
- # for cell in column_cells:
- # try:
- # if cell.value:
- # max_length = max(max_length, len(str(cell.value)))
- # except:
- # pass
- # adjusted_width = (max_length + 2)
- # worksheet.column_dimensions[column].width = adjusted_width
-
- return output_path
-
-
-def main():
-
- # 시험회차 및 유형
- exam_round = '2504'
-
- # 250429기준 없는 시험 형식(A,B,C..)은 주석처리 하지 않으면 오류 발생
- exam_types = [
- 'A',
- # 'B',
- # 'C',
- ]
- # test_mode = False
- test_mode = True
-
- output_excel_paths = []
- for exam_type in exam_types:
-
- # JSON 채점기준표 파일 (예시:DIW_2503A.json)
- # scoring_criteria_path = f'./DIW_{exam_round}.json'
- scoring_criteria_path = f'./DIW_{exam_round}{exam_type}.json'
-
- # xml(hml)파일 디렉토리 경로 (예시:./output/A/DIW)
- # xml_directory = f'./output/{exam_type}/{"TEST" if test_mode else "DIW"}'
-
- # 회차가 여러개인 경우
- xml_directory = f'./output/{exam_round}/{exam_type}/{"TEST" if test_mode else "DIW"}'
-
-
- # 오탈자 체크를 위한 정답 파일 경로 (예시:./output/A/DIW/DIW_2503A.hml)
- # correct_answer_file = f'./output/{exam_type}/DIW/DIW_{exam_round}{exam_type}.hml'
- correct_answer_file = f'./output/{exam_round}/{exam_type}/DIW/DIW_{exam_round}{exam_type}.hml'
-
- # 엑셀 파일명 (비어있으면 자동생성) (예시:241001_DIW_2503A_채점결과.xlsx)
- timestamp = datetime.now().strftime("%y%m%d")
- output_path = f'{timestamp}_DIW_{exam_round}회_{exam_type}형_{"TEST" if test_mode else "채점결과"}.xlsx'
-
- # 채점 클래스 초기화
- scorer = XMLScorer(scoring_criteria_path)
-
- # 폴더 내 모든 xml 파일 채점
- results = scorer.score_directory(xml_directory, correct_answer_file)
-
- # 채점 결과 엑셀로 저장
- output_excel_paths.append(scorer.export_to_excel(results, output_path))
-
- print(f"채점 결과 엑셀 파일: {output_excel_paths}")
-
-if __name__ == '__main__':
- main()
diff --git a/diwScoring2.py b/diwScoring2.py
index b8ba4aa..54b2034 100644
--- a/diwScoring2.py
+++ b/diwScoring2.py
@@ -1074,6 +1074,7 @@ class XMLScorer:
'원형': "//c:pieChart",
'분산형': "//c:scatterChart",
'표식만있는분산형': "//c:scatterChart[c:scatterStyle[@val='marker']]",
+ '곡선이있는분산형': "//c:scatterChart[c:scatterStyle[@val='smooth']]"
}
chart_type = criterion.get('chart_type').replace(" ","")
@@ -1474,15 +1475,15 @@ class XMLScorer:
def main():
# 시험회차 및 유형
- exam_round = '2601'
+ exam_round = '2622'
# exam_round = '2522'
# 채점하고자 하는 유형은 주석 해제
exam_types = [
- # 'A',
- # 'B',
+ 'A',
+ 'B',
'C',
- # 'D',
+ 'D',
]
test_mode = False
@@ -1491,7 +1492,7 @@ def main():
output_excel_paths = []
for exam_type in exam_types:
# JSON 채점기준표 파일 (예시:DIW_2503A.json)
- scoring_criteria_path = f'./DIW_{exam_round}{exam_type}.json'
+ scoring_criteria_path = f'./JSON/{exam_round}/DIW_{exam_round}{exam_type}.json'
# xml(hml)파일 디렉토리 경로 (예시:./output/2503/A/DIW)
xml_directory = f'./output/{exam_round}/{exam_type}/{"TEST" if test_mode else "DIW"}'
@@ -1501,7 +1502,7 @@ def main():
# 엑셀 파일명 (비어있으면 자동생성) (예시:241001_DIW_2503A_채점결과.xlsx)
timestamp = datetime.now().strftime("%y%m%d")
- output_path = f'{timestamp}_DIW_{exam_round}{exam_type}_{"TEST" if test_mode else "채점결과"}.xlsx'
+ output_path = f'./score_result/{timestamp}_DIW_{exam_round}{exam_type}_{"TEST" if test_mode else "채점결과"}.xlsx'
# 채점 클래스 초기화
scorer = XMLScorer(scoring_criteria_path)
diff --git a/hwp_conversion.log b/hwp_conversion.log
index 373d67d..7a49f84 100644
--- a/hwp_conversion.log
+++ b/hwp_conversion.log
@@ -27783,3 +27783,1703 @@
2026-01-27 15:46:25,042 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2601\D\DIW -> D:\project\HWP\HWP-Scoring\output\2601\D\DIW
2026-01-27 15:46:25,543 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2601\E\DIW -> D:\project\HWP\HWP-Scoring\output\2601\E\DIW
2026-01-27 15:46:26,851 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2601\E\DIW -> D:\project\HWP\HWP-Scoring\output\2601\E\DIW
+2026-01-28 17:41:25,127 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2601\A\DIW -> D:\project\HWP\HWP-Scoring\output\2601\A\DIW
+2026-01-28 17:41:30,427 - INFO - 변환 성공: DIW-000007-이예경.hwp -> DIW-000007-이예경.hml
+2026-01-28 17:41:31,058 - INFO - 변환 성공: DIW-000008-김민지.hwp -> DIW-000008-김민지.hml
+2026-01-28 17:41:31,583 - INFO - 변환 성공: DIW-000011-전하영.hwp -> DIW-000011-전하영.hml
+2026-01-28 17:41:32,207 - INFO - 변환 성공: DIW-000013-한수빈.hwp -> DIW-000013-한수빈.hml
+2026-01-28 17:41:32,807 - INFO - 변환 성공: DIW-000034-김유빈.hwp -> DIW-000034-김유빈.hml
+2026-01-28 17:41:33,416 - INFO - 변환 성공: DIW-000072-이창훈.hwp -> DIW-000072-이창훈.hml
+2026-01-28 17:41:34,028 - INFO - 변환 성공: DIW-000073-이준우.hwp -> DIW-000073-이준우.hml
+2026-01-28 17:41:34,666 - INFO - 변환 성공: DIW-000163-김준서.hwp -> DIW-000163-김준서.hml
+2026-01-28 17:41:35,332 - INFO - 변환 성공: DIW-000222-남시완.hwp -> DIW-000222-남시완.hml
+2026-01-28 17:41:35,898 - INFO - 변환 성공: DIW-000228-오태양.hwp -> DIW-000228-오태양.hml
+2026-01-28 17:41:36,395 - INFO - 변환 성공: DIW-000256-황재윤.hwp -> DIW-000256-황재윤.hml
+2026-01-28 17:41:36,818 - INFO - 변환 성공: DIW-000257-박건우.hwp -> DIW-000257-박건우.hml
+2026-01-28 17:41:37,397 - INFO - 변환 성공: DIW-000266-강윤서.hwp -> DIW-000266-강윤서.hml
+2026-01-28 17:41:37,937 - INFO - 변환 성공: DIW-000328-김민제.hwp -> DIW-000328-김민제.hml
+2026-01-28 17:41:38,640 - INFO - 변환 성공: DIW-000340-송현준.hwp -> DIW-000340-송현준.hml
+2026-01-28 17:41:39,373 - INFO - 변환 성공: DIW-000341-이지율.hwp -> DIW-000341-이지율.hml
+2026-01-28 17:41:40,011 - INFO - 변환 성공: DIW-000343-곽현서.hwp -> DIW-000343-곽현서.hml
+2026-01-28 17:41:40,536 - INFO - 변환 성공: DIW-000345-지민규.hwp -> DIW-000345-지민규.hml
+2026-01-28 17:41:41,177 - INFO - 변환 성공: DIW-000346-이준서.hwp -> DIW-000346-이준서.hml
+2026-01-28 17:41:41,812 - INFO - 변환 성공: DIW-000366-이유나.hwp -> DIW-000366-이유나.hml
+2026-01-28 17:41:42,384 - INFO - 변환 성공: DIW-000418-김강민.hwp -> DIW-000418-김강민.hml
+2026-01-28 17:41:43,302 - INFO - 변환 성공: DIW-000419-이은호.hwp -> DIW-000419-이은호.hml
+2026-01-28 17:41:43,883 - INFO - 변환 성공: DIW-000420-신우진.hwp -> DIW-000420-신우진.hml
+2026-01-28 17:41:44,554 - INFO - 변환 성공: DIW-000421-김경민.hwp -> DIW-000421-김경민.hml
+2026-01-28 17:41:45,195 - INFO - 변환 성공: DIW-000422-신민주.hwp -> DIW-000422-신민주.hml
+2026-01-28 17:41:45,855 - INFO - 변환 성공: DIW-000455-박시율.hwp -> DIW-000455-박시율.hml
+2026-01-28 17:41:46,448 - INFO - 변환 성공: DIW-000456-김건.hwp -> DIW-000456-김건.hml
+2026-01-28 17:41:47,012 - INFO - 변환 성공: DIW-000459-진예성.hwp -> DIW-000459-진예성.hml
+2026-01-28 17:41:47,625 - INFO - 변환 성공: DIW-000462-황상록.hwp -> DIW-000462-황상록.hml
+2026-01-28 17:41:48,239 - INFO - 변환 성공: DIW-000471-이지우.hwp -> DIW-000471-이지우.hml
+2026-01-28 17:41:48,721 - INFO - 변환 성공: DIW-000472-장정윤.hwp -> DIW-000472-장정윤.hml
+2026-01-28 17:41:49,072 - INFO - 변환 성공: DIW-000493-김근영.hwp -> DIW-000493-김근영.hml
+2026-01-28 17:41:49,531 - INFO - 변환 성공: DIW-000580-박민규.hwp -> DIW-000580-박민규.hml
+2026-01-28 17:41:49,986 - INFO - 변환 성공: DIW-000581-박민우.hwp -> DIW-000581-박민우.hml
+2026-01-28 17:41:50,419 - INFO - 변환 성공: DIW-000621-이금숙.hwp -> DIW-000621-이금숙.hml
+2026-01-28 17:41:51,044 - INFO - 변환 성공: DIW-000639-염희주.hwp -> DIW-000639-염희주.hml
+2026-01-28 17:41:51,681 - INFO - 변환 성공: DIW-000645-김채원.hwp -> DIW-000645-김채원.hml
+2026-01-28 17:41:52,251 - INFO - 변환 성공: DIW-000650-박서준.hwp -> DIW-000650-박서준.hml
+2026-01-28 17:41:52,788 - INFO - 변환 성공: DIW-000656-이서준.hwp -> DIW-000656-이서준.hml
+2026-01-28 17:41:53,309 - INFO - 변환 성공: DIW-000657-김도은.hwp -> DIW-000657-김도은.hml
+2026-01-28 17:41:53,947 - INFO - 변환 성공: DIW-000658-김지예.hwp -> DIW-000658-김지예.hml
+2026-01-28 17:41:54,777 - INFO - 변환 성공: DIW-000659-공예준.hwp -> DIW-000659-공예준.hml
+2026-01-28 17:41:55,426 - INFO - 변환 성공: DIW-000660-김다은.hwp -> DIW-000660-김다은.hml
+2026-01-28 17:41:56,026 - INFO - 변환 성공: DIW-000661-이동욱.hwp -> DIW-000661-이동욱.hml
+2026-01-28 17:41:56,775 - INFO - 변환 성공: DIW-000666-권민주.hwp -> DIW-000666-권민주.hml
+2026-01-28 17:41:57,388 - INFO - 변환 성공: DIW-000667-권예서.hwp -> DIW-000667-권예서.hml
+2026-01-28 17:41:58,052 - INFO - 변환 성공: DIW-000669-김라온.hwp -> DIW-000669-김라온.hml
+2026-01-28 17:41:58,648 - INFO - 변환 성공: DIW-000672-김주환.hwp -> DIW-000672-김주환.hml
+2026-01-28 17:41:59,251 - INFO - 변환 성공: DIW-000675-김지헌.hwp -> DIW-000675-김지헌.hml
+2026-01-28 17:41:59,894 - INFO - 변환 성공: DIW-000676-김지환.hwp -> DIW-000676-김지환.hml
+2026-01-28 17:42:00,613 - INFO - 변환 성공: DIW-000684-박현빈.hwp -> DIW-000684-박현빈.hml
+2026-01-28 17:42:01,329 - INFO - 변환 성공: DIW-000687-백승빈.hwp -> DIW-000687-백승빈.hml
+2026-01-28 17:42:01,941 - INFO - 변환 성공: DIW-000714-편세경.hwp -> DIW-000714-편세경.hml
+2026-01-28 17:42:02,498 - INFO - 변환 성공: DIW-000717-정민서.hwp -> DIW-000717-정민서.hml
+2026-01-28 17:42:03,014 - INFO - 변환 성공: DIW-000733-김가람.hwp -> DIW-000733-김가람.hml
+2026-01-28 17:42:03,619 - INFO - 변환 성공: DIW-000787-최유빈.hwp -> DIW-000787-최유빈.hml
+2026-01-28 17:42:04,168 - INFO - 변환 성공: DIW-000790-변선율.hwp -> DIW-000790-변선율.hml
+2026-01-28 17:42:04,603 - INFO - 변환 성공: DIW-000792-구하준.hwp -> DIW-000792-구하준.hml
+2026-01-28 17:42:05,253 - INFO - 변환 성공: DIW-000823-김지완.hwp -> DIW-000823-김지완.hml
+2026-01-28 17:42:05,888 - INFO - 변환 성공: DIW-000824-권이안.hwp -> DIW-000824-권이안.hml
+2026-01-28 17:42:06,762 - INFO - 변환 성공: DIW-000825-배성진.hwp -> DIW-000825-배성진.hml
+2026-01-28 17:42:07,299 - INFO - 변환 성공: DIW-000826-허윤.hwp -> DIW-000826-허윤.hml
+2026-01-28 17:42:07,881 - INFO - 변환 성공: DIW-000827-손민우.hwp -> DIW-000827-손민우.hml
+2026-01-28 17:42:08,439 - INFO - 변환 성공: DIW-000828-김태윤.hwp -> DIW-000828-김태윤.hml
+2026-01-28 17:42:08,982 - INFO - 변환 성공: DIW-000829-윤채원.hwp -> DIW-000829-윤채원.hml
+2026-01-28 17:42:09,526 - INFO - 변환 성공: DIW-000830-조은유.hwp -> DIW-000830-조은유.hml
+2026-01-28 17:42:10,046 - INFO - 변환 성공: DIW-000831-임다윤.hwp -> DIW-000831-임다윤.hml
+2026-01-28 17:42:11,122 - INFO - 변환 성공: DIW-000832-이유진.hwp -> DIW-000832-이유진.hml
+2026-01-28 17:42:12,288 - INFO - 변환 성공: DIW-000833-양예권.hwp -> DIW-000833-양예권.hml
+2026-01-28 17:42:13,008 - INFO - 변환 성공: DIW-000834-최레아.hwp -> DIW-000834-최레아.hml
+2026-01-28 17:42:13,522 - INFO - 변환 성공: DIW-000835-유승필.hwp -> DIW-000835-유승필.hml
+2026-01-28 17:42:14,153 - INFO - 변환 성공: DIW-000836-이나경.hwp -> DIW-000836-이나경.hml
+2026-01-28 17:42:14,768 - INFO - 변환 성공: DIW-000837-박준희.hwp -> DIW-000837-박준희.hml
+2026-01-28 17:42:15,305 - INFO - 변환 성공: DIW-000838-김시환.hwp -> DIW-000838-김시환.hml
+2026-01-28 17:42:15,823 - INFO - 변환 성공: DIW-000839-김지민.hwp -> DIW-000839-김지민.hml
+2026-01-28 17:42:16,342 - INFO - 변환 성공: DIW-000840-정해우.hwp -> DIW-000840-정해우.hml
+2026-01-28 17:42:16,876 - INFO - 변환 성공: DIW-000842-김지율.hwp -> DIW-000842-김지율.hml
+2026-01-28 17:42:17,458 - INFO - 변환 성공: DIW-000843-마하민.hwp -> DIW-000843-마하민.hml
+2026-01-28 17:42:18,027 - INFO - 변환 성공: DIW-000910-황진성.hwp -> DIW-000910-황진성.hml
+2026-01-28 17:42:18,723 - INFO - 변환 성공: DIW-000915-윤시현.hwp -> DIW-000915-윤시현.hml
+2026-01-28 17:42:19,308 - INFO - 변환 성공: DIW-000922-임소현.hwp -> DIW-000922-임소현.hml
+2026-01-28 17:42:20,043 - INFO - 변환 성공: DIW-000923-이승하.hwp -> DIW-000923-이승하.hml
+2026-01-28 17:42:20,544 - INFO - 변환 성공: DIW-000924-김지율.hwp -> DIW-000924-김지율.hml
+2026-01-28 17:42:20,958 - INFO - 변환 성공: DIW-000925-이서율.hwp -> DIW-000925-이서율.hml
+2026-01-28 17:42:21,514 - INFO - 변환 성공: DIW-000926-노태경.hwp -> DIW-000926-노태경.hml
+2026-01-28 17:42:22,207 - INFO - 변환 성공: DIW-000927-이성원.hwp -> DIW-000927-이성원.hml
+2026-01-28 17:42:22,615 - INFO - 변환 성공: DIW-000933-고현우.hwp -> DIW-000933-고현우.hml
+2026-01-28 17:42:23,186 - INFO - 변환 성공: DIW-000939-윤하은.hwp -> DIW-000939-윤하은.hml
+2026-01-28 17:42:23,737 - INFO - 변환 성공: DIW-000944-박도하.hwp -> DIW-000944-박도하.hml
+2026-01-28 17:42:24,275 - INFO - 변환 성공: DIW-000972-이온유.hwp -> DIW-000972-이온유.hml
+2026-01-28 17:42:24,894 - INFO - 변환 성공: DIW-001022-강하랑.hwp -> DIW-001022-강하랑.hml
+2026-01-28 17:42:25,523 - INFO - 변환 성공: DIW-001042-평지성.hwp -> DIW-001042-평지성.hml
+2026-01-28 17:42:26,120 - INFO - 변환 성공: DIW-001043-박신주.hwp -> DIW-001043-박신주.hml
+2026-01-28 17:42:26,727 - INFO - 변환 성공: DIW-001044-이강후.hwp -> DIW-001044-이강후.hml
+2026-01-28 17:42:27,316 - INFO - 변환 성공: DIW-001045-김아린.hwp -> DIW-001045-김아린.hml
+2026-01-28 17:42:28,054 - INFO - 변환 성공: DIW-001046-오유준.hwp -> DIW-001046-오유준.hml
+2026-01-28 17:42:28,733 - INFO - 변환 성공: DIW-001061-안은서.hwp -> DIW-001061-안은서.hml
+2026-01-28 17:42:29,304 - INFO - 변환 성공: DIW-001064-형동건.hwp -> DIW-001064-형동건.hml
+2026-01-28 17:42:29,867 - INFO - 변환 성공: DIW-001065-김가람.hwp -> DIW-001065-김가람.hml
+2026-01-28 17:42:30,332 - INFO - 변환 성공: DIW-001066-이제율.hwp -> DIW-001066-이제율.hml
+2026-01-28 17:42:30,742 - INFO - 변환 성공: DIW-001067-이지윤.hwp -> DIW-001067-이지윤.hml
+2026-01-28 17:42:31,174 - INFO - 변환 성공: DIW-001068-김능우.hwp -> DIW-001068-김능우.hml
+2026-01-28 17:42:31,601 - INFO - 변환 성공: DIW-001069-남도현.hwp -> DIW-001069-남도현.hml
+2026-01-28 17:42:32,151 - INFO - 변환 성공: DIW-001071-김재윤.hwp -> DIW-001071-김재윤.hml
+2026-01-28 17:42:32,592 - INFO - 변환 성공: DIW-001072-이서빈.hwp -> DIW-001072-이서빈.hml
+2026-01-28 17:42:33,042 - INFO - 변환 성공: DIW-001074-문성율.hwp -> DIW-001074-문성율.hml
+2026-01-28 17:42:33,509 - INFO - 변환 성공: DIW-001075-박수연.hwp -> DIW-001075-박수연.hml
+2026-01-28 17:42:33,868 - INFO - 변환 성공: DIW-001111-이예나.hwp -> DIW-001111-이예나.hml
+2026-01-28 17:42:34,195 - INFO - 변환 성공: DIW-001112-조은서.hwp -> DIW-001112-조은서.hml
+2026-01-28 17:42:34,519 - INFO - 변환 성공: DIW-001114-엄시연.hwp -> DIW-001114-엄시연.hml
+2026-01-28 17:42:34,941 - INFO - 변환 성공: DIW-001115-이윤서.hwp -> DIW-001115-이윤서.hml
+2026-01-28 17:42:35,541 - INFO - 변환 성공: DIW-001116-이라경.hwp -> DIW-001116-이라경.hml
+2026-01-28 17:42:36,164 - INFO - 변환 성공: DIW-001117-권예린.hwp -> DIW-001117-권예린.hml
+2026-01-28 17:42:37,019 - INFO - 변환 성공: DIW-001118-이수연.hwp -> DIW-001118-이수연.hml
+2026-01-28 17:42:37,867 - INFO - 변환 성공: DIW-001124-곽혜인.hwp -> DIW-001124-곽혜인.hml
+2026-01-28 17:42:38,707 - INFO - 변환 성공: DIW-001125-손예지.hwp -> DIW-001125-손예지.hml
+2026-01-28 17:42:39,505 - INFO - 변환 성공: DIW-001127-노화영.hwp -> DIW-001127-노화영.hml
+2026-01-28 17:42:40,349 - INFO - 변환 성공: DIW-001128-김건우.hwp -> DIW-001128-김건우.hml
+2026-01-28 17:42:41,102 - INFO - 변환 성공: DIW-001129-김지범.hwp -> DIW-001129-김지범.hml
+2026-01-28 17:42:42,044 - INFO - 변환 성공: DIW-001130-오권율.hwp -> DIW-001130-오권율.hml
+2026-01-28 17:42:42,878 - INFO - 변환 성공: DIW-001131-권주원.hwp -> DIW-001131-권주원.hml
+2026-01-28 17:42:43,532 - INFO - 변환 성공: DIW-001132-김도현.hwp -> DIW-001132-김도현.hml
+2026-01-28 17:42:44,139 - INFO - 변환 성공: DIW-001133-백채완.hwp -> DIW-001133-백채완.hml
+2026-01-28 17:42:44,820 - INFO - 변환 성공: DIW-001134-백재웅.hwp -> DIW-001134-백재웅.hml
+2026-01-28 17:42:45,528 - INFO - 변환 성공: DIW-001145-박정수.hwp -> DIW-001145-박정수.hml
+2026-01-28 17:42:46,146 - INFO - 변환 성공: DIW-001151-김민준.hwp -> DIW-001151-김민준.hml
+2026-01-28 17:42:46,820 - INFO - 변환 성공: DIW-001194-박선우.hwp -> DIW-001194-박선우.hml
+2026-01-28 17:42:47,387 - INFO - 변환 성공: DIW-001198-이용준.hwp -> DIW-001198-이용준.hml
+2026-01-28 17:42:47,957 - INFO - 변환 성공: DIW-001223-장예은.hwp -> DIW-001223-장예은.hml
+2026-01-28 17:42:48,501 - INFO - 변환 성공: DIW-001226-김인서.hwp -> DIW-001226-김인서.hml
+2026-01-28 17:42:49,049 - INFO - 변환 성공: DIW-001232-백준우.hwp -> DIW-001232-백준우.hml
+2026-01-28 17:42:49,624 - INFO - 변환 성공: DIW-001233-윤승후.hwp -> DIW-001233-윤승후.hml
+2026-01-28 17:42:50,183 - INFO - 변환 성공: DIW-001234-백진서.hwp -> DIW-001234-백진서.hml
+2026-01-28 17:42:50,744 - INFO - 변환 성공: DIW-001238-김진운.hwp -> DIW-001238-김진운.hml
+2026-01-28 17:42:51,273 - INFO - 변환 성공: DIW-001243-조문규.hwp -> DIW-001243-조문규.hml
+2026-01-28 17:42:51,798 - INFO - 변환 성공: DIW-001255-이가온.hwp -> DIW-001255-이가온.hml
+2026-01-28 17:42:52,338 - INFO - 변환 성공: DIW-001257-최규하.hwp -> DIW-001257-최규하.hml
+2026-01-28 17:42:52,897 - INFO - 변환 성공: DIW-001299-김재우.hwp -> DIW-001299-김재우.hml
+2026-01-28 17:42:53,427 - INFO - 변환 성공: DIW-001333-정다현.hwp -> DIW-001333-정다현.hml
+2026-01-28 17:42:53,943 - INFO - 변환 성공: DIW-001335-성시후.hwp -> DIW-001335-성시후.hml
+2026-01-28 17:42:54,379 - INFO - 변환 성공: DIW-001371-한유주.hwp -> DIW-001371-한유주.hml
+2026-01-28 17:42:54,926 - INFO - 변환 성공: DIW-001398-박수진.hwp -> DIW-001398-박수진.hml
+2026-01-28 17:42:55,494 - INFO - 변환 성공: DIW-001401-권공자.hwp -> DIW-001401-권공자.hml
+2026-01-28 17:42:56,056 - INFO - 변환 성공: DIW-001435-김도윤.hwp -> DIW-001435-김도윤.hml
+2026-01-28 17:42:56,615 - INFO - 변환 성공: DIW-001436-박서진.hwp -> DIW-001436-박서진.hml
+2026-01-28 17:42:57,265 - INFO - 변환 성공: DIW-001438-이지안.hwp -> DIW-001438-이지안.hml
+2026-01-28 17:42:57,726 - INFO - 변환 성공: DIW-001448-김연주.hwp -> DIW-001448-김연주.hml
+2026-01-28 17:42:58,223 - INFO - 변환 성공: DIW-001472-신지환.hwp -> DIW-001472-신지환.hml
+2026-01-28 17:42:58,768 - INFO - 변환 성공: DIW-001487-변연나.hwp -> DIW-001487-변연나.hml
+2026-01-28 17:42:59,395 - INFO - 변환 성공: DIW-001488-박시현.hwp -> DIW-001488-박시현.hml
+2026-01-28 17:42:59,986 - INFO - 변환 성공: DIW-001500-윤덕우.hwp -> DIW-001500-윤덕우.hml
+2026-01-28 17:43:00,534 - INFO - 변환 성공: DIW-001501-박수빈.hwp -> DIW-001501-박수빈.hml
+2026-01-28 17:43:01,121 - INFO - 변환 성공: DIW-001550-김윤재.hwp -> DIW-001550-김윤재.hml
+2026-01-28 17:43:01,601 - INFO - 변환 성공: DIW-001551-장예진.hwp -> DIW-001551-장예진.hml
+2026-01-28 17:43:01,960 - INFO - 변환 성공: DIW-001552-윤유진.hwp -> DIW-001552-윤유진.hml
+2026-01-28 17:43:02,283 - INFO - 변환 성공: DIW-001553-기은유.hwp -> DIW-001553-기은유.hml
+2026-01-28 17:43:02,592 - INFO - 변환 성공: DIW-001561-송다원.hwp -> DIW-001561-송다원.hml
+2026-01-28 17:43:02,988 - INFO - 변환 성공: DIW-001562-박민건.hwp -> DIW-001562-박민건.hml
+2026-01-28 17:43:03,526 - INFO - 변환 성공: DIW-001596-박세민.hwp -> DIW-001596-박세민.hml
+2026-01-28 17:43:04,109 - INFO - 변환 성공: DIW-001624-이하윤.hwp -> DIW-001624-이하윤.hml
+2026-01-28 17:43:04,728 - INFO - 변환 성공: DIW-001625-신유현.hwp -> DIW-001625-신유현.hml
+2026-01-28 17:43:05,282 - INFO - 변환 성공: DIW-001636-최민하.hwp -> DIW-001636-최민하.hml
+2026-01-28 17:43:05,851 - INFO - 변환 성공: DIW-001637-김태일.hwp -> DIW-001637-김태일.hml
+2026-01-28 17:43:06,397 - INFO - 변환 성공: DIW-001638-김세준.hwp -> DIW-001638-김세준.hml
+2026-01-28 17:43:07,000 - INFO - 변환 성공: DIW-001640-페드라노아정.hwp -> DIW-001640-페드라노아정.hml
+2026-01-28 17:43:07,558 - INFO - 변환 성공: DIW-001654-우혜령.hwp -> DIW-001654-우혜령.hml
+2026-01-28 17:43:08,105 - INFO - 변환 성공: DIW-001690-박주성.hwp -> DIW-001690-박주성.hml
+2026-01-28 17:43:08,680 - INFO - 변환 성공: DIW-001738-허성빈.hwp -> DIW-001738-허성빈.hml
+2026-01-28 17:43:09,158 - INFO - 변환 성공: DIW-001807-박주원.hwp -> DIW-001807-박주원.hml
+2026-01-28 17:43:09,491 - INFO - 변환 성공: DIW-001808-이재욱.hwp -> DIW-001808-이재욱.hml
+2026-01-28 17:43:09,914 - INFO - 변환 성공: DIW-001810-황서연.hwp -> DIW-001810-황서연.hml
+2026-01-28 17:43:10,386 - INFO - 변환 성공: DIW-001832-김서영.hwp -> DIW-001832-김서영.hml
+2026-01-28 17:43:10,891 - INFO - 변환 성공: DIW-001851-심효주.hwp -> DIW-001851-심효주.hml
+2026-01-28 17:43:11,575 - INFO - 변환 성공: DIW-001872-김민성.hwp -> DIW-001872-김민성.hml
+2026-01-28 17:43:12,222 - INFO - 변환 성공: DIW-001874-윤시현.hwp -> DIW-001874-윤시현.hml
+2026-01-28 17:43:12,855 - INFO - 변환 성공: DIW-001888-김가연.hwp -> DIW-001888-김가연.hml
+2026-01-28 17:43:13,486 - INFO - 변환 성공: DIW-001892-김성영.hwp -> DIW-001892-김성영.hml
+2026-01-28 17:43:14,100 - INFO - 변환 성공: DIW-001895-김재훈.hwp -> DIW-001895-김재훈.hml
+2026-01-28 17:43:14,760 - INFO - 변환 성공: DIW-001921-고태양.hwp -> DIW-001921-고태양.hml
+2026-01-28 17:43:15,373 - INFO - 변환 성공: DIW-001922-박다현.hwp -> DIW-001922-박다현.hml
+2026-01-28 17:43:15,973 - INFO - 변환 성공: DIW-001932-이지수.hwp -> DIW-001932-이지수.hml
+2026-01-28 17:43:16,534 - INFO - 변환 성공: DIW-001933-임시윤.hwp -> DIW-001933-임시윤.hml
+2026-01-28 17:43:17,103 - INFO - 변환 성공: DIW-001934-장은율.hwp -> DIW-001934-장은율.hml
+2026-01-28 17:43:17,671 - INFO - 변환 성공: DIW-001935-지은성.hwp -> DIW-001935-지은성.hml
+2026-01-28 17:43:18,234 - INFO - 변환 성공: DIW-001937-주윤담.hwp -> DIW-001937-주윤담.hml
+2026-01-28 17:43:18,744 - INFO - 변환 성공: DIW-001938-김도우.hwp -> DIW-001938-김도우.hml
+2026-01-28 17:43:19,278 - INFO - 변환 성공: DIW-001939-김보윤.hwp -> DIW-001939-김보윤.hml
+2026-01-28 17:43:19,811 - INFO - 변환 성공: DIW-001940-한준희.hwp -> DIW-001940-한준희.hml
+2026-01-28 17:43:20,328 - INFO - 변환 성공: DIW-001941-이린하.hwp -> DIW-001941-이린하.hml
+2026-01-28 17:43:20,891 - INFO - 변환 성공: DIW-001942-박근우.hwp -> DIW-001942-박근우.hml
+2026-01-28 17:43:21,412 - INFO - 변환 성공: DIW-001943-정예성.hwp -> DIW-001943-정예성.hml
+2026-01-28 17:43:21,933 - INFO - 변환 성공: DIW-001944-강주하.hwp -> DIW-001944-강주하.hml
+2026-01-28 17:43:22,472 - INFO - 변환 성공: DIW-001945-권두성.hwp -> DIW-001945-권두성.hml
+2026-01-28 17:43:23,035 - INFO - 변환 성공: DIW-001946-최지유.hwp -> DIW-001946-최지유.hml
+2026-01-28 17:43:23,594 - INFO - 변환 성공: DIW-001954-강승훈.hwp -> DIW-001954-강승훈.hml
+2026-01-28 17:43:24,104 - INFO - 변환 성공: DIW-001955-류지우.hwp -> DIW-001955-류지우.hml
+2026-01-28 17:43:24,455 - INFO - 변환 성공: DIW-001982-이다복.hwp -> DIW-001982-이다복.hml
+2026-01-28 17:43:24,962 - INFO - 변환 성공: DIW-002061-임주희.hwp -> DIW-002061-임주희.hml
+2026-01-28 17:43:25,502 - INFO - 변환 성공: DIW-002066-태현욱.hwp -> DIW-002066-태현욱.hml
+2026-01-28 17:43:25,967 - INFO - 변환 성공: DIW-002119-김민호.hwp -> DIW-002119-김민호.hml
+2026-01-28 17:43:26,438 - INFO - 변환 성공: DIW-002154-백주은.hwp -> DIW-002154-백주은.hml
+2026-01-28 17:43:27,611 - INFO - 변환 성공: DIW-002155-김지효.hwp -> DIW-002155-김지효.hml
+2026-01-28 17:43:28,224 - INFO - 변환 성공: DIW-002156-조은지.hwp -> DIW-002156-조은지.hml
+2026-01-28 17:43:28,758 - INFO - 변환 성공: DIW-002194-구윤지.hwp -> DIW-002194-구윤지.hml
+2026-01-28 17:43:29,327 - INFO - 변환 성공: DIW-002196-김도현.hwp -> DIW-002196-김도현.hml
+2026-01-28 17:43:29,942 - INFO - 변환 성공: DIW-002197-김라희.hwp -> DIW-002197-김라희.hml
+2026-01-28 17:43:30,500 - INFO - 변환 성공: DIW-002198-김수현.hwp -> DIW-002198-김수현.hml
+2026-01-28 17:43:31,232 - INFO - 변환 성공: DIW-002233-신유나.hwp -> DIW-002233-신유나.hml
+2026-01-28 17:43:31,823 - INFO - 변환 성공: DIW-002246-최민찬.hwp -> DIW-002246-최민찬.hml
+2026-01-28 17:43:32,638 - INFO - 변환 성공: DIW-002388-임도아.hwp -> DIW-002388-임도아.hml
+2026-01-28 17:43:33,340 - INFO - 변환 성공: DIW-002413-김상윤.hwp -> DIW-002413-김상윤.hml
+2026-01-28 17:43:33,993 - INFO - 변환 성공: DIW-002506-강주원.hwp -> DIW-002506-강주원.hml
+2026-01-28 17:43:34,566 - INFO - 변환 성공: DIW-002507-전여준.hwp -> DIW-002507-전여준.hml
+2026-01-28 17:43:35,164 - INFO - 변환 성공: DIW-002508-박연우.hwp -> DIW-002508-박연우.hml
+2026-01-28 17:43:35,798 - INFO - 변환 성공: DIW-002521-김병민.hwp -> DIW-002521-김병민.hml
+2026-01-28 17:43:36,473 - INFO - 변환 성공: DIW-002524-김범준.hwp -> DIW-002524-김범준.hml
+2026-01-28 17:43:37,048 - INFO - 변환 성공: DIW-002527-공동혁.hwp -> DIW-002527-공동혁.hml
+2026-01-28 17:43:37,656 - INFO - 변환 성공: DIW-002528-정재환.hwp -> DIW-002528-정재환.hml
+2026-01-28 17:43:38,457 - INFO - 변환 성공: DIW-002529-강단우.hwp -> DIW-002529-강단우.hml
+2026-01-28 17:43:39,245 - INFO - 변환 성공: DIW-002532-마준영.hwp -> DIW-002532-마준영.hml
+2026-01-28 17:43:40,067 - INFO - 변환 성공: DIW-002533-최재훈.hwp -> DIW-002533-최재훈.hml
+2026-01-28 17:43:41,030 - INFO - 변환 성공: DIW-002534-김석원.hwp -> DIW-002534-김석원.hml
+2026-01-28 17:43:41,929 - INFO - 변환 성공: DIW-002535-조윤찬.hwp -> DIW-002535-조윤찬.hml
+2026-01-28 17:43:42,962 - INFO - 변환 성공: DIW-002554-한서진.hwp -> DIW-002554-한서진.hml
+2026-01-28 17:43:43,961 - INFO - 변환 성공: DIW-002633-박채준.hwp -> DIW-002633-박채준.hml
+2026-01-28 17:43:44,863 - INFO - 변환 성공: DIW-002635-김록원.hwp -> DIW-002635-김록원.hml
+2026-01-28 17:43:45,681 - INFO - 변환 성공: DIW-002637-명지호.hwp -> DIW-002637-명지호.hml
+2026-01-28 17:43:46,404 - INFO - 변환 성공: DIW-002673-노현제.hwp -> DIW-002673-노현제.hml
+2026-01-28 17:43:47,254 - INFO - 변환 성공: DIW-002674-김지원.hwp -> DIW-002674-김지원.hml
+2026-01-28 17:43:48,145 - INFO - 변환 성공: DIW-002675-도지민.hwp -> DIW-002675-도지민.hml
+2026-01-28 17:43:48,964 - INFO - 변환 성공: DIW-002676-박은찬.hwp -> DIW-002676-박은찬.hml
+2026-01-28 17:43:49,828 - INFO - 변환 성공: DIW-002677-송지아.hwp -> DIW-002677-송지아.hml
+2026-01-28 17:43:50,952 - INFO - 변환 성공: DIW-002678-서형욱.hwp -> DIW-002678-서형욱.hml
+2026-01-28 17:43:51,740 - INFO - 변환 성공: DIW-002679-박은우.hwp -> DIW-002679-박은우.hml
+2026-01-28 17:43:52,639 - INFO - 변환 성공: DIW-002680-백성도.hwp -> DIW-002680-백성도.hml
+2026-01-28 17:43:53,421 - INFO - 변환 성공: DIW-002681-서초아.hwp -> DIW-002681-서초아.hml
+2026-01-28 17:43:54,148 - INFO - 변환 성공: DIW-002682-김도현.hwp -> DIW-002682-김도현.hml
+2026-01-28 17:43:54,889 - INFO - 변환 성공: DIW-002683-서유준.hwp -> DIW-002683-서유준.hml
+2026-01-28 17:43:55,662 - INFO - 변환 성공: DIW-002684-백인성.hwp -> DIW-002684-백인성.hml
+2026-01-28 17:43:56,454 - INFO - 변환 성공: DIW-002685-나원준.hwp -> DIW-002685-나원준.hml
+2026-01-28 17:43:57,219 - INFO - 변환 성공: DIW-002686-최예준.hwp -> DIW-002686-최예준.hml
+2026-01-28 17:43:58,024 - INFO - 변환 성공: DIW-002687-길도경.hwp -> DIW-002687-길도경.hml
+2026-01-28 17:43:58,793 - INFO - 변환 성공: DIW-002688-임하준.hwp -> DIW-002688-임하준.hml
+2026-01-28 17:43:59,488 - INFO - 변환 성공: DIW-002689-구윤재.hwp -> DIW-002689-구윤재.hml
+2026-01-28 17:44:00,272 - INFO - 변환 성공: DIW-002690-박하린.hwp -> DIW-002690-박하린.hml
+2026-01-28 17:44:00,996 - INFO - 변환 성공: DIW-002691-이윤철.hwp -> DIW-002691-이윤철.hml
+2026-01-28 17:44:01,751 - INFO - 변환 성공: DIW-002692-박도원.hwp -> DIW-002692-박도원.hml
+2026-01-28 17:44:02,566 - INFO - 변환 성공: DIW-002693-정유나.hwp -> DIW-002693-정유나.hml
+2026-01-28 17:44:03,429 - INFO - 변환 성공: DIW-002694-김준서.hwp -> DIW-002694-김준서.hml
+2026-01-28 17:44:04,047 - INFO - 변환 성공: DIW-002695-박지인.hwp -> DIW-002695-박지인.hml
+2026-01-28 17:44:04,787 - INFO - 변환 성공: DIW-002696-박재완.hwp -> DIW-002696-박재완.hml
+2026-01-28 17:44:05,549 - INFO - 변환 성공: DIW-002697-오예서.hwp -> DIW-002697-오예서.hml
+2026-01-28 17:44:06,254 - INFO - 변환 성공: DIW-002718-임채영.hwp -> DIW-002718-임채영.hml
+2026-01-28 17:44:06,901 - INFO - 변환 성공: DIW-002720-최소윤.hwp -> DIW-002720-최소윤.hml
+2026-01-28 17:44:07,709 - INFO - 변환 성공: DIW-002722-김찬휘.hwp -> DIW-002722-김찬휘.hml
+2026-01-28 17:44:08,633 - INFO - 변환 성공: DIW-002843-김태겸.hwp -> DIW-002843-김태겸.hml
+2026-01-28 17:44:09,543 - INFO - 변환 성공: DIW-002917-양준석.hwp -> DIW-002917-양준석.hml
+2026-01-28 17:44:10,374 - INFO - 변환 성공: DIW-002918-이유천.hwp -> DIW-002918-이유천.hml
+2026-01-28 17:44:11,295 - INFO - 변환 성공: DIW-002919-박민서.hwp -> DIW-002919-박민서.hml
+2026-01-28 17:44:12,377 - INFO - 변환 성공: DIW-002920-김준영.hwp -> DIW-002920-김준영.hml
+2026-01-28 17:44:13,129 - INFO - 변환 성공: DIW-002921-박주아.hwp -> DIW-002921-박주아.hml
+2026-01-28 17:44:13,972 - INFO - 변환 성공: DIW-002922-권도현.hwp -> DIW-002922-권도현.hml
+2026-01-28 17:44:15,046 - INFO - 변환 성공: DIW-002923-김우영.hwp -> DIW-002923-김우영.hml
+2026-01-28 17:44:16,170 - INFO - 변환 성공: DIW-002924-임하준.hwp -> DIW-002924-임하준.hml
+2026-01-28 17:44:16,962 - INFO - 변환 성공: DIW-002925-장라희.hwp -> DIW-002925-장라희.hml
+2026-01-28 17:44:17,777 - INFO - 변환 성공: DIW-002926-강민서.hwp -> DIW-002926-강민서.hml
+2026-01-28 17:44:18,647 - INFO - 변환 성공: DIW-002927-강인영.hwp -> DIW-002927-강인영.hml
+2026-01-28 17:44:19,575 - INFO - 변환 성공: DIW-002931-김성우.hwp -> DIW-002931-김성우.hml
+2026-01-28 17:44:20,312 - INFO - 변환 성공: DIW-002956-황시현.hwp -> DIW-002956-황시현.hml
+2026-01-28 17:44:21,060 - INFO - 변환 성공: DIW-002961-손서연.hwp -> DIW-002961-손서연.hml
+2026-01-28 17:44:21,831 - INFO - 변환 성공: DIW-002962-전시은.hwp -> DIW-002962-전시은.hml
+2026-01-28 17:44:22,671 - INFO - 변환 성공: DIW-002963-온소율.hwp -> DIW-002963-온소율.hml
+2026-01-28 17:44:23,436 - INFO - 변환 성공: DIW-002970-김서연.hwp -> DIW-002970-김서연.hml
+2026-01-28 17:44:24,169 - INFO - 변환 성공: DIW-003067-박시후.hwp -> DIW-003067-박시후.hml
+2026-01-28 17:44:24,890 - INFO - 변환 성공: DIW-003068-박서율.hwp -> DIW-003068-박서율.hml
+2026-01-28 17:44:25,624 - INFO - 변환 성공: DIW-003069-최진우.hwp -> DIW-003069-최진우.hml
+2026-01-28 17:44:26,386 - INFO - 변환 성공: DIW-003073-전지현.hwp -> DIW-003073-전지현.hml
+2026-01-28 17:44:27,110 - INFO - 변환 성공: DIW-003147-정시연.hwp -> DIW-003147-정시연.hml
+2026-01-28 17:44:27,897 - INFO - 변환 성공: DIW-003233-임찬우.hwp -> DIW-003233-임찬우.hml
+2026-01-28 17:44:28,626 - INFO - 변환 성공: DIW-003234-도현율.hwp -> DIW-003234-도현율.hml
+2026-01-28 17:44:29,488 - INFO - 변환 성공: DIW-003236-신준섭.hwp -> DIW-003236-신준섭.hml
+2026-01-28 17:44:30,248 - INFO - 변환 성공: DIW-003240-한아름.hwp -> DIW-003240-한아름.hml
+2026-01-28 17:44:31,164 - INFO - 변환 성공: DIW-003242-진윤서.hwp -> DIW-003242-진윤서.hml
+2026-01-28 17:44:32,138 - INFO - 변환 성공: DIW-003243-유은우.hwp -> DIW-003243-유은우.hml
+2026-01-28 17:44:32,876 - INFO - 변환 성공: DIW-003244-김리아.hwp -> DIW-003244-김리아.hml
+2026-01-28 17:44:33,525 - INFO - 변환 성공: DIW-003245-한예린.hwp -> DIW-003245-한예린.hml
+2026-01-28 17:44:34,106 - INFO - 변환 성공: DIW-003281-김나현.hwp -> DIW-003281-김나현.hml
+2026-01-28 17:44:34,930 - INFO - 변환 성공: DIW-003284-조하윤.hwp -> DIW-003284-조하윤.hml
+2026-01-28 17:44:35,889 - INFO - 변환 성공: DIW-003285-박세일.hwp -> DIW-003285-박세일.hml
+2026-01-28 17:44:36,695 - INFO - 변환 성공: DIW-003374-이서연.hwp -> DIW-003374-이서연.hml
+2026-01-28 17:44:37,543 - INFO - 변환 성공: DIW-003580-전지윤.hwp -> DIW-003580-전지윤.hml
+2026-01-28 17:44:38,362 - INFO - 변환 성공: DIW-003597-김수현.hwp -> DIW-003597-김수현.hml
+2026-01-28 17:44:39,371 - INFO - 변환 성공: DIW-003601-신주아.hwp -> DIW-003601-신주아.hml
+2026-01-28 17:44:40,243 - INFO - 변환 성공: DIW-003615-김지완.hwp -> DIW-003615-김지완.hml
+2026-01-28 17:44:41,040 - INFO - 변환 성공: DIW-003616-김사랑.hwp -> DIW-003616-김사랑.hml
+2026-01-28 17:44:41,516 - INFO - 변환 성공: DIW-003618-박하준.hwp -> DIW-003618-박하준.hml
+2026-01-28 17:44:42,107 - INFO - 변환 성공: DIW-003620-이규연.hwp -> DIW-003620-이규연.hml
+2026-01-28 17:44:43,006 - INFO - 변환 성공: DIW-003645-문채은.hwp -> DIW-003645-문채은.hml
+2026-01-28 17:44:43,783 - INFO - 변환 성공: DIW-003782-송아현.hwp -> DIW-003782-송아현.hml
+2026-01-28 17:44:44,540 - INFO - 변환 성공: DIW-003833-오재홍.hwp -> DIW-003833-오재홍.hml
+2026-01-28 17:44:45,190 - INFO - 변환 성공: DIW-003882-박지훈.hwp -> DIW-003882-박지훈.hml
+2026-01-28 17:44:45,877 - INFO - 변환 성공: DIW-003913-최유빈.hwp -> DIW-003913-최유빈.hml
+2026-01-28 17:44:46,695 - INFO - 변환 성공: DIW-003920-윤서하.hwp -> DIW-003920-윤서하.hml
+2026-01-28 17:44:47,521 - INFO - 변환 성공: DIW-003922-정지훈.hwp -> DIW-003922-정지훈.hml
+2026-01-28 17:44:48,373 - INFO - 변환 성공: DIW-003923-박경리.hwp -> DIW-003923-박경리.hml
+2026-01-28 17:44:49,160 - INFO - 변환 성공: DIW-003927-구윤찬.hwp -> DIW-003927-구윤찬.hml
+2026-01-28 17:44:49,938 - INFO - 변환 성공: DIW-003971-이수인.hwp -> DIW-003971-이수인.hml
+2026-01-28 17:44:50,797 - INFO - 변환 성공: DIW-003972-고민준.hwp -> DIW-003972-고민준.hml
+2026-01-28 17:44:51,640 - INFO - 변환 성공: DIW-003978-김채원.hwp -> DIW-003978-김채원.hml
+2026-01-28 17:44:52,443 - INFO - 변환 성공: DIW-003980-조다나.hwp -> DIW-003980-조다나.hml
+2026-01-28 17:44:53,325 - INFO - 변환 성공: DIW-003981-남우현.hwp -> DIW-003981-남우현.hml
+2026-01-28 17:44:54,235 - INFO - 변환 성공: DIW-003982-최연수.hwp -> DIW-003982-최연수.hml
+2026-01-28 17:44:55,045 - INFO - 변환 성공: DIW-003983-박예준.hwp -> DIW-003983-박예준.hml
+2026-01-28 17:44:55,722 - INFO - 변환 성공: DIW-003984-문하은.hwp -> DIW-003984-문하은.hml
+2026-01-28 17:44:56,514 - INFO - 변환 성공: DIW-003985-김선우.hwp -> DIW-003985-김선우.hml
+2026-01-28 17:44:57,303 - INFO - 변환 성공: DIW-003986-심은우.hwp -> DIW-003986-심은우.hml
+2026-01-28 17:44:58,208 - INFO - 변환 성공: DIW-003994-김현서.hwp -> DIW-003994-김현서.hml
+2026-01-28 17:44:59,079 - INFO - 변환 성공: DIW-004002-고우리.hwp -> DIW-004002-고우리.hml
+2026-01-28 17:44:59,785 - INFO - 변환 성공: DIW-004012-오도겸.hwp -> DIW-004012-오도겸.hml
+2026-01-28 17:45:00,388 - INFO - 변환 성공: DIW-004051-박승아.hwp -> DIW-004051-박승아.hml
+2026-01-28 17:45:01,218 - INFO - 변환 성공: DIW-004052-박종수.hwp -> DIW-004052-박종수.hml
+2026-01-28 17:45:02,041 - INFO - 변환 성공: DIW-004104-주윤우.hwp -> DIW-004104-주윤우.hml
+2026-01-28 17:45:02,804 - INFO - 변환 성공: DIW-004105-김하늘.hwp -> DIW-004105-김하늘.hml
+2026-01-28 17:45:03,662 - INFO - 변환 성공: DIW-004119-이서윤.hwp -> DIW-004119-이서윤.hml
+2026-01-28 17:45:04,538 - INFO - 변환 성공: DIW-004121-한지우.hwp -> DIW-004121-한지우.hml
+2026-01-28 17:45:05,211 - INFO - 변환 성공: DIW-004124-박한결.hwp -> DIW-004124-박한결.hml
+2026-01-28 17:45:05,700 - INFO - 변환 성공: DIW-004125-박한빛.hwp -> DIW-004125-박한빛.hml
+2026-01-28 17:45:06,203 - INFO - 변환 성공: DIW-004127-이지원.hwp -> DIW-004127-이지원.hml
+2026-01-28 17:45:06,774 - INFO - 변환 성공: DIW-004128-강호연.hwp -> DIW-004128-강호연.hml
+2026-01-28 17:45:07,363 - INFO - 변환 성공: DIW-004141-정진경.hwp -> DIW-004141-정진경.hml
+2026-01-28 17:45:08,333 - INFO - 변환 성공: DIW-004142-안하윤.hwp -> DIW-004142-안하윤.hml
+2026-01-28 17:45:09,166 - INFO - 변환 성공: DIW-004143-최수현.hwp -> DIW-004143-최수현.hml
+2026-01-28 17:45:09,914 - INFO - 변환 성공: DIW-004193-강유준.hwp -> DIW-004193-강유준.hml
+2026-01-28 17:45:10,638 - INFO - 변환 성공: DIW-004194-최승유.hwp -> DIW-004194-최승유.hml
+2026-01-28 17:45:11,474 - INFO - 변환 성공: DIW-004231-김윤서.hwp -> DIW-004231-김윤서.hml
+2026-01-28 17:45:12,398 - INFO - 변환 성공: DIW-004280-이한비.hwp -> DIW-004280-이한비.hml
+2026-01-28 17:45:13,097 - INFO - 변환 성공: DIW-004312-이현석.hwp -> DIW-004312-이현석.hml
+2026-01-28 17:45:13,721 - INFO - 변환 성공: DIW-004332-홍란.hwp -> DIW-004332-홍란.hml
+2026-01-28 17:45:14,476 - INFO - 변환 성공: DIW-004335-김예슬.hwp -> DIW-004335-김예슬.hml
+2026-01-28 17:45:15,265 - INFO - 변환 성공: DIW-004497-조성준.hwp -> DIW-004497-조성준.hml
+2026-01-28 17:45:16,075 - INFO - 변환 성공: DIW-004505-이도현.hwp -> DIW-004505-이도현.hml
+2026-01-28 17:45:16,901 - INFO - 변환 성공: DIW-004506-최건우.hwp -> DIW-004506-최건우.hml
+2026-01-28 17:45:17,641 - INFO - 변환 성공: DIW-004520-안하준.hwp -> DIW-004520-안하준.hml
+2026-01-28 17:45:18,463 - INFO - 변환 성공: DIW-004543-우하민.hwp -> DIW-004543-우하민.hml
+2026-01-28 17:45:19,241 - INFO - 변환 성공: DIW-004580-김지호.hwp -> DIW-004580-김지호.hml
+2026-01-28 17:45:20,030 - INFO - 변환 성공: DIW-004587-박수민.hwp -> DIW-004587-박수민.hml
+2026-01-28 17:45:20,872 - INFO - 변환 성공: DIW-004588-김하진.hwp -> DIW-004588-김하진.hml
+2026-01-28 17:45:21,672 - INFO - 변환 성공: DIW-004614-손윤우.hwp -> DIW-004614-손윤우.hml
+2026-01-28 17:45:22,523 - INFO - 변환 성공: DIW-004615-양지후.hwp -> DIW-004615-양지후.hml
+2026-01-28 17:45:23,297 - INFO - 변환 성공: DIW-004616-양서윤.hwp -> DIW-004616-양서윤.hml
+2026-01-28 17:45:24,065 - INFO - 변환 성공: DIW-004617-이재원.hwp -> DIW-004617-이재원.hml
+2026-01-28 17:45:24,851 - INFO - 변환 성공: DIW-004625-심송연.hwp -> DIW-004625-심송연.hml
+2026-01-28 17:45:25,754 - INFO - 변환 성공: DIW-004656-양지윤.hwp -> DIW-004656-양지윤.hml
+2026-01-28 17:45:26,523 - INFO - 변환 성공: DIW-004667-박늘.hwp -> DIW-004667-박늘.hml
+2026-01-28 17:45:27,374 - INFO - 변환 성공: DIW-004686-박제하.hwp -> DIW-004686-박제하.hml
+2026-01-28 17:45:28,177 - INFO - 변환 성공: DIW-004691-박동균.hwp -> DIW-004691-박동균.hml
+2026-01-28 17:45:28,945 - INFO - 변환 성공: DIW-004692-이서준.hwp -> DIW-004692-이서준.hml
+2026-01-28 17:45:29,841 - INFO - 변환 성공: DIW-004693-고윤호.hwp -> DIW-004693-고윤호.hml
+2026-01-28 17:45:30,565 - INFO - 변환 성공: DIW-004694-김서윤.hwp -> DIW-004694-김서윤.hml
+2026-01-28 17:45:31,200 - INFO - 변환 성공: DIW-004743-박민준.hwp -> DIW-004743-박민준.hml
+2026-01-28 17:45:31,727 - INFO - 변환 성공: DIW-004783-이윤아.hwp -> DIW-004783-이윤아.hml
+2026-01-28 17:45:32,182 - INFO - 변환 성공: DIW-004785-허은우.hwp -> DIW-004785-허은우.hml
+2026-01-28 17:45:32,758 - INFO - 변환 성공: DIW-004788-안세아.hwp -> DIW-004788-안세아.hml
+2026-01-28 17:45:33,364 - INFO - 변환 성공: DIW-004796-서예나.hwp -> DIW-004796-서예나.hml
+2026-01-28 17:45:33,978 - INFO - 변환 성공: DIW-004797-이주은.hwp -> DIW-004797-이주은.hml
+2026-01-28 17:45:34,439 - INFO - 변환 성공: DIW-004810-신아윤.hwp -> DIW-004810-신아윤.hml
+2026-01-28 17:45:34,973 - INFO - 변환 성공: DIW-004811-강지유.hwp -> DIW-004811-강지유.hml
+2026-01-28 17:45:35,458 - INFO - 변환 성공: DIW-004824-한빈.hwp -> DIW-004824-한빈.hml
+2026-01-28 17:45:35,963 - INFO - 변환 성공: DIW-004834-김차율.hwp -> DIW-004834-김차율.hml
+2026-01-28 17:45:36,407 - INFO - 변환 성공: DIW-004879-박진환.hwp -> DIW-004879-박진환.hml
+2026-01-28 17:45:36,972 - INFO - 변환 성공: DIW-004880-양소윤.hwp -> DIW-004880-양소윤.hml
+2026-01-28 17:45:37,554 - INFO - 변환 성공: DIW-004881-김동은.hwp -> DIW-004881-김동은.hml
+2026-01-28 17:45:38,124 - INFO - 변환 성공: DIW-004882-황리원.hwp -> DIW-004882-황리원.hml
+2026-01-28 17:45:38,689 - INFO - 변환 성공: DIW-004883-이지환.hwp -> DIW-004883-이지환.hml
+2026-01-28 17:45:39,251 - INFO - 변환 성공: DIW-004884-권도이.hwp -> DIW-004884-권도이.hml
+2026-01-28 17:45:39,811 - INFO - 변환 성공: DIW-004885-정현우.hwp -> DIW-004885-정현우.hml
+2026-01-28 17:45:40,360 - INFO - 변환 성공: DIW-004886-정세훈.hwp -> DIW-004886-정세훈.hml
+2026-01-28 17:45:40,956 - INFO - 변환 성공: DIW-004892-최도윤.hwp -> DIW-004892-최도윤.hml
+2026-01-28 17:45:41,543 - INFO - 변환 성공: DIW-004893-이한율.hwp -> DIW-004893-이한율.hml
+2026-01-28 17:45:42,339 - INFO - 변환 성공: DIW-004894-이승아.hwp -> DIW-004894-이승아.hml
+2026-01-28 17:45:42,864 - INFO - 변환 성공: DIW-004895-김기현.hwp -> DIW-004895-김기현.hml
+2026-01-28 17:45:43,351 - INFO - 변환 성공: DIW-004911-이소윤.hwp -> DIW-004911-이소윤.hml
+2026-01-28 17:45:43,720 - INFO - 변환 성공: DIW-004916-김가인.hwp -> DIW-004916-김가인.hml
+2026-01-28 17:45:44,068 - INFO - 변환 성공: DIW-004917-나주훈.hwp -> DIW-004917-나주훈.hml
+2026-01-28 17:45:44,417 - INFO - 변환 성공: DIW-004922-하동균.hwp -> DIW-004922-하동균.hml
+2026-01-28 17:45:44,920 - INFO - 변환 성공: DIW-004923-하동현.hwp -> DIW-004923-하동현.hml
+2026-01-28 17:45:45,468 - INFO - 변환 성공: DIW-004927-성시아.hwp -> DIW-004927-성시아.hml
+2026-01-28 17:45:46,060 - INFO - 변환 성공: DIW-004928-XU CAN.hwp -> DIW-004928-XU CAN.hml
+2026-01-28 17:45:46,519 - INFO - 변환 성공: DIW-004929-유지환.hwp -> DIW-004929-유지환.hml
+2026-01-28 17:45:47,123 - INFO - 변환 성공: DIW-004930-류서현.hwp -> DIW-004930-류서현.hml
+2026-01-28 17:45:47,807 - INFO - 변환 성공: DIW-004932-차민재.hwp -> DIW-004932-차민재.hml
+2026-01-28 17:45:48,509 - INFO - 변환 성공: DIW-004940-김지호.hwp -> DIW-004940-김지호.hml
+2026-01-28 17:45:49,326 - INFO - 변환 성공: DIW-004945-전지훈.hwp -> DIW-004945-전지훈.hml
+2026-01-28 17:45:49,942 - INFO - 변환 성공: DIW-004948-윤슬.hwp -> DIW-004948-윤슬.hml
+2026-01-28 17:45:50,541 - INFO - 변환 성공: DIW-005000-송재민.hwp -> DIW-005000-송재민.hml
+2026-01-28 17:45:51,135 - INFO - 변환 성공: DIW-005001-박시원.hwp -> DIW-005001-박시원.hml
+2026-01-28 17:45:51,828 - INFO - 변환 성공: DIW-005002-손현준.hwp -> DIW-005002-손현준.hml
+2026-01-28 17:45:52,468 - INFO - 변환 성공: DIW-005003-류연준.hwp -> DIW-005003-류연준.hml
+2026-01-28 17:45:53,083 - INFO - 변환 성공: DIW-005004-박성진.hwp -> DIW-005004-박성진.hml
+2026-01-28 17:45:53,707 - INFO - 변환 성공: DIW-005005-이연준.hwp -> DIW-005005-이연준.hml
+2026-01-28 17:45:54,285 - INFO - 변환 성공: DIW-005006-한도윤.hwp -> DIW-005006-한도윤.hml
+2026-01-28 17:45:54,899 - INFO - 변환 성공: DIW-005067-백시율.hwp -> DIW-005067-백시율.hml
+2026-01-28 17:45:55,421 - INFO - 변환 성공: DIW-005107-주한나.hwp -> DIW-005107-주한나.hml
+2026-01-28 17:45:55,966 - INFO - 변환 성공: DIW-005110-오유진.hwp -> DIW-005110-오유진.hml
+2026-01-28 17:45:56,520 - INFO - 변환 성공: DIW-005157-안윤.hwp -> DIW-005157-안윤.hml
+2026-01-28 17:45:57,012 - INFO - 변환 성공: DIW-005158-김영환.hwp -> DIW-005158-김영환.hml
+2026-01-28 17:45:57,881 - INFO - 변환 성공: DIW-005159-김시환.hwp -> DIW-005159-김시환.hml
+2026-01-28 17:45:58,669 - INFO - 변환 성공: DIW-005189-정태규.hwp -> DIW-005189-정태규.hml
+2026-01-28 17:45:59,226 - INFO - 변환 성공: DIW-005219-김선.hwp -> DIW-005219-김선.hml
+2026-01-28 17:45:59,787 - INFO - 변환 성공: DIW-005222-박수빈.hwp -> DIW-005222-박수빈.hml
+2026-01-28 17:46:00,539 - INFO - 변환 성공: DIW-005224-최서은.hwp -> DIW-005224-최서은.hml
+2026-01-28 17:46:01,224 - INFO - 변환 성공: DIW-005225-장다영.hwp -> DIW-005225-장다영.hml
+2026-01-28 17:46:01,859 - INFO - 변환 성공: DIW-005226-오윤호.hwp -> DIW-005226-오윤호.hml
+2026-01-28 17:46:02,497 - INFO - 변환 성공: DIW-005227-박예진.hwp -> DIW-005227-박예진.hml
+2026-01-28 17:46:03,121 - INFO - 변환 성공: DIW-005228-박규린.hwp -> DIW-005228-박규린.hml
+2026-01-28 17:46:03,783 - INFO - 변환 성공: DIW-005229-이은빈.hwp -> DIW-005229-이은빈.hml
+2026-01-28 17:46:04,417 - INFO - 변환 성공: DIW-005230-이지윤.hwp -> DIW-005230-이지윤.hml
+2026-01-28 17:46:05,103 - INFO - 변환 성공: DIW-005231-강태호.hwp -> DIW-005231-강태호.hml
+2026-01-28 17:46:05,830 - INFO - 변환 성공: DIW-005281-김승현.hwp -> DIW-005281-김승현.hml
+2026-01-28 17:46:06,541 - INFO - 변환 성공: DIW-005308-염주원.hwp -> DIW-005308-염주원.hml
+2026-01-28 17:46:07,120 - INFO - 변환 성공: DIW-005311-남가은.hwp -> DIW-005311-남가은.hml
+2026-01-28 17:46:07,761 - INFO - 변환 성공: DIW-005316-이서영.hwp -> DIW-005316-이서영.hml
+2026-01-28 17:46:08,463 - INFO - 변환 성공: DIW-005317-조언주.hwp -> DIW-005317-조언주.hml
+2026-01-28 17:46:08,988 - INFO - 변환 성공: DIW-005319-이지오.hwp -> DIW-005319-이지오.hml
+2026-01-28 17:46:09,527 - INFO - 변환 성공: DIW-005385-유가연.hwp -> DIW-005385-유가연.hml
+2026-01-28 17:46:10,045 - INFO - 변환 성공: DIW-005386-조유열.hwp -> DIW-005386-조유열.hml
+2026-01-28 17:46:10,616 - INFO - 변환 성공: DIW-005399-박이안.hwp -> DIW-005399-박이안.hml
+2026-01-28 17:46:11,346 - INFO - 변환 성공: DIW-005400-이준희.hwp -> DIW-005400-이준희.hml
+2026-01-28 17:46:12,071 - INFO - 변환 성공: DIW-005401-조하준.hwp -> DIW-005401-조하준.hml
+2026-01-28 17:46:12,582 - INFO - 변환 성공: DIW-005507-최유빈.hwp -> DIW-005507-최유빈.hml
+2026-01-28 17:46:12,908 - INFO - 변환 성공: DIW-005531-조수림.hwp -> DIW-005531-조수림.hml
+2026-01-28 17:46:13,255 - INFO - 변환 성공: DIW-005532-윤준혁.hwp -> DIW-005532-윤준혁.hml
+2026-01-28 17:46:13,830 - INFO - 변환 성공: DIW-005533-최우영.hwp -> DIW-005533-최우영.hml
+2026-01-28 17:46:14,294 - INFO - 변환 성공: DIW-005536-최수아.hwp -> DIW-005536-최수아.hml
+2026-01-28 17:46:14,884 - INFO - 변환 성공: DIW-005540-나혜원.hwp -> DIW-005540-나혜원.hml
+2026-01-28 17:46:15,458 - INFO - 변환 성공: DIW-005610-박정현.hwp -> DIW-005610-박정현.hml
+2026-01-28 17:46:15,921 - INFO - 변환 성공: DIW-005624-정희진.hwp -> DIW-005624-정희진.hml
+2026-01-28 17:46:16,318 - INFO - 변환 성공: DIW-005636-박하늘.hwp -> DIW-005636-박하늘.hml
+2026-01-28 17:46:17,437 - INFO - 변환 성공: DIW-005637-서권형.hwp -> DIW-005637-서권형.hml
+2026-01-28 17:46:18,006 - INFO - 변환 성공: DIW-005648-윤시우.hwp -> DIW-005648-윤시우.hml
+2026-01-28 17:46:18,567 - INFO - 변환 성공: DIW-005651-김민지.hwp -> DIW-005651-김민지.hml
+2026-01-28 17:46:19,013 - INFO - 변환 성공: DIW-005738-송나원.hwp -> DIW-005738-송나원.hml
+2026-01-28 17:46:19,370 - INFO - 변환 성공: DIW-005739-이정범.hwp -> DIW-005739-이정범.hml
+2026-01-28 17:46:19,677 - INFO - 변환 성공: DIW-005768-문태성.hwp -> DIW-005768-문태성.hml
+2026-01-28 17:46:20,116 - INFO - 변환 성공: DIW-005769-김대현.hwp -> DIW-005769-김대현.hml
+2026-01-28 17:46:20,640 - INFO - 변환 성공: DIW-005770-정우빈.hwp -> DIW-005770-정우빈.hml
+2026-01-28 17:46:21,225 - INFO - 변환 성공: DIW-005838-한승지.hwp -> DIW-005838-한승지.hml
+2026-01-28 17:46:21,805 - INFO - 변환 성공: DIW-005840-명현승.hwp -> DIW-005840-명현승.hml
+2026-01-28 17:46:22,251 - INFO - 변환 성공: DIW-005841-임태서.hwp -> DIW-005841-임태서.hml
+2026-01-28 17:46:22,684 - INFO - 변환 성공: DIW-005843-김주원.hwp -> DIW-005843-김주원.hml
+2026-01-28 17:46:23,239 - INFO - 변환 성공: DIW-005845-이채원.hwp -> DIW-005845-이채원.hml
+2026-01-28 17:46:23,749 - INFO - 변환 성공: DIW-005846-이채영.hwp -> DIW-005846-이채영.hml
+2026-01-28 17:46:24,280 - INFO - 변환 성공: DIW-005847-최예지.hwp -> DIW-005847-최예지.hml
+2026-01-28 17:46:25,111 - INFO - 변환 성공: DIW-005848-김우영.hwp -> DIW-005848-김우영.hml
+2026-01-28 17:46:25,512 - INFO - 변환 성공: DIW-005851-최민기.hwp -> DIW-005851-최민기.hml
+2026-01-28 17:46:25,914 - INFO - 변환 성공: DIW-005854-이서준.hwp -> DIW-005854-이서준.hml
+2026-01-28 17:46:26,472 - INFO - 변환 성공: DIW-005859-서지민.hwp -> DIW-005859-서지민.hml
+2026-01-28 17:46:26,921 - INFO - 변환 성공: DIW-005861-박태희.hwp -> DIW-005861-박태희.hml
+2026-01-28 17:46:27,346 - INFO - 변환 성공: DIW-005864-안서준.hwp -> DIW-005864-안서준.hml
+2026-01-28 17:46:27,886 - INFO - 변환 성공: DIW-005865-김도현.hwp -> DIW-005865-김도현.hml
+2026-01-28 17:46:28,450 - INFO - 변환 성공: DIW-005874-홍승준.hwp -> DIW-005874-홍승준.hml
+2026-01-28 17:46:28,952 - INFO - 변환 성공: DIW-005901-고승현.hwp -> DIW-005901-고승현.hml
+2026-01-28 17:46:29,499 - INFO - 변환 성공: DIW-005902-조은우.hwp -> DIW-005902-조은우.hml
+2026-01-28 17:46:29,942 - INFO - 변환 성공: DIW-005967-양정훈.hwp -> DIW-005967-양정훈.hml
+2026-01-28 17:46:30,378 - INFO - 변환 성공: DIW-005971-임하준.hwp -> DIW-005971-임하준.hml
+2026-01-28 17:46:30,827 - INFO - 변환 성공: DIW-005973-양희우.hwp -> DIW-005973-양희우.hml
+2026-01-28 17:46:31,390 - INFO - 변환 성공: DIW-005975-이도경.hwp -> DIW-005975-이도경.hml
+2026-01-28 17:46:31,993 - INFO - 변환 성공: DIW-005977-김하은.hwp -> DIW-005977-김하은.hml
+2026-01-28 17:46:32,549 - INFO - 변환 성공: DIW-005994-김주은.hwp -> DIW-005994-김주은.hml
+2026-01-28 17:46:33,008 - INFO - 변환 성공: DIW-006030-석우준.hwp -> DIW-006030-석우준.hml
+2026-01-28 17:46:33,432 - INFO - 변환 성공: DIW-006075-유연서.hwp -> DIW-006075-유연서.hml
+2026-01-28 17:46:33,970 - INFO - 변환 성공: DIW-006077-유연진.hwp -> DIW-006077-유연진.hml
+2026-01-28 17:46:34,407 - INFO - 변환 성공: DIW-006089-최민혁.hwp -> DIW-006089-최민혁.hml
+2026-01-28 17:46:34,848 - INFO - 변환 성공: DIW-006092-배유나.hwp -> DIW-006092-배유나.hml
+2026-01-28 17:46:35,394 - INFO - 변환 성공: DIW-006122-이서진.hwp -> DIW-006122-이서진.hml
+2026-01-28 17:46:36,241 - INFO - 변환 성공: DIW-006232-김시윤.hwp -> DIW-006232-김시윤.hml
+2026-01-28 17:46:36,797 - INFO - 변환 성공: DIW-006233-이다은.hwp -> DIW-006233-이다은.hml
+2026-01-28 17:46:37,308 - INFO - 변환 성공: DIW-006237-이서윤.hwp -> DIW-006237-이서윤.hml
+2026-01-28 17:46:37,740 - INFO - 변환 성공: DIW-006242-황현우.hwp -> DIW-006242-황현우.hml
+2026-01-28 17:46:38,062 - INFO - 변환 성공: DIW-006248-주윤서.hwp -> DIW-006248-주윤서.hml
+2026-01-28 17:46:38,472 - INFO - 변환 성공: DIW-006262-국신율.hwp -> DIW-006262-국신율.hml
+2026-01-28 17:46:39,027 - INFO - 변환 성공: DIW-006267-신동주.hwp -> DIW-006267-신동주.hml
+2026-01-28 17:46:39,563 - INFO - 변환 성공: DIW-006283-박채희.hwp -> DIW-006283-박채희.hml
+2026-01-28 17:46:52,732 - INFO - 변환 성공: DIW-006287-이아인.hwp -> DIW-006287-이아인.hml
+2026-01-28 17:46:53,136 - INFO - 변환 성공: DIW-006329-유시영.hwp -> DIW-006329-유시영.hml
+2026-01-28 17:46:53,633 - INFO - 변환 성공: DIW-006352-황다겸.hwp -> DIW-006352-황다겸.hml
+2026-01-28 17:46:54,162 - INFO - 변환 성공: DIW-006365-최우주.hwp -> DIW-006365-최우주.hml
+2026-01-28 17:46:54,563 - INFO - 변환 성공: DIW-006446-이승연.hwp -> DIW-006446-이승연.hml
+2026-01-28 17:46:54,994 - INFO - 변환 성공: DIW-006463-정진원.hwp -> DIW-006463-정진원.hml
+2026-01-28 17:46:55,507 - INFO - 변환 성공: DIW-006464-유한결.hwp -> DIW-006464-유한결.hml
+2026-01-28 17:46:56,020 - INFO - 변환 성공: DIW-006530-김서현.hwp -> DIW-006530-김서현.hml
+2026-01-28 17:46:56,597 - INFO - 변환 성공: DIW-006540-오혜성.hwp -> DIW-006540-오혜성.hml
+2026-01-28 17:46:57,226 - INFO - 변환 성공: DIW-006578-신지유.hwp -> DIW-006578-신지유.hml
+2026-01-28 17:46:57,755 - INFO - 변환 성공: DIW-006583-전도훈.hwp -> DIW-006583-전도훈.hml
+2026-01-28 17:46:58,294 - INFO - 변환 성공: DIW-006589-오서진.hwp -> DIW-006589-오서진.hml
+2026-01-28 17:46:58,827 - INFO - 변환 성공: DIW-006590-나서하.hwp -> DIW-006590-나서하.hml
+2026-01-28 17:46:59,337 - INFO - 변환 성공: DIW-006610-조수아.hwp -> DIW-006610-조수아.hml
+2026-01-28 17:46:59,904 - INFO - 변환 성공: DIW-006658-정소연.hwp -> DIW-006658-정소연.hml
+2026-01-28 17:47:00,528 - INFO - 변환 성공: DIW-006659-조연서.hwp -> DIW-006659-조연서.hml
+2026-01-28 17:47:01,062 - INFO - 변환 성공: DIW-006666-이준우.hwp -> DIW-006666-이준우.hml
+2026-01-28 17:47:01,596 - INFO - 변환 성공: DIW-006668-임주원.hwp -> DIW-006668-임주원.hml
+2026-01-28 17:47:02,190 - INFO - 변환 성공: DIW-006698-박서우.hwp -> DIW-006698-박서우.hml
+2026-01-28 17:47:02,734 - INFO - 변환 성공: DIW-006732-박온.hwp -> DIW-006732-박온.hml
+2026-01-28 17:47:03,267 - INFO - 변환 성공: DIW-006743-강민주.hwp -> DIW-006743-강민주.hml
+2026-01-28 17:47:03,871 - INFO - 변환 성공: DIW-006744-정지윤.hwp -> DIW-006744-정지윤.hml
+2026-01-28 17:47:04,437 - INFO - 변환 성공: DIW-006749-박소연.hwp -> DIW-006749-박소연.hml
+2026-01-28 17:47:04,971 - INFO - 변환 성공: DIW-006751-황수용.hwp -> DIW-006751-황수용.hml
+2026-01-28 17:47:05,533 - INFO - 변환 성공: DIW-006752-강범준.hwp -> DIW-006752-강범준.hml
+2026-01-28 17:47:06,077 - INFO - 변환 성공: DIW-006753-최수훈.hwp -> DIW-006753-최수훈.hml
+2026-01-28 17:47:06,685 - INFO - 변환 성공: DIW-006756-손민재.hwp -> DIW-006756-손민재.hml
+2026-01-28 17:47:07,231 - INFO - 변환 성공: DIW-006757-손민서.hwp -> DIW-006757-손민서.hml
+2026-01-28 17:47:07,751 - INFO - 변환 성공: DIW-006797-김주성.hwp -> DIW-006797-김주성.hml
+2026-01-28 17:47:08,386 - INFO - 변환 성공: DIW-006799-박시우.hwp -> DIW-006799-박시우.hml
+2026-01-28 17:47:08,989 - INFO - 변환 성공: DIW-006802-이재건.hwp -> DIW-006802-이재건.hml
+2026-01-28 17:47:09,578 - INFO - 변환 성공: DIW-006804-이정민.hwp -> DIW-006804-이정민.hml
+2026-01-28 17:47:10,125 - INFO - 변환 성공: DIW-007434-신은솔.hwp -> DIW-007434-신은솔.hml
+2026-01-28 17:47:10,672 - INFO - 변환 성공: DIW-007556-장은서.hwp -> DIW-007556-장은서.hml
+2026-01-28 17:47:11,174 - INFO - 변환 성공: DIW-007571-노아인.hwp -> DIW-007571-노아인.hml
+2026-01-28 17:47:11,717 - INFO - 변환 성공: DIW-007608-안하임.hwp -> DIW-007608-안하임.hml
+2026-01-28 17:47:12,255 - INFO - 변환 성공: DIW-007624-김명리.hwp -> DIW-007624-김명리.hml
+2026-01-28 17:47:12,804 - INFO - 변환 성공: DIW-007645-배영재.hwp -> DIW-007645-배영재.hml
+2026-01-28 17:47:13,327 - INFO - 변환 성공: DIW-007646-배시현.hwp -> DIW-007646-배시현.hml
+2026-01-28 17:47:13,895 - INFO - 변환 성공: DIW-007647-채우혁.hwp -> DIW-007647-채우혁.hml
+2026-01-28 17:47:14,424 - INFO - 변환 성공: DIW-007649-고도윤.hwp -> DIW-007649-고도윤.hml
+2026-01-28 17:47:14,957 - INFO - 변환 성공: DIW-007650-최수지.hwp -> DIW-007650-최수지.hml
+2026-01-28 17:47:15,435 - INFO - 변환 성공: DIW-007679-양승현.hwp -> DIW-007679-양승현.hml
+2026-01-28 17:47:15,863 - INFO - 변환 성공: DIW-007707-손지호.hwp -> DIW-007707-손지호.hml
+2026-01-28 17:47:16,418 - INFO - 변환 성공: DIW-007774-이원표.hwp -> DIW-007774-이원표.hml
+2026-01-28 17:47:16,991 - INFO - 변환 성공: DIW-007784-박지석.hwp -> DIW-007784-박지석.hml
+2026-01-28 17:47:17,611 - INFO - 변환 성공: DIW-007814-김태원.hwp -> DIW-007814-김태원.hml
+2026-01-28 17:47:18,264 - INFO - 변환 성공: DIW-007831-홍은기.hwp -> DIW-007831-홍은기.hml
+2026-01-28 17:47:18,935 - INFO - 변환 성공: DIW-007832-조승우.hwp -> DIW-007832-조승우.hml
+2026-01-28 17:47:19,510 - INFO - 변환 성공: DIW-007860-김리원.hwp -> DIW-007860-김리원.hml
+2026-01-28 17:47:20,145 - INFO - 변환 성공: DIW_2601A.hwpx -> DIW_2601A.hml
+2026-01-28 17:47:20,614 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2601\A\DIW -> D:\project\HWP\HWP-Scoring\output\2601\A\DIW
+2026-01-28 17:47:21,115 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2601\B\DIW -> D:\project\HWP\HWP-Scoring\output\2601\B\DIW
+2026-01-28 17:47:28,062 - INFO - 변환 성공: DIW-000010-노민준.hwp -> DIW-000010-노민준.hml
+2026-01-28 17:47:28,712 - INFO - 변환 성공: DIW-000014-노서준.hwp -> DIW-000014-노서준.hml
+2026-01-28 17:47:29,550 - INFO - 변환 성공: DIW-000112-설우진.hwp -> DIW-000112-설우진.hml
+2026-01-28 17:47:30,161 - INFO - 변환 성공: DIW-000113-오상은.hwp -> DIW-000113-오상은.hml
+2026-01-28 17:47:30,741 - INFO - 변환 성공: DIW-000128-황기민.hwp -> DIW-000128-황기민.hml
+2026-01-28 17:47:31,365 - INFO - 변환 성공: DIW-000137-고은기.hwp -> DIW-000137-고은기.hml
+2026-01-28 17:47:31,953 - INFO - 변환 성공: DIW-000164-이준우.hwp -> DIW-000164-이준우.hml
+2026-01-28 17:47:32,555 - INFO - 변환 성공: DIW-000171-변재민.hwp -> DIW-000171-변재민.hml
+2026-01-28 17:47:33,206 - INFO - 변환 성공: DIW-000236-박상정.hwp -> DIW-000236-박상정.hml
+2026-01-28 17:47:34,085 - INFO - 변환 성공: DIW-000237-김미선.hwp -> DIW-000237-김미선.hml
+2026-01-28 17:47:34,710 - INFO - 변환 성공: DIW-000289-홍시완.hwp -> DIW-000289-홍시완.hml
+2026-01-28 17:47:35,442 - INFO - 변환 성공: DIW-000329-정정연.hwp -> DIW-000329-정정연.hml
+2026-01-28 17:47:35,990 - INFO - 변환 성공: DIW-000347-이서은.hwp -> DIW-000347-이서은.hml
+2026-01-28 17:47:36,603 - INFO - 변환 성공: DIW-000348-김세준.hwp -> DIW-000348-김세준.hml
+2026-01-28 17:47:37,184 - INFO - 변환 성공: DIW-000351-이서진.hwp -> DIW-000351-이서진.hml
+2026-01-28 17:47:37,751 - INFO - 변환 성공: DIW-000352-남유재.hwp -> DIW-000352-남유재.hml
+2026-01-28 17:47:38,452 - INFO - 변환 성공: DIW-000353-홍윤.hwp -> DIW-000353-홍윤.hml
+2026-01-28 17:47:39,074 - INFO - 변환 성공: DIW-000354-도현우.hwp -> DIW-000354-도현우.hml
+2026-01-28 17:47:39,620 - INFO - 변환 성공: DIW-000355-여준겸.hwp -> DIW-000355-여준겸.hml
+2026-01-28 17:47:40,545 - INFO - 변환 성공: DIW-000356-최은혜.hwp -> DIW-000356-최은혜.hml
+2026-01-28 17:47:41,269 - INFO - 변환 성공: DIW-000359-김민경.hwp -> DIW-000359-김민경.hml
+2026-01-28 17:47:41,807 - INFO - 변환 성공: DIW-000369-김유찬.hwp -> DIW-000369-김유찬.hml
+2026-01-28 17:47:42,372 - INFO - 변환 성공: DIW-000370-김태연.hwp -> DIW-000370-김태연.hml
+2026-01-28 17:47:43,069 - INFO - 변환 성공: DIW-000445-천경호.hwp -> DIW-000445-천경호.hml
+2026-01-28 17:47:43,715 - INFO - 변환 성공: DIW-000446-장현준.hwp -> DIW-000446-장현준.hml
+2026-01-28 17:47:44,326 - INFO - 변환 성공: DIW-000448-안수현.hwp -> DIW-000448-안수현.hml
+2026-01-28 17:47:44,925 - INFO - 변환 성공: DIW-000449-김지완.hwp -> DIW-000449-김지완.hml
+2026-01-28 17:47:45,389 - INFO - 변환 성공: DIW-000508-권하랑.hwp -> DIW-000508-권하랑.hml
+2026-01-28 17:47:45,812 - INFO - 변환 성공: DIW-000619-김종헌.hwp -> DIW-000619-김종헌.hml
+2026-01-28 17:47:46,357 - INFO - 변환 성공: DIW-000651-김서현.hwp -> DIW-000651-김서현.hml
+2026-01-28 17:47:47,017 - INFO - 변환 성공: DIW-000652-허예솔.hwp -> DIW-000652-허예솔.hml
+2026-01-28 17:47:47,637 - INFO - 변환 성공: DIW-000653-이채원.hwp -> DIW-000653-이채원.hml
+2026-01-28 17:47:48,235 - INFO - 변환 성공: DIW-000654-장하율.hwp -> DIW-000654-장하율.hml
+2026-01-28 17:47:48,972 - INFO - 변환 성공: DIW-000655-우세영.hwp -> DIW-000655-우세영.hml
+2026-01-28 17:47:49,579 - INFO - 변환 성공: DIW-000662-구나연.hwp -> DIW-000662-구나연.hml
+2026-01-28 17:47:50,192 - INFO - 변환 성공: DIW-000663-박예은.hwp -> DIW-000663-박예은.hml
+2026-01-28 17:47:50,784 - INFO - 변환 성공: DIW-000689-서지율.hwp -> DIW-000689-서지율.hml
+2026-01-28 17:47:51,490 - INFO - 변환 성공: DIW-000698-이서준.hwp -> DIW-000698-이서준.hml
+2026-01-28 17:47:52,071 - INFO - 변환 성공: DIW-000699-이수아.hwp -> DIW-000699-이수아.hml
+2026-01-28 17:47:52,673 - INFO - 변환 성공: DIW-000702-이유건.hwp -> DIW-000702-이유건.hml
+2026-01-28 17:47:53,372 - INFO - 변환 성공: DIW-000703-이윤솔.hwp -> DIW-000703-이윤솔.hml
+2026-01-28 17:47:53,911 - INFO - 변환 성공: DIW-000709-전보민.hwp -> DIW-000709-전보민.hml
+2026-01-28 17:47:54,483 - INFO - 변환 성공: DIW-000712-정서현.hwp -> DIW-000712-정서현.hml
+2026-01-28 17:47:55,050 - INFO - 변환 성공: DIW-000713-정성준.hwp -> DIW-000713-정성준.hml
+2026-01-28 17:47:55,639 - INFO - 변환 성공: DIW-000736-조정우.hwp -> DIW-000736-조정우.hml
+2026-01-28 17:47:56,225 - INFO - 변환 성공: DIW-000737-전준영.hwp -> DIW-000737-전준영.hml
+2026-01-28 17:47:56,889 - INFO - 변환 성공: DIW-000738-조예나.hwp -> DIW-000738-조예나.hml
+2026-01-28 17:47:57,484 - INFO - 변환 성공: DIW-000739-조우민.hwp -> DIW-000739-조우민.hml
+2026-01-28 17:47:58,019 - INFO - 변환 성공: DIW-000782-진현우.hwp -> DIW-000782-진현우.hml
+2026-01-28 17:47:58,733 - INFO - 변환 성공: DIW-000783-곽민제.hwp -> DIW-000783-곽민제.hml
+2026-01-28 17:47:59,357 - INFO - 변환 성공: DIW-000785-곽민승.hwp -> DIW-000785-곽민승.hml
+2026-01-28 17:47:59,937 - INFO - 변환 성공: DIW-000799-이민상.hwp -> DIW-000799-이민상.hml
+2026-01-28 17:48:00,511 - INFO - 변환 성공: DIW-000802-박라희.hwp -> DIW-000802-박라희.hml
+2026-01-28 17:48:01,101 - INFO - 변환 성공: DIW-000871-김서율.hwp -> DIW-000871-김서율.hml
+2026-01-28 17:48:01,823 - INFO - 변환 성공: DIW-000872-정다은.hwp -> DIW-000872-정다은.hml
+2026-01-28 17:48:02,442 - INFO - 변환 성공: DIW-000874-우현우.hwp -> DIW-000874-우현우.hml
+2026-01-28 17:48:03,011 - INFO - 변환 성공: DIW-000875-주연재.hwp -> DIW-000875-주연재.hml
+2026-01-28 17:48:03,571 - INFO - 변환 성공: DIW-000876-정예림.hwp -> DIW-000876-정예림.hml
+2026-01-28 17:48:04,224 - INFO - 변환 성공: DIW-000877-권다진.hwp -> DIW-000877-권다진.hml
+2026-01-28 17:48:04,796 - INFO - 변환 성공: DIW-000879-임소윤.hwp -> DIW-000879-임소윤.hml
+2026-01-28 17:48:05,323 - INFO - 변환 성공: DIW-000880-김아윤.hwp -> DIW-000880-김아윤.hml
+2026-01-28 17:48:05,890 - INFO - 변환 성공: DIW-000881-박서영.hwp -> DIW-000881-박서영.hml
+2026-01-28 17:48:06,460 - INFO - 변환 성공: DIW-000882-박지희.hwp -> DIW-000882-박지희.hml
+2026-01-28 17:48:07,004 - INFO - 변환 성공: DIW-000883-손예설.hwp -> DIW-000883-손예설.hml
+2026-01-28 17:48:07,583 - INFO - 변환 성공: DIW-000884-주연서.hwp -> DIW-000884-주연서.hml
+2026-01-28 17:48:08,117 - INFO - 변환 성공: DIW-000888-김유민.hwp -> DIW-000888-김유민.hml
+2026-01-28 17:48:08,651 - INFO - 변환 성공: DIW-000969-장민하.hwp -> DIW-000969-장민하.hml
+2026-01-28 17:48:09,201 - INFO - 변환 성공: DIW-001027-이윤우.hwp -> DIW-001027-이윤우.hml
+2026-01-28 17:48:09,760 - INFO - 변환 성공: DIW-001149-류재윤.hwp -> DIW-001149-류재윤.hml
+2026-01-28 17:48:10,313 - INFO - 변환 성공: DIW-001150-박종명.hwp -> DIW-001150-박종명.hml
+2026-01-28 17:48:10,845 - INFO - 변환 성공: DIW-001152-최시윤.hwp -> DIW-001152-최시윤.hml
+2026-01-28 17:48:11,188 - INFO - 변환 성공: DIW-001153-김도윤.hwp -> DIW-001153-김도윤.hml
+2026-01-28 17:48:11,682 - INFO - 변환 성공: DIW-001154-최현규.hwp -> DIW-001154-최현규.hml
+2026-01-28 17:48:12,439 - INFO - 변환 성공: DIW-001155-김재슬.hwp -> DIW-001155-김재슬.hml
+2026-01-28 17:48:12,767 - INFO - 변환 성공: DIW-001156-이상민.hwp -> DIW-001156-이상민.hml
+2026-01-28 17:48:13,106 - INFO - 변환 성공: DIW-001158-조한결.hwp -> DIW-001158-조한결.hml
+2026-01-28 17:48:13,545 - INFO - 변환 성공: DIW-001159-한채민.hwp -> DIW-001159-한채민.hml
+2026-01-28 17:48:14,041 - INFO - 변환 성공: DIW-001168-이혜정.hwp -> DIW-001168-이혜정.hml
+2026-01-28 17:48:14,621 - INFO - 변환 성공: DIW-001200-김지수.hwp -> DIW-001200-김지수.hml
+2026-01-28 17:48:15,107 - INFO - 변환 성공: DIW-001201-장문성.hwp -> DIW-001201-장문성.hml
+2026-01-28 17:48:15,540 - INFO - 변환 성공: DIW-001202-엄재준.hwp -> DIW-001202-엄재준.hml
+2026-01-28 17:48:16,142 - INFO - 변환 성공: DIW-001203-김연후.hwp -> DIW-001203-김연후.hml
+2026-01-28 17:48:16,724 - INFO - 변환 성공: DIW-001204-손준서.hwp -> DIW-001204-손준서.hml
+2026-01-28 17:48:17,159 - INFO - 변환 성공: DIW-001205-김민천.hwp -> DIW-001205-김민천.hml
+2026-01-28 17:48:17,501 - INFO - 변환 성공: DIW-001206-김현서.hwp -> DIW-001206-김현서.hml
+2026-01-28 17:48:17,971 - INFO - 변환 성공: DIW-001207-이소율.hwp -> DIW-001207-이소율.hml
+2026-01-28 17:48:18,289 - INFO - 변환 성공: DIW-001208-이조현.hwp -> DIW-001208-이조현.hml
+2026-01-28 17:48:18,739 - INFO - 변환 성공: DIW-001209-권태운.hwp -> DIW-001209-권태운.hml
+2026-01-28 17:48:19,282 - INFO - 변환 성공: DIW-001210-홍윤지.hwp -> DIW-001210-홍윤지.hml
+2026-01-28 17:48:19,870 - INFO - 변환 성공: DIW-001211-홍윤아.hwp -> DIW-001211-홍윤아.hml
+2026-01-28 17:48:20,477 - INFO - 변환 성공: DIW-001212-배현서.hwp -> DIW-001212-배현서.hml
+2026-01-28 17:48:21,054 - INFO - 변환 성공: DIW-001214-허정원.hwp -> DIW-001214-허정원.hml
+2026-01-28 17:48:21,556 - INFO - 변환 성공: DIW-001215-김나연.hwp -> DIW-001215-김나연.hml
+2026-01-28 17:48:21,991 - INFO - 변환 성공: DIW-001217-정호민.hwp -> DIW-001217-정호민.hml
+2026-01-28 17:48:22,553 - INFO - 변환 성공: DIW-001245-김효은.hwp -> DIW-001245-김효은.hml
+2026-01-28 17:48:23,161 - INFO - 변환 성공: DIW-001276-최대로.hwp -> DIW-001276-최대로.hml
+2026-01-28 17:48:23,701 - INFO - 변환 성공: DIW-001281-홍다성.hwp -> DIW-001281-홍다성.hml
+2026-01-28 17:48:24,251 - INFO - 변환 성공: DIW-001282-김준서.hwp -> DIW-001282-김준서.hml
+2026-01-28 17:48:24,742 - INFO - 변환 성공: DIW-001308-허하람.hwp -> DIW-001308-허하람.hml
+2026-01-28 17:48:25,122 - INFO - 변환 성공: DIW-001309-구서연.hwp -> DIW-001309-구서연.hml
+2026-01-28 17:48:25,661 - INFO - 변환 성공: DIW-001317-서재우.hwp -> DIW-001317-서재우.hml
+2026-01-28 17:48:26,171 - INFO - 변환 성공: DIW-001321-조아라.hwp -> DIW-001321-조아라.hml
+2026-01-28 17:48:26,895 - INFO - 변환 성공: DIW-001352-안루비.hwp -> DIW-001352-안루비.hml
+2026-01-28 17:48:27,609 - INFO - 변환 성공: DIW-001356-김연우.hwp -> DIW-001356-김연우.hml
+2026-01-28 17:48:28,310 - INFO - 변환 성공: DIW-001429-민아영.hwp -> DIW-001429-민아영.hml
+2026-01-28 17:48:28,860 - INFO - 변환 성공: DIW-001430-예지현.hwp -> DIW-001430-예지현.hml
+2026-01-28 17:48:29,396 - INFO - 변환 성공: DIW-001449-박수현.hwp -> DIW-001449-박수현.hml
+2026-01-28 17:48:29,927 - INFO - 변환 성공: DIW-001458-원태현.hwp -> DIW-001458-원태현.hml
+2026-01-28 17:48:30,510 - INFO - 변환 성공: DIW-001506-안현후.hwp -> DIW-001506-안현후.hml
+2026-01-28 17:48:31,114 - INFO - 변환 성공: DIW-001513-전진영.hwp -> DIW-001513-전진영.hml
+2026-01-28 17:48:31,640 - INFO - 변환 성공: DIW-001514-박금빈.hwp -> DIW-001514-박금빈.hml
+2026-01-28 17:48:32,077 - INFO - 변환 성공: DIW-001523-최예원.hwp -> DIW-001523-최예원.hml
+2026-01-28 17:48:32,650 - INFO - 변환 성공: DIW-001608-이서준.hwp -> DIW-001608-이서준.hml
+2026-01-28 17:48:33,202 - INFO - 변환 성공: DIW-001613-홍예나.hwp -> DIW-001613-홍예나.hml
+2026-01-28 17:48:33,751 - INFO - 변환 성공: DIW-001616-이지훈.hwp -> DIW-001616-이지훈.hml
+2026-01-28 17:48:34,289 - INFO - 변환 성공: DIW-001618-오시은.hwp -> DIW-001618-오시은.hml
+2026-01-28 17:48:34,810 - INFO - 변환 성공: DIW-001620-최주미.hwp -> DIW-001620-최주미.hml
+2026-01-28 17:48:35,342 - INFO - 변환 성공: DIW-001627-한동엽.hwp -> DIW-001627-한동엽.hml
+2026-01-28 17:48:35,891 - INFO - 변환 성공: DIW-001662-손지수.hwp -> DIW-001662-손지수.hml
+2026-01-28 17:48:36,412 - INFO - 변환 성공: DIW-001666-서지아.hwp -> DIW-001666-서지아.hml
+2026-01-28 17:48:36,957 - INFO - 변환 성공: DIW-001668-전예린.hwp -> DIW-001668-전예린.hml
+2026-01-28 17:48:37,610 - INFO - 변환 성공: DIW-001669-서주아.hwp -> DIW-001669-서주아.hml
+2026-01-28 17:48:38,150 - INFO - 변환 성공: DIW-001673-라우성.hwp -> DIW-001673-라우성.hml
+2026-01-28 17:48:38,592 - INFO - 변환 성공: DIW-001678-박지나.hwp -> DIW-001678-박지나.hml
+2026-01-28 17:48:39,035 - INFO - 변환 성공: DIW-001683-송시아.hwp -> DIW-001683-송시아.hml
+2026-01-28 17:48:39,590 - INFO - 변환 성공: DIW-001822-안도겸.hwp -> DIW-001822-안도겸.hml
+2026-01-28 17:48:40,145 - INFO - 변환 성공: DIW-001823-강래나.hwp -> DIW-001823-강래나.hml
+2026-01-28 17:48:40,716 - INFO - 변환 성공: DIW-001824-김유민.hwp -> DIW-001824-김유민.hml
+2026-01-28 17:48:41,313 - INFO - 변환 성공: DIW-001842-이은별.hwp -> DIW-001842-이은별.hml
+2026-01-28 17:48:41,917 - INFO - 변환 성공: DIW-001844-홍건민.hwp -> DIW-001844-홍건민.hml
+2026-01-28 17:48:42,473 - INFO - 변환 성공: DIW-001845-안재인.hwp -> DIW-001845-안재인.hml
+2026-01-28 17:48:43,200 - INFO - 변환 성공: DIW-001859-노하준.hwp -> DIW-001859-노하준.hml
+2026-01-28 17:48:43,674 - INFO - 변환 성공: DIW-001880-박채아.hwp -> DIW-001880-박채아.hml
+2026-01-28 17:48:44,112 - INFO - 변환 성공: DIW-001905-김연희.hwp -> DIW-001905-김연희.hml
+2026-01-28 17:48:44,638 - INFO - 변환 성공: DIW-001967-장민성.hwp -> DIW-001967-장민성.hml
+2026-01-28 17:48:45,155 - INFO - 변환 성공: DIW-001968-홍주원.hwp -> DIW-001968-홍주원.hml
+2026-01-28 17:48:45,680 - INFO - 변환 성공: DIW-001997-양승원.hwp -> DIW-001997-양승원.hml
+2026-01-28 17:48:46,196 - INFO - 변환 성공: DIW-001998-최서혜.hwp -> DIW-001998-최서혜.hml
+2026-01-28 17:48:46,708 - INFO - 변환 성공: DIW-001999-강예서.hwp -> DIW-001999-강예서.hml
+2026-01-28 17:48:47,229 - INFO - 변환 성공: DIW-002014-김한솔.hwp -> DIW-002014-김한솔.hml
+2026-01-28 17:48:47,922 - INFO - 변환 성공: DIW-002021-하지수.hwp -> DIW-002021-하지수.hml
+2026-01-28 17:48:48,355 - INFO - 변환 성공: DIW-002049-박건웅.hwp -> DIW-002049-박건웅.hml
+2026-01-28 17:48:48,764 - INFO - 변환 성공: DIW-002053-이율.hwp -> DIW-002053-이율.hml
+2026-01-28 17:48:49,398 - INFO - 변환 성공: DIW-002055-김현민.hwp -> DIW-002055-김현민.hml
+2026-01-28 17:48:49,994 - INFO - 변환 성공: DIW-002056-안지민.hwp -> DIW-002056-안지민.hml
+2026-01-28 17:48:50,625 - INFO - 변환 성공: DIW-002057-박효정.hwp -> DIW-002057-박효정.hml
+2026-01-28 17:48:51,197 - INFO - 변환 성공: DIW-002058-이태주.hwp -> DIW-002058-이태주.hml
+2026-01-28 17:48:51,751 - INFO - 변환 성공: DIW-002064-유승진.hwp -> DIW-002064-유승진.hml
+2026-01-28 17:48:52,173 - INFO - 변환 성공: DIW-002088-송정우.hwp -> DIW-002088-송정우.hml
+2026-01-28 17:48:52,564 - INFO - 변환 성공: DIW-002110-김아성.hwp -> DIW-002110-김아성.hml
+2026-01-28 17:48:53,078 - INFO - 변환 성공: DIW-002115-이승훈.hwp -> DIW-002115-이승훈.hml
+2026-01-28 17:48:53,600 - INFO - 변환 성공: DIW-002116-이건우.hwp -> DIW-002116-이건우.hml
+2026-01-28 17:48:54,370 - INFO - 변환 성공: DIW-002117-길민지.hwp -> DIW-002117-길민지.hml
+2026-01-28 17:48:54,874 - INFO - 변환 성공: DIW-002127-양예은.hwp -> DIW-002127-양예은.hml
+2026-01-28 17:48:55,407 - INFO - 변환 성공: DIW-002160-김미주.hwp -> DIW-002160-김미주.hml
+2026-01-28 17:48:55,907 - INFO - 변환 성공: DIW-002168-송예진.hwp -> DIW-002168-송예진.hml
+2026-01-28 17:48:56,349 - INFO - 변환 성공: DIW-002169-윤준우.hwp -> DIW-002169-윤준우.hml
+2026-01-28 17:48:56,875 - INFO - 변환 성공: DIW-002195-김나율.hwp -> DIW-002195-김나율.hml
+2026-01-28 17:48:57,413 - INFO - 변환 성공: DIW-002200-배주하.hwp -> DIW-002200-배주하.hml
+2026-01-28 17:49:01,039 - INFO - 변환 성공: DIW-002202-설시훈.hwp -> DIW-002202-설시훈.hml
+2026-01-28 17:49:01,604 - INFO - 변환 성공: DIW-002203-손지태.hwp -> DIW-002203-손지태.hml
+2026-01-28 17:49:02,101 - INFO - 변환 성공: DIW-002204-신지효.hwp -> DIW-002204-신지효.hml
+2026-01-28 17:49:02,627 - INFO - 변환 성공: DIW-002205-신채린.hwp -> DIW-002205-신채린.hml
+2026-01-28 17:49:03,047 - INFO - 변환 성공: DIW-002206-양서희.hwp -> DIW-002206-양서희.hml
+2026-01-28 17:49:03,431 - INFO - 변환 성공: DIW-002207-오연준.hwp -> DIW-002207-오연준.hml
+2026-01-28 17:49:03,929 - INFO - 변환 성공: DIW-002208-유지오.hwp -> DIW-002208-유지오.hml
+2026-01-28 17:49:04,452 - INFO - 변환 성공: DIW-002209-윤수민.hwp -> DIW-002209-윤수민.hml
+2026-01-28 17:49:04,981 - INFO - 변환 성공: DIW-002210-이강우.hwp -> DIW-002210-이강우.hml
+2026-01-28 17:49:05,480 - INFO - 변환 성공: DIW-002211-이수빈.hwp -> DIW-002211-이수빈.hml
+2026-01-28 17:49:06,003 - INFO - 변환 성공: DIW-002212-이효민.hwp -> DIW-002212-이효민.hml
+2026-01-28 17:49:06,507 - INFO - 변환 성공: DIW-002213-정태하.hwp -> DIW-002213-정태하.hml
+2026-01-28 17:49:06,995 - INFO - 변환 성공: DIW-002215-추소연.hwp -> DIW-002215-추소연.hml
+2026-01-28 17:49:07,495 - INFO - 변환 성공: DIW-002220-최시영.hwp -> DIW-002220-최시영.hml
+2026-01-28 17:49:08,011 - INFO - 변환 성공: DIW-002238-황현아.hwp -> DIW-002238-황현아.hml
+2026-01-28 17:49:08,530 - INFO - 변환 성공: DIW-002240-정서하.hwp -> DIW-002240-정서하.hml
+2026-01-28 17:49:09,026 - INFO - 변환 성공: DIW-002241-박채연.hwp -> DIW-002241-박채연.hml
+2026-01-28 17:49:09,551 - INFO - 변환 성공: DIW-002248-정민찬.hwp -> DIW-002248-정민찬.hml
+2026-01-28 17:49:10,084 - INFO - 변환 성공: DIW-002249-배경선.hwp -> DIW-002249-배경선.hml
+2026-01-28 17:49:10,598 - INFO - 변환 성공: DIW-002250-서지훈.hwp -> DIW-002250-서지훈.hml
+2026-01-28 17:49:11,035 - INFO - 변환 성공: DIW-002251-고예준.hwp -> DIW-002251-고예준.hml
+2026-01-28 17:49:11,481 - INFO - 변환 성공: DIW-002252-손수아.hwp -> DIW-002252-손수아.hml
+2026-01-28 17:49:12,024 - INFO - 변환 성공: DIW-002253-이서은.hwp -> DIW-002253-이서은.hml
+2026-01-28 17:49:12,589 - INFO - 변환 성공: DIW-002254-김재경.hwp -> DIW-002254-김재경.hml
+2026-01-28 17:49:13,126 - INFO - 변환 성공: DIW-002255-김보현.hwp -> DIW-002255-김보현.hml
+2026-01-28 17:49:13,642 - INFO - 변환 성공: DIW-002256-조수민.hwp -> DIW-002256-조수민.hml
+2026-01-28 17:49:14,157 - INFO - 변환 성공: DIW-002257-신예진.hwp -> DIW-002257-신예진.hml
+2026-01-28 17:49:14,716 - INFO - 변환 성공: DIW-002258-김예환.hwp -> DIW-002258-김예환.hml
+2026-01-28 17:49:15,241 - INFO - 변환 성공: DIW-002259-이소희.hwp -> DIW-002259-이소희.hml
+2026-01-28 17:49:15,658 - INFO - 변환 성공: DIW-002260-이수빈.hwp -> DIW-002260-이수빈.hml
+2026-01-28 17:49:15,970 - INFO - 변환 성공: DIW-002261-이수정.hwp -> DIW-002261-이수정.hml
+2026-01-28 17:49:16,363 - INFO - 변환 성공: DIW-002262-박정민.hwp -> DIW-002262-박정민.hml
+2026-01-28 17:49:16,799 - INFO - 변환 성공: DIW-002263-노민우.hwp -> DIW-002263-노민우.hml
+2026-01-28 17:49:17,213 - INFO - 변환 성공: DIW-002264-배경서.hwp -> DIW-002264-배경서.hml
+2026-01-28 17:49:17,743 - INFO - 변환 성공: DIW-002265-임민.hwp -> DIW-002265-임민.hml
+2026-01-28 17:49:18,271 - INFO - 변환 성공: DIW-002266-복승하.hwp -> DIW-002266-복승하.hml
+2026-01-28 17:49:18,805 - INFO - 변환 성공: DIW-002267-안수민.hwp -> DIW-002267-안수민.hml
+2026-01-28 17:49:19,329 - INFO - 변환 성공: DIW-002268-정강민.hwp -> DIW-002268-정강민.hml
+2026-01-28 17:49:19,880 - INFO - 변환 성공: DIW-002287-김어진.hwp -> DIW-002287-김어진.hml
+2026-01-28 17:49:20,354 - INFO - 변환 성공: DIW-002344-이윤준.hwp -> DIW-002344-이윤준.hml
+2026-01-28 17:49:20,749 - INFO - 변환 성공: DIW-002345-장은호.hwp -> DIW-002345-장은호.hml
+2026-01-28 17:49:21,263 - INFO - 변환 성공: DIW-002346-오세환.hwp -> DIW-002346-오세환.hml
+2026-01-28 17:49:21,779 - INFO - 변환 성공: DIW-002347-석진원.hwp -> DIW-002347-석진원.hml
+2026-01-28 17:49:22,293 - INFO - 변환 성공: DIW-002355-박재현.hwp -> DIW-002355-박재현.hml
+2026-01-28 17:49:22,837 - INFO - 변환 성공: DIW-002361-지하은.hwp -> DIW-002361-지하은.hml
+2026-01-28 17:49:23,275 - INFO - 변환 성공: DIW-002384-홍예슬.hwp -> DIW-002384-홍예슬.hml
+2026-01-28 17:49:23,698 - INFO - 변환 성공: DIW-002385-이가현.hwp -> DIW-002385-이가현.hml
+2026-01-28 17:49:24,208 - INFO - 변환 성공: DIW-002386-홍슬아.hwp -> DIW-002386-홍슬아.hml
+2026-01-28 17:49:24,663 - INFO - 변환 성공: DIW-002387-최보명.hwp -> DIW-002387-최보명.hml
+2026-01-28 17:49:24,996 - INFO - 변환 성공: DIW-002389-백채윤.hwp -> DIW-002389-백채윤.hml
+2026-01-28 17:49:25,686 - INFO - 변환 성공: DIW-002401-황도현.hwp -> DIW-002401-황도현.hml
+2026-01-28 17:49:26,231 - INFO - 변환 성공: DIW-002402-이재희.hwp -> DIW-002402-이재희.hml
+2026-01-28 17:49:26,801 - INFO - 변환 성공: DIW-002403-최우정.hwp -> DIW-002403-최우정.hml
+2026-01-28 17:49:27,236 - INFO - 변환 성공: DIW-002411-조채원.hwp -> DIW-002411-조채원.hml
+2026-01-28 17:49:27,646 - INFO - 변환 성공: DIW-002422-김태성.hwp -> DIW-002422-김태성.hml
+2026-01-28 17:49:28,176 - INFO - 변환 성공: DIW-002426-강여은.hwp -> DIW-002426-강여은.hml
+2026-01-28 17:49:28,695 - INFO - 변환 성공: DIW-002427-손채민.hwp -> DIW-002427-손채민.hml
+2026-01-28 17:49:29,233 - INFO - 변환 성공: DIW-002428-김수빈.hwp -> DIW-002428-김수빈.hml
+2026-01-28 17:49:29,769 - INFO - 변환 성공: DIW-002429-공민지.hwp -> DIW-002429-공민지.hml
+2026-01-28 17:49:30,556 - INFO - 변환 성공: DIW-002434-이시유.hwp -> DIW-002434-이시유.hml
+2026-01-28 17:49:31,067 - INFO - 변환 성공: DIW-002435-김아인.hwp -> DIW-002435-김아인.hml
+2026-01-28 17:49:31,567 - INFO - 변환 성공: DIW-002436-김시윤.hwp -> DIW-002436-김시윤.hml
+2026-01-28 17:49:32,079 - INFO - 변환 성공: DIW-002437-김나현.hwp -> DIW-002437-김나현.hml
+2026-01-28 17:49:32,597 - INFO - 변환 성공: DIW-002438-김서진.hwp -> DIW-002438-김서진.hml
+2026-01-28 17:49:33,120 - INFO - 변환 성공: DIW-002442-김민준.hwp -> DIW-002442-김민준.hml
+2026-01-28 17:49:33,630 - INFO - 변환 성공: DIW-002464-함예나.hwp -> DIW-002464-함예나.hml
+2026-01-28 17:49:34,149 - INFO - 변환 성공: DIW-002471-강서윤.hwp -> DIW-002471-강서윤.hml
+2026-01-28 17:49:34,671 - INFO - 변환 성공: DIW-002473-최수인.hwp -> DIW-002473-최수인.hml
+2026-01-28 17:49:35,254 - INFO - 변환 성공: DIW-002474-유희원.hwp -> DIW-002474-유희원.hml
+2026-01-28 17:49:35,777 - INFO - 변환 성공: DIW-002475-박예인.hwp -> DIW-002475-박예인.hml
+2026-01-28 17:49:36,301 - INFO - 변환 성공: DIW-002491-박효주.hwp -> DIW-002491-박효주.hml
+2026-01-28 17:49:36,806 - INFO - 변환 성공: DIW-002492-김솔민.hwp -> DIW-002492-김솔민.hml
+2026-01-28 17:49:37,337 - INFO - 변환 성공: DIW-002493-정규영.hwp -> DIW-002493-정규영.hml
+2026-01-28 17:49:37,844 - INFO - 변환 성공: DIW-002494-손정규.hwp -> DIW-002494-손정규.hml
+2026-01-28 17:49:38,348 - INFO - 변환 성공: DIW-002495-손가민.hwp -> DIW-002495-손가민.hml
+2026-01-28 17:49:38,840 - INFO - 변환 성공: DIW-002496-정현수.hwp -> DIW-002496-정현수.hml
+2026-01-28 17:49:39,367 - INFO - 변환 성공: DIW-002497-신민채.hwp -> DIW-002497-신민채.hml
+2026-01-28 17:49:39,899 - INFO - 변환 성공: DIW-002501-배선진.hwp -> DIW-002501-배선진.hml
+2026-01-28 17:49:40,428 - INFO - 변환 성공: DIW-002509-조승효.hwp -> DIW-002509-조승효.hml
+2026-01-28 17:49:41,236 - INFO - 변환 성공: DIW-002510-정수연.hwp -> DIW-002510-정수연.hml
+2026-01-28 17:49:41,723 - INFO - 변환 성공: DIW-002511-김소원.hwp -> DIW-002511-김소원.hml
+2026-01-28 17:49:42,214 - INFO - 변환 성공: DIW-002512-김수현.hwp -> DIW-002512-김수현.hml
+2026-01-28 17:49:42,707 - INFO - 변환 성공: DIW-002514-문예랑.hwp -> DIW-002514-문예랑.hml
+2026-01-28 17:49:43,231 - INFO - 변환 성공: DIW-002515-강지형.hwp -> DIW-002515-강지형.hml
+2026-01-28 17:49:43,725 - INFO - 변환 성공: DIW-002516-이승아.hwp -> DIW-002516-이승아.hml
+2026-01-28 17:49:44,220 - INFO - 변환 성공: DIW-002517-장화이.hwp -> DIW-002517-장화이.hml
+2026-01-28 17:49:44,729 - INFO - 변환 성공: DIW-002518-방준서.hwp -> DIW-002518-방준서.hml
+2026-01-28 17:49:45,231 - INFO - 변환 성공: DIW-002519-지은성.hwp -> DIW-002519-지은성.hml
+2026-01-28 17:49:45,739 - INFO - 변환 성공: DIW-002520-배은재.hwp -> DIW-002520-배은재.hml
+2026-01-28 17:49:46,247 - INFO - 변환 성공: DIW-002522-오연우.hwp -> DIW-002522-오연우.hml
+2026-01-28 17:49:46,760 - INFO - 변환 성공: DIW-002523-송수현.hwp -> DIW-002523-송수현.hml
+2026-01-28 17:49:47,269 - INFO - 변환 성공: DIW-002525-김지유.hwp -> DIW-002525-김지유.hml
+2026-01-28 17:49:47,846 - INFO - 변환 성공: DIW-002526-이지민.hwp -> DIW-002526-이지민.hml
+2026-01-28 17:49:48,361 - INFO - 변환 성공: DIW-002530-서효준.hwp -> DIW-002530-서효준.hml
+2026-01-28 17:49:48,867 - INFO - 변환 성공: DIW-002531-김채은.hwp -> DIW-002531-김채은.hml
+2026-01-28 17:49:49,278 - INFO - 변환 성공: DIW-002537-박서진.hwp -> DIW-002537-박서진.hml
+2026-01-28 17:49:49,681 - INFO - 변환 성공: DIW-002556-김주연.hwp -> DIW-002556-김주연.hml
+2026-01-28 17:49:50,203 - INFO - 변환 성공: DIW-002558-김연준.hwp -> DIW-002558-김연준.hml
+2026-01-28 17:49:50,736 - INFO - 변환 성공: DIW-002559-김가은.hwp -> DIW-002559-김가은.hml
+2026-01-28 17:49:51,250 - INFO - 변환 성공: DIW-002571-진은성.hwp -> DIW-002571-진은성.hml
+2026-01-28 17:49:51,759 - INFO - 변환 성공: DIW-002599-신서율.hwp -> DIW-002599-신서율.hml
+2026-01-28 17:49:52,274 - INFO - 변환 성공: DIW-002652-강우현.hwp -> DIW-002652-강우현.hml
+2026-01-28 17:49:52,772 - INFO - 변환 성공: DIW-002703-배지훈.hwp -> DIW-002703-배지훈.hml
+2026-01-28 17:49:53,276 - INFO - 변환 성공: DIW-002705-오유빈.hwp -> DIW-002705-오유빈.hml
+2026-01-28 17:49:53,786 - INFO - 변환 성공: DIW-002734-장민서.hwp -> DIW-002734-장민서.hml
+2026-01-28 17:49:54,305 - INFO - 변환 성공: DIW-002815-박채리.hwp -> DIW-002815-박채리.hml
+2026-01-28 17:49:54,846 - INFO - 변환 성공: DIW-002830-하재희.hwp -> DIW-002830-하재희.hml
+2026-01-28 17:49:55,437 - INFO - 변환 성공: DIW-002839-신민준.hwp -> DIW-002839-신민준.hml
+2026-01-28 17:49:56,190 - INFO - 변환 성공: DIW-002840-장하담.hwp -> DIW-002840-장하담.hml
+2026-01-28 17:49:56,719 - INFO - 변환 성공: DIW-002842-김보은.hwp -> DIW-002842-김보은.hml
+2026-01-28 17:49:57,151 - INFO - 변환 성공: DIW-002847-김리안.hwp -> DIW-002847-김리안.hml
+2026-01-28 17:49:57,587 - INFO - 변환 성공: DIW-002949-이예승.hwp -> DIW-002949-이예승.hml
+2026-01-28 17:49:58,095 - INFO - 변환 성공: DIW-002950-박지후.hwp -> DIW-002950-박지후.hml
+2026-01-28 17:49:58,519 - INFO - 변환 성공: DIW-003008-신사랑.hwp -> DIW-003008-신사랑.hml
+2026-01-28 17:49:58,937 - INFO - 변환 성공: DIW-003009-김소은.hwp -> DIW-003009-김소은.hml
+2026-01-28 17:49:59,430 - INFO - 변환 성공: DIW-003010-김효원.hwp -> DIW-003010-김효원.hml
+2026-01-28 17:49:59,829 - INFO - 변환 성공: DIW-003011-이해원.hwp -> DIW-003011-이해원.hml
+2026-01-28 17:50:00,357 - INFO - 변환 성공: DIW-003043-이윤우.hwp -> DIW-003043-이윤우.hml
+2026-01-28 17:50:00,904 - INFO - 변환 성공: DIW-003044-이서윤.hwp -> DIW-003044-이서윤.hml
+2026-01-28 17:50:01,445 - INFO - 변환 성공: DIW-003049-황제하.hwp -> DIW-003049-황제하.hml
+2026-01-28 17:50:01,968 - INFO - 변환 성공: DIW-003050-김가빈.hwp -> DIW-003050-김가빈.hml
+2026-01-28 17:50:02,479 - INFO - 변환 성공: DIW-003102-유이든.hwp -> DIW-003102-유이든.hml
+2026-01-28 17:50:02,903 - INFO - 변환 성공: DIW-003127-박효주.hwp -> DIW-003127-박효주.hml
+2026-01-28 17:50:03,333 - INFO - 변환 성공: DIW-003180-고영은.hwp -> DIW-003180-고영은.hml
+2026-01-28 17:50:03,825 - INFO - 변환 성공: DIW-003207-박지윤.hwp -> DIW-003207-박지윤.hml
+2026-01-28 17:50:04,335 - INFO - 변환 성공: DIW-003208-김민성.hwp -> DIW-003208-김민성.hml
+2026-01-28 17:50:04,841 - INFO - 변환 성공: DIW-003209-김지율.hwp -> DIW-003209-김지율.hml
+2026-01-28 17:50:05,358 - INFO - 변환 성공: DIW-003210-이하윤.hwp -> DIW-003210-이하윤.hml
+2026-01-28 17:50:05,901 - INFO - 변환 성공: DIW-003211-조서범.hwp -> DIW-003211-조서범.hml
+2026-01-28 17:50:06,414 - INFO - 변환 성공: DIW-003212-김은서.hwp -> DIW-003212-김은서.hml
+2026-01-28 17:50:06,939 - INFO - 변환 성공: DIW-003213-서효범.hwp -> DIW-003213-서효범.hml
+2026-01-28 17:50:07,461 - INFO - 변환 성공: DIW-003264-오나결.hwp -> DIW-003264-오나결.hml
+2026-01-28 17:50:07,995 - INFO - 변환 성공: DIW-003268-이서준.hwp -> DIW-003268-이서준.hml
+2026-01-28 17:50:08,511 - INFO - 변환 성공: DIW-003298-장지은.hwp -> DIW-003298-장지은.hml
+2026-01-28 17:50:09,017 - INFO - 변환 성공: DIW-003299-강태호.hwp -> DIW-003299-강태호.hml
+2026-01-28 17:50:09,524 - INFO - 변환 성공: DIW-003300-김민수.hwp -> DIW-003300-김민수.hml
+2026-01-28 17:50:10,030 - INFO - 변환 성공: DIW-003301-장하린.hwp -> DIW-003301-장하린.hml
+2026-01-28 17:50:10,537 - INFO - 변환 성공: DIW-003302-김서진.hwp -> DIW-003302-김서진.hml
+2026-01-28 17:50:11,041 - INFO - 변환 성공: DIW-003304-김유진.hwp -> DIW-003304-김유진.hml
+2026-01-28 17:50:11,552 - INFO - 변환 성공: DIW-003305-김민준.hwp -> DIW-003305-김민준.hml
+2026-01-28 17:50:12,345 - INFO - 변환 성공: DIW-003306-여현수.hwp -> DIW-003306-여현수.hml
+2026-01-28 17:50:12,821 - INFO - 변환 성공: DIW-003307-임지훈.hwp -> DIW-003307-임지훈.hml
+2026-01-28 17:50:13,340 - INFO - 변환 성공: DIW-003308-권구하.hwp -> DIW-003308-권구하.hml
+2026-01-28 17:50:13,862 - INFO - 변환 성공: DIW-003316-정혜선.hwp -> DIW-003316-정혜선.hml
+2026-01-28 17:50:14,411 - INFO - 변환 성공: DIW-003317-김하윤.hwp -> DIW-003317-김하윤.hml
+2026-01-28 17:50:14,937 - INFO - 변환 성공: DIW-003319-유효경.hwp -> DIW-003319-유효경.hml
+2026-01-28 17:50:15,470 - INFO - 변환 성공: DIW-003326-박라온.hwp -> DIW-003326-박라온.hml
+2026-01-28 17:50:15,909 - INFO - 변환 성공: DIW-003333-이시호.hwp -> DIW-003333-이시호.hml
+2026-01-28 17:50:16,313 - INFO - 변환 성공: DIW-003336-신민정.hwp -> DIW-003336-신민정.hml
+2026-01-28 17:50:16,854 - INFO - 변환 성공: DIW-003338-박민영.hwp -> DIW-003338-박민영.hml
+2026-01-28 17:50:17,359 - INFO - 변환 성공: DIW-003377-김다은.hwp -> DIW-003377-김다은.hml
+2026-01-28 17:50:17,987 - INFO - 변환 성공: DIW-003397-김민솔.hwp -> DIW-003397-김민솔.hml
+2026-01-28 17:50:18,402 - INFO - 변환 성공: DIW-003537-강서윤.hwp -> DIW-003537-강서윤.hml
+2026-01-28 17:50:18,799 - INFO - 변환 성공: DIW-003627-김채원.hwp -> DIW-003627-김채원.hml
+2026-01-28 17:50:19,309 - INFO - 변환 성공: DIW-003629-김윤주.hwp -> DIW-003629-김윤주.hml
+2026-01-28 17:50:19,822 - INFO - 변환 성공: DIW-003665-황시윤.hwp -> DIW-003665-황시윤.hml
+2026-01-28 17:50:20,332 - INFO - 변환 성공: DIW-003677-나예나.hwp -> DIW-003677-나예나.hml
+2026-01-28 17:50:20,726 - INFO - 변환 성공: DIW-003764-김윤성.hwp -> DIW-003764-김윤성.hml
+2026-01-28 17:50:21,021 - INFO - 변환 성공: DIW-003765-박준서.hwp -> DIW-003765-박준서.hml
+2026-01-28 17:50:21,406 - INFO - 변환 성공: DIW-003766-송시현.hwp -> DIW-003766-송시현.hml
+2026-01-28 17:50:21,821 - INFO - 변환 성공: DIW-003767-최지훈.hwp -> DIW-003767-최지훈.hml
+2026-01-28 17:50:22,220 - INFO - 변환 성공: DIW-003768-김솔임.hwp -> DIW-003768-김솔임.hml
+2026-01-28 17:50:22,976 - INFO - 변환 성공: DIW-003801-김나윤.hwp -> DIW-003801-김나윤.hml
+2026-01-28 17:50:23,389 - INFO - 변환 성공: DIW-003802-전소민.hwp -> DIW-003802-전소민.hml
+2026-01-28 17:50:23,785 - INFO - 변환 성공: DIW-003832-서호빈.hwp -> DIW-003832-서호빈.hml
+2026-01-28 17:50:24,324 - INFO - 변환 성공: DIW-003837-전성현.hwp -> DIW-003837-전성현.hml
+2026-01-28 17:50:24,834 - INFO - 변환 성공: DIW-003838-이수혁.hwp -> DIW-003838-이수혁.hml
+2026-01-28 17:50:25,357 - INFO - 변환 성공: DIW-003864-박선재.hwp -> DIW-003864-박선재.hml
+2026-01-28 17:50:25,886 - INFO - 변환 성공: DIW-003865-장지호.hwp -> DIW-003865-장지호.hml
+2026-01-28 17:50:26,390 - INFO - 변환 성공: DIW-003866-김주원.hwp -> DIW-003866-김주원.hml
+2026-01-28 17:50:26,895 - INFO - 변환 성공: DIW-003867-신준우.hwp -> DIW-003867-신준우.hml
+2026-01-28 17:50:27,418 - INFO - 변환 성공: DIW-003868-유승은.hwp -> DIW-003868-유승은.hml
+2026-01-28 17:50:27,931 - INFO - 변환 성공: DIW-003869-이가윤.hwp -> DIW-003869-이가윤.hml
+2026-01-28 17:50:28,651 - INFO - 변환 성공: DIW-003870-이예인.hwp -> DIW-003870-이예인.hml
+2026-01-28 17:50:29,143 - INFO - 변환 성공: DIW-003871-김채영.hwp -> DIW-003871-김채영.hml
+2026-01-28 17:50:29,684 - INFO - 변환 성공: DIW-003872-김지원.hwp -> DIW-003872-김지원.hml
+2026-01-28 17:50:30,188 - INFO - 변환 성공: DIW-003873-김수현.hwp -> DIW-003873-김수현.hml
+2026-01-28 17:50:30,703 - INFO - 변환 성공: DIW-003936-허이룸.hwp -> DIW-003936-허이룸.hml
+2026-01-28 17:50:31,220 - INFO - 변환 성공: DIW-003949-조민채.hwp -> DIW-003949-조민채.hml
+2026-01-28 17:50:31,757 - INFO - 변환 성공: DIW-003953-정유진.hwp -> DIW-003953-정유진.hml
+2026-01-28 17:50:32,254 - INFO - 변환 성공: DIW-003954-정유주.hwp -> DIW-003954-정유주.hml
+2026-01-28 17:50:32,772 - INFO - 변환 성공: DIW-003955-양승우.hwp -> DIW-003955-양승우.hml
+2026-01-28 17:50:33,293 - INFO - 변환 성공: DIW-003970-전소윤.hwp -> DIW-003970-전소윤.hml
+2026-01-28 17:50:33,643 - INFO - 변환 성공: DIW-003987-김민채.hwp -> DIW-003987-김민채.hml
+2026-01-28 17:50:33,932 - INFO - 변환 성공: DIW-003988-김준엽.hwp -> DIW-003988-김준엽.hml
+2026-01-28 17:50:34,246 - INFO - 변환 성공: DIW-004001-유시훈.hwp -> DIW-004001-유시훈.hml
+2026-01-28 17:50:34,536 - INFO - 변환 성공: DIW-004003-전유나.hwp -> DIW-004003-전유나.hml
+2026-01-28 17:50:34,938 - INFO - 변환 성공: DIW-004021-최사랑.hwp -> DIW-004021-최사랑.hml
+2026-01-28 17:50:35,352 - INFO - 변환 성공: DIW-004030-최우석.hwp -> DIW-004030-최우석.hml
+2026-01-28 17:50:35,660 - INFO - 변환 성공: DIW-004031-강준우.hwp -> DIW-004031-강준우.hml
+2026-01-28 17:50:35,978 - INFO - 변환 성공: DIW-004038-이서율.hwp -> DIW-004038-이서율.hml
+2026-01-28 17:50:36,360 - INFO - 변환 성공: DIW-004238-김하윤.hwp -> DIW-004238-김하윤.hml
+2026-01-28 17:50:36,869 - INFO - 변환 성공: DIW-004239-박주아.hwp -> DIW-004239-박주아.hml
+2026-01-28 17:50:37,396 - INFO - 변환 성공: DIW-004240-임소율.hwp -> DIW-004240-임소율.hml
+2026-01-28 17:50:37,921 - INFO - 변환 성공: DIW-004265-최예림.hwp -> DIW-004265-최예림.hml
+2026-01-28 17:50:38,569 - INFO - 변환 성공: DIW-004274-장현서.hwp -> DIW-004274-장현서.hml
+2026-01-28 17:50:39,078 - INFO - 변환 성공: DIW-004285-김수아.hwp -> DIW-004285-김수아.hml
+2026-01-28 17:50:39,586 - INFO - 변환 성공: DIW-004291-이해슬.hwp -> DIW-004291-이해슬.hml
+2026-01-28 17:50:40,090 - INFO - 변환 성공: DIW-004292-이우진.hwp -> DIW-004292-이우진.hml
+2026-01-28 17:50:40,605 - INFO - 변환 성공: DIW-004302-신우진.hwp -> DIW-004302-신우진.hml
+2026-01-28 17:50:41,120 - INFO - 변환 성공: DIW-004311-연승이.hwp -> DIW-004311-연승이.hml
+2026-01-28 17:50:41,548 - INFO - 변환 성공: DIW-004346-최연서.hwp -> DIW-004346-최연서.hml
+2026-01-28 17:50:41,851 - INFO - 변환 성공: DIW-004348-이승민.hwp -> DIW-004348-이승민.hml
+2026-01-28 17:50:42,136 - INFO - 변환 성공: DIW-004356-김건희.hwp -> DIW-004356-김건희.hml
+2026-01-28 17:50:42,564 - INFO - 변환 성공: DIW-004357-정예찬.hwp -> DIW-004357-정예찬.hml
+2026-01-28 17:50:43,089 - INFO - 변환 성공: DIW-004360-정예성.hwp -> DIW-004360-정예성.hml
+2026-01-28 17:50:43,861 - INFO - 변환 성공: DIW-004389-류아민.hwp -> DIW-004389-류아민.hml
+2026-01-28 17:50:44,344 - INFO - 변환 성공: DIW-004400-이사율.hwp -> DIW-004400-이사율.hml
+2026-01-28 17:50:44,861 - INFO - 변환 성공: DIW-004408-이재성.hwp -> DIW-004408-이재성.hml
+2026-01-28 17:50:45,365 - INFO - 변환 성공: DIW-004413-심은서.hwp -> DIW-004413-심은서.hml
+2026-01-28 17:50:45,876 - INFO - 변환 성공: DIW-004415-조진완.hwp -> DIW-004415-조진완.hml
+2026-01-28 17:50:46,397 - INFO - 변환 성공: DIW-004418-김도훈.hwp -> DIW-004418-김도훈.hml
+2026-01-28 17:50:46,910 - INFO - 변환 성공: DIW-004438-백아윤.hwp -> DIW-004438-백아윤.hml
+2026-01-28 17:50:47,420 - INFO - 변환 성공: DIW-004439-이나린.hwp -> DIW-004439-이나린.hml
+2026-01-28 17:50:47,930 - INFO - 변환 성공: DIW-004440-정승빈.hwp -> DIW-004440-정승빈.hml
+2026-01-28 17:50:48,473 - INFO - 변환 성공: DIW-004441-류은빈.hwp -> DIW-004441-류은빈.hml
+2026-01-28 17:50:49,239 - INFO - 변환 성공: DIW-004443-홍세연.hwp -> DIW-004443-홍세연.hml
+2026-01-28 17:50:49,752 - INFO - 변환 성공: DIW-004477-최이연.hwp -> DIW-004477-최이연.hml
+2026-01-28 17:50:50,251 - INFO - 변환 성공: DIW-004478-최윤석.hwp -> DIW-004478-최윤석.hml
+2026-01-28 17:50:50,762 - INFO - 변환 성공: DIW-004480-이서형.hwp -> DIW-004480-이서형.hml
+2026-01-28 17:50:51,260 - INFO - 변환 성공: DIW-004562-임주아.hwp -> DIW-004562-임주아.hml
+2026-01-28 17:50:51,771 - INFO - 변환 성공: DIW-004565-진유성.hwp -> DIW-004565-진유성.hml
+2026-01-28 17:50:52,217 - INFO - 변환 성공: DIW-004581-김소영.hwp -> DIW-004581-김소영.hml
+2026-01-28 17:50:52,619 - INFO - 변환 성공: DIW-004607-박슬아.hwp -> DIW-004607-박슬아.hml
+2026-01-28 17:50:53,125 - INFO - 변환 성공: DIW-004608-양지효.hwp -> DIW-004608-양지효.hml
+2026-01-28 17:50:53,557 - INFO - 변환 성공: DIW-004632-이현우.hwp -> DIW-004632-이현우.hml
+2026-01-28 17:50:53,849 - INFO - 변환 성공: DIW-004633-이나윤.hwp -> DIW-004633-이나윤.hml
+2026-01-28 17:50:54,223 - INFO - 변환 성공: DIW-004634-박병율.hwp -> DIW-004634-박병율.hml
+2026-01-28 17:50:54,846 - INFO - 변환 성공: DIW-004666-윤서준.hwp -> DIW-004666-윤서준.hml
+2026-01-28 17:50:55,346 - INFO - 변환 성공: DIW-004714-조연재.hwp -> DIW-004714-조연재.hml
+2026-01-28 17:50:55,847 - INFO - 변환 성공: DIW-004716-정아린.hwp -> DIW-004716-정아린.hml
+2026-01-28 17:50:56,380 - INFO - 변환 성공: DIW-004792-주민준.hwp -> DIW-004792-주민준.hml
+2026-01-28 17:50:56,902 - INFO - 변환 성공: DIW-004793-정윤.hwp -> DIW-004793-정윤.hml
+2026-01-28 17:50:57,419 - INFO - 변환 성공: DIW-004852-김우성.hwp -> DIW-004852-김우성.hml
+2026-01-28 17:50:57,922 - INFO - 변환 성공: DIW-004853-차태웅.hwp -> DIW-004853-차태웅.hml
+2026-01-28 17:50:58,330 - INFO - 변환 성공: DIW-004854-이지아.hwp -> DIW-004854-이지아.hml
+2026-01-28 17:50:58,867 - INFO - 변환 성공: DIW-004855-김가윤.hwp -> DIW-004855-김가윤.hml
+2026-01-28 17:50:59,390 - INFO - 변환 성공: DIW-004897-이채율.hwp -> DIW-004897-이채율.hml
+2026-01-28 17:50:59,840 - INFO - 변환 성공: DIW-004898-강하준.hwp -> DIW-004898-강하준.hml
+2026-01-28 17:51:00,365 - INFO - 변환 성공: DIW-004899-김지우.hwp -> DIW-004899-김지우.hml
+2026-01-28 17:51:00,795 - INFO - 변환 성공: DIW-004910-김서윤.hwp -> DIW-004910-김서윤.hml
+2026-01-28 17:51:01,185 - INFO - 변환 성공: DIW-004937-서우진.hwp -> DIW-004937-서우진.hml
+2026-01-28 17:51:01,716 - INFO - 변환 성공: DIW-004938-권시환.hwp -> DIW-004938-권시환.hml
+2026-01-28 17:51:02,244 - INFO - 변환 성공: DIW-004939-나경민.hwp -> DIW-004939-나경민.hml
+2026-01-28 17:51:02,751 - INFO - 변환 성공: DIW-004965-박소율.hwp -> DIW-004965-박소율.hml
+2026-01-28 17:51:03,260 - INFO - 변환 성공: DIW-004968-이서준.hwp -> DIW-004968-이서준.hml
+2026-01-28 17:51:03,762 - INFO - 변환 성공: DIW-004973-배성빈.hwp -> DIW-004973-배성빈.hml
+2026-01-28 17:51:04,364 - INFO - 변환 성공: DIW-004974-박성하.hwp -> DIW-004974-박성하.hml
+2026-01-28 17:51:04,896 - INFO - 변환 성공: DIW-005015-이서율.hwp -> DIW-005015-이서율.hml
+2026-01-28 17:51:05,454 - INFO - 변환 성공: DIW-005052-국민우.hwp -> DIW-005052-국민우.hml
+2026-01-28 17:51:05,977 - INFO - 변환 성공: DIW-005060-이준우.hwp -> DIW-005060-이준우.hml
+2026-01-28 17:51:06,495 - INFO - 변환 성공: DIW-005069-문지유.hwp -> DIW-005069-문지유.hml
+2026-01-28 17:51:06,920 - INFO - 변환 성공: DIW-005091-김주원.hwp -> DIW-005091-김주원.hml
+2026-01-28 17:51:07,414 - INFO - 변환 성공: DIW-005108-사공다경.hwp -> DIW-005108-사공다경.hml
+2026-01-28 17:51:07,986 - INFO - 변환 성공: DIW-005112-김민정.hwp -> DIW-005112-김민정.hml
+2026-01-28 17:51:08,495 - INFO - 변환 성공: DIW-005138-이수호.hwp -> DIW-005138-이수호.hml
+2026-01-28 17:51:08,920 - INFO - 변환 성공: DIW-005162-김주원.hwp -> DIW-005162-김주원.hml
+2026-01-28 17:51:09,322 - INFO - 변환 성공: DIW-005166-김나현.hwp -> DIW-005166-김나현.hml
+2026-01-28 17:51:09,847 - INFO - 변환 성공: DIW-005167-양하윤.hwp -> DIW-005167-양하윤.hml
+2026-01-28 17:51:10,369 - INFO - 변환 성공: DIW-005168-계하은.hwp -> DIW-005168-계하은.hml
+2026-01-28 17:51:10,880 - INFO - 변환 성공: DIW-005181-이준우.hwp -> DIW-005181-이준우.hml
+2026-01-28 17:51:11,408 - INFO - 변환 성공: DIW-005197-박찬서.hwp -> DIW-005197-박찬서.hml
+2026-01-28 17:51:11,946 - INFO - 변환 성공: DIW-005198-배믿음.hwp -> DIW-005198-배믿음.hml
+2026-01-28 17:51:12,556 - INFO - 변환 성공: DIW-005199-차수빈.hwp -> DIW-005199-차수빈.hml
+2026-01-28 17:51:13,123 - INFO - 변환 성공: DIW-005200-노수민.hwp -> DIW-005200-노수민.hml
+2026-01-28 17:51:13,652 - INFO - 변환 성공: DIW-005259-박소윤.hwp -> DIW-005259-박소윤.hml
+2026-01-28 17:51:14,192 - INFO - 변환 성공: DIW-005261-방재민.hwp -> DIW-005261-방재민.hml
+2026-01-28 17:51:14,709 - INFO - 변환 성공: DIW-005285-김진성.hwp -> DIW-005285-김진성.hml
+2026-01-28 17:51:15,236 - INFO - 변환 성공: DIW-005292-김희주.hwp -> DIW-005292-김희주.hml
+2026-01-28 17:51:16,002 - INFO - 변환 성공: DIW-005295-문유나.hwp -> DIW-005295-문유나.hml
+2026-01-28 17:51:16,502 - INFO - 변환 성공: DIW-005302-제소민.hwp -> DIW-005302-제소민.hml
+2026-01-28 17:51:17,025 - INFO - 변환 성공: DIW-005379-Kolya Ankana.hwp -> DIW-005379-Kolya Ankana.hml
+2026-01-28 17:51:17,545 - INFO - 변환 성공: DIW-005391-박준혁.hwp -> DIW-005391-박준혁.hml
+2026-01-28 17:51:18,070 - INFO - 변환 성공: DIW-005392-장대한.hwp -> DIW-005392-장대한.hml
+2026-01-28 17:51:18,601 - INFO - 변환 성공: DIW-005393-김문주.hwp -> DIW-005393-김문주.hml
+2026-01-28 17:51:19,113 - INFO - 변환 성공: DIW-005394-양새론.hwp -> DIW-005394-양새론.hml
+2026-01-28 17:51:19,663 - INFO - 변환 성공: DIW-005395-강태원.hwp -> DIW-005395-강태원.hml
+2026-01-28 17:51:20,189 - INFO - 변환 성공: DIW-005429-신다하.hwp -> DIW-005429-신다하.hml
+2026-01-28 17:51:20,694 - INFO - 변환 성공: DIW-005430-정민채.hwp -> DIW-005430-정민채.hml
+2026-01-28 17:51:21,197 - INFO - 변환 성공: DIW-005432-윤채민.hwp -> DIW-005432-윤채민.hml
+2026-01-28 17:51:21,711 - INFO - 변환 성공: DIW-005441-김아린.hwp -> DIW-005441-김아린.hml
+2026-01-28 17:51:22,215 - INFO - 변환 성공: DIW-005443-정성채.hwp -> DIW-005443-정성채.hml
+2026-01-28 17:51:22,729 - INFO - 변환 성공: DIW-005444-박예찬.hwp -> DIW-005444-박예찬.hml
+2026-01-28 17:51:23,240 - INFO - 변환 성공: DIW-005445-공채원.hwp -> DIW-005445-공채원.hml
+2026-01-28 17:51:23,753 - INFO - 변환 성공: DIW-005448-이우람.hwp -> DIW-005448-이우람.hml
+2026-01-28 17:51:24,254 - INFO - 변환 성공: DIW-005449-오주윤.hwp -> DIW-005449-오주윤.hml
+2026-01-28 17:51:24,760 - INFO - 변환 성공: DIW-005450-정하연.hwp -> DIW-005450-정하연.hml
+2026-01-28 17:51:25,261 - INFO - 변환 성공: DIW-005451-배세연.hwp -> DIW-005451-배세연.hml
+2026-01-28 17:51:25,784 - INFO - 변환 성공: DIW-005514-최수빈.hwp -> DIW-005514-최수빈.hml
+2026-01-28 17:51:26,326 - INFO - 변환 성공: DIW-005530-성하은.hwp -> DIW-005530-성하은.hml
+2026-01-28 17:51:26,838 - INFO - 변환 성공: DIW-005546-탁지민.hwp -> DIW-005546-탁지민.hml
+2026-01-28 17:51:27,353 - INFO - 변환 성공: DIW-005547-현은수.hwp -> DIW-005547-현은수.hml
+2026-01-28 17:51:27,872 - INFO - 변환 성공: DIW-005548-현수하.hwp -> DIW-005548-현수하.hml
+2026-01-28 17:51:28,321 - INFO - 변환 성공: DIW-005562-조예나.hwp -> DIW-005562-조예나.hml
+2026-01-28 17:51:28,861 - INFO - 변환 성공: DIW-005591-유시우.hwp -> DIW-005591-유시우.hml
+2026-01-28 17:51:29,295 - INFO - 변환 성공: DIW-005592-김태훈.hwp -> DIW-005592-김태훈.hml
+2026-01-28 17:51:29,626 - INFO - 변환 성공: DIW-005696-김영민.hwp -> DIW-005696-김영민.hml
+2026-01-28 17:51:30,044 - INFO - 변환 성공: DIW-005735-이현우.hwp -> DIW-005735-이현우.hml
+2026-01-28 17:51:30,508 - INFO - 변환 성공: DIW-005762-김민준.hwp -> DIW-005762-김민준.hml
+2026-01-28 17:51:30,919 - INFO - 변환 성공: DIW-005763-김수한.hwp -> DIW-005763-김수한.hml
+2026-01-28 17:51:31,241 - INFO - 변환 성공: DIW-005764-박지홍.hwp -> DIW-005764-박지홍.hml
+2026-01-28 17:51:31,535 - INFO - 변환 성공: DIW-005765-이예나.hwp -> DIW-005765-이예나.hml
+2026-01-28 17:51:32,189 - INFO - 변환 성공: DIW-005798-유채현.hwp -> DIW-005798-유채현.hml
+2026-01-28 17:51:32,686 - INFO - 변환 성공: DIW-005799-김서윤.hwp -> DIW-005799-김서윤.hml
+2026-01-28 17:51:33,212 - INFO - 변환 성공: DIW-005800-신아영.hwp -> DIW-005800-신아영.hml
+2026-01-28 17:51:33,803 - INFO - 변환 성공: DIW-005809-김국현.hwp -> DIW-005809-김국현.hml
+2026-01-28 17:51:34,385 - INFO - 변환 성공: DIW-005853-이서윤.hwp -> DIW-005853-이서윤.hml
+2026-01-28 17:51:34,914 - INFO - 변환 성공: DIW-005924-이예진.hwp -> DIW-005924-이예진.hml
+2026-01-28 17:51:35,421 - INFO - 변환 성공: DIW-005960-진우림.hwp -> DIW-005960-진우림.hml
+2026-01-28 17:51:35,869 - INFO - 변환 성공: DIW-005962-이도헌.hwp -> DIW-005962-이도헌.hml
+2026-01-28 17:51:36,296 - INFO - 변환 성공: DIW-005963-임다온.hwp -> DIW-005963-임다온.hml
+2026-01-28 17:51:36,954 - INFO - 변환 성공: DIW-005964-이유진.hwp -> DIW-005964-이유진.hml
+2026-01-28 17:51:37,563 - INFO - 변환 성공: DIW-005965-임준현.hwp -> DIW-005965-임준현.hml
+2026-01-28 17:51:38,061 - INFO - 변환 성공: DIW-005966-이도윤.hwp -> DIW-005966-이도윤.hml
+2026-01-28 17:51:38,598 - INFO - 변환 성공: DIW-005968-이유찬.hwp -> DIW-005968-이유찬.hml
+2026-01-28 17:51:39,104 - INFO - 변환 성공: DIW-005974-양승유.hwp -> DIW-005974-양승유.hml
+2026-01-28 17:51:39,643 - INFO - 변환 성공: DIW-005979-이다인.hwp -> DIW-005979-이다인.hml
+2026-01-28 17:51:40,143 - INFO - 변환 성공: DIW-006014-전하은.hwp -> DIW-006014-전하은.hml
+2026-01-28 17:51:40,649 - INFO - 변환 성공: DIW-006071-전연후.hwp -> DIW-006071-전연후.hml
+2026-01-28 17:51:41,154 - INFO - 변환 성공: DIW-006072-이은서.hwp -> DIW-006072-이은서.hml
+2026-01-28 17:51:41,678 - INFO - 변환 성공: DIW-006088-박닻별.hwp -> DIW-006088-박닻별.hml
+2026-01-28 17:51:42,175 - INFO - 변환 성공: DIW-006093-장서윤.hwp -> DIW-006093-장서윤.hml
+2026-01-28 17:51:42,754 - INFO - 변환 성공: DIW-006099-김승혁.hwp -> DIW-006099-김승혁.hml
+2026-01-28 17:51:43,172 - INFO - 변환 성공: DIW-006131-이지명.hwp -> DIW-006131-이지명.hml
+2026-01-28 17:51:43,583 - INFO - 변환 성공: DIW-006146-조윤호.hwp -> DIW-006146-조윤호.hml
+2026-01-28 17:51:44,108 - INFO - 변환 성공: DIW-006147-하도훈.hwp -> DIW-006147-하도훈.hml
+2026-01-28 17:51:44,636 - INFO - 변환 성공: DIW-006148-윤지유.hwp -> DIW-006148-윤지유.hml
+2026-01-28 17:51:45,151 - INFO - 변환 성공: DIW-006149-박소율.hwp -> DIW-006149-박소율.hml
+2026-01-28 17:51:45,673 - INFO - 변환 성공: DIW-006150-박민제.hwp -> DIW-006150-박민제.hml
+2026-01-28 17:51:46,200 - INFO - 변환 성공: DIW-006253-고다윤.hwp -> DIW-006253-고다윤.hml
+2026-01-28 17:51:46,647 - INFO - 변환 성공: DIW-006322-김주아.hwp -> DIW-006322-김주아.hml
+2026-01-28 17:51:47,086 - INFO - 변환 성공: DIW-006323-윤하영.hwp -> DIW-006323-윤하영.hml
+2026-01-28 17:51:47,611 - INFO - 변환 성공: DIW-006324-김서현.hwp -> DIW-006324-김서현.hml
+2026-01-28 17:51:48,138 - INFO - 변환 성공: DIW-006325-진정한.hwp -> DIW-006325-진정한.hml
+2026-01-28 17:51:48,638 - INFO - 변환 성공: DIW-006359-이윤호.hwp -> DIW-006359-이윤호.hml
+2026-01-28 17:51:49,135 - INFO - 변환 성공: DIW-006360-김소연.hwp -> DIW-006360-김소연.hml
+2026-01-28 17:51:49,643 - INFO - 변환 성공: DIW-006362-한다희.hwp -> DIW-006362-한다희.hml
+2026-01-28 17:51:50,082 - INFO - 변환 성공: DIW-006366-고유환.hwp -> DIW-006366-고유환.hml
+2026-01-28 17:51:50,497 - INFO - 변환 성공: DIW-006372-박다인.hwp -> DIW-006372-박다인.hml
+2026-01-28 17:51:51,021 - INFO - 변환 성공: DIW-006511-김민준.hwp -> DIW-006511-김민준.hml
+2026-01-28 17:51:51,540 - INFO - 변환 성공: DIW-006515-김서율.hwp -> DIW-006515-김서율.hml
+2026-01-28 17:51:52,064 - INFO - 변환 성공: DIW-006516-이재준.hwp -> DIW-006516-이재준.hml
+2026-01-28 17:51:52,821 - INFO - 변환 성공: DIW-006517-이주희.hwp -> DIW-006517-이주희.hml
+2026-01-28 17:51:53,256 - INFO - 변환 성공: DIW-006537-김도근.hwp -> DIW-006537-김도근.hml
+2026-01-28 17:51:53,676 - INFO - 변환 성공: DIW-006538-정윤서.hwp -> DIW-006538-정윤서.hml
+2026-01-28 17:51:54,209 - INFO - 변환 성공: DIW-006548-박세빈.hwp -> DIW-006548-박세빈.hml
+2026-01-28 17:51:54,563 - INFO - 변환 성공: DIW-006570-문서준.hwp -> DIW-006570-문서준.hml
+2026-01-28 17:51:54,846 - INFO - 변환 성공: DIW-006571-최현수.hwp -> DIW-006571-최현수.hml
+2026-01-28 17:51:55,239 - INFO - 변환 성공: DIW-006635-서라엘.hwp -> DIW-006635-서라엘.hml
+2026-01-28 17:51:55,764 - INFO - 변환 성공: DIW-006653-문예성.hwp -> DIW-006653-문예성.hml
+2026-01-28 17:51:56,301 - INFO - 변환 성공: DIW-006654-전민수.hwp -> DIW-006654-전민수.hml
+2026-01-28 17:51:56,813 - INFO - 변환 성공: DIW-006655-하나윤.hwp -> DIW-006655-하나윤.hml
+2026-01-28 17:51:57,373 - INFO - 변환 성공: DIW-006656-김서윤.hwp -> DIW-006656-김서윤.hml
+2026-01-28 17:51:57,899 - INFO - 변환 성공: DIW-006657-김설호.hwp -> DIW-006657-김설호.hml
+2026-01-28 17:51:58,593 - INFO - 변환 성공: DIW-006683-윤준혁.hwp -> DIW-006683-윤준혁.hml
+2026-01-28 17:51:59,020 - INFO - 변환 성공: DIW-006684-임찬.hwp -> DIW-006684-임찬.hml
+2026-01-28 17:51:59,314 - INFO - 변환 성공: DIW-006718-박시헌.hwp -> DIW-006718-박시헌.hml
+2026-01-28 17:51:59,721 - INFO - 변환 성공: DIW-006719-최지한.hwp -> DIW-006719-최지한.hml
+2026-01-28 17:52:00,251 - INFO - 변환 성공: DIW-006735-최강우.hwp -> DIW-006735-최강우.hml
+2026-01-28 17:52:00,787 - INFO - 변환 성공: DIW-006736-지윤솔.hwp -> DIW-006736-지윤솔.hml
+2026-01-28 17:52:01,290 - INFO - 변환 성공: DIW-006737-박지훈.hwp -> DIW-006737-박지훈.hml
+2026-01-28 17:52:01,717 - INFO - 변환 성공: DIW-006738-김민유.hwp -> DIW-006738-김민유.hml
+2026-01-28 17:52:02,099 - INFO - 변환 성공: DIW-006785-김유민.hwp -> DIW-006785-김유민.hml
+2026-01-28 17:52:02,611 - INFO - 변환 성공: DIW-006795-임정윤.hwp -> DIW-006795-임정윤.hml
+2026-01-28 17:52:03,032 - INFO - 변환 성공: DIW-006807-소하람.hwp -> DIW-006807-소하람.hml
+2026-01-28 17:52:03,340 - INFO - 변환 성공: DIW-006840-차지호.hwp -> DIW-006840-차지호.hml
+2026-01-28 17:52:03,640 - INFO - 변환 성공: DIW-006842-최현수.hwp -> DIW-006842-최현수.hml
+2026-01-28 17:52:04,032 - INFO - 변환 성공: DIW-007461-김지안.hwp -> DIW-007461-김지안.hml
+2026-01-28 17:52:04,554 - INFO - 변환 성공: DIW-007462-박준우.hwp -> DIW-007462-박준우.hml
+2026-01-28 17:52:05,075 - INFO - 변환 성공: DIW-007463-김지유.hwp -> DIW-007463-김지유.hml
+2026-01-28 17:52:05,579 - INFO - 변환 성공: DIW-007464-최현.hwp -> DIW-007464-최현.hml
+2026-01-28 17:52:06,117 - INFO - 변환 성공: DIW-007465-김수진.hwp -> DIW-007465-김수진.hml
+2026-01-28 17:52:06,665 - INFO - 변환 성공: DIW-007466-윤동건.hwp -> DIW-007466-윤동건.hml
+2026-01-28 17:52:07,178 - INFO - 변환 성공: DIW-007483-콜린스그레이스리.hwp -> DIW-007483-콜린스그레이스리.hml
+2026-01-28 17:52:07,697 - INFO - 변환 성공: DIW-007485-김민재.hwp -> DIW-007485-김민재.hml
+2026-01-28 17:52:08,433 - INFO - 변환 성공: DIW-007486-최지우.hwp -> DIW-007486-최지우.hml
+2026-01-28 17:52:08,949 - INFO - 변환 성공: DIW-007494-이예린.hwp -> DIW-007494-이예린.hml
+2026-01-28 17:52:09,474 - INFO - 변환 성공: DIW-007509-신주율.hwp -> DIW-007509-신주율.hml
+2026-01-28 17:52:09,995 - INFO - 변환 성공: DIW-007510-박윤서.hwp -> DIW-007510-박윤서.hml
+2026-01-28 17:52:10,590 - INFO - 변환 성공: DIW-007511-송서유.hwp -> DIW-007511-송서유.hml
+2026-01-28 17:52:11,023 - INFO - 변환 성공: DIW-007550-박서연.hwp -> DIW-007550-박서연.hml
+2026-01-28 17:52:11,445 - INFO - 변환 성공: DIW-007552-설지후.hwp -> DIW-007552-설지후.hml
+2026-01-28 17:52:11,979 - INFO - 변환 성공: DIW-007557-이태준.hwp -> DIW-007557-이태준.hml
+2026-01-28 17:52:12,491 - INFO - 변환 성공: DIW-007558-김정빈.hwp -> DIW-007558-김정빈.hml
+2026-01-28 17:52:12,913 - INFO - 변환 성공: DIW-007562-박서이.hwp -> DIW-007562-박서이.hml
+2026-01-28 17:52:13,471 - INFO - 변환 성공: DIW-007564-김수호.hwp -> DIW-007564-김수호.hml
+2026-01-28 17:52:13,987 - INFO - 변환 성공: DIW-007583-차아영.hwp -> DIW-007583-차아영.hml
+2026-01-28 17:52:14,405 - INFO - 변환 성공: DIW-007605-김시우.hwp -> DIW-007605-김시우.hml
+2026-01-28 17:52:14,915 - INFO - 변환 성공: DIW-007609-정지아.hwp -> DIW-007609-정지아.hml
+2026-01-28 17:52:15,319 - INFO - 변환 성공: DIW-007611-김동규.hwp -> DIW-007611-김동규.hml
+2026-01-28 17:52:15,704 - INFO - 변환 성공: DIW-007621-권민석.hwp -> DIW-007621-권민석.hml
+2026-01-28 17:52:16,253 - INFO - 변환 성공: DIW-007628-이은구.hwp -> DIW-007628-이은구.hml
+2026-01-28 17:52:16,829 - INFO - 변환 성공: DIW-007629-추선우.hwp -> DIW-007629-추선우.hml
+2026-01-28 17:52:17,343 - INFO - 변환 성공: DIW-007630-송동준.hwp -> DIW-007630-송동준.hml
+2026-01-28 17:52:17,852 - INFO - 변환 성공: DIW-007632-홍준영.hwp -> DIW-007632-홍준영.hml
+2026-01-28 17:52:18,389 - INFO - 변환 성공: DIW-007643-이선우.hwp -> DIW-007643-이선우.hml
+2026-01-28 17:52:18,893 - INFO - 변환 성공: DIW-007644-김성규.hwp -> DIW-007644-김성규.hml
+2026-01-28 17:52:19,397 - INFO - 변환 성공: DIW-007677-김지안.hwp -> DIW-007677-김지안.hml
+2026-01-28 17:52:19,923 - INFO - 변환 성공: DIW-007696-채예린.hwp -> DIW-007696-채예린.hml
+2026-01-28 17:52:20,443 - INFO - 변환 성공: DIW-007697-박시현.hwp -> DIW-007697-박시현.hml
+2026-01-28 17:52:20,945 - INFO - 변환 성공: DIW-007698-장윤우.hwp -> DIW-007698-장윤우.hml
+2026-01-28 17:52:21,458 - INFO - 변환 성공: DIW-007765-구성민.hwp -> DIW-007765-구성민.hml
+2026-01-28 17:52:21,990 - INFO - 변환 성공: DIW-007766-구준민.hwp -> DIW-007766-구준민.hml
+2026-01-28 17:52:22,515 - INFO - 변환 성공: DIW-007783-박은찬.hwp -> DIW-007783-박은찬.hml
+2026-01-28 17:52:23,021 - INFO - 변환 성공: DIW-007791-고유림.hwp -> DIW-007791-고유림.hml
+2026-01-28 17:52:23,535 - INFO - 변환 성공: DIW-007798-한시원.hwp -> DIW-007798-한시원.hml
+2026-01-28 17:52:24,052 - INFO - 변환 성공: DIW-007801-김라임.hwp -> DIW-007801-김라임.hml
+2026-01-28 17:52:24,573 - INFO - 변환 성공: DIW-007805-김시율.hwp -> DIW-007805-김시율.hml
+2026-01-28 17:52:25,101 - INFO - 변환 성공: DIW-007820-지요셉.hwp -> DIW-007820-지요셉.hml
+2026-01-28 17:52:25,622 - INFO - 변환 성공: DIW-007862-선예린.hwp -> DIW-007862-선예린.hml
+2026-01-28 17:52:26,151 - INFO - 변환 성공: DIW-007863-이지민.hwp -> DIW-007863-이지민.hml
+2026-01-28 17:52:26,724 - INFO - 변환 성공: DIW_2601B.hwpx -> DIW_2601B.hml
+2026-01-28 17:52:27,094 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2601\B\DIW -> D:\project\HWP\HWP-Scoring\output\2601\B\DIW
+2026-01-28 17:52:27,595 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2601\C\DIW -> D:\project\HWP\HWP-Scoring\output\2601\C\DIW
+2026-01-28 18:00:58,220 - INFO - 변환 성공: DIW-000029-김예서.hwp -> DIW-000029-김예서.hml
+2026-01-28 18:00:58,851 - INFO - 변환 성공: DIW-000036-계정우.hwp -> DIW-000036-계정우.hml
+2026-01-28 18:00:59,388 - INFO - 변환 성공: DIW-000042-이지유.hwp -> DIW-000042-이지유.hml
+2026-01-28 18:00:59,936 - INFO - 변환 성공: DIW-000046-곽태연.hwp -> DIW-000046-곽태연.hml
+2026-01-28 18:01:00,485 - INFO - 변환 성공: DIW-000048-이다원.hwp -> DIW-000048-이다원.hml
+2026-01-28 18:01:01,020 - INFO - 변환 성공: DIW-000049-이서율.hwp -> DIW-000049-이서율.hml
+2026-01-28 18:01:01,563 - INFO - 변환 성공: DIW-000050-권상희.hwp -> DIW-000050-권상희.hml
+2026-01-28 18:01:02,105 - INFO - 변환 성공: DIW-000051-박채아.hwp -> DIW-000051-박채아.hml
+2026-01-28 18:01:02,646 - INFO - 변환 성공: DIW-000052-손은채.hwp -> DIW-000052-손은채.hml
+2026-01-28 18:01:03,201 - INFO - 변환 성공: DIW-000053-김준형.hwp -> DIW-000053-김준형.hml
+2026-01-28 18:01:03,730 - INFO - 변환 성공: DIW-000056-김금재.hwp -> DIW-000056-김금재.hml
+2026-01-28 18:01:04,290 - INFO - 변환 성공: DIW-000057-윤지호.hwp -> DIW-000057-윤지호.hml
+2026-01-28 18:01:04,897 - INFO - 변환 성공: DIW-000058-조서영.hwp -> DIW-000058-조서영.hml
+2026-01-28 18:01:05,551 - INFO - 변환 성공: DIW-000059-장지민.hwp -> DIW-000059-장지민.hml
+2026-01-28 18:01:06,133 - INFO - 변환 성공: DIW-000062-박보미.hwp -> DIW-000062-박보미.hml
+2026-01-28 18:01:06,758 - INFO - 변환 성공: DIW-000065-김민지.hwp -> DIW-000065-김민지.hml
+2026-01-28 18:01:07,480 - INFO - 변환 성공: DIW-000066-조윤솔.hwp -> DIW-000066-조윤솔.hml
+2026-01-28 18:01:08,106 - INFO - 변환 성공: DIW-000238-정시헌.hwp -> DIW-000238-정시헌.hml
+2026-01-28 18:01:08,870 - INFO - 변환 성공: DIW-000239-이상진.hwp -> DIW-000239-이상진.hml
+2026-01-28 18:01:09,207 - INFO - 변환 성공: DIW-000240-이은유.hwp -> DIW-000240-이은유.hml
+2026-01-28 18:01:09,573 - INFO - 변환 성공: DIW-000244-채동현.hwp -> DIW-000244-채동현.hml
+2026-01-28 18:01:09,967 - INFO - 변환 성공: DIW-000245-장선우.hwp -> DIW-000245-장선우.hml
+2026-01-28 18:01:10,608 - INFO - 변환 성공: DIW-000246-백범서.hwp -> DIW-000246-백범서.hml
+2026-01-28 18:01:11,213 - INFO - 변환 성공: DIW-000247-이정빈.hwp -> DIW-000247-이정빈.hml
+2026-01-28 18:01:11,707 - INFO - 변환 성공: DIW-000248-황준서.hwp -> DIW-000248-황준서.hml
+2026-01-28 18:01:12,108 - INFO - 변환 성공: DIW-000249-최다율.hwp -> DIW-000249-최다율.hml
+2026-01-28 18:01:12,668 - INFO - 변환 성공: DIW-000250-박나은.hwp -> DIW-000250-박나은.hml
+2026-01-28 18:01:13,225 - INFO - 변환 성공: DIW-000253-안소민.hwp -> DIW-000253-안소민.hml
+2026-01-28 18:01:13,896 - INFO - 변환 성공: DIW-000306-오승민.hwp -> DIW-000306-오승민.hml
+2026-01-28 18:01:14,350 - INFO - 변환 성공: DIW-000317-전서현.hwp -> DIW-000317-전서현.hml
+2026-01-28 18:01:14,788 - INFO - 변환 성공: DIW-000325-정시온.hwp -> DIW-000325-정시온.hml
+2026-01-28 18:01:15,255 - INFO - 변환 성공: DIW-000379-최여울.hwp -> DIW-000379-최여울.hml
+2026-01-28 18:01:15,661 - INFO - 변환 성공: DIW-000380-이아윤.hwp -> DIW-000380-이아윤.hml
+2026-01-28 18:01:16,218 - INFO - 변환 성공: DIW-000452-노다윤.hwp -> DIW-000452-노다윤.hml
+2026-01-28 18:01:16,667 - INFO - 변환 성공: DIW-000460-김도윤.hwp -> DIW-000460-김도윤.hml
+2026-01-28 18:01:17,268 - INFO - 변환 성공: DIW-000473-조윤서.hwp -> DIW-000473-조윤서.hml
+2026-01-28 18:01:17,830 - INFO - 변환 성공: DIW-000475-하윤아.hwp -> DIW-000475-하윤아.hml
+2026-01-28 18:01:18,384 - INFO - 변환 성공: DIW-000476-박서준.hwp -> DIW-000476-박서준.hml
+2026-01-28 18:01:18,946 - INFO - 변환 성공: DIW-000481-강민준.hwp -> DIW-000481-강민준.hml
+2026-01-28 18:01:19,488 - INFO - 변환 성공: DIW-000492-김수인.hwp -> DIW-000492-김수인.hml
+2026-01-28 18:01:19,940 - INFO - 변환 성공: DIW-000587-김은별.hwp -> DIW-000587-김은별.hml
+2026-01-28 18:01:20,246 - INFO - 변환 성공: DIW-000589-황현서.hwp -> DIW-000589-황현서.hml
+2026-01-28 18:01:20,627 - INFO - 변환 성공: DIW-000592-최지우.hwp -> DIW-000592-최지우.hml
+2026-01-28 18:01:21,196 - INFO - 변환 성공: DIW-000594-임현우.hwp -> DIW-000594-임현우.hml
+2026-01-28 18:01:21,765 - INFO - 변환 성공: DIW-000607-윤지율.hwp -> DIW-000607-윤지율.hml
+2026-01-28 18:01:22,323 - INFO - 변환 성공: DIW-000613-양진한.hwp -> DIW-000613-양진한.hml
+2026-01-28 18:01:22,806 - INFO - 변환 성공: DIW-000614-주다혜.hwp -> DIW-000614-주다혜.hml
+2026-01-28 18:01:23,229 - INFO - 변환 성공: DIW-000624-유선환.hwp -> DIW-000624-유선환.hml
+2026-01-28 18:01:23,808 - INFO - 변환 성공: DIW-000718-도이든.hwp -> DIW-000718-도이든.hml
+2026-01-28 18:01:24,588 - INFO - 변환 성공: DIW-000719-김효림.hwp -> DIW-000719-김효림.hml
+2026-01-28 18:01:25,128 - INFO - 변환 성공: DIW-000720-서예준.hwp -> DIW-000720-서예준.hml
+2026-01-28 18:01:25,586 - INFO - 변환 성공: DIW-000721-서주아.hwp -> DIW-000721-서주아.hml
+2026-01-28 18:01:25,995 - INFO - 변환 성공: DIW-000722-변가은.hwp -> DIW-000722-변가은.hml
+2026-01-28 18:01:26,554 - INFO - 변환 성공: DIW-000723-김소은.hwp -> DIW-000723-김소은.hml
+2026-01-28 18:01:27,108 - INFO - 변환 성공: DIW-000724-김가람.hwp -> DIW-000724-김가람.hml
+2026-01-28 18:01:27,666 - INFO - 변환 성공: DIW-000725-김진헌.hwp -> DIW-000725-김진헌.hml
+2026-01-28 18:01:28,288 - INFO - 변환 성공: DIW-000726-김가현.hwp -> DIW-000726-김가현.hml
+2026-01-28 18:01:28,845 - INFO - 변환 성공: DIW-000727-김태훈.hwp -> DIW-000727-김태훈.hml
+2026-01-28 18:01:29,392 - INFO - 변환 성공: DIW-000728-김하빈.hwp -> DIW-000728-김하빈.hml
+2026-01-28 18:01:30,124 - INFO - 변환 성공: DIW-000771-류아인.hwp -> DIW-000771-류아인.hml
+2026-01-28 18:01:30,663 - INFO - 변환 성공: DIW-000794-허서윤.hwp -> DIW-000794-허서윤.hml
+2026-01-28 18:01:31,213 - INFO - 변환 성공: DIW-000797-허서연.hwp -> DIW-000797-허서연.hml
+2026-01-28 18:01:31,761 - INFO - 변환 성공: DIW-000820-강민서.hwp -> DIW-000820-강민서.hml
+2026-01-28 18:01:32,289 - INFO - 변환 성공: DIW-000844-도은서.hwp -> DIW-000844-도은서.hml
+2026-01-28 18:01:32,833 - INFO - 변환 성공: DIW-000845-편윤아.hwp -> DIW-000845-편윤아.hml
+2026-01-28 18:01:33,380 - INFO - 변환 성공: DIW-000846-이세영.hwp -> DIW-000846-이세영.hml
+2026-01-28 18:01:33,928 - INFO - 변환 성공: DIW-000847-오승지.hwp -> DIW-000847-오승지.hml
+2026-01-28 18:01:34,495 - INFO - 변환 성공: DIW-000848-지소연.hwp -> DIW-000848-지소연.hml
+2026-01-28 18:01:35,033 - INFO - 변환 성공: DIW-000849-김원준.hwp -> DIW-000849-김원준.hml
+2026-01-28 18:01:35,598 - INFO - 변환 성공: DIW-000850-손지호.hwp -> DIW-000850-손지호.hml
+2026-01-28 18:01:36,186 - INFO - 변환 성공: DIW-000854-김리원.hwp -> DIW-000854-김리원.hml
+2026-01-28 18:01:36,804 - INFO - 변환 성공: DIW-000856-황정아.hwp -> DIW-000856-황정아.hml
+2026-01-28 18:01:37,405 - INFO - 변환 성공: DIW-000858-조정연.hwp -> DIW-000858-조정연.hml
+2026-01-28 18:01:37,973 - INFO - 변환 성공: DIW-000860-김예나.hwp -> DIW-000860-김예나.hml
+2026-01-28 18:01:38,533 - INFO - 변환 성공: DIW-000867-이세윤.hwp -> DIW-000867-이세윤.hml
+2026-01-28 18:01:39,123 - INFO - 변환 성공: DIW-000900-박정현.hwp -> DIW-000900-박정현.hml
+2026-01-28 18:01:39,685 - INFO - 변환 성공: DIW-000919-백서아.hwp -> DIW-000919-백서아.hml
+2026-01-28 18:01:40,174 - INFO - 변환 성공: DIW-001013-강민서.hwp -> DIW-001013-강민서.hml
+2026-01-28 18:01:40,651 - INFO - 변환 성공: DIW-001020-채희성.hwp -> DIW-001020-채희성.hml
+2026-01-28 18:01:41,213 - INFO - 변환 성공: DIW-001021-서주애.hwp -> DIW-001021-서주애.hml
+2026-01-28 18:01:41,745 - INFO - 변환 성공: DIW-001025-박유민.hwp -> DIW-001025-박유민.hml
+2026-01-28 18:01:42,281 - INFO - 변환 성공: DIW-001034-권봄.hwp -> DIW-001034-권봄.hml
+2026-01-28 18:01:42,833 - INFO - 변환 성공: DIW-001085-피진우.hwp -> DIW-001085-피진우.hml
+2026-01-28 18:01:43,340 - INFO - 변환 성공: DIW-001103-김도린.hwp -> DIW-001103-김도린.hml
+2026-01-28 18:01:43,657 - INFO - 변환 성공: DIW-001105-이하린.hwp -> DIW-001105-이하린.hml
+2026-01-28 18:01:43,952 - INFO - 변환 성공: DIW-001106-강초원.hwp -> DIW-001106-강초원.hml
+2026-01-28 18:01:44,249 - INFO - 변환 성공: DIW-001107-추은총.hwp -> DIW-001107-추은총.hml
+2026-01-28 18:01:44,634 - INFO - 변환 성공: DIW-001108-김유림.hwp -> DIW-001108-김유림.hml
+2026-01-28 18:01:45,217 - INFO - 변환 성공: DIW-001138-강하영.hwp -> DIW-001138-강하영.hml
+2026-01-28 18:01:45,795 - INFO - 변환 성공: DIW-001139-임가람.hwp -> DIW-001139-임가람.hml
+2026-01-28 18:01:46,383 - INFO - 변환 성공: DIW-001140-임가민.hwp -> DIW-001140-임가민.hml
+2026-01-28 18:01:46,857 - INFO - 변환 성공: DIW-001148-김찬혁.hwp -> DIW-001148-김찬혁.hml
+2026-01-28 18:01:47,257 - INFO - 변환 성공: DIW-001163-박시우.hwp -> DIW-001163-박시우.hml
+2026-01-28 18:01:47,808 - INFO - 변환 성공: DIW-001167-임재린.hwp -> DIW-001167-임재린.hml
+2026-01-28 18:01:48,364 - INFO - 변환 성공: DIW-001196-김하린.hwp -> DIW-001196-김하린.hml
+2026-01-28 18:01:48,911 - INFO - 변환 성공: DIW-001240-김주원.hwp -> DIW-001240-김주원.hml
+2026-01-28 18:01:49,473 - INFO - 변환 성공: DIW-001241-고하린.hwp -> DIW-001241-고하린.hml
+2026-01-28 18:01:50,049 - INFO - 변환 성공: DIW-001268-박범솔.hwp -> DIW-001268-박범솔.hml
+2026-01-28 18:01:50,744 - INFO - 변환 성공: DIW-001272-박지훈.hwp -> DIW-001272-박지훈.hml
+2026-01-28 18:01:51,296 - INFO - 변환 성공: DIW-001283-최재준.hwp -> DIW-001283-최재준.hml
+2026-01-28 18:01:51,920 - INFO - 변환 성공: DIW-001285-강태호.hwp -> DIW-001285-강태호.hml
+2026-01-28 18:01:52,482 - INFO - 변환 성공: DIW-001286-최다온.hwp -> DIW-001286-최다온.hml
+2026-01-28 18:01:53,080 - INFO - 변환 성공: DIW-001287-최혜빈.hwp -> DIW-001287-최혜빈.hml
+2026-01-28 18:01:53,650 - INFO - 변환 성공: DIW-001288-양진혁.hwp -> DIW-001288-양진혁.hml
+2026-01-28 18:01:54,127 - INFO - 변환 성공: DIW-001293-황혜림.hwp -> DIW-001293-황혜림.hml
+2026-01-28 18:01:54,538 - INFO - 변환 성공: DIW-001302-Battogtokh Ariunzul.hwp -> DIW-001302-Battogtokh Ariunzul.hml
+2026-01-28 18:01:55,103 - INFO - 변환 성공: DIW-001316-이유정.hwp -> DIW-001316-이유정.hml
+2026-01-28 18:01:55,668 - INFO - 변환 성공: DIW-001339-이우빈.hwp -> DIW-001339-이우빈.hml
+2026-01-28 18:01:56,320 - INFO - 변환 성공: DIW-001363-이서준.hwp -> DIW-001363-이서준.hml
+2026-01-28 18:01:56,850 - INFO - 변환 성공: DIW-001364-허예담.hwp -> DIW-001364-허예담.hml
+2026-01-28 18:01:57,411 - INFO - 변환 성공: DIW-001365-박설.hwp -> DIW-001365-박설.hml
+2026-01-28 18:01:57,967 - INFO - 변환 성공: DIW-001368-이환준.hwp -> DIW-001368-이환준.hml
+2026-01-28 18:01:58,510 - INFO - 변환 성공: DIW-001369-김소영.hwp -> DIW-001369-김소영.hml
+2026-01-28 18:01:59,074 - INFO - 변환 성공: DIW-001370-김근애.hwp -> DIW-001370-김근애.hml
+2026-01-28 18:01:59,625 - INFO - 변환 성공: DIW-001431-박지윤.hwp -> DIW-001431-박지윤.hml
+2026-01-28 18:02:00,172 - INFO - 변환 성공: DIW-001432-김아인.hwp -> DIW-001432-김아인.hml
+2026-01-28 18:02:00,732 - INFO - 변환 성공: DIW-001433-박보은.hwp -> DIW-001433-박보은.hml
+2026-01-28 18:02:01,312 - INFO - 변환 성공: DIW-001455-이가윤.hwp -> DIW-001455-이가윤.hml
+2026-01-28 18:02:01,867 - INFO - 변환 성공: DIW-001549-이솔인.hwp -> DIW-001549-이솔인.hml
+2026-01-28 18:02:02,408 - INFO - 변환 성공: DIW-001558-정예림.hwp -> DIW-001558-정예림.hml
+2026-01-28 18:02:02,951 - INFO - 변환 성공: DIW-001644-은지우.hwp -> DIW-001644-은지우.hml
+2026-01-28 18:02:03,502 - INFO - 변환 성공: DIW-001645-김하율.hwp -> DIW-001645-김하율.hml
+2026-01-28 18:02:03,959 - INFO - 변환 성공: DIW-001647-전유리.hwp -> DIW-001647-전유리.hml
+2026-01-28 18:02:04,350 - INFO - 변환 성공: DIW-001657-김재윤.hwp -> DIW-001657-김재윤.hml
+2026-01-28 18:02:04,803 - INFO - 변환 성공: DIW-001658-장선우.hwp -> DIW-001658-장선우.hml
+2026-01-28 18:02:05,209 - INFO - 변환 성공: DIW-001659-송시훈.hwp -> DIW-001659-송시훈.hml
+2026-01-28 18:02:05,665 - INFO - 변환 성공: DIW-001660-박설아.hwp -> DIW-001660-박설아.hml
+2026-01-28 18:02:06,078 - INFO - 변환 성공: DIW-001715-백호.hwp -> DIW-001715-백호.hml
+2026-01-28 18:02:06,373 - INFO - 변환 성공: DIW-001716-박현우.hwp -> DIW-001716-박현우.hml
+2026-01-28 18:02:06,824 - INFO - 변환 성공: DIW-001718-조승현.hwp -> DIW-001718-조승현.hml
+2026-01-28 18:02:07,133 - INFO - 변환 성공: DIW-001719-이솔하연.hwp -> DIW-001719-이솔하연.hml
+2026-01-28 18:02:07,465 - INFO - 변환 성공: DIW-001727-지소율.hwp -> DIW-001727-지소율.hml
+2026-01-28 18:02:07,760 - INFO - 변환 성공: DIW-001747-안다윤.hwp -> DIW-001747-안다윤.hml
+2026-01-28 18:02:08,208 - INFO - 변환 성공: DIW-001766-박정원.hwp -> DIW-001766-박정원.hml
+2026-01-28 18:02:08,778 - INFO - 변환 성공: DIW-001767-이윤후.hwp -> DIW-001767-이윤후.hml
+2026-01-28 18:02:09,326 - INFO - 변환 성공: DIW-001768-손민준.hwp -> DIW-001768-손민준.hml
+2026-01-28 18:02:09,811 - INFO - 변환 성공: DIW-001775-정재은.hwp -> DIW-001775-정재은.hml
+2026-01-28 18:02:10,218 - INFO - 변환 성공: DIW-001790-이예원.hwp -> DIW-001790-이예원.hml
+2026-01-28 18:02:10,793 - INFO - 변환 성공: DIW-001794-김다온.hwp -> DIW-001794-김다온.hml
+2026-01-28 18:02:11,362 - INFO - 변환 성공: DIW-001852-이승연.hwp -> DIW-001852-이승연.hml
+2026-01-28 18:02:12,082 - INFO - 변환 성공: DIW-001875-박지후.hwp -> DIW-001875-박지후.hml
+2026-01-28 18:02:12,626 - INFO - 변환 성공: DIW-001901-최하랑.hwp -> DIW-001901-최하랑.hml
+2026-01-28 18:02:13,184 - INFO - 변환 성공: DIW-001902-최현우.hwp -> DIW-001902-최현우.hml
+2026-01-28 18:02:13,738 - INFO - 변환 성공: DIW-001908-이하율.hwp -> DIW-001908-이하율.hml
+2026-01-28 18:02:14,301 - INFO - 변환 성공: DIW-001914-최은율.hwp -> DIW-001914-최은율.hml
+2026-01-28 18:02:14,857 - INFO - 변환 성공: DIW-001916-정서우.hwp -> DIW-001916-정서우.hml
+2026-01-28 18:02:15,418 - INFO - 변환 성공: DIW-001917-정서영.hwp -> DIW-001917-정서영.hml
+2026-01-28 18:02:15,867 - INFO - 변환 성공: DIW-001976-배진주.hwp -> DIW-001976-배진주.hml
+2026-01-28 18:02:16,317 - INFO - 변환 성공: DIW-001978-강서연.hwp -> DIW-001978-강서연.hml
+2026-01-28 18:02:16,920 - INFO - 변환 성공: DIW-001980-김온유.hwp -> DIW-001980-김온유.hml
+2026-01-28 18:02:17,476 - INFO - 변환 성공: DIW-001981-송온유.hwp -> DIW-001981-송온유.hml
+2026-01-28 18:02:18,030 - INFO - 변환 성공: DIW-002008-김도형.hwp -> DIW-002008-김도형.hml
+2026-01-28 18:02:18,499 - INFO - 변환 성공: DIW-002017-공주아.hwp -> DIW-002017-공주아.hml
+2026-01-28 18:02:19,079 - INFO - 변환 성공: DIW-002018-최윤.hwp -> DIW-002018-최윤.hml
+2026-01-28 18:02:19,584 - INFO - 변환 성공: DIW-002037-방세연.hwp -> DIW-002037-방세연.hml
+2026-01-28 18:02:20,026 - INFO - 변환 성공: DIW-002051-최아인.hwp -> DIW-002051-최아인.hml
+2026-01-28 18:02:20,611 - INFO - 변환 성공: DIW-002052-양지유.hwp -> DIW-002052-양지유.hml
+2026-01-28 18:02:21,206 - INFO - 변환 성공: DIW-002091-전정민.hwp -> DIW-002091-전정민.hml
+2026-01-28 18:02:22,021 - INFO - 변환 성공: DIW-002102-김동현.hwp -> DIW-002102-김동현.hml
+2026-01-28 18:02:22,625 - INFO - 변환 성공: DIW-002120-장유주.hwp -> DIW-002120-장유주.hml
+2026-01-28 18:02:23,204 - INFO - 변환 성공: DIW-002138-김주언.hwp -> DIW-002138-김주언.hml
+2026-01-28 18:02:23,944 - INFO - 변환 성공: DIW-002148-김승연.hwp -> DIW-002148-김승연.hml
+2026-01-28 18:02:24,613 - INFO - 변환 성공: DIW-002153-송유리.hwp -> DIW-002153-송유리.hml
+2026-01-28 18:02:25,206 - INFO - 변환 성공: DIW-002178-장연서.hwp -> DIW-002178-장연서.hml
+2026-01-28 18:02:25,846 - INFO - 변환 성공: DIW-002232-박민주.hwp -> DIW-002232-박민주.hml
+2026-01-28 18:02:26,461 - INFO - 변환 성공: DIW-002270-이유빈.hwp -> DIW-002270-이유빈.hml
+2026-01-28 18:02:27,014 - INFO - 변환 성공: DIW-002271-진가영.hwp -> DIW-002271-진가영.hml
+2026-01-28 18:02:27,557 - INFO - 변환 성공: DIW-002281-이재희.hwp -> DIW-002281-이재희.hml
+2026-01-28 18:02:28,098 - INFO - 변환 성공: DIW-002282-김규리.hwp -> DIW-002282-김규리.hml
+2026-01-28 18:02:28,657 - INFO - 변환 성공: DIW-002314-구나현.hwp -> DIW-002314-구나현.hml
+2026-01-28 18:02:29,233 - INFO - 변환 성공: DIW-002315-박지인.hwp -> DIW-002315-박지인.hml
+2026-01-28 18:02:29,789 - INFO - 변환 성공: DIW-002316-이지민.hwp -> DIW-002316-이지민.hml
+2026-01-28 18:02:30,335 - INFO - 변환 성공: DIW-002320-배은서.hwp -> DIW-002320-배은서.hml
+2026-01-28 18:02:30,906 - INFO - 변환 성공: DIW-002324-송은유.hwp -> DIW-002324-송은유.hml
+2026-01-28 18:02:31,462 - INFO - 변환 성공: DIW-002325-홍가민.hwp -> DIW-002325-홍가민.hml
+2026-01-28 18:02:32,017 - INFO - 변환 성공: DIW-002326-김라니.hwp -> DIW-002326-김라니.hml
+2026-01-28 18:02:32,566 - INFO - 변환 성공: DIW-002328-김준우.hwp -> DIW-002328-김준우.hml
+2026-01-28 18:02:33,115 - INFO - 변환 성공: DIW-002329-이서인.hwp -> DIW-002329-이서인.hml
+2026-01-28 18:02:33,661 - INFO - 변환 성공: DIW-002330-박주원.hwp -> DIW-002330-박주원.hml
+2026-01-28 18:02:34,240 - INFO - 변환 성공: DIW-002331-차수영.hwp -> DIW-002331-차수영.hml
+2026-01-28 18:02:34,700 - INFO - 변환 성공: DIW-002365-박주혁.hwp -> DIW-002365-박주혁.hml
+2026-01-28 18:02:35,155 - INFO - 변환 성공: DIW-002370-심연서.hwp -> DIW-002370-심연서.hml
+2026-01-28 18:02:35,696 - INFO - 변환 성공: DIW-002372-한서윤.hwp -> DIW-002372-한서윤.hml
+2026-01-28 18:02:36,239 - INFO - 변환 성공: DIW-002383-이예서.hwp -> DIW-002383-이예서.hml
+2026-01-28 18:02:36,724 - INFO - 변환 성공: DIW-002409-진수아.hwp -> DIW-002409-진수아.hml
+2026-01-28 18:02:37,130 - INFO - 변환 성공: DIW-002417-권하율.hwp -> DIW-002417-권하율.hml
+2026-01-28 18:02:37,705 - INFO - 변환 성공: DIW-002443-김예령.hwp -> DIW-002443-김예령.hml
+2026-01-28 18:02:38,258 - INFO - 변환 성공: DIW-002487-차세연.hwp -> DIW-002487-차세연.hml
+2026-01-28 18:02:38,828 - INFO - 변환 성공: DIW-002651-김지원.hwp -> DIW-002651-김지원.hml
+2026-01-28 18:02:39,290 - INFO - 변환 성공: DIW-002660-한재민.hwp -> DIW-002660-한재민.hml
+2026-01-28 18:02:39,745 - INFO - 변환 성공: DIW-002742-소민성.hwp -> DIW-002742-소민성.hml
+2026-01-28 18:02:40,305 - INFO - 변환 성공: DIW-002743-김나혜.hwp -> DIW-002743-김나혜.hml
+2026-01-28 18:02:40,857 - INFO - 변환 성공: DIW-002745-고나은.hwp -> DIW-002745-고나은.hml
+2026-01-28 18:02:41,415 - INFO - 변환 성공: DIW-002746-권가인.hwp -> DIW-002746-권가인.hml
+2026-01-28 18:02:42,002 - INFO - 변환 성공: DIW-002751-추아린.hwp -> DIW-002751-추아린.hml
+2026-01-28 18:02:42,645 - INFO - 변환 성공: DIW-002752-김주하.hwp -> DIW-002752-김주하.hml
+2026-01-28 18:02:43,221 - INFO - 변환 성공: DIW-002753-김민서.hwp -> DIW-002753-김민서.hml
+2026-01-28 18:02:43,765 - INFO - 변환 성공: DIW-002761-정소희.hwp -> DIW-002761-정소희.hml
+2026-01-28 18:02:44,329 - INFO - 변환 성공: DIW-002762-김도영.hwp -> DIW-002762-김도영.hml
+2026-01-28 18:02:44,898 - INFO - 변환 성공: DIW-002763-김경록.hwp -> DIW-002763-김경록.hml
+2026-01-28 18:02:45,445 - INFO - 변환 성공: DIW-002880-김동규.hwp -> DIW-002880-김동규.hml
+2026-01-28 18:02:45,994 - INFO - 변환 성공: DIW-002890-최우영.hwp -> DIW-002890-최우영.hml
+2026-01-28 18:02:46,554 - INFO - 변환 성공: DIW-002892-김민결.hwp -> DIW-002892-김민결.hml
+2026-01-28 18:02:47,020 - INFO - 변환 성공: DIW-002894-이승건.hwp -> DIW-002894-이승건.hml
+2026-01-28 18:02:47,557 - INFO - 변환 성공: DIW-002911-박소연.hwp -> DIW-002911-박소연.hml
+2026-01-28 18:02:48,118 - INFO - 변환 성공: DIW-002912-이찬미.hwp -> DIW-002912-이찬미.hml
+2026-01-28 18:02:48,658 - INFO - 변환 성공: DIW-002916-남경빈.hwp -> DIW-002916-남경빈.hml
+2026-01-28 18:02:49,203 - INFO - 변환 성공: DIW-002986-이현우.hwp -> DIW-002986-이현우.hml
+2026-01-28 18:02:49,755 - INFO - 변환 성공: DIW-002987-황서한.hwp -> DIW-002987-황서한.hml
+2026-01-28 18:02:50,308 - INFO - 변환 성공: DIW-002988-석상현.hwp -> DIW-002988-석상현.hml
+2026-01-28 18:02:50,855 - INFO - 변환 성공: DIW-003021-손현결.hwp -> DIW-003021-손현결.hml
+2026-01-28 18:02:51,411 - INFO - 변환 성공: DIW-003103-박동호.hwp -> DIW-003103-박동호.hml
+2026-01-28 18:02:51,938 - INFO - 변환 성공: DIW-003106-진윤성.hwp -> DIW-003106-진윤성.hml
+2026-01-28 18:02:52,642 - INFO - 변환 성공: DIW-003107-이도겸.hwp -> DIW-003107-이도겸.hml
+2026-01-28 18:02:53,080 - INFO - 변환 성공: DIW-003109-한형준.hwp -> DIW-003109-한형준.hml
+2026-01-28 18:02:53,488 - INFO - 변환 성공: DIW-003112-신결.hwp -> DIW-003112-신결.hml
+2026-01-28 18:02:53,943 - INFO - 변환 성공: DIW-003115-유민혁.hwp -> DIW-003115-유민혁.hml
+2026-01-28 18:02:54,365 - INFO - 변환 성공: DIW-003123-서금비.hwp -> DIW-003123-서금비.hml
+2026-01-28 18:02:54,950 - INFO - 변환 성공: DIW-003124-박서연.hwp -> DIW-003124-박서연.hml
+2026-01-28 18:02:55,511 - INFO - 변환 성공: DIW-003146-김영찬.hwp -> DIW-003146-김영찬.hml
+2026-01-28 18:02:55,980 - INFO - 변환 성공: DIW-003148-서아연.hwp -> DIW-003148-서아연.hml
+2026-01-28 18:02:56,378 - INFO - 변환 성공: DIW-003149-노현종.hwp -> DIW-003149-노현종.hml
+2026-01-28 18:02:56,864 - INFO - 변환 성공: DIW-003173-이민재.hwp -> DIW-003173-이민재.hml
+2026-01-28 18:02:57,259 - INFO - 변환 성공: DIW-003174-김윤아.hwp -> DIW-003174-김윤아.hml
+2026-01-28 18:02:57,815 - INFO - 변환 성공: DIW-003187-이보영.hwp -> DIW-003187-이보영.hml
+2026-01-28 18:02:58,360 - INFO - 변환 성공: DIW-003195-채희건.hwp -> DIW-003195-채희건.hml
+2026-01-28 18:02:58,908 - INFO - 변환 성공: DIW-003196-김태영.hwp -> DIW-003196-김태영.hml
+2026-01-28 18:02:59,374 - INFO - 변환 성공: DIW-003197-오석.hwp -> DIW-003197-오석.hml
+2026-01-28 18:02:59,674 - INFO - 변환 성공: DIW-003198-유수아.hwp -> DIW-003198-유수아.hml
+2026-01-28 18:03:00,056 - INFO - 변환 성공: DIW-003199-백열호.hwp -> DIW-003199-백열호.hml
+2026-01-28 18:03:00,529 - INFO - 변환 성공: DIW-003200-박재현.hwp -> DIW-003200-박재현.hml
+2026-01-28 18:03:00,937 - INFO - 변환 성공: DIW-003201-도하준.hwp -> DIW-003201-도하준.hml
+2026-01-28 18:03:01,401 - INFO - 변환 성공: DIW-003202-차은솔.hwp -> DIW-003202-차은솔.hml
+2026-01-28 18:03:01,808 - INFO - 변환 성공: DIW-003204-도민준.hwp -> DIW-003204-도민준.hml
+2026-01-28 18:03:09,614 - INFO - 변환 성공: DIW-003205-이태강.hwp -> DIW-003205-이태강.hml
+2026-01-28 18:03:10,200 - INFO - 변환 성공: DIW-003230-김문겸.hwp -> DIW-003230-김문겸.hml
+2026-01-28 18:03:10,757 - INFO - 변환 성공: DIW-003291-김주윤.hwp -> DIW-003291-김주윤.hml
+2026-01-28 18:03:11,318 - INFO - 변환 성공: DIW-003292-김준호.hwp -> DIW-003292-김준호.hml
+2026-01-28 18:03:11,894 - INFO - 변환 성공: DIW-003293-유시아.hwp -> DIW-003293-유시아.hml
+2026-01-28 18:03:12,441 - INFO - 변환 성공: DIW-003294-이파도.hwp -> DIW-003294-이파도.hml
+2026-01-28 18:03:12,955 - INFO - 변환 성공: DIW-003295-전세영.hwp -> DIW-003295-전세영.hml
+2026-01-28 18:03:13,477 - INFO - 변환 성공: DIW-003297-박형민.hwp -> DIW-003297-박형민.hml
+2026-01-28 18:03:14,046 - INFO - 변환 성공: DIW-003322-김주영.hwp -> DIW-003322-김주영.hml
+2026-01-28 18:03:14,641 - INFO - 변환 성공: DIW-003329-강준우.hwp -> DIW-003329-강준우.hml
+2026-01-28 18:03:15,208 - INFO - 변환 성공: DIW-003330-남민유.hwp -> DIW-003330-남민유.hml
+2026-01-28 18:03:15,778 - INFO - 변환 성공: DIW-003347-김도연.hwp -> DIW-003347-김도연.hml
+2026-01-28 18:03:16,340 - INFO - 변환 성공: DIW-003351-용주영.hwp -> DIW-003351-용주영.hml
+2026-01-28 18:03:16,919 - INFO - 변환 성공: DIW-003352-서주원.hwp -> DIW-003352-서주원.hml
+2026-01-28 18:03:17,491 - INFO - 변환 성공: DIW-003363-이효인.hwp -> DIW-003363-이효인.hml
+2026-01-28 18:03:18,152 - INFO - 변환 성공: DIW-003365-박서준.hwp -> DIW-003365-박서준.hml
+2026-01-28 18:03:18,697 - INFO - 변환 성공: DIW-003369-신민규.hwp -> DIW-003369-신민규.hml
+2026-01-28 18:03:19,258 - INFO - 변환 성공: DIW-003370-정유찬.hwp -> DIW-003370-정유찬.hml
+2026-01-28 18:03:19,832 - INFO - 변환 성공: DIW-003424-박소윤.hwp -> DIW-003424-박소윤.hml
+2026-01-28 18:03:20,374 - INFO - 변환 성공: DIW-003425-서은채.hwp -> DIW-003425-서은채.hml
+2026-01-28 18:03:20,847 - INFO - 변환 성공: DIW-003426-황지훈.hwp -> DIW-003426-황지훈.hml
+2026-01-28 18:03:21,403 - INFO - 변환 성공: DIW-003434-김이든.hwp -> DIW-003434-김이든.hml
+2026-01-28 18:03:21,956 - INFO - 변환 성공: DIW-003504-한채아.hwp -> DIW-003504-한채아.hml
+2026-01-28 18:03:22,507 - INFO - 변환 성공: DIW-003517-김동민.hwp -> DIW-003517-김동민.hml
+2026-01-28 18:03:23,224 - INFO - 변환 성공: DIW-003549-정혜빈.hwp -> DIW-003549-정혜빈.hml
+2026-01-28 18:03:23,773 - INFO - 변환 성공: DIW-003550-김준엽.hwp -> DIW-003550-김준엽.hml
+2026-01-28 18:03:24,309 - INFO - 변환 성공: DIW-003551-이윤찬.hwp -> DIW-003551-이윤찬.hml
+2026-01-28 18:03:24,772 - INFO - 변환 성공: DIW-003556-김준.hwp -> DIW-003556-김준.hml
+2026-01-28 18:03:25,108 - INFO - 변환 성공: DIW-003559-차슬아.hwp -> DIW-003559-차슬아.hml
+2026-01-28 18:03:25,513 - INFO - 변환 성공: DIW-003575-권송인.hwp -> DIW-003575-권송인.hml
+2026-01-28 18:03:26,063 - INFO - 변환 성공: DIW-003628-고도윤.hwp -> DIW-003628-고도윤.hml
+2026-01-28 18:03:26,619 - INFO - 변환 성공: DIW-003630-김서은.hwp -> DIW-003630-김서은.hml
+2026-01-28 18:03:27,156 - INFO - 변환 성공: DIW-003691-박성경.hwp -> DIW-003691-박성경.hml
+2026-01-28 18:03:27,626 - INFO - 변환 성공: DIW-003700-유채인.hwp -> DIW-003700-유채인.hml
+2026-01-28 18:03:28,034 - INFO - 변환 성공: DIW-003773-정시온.hwp -> DIW-003773-정시온.hml
+2026-01-28 18:03:28,576 - INFO - 변환 성공: DIW-003799-윤승주.hwp -> DIW-003799-윤승주.hml
+2026-01-28 18:03:29,123 - INFO - 변환 성공: DIW-003800-최서원.hwp -> DIW-003800-최서원.hml
+2026-01-28 18:03:29,584 - INFO - 변환 성공: DIW-003816-김예성.hwp -> DIW-003816-김예성.hml
+2026-01-28 18:03:29,906 - INFO - 변환 성공: DIW-003817-박동주.hwp -> DIW-003817-박동주.hml
+2026-01-28 18:03:30,108 - INFO - 변환 성공: DIW-003819-장범비.hwp -> DIW-003819-장범비.hml
+2026-01-28 18:03:30,732 - INFO - 변환 성공: DIW-003830-이민호.hwp -> DIW-003830-이민호.hml
+2026-01-28 18:03:31,287 - INFO - 변환 성공: DIW-003911-허유민.hwp -> DIW-003911-허유민.hml
+2026-01-28 18:03:31,842 - INFO - 변환 성공: DIW-003912-김세인.hwp -> DIW-003912-김세인.hml
+2026-01-28 18:03:32,379 - INFO - 변환 성공: DIW-003996-양현준.hwp -> DIW-003996-양현준.hml
+2026-01-28 18:03:32,824 - INFO - 변환 성공: DIW-003998-이시언.hwp -> DIW-003998-이시언.hml
+2026-01-28 18:03:33,266 - INFO - 변환 성공: DIW-003999-정지윤.hwp -> DIW-003999-정지윤.hml
+2026-01-28 18:03:33,568 - INFO - 변환 성공: DIW-004000-조예담.hwp -> DIW-004000-조예담.hml
+2026-01-28 18:03:33,936 - INFO - 변환 성공: DIW-004016-설현.hwp -> DIW-004016-설현.hml
+2026-01-28 18:03:34,488 - INFO - 변환 성공: DIW-004017-임수지.hwp -> DIW-004017-임수지.hml
+2026-01-28 18:03:35,065 - INFO - 변환 성공: DIW-004068-김지유.hwp -> DIW-004068-김지유.hml
+2026-01-28 18:03:35,618 - INFO - 변환 성공: DIW-004069-김태건.hwp -> DIW-004069-김태건.hml
+2026-01-28 18:03:36,184 - INFO - 변환 성공: DIW-004070-김시현.hwp -> DIW-004070-김시현.hml
+2026-01-28 18:03:36,724 - INFO - 변환 성공: DIW-004071-권소이.hwp -> DIW-004071-권소이.hml
+2026-01-28 18:03:37,265 - INFO - 변환 성공: DIW-004072-양유준.hwp -> DIW-004072-양유준.hml
+2026-01-28 18:03:37,806 - INFO - 변환 성공: DIW-004073-김유림.hwp -> DIW-004073-김유림.hml
+2026-01-28 18:03:38,366 - INFO - 변환 성공: DIW-004074-전하율.hwp -> DIW-004074-전하율.hml
+2026-01-28 18:03:38,923 - INFO - 변환 성공: DIW-004078-조상우.hwp -> DIW-004078-조상우.hml
+2026-01-28 18:03:39,468 - INFO - 변환 성공: DIW-004087-유예주.hwp -> DIW-004087-유예주.hml
+2026-01-28 18:03:39,932 - INFO - 변환 성공: DIW-004088-이다솜.hwp -> DIW-004088-이다솜.hml
+2026-01-28 18:03:40,243 - INFO - 변환 성공: DIW-004089-최주안.hwp -> DIW-004089-최주안.hml
+2026-01-28 18:03:40,535 - INFO - 변환 성공: DIW-004090-한채윤.hwp -> DIW-004090-한채윤.hml
+2026-01-28 18:03:40,926 - INFO - 변환 성공: DIW-004091-최지원.hwp -> DIW-004091-최지원.hml
+2026-01-28 18:03:41,522 - INFO - 변환 성공: DIW-004118-신채원.hwp -> DIW-004118-신채원.hml
+2026-01-28 18:03:41,907 - INFO - 변환 성공: DIW-004200-임서윤.hwp -> DIW-004200-임서윤.hml
+2026-01-28 18:03:42,445 - INFO - 변환 성공: DIW-004201-은지윤.hwp -> DIW-004201-은지윤.hml
+2026-01-28 18:03:43,000 - INFO - 변환 성공: DIW-004213-김라은.hwp -> DIW-004213-김라은.hml
+2026-01-28 18:03:43,556 - INFO - 변환 성공: DIW-004227-원서윤.hwp -> DIW-004227-원서윤.hml
+2026-01-28 18:03:44,121 - INFO - 변환 성공: DIW-004228-홍서준.hwp -> DIW-004228-홍서준.hml
+2026-01-28 18:03:44,662 - INFO - 변환 성공: DIW-004287-이도영.hwp -> DIW-004287-이도영.hml
+2026-01-28 18:03:45,132 - INFO - 변환 성공: DIW-004289-백성욱.hwp -> DIW-004289-백성욱.hml
+2026-01-28 18:03:45,549 - INFO - 변환 성공: DIW-004306-정민수.hwp -> DIW-004306-정민수.hml
+2026-01-28 18:03:46,103 - INFO - 변환 성공: DIW-004307-신지훈.hwp -> DIW-004307-신지훈.hml
+2026-01-28 18:03:46,726 - INFO - 변환 성공: DIW-004365-김도연.hwp -> DIW-004365-김도연.hml
+2026-01-28 18:03:47,335 - INFO - 변환 성공: DIW-004382-김민석.hwp -> DIW-004382-김민석.hml
+2026-01-28 18:03:47,906 - INFO - 변환 성공: DIW-004383-박준희.hwp -> DIW-004383-박준희.hml
+2026-01-28 18:03:48,364 - INFO - 변환 성공: DIW-004422-유재희.hwp -> DIW-004422-유재희.hml
+2026-01-28 18:03:48,785 - INFO - 변환 성공: DIW-004459-박상현.hwp -> DIW-004459-박상현.hml
+2026-01-28 18:03:49,343 - INFO - 변환 성공: DIW-004462-한지연.hwp -> DIW-004462-한지연.hml
+2026-01-28 18:03:49,806 - INFO - 변환 성공: DIW-004471-임예나.hwp -> DIW-004471-임예나.hml
+2026-01-28 18:03:50,192 - INFO - 변환 성공: DIW-004481-송라윤.hwp -> DIW-004481-송라윤.hml
+2026-01-28 18:03:50,722 - INFO - 변환 성공: DIW-004495-김서연.hwp -> DIW-004495-김서연.hml
+2026-01-28 18:03:51,288 - INFO - 변환 성공: DIW-004515-전사랑.hwp -> DIW-004515-전사랑.hml
+2026-01-28 18:03:51,763 - INFO - 변환 성공: DIW-004550-김아인.hwp -> DIW-004550-김아인.hml
+2026-01-28 18:03:52,188 - INFO - 변환 성공: DIW-004679-조수빈.hwp -> DIW-004679-조수빈.hml
+2026-01-28 18:03:52,736 - INFO - 변환 성공: DIW-004680-박신우.hwp -> DIW-004680-박신우.hml
+2026-01-28 18:03:53,240 - INFO - 변환 성공: DIW-004682-유동현.hwp -> DIW-004682-유동현.hml
+2026-01-28 18:03:53,661 - INFO - 변환 성공: DIW-004695-나윤성.hwp -> DIW-004695-나윤성.hml
+2026-01-28 18:03:54,213 - INFO - 변환 성공: DIW-004794-손훤.hwp -> DIW-004794-손훤.hml
+2026-01-28 18:03:54,770 - INFO - 변환 성공: DIW-004815-이현민.hwp -> DIW-004815-이현민.hml
+2026-01-28 18:03:55,328 - INFO - 변환 성공: DIW-004817-장예린.hwp -> DIW-004817-장예린.hml
+2026-01-28 18:03:55,868 - INFO - 변환 성공: DIW-004838-임주은.hwp -> DIW-004838-임주은.hml
+2026-01-28 18:03:56,504 - INFO - 변환 성공: DIW-004840-정하연.hwp -> DIW-004840-정하연.hml
+2026-01-28 18:03:57,036 - INFO - 변환 성공: DIW-004946-마정우.hwp -> DIW-004946-마정우.hml
+2026-01-28 18:03:57,581 - INFO - 변환 성공: DIW-005007-오진우.hwp -> DIW-005007-오진우.hml
+2026-01-28 18:03:58,130 - INFO - 변환 성공: DIW-005039-김지유.hwp -> DIW-005039-김지유.hml
+2026-01-28 18:03:58,677 - INFO - 변환 성공: DIW-005040-김서연.hwp -> DIW-005040-김서연.hml
+2026-01-28 18:03:59,230 - INFO - 변환 성공: DIW-005041-박예빈.hwp -> DIW-005041-박예빈.hml
+2026-01-28 18:03:59,770 - INFO - 변환 성공: DIW-005042-김우빈.hwp -> DIW-005042-김우빈.hml
+2026-01-28 18:04:00,313 - INFO - 변환 성공: DIW-005043-송채이.hwp -> DIW-005043-송채이.hml
+2026-01-28 18:04:00,730 - INFO - 변환 성공: DIW-005047-신승훈.hwp -> DIW-005047-신승훈.hml
+2026-01-28 18:04:01,282 - INFO - 변환 성공: DIW-005073-김민준.hwp -> DIW-005073-김민준.hml
+2026-01-28 18:04:01,840 - INFO - 변환 성공: DIW-005077-송담영.hwp -> DIW-005077-송담영.hml
+2026-01-28 18:04:02,384 - INFO - 변환 성공: DIW-005085-김주아.hwp -> DIW-005085-김주아.hml
+2026-01-28 18:04:02,932 - INFO - 변환 성공: DIW-005087-마지혜.hwp -> DIW-005087-마지혜.hml
+2026-01-28 18:04:03,376 - INFO - 변환 성공: DIW-005092-김승후.hwp -> DIW-005092-김승후.hml
+2026-01-28 18:04:03,754 - INFO - 변환 성공: DIW-005093-정현우.hwp -> DIW-005093-정현우.hml
+2026-01-28 18:04:04,403 - INFO - 변환 성공: DIW-005095-송은서.hwp -> DIW-005095-송은서.hml
+2026-01-28 18:04:04,797 - INFO - 변환 성공: DIW-005098-김주아.hwp -> DIW-005098-김주아.hml
+2026-01-28 18:04:05,240 - INFO - 변환 성공: DIW-005099-문태모.hwp -> DIW-005099-문태모.hml
+2026-01-28 18:04:05,626 - INFO - 변환 성공: DIW-005124-정온유.hwp -> DIW-005124-정온유.hml
+2026-01-28 18:04:06,202 - INFO - 변환 성공: DIW-005142-임예나.hwp -> DIW-005142-임예나.hml
+2026-01-28 18:04:06,747 - INFO - 변환 성공: DIW-005143-권서진.hwp -> DIW-005143-권서진.hml
+2026-01-28 18:04:07,301 - INFO - 변환 성공: DIW-005144-조형근.hwp -> DIW-005144-조형근.hml
+2026-01-28 18:04:07,862 - INFO - 변환 성공: DIW-005145-서재영.hwp -> DIW-005145-서재영.hml
+2026-01-28 18:04:08,430 - INFO - 변환 성공: DIW-005147-임예은.hwp -> DIW-005147-임예은.hml
+2026-01-28 18:04:08,997 - INFO - 변환 성공: DIW-005235-한정민.hwp -> DIW-005235-한정민.hml
+2026-01-28 18:04:09,552 - INFO - 변환 성공: DIW-005326-윤유찬.hwp -> DIW-005326-윤유찬.hml
+2026-01-28 18:04:10,150 - INFO - 변환 성공: DIW-005327-박태경.hwp -> DIW-005327-박태경.hml
+2026-01-28 18:04:10,680 - INFO - 변환 성공: DIW-005328-박수진.hwp -> DIW-005328-박수진.hml
+2026-01-28 18:04:11,237 - INFO - 변환 성공: DIW-005329-하도훈.hwp -> DIW-005329-하도훈.hml
+2026-01-28 18:04:11,795 - INFO - 변환 성공: DIW-005330-신민준.hwp -> DIW-005330-신민준.hml
+2026-01-28 18:04:12,347 - INFO - 변환 성공: DIW-005337-한재현.hwp -> DIW-005337-한재현.hml
+2026-01-28 18:04:12,928 - INFO - 변환 성공: DIW-005338-김찬율.hwp -> DIW-005338-김찬율.hml
+2026-01-28 18:04:13,474 - INFO - 변환 성공: DIW-005339-구민성.hwp -> DIW-005339-구민성.hml
+2026-01-28 18:04:14,006 - INFO - 변환 성공: DIW-005340-김은솔.hwp -> DIW-005340-김은솔.hml
+2026-01-28 18:04:14,565 - INFO - 변환 성공: DIW-005341-김성훈.hwp -> DIW-005341-김성훈.hml
+2026-01-28 18:04:15,166 - INFO - 변환 성공: DIW-005342-서주호.hwp -> DIW-005342-서주호.hml
+2026-01-28 18:04:15,757 - INFO - 변환 성공: DIW-005343-김은찬.hwp -> DIW-005343-김은찬.hml
+2026-01-28 18:04:16,320 - INFO - 변환 성공: DIW-005348-강민기.hwp -> DIW-005348-강민기.hml
+2026-01-28 18:04:16,877 - INFO - 변환 성공: DIW-005349-김유나.hwp -> DIW-005349-김유나.hml
+2026-01-28 18:04:17,347 - INFO - 변환 성공: DIW-005353-이은주.hwp -> DIW-005353-이은주.hml
+2026-01-28 18:04:17,762 - INFO - 변환 성공: DIW-005354-김태윤.hwp -> DIW-005354-김태윤.hml
+2026-01-28 18:04:18,380 - INFO - 변환 성공: DIW-005355-김예나.hwp -> DIW-005355-김예나.hml
+2026-01-28 18:04:18,959 - INFO - 변환 성공: DIW-005356-김유희.hwp -> DIW-005356-김유희.hml
+2026-01-28 18:04:19,504 - INFO - 변환 성공: DIW-005374-이소민.hwp -> DIW-005374-이소민.hml
+2026-01-28 18:04:20,032 - INFO - 변환 성공: DIW-005375-이효빈.hwp -> DIW-005375-이효빈.hml
+2026-01-28 18:04:20,737 - INFO - 변환 성공: DIW-005453-서소이.hwp -> DIW-005453-서소이.hml
+2026-01-28 18:04:21,190 - INFO - 변환 성공: DIW-005454-조하은.hwp -> DIW-005454-조하은.hml
+2026-01-28 18:04:21,599 - INFO - 변환 성공: DIW-005455-고서현.hwp -> DIW-005455-고서현.hml
+2026-01-28 18:04:21,984 - INFO - 변환 성공: DIW-005456-황가람.hwp -> DIW-005456-황가람.hml
+2026-01-28 18:04:22,353 - INFO - 변환 성공: DIW-005481-김다경.hwp -> DIW-005481-김다경.hml
+2026-01-28 18:04:22,909 - INFO - 변환 성공: DIW-005482-김하라.hwp -> DIW-005482-김하라.hml
+2026-01-28 18:04:23,458 - INFO - 변환 성공: DIW-005483-임지은.hwp -> DIW-005483-임지은.hml
+2026-01-28 18:04:24,011 - INFO - 변환 성공: DIW-005499-김세연.hwp -> DIW-005499-김세연.hml
+2026-01-28 18:04:24,569 - INFO - 변환 성공: DIW-005518-최연서.hwp -> DIW-005518-최연서.hml
+2026-01-28 18:04:25,211 - INFO - 변환 성공: DIW-005554-남슬아.hwp -> DIW-005554-남슬아.hml
+2026-01-28 18:04:25,674 - INFO - 변환 성공: DIW-005555-이유준.hwp -> DIW-005555-이유준.hml
+2026-01-28 18:04:26,111 - INFO - 변환 성공: DIW-005579-박시연.hwp -> DIW-005579-박시연.hml
+2026-01-28 18:04:26,663 - INFO - 변환 성공: DIW-005581-신유경.hwp -> DIW-005581-신유경.hml
+2026-01-28 18:04:27,210 - INFO - 변환 성공: DIW-005582-윤시우.hwp -> DIW-005582-윤시우.hml
+2026-01-28 18:04:27,751 - INFO - 변환 성공: DIW-005583-김시은.hwp -> DIW-005583-김시은.hml
+2026-01-28 18:04:28,301 - INFO - 변환 성공: DIW-005584-허재인.hwp -> DIW-005584-허재인.hml
+2026-01-28 18:04:28,866 - INFO - 변환 성공: DIW-005585-박서진.hwp -> DIW-005585-박서진.hml
+2026-01-28 18:04:29,424 - INFO - 변환 성공: DIW-005588-김영훈.hwp -> DIW-005588-김영훈.hml
+2026-01-28 18:04:29,997 - INFO - 변환 성공: DIW-005619-이한주.hwp -> DIW-005619-이한주.hml
+2026-01-28 18:04:30,538 - INFO - 변환 성공: DIW-005639-양유은.hwp -> DIW-005639-양유은.hml
+2026-01-28 18:04:31,088 - INFO - 변환 성공: DIW-005641-이나원.hwp -> DIW-005641-이나원.hml
+2026-01-28 18:04:31,777 - INFO - 변환 성공: DIW-005675-조원솔.hwp -> DIW-005675-조원솔.hml
+2026-01-28 18:04:32,308 - INFO - 변환 성공: DIW-005680-김서윤.hwp -> DIW-005680-김서윤.hml
+2026-01-28 18:04:32,865 - INFO - 변환 성공: DIW-005687-정선효.hwp -> DIW-005687-정선효.hml
+2026-01-28 18:04:33,142 - INFO - 변환 성공: DIW-005698-김규호.hwp -> DIW-005698-김규호.hml
+2026-01-28 18:04:33,443 - INFO - 변환 성공: DIW-005699-이하진.hwp -> DIW-005699-이하진.hml
+2026-01-28 18:04:33,730 - INFO - 변환 성공: DIW-005700-박지율.hwp -> DIW-005700-박지율.hml
+2026-01-28 18:04:34,101 - INFO - 변환 성공: DIW-005773-전시윤.hwp -> DIW-005773-전시윤.hml
+2026-01-28 18:04:34,495 - INFO - 변환 성공: DIW-005775-황선아.hwp -> DIW-005775-황선아.hml
+2026-01-28 18:04:35,036 - INFO - 변환 성공: DIW-005818-김자호.hwp -> DIW-005818-김자호.hml
+2026-01-28 18:04:35,593 - INFO - 변환 성공: DIW-005819-강서연.hwp -> DIW-005819-강서연.hml
+2026-01-28 18:04:36,050 - INFO - 변환 성공: DIW-005831-정다율.hwp -> DIW-005831-정다율.hml
+2026-01-28 18:04:36,462 - INFO - 변환 성공: DIW-005832-김나연.hwp -> DIW-005832-김나연.hml
+2026-01-28 18:04:37,027 - INFO - 변환 성공: DIW-005833-이준이.hwp -> DIW-005833-이준이.hml
+2026-01-28 18:04:37,590 - INFO - 변환 성공: DIW-005834-장지아.hwp -> DIW-005834-장지아.hml
+2026-01-28 18:04:38,143 - INFO - 변환 성공: DIW-005835-이시유.hwp -> DIW-005835-이시유.hml
+2026-01-28 18:04:38,705 - INFO - 변환 성공: DIW-005837-성환.hwp -> DIW-005837-성환.hml
+2026-01-28 18:04:39,249 - INFO - 변환 성공: DIW-005889-이도현.hwp -> DIW-005889-이도현.hml
+2026-01-28 18:04:39,810 - INFO - 변환 성공: DIW-005909-박서연.hwp -> DIW-005909-박서연.hml
+2026-01-28 18:04:40,300 - INFO - 변환 성공: DIW-005933-민효주.hwp -> DIW-005933-민효주.hml
+2026-01-28 18:04:40,506 - INFO - 변환 성공: DIW-005934-박라온.hwp -> DIW-005934-박라온.hml
+2026-01-28 18:04:40,892 - INFO - 변환 성공: DIW-005935-손민서.hwp -> DIW-005935-손민서.hml
+2026-01-28 18:04:41,380 - INFO - 변환 성공: DIW-005936-김기영.hwp -> DIW-005936-김기영.hml
+2026-01-28 18:04:41,801 - INFO - 변환 성공: DIW-005937-김시연.hwp -> DIW-005937-김시연.hml
+2026-01-28 18:04:42,297 - INFO - 변환 성공: DIW-005938-성시후.hwp -> DIW-005938-성시후.hml
+2026-01-28 18:04:42,724 - INFO - 변환 성공: DIW-005939-이주안.hwp -> DIW-005939-이주안.hml
+2026-01-28 18:04:43,286 - INFO - 변환 성공: DIW-005940-전진우.hwp -> DIW-005940-전진우.hml
+2026-01-28 18:04:43,819 - INFO - 변환 성공: DIW-005941-한주아.hwp -> DIW-005941-한주아.hml
+2026-01-28 18:04:44,235 - INFO - 변환 성공: DIW-005942-정재완.hwp -> DIW-005942-정재완.hml
+2026-01-28 18:04:44,744 - INFO - 변환 성공: DIW-005943-박민찬.hwp -> DIW-005943-박민찬.hml
+2026-01-28 18:04:45,163 - INFO - 변환 성공: DIW-005944-신영재.hwp -> DIW-005944-신영재.hml
+2026-01-28 18:04:45,633 - INFO - 변환 성공: DIW-005945-이지유.hwp -> DIW-005945-이지유.hml
+2026-01-28 18:04:45,950 - INFO - 변환 성공: DIW-005946-김지한.hwp -> DIW-005946-김지한.hml
+2026-01-28 18:04:46,238 - INFO - 변환 성공: DIW-005947-김도균.hwp -> DIW-005947-김도균.hml
+2026-01-28 18:04:46,637 - INFO - 변환 성공: DIW-005948-임예윤.hwp -> DIW-005948-임예윤.hml
+2026-01-28 18:04:47,205 - INFO - 변환 성공: DIW-005949-신주환.hwp -> DIW-005949-신주환.hml
+2026-01-28 18:04:47,681 - INFO - 변환 성공: DIW-005950-이은설.hwp -> DIW-005950-이은설.hml
+2026-01-28 18:04:48,117 - INFO - 변환 성공: DIW-005951-전가은.hwp -> DIW-005951-전가은.hml
+2026-01-28 18:04:48,425 - INFO - 변환 성공: DIW-005952-양서준.hwp -> DIW-005952-양서준.hml
+2026-01-28 18:04:48,723 - INFO - 변환 성공: DIW-005953-김지후.hwp -> DIW-005953-김지후.hml
+2026-01-28 18:04:49,127 - INFO - 변환 성공: DIW-005954-임시현.hwp -> DIW-005954-임시현.hml
+2026-01-28 18:04:49,691 - INFO - 변환 성공: DIW-005955-유라겸.hwp -> DIW-005955-유라겸.hml
+2026-01-28 18:04:50,275 - INFO - 변환 성공: DIW-005956-김세아.hwp -> DIW-005956-김세아.hml
+2026-01-28 18:04:50,904 - INFO - 변환 성공: DIW-006026-여현진.hwp -> DIW-006026-여현진.hml
+2026-01-28 18:04:51,447 - INFO - 변환 성공: DIW-006029-노은율.hwp -> DIW-006029-노은율.hml
+2026-01-28 18:04:52,008 - INFO - 변환 성공: DIW-006031-조혜민.hwp -> DIW-006031-조혜민.hml
+2026-01-28 18:04:52,558 - INFO - 변환 성공: DIW-006037-주우빈.hwp -> DIW-006037-주우빈.hml
+2026-01-28 18:04:53,203 - INFO - 변환 성공: DIW-006038-강가현.hwp -> DIW-006038-강가현.hml
+2026-01-28 18:04:53,745 - INFO - 변환 성공: DIW-006039-이승언.hwp -> DIW-006039-이승언.hml
+2026-01-28 18:04:54,307 - INFO - 변환 성공: DIW-006041-김아인.hwp -> DIW-006041-김아인.hml
+2026-01-28 18:04:54,859 - INFO - 변환 성공: DIW-006042-김도윤.hwp -> DIW-006042-김도윤.hml
+2026-01-28 18:04:55,443 - INFO - 변환 성공: DIW-006043-정시목.hwp -> DIW-006043-정시목.hml
+2026-01-28 18:04:56,005 - INFO - 변환 성공: DIW-006044-정건웅.hwp -> DIW-006044-정건웅.hml
+2026-01-28 18:04:56,547 - INFO - 변환 성공: DIW-006049-김려송.hwp -> DIW-006049-김려송.hml
+2026-01-28 18:04:57,097 - INFO - 변환 성공: DIW-006052-김안나.hwp -> DIW-006052-김안나.hml
+2026-01-28 18:04:57,679 - INFO - 변환 성공: DIW-006060-김나연.hwp -> DIW-006060-김나연.hml
+2026-01-28 18:04:58,225 - INFO - 변환 성공: DIW-006127-권율.hwp -> DIW-006127-권율.hml
+2026-01-28 18:04:58,996 - INFO - 변환 성공: DIW-006128-허유라.hwp -> DIW-006128-허유라.hml
+2026-01-28 18:04:59,527 - INFO - 변환 성공: DIW-006129-정성연.hwp -> DIW-006129-정성연.hml
+2026-01-28 18:04:59,998 - INFO - 변환 성공: DIW-006130-신윤우.hwp -> DIW-006130-신윤우.hml
+2026-01-28 18:05:00,329 - INFO - 변환 성공: DIW-006132-정서율.hwp -> DIW-006132-정서율.hml
+2026-01-28 18:05:00,718 - INFO - 변환 성공: DIW-006133-임지유.hwp -> DIW-006133-임지유.hml
+2026-01-28 18:05:01,255 - INFO - 변환 성공: DIW-006145-백준서.hwp -> DIW-006145-백준서.hml
+2026-01-28 18:05:01,734 - INFO - 변환 성공: DIW-006165-이용욱.hwp -> DIW-006165-이용욱.hml
+2026-01-28 18:05:02,148 - INFO - 변환 성공: DIW-006166-김민성.hwp -> DIW-006166-김민성.hml
+2026-01-28 18:05:02,705 - INFO - 변환 성공: DIW-006169-유시영.hwp -> DIW-006169-유시영.hml
+2026-01-28 18:05:03,248 - INFO - 변환 성공: DIW-006170-정민형.hwp -> DIW-006170-정민형.hml
+2026-01-28 18:05:03,816 - INFO - 변환 성공: DIW-006171-손수빈.hwp -> DIW-006171-손수빈.hml
+2026-01-28 18:05:04,355 - INFO - 변환 성공: DIW-006172-김시우.hwp -> DIW-006172-김시우.hml
+2026-01-28 18:05:04,896 - INFO - 변환 성공: DIW-006176-김서준.hwp -> DIW-006176-김서준.hml
+2026-01-28 18:05:05,455 - INFO - 변환 성공: DIW-006177-조엘.hwp -> DIW-006177-조엘.hml
+2026-01-28 18:05:06,011 - INFO - 변환 성공: DIW-006178-김태엽.hwp -> DIW-006178-김태엽.hml
+2026-01-28 18:05:06,559 - INFO - 변환 성공: DIW-006196-오연서.hwp -> DIW-006196-오연서.hml
+2026-01-28 18:05:07,150 - INFO - 변환 성공: DIW-006198-이주한.hwp -> DIW-006198-이주한.hml
+2026-01-28 18:05:07,677 - INFO - 변환 성공: DIW-006218-황예영.hwp -> DIW-006218-황예영.hml
+2026-01-28 18:05:08,217 - INFO - 변환 성공: DIW-006219-황수민.hwp -> DIW-006219-황수민.hml
+2026-01-28 18:05:08,750 - INFO - 변환 성공: DIW-006240-지서영.hwp -> DIW-006240-지서영.hml
+2026-01-28 18:05:09,317 - INFO - 변환 성공: DIW-006243-이이안.hwp -> DIW-006243-이이안.hml
+2026-01-28 18:05:09,916 - INFO - 변환 성공: DIW-006244-유은솔.hwp -> DIW-006244-유은솔.hml
+2026-01-28 18:05:10,371 - INFO - 변환 성공: DIW-006249-김민정.hwp -> DIW-006249-김민정.hml
+2026-01-28 18:05:10,768 - INFO - 변환 성공: DIW-006270-진우영.hwp -> DIW-006270-진우영.hml
+2026-01-28 18:05:11,345 - INFO - 변환 성공: DIW-006281-권재훈.hwp -> DIW-006281-권재훈.hml
+2026-01-28 18:05:11,834 - INFO - 변환 성공: DIW-006282-한준휘.hwp -> DIW-006282-한준휘.hml
+2026-01-28 18:05:12,249 - INFO - 변환 성공: DIW-006303-박유수.hwp -> DIW-006303-박유수.hml
+2026-01-28 18:05:12,794 - INFO - 변환 성공: DIW-006313-강세영.hwp -> DIW-006313-강세영.hml
+2026-01-28 18:05:13,358 - INFO - 변환 성공: DIW-006333-이시훈.hwp -> DIW-006333-이시훈.hml
+2026-01-28 18:05:13,907 - INFO - 변환 성공: DIW-006346-김지우.hwp -> DIW-006346-김지우.hml
+2026-01-28 18:05:14,439 - INFO - 변환 성공: DIW-006347-차해나.hwp -> DIW-006347-차해나.hml
+2026-01-28 18:05:14,984 - INFO - 변환 성공: DIW-006397-김우현.hwp -> DIW-006397-김우현.hml
+2026-01-28 18:05:15,463 - INFO - 변환 성공: DIW-006407-주윤우.hwp -> DIW-006407-주윤우.hml
+2026-01-28 18:05:15,878 - INFO - 변환 성공: DIW-006408-정승빈.hwp -> DIW-006408-정승빈.hml
+2026-01-28 18:05:16,435 - INFO - 변환 성공: DIW-006409-박시연.hwp -> DIW-006409-박시연.hml
+2026-01-28 18:05:16,982 - INFO - 변환 성공: DIW-006435-서유건.hwp -> DIW-006435-서유건.hml
+2026-01-28 18:05:17,605 - INFO - 변환 성공: DIW-006455-제후.hwp -> DIW-006455-제후.hml
+2026-01-28 18:05:18,148 - INFO - 변환 성공: DIW-006456-홍정빈.hwp -> DIW-006456-홍정빈.hml
+2026-01-28 18:05:18,705 - INFO - 변환 성공: DIW-006457-정하담.hwp -> DIW-006457-정하담.hml
+2026-01-28 18:05:19,388 - INFO - 변환 성공: DIW-006458-박서현.hwp -> DIW-006458-박서현.hml
+2026-01-28 18:05:19,778 - INFO - 변환 성공: DIW-006468-김예희.hwp -> DIW-006468-김예희.hml
+2026-01-28 18:05:20,336 - INFO - 변환 성공: DIW-006508-김지호.hwp -> DIW-006508-김지호.hml
+2026-01-28 18:05:20,894 - INFO - 변환 성공: DIW-006509-박수빈.hwp -> DIW-006509-박수빈.hml
+2026-01-28 18:05:21,446 - INFO - 변환 성공: DIW-006510-진시안.hwp -> DIW-006510-진시안.hml
+2026-01-28 18:05:22,046 - INFO - 변환 성공: DIW-006528-김유준.hwp -> DIW-006528-김유준.hml
+2026-01-28 18:05:22,638 - INFO - 변환 성공: DIW-006562-김채아.hwp -> DIW-006562-김채아.hml
+2026-01-28 18:05:23,174 - INFO - 변환 성공: DIW-006612-임시희.hwp -> DIW-006612-임시희.hml
+2026-01-28 18:05:23,543 - INFO - 변환 성공: DIW-006622-서수연.hwp -> DIW-006622-서수연.hml
+2026-01-28 18:05:23,943 - INFO - 변환 성공: DIW-006623-김시온.hwp -> DIW-006623-김시온.hml
+2026-01-28 18:05:24,454 - INFO - 변환 성공: DIW-006624-김주영.hwp -> DIW-006624-김주영.hml
+2026-01-28 18:05:24,916 - INFO - 변환 성공: DIW-006625-김선우.hwp -> DIW-006625-김선우.hml
+2026-01-28 18:05:25,447 - INFO - 변환 성공: DIW-006626-김윤희.hwp -> DIW-006626-김윤희.hml
+2026-01-28 18:05:25,996 - INFO - 변환 성공: DIW-006628-이가은.hwp -> DIW-006628-이가은.hml
+2026-01-28 18:05:26,448 - INFO - 변환 성공: DIW-006629-박유진.hwp -> DIW-006629-박유진.hml
+2026-01-28 18:05:26,826 - INFO - 변환 성공: DIW-006630-임예슬.hwp -> DIW-006630-임예슬.hml
+2026-01-28 18:05:27,398 - INFO - 변환 성공: DIW-006631-김지환.hwp -> DIW-006631-김지환.hml
+2026-01-28 18:05:27,955 - INFO - 변환 성공: DIW-006699-구도윤.hwp -> DIW-006699-구도윤.hml
+2026-01-28 18:05:28,524 - INFO - 변환 성공: DIW-006701-양다혜.hwp -> DIW-006701-양다혜.hml
+2026-01-28 18:05:29,086 - INFO - 변환 성공: DIW-006702-황은재.hwp -> DIW-006702-황은재.hml
+2026-01-28 18:05:29,659 - INFO - 변환 성공: DIW-006705-최윤.hwp -> DIW-006705-최윤.hml
+2026-01-28 18:05:30,260 - INFO - 변환 성공: DIW-006707-유재윤.hwp -> DIW-006707-유재윤.hml
+2026-01-28 18:05:30,811 - INFO - 변환 성공: DIW-006764-박채은.hwp -> DIW-006764-박채은.hml
+2026-01-28 18:05:31,360 - INFO - 변환 성공: DIW-006766-서채은.hwp -> DIW-006766-서채은.hml
+2026-01-28 18:05:31,894 - INFO - 변환 성공: DIW-006777-경예진.hwp -> DIW-006777-경예진.hml
+2026-01-28 18:05:32,438 - INFO - 변환 성공: DIW-006806-김시원.hwp -> DIW-006806-김시원.hml
+2026-01-28 18:05:33,030 - INFO - 변환 성공: DIW-006811-김하윤.hwp -> DIW-006811-김하윤.hml
+2026-01-28 18:05:33,574 - INFO - 변환 성공: DIW-006816-이보예.hwp -> DIW-006816-이보예.hml
+2026-01-28 18:05:34,126 - INFO - 변환 성공: DIW-006817-박채아.hwp -> DIW-006817-박채아.hml
+2026-01-28 18:05:34,588 - INFO - 변환 성공: DIW-006823-조건호.hwp -> DIW-006823-조건호.hml
+2026-01-28 18:05:35,063 - INFO - 변환 성공: DIW-006830-신해인.hwp -> DIW-006830-신해인.hml
+2026-01-28 18:05:35,514 - INFO - 변환 성공: DIW-006844-김현서.hwp -> DIW-006844-김현서.hml
+2026-01-28 18:05:35,955 - INFO - 변환 성공: DIW-007488-박지완.hwp -> DIW-007488-박지완.hml
+2026-01-28 18:05:36,517 - INFO - 변환 성공: DIW-007545-구혜린.hwp -> DIW-007545-구혜린.hml
+2026-01-28 18:05:37,068 - INFO - 변환 성공: DIW-007548-이현지.hwp -> DIW-007548-이현지.hml
+2026-01-28 18:05:37,613 - INFO - 변환 성공: DIW-007555-장진욱.hwp -> DIW-007555-장진욱.hml
+2026-01-28 18:05:38,178 - INFO - 변환 성공: DIW-007563-박상우.hwp -> DIW-007563-박상우.hml
+2026-01-28 18:05:38,731 - INFO - 변환 성공: DIW-007587-유하준.hwp -> DIW-007587-유하준.hml
+2026-01-28 18:05:39,299 - INFO - 변환 성공: DIW-007591-임수현.hwp -> DIW-007591-임수현.hml
+2026-01-28 18:05:40,017 - INFO - 변환 성공: DIW-007592-제희원.hwp -> DIW-007592-제희원.hml
+2026-01-28 18:05:40,466 - INFO - 변환 성공: DIW-007595-김세헌.hwp -> DIW-007595-김세헌.hml
+2026-01-28 18:05:40,867 - INFO - 변환 성공: DIW-007602-김정민.hwp -> DIW-007602-김정민.hml
+2026-01-28 18:05:41,443 - INFO - 변환 성공: DIW-007604-송지원.hwp -> DIW-007604-송지원.hml
+2026-01-28 18:05:41,982 - INFO - 변환 성공: DIW-007639-박담.hwp -> DIW-007639-박담.hml
+2026-01-28 18:05:42,547 - INFO - 변환 성공: DIW-007640-신지후.hwp -> DIW-007640-신지후.hml
+2026-01-28 18:05:43,017 - INFO - 변환 성공: DIW-007641-박세은.hwp -> DIW-007641-박세은.hml
+2026-01-28 18:05:43,450 - INFO - 변환 성공: DIW-007692-양가인.hwp -> DIW-007692-양가인.hml
+2026-01-28 18:05:44,003 - INFO - 변환 성공: DIW-007715-박서호.hwp -> DIW-007715-박서호.hml
+2026-01-28 18:05:44,453 - INFO - 변환 성공: DIW-007723-송지오.hwp -> DIW-007723-송지오.hml
+2026-01-28 18:05:45,031 - INFO - 변환 성공: DIW-007724-김서빈.hwp -> DIW-007724-김서빈.hml
+2026-01-28 18:05:45,582 - INFO - 변환 성공: DIW-007776-박윤후.hwp -> DIW-007776-박윤후.hml
+2026-01-28 18:05:46,139 - INFO - 변환 성공: DIW-007777-노아인.hwp -> DIW-007777-노아인.hml
+2026-01-28 18:05:46,706 - INFO - 변환 성공: DIW-007778-정하린.hwp -> DIW-007778-정하린.hml
+2026-01-28 18:05:47,233 - INFO - 변환 성공: DIW-007779-이윤성.hwp -> DIW-007779-이윤성.hml
+2026-01-28 18:05:47,764 - INFO - 변환 성공: DIW-007780-조수아.hwp -> DIW-007780-조수아.hml
+2026-01-28 18:05:48,302 - INFO - 변환 성공: DIW-007781-이주희.hwp -> DIW-007781-이주희.hml
+2026-01-28 18:05:48,772 - INFO - 변환 성공: DIW-007821-이시호.hwp -> DIW-007821-이시호.hml
+2026-01-28 18:05:49,149 - INFO - 변환 성공: DIW-007823-김태연.hwp -> DIW-007823-김태연.hml
+2026-01-28 18:05:49,588 - INFO - 변환 성공: DIW-007833-한지우.hwp -> DIW-007833-한지우.hml
+2026-01-28 18:05:50,157 - INFO - 변환 성공: 워드(한글)-005383-박규원.hwp -> 워드(한글)-005383-박규원.hml
+2026-01-28 18:05:50,728 - INFO - 변환 성공: 워드(한글)-005384-윤하은.hwp -> 워드(한글)-005384-윤하은.hml
+2026-01-28 18:05:51,328 - INFO - 변환 성공: DIW_2601C.hwpx -> DIW_2601C.hml
+2026-01-28 18:05:51,711 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2601\C\DIW -> D:\project\HWP\HWP-Scoring\output\2601\C\DIW
+2026-01-28 18:05:52,212 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2601\D\DIW -> D:\project\HWP\HWP-Scoring\output\2601\D\DIW
+2026-01-28 18:05:53,471 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2601\D\DIW -> D:\project\HWP\HWP-Scoring\output\2601\D\DIW
+2026-01-28 18:05:53,972 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2601\E\DIW -> D:\project\HWP\HWP-Scoring\output\2601\E\DIW
+2026-01-28 18:05:55,232 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2601\E\DIW -> D:\project\HWP\HWP-Scoring\output\2601\E\DIW
+2026-01-29 17:25:46,791 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2601 -> D:\project\HWP\HWP-Scoring\output\2601
+2026-01-29 17:25:50,844 - INFO - 변환 성공: DIW-005764-박지홍.hwp -> DIW-005764-박지홍.hml
+2026-01-29 17:25:50,882 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2601 -> D:\project\HWP\HWP-Scoring\output\2601
+2026-01-29 17:28:46,281 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2601 -> D:\project\HWP\HWP-Scoring\output\2601
+2026-01-29 17:29:16,989 - INFO - 변환 성공: DIW-005764-박지홍.hwp -> DIW-005764-박지홍.hml
+2026-01-29 17:29:17,021 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2601 -> D:\project\HWP\HWP-Scoring\output\2601
+2026-01-29 17:29:48,816 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2601 -> D:\project\HWP\HWP-Scoring\output\2601
+2026-01-29 17:29:52,636 - INFO - 변환 성공: DIW-005764-박지홍.hwp -> DIW-005764-박지홍.hml
+2026-01-29 17:29:52,670 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2601 -> D:\project\HWP\HWP-Scoring\output\2601
+2026-01-29 17:31:27,771 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2601 -> D:\project\HWP\HWP-Scoring\output\2601
+2026-01-29 17:31:30,759 - INFO - 변환 성공: DIW-005764.hwp -> DIW-005764.hml
+2026-01-29 17:31:31,127 - INFO - 변환 성공: DIW-005764-박지홍.hwpx -> DIW-005764-박지홍.hml
+2026-01-29 17:31:31,531 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2601 -> D:\project\HWP\HWP-Scoring\output\2601
+2026-02-11 15:47:26,489 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2622\A\DIW -> D:\project\HWP\HWP-Scoring\output\2622\A\DIW
+2026-02-11 15:47:28,769 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2622\A\DIW -> D:\project\HWP\HWP-Scoring\output\2622\A\DIW
+2026-02-11 15:47:29,270 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2622\B\DIW -> D:\project\HWP\HWP-Scoring\output\2622\B\DIW
+2026-02-11 15:47:30,420 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2622\B\DIW -> D:\project\HWP\HWP-Scoring\output\2622\B\DIW
+2026-02-11 15:47:30,920 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2622\C\DIW -> D:\project\HWP\HWP-Scoring\output\2622\C\DIW
+2026-02-11 15:47:32,130 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2622\C\DIW -> D:\project\HWP\HWP-Scoring\output\2622\C\DIW
+2026-02-11 15:47:32,631 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2622\D\DIW -> D:\project\HWP\HWP-Scoring\output\2622\D\DIW
+2026-02-11 15:47:33,854 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2622\D\DIW -> D:\project\HWP\HWP-Scoring\output\2622\D\DIW
+2026-02-11 15:47:34,354 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2622\E\DIW -> D:\project\HWP\HWP-Scoring\output\2622\E\DIW
+2026-02-11 15:47:35,544 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2622\E\DIW -> D:\project\HWP\HWP-Scoring\output\2622\E\DIW
+2026-02-11 15:48:27,560 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2622\A\DIW -> D:\project\HWP\HWP-Scoring\output\2622\A\DIW
+2026-02-11 15:48:31,790 - INFO - 변환 성공: DIW_2622A.hwpx -> DIW_2622A.hml
+2026-02-11 15:48:32,296 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2622\A\DIW -> D:\project\HWP\HWP-Scoring\output\2622\A\DIW
+2026-02-11 15:48:32,797 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2622\B\DIW -> D:\project\HWP\HWP-Scoring\output\2622\B\DIW
+2026-02-11 15:48:34,899 - INFO - 변환 성공: DIW_2622B.hwpx -> DIW_2622B.hml
+2026-02-11 15:48:35,309 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2622\B\DIW -> D:\project\HWP\HWP-Scoring\output\2622\B\DIW
+2026-02-11 15:48:35,810 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2622\C\DIW -> D:\project\HWP\HWP-Scoring\output\2622\C\DIW
+2026-02-11 15:48:37,956 - INFO - 변환 성공: DIW_2622C.hwpx -> DIW_2622C.hml
+2026-02-11 15:48:38,348 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2622\C\DIW -> D:\project\HWP\HWP-Scoring\output\2622\C\DIW
+2026-02-11 15:48:38,849 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2622\D\DIW -> D:\project\HWP\HWP-Scoring\output\2622\D\DIW
+2026-02-11 15:48:40,982 - INFO - 변환 성공: DIW_2622D.hwpx -> DIW_2622D.hml
+2026-02-11 15:48:41,380 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2622\D\DIW -> D:\project\HWP\HWP-Scoring\output\2622\D\DIW
+2026-02-11 15:48:41,881 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2622\E\DIW -> D:\project\HWP\HWP-Scoring\output\2622\E\DIW
+2026-02-11 15:48:43,085 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2622\E\DIW -> D:\project\HWP\HWP-Scoring\output\2622\E\DIW
diff --git a/score_result/260211_DIW_2622A_채점결과.xlsx b/score_result/260211_DIW_2622A_채점결과.xlsx
new file mode 100644
index 0000000..83f6f3f
Binary files /dev/null and b/score_result/260211_DIW_2622A_채점결과.xlsx differ
diff --git a/score_result/260211_DIW_2622B_채점결과.xlsx b/score_result/260211_DIW_2622B_채점결과.xlsx
new file mode 100644
index 0000000..2125a71
Binary files /dev/null and b/score_result/260211_DIW_2622B_채점결과.xlsx differ
diff --git a/score_result/260211_DIW_2622C_채점결과.xlsx b/score_result/260211_DIW_2622C_채점결과.xlsx
new file mode 100644
index 0000000..faf1b21
Binary files /dev/null and b/score_result/260211_DIW_2622C_채점결과.xlsx differ
diff --git a/score_result/260211_DIW_2622D_채점결과.xlsx b/score_result/260211_DIW_2622D_채점결과.xlsx
new file mode 100644
index 0000000..62b3f7c
Binary files /dev/null and b/score_result/260211_DIW_2622D_채점결과.xlsx differ
diff --git a/260127_DIW_2601A_채점결과.xlsx b/회차별채점자료/2601/260127_DIW_2601A_채점결과.xlsx
similarity index 100%
rename from 260127_DIW_2601A_채점결과.xlsx
rename to 회차별채점자료/2601/260127_DIW_2601A_채점결과.xlsx
diff --git a/260127_DIW_2601B_채점결과.xlsx b/회차별채점자료/2601/260127_DIW_2601B_채점결과.xlsx
similarity index 100%
rename from 260127_DIW_2601B_채점결과.xlsx
rename to 회차별채점자료/2601/260127_DIW_2601B_채점결과.xlsx
diff --git a/260127_DIW_2601C_채점결과.xlsx b/회차별채점자료/2601/260127_DIW_2601C_채점결과.xlsx
similarity index 100%
rename from 260127_DIW_2601C_채점결과.xlsx
rename to 회차별채점자료/2601/260127_DIW_2601C_채점결과.xlsx
diff --git a/회차별채점자료/2601/260129_DIW_2601A_채점결과.xlsx b/회차별채점자료/2601/260129_DIW_2601A_채점결과.xlsx
new file mode 100644
index 0000000..1b2156c
Binary files /dev/null and b/회차별채점자료/2601/260129_DIW_2601A_채점결과.xlsx differ
diff --git a/회차별채점자료/2601/260129_DIW_2601B_TEST.xlsx b/회차별채점자료/2601/260129_DIW_2601B_TEST.xlsx
new file mode 100644
index 0000000..1f2c3a9
Binary files /dev/null and b/회차별채점자료/2601/260129_DIW_2601B_TEST.xlsx differ
diff --git a/회차별채점자료/2601/260129_DIW_2601B_채점결과.xlsx b/회차별채점자료/2601/260129_DIW_2601B_채점결과.xlsx
new file mode 100644
index 0000000..25acc47
Binary files /dev/null and b/회차별채점자료/2601/260129_DIW_2601B_채점결과.xlsx differ
diff --git a/회차별채점자료/2601/260129_DIW_2601C_TEST.xlsx b/회차별채점자료/2601/260129_DIW_2601C_TEST.xlsx
new file mode 100644
index 0000000..5b083ff
Binary files /dev/null and b/회차별채점자료/2601/260129_DIW_2601C_TEST.xlsx differ
diff --git a/회차별채점자료/2601/260129_DIW_2601C_채점결과.xlsx b/회차별채점자료/2601/260129_DIW_2601C_채점결과.xlsx
new file mode 100644
index 0000000..16e869d
Binary files /dev/null and b/회차별채점자료/2601/260129_DIW_2601C_채점결과.xlsx differ
diff --git a/회차별채점자료/2601/260130_DIW_2601C_채점결과.xlsx b/회차별채점자료/2601/260130_DIW_2601C_채점결과.xlsx
new file mode 100644
index 0000000..53817f5
Binary files /dev/null and b/회차별채점자료/2601/260130_DIW_2601C_채점결과.xlsx differ
diff --git a/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) A형 문제.hwpx b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) A형 문제.hwpx
new file mode 100644
index 0000000..f32719d
Binary files /dev/null and b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) A형 문제.hwpx differ
diff --git a/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) A형 정답.hwpx b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) A형 정답.hwpx
new file mode 100644
index 0000000..4de1cd5
Binary files /dev/null and b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) A형 정답.hwpx differ
diff --git a/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) A형 채점기준표.xlsx b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) A형 채점기준표.xlsx
new file mode 100644
index 0000000..c333eb6
Binary files /dev/null and b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) A형 채점기준표.xlsx differ
diff --git a/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) B형 문제.hwpx b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) B형 문제.hwpx
new file mode 100644
index 0000000..f544165
Binary files /dev/null and b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) B형 문제.hwpx differ
diff --git a/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) B형 정답.hwpx b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) B형 정답.hwpx
new file mode 100644
index 0000000..cccd3d8
Binary files /dev/null and b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) B형 정답.hwpx differ
diff --git a/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) B형 채점기준표.xlsx b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) B형 채점기준표.xlsx
new file mode 100644
index 0000000..67ceda6
Binary files /dev/null and b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) B형 채점기준표.xlsx differ
diff --git a/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) C형 문제.hwpx b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) C형 문제.hwpx
new file mode 100644
index 0000000..9b8f847
Binary files /dev/null and b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) C형 문제.hwpx differ
diff --git a/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) C형 정답.hwpx b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) C형 정답.hwpx
new file mode 100644
index 0000000..3fc96c6
Binary files /dev/null and b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) C형 정답.hwpx differ
diff --git a/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) C형 채점기준표.xlsx b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) C형 채점기준표.xlsx
new file mode 100644
index 0000000..be6f530
Binary files /dev/null and b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) C형 채점기준표.xlsx differ
diff --git a/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) D형 문제.hwpx b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) D형 문제.hwpx
new file mode 100644
index 0000000..88c44f1
Binary files /dev/null and b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) D형 문제.hwpx differ
diff --git a/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) D형 정답.hwpx b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) D형 정답.hwpx
new file mode 100644
index 0000000..e7e8a89
Binary files /dev/null and b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) D형 정답.hwpx differ
diff --git a/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) D형 채점기준표.xlsx b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) D형 채점기준표.xlsx
new file mode 100644
index 0000000..8f47b74
Binary files /dev/null and b/회차별채점자료/2622/제2622회 디지털정보활용능력 워드프로세서(한글2022버전) D형 채점기준표.xlsx differ