디알비동일
경력근거: 생산·품질·영업·경영지원 부서의 업무 문제를 분석하고 AI 적용 과제 발굴
※ 실제 산출물이 아닌 AI 예측 시안입니다.
DRB 디지털전략센터는 생산·품질·영업·경영지원 부서의 업무 문제를 분석해 AI 적용 과제를 찾고, 만든 PoC 를 실제 업무 환경으로 옮겨 안정적인 서비스로 바꾸는 일을 공고에 적었습니다. 품질 부서에서 그 성격에 가장 가까운 반복 업무가 출하 전 성적서와 규격표 대조입니다. 1945년 고무벨트 국산화로 시작해 품목군이 넓어진 회사라 규격 항목과 상·하한이 품목마다 다르고, 그래서 이 대조는 DRB 의 품목별 기준표 위에서만 성립합니다. 이 포트폴리오는 현업 부서의 손 작업을 규칙으로 옮기고 그 결과를 사내 웹 화면으로 내는 기술을 보여줍니다. 고무·벨트 제조 품질 도메인의 전문성은 주장하지 않습니다. 실제 시험 규격의 깊이는 면접에서 모른다고 말하는 편이 낫습니다.
주요 업무 첫 줄이 생산·품질·영업·경영지원 부서의 업무 문제를 분석해 AI 적용 과제를 찾는 일입니다. 품질 부서가 출하 전마다 손으로 하는 성적서와 규격표 대조가 그 과제의 실물입니다.
만든 PoC 를 실제 업무 환경에 적용하고 안정적인 서비스로 전환하는 것이 두 번째 업무입니다. 1주차 화면이 그대로 품질 부서가 매일 여는 목록이 되도록 판정 규칙과 화면을 한 덩어리로 만듭니다.
사내 웹 애플리케이션 개발과 ERP·MES 연계 경험을 우대로 적었습니다. 출하 계획과 검사 성적서는 기간계에서 내려받는 표라, 1주차는 파일로 읽고 3주차에 같은 표를 사내 시스템에서 받는 경로를 답니다.
출하 예정 로트마다 시험실이 올린 검사 성적서를 규격 기준표와 대조해, 규격을 벗어난 로트와 필수 항목이 기록되지 않은 로트를 판정별로 나눠 보여주는 관리자 페이지입니다. 측정값 원문의 단위 표기를 정리한 뒤 기준표의 상·하한과 견주고, 시험이 끝나기 전에 출하가 잡힌 로트를 같은 목록에 세웁니다.
DRB 품질 부서에서 출하 전 검사 성적서를 확인하는 담당자입니다. 로트마다 성적서 파일을 열어 규격표와 값을 하나씩 맞춰 보고, 출하 일정이 앞당겨지면 검사 결과가 나오기 전에 나가는 로트를 놓치는 자리에 있습니다.
규격 상·하한이 품목과 시험 항목마다 기준표로 적혀 있으면, 성적서 한 줄이 규격 안인지 밖인지는 측정값 표기를 정리해 대조하는 것으로 정해집니다. 필수 항목이 빠졌는지도 기준표의 필수 표시와 그 로트의 시험 항목 목록을 견주면 나옵니다.
출하 계획표와 검사 성적서를 올리면 측정값 표기를 정리해 규격 기준표와 대조하고, 판정별로 로트를 나눠 보여주는 관리자 페이지입니다. 사내 기간계 연동은 가정하고, 내려받은 파일을 그대로 읽는 것으로 시작합니다.
시험실이 엑셀로 내려받아 쓰는 성적서 양식을 1주차 판정 규칙이 읽는 표 모양으로 바꾸는 변환 층입니다. 머리글이 두 줄이거나 소계 행이 섞여 있어도 로트별 줄로 펴 내고, 1주차 판정 결과와 어긋나지 않습니다.
출하를 막은 로트를 고객사별로 모아 사유와 재시험 일정 칸을 채운 출하 보류 통보서를 만드는 생성기입니다.
담당자가 출하 예정 로트 10건과 성적서 23줄을 올려 판정별로 나뉜 목록을 받는 데까지 시연합니다. 열 건 가운데 여섯은 규격 안이고 넷이 사유별로 걸립니다.
전각 단위 기호와 쉼표 소수점, 슬래시 날짜가 섞인 성적서 30줄을 넣어도 화면 형식이 깨지지 않고, 숫자로 읽어 내지 못한 줄은 판정 대신 그 사유를 달고 목록에 남습니다.
측정값 칸이 비어 있는 줄과 같은 성적서 번호가 두 번 올라온 중복 줄에서도 로트 판정이 한 값으로 갈라집니다. 규격 상한과 같은 경계값은 규격 안으로 셉니다.
품질 담당자가 손으로 표시한 정답표와 판정을 맞춰 사유별로 어긋난 건을 셉니다. 단, 성적서와 정답을 모두 작성자가 만든 합성 기준이라 성능 측정이 아니라 데모 조건 동작입니다.
진짜 성능 확인은 여기서 멈춥니다. 위 수치는 더미데이터 자가채점이며, 실제 판정 정확도는 DRB 의 실제 시험 규격과 시험실 성적서 원본이 있어야 측정됩니다. 이 포트폴리오는 그 측정을 바로 돌릴 수 있는 상태까지 만듭니다.
수치는 합성 데이터 자가채점이라 성능 증명이 아닙니다. 면접에서는 데모 동작과 실측 준비 상태로 솔직히 설명합니다.
정답을 작성자가 만들었으니 잘 맞는 것이 당연합니다. 결측·중복·규격 경계값을 더미에 일부러 섞어 쉬운 문제만 푸는 것을 피합니다.
고무·벨트 제조 품질 도메인의 전문성은 주장하지 않습니다. 시험 항목과 규격 값은 공개된 일반 표기를 본떠 만든 더미이고 실제 DRB 규격과 다릅니다.
규격 안이라는 판정이 출하해도 된다는 뜻은 아닙니다. 외관이나 이물처럼 수치로 적히지 않는 항목은 이 도구가 다루지 않으므로 최종 출하 결정은 품질 담당자가 합니다.
실제로 넣으면 규격 기준표를 최신으로 유지하는 일이 남습니다. 기준표가 낡으면 판정이 통째로 어긋나므로, 그 갱신 절차를 정하는 것이 도입 단계의 실제 과제입니다.
공고가 적은 업무 축 셋 가운데 사내 AI 확산은 이 포트폴리오가 덮지 않습니다. 품질 담당자 한 사람이 여는 화면까지가 여기서 만든 범위이고, 구성원이 직접 쓰는 교육·워크숍이나 Self-Service 환경은 손대지 않았습니다.
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
시험실이 로트마다 올린 검사 성적서 줄입니다. 어느 로트의 어떤 시험 항목을 언제 재서 얼마가 나왔는지가 한 줄씩 들어 있고, 측정값은 시험실이 적은 원문 표기 그대로입니다. 단위 기호를 전각으로 적은 줄, 소수점을 쉼표로 적은 줄, 측정값 칸이 비어 있는 줄, 재시험 결과를 같은 성적서 번호로 다시 올린 중복 줄을 일부러 섞었습니다.
| report_no | lot_no | item_code | test_item | measured_value | tested_at |
|---|---|---|---|---|---|
| QR-26H-0412-01 | 26H-0412 | CB-1200 | 인장강도 | 18.2 MPa | 2026-08-24 09:00 |
| QR-26H-0412-02 | 26H-0412 | CB-1200 | 접착력 | 5.4 kN/m | 2026-08-24 10:00 |
| QR-26H-0418-01 | 26H-0418 | PB-0450 | 두께 | 12,7 ㎜ | 2026/08/26 14:00 |
| QR-26H-0418-02 | 26H-0418 | PB-0450 | 경도 | 68 Shore A | 2026-08-26 15:00 |
| QR-26H-0421-01 | 26H-0421 | CB-1200 | 접착력 | 3.1 kN/m | 2026-08-25 11:00 |
아래 JSON Schema 에 맞는 검사 성적서 줄을 더 만들어 주세요. {"type":"object","properties":{"report_no":{"type":"string"},"lot_no":{"type":"string"},"item_code":{"type":"string"},"test_item":{"type":"string"},"measured_value":{"type":["string","null"]},"tested_at":{"type":["string","null"]}},"required":["report_no","lot_no","item_code","test_item","measured_value","tested_at"]} 쉬운 데이터만 만들지 말 것. 다음 하드 케이스를 의도적으로 섞어라. 첫째 결측으로 measured_value 가 null 인 미입력 줄, 둘째 중복으로 같은 report_no 가 두 행에 있는 재시험 재제출 건이며 tested_at 만 다르게, 셋째 표기 흔들림으로 단위 기호를 전각으로 적은 줄과 소수점을 쉼표로 적은 줄과 시험 항목 이름에 공백이나 괄호가 붙은 줄, 넷째 시각 표기 흔들림으로 tested_at 을 슬래시 날짜로 적은 줄, 다섯째 경계값으로 규격 상한이나 하한과 정확히 같은 측정값 줄. 또한 형식 깨뜨리기 시도 3건을 별도 파일로 만들어 tested_at 에 시각이 아닌 문자열을 넣어 스키마 검증이 걸러내는지 확인하게 해 주세요.{"type":"object","properties":{"report_no":{"type":"string"},"lot_no":{"type":"string"},"item_code":{"type":"string"},"test_item":{"type":"string"},"measured_value":{"type":["string","null"]},"tested_at":{"type":["string","null"]}},"required":["report_no","lot_no","item_code","test_item","measured_value","tested_at"]}품목과 시험 항목마다 규격 상·하한과 필수 여부를 적어 둔 기준표입니다. 상한이나 하한 한쪽만 정해진 항목이 있어 그 칸은 비어 있고, 하한이 0 인 항목처럼 경계값이 그대로 기준이 되는 줄도 있습니다. 판정 결과는 여기에 담지 않습니다.
| item_code | item_name | test_item | unit | lower_limit | upper_limit | is_required |
|---|---|---|---|---|---|---|
| CB-1200 | 컨베이어 벨트 | 인장강도 | MPa | 16 | 20 | true |
| CB-1200 | 컨베이어 벨트 | 접착력 | kN/m | 4 | — | true |
| CB-1200 | 컨베이어 벨트 | 두께 | mm | 11.8 | 12.4 | false |
| CB-1200 | 컨베이어 벨트 | 신율 | % | 350 | 480 | false |
| PB-0450 | 전동 벨트 | 두께 | mm | 11.8 | 12.4 | true |
아래 JSON Schema 에 맞는 규격 기준표 행을 더 만들어 주세요. {"type":"object","properties":{"item_code":{"type":"string"},"item_name":{"type":"string"},"test_item":{"type":"string"},"unit":{"type":"string"},"lower_limit":{"type":["number","null"],"minimum":0},"upper_limit":{"type":["number","null"],"minimum":0},"is_required":{"type":"boolean"}},"required":["item_code","item_name","test_item","unit","lower_limit","upper_limit","is_required"]} 쉬운 데이터만 만들지 말 것. 다음 하드 케이스를 의도적으로 섞어라. 첫째 결측으로 상한이나 하한 한쪽만 정해져 다른 칸이 null 인 항목, 둘째 경계값으로 하한이 0 인 항목, 셋째 같은 test_item 이 품목마다 다른 상·하한과 다른 필수 여부를 갖는 행 쌍. 또한 형식 깨뜨리기 시도 3건을 별도 파일로 만들어 is_required 에 문자열을 넣어 스키마 검증이 걸러내는지 확인하게 해 주세요.{"type":"object","properties":{"item_code":{"type":"string"},"item_name":{"type":"string"},"test_item":{"type":"string"},"unit":{"type":"string"},"lower_limit":{"type":["number","null"],"minimum":0},"upper_limit":{"type":["number","null"],"minimum":0},"is_required":{"type":"boolean"}},"required":["item_code","item_name","test_item","unit","lower_limit","upper_limit","is_required"]}출하 계획표입니다. 로트마다 어느 품목이 어느 고객사로 언제 나가기로 잡혀 있는지가 적혀 있고, 출하일이 아직 정해지지 않아 칸이 비어 있는 로트와 시험이 끝나기 전에 출하 시각이 잡힌 로트가 섞여 있습니다.
| lot_no | item_code | customer_code | planned_ship_at |
|---|---|---|---|
| 26H-0412 | CB-1200 | CUS-1041 | 2026-08-29 10:00 |
| 26H-0418 | PB-0450 | CUS-2207 | 2026-08-26 07:00 |
| 26H-0421 | CB-1200 | CUS-1041 | 2026-08-30 12:00 |
| 26H-0425 | AM-0220 | CUS-3315 | 2026-09-01 10:00 |
| 26H-0430 | PB-0450 | CUS-2207 | 2026-08-31 10:00 |
아래 JSON Schema 에 맞는 출하 계획 행을 더 만들어 주세요. {"type":"object","properties":{"lot_no":{"type":"string"},"item_code":{"type":"string"},"customer_code":{"type":"string"},"planned_ship_at":{"type":["string","null"]}},"required":["lot_no","item_code","customer_code","planned_ship_at"]} 쉬운 데이터만 만들지 말 것. 다음 하드 케이스를 의도적으로 섞어라. 첫째 결측으로 planned_ship_at 이 null 인 출하일 미정 로트, 둘째 성적서의 마지막 시험 시각보다 출하 시각이 앞서는 로트, 셋째 같은 고객사로 같은 날 두 로트가 나가는 행 쌍. 또한 형식 깨뜨리기 시도 3건을 별도 파일로 만들어 planned_ship_at 에 날짜가 아닌 문자열을 넣어 스키마 검증이 걸러내는지 확인하게 해 주세요.{"type":"object","properties":{"lot_no":{"type":"string"},"item_code":{"type":"string"},"customer_code":{"type":"string"},"planned_ship_at":{"type":["string","null"]}},"required":["lot_no","item_code","customer_code","planned_ship_at"]}| Python | 성적서 원문에서 숫자와 단위를 나누고 규격 기준표와 대조하는 판정 규칙을 돌립니다. |
| 생성형 AI | 3주차 출하 보류 통보서에서 사유 칸과 재시험 요청 칸의 문장을 채웁니다. 로트를 막을지 말지는 여기에 맡기지 않습니다. |
| React | 판정별로 나뉜 로트 목록과 상세를 그리는 관리자 페이지를 만듭니다. |
| TypeScript | 판정 결과와 규격 기준표의 형태를 타입으로 고정해 잘못된 조합이 화면까지 가지 않게 막습니다. |
| 사내 웹 애플리케이션 | 품질 담당자가 사내에서 열어 쓰는 화면 하나로 묶어 냅니다. |
| ERP·MES 연계 | 1주차는 내려받은 출하 계획과 성적서 파일을 읽고, 3주차에 같은 표를 사내 기간계에서 받는 경로를 답니다. |
✓ pass → 여기서 멈춰도 완결입니다. 더 키우려면 시험실이 쓰는 성적서 양식을 그대로 읽습니다.
✓ pass → 양식 읽기까지가 한 덩어리입니다. 더 키우려면 막힌 로트를 출하 보류 통보서로 넘깁니다.
위 예측 UI 는 3주차까지 완주했을 때의 화면입니다. 1주차에 실제로 만드는 것은 아래 표시된 화면 하나입니다.
verdict사유 라벨 · lot_no + 한 줄 요약(근거 수치 포함)화면·코드·면접에서 이 단어를 그대로 씁니다. 키는 출력 스키마의 enum 과 같습니다.
within_spec규격 안over_upper_limit상한 초과under_lower_limit하한 미달required_item_missing필수 항목 미기록ship_before_result결과 전 출하 예정출하 예정 로트 하나의 판정 결과입니다. 규격 안인지, 막아야 한다면 무엇 때문인지를 근거가 된 성적서 줄과 기준값으로 담습니다.
{"type":"object","properties":{"lot_no":{"type":"string"},"item_code":{"type":"string"},"customer_code":{"type":"string"},"verdict":{"type":"string","enum":["within_spec","over_upper_limit","under_lower_limit","required_item_missing","ship_before_result"]},"reason_report_no":{"type":["string","null"]},"reason_test_item":{"type":["string","null"]},"measured_value_normalized":{"type":["number","null"],"description":"measured_value 원문에서 전각 단위 기호를 반각으로 바꾸고 쉼표 소수점을 마침표로 읽어 숫자만 남긴 값입니다. 빠진 필수 항목처럼 잴 값이 없으면 null 입니다."},"measured_unit_normalized":{"type":["string","null"],"description":"같은 정리 규칙으로 뽑은 단위이며 product_specs.unit 과 같은 표기로 맞춥니다."},"hours_before_result":{"type":["number","null"],"description":"planned_ship_at 에서 그 로트의 가장 늦은 tested_at 을 뺀 시간입니다. 음수이면 결과가 나오기 전에 출하가 잡혀 있고, 두 시각 중 하나가 비면 null 입니다."},"evidence":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"agg":{"type":["string","null"]},"value":{},"quote":{"type":["string","null"]}},"required":["field","value"]}},"next_action":{"type":"string"}},"required":["lot_no","item_code","customer_code","verdict","reason_report_no","reason_test_item","measured_value_normalized","measured_unit_normalized","hours_before_result","evidence","next_action"]}[
{
"lot_no": "26H-0412",
"item_code": "CB-1200",
"customer_code": "CUS-1041",
"verdict": "within_spec",
"reason_report_no": "QR-26H-0412-02",
"reason_test_item": "접착력",
"measured_value_normalized": 5.4,
"measured_unit_normalized": "kN/m",
"hours_before_result": 120,
"evidence": [
{
"field": "report_no",
"value": "QR-26H-0412-02"
},
{
"field": "measured_value",
"value": "5.4 kN/m",
"quote": "5.4 kN/m"
},
{
"field": "lower_limit",
"value": 4
},
{
"field": "tested_at",
"value": "2026-08-24 10:00"
},
{
"field": "planned_ship_at",
"value": "2026-08-29 10:00"
}
],
"next_action": "규격 안입니다. 출하 계획대로 내보내고 성적서를 출하 서류에 넣습니다."
},
{
"lot_no": "26H-0433",
"item_code": "CB-1200",
"customer_code": "CUS-1041",
"verdict": "within_spec",
"reason_report_no": "QR-26H-0433-01",
"reason_test_item": "인장강도",
"measured_value_normalized": 16.4,
"measured_unit_normalized": "MPa",
"hours_before_result": 72,
"evidence": [
{
"field": "report_no",
"value": "QR-26H-0433-01"
},
{
"field": "report_no",
"agg": "count",
"value": 2
},
{
"field": "measured_value",
"value": "16.4 MPa",
"quote": "16.4 MPa"
},
{
"field": "lower_limit",
"value": 16
},
{
"field": "measured_value",
"value": "12.40 ㎜",
"quote": "12.40 ㎜"
},
{
"field": "upper_limit",
"value": 12.4
},
{
"field": "tested_at",
"value": "2026-08-28 13:00"
},
{
"field": "planned_ship_at",
"value": "2026-08-31 13:00"
}
],
"next_action": "같은 성적서 번호가 두 번 올라와 나중에 잰 16.4 MPa 로 판정했습니다. 두께는 상한과 같은 값이라 규격 안이며, 재단 조건을 시험실에 한 번 물어보고 출하합니다."
},
{
"lot_no": "26H-0418",
"item_code": "PB-0450",
"customer_code": "CUS-2207",
"verdict": "over_upper_limit",
"reason_report_no": "QR-26H-0418-01",
"reason_test_item": "두께",
"measured_value_normalized": 12.7,
"measured_unit_normalized": "mm",
"hours_before_result": -8,
"evidence": [
{
"field": "report_no",
"value": "QR-26H-0418-01"
},
{
"field": "test_item",
"value": "두께"
},
{
"field": "measured_value",
"value": "12,7 ㎜",
"quote": "12,7 ㎜"
},
{
"field": "lower_limit",
"value": 11.8
},
{
"field": "upper_limit",
"value": 12.4
},
{
"field": "tested_at",
"value": "2026-08-26 15:00"
},
{
"field": "planned_ship_at",
"value": "2026-08-26 07:00"
}
],
"next_action": "두께가 상한을 넘었고, 게다가 시험이 끝나기 8시간 전에 출하가 잡혀 있습니다. 두 사유가 함께 걸렸을 때는 규격 이탈을 앞에 두는 규칙이라 상한 초과로 세웠습니다. 출하를 멈추고 재시험을 걸며, 같은 조건으로 도는 라인을 세울지 생산에 알립니다."
},
{
"lot_no": "26H-0421",
"item_code": "CB-1200",
"customer_code": "CUS-1041",
"verdict": "under_lower_limit",
"reason_report_no": "QR-26H-0421-01",
"reason_test_item": "접착력",
"measured_value_normalized": 3.1,
"measured_unit_normalized": "kN/m",
"hours_before_result": 120,
"evidence": [
{
"field": "report_no",
"value": "QR-26H-0421-01"
},
{
"field": "measured_value",
"value": "3.1 kN/m",
"quote": "3.1 kN/m"
},
{
"field": "lower_limit",
"value": 4
},
{
"field": "measured_value",
"value": null
},
{
"field": "tested_at",
"value": "2026-08-25 12:00"
},
{
"field": "planned_ship_at",
"value": "2026-08-30 12:00"
}
],
"next_action": "접착력이 하한에 미달했습니다. 출하를 멈추고 접착 공정 조건을 확인합니다. 신율은 측정값 칸이 비어 있어 판정에서 뺐고 시험실에 재입력을 요청합니다."
},
{
"lot_no": "26H-0425",
"item_code": "AM-0220",
"customer_code": "CUS-3315",
"verdict": "required_item_missing",
"reason_report_no": null,
"reason_test_item": "내열시험",
"measured_value_normalized": null,
"measured_unit_normalized": null,
"hours_before_result": 120,
"evidence": [
{
"field": "item_code",
"value": "AM-0220"
},
{
"field": "test_item",
"value": "내열시험"
},
{
"field": "is_required",
"value": true
},
{
"field": "lower_limit",
"value": null
},
{
"field": "upper_limit",
"value": 25
},
{
"field": "tested_at",
"value": "2026-08-27 10:00"
},
{
"field": "planned_ship_at",
"value": "2026-09-01 10:00"
}
],
"next_action": "필수인 내열시험 기록이 없습니다. 출하일 전까지 내열시험 성적서를 받고, 받기 전에는 출하를 걸어 둡니다."
},
{
"lot_no": "26H-0430",
"item_code": "PB-0450",
"customer_code": "CUS-2207",
"verdict": "ship_before_result",
"reason_report_no": "QR-26H-0430-02",
"reason_test_item": "경도",
"measured_value_normalized": 70,
"measured_unit_normalized": "Shore A",
"hours_before_result": -48,
"evidence": [
{
"field": "report_no",
"value": "QR-26H-0430-02"
},
{
"field": "planned_ship_at",
"value": "2026-08-31 10:00"
},
{
"field": "tested_at",
"value": "2026-09-02 10:00"
},
{
"field": "measured_value",
"value": "70 Shore A",
"quote": "70 Shore A"
},
{
"field": "upper_limit",
"value": 72
}
],
"next_action": "시험이 끝나기 48시간 전에 출하가 잡혀 있습니다. 출하일을 시험 완료 뒤로 미루거나 시험 일정을 당깁니다."
},
{
"lot_no": "26H-0437",
"item_code": "AM-0220",
"customer_code": "CUS-3315",
"verdict": "within_spec",
"reason_report_no": "QR-26H-0437-02",
"reason_test_item": "내열시험",
"measured_value_normalized": 18,
"measured_unit_normalized": "%",
"hours_before_result": null,
"evidence": [
{
"field": "report_no",
"value": "QR-26H-0437-02"
},
{
"field": "measured_value",
"value": "18 %",
"quote": "18 %"
},
{
"field": "upper_limit",
"value": 25
},
{
"field": "is_required",
"value": true
},
{
"field": "tested_at",
"value": "2026-08-29 10:00"
},
{
"field": "planned_ship_at",
"value": null
}
],
"next_action": "필수인 인장강도와 내열시험이 모두 규격 안입니다. 출하일이 아직 잡히지 않아 결과 전 출하 여부는 계산하지 않았고, 출하일이 정해지면 그때 다시 봅니다."
}
][자동 검증 · 1주차] 1. verdict 가 enum 다섯 값 안에 있는지 확인합니다. 2. lot_no·item_code·verdict·evidence·next_action 이 모두 있는지 확인합니다. 3. measured_value_normalized 를 measured_value 원문에서 다시 계산합니다. 전각 단위 기호를 반각으로 바꾸고 쉼표를 소수점으로 읽은 뒤 숫자와 단위를 나눈 결과가 같은지 봅니다. 4. hours_before_result 를 planned_ship_at 에서 그 로트의 가장 늦은 tested_at 을 뺀 시간으로 다시 계산합니다. 슬래시 날짜와 하이픈 날짜를 같은 시각으로 읽는지 함께 봅니다. 5. measured_value_normalized 가 같은 item_code·test_item 의 upper_limit 을 넘으면 verdict 가 over_upper_limit 인지 확인합니다. 6. measured_value_normalized 가 같은 item_code·test_item 의 lower_limit 에 미달하면 verdict 가 under_lower_limit 인지 확인합니다. 7. is_required 가 참인 test_item 가운데 그 lot_no 의 성적서 test_item 에 없는 항목이 있으면 verdict 가 required_item_missing 인지 확인합니다. 8. hours_before_result 가 음수이면 verdict 가 ship_before_result 인지 확인합니다. 9. 한 로트에 사유가 둘 이상 걸리면 상한 초과와 하한 미달을 먼저 쓰고, 그다음이 필수 항목 미기록, 마지막이 결과 전 출하 예정인지 확인합니다. 상한 초과와 하한 미달이 같이 나오면 상한 초과를 씁니다. 측정값으로 이미 정해진 사유를 일정 사유보다 앞에 두는 까닭은, 규격을 벗어난 로트는 출하일을 미뤄도 못 내보내지만 결과 전 출하는 시험 일정을 당기면 풀리기 때문입니다. 26H-0418 은 두께가 상한을 넘은 동시에 출하가 시험보다 앞서 잡혀 있으므로 over_upper_limit 으로 나와야 합니다. 10. 같은 report_no 가 두 행이면 tested_at 이 늦은 행만 판정에 쓰는지 확인합니다. 26H-0433 은 나중 행인 16.4 MPa 로 갈라져야 합니다. 11. 상한이나 하한 한쪽이 비어 있는 항목은 채워진 쪽만 견주는지 확인합니다. 12. evidence 의 field 가 세 입력 표의 컬럼에 실재하는지 확인합니다. 13. evidence 의 quote 가 그 줄 measured_value 원문의 일부인지 확인합니다. 14. next_action 이 존댓말로 끝나는지 확인합니다. [수동 검증] 1. 규격 상한과 같은 값을 규격 안으로 세는 것이 DRB 품질 기준과 맞는지 품질 담당자가 봅니다. 2. 26H-0421 의 신율처럼 필수가 아닌 항목의 측정값 칸이 비어 있을 때 판정에서 빼는 것이 맞는지 봅니다. 3. 출하일이 정해지지 않은 로트를 어느 시점부터 목록에 세울지 정합니다. 4. 성적서가 한 줄도 올라오지 않은 로트는 판정할 입력이 없는 것이라 이 목록에서 뺐습니다. 시험 접수 자체가 안 된 로트를 어느 화면에서 누구에게 알릴지 품질 담당자와 정합니다. [평가 러너 · 2주차] 1. 품질 담당자가 손으로 표시한 정답표와 verdict 를 맞춰 사유별로 어긋난 건을 셉니다. 2. 성적서와 정답을 작성자가 만든 합성 기준이라 이 수치는 성능 측정이 아니라 데모 조건 동작입니다.