알프레드
경력근거: 급여/회계 도메인에서 AI 에이전트가 전문가의 업무를 실질적으로 수행하는 구조
※ 실제 산출물이 아닌 AI 예측 시안입니다.
이 대조는 알프레드가 계약과 급여를 한 제품 안에 같이 들고 있어야 성립합니다. 공고가 계약의 시작부터 경리·급여, 최종 세무 신고까지를 한 플랫폼의 범위로 적었기 때문에, 근로계약서의 약정 조건과 그달 급여대장이 같은 사업자 밑에서 이어집니다. 계약을 다루지 않고 급여 계산만 대행하는 서비스였다면 견줄 상대 자료가 없어 이 화면은 만들 수 없습니다. 소상공인 사업장은 계약서가 파일로 흩어져 있고 급여대장은 매달 새로 만드는 곳이 많아, 계약 조건이 바뀐 달에 어긋남이 몰립니다. 이 포트폴리오는 대조 규칙과 화면을 보여줍니다. 노무 상담이나 임금체불 진정 실무까지는 주장하지 않습니다.
계약의 시작부터 경리·급여, 최종 세무 신고까지를 한 플랫폼의 범위로 적었습니다. 계약 조건과 그달 급여가 같은 사업자 안에서 이어지는 구조라 둘을 견주는 화면이 성립합니다.
프론트엔드가 화면 개발에 그치지 않고 전문성이 필요한 도메인을 직관적인 제품으로 만드는 역할이라고 못박았습니다. 급여 규정 판정을 담당자가 바로 읽는 화면으로 옮기는 일이 곧 이 자리의 일입니다.
AI 가 잘하는 것과 못하는 것의 경계를 이해하는 사람을 우대로 적었습니다. 급여 판정은 규칙이 끝내고 모델은 열 이름 짝짓기만 맡기는 설계가 그 경계를 그대로 보여줍니다.
사업장의 급여를 마감할 때 근로계약서에 적힌 약정 조건과 그달 급여대장이 어긋난 직원을 사유별로 보여주는 관리자 페이지입니다. 근로계약서와 급여대장 두 장을 받아 사번과 급여월로 묶고, 계약 시급과 실지급 시급, 약정 주당 시간과 실근무 주당 시간을 각각 계산해 다섯 갈래로 나눠 보여줍니다.
Alfred 로 급여를 마감하는 사업장의 경리 담당자입니다. 직원마다 근로계약서를 따로 파일로 갖고 있고 급여대장은 매달 새로 만들다 보니, 계약 조건이 바뀐 직원의 이번 달 금액이 맞는지는 계약서를 다시 열어 봐야 아는 자리에 있습니다.
급여가 계약과 어긋나는 자리는 대개 넷입니다. 시급이 약정보다 낮게 지급됐거나, 실근무 주당 시간이 약정 시간을 넘겼거나, 주 15시간 이상 계약인데 주휴수당 항목이 비었거나, 그 급여월에 유효한 계약 행이 아예 없습니다. 넷 모두 계약과 급여대장을 사번과 급여월로 묶고 나눗셈 두 번을 하면 규칙으로 갈립니다.
근로계약서와 급여대장 JSON 두 장을 올리면 사번과 급여월로 묶어 다섯 사유로 나눠 보여주는 화면이 돕니다. 각 행에 계약 시급과 실지급 시급, 약정 주당 시간과 실근무 주당 시간이 같이 뜹니다.
1주차 판정에 지난 급여월들을 얹어 같은 직원이 몇 달째 어긋났는지와 소급해서 줘야 할 금액 합계를 직원별로 보여줍니다. 급여대장 열 이름이 사업장마다 달라도 표준 컬럼으로 짝지어 올릴 수 있게 만듭니다.
2주차 결과를 급여월 마감 전 점검으로 돌려 어긋난 직원 목록과 소급 금액을 한 장으로 내려받습니다. 직원별 사유와 근거 숫자를 담은 통보서 초안을 같이 만듭니다.
경리 담당자가 근로계약서와 급여대장 두 장을 올려 계약과 어긋난 직원을 사유별로 확인하는 것을 시연합니다.
정답을 붙인 더미 120행으로 다섯 사유가 각각 최소 한 건씩 갈리고, 각 행에 계약 시급과 실지급 시급, 약정 주당 시간과 실근무 주당 시간이 같이 뜹니다.
일부러 만든 결측과 중복, 경계값, 미매핑, 표기흔들림 입력에서도 판정 결과 형식이 안 깨지고 그 행이 사유로 돌아갑니다.
위 120행의 채점 결과는 성능 지표가 아니라 데모가 돈다는 증거입니다. 임금체불을 실제로 얼마나 잡는지는 알프레드의 실제 급여대장과 근로계약서로만 셀 수 있고, 이 포트폴리오는 그 계산이 곧바로 돌아가도록 사유 판정 로직과 정답 채점기를 갖춰 놓는 데까지 갑니다.
급여 행 판정이 잘 맞은 것은 제가 만든 더미를 제가 채점했기 때문이지 도구의 성능이 검증됐기 때문이 아닙니다. 면접에서는 이 구분을 먼저 말하고 데모가 도는 범위와 실검증 준비 상태를 이어 설명합니다.
정답표를 만든 사람과 채점한 사람이 같으니 정확도 자체는 자랑거리가 아닙니다. 급여대장 더미에는 약정 시급이 비어 있는 계약 행, 같은 사번이 두 번 오른 중복 행, 최저임금에 딱 걸친 경계값, 어느 계약에도 붙지 않는 미매핑 사번, 이름 표기가 흔들린 행이 섞여 있고, 다섯 사유가 그 행들에서 어떻게 갈리는지가 이 편이 보여주려는 것입니다.
계약과 급여가 어긋났다고 해서 그것이 곧 임금체불이라고 이 도구가 정하지는 못합니다. 도구는 어긋난 자리와 근거 숫자를 보여주고 판단은 담당자와 노무 전문가가 합니다.
실제 급여는 연장·야간·휴일 가산과 4대보험 공제가 섞여 기본급만으로 시급을 되돌리면 어긋나 보이는 달이 나옵니다. 도입 단계에서는 수당 항목을 분리한 급여대장이 먼저 필요합니다.
월중 계약 변경과 중도 입퇴사는 다루지 않았습니다. 급여월 안에서 계약이 갈리는 경우까지 보려면 일 단위 적용 기간을 가진 계약 이력이 있어야 합니다.
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
근로계약서에서 뽑은 약정 조건입니다. 어느 직원에게 언제부터 시급 얼마와 주당 몇 시간을 약정했는지가 한 행입니다. 급여가 맞는지 견주는 기준이 되는 표입니다.
| contract_no | employee_id | employee_name_raw | hourly_wage | weekly_hours | effective_from |
|---|---|---|---|---|---|
| C-2025-001 | E001 | 김도윤 | 11,200 | 20 | 2025-03-01 |
| C-2025-014 | E002 | 박서연 | 12,000 | 18 | 2025-09-01 |
| C-2026-003 | E003 | 이준호 | 11,000 | 15 | 2026-01-01 |
| C-2025-021 | E004 | 최민아 | 10,500 | 20 | 2025-11-01 |
| C-2026-030 | E005 | 정하늘 | 12,500 | 25 | 2026-08-01 |
다음 JSON Schema 에 맞는 근로계약 행을 더 만들어 주세요. {"type":"object","properties":{"contract_no":{"type":"string"},"employee_id":{"type":"string"},"employee_name_raw":{"type":["string","null"]},"hourly_wage":{"type":["integer","null"]},"weekly_hours":{"type":["number","null"]},"effective_from":{"type":"string"}},"required":["contract_no","employee_id","effective_from"]} 쉬운 데이터만 만들지 말 것 — 다음 하드 케이스를 의도적으로 섞어라: (1) employee_name_raw 가 null 인 결측 행, (2) weekly_hours 가 14.5 나 15 처럼 주휴수당 기준에 딱 걸리는 경계 행, (3) 같은 employee_id 에 effective_from 이 다른 계약 갱신 행 두 개, (4) effective_from 이 급여월보다 뒤인 행, (5) 같은 사람인데 이름 표기가 급여대장과 다른 행. 그리고 형식 깨뜨리기 시도 3건(effective_from 을 연월까지만 쓰기, hourly_wage 를 문자열로 넣기, employee_id 를 비우기)을 따로 표시해 주세요.{"type":"object","properties":{"contract_no":{"type":"string"},"employee_id":{"type":"string"},"employee_name_raw":{"type":["string","null"]},"hourly_wage":{"type":["integer","null"]},"weekly_hours":{"type":["number","null"]},"effective_from":{"type":"string"}},"required":["contract_no","employee_id","effective_from"]}그달 급여대장입니다. 어느 직원에게 어느 급여월에 기본급 얼마를 몇 시간 근무분으로 주고 주휴수당을 얼마 실었는지가 한 행입니다. 계약과 견주는 실적 표입니다.
| payslip_no | employee_id | employee_name_raw | pay_month | base_pay | worked_hours | weekly_holiday_pay |
|---|---|---|---|---|---|---|
| PS-202607-001 | E001 | 김도윤 | 2026-07 | 968,800 | 86.5 | 179,200 |
| PS-202607-002 | E002 | 박 서연 | 2026-07 | 835,450 | 77 | 156,600 |
| PS-202607-003 | E003 | 이준호 | 2026-07 | 1,144,000 | 104 | 132,000 |
| PS-202607-003 | E003 | 이준호 | 2026-07 | 1,144,000 | 104 | 132,000 |
| PS-202607-004 | E004 | 최민아 | 2026-07 | 924,000 | 88 | — |
다음 JSON Schema 에 맞는 급여대장 행을 더 만들어 주세요. {"type":"object","properties":{"payslip_no":{"type":"string"},"employee_id":{"type":["string","null"]},"employee_name_raw":{"type":["string","null"]},"pay_month":{"type":"string"},"base_pay":{"type":["integer","null"]},"worked_hours":{"type":["number","null"]},"weekly_holiday_pay":{"type":["integer","null"]}},"required":["payslip_no","pay_month"]} 쉬운 데이터만 만들지 말 것 — 다음 하드 케이스를 의도적으로 섞어라: (1) weekly_holiday_pay 가 null 인 결측 행, (2) 같은 payslip_no 가 두 번 올라온 재업로드 중복 행, (3) weekly_holiday_pay 가 0 이거나 worked_hours 가 약정 시간에 딱 맞는 경계 행, (4) employee_id 가 null 이고 이름만 있는 미매핑 행, (5) 계약서와 이름 띄어쓰기가 다른 표기흔들림 행, (6) 지난 pay_month 행. 그리고 형식 깨뜨리기 시도 3건(pay_month 를 연도만 쓰기, base_pay 를 콤마 붙인 문자열로 넣기, worked_hours 를 빈 문자열로 넣기)을 따로 표시해 주세요.{"type":"object","properties":{"payslip_no":{"type":"string"},"employee_id":{"type":["string","null"]},"employee_name_raw":{"type":["string","null"]},"pay_month":{"type":"string"},"base_pay":{"type":["integer","null"]},"worked_hours":{"type":["number","null"]},"weekly_holiday_pay":{"type":["integer","null"]}},"required":["payslip_no","pay_month"]}| JavaScript | 브라우저에서 도는 대조 화면의 실행 언어입니다. 급여대장과 계약서 JSON 을 올리면 서버 없이도 판정이 한 번 돌아 결과가 뜨게 만듭니다. |
| TypeScript | 다섯 판정 값과 근거 숫자의 모양을 타입으로 고정해 판정 규칙과 화면이 같은 구조를 쓰게 합니다. 판정 값이 늘면 화면 쪽이 컴파일에서 먼저 걸립니다. |
| Vue | 급여월과 사유로 거르는 대조 화면을 Vue 로 만들고, 행을 누르면 계약 시급과 실지급 시급이 열리는 상세를 붙입니다. |
| React | 사유 배지와 근거 표를 판정 로직과 표현으로 나눠 두어, 같은 판정 결과를 React 화면에서도 그대로 그립니다. 본부 안 다른 제품에 붙일 때 이 경계가 그대로 쓰입니다. |
| HTML·CSS | 경리 담당자가 숫자를 세로로 훑도록 표를 짜고, 계약 값과 지급 값을 같은 행에서 왼쪽 오른쪽으로 읽게 정렬합니다. |
| 웹 프로토콜 | 급여대장 파일은 브라우저에서 바로 읽고 판정 API 만 HTTP 로 부릅니다. 급여 자료가 어디까지 나가는지를 요청 단위로 설명할 수 있게 경로를 나눕니다. |
| AWS | 대조 화면은 S3 정적 호스팅으로, 판정 API 는 Lambda 로 올려 급여월을 바꿔 가며 돌립니다. 2주차부터 AWS 로 배포하고 운영합니다. |
| CI/CD | 커밋마다 판정 규칙 테스트와 화면 빌드를 돌리고 통과한 것만 배포합니다. |
| Vitest | 다섯 판정으로 갈리는 분기와 나눗셈 두 번을 단위 테스트로 각각 잠가 둡니다. 주 15시간 경계처럼 값이 딱 걸리는 행을 따로 넣습니다. |
| Playwright | 급여대장 파일을 올려 다섯 사유가 화면에 뜨고 행을 눌러 근거 숫자가 열리는 흐름을 브라우저에서 자동으로 돌립니다. |
| BDD | 주 15시간 이상이면 주휴수당이 있어야 한다는 조건을 문장 그대로 시나리오로 적어 두고, 그 문장이 테스트 이름이 되게 합니다. |
✓ pass → 여기서 멈춰도 완결입니다. 더 키우려면 지난 급여월을 얹어 소급 금액 합계와 열 이름 짝짓기를 붙입니다.
✓ pass → 여기서 멈춰도 완결입니다. 더 키우려면 마감 전 점검과 통보서 초안 내려받기를 만듭니다.
위 예측 UI 는 3주차까지 완주했을 때의 화면입니다. 1주차에 실제로 만드는 것은 아래 표시된 화면 하나입니다.
verdict사유 라벨 · payslip_no + 한 줄 요약(근거 수치 포함)화면·코드·면접에서 이 단어를 그대로 씁니다. 키는 출력 스키마의 enum 과 같습니다.
matches_contract계약과 일치below_contract_wage계약 시급 미달hours_over_contract약정 시간 초과weekly_holiday_pay_missing주휴수당 누락contract_not_found계약서 없음급여대장 한 행을 그 직원의 유효한 계약 행과 견준 판정입니다. 어느 사유로 어긋났는지와 그 판단의 근거가 된 숫자를 같이 싣습니다.
{"type":"object","properties":{"payslip_no":{"type":"string"},"employee_id":{"type":["string","null"]},"pay_month":{"type":"string"},"contract_no":{"type":["string","null"]},"verdict":{"type":"string","enum":["matches_contract","below_contract_wage","hours_over_contract","weekly_holiday_pay_missing","contract_not_found"]},"contract_hourly_wage":{"type":["integer","null"],"description":"그 급여월에 유효한 contracts.hourly_wage 입니다. 유효한 계약 행이 없으면 null 입니다."},"actual_hourly_wage":{"type":["integer","null"],"description":"payroll.base_pay 를 payroll.worked_hours 로 나눈 실지급 시급입니다. 원 단위로 반올림하며 worked_hours 가 0이거나 비어 있으면 null 입니다."},"contract_weekly_hours":{"type":["number","null"],"description":"그 급여월에 유효한 contracts.weekly_hours 입니다. 유효한 계약 행이 없으면 null 입니다."},"actual_weekly_hours":{"type":["number","null"],"description":"payroll.worked_hours 에 7을 곱하고 그 pay_month 의 일수로 나눈 실근무 주당 시간입니다. 소수점 둘째 자리에서 반올림합니다."},"evidence":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"agg":{"type":"string","enum":["count","sum","avg","min","max"]},"value":{}},"required":["field","value"]}},"reason":{"type":"string"}},"required":["payslip_no","pay_month","verdict","evidence","reason"]}[
{
"payslip_no": "PS-202607-001",
"employee_id": "E001",
"pay_month": "2026-07",
"contract_no": "C-2025-001",
"verdict": "matches_contract",
"contract_hourly_wage": 11200,
"actual_hourly_wage": 11200,
"contract_weekly_hours": 20,
"actual_weekly_hours": 19.53,
"evidence": [
{
"field": "hourly_wage",
"value": 11200
},
{
"field": "base_pay",
"value": 968800
},
{
"field": "worked_hours",
"value": 86.5
},
{
"field": "weekly_hours",
"value": 20
},
{
"field": "weekly_holiday_pay",
"value": 179200
}
],
"reason": "계약 시급 11,200원과 실지급 시급이 같고 실근무 주당 19.53시간이 약정 20시간 안에 들어옵니다. 주휴수당도 실려 있습니다."
},
{
"payslip_no": "PS-202607-007",
"employee_id": "E007",
"pay_month": "2026-07",
"contract_no": "C-2026-041",
"verdict": "matches_contract",
"contract_hourly_wage": 11500,
"actual_hourly_wage": 11500,
"contract_weekly_hours": 24,
"actual_weekly_hours": 22.58,
"evidence": [
{
"field": "effective_from",
"value": "2026-04-01"
},
{
"field": "hourly_wage",
"value": 11500
},
{
"field": "base_pay",
"value": 1150000
},
{
"field": "worked_hours",
"value": 100
},
{
"field": "weekly_hours",
"value": 24
}
],
"reason": "계약이 2026-04-01 자로 갱신돼 시급 11,500원이 적용되고, 실지급 시급이 그 값과 같습니다. 2024년 옛 계약 행은 최신 행에 밀려 쓰지 않았습니다."
},
{
"payslip_no": "PS-202607-008",
"employee_id": "E008",
"pay_month": "2026-07",
"contract_no": "C-2026-052",
"verdict": "matches_contract",
"contract_hourly_wage": 10400,
"actual_hourly_wage": 10400,
"contract_weekly_hours": 14.5,
"actual_weekly_hours": 14,
"evidence": [
{
"field": "weekly_hours",
"value": 14.5
},
{
"field": "weekly_holiday_pay",
"value": 0
},
{
"field": "hourly_wage",
"value": 10400
},
{
"field": "base_pay",
"value": 644800
},
{
"field": "worked_hours",
"value": 62
}
],
"reason": "약정 주당 14.5시간은 주휴수당 기준 15시간에 못 미쳐 주휴수당이 0원이어도 어긋난 것이 아닙니다. 시급과 근무 시간도 계약 안에 들어옵니다."
},
{
"payslip_no": "PS-202607-002",
"employee_id": "E002",
"pay_month": "2026-07",
"contract_no": "C-2025-014",
"verdict": "below_contract_wage",
"contract_hourly_wage": 12000,
"actual_hourly_wage": 10850,
"contract_weekly_hours": 18,
"actual_weekly_hours": 17.39,
"evidence": [
{
"field": "hourly_wage",
"value": 12000
},
{
"field": "base_pay",
"value": 835450
},
{
"field": "worked_hours",
"value": 77
},
{
"field": "weekly_hours",
"value": 18
},
{
"field": "employee_name_raw",
"value": "박 서연"
}
],
"reason": "계약 시급 12,000원인데 기본급을 근무 시간으로 나눈 실지급 시급이 10,850원이라 시간당 1,150원이 모자랍니다. 급여대장 이름이 계약서와 띄어쓰기가 달라 사번으로 묶었습니다."
},
{
"payslip_no": "PS-202607-003",
"employee_id": "E003",
"pay_month": "2026-07",
"contract_no": "C-2026-003",
"verdict": "hours_over_contract",
"contract_hourly_wage": 11000,
"actual_hourly_wage": 11000,
"contract_weekly_hours": 15,
"actual_weekly_hours": 23.48,
"evidence": [
{
"field": "weekly_hours",
"value": 15
},
{
"field": "worked_hours",
"value": 104
},
{
"field": "payslip_no",
"agg": "count",
"value": 2
},
{
"field": "hourly_wage",
"value": 11000
},
{
"field": "base_pay",
"value": 1144000
}
],
"reason": "약정은 주당 15시간인데 실근무를 주당으로 환산하면 23.48시간이라 8.48시간을 넘겼습니다. 같은 급여명세 번호가 두 번 올라와 한 건으로 세었습니다."
},
{
"payslip_no": "PS-202607-004",
"employee_id": "E004",
"pay_month": "2026-07",
"contract_no": "C-2025-021",
"verdict": "weekly_holiday_pay_missing",
"contract_hourly_wage": 10500,
"actual_hourly_wage": 10500,
"contract_weekly_hours": 20,
"actual_weekly_hours": 19.87,
"evidence": [
{
"field": "weekly_hours",
"value": 20
},
{
"field": "weekly_holiday_pay",
"value": null
},
{
"field": "hourly_wage",
"value": 10500
},
{
"field": "base_pay",
"value": 924000
},
{
"field": "worked_hours",
"value": 88
}
],
"reason": "약정 주당 20시간이라 주휴수당을 줘야 하는데 급여대장의 주휴수당 항목이 비어 있습니다. 시급과 근무 시간은 계약과 맞습니다."
},
{
"payslip_no": "PS-202607-005",
"employee_id": "E005",
"pay_month": "2026-07",
"contract_no": null,
"verdict": "contract_not_found",
"contract_hourly_wage": null,
"actual_hourly_wage": 12500,
"contract_weekly_hours": null,
"actual_weekly_hours": 20.32,
"evidence": [
{
"field": "employee_id",
"value": "E005"
},
{
"field": "effective_from",
"value": "2026-08-01"
},
{
"field": "pay_month",
"value": "2026-07"
},
{
"field": "base_pay",
"value": 1125000
},
{
"field": "worked_hours",
"value": 90
}
],
"reason": "계약 행은 있으나 발효일이 2026-08-01 이라 2026-07 급여월에는 아직 적용되지 않습니다. 견줄 기준이 없어 시급 차이와 시간 차이는 비웁니다."
},
{
"payslip_no": "PS-202607-006",
"employee_id": null,
"pay_month": "2026-07",
"contract_no": null,
"verdict": "contract_not_found",
"contract_hourly_wage": null,
"actual_hourly_wage": 11000,
"contract_weekly_hours": null,
"actual_weekly_hours": 7.23,
"evidence": [
{
"field": "payslip_no",
"value": "PS-202607-006"
},
{
"field": "employee_name_raw",
"value": "한 지우(입사예정)"
},
{
"field": "employee_id",
"value": null
},
{
"field": "base_pay",
"value": 352000
},
{
"field": "worked_hours",
"value": 32
}
],
"reason": "급여대장에 사번이 비어 있어 어느 직원의 계약과 견줄지 정해지지 않았습니다. 계약서 등록이 먼저입니다."
}
][자동 검증 · 1주차] 1. verdict 값이 다섯 enum 안에 있는지 확인합니다. 2. payslip_no 와 pay_month, verdict, evidence, reason 이 모두 있는지 확인합니다. 3. actual_hourly_wage 가 0 이상이고 actual_weekly_hours 가 0 이상 168 이하인지 확인합니다. 4. actual_hourly_wage = base_pay ÷ worked_hours 를 원 단위로 반올림한 값과 같은지 다시 계산합니다. worked_hours 가 0이거나 비어 있으면 actual_hourly_wage 도 null 인지 확인합니다. 5. actual_weekly_hours = worked_hours × 7 ÷ 그 pay_month 의 일수 를 소수점 둘째 자리에서 반올림한 값과 같은지 다시 계산합니다. 일수는 pay_month 가 가리키는 달의 달력 일수를 씁니다. 6. contract_hourly_wage 와 contract_weekly_hours 가 그 급여월에 유효한 계약 행의 hourly_wage·weekly_hours 와 같은지 다시 계산합니다. 유효한 계약 행은 같은 employee_id 의 contracts 중 effective_from 이 pay_month 보다 앞선 가장 최근 행이며, 그런 행이 없으면 두 필드가 모두 null 인지 확인합니다. 7. contract_hourly_wage 가 actual_hourly_wage 보다 크면 verdict 는 below_contract_wage 인지 확인합니다. 조건이 성립하는 사례는 PS-202607-002 이고 성립하지 않는 사례는 두 값이 같은 PS-202607-001 입니다. 8. weekly_hours 가 15 이상이면 weekly_holiday_pay 가 0이거나 비어 있을 때 verdict 는 weekly_holiday_pay_missing 인지 확인합니다. 조건이 성립하는 사례는 PS-202607-004 이고 성립하지 않는 사례는 약정이 주당 14.5시간인 PS-202607-008 입니다. 9. evidence 의 field 가 근로계약서와 급여대장 두 표의 컬럼에 실재하는지 확인합니다. 10. agg 가 없는 evidence 항목의 value 가 수록된 행의 그 컬럼 값과 같은지 확인합니다. 11. 모든 reason 이 존댓말로 끝나는지 확인합니다. [수동 검증] 1. 기본급만으로 되돌린 실지급 시급이 그 사업장의 급여 구성과 맞는지 경리 담당자에게 확인합니다. 연장·야간 가산이 기본급에 섞여 있으면 시급 판정이 흔들립니다. 2. 같은 급여월에 계약이 갱신된 직원을 최신 계약 한 행으로 판정한 처리가 맞는지 사람이 봅니다. 3. 주 15시간 기준을 소정근로시간으로 볼지 실근무 시간으로 볼지는 노무 판단이라 담당자에게 확인합니다. [평가 러너 · 2주차] 1. 정답을 붙인 더미 120행으로 다섯 사유의 정밀도와 재현율을 냅니다. 2. 계약 갱신 이력이 있는 직원에서 최신 계약 행을 고르는 적중률을 이력 유무로 나눠 견줍니다.