> 인사책 MCP 문서 — 휴가. 서버 주소 https://insacheck.com/api/mcp. 전체판 https://insacheck.com/docs/mcp.md · 색인 https://insacheck.com/docs/mcp/llms.txt

# 휴가 (leave)

휴가 신청 · 취소 · 잔여 · 팀 휴가 현황.

## 할 수 있는 일

- 도구 15개 · 흐름 28개 (AI 로 끝까지 20개 · 화면 안내 8개)
- LV-03 결재함에 휴가 신청이 안 보여요.
- LV-04 남은 연차를 봐요.
- LV-05 연차를 하루나 여러 날 신청해요.
- LV-06 올린 휴가가 아직 결재 전이면 취소해요.
- LV-07 반차·병가·무급 같은 휴가를 쓸 수 있게 켜고 꺼요.
- LV-09 내 휴가를 누가 결재하는지 먼저 봐요.
- LV-10 연차 기준과 남은 연차 처리 방식을 바꿔요.
- LV-11 반차(오전·오후)를 신청해요.
- LV-13 휴가를 결재하는 사람을 더하거나 빼요.
- LV-14 내가 올린 휴가 신청의 상태를 봐요.
- LV-15 반반차나 시간 단위로 쉬는 휴가를 신청해요.
- LV-18 우리 팀에서 승인 기다리는 휴가를 봐요.
- LV-19 우리 회사 휴가 규칙을 봐요.
- LV-21 병가나 경조 같은 다른 종류 휴가를 올려요.
- LV-22 팀원의 남은 연차를 봐요.
- LV-23 연차를 거의 안 쓴 직원이 누구인지 봐요.
- LV-24 반려된 휴가를 고쳐서 다시 올려요.
- LV-25 회사 전체의 휴가 사용 현황을 봐요.
- LV-26 회사 전체에서 승인 기다리는 휴가를 봐요.
- LV-27 오늘이나 내일 누가 쉬는지 봐요.

## 도구

조회는 `run_read`, 쓰기는 `run_write` 에 도구 이름(`tool`)과 값(`args`)을 넣어 불러요. 「이름 그대로」인 기본 도구는 바로 불러요. 등급은 0 바로 조회 · 1 바로 하고 5분 안에 되돌리기 · 2 미리보기 → 확정 · 3 앱 승인이에요.

| 이름 | 조회/쓰기 | 등급 | 필요 역할 | 범위 | 설명 | 부르는 길 |
|---|---|---|---|---|---|---|
| `request_leave` | 쓰기 | 2 미리보기 → 확정 | employee (직원) | send | 본인의 휴가를 신청합니다. "내일 연차 신청해줘", "다음주 월요일 반차" 같은 명령에 사용하세요. | run_write |
| `cancel_leave_request` | 쓰기 | 2 미리보기 → 확정 | employee (직원) | send | 본인이 신청한 대기중(pending) 휴가를 취소합니다. "어제 신청한 휴가 취소해줘" 같은 명령에 사용. | run_write |
| `withdraw_approved_leave` | 쓰기 | 2 미리보기 → 확정 | employee (직원) | send | 승인된 휴가의 철회를 시도합니다. ★2026-09-15 규칙 변경 이후 결재가 완료된 휴가는 시작 전이어도 결재를 받아야 취소되므로, 이 도구로는 처리되지 않고 앱·웹의 「취소 결재 요청」으로 안내합니다.★ 아직 결재가 끝나지 않은 신청의 취소는 앱·웹 휴가 화면에서 본인이 바로 할 수 있습니다. | run_write |
| `query_my_leaves` | 조회 | 0 바로 조회 | employee (직원) | view | 본인이 신청한 휴가 목록을 조회합니다. "내가 신청한 휴가 보여줘", "내 휴가 신청 상태" 같은 질문에 사용. | run_read |
| `query_my_leave_balance` | 조회 | 0 바로 조회 | employee (직원) | view | 본인의 연차 잔여일수를 조회합니다. "내 휴가 며칠 남았어?", "연차 얼마 남음?" 같은 질문에 사용. | run_read |
| `query_leave_balance` | 조회 | 0 바로 조회 | dept_manager (팀장 이상) | view | 특정 직원의 연차 잔여일수를 조회합니다. "이주영 휴가 며칠 남았어?" 같은 질문에 사용. 부서장 이상. | run_read |
| `adjust_leave_balance_bulk` | 쓰기 | 2 미리보기 → 확정 | hr_manager (관리자 이상) | admin | 회사 전 직원의 연차를 한꺼번에 ±N일 조정합니다 — "올해 연차 모두 +1일, 사유 보너스" 같은 말에 사용. year 는 비우면 올해(올해 5년 전~내년), delta_days 는 늘리기 +·줄이기 − (±5일 · 0.5일 단위), reason 은 필수(기록에 남아요). 미리보기로 몇 명 · 합계 전→후를 보여 준 뒤, 사람이 확인하면 같은 인자에 confirmation_id 를 넣어 다시 부르세요. 대표·회사 관리자(휴가 운영 권한) 전용 · 회사 전체 직원만. | run_write |
| `query_leaves_pending` | 조회 | 0 바로 조회 | hr_manager (관리자 이상) | view | 승인 대기 중인 휴가 신청 목록을 조회합니다. "내가 승인해야 할 휴가", "결재 대기 중인 휴가" 같은 질문에 사용하세요. | run_read |
| `query_team_pending_leaves` | 조회 | 0 바로 조회 | dept_manager (팀장 이상) | view | 본인 팀의 승인 대기 휴가 신청 목록. "우리팀 휴가 신청 누가 했어?" 같은 질문에 사용하세요. 부서장 이상. | run_read |
| `query_leaves_on_date` | 조회 | 0 바로 조회 | dept_manager (팀장 이상) | view | 특정 날짜에 휴가/휴무인 직원 목록. "내일 누가 쉬어?", "오늘 휴무자" 같은 질문에 사용. 부서장 이상. | run_read |
| `query_company_leave_summary` | 조회 | 0 바로 조회 | hr_manager (관리자 이상) | view | 회사 전체의 휴가 사용 현황 요약 (부여/사용/잔여 총합 + 사용률). "전사 휴가 사용률", "올해 연차 얼마나 썼어?" 같은 질문에 사용. 인사 권한 필요. | run_read |
| `query_low_leave_users` | 조회 | 0 바로 조회 | hr_manager (관리자 이상) | view | 연차를 거의 안 쓴 직원 (사용촉진 대상). "연차 안 쓴 사람 누구?", "휴가 촉진 대상" 같은 질문에 사용. 대표관리자 또는 인사 권한. | run_read |
| `query_leave_types` | 조회 | 0 바로 조회 | employee (직원) | view | 신청할 수 있는 휴가 종류 보기(휴가 종류 · 연차 반차 병가 경조 목록). 웹 휴가 신청 화면과 같은 목록이에요. limit 기본 30, 최대 50. | run_read |
| `query_company_holidays` | 조회 | 0 바로 조회 | employee (직원) | view | 회사 휴일과 법정 공휴일 보기(휴일 · 공휴일 · 쉬는 날 · 창립기념일). from~to 기간(기본 이번 달 · 최대 93일). | run_read |
| `query_team_leave_calendar` | 조회 | 0 바로 조회 | employee (직원) | view | 팀 휴가 달력(기간) — 이번 주 누가 휴가인지 우리 팀 휴가 일정을 날짜별로 봐요. "이번 주 누가 휴가야?", "다음 주 팀 휴가", "팀 휴가 달력" 질문에 사용. from~to 기간(기본 이번 주 월~일 · 최대 62일). 웹 휴가 화면의 팀 휴가 달력과 같은 범위(직원 = 내 팀·부서, 조직장 = 관할)만 보이고 이름 · 날짜 · 승인/대기만 나와요(휴가 종류·사유는 안 나와요). | run_read |

도구마다 따로 읽는 문서: [request_leave](https://insacheck.com/docs/mcp/tools/request_leave.md) · [cancel_leave_request](https://insacheck.com/docs/mcp/tools/cancel_leave_request.md) · [withdraw_approved_leave](https://insacheck.com/docs/mcp/tools/withdraw_approved_leave.md) · [query_my_leaves](https://insacheck.com/docs/mcp/tools/query_my_leaves.md) · [query_my_leave_balance](https://insacheck.com/docs/mcp/tools/query_my_leave_balance.md) · [query_leave_balance](https://insacheck.com/docs/mcp/tools/query_leave_balance.md) · [adjust_leave_balance_bulk](https://insacheck.com/docs/mcp/tools/adjust_leave_balance_bulk.md) · [query_leaves_pending](https://insacheck.com/docs/mcp/tools/query_leaves_pending.md) · [query_team_pending_leaves](https://insacheck.com/docs/mcp/tools/query_team_pending_leaves.md) · [query_leaves_on_date](https://insacheck.com/docs/mcp/tools/query_leaves_on_date.md) · [query_company_leave_summary](https://insacheck.com/docs/mcp/tools/query_company_leave_summary.md) · [query_low_leave_users](https://insacheck.com/docs/mcp/tools/query_low_leave_users.md) · [query_leave_types](https://insacheck.com/docs/mcp/tools/query_leave_types.md) · [query_company_holidays](https://insacheck.com/docs/mcp/tools/query_company_holidays.md) · [query_team_leave_calendar](https://insacheck.com/docs/mcp/tools/query_team_leave_calendar.md)

## 말 → 호출 순서 (흐름)

### LV-01 올라온 휴가 신청을 승인하거나 반려하고 싶어요.
- 누가: 팀장 · 관리자 · 대표
- 방식: 아직 AI 로 안 돼요 · 대신 화면
- 이렇게 말해요: 「휴가 승인해야 하는데 어디서 해?」 「휴가 신청 반려하려면 어떻게 해요」 「팀원 휴가 승인은 어디로 가야 해?」 「내 휴가 올렸는데 승인은 어디서 하지」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_team_pending_leaves","args":{"limit":10}}}
     서버: 몸통 src/routes/mcp-tool-handlers.ts:query_team_pending_leaves
     다음으로 넘길 값: 신청자 · 날짜 · 종류 · 신청 번호
```

- 필요한 값 · 되묻기: 아직 AI 로 안 돼요 · 대신 화면에서 해요. / AI 는 승인 기다리는 목록까지만 보여 줘요.
- 끝: 승인 기다리는 휴가를 보여 주고 결재함 화면으로 안내해요.
- 화면: 결재/요청 → 결재함 (/worker/requests?view=history&tab=need)
- 하면 안 되는 것: AI 로 휴가를 승인하거나 반려하지 않아요. / 내 차례가 아닌 건은 처리하지 않아요.

### LV-02 내 연차가 왜 이 숫자인지 알고 싶어요.
- 누가: 직원 · 팀장 · 관리자 · 대표
- 방식: 아직 AI 로 안 돼요 · 대신 화면
- 이렇게 말해요: 「연차 개수가 왜 이렇게 나와?」 「입사일이랑 연차 계산이 안 맞는 것 같아요」 「내 연차 어떻게 계산된 거야」 「연차가 17.5개로 나오는데 맞아요?」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_my_leave_balance","args":{"year":2026}}}
     서버: 몸통 src/routes/mcp-tools/leave.ts:query_my_leave_balance · 함수 src/lib/leave-balance.ts:remainingAnnualLeaveDays · 웹 API GET /api/leave/balance/me
     다음으로 넘길 값: 부여 일수 · 이월 일수 · 사용 일수 · 대기 일수
```

- 필요한 값 · 되묻기: 아직 AI 로 안 돼요 · 대신 화면에서 해요. / AI 는 부여·이월·사용 숫자까지만 알려 줘요.
- 끝: 부여·이월·사용 숫자를 말해 주고 연차 표 화면으로 안내해요.
- 화면: 휴가 → 연차 표 (/worker/leave/table)
- 하면 안 되는 것: 연차 숫자를 AI 가 마음대로 고치지 않아요. / 입사일이 다르면 관리자에게 확인하라고 안내해요.

### LV-03 결재함에 휴가 신청이 안 보여요.
- 누가: 직원 · 팀장 · 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「연차 승인 요청이 결재함에 안 올라와요」 「결재할 휴가가 있는지 봐줘」 「내가 결재할 거 뭐 있어?」 「휴가 신청이 들어왔다는데 안 보여」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_my_approval_inbox","args":{}}}
     서버: 몸통 src/routes/mcp-tools/approvals.ts:query_my_approval_inbox
     다음으로 넘길 값: 결재 종류 · 신청자 · 신청 번호
```

- 필요한 값 · 되묻기: 따로 필요한 값은 없어요. / 내 차례인 건만 보여요.
- 끝: 내가 결재할 차례인 휴가 건을 한 번에 보여 줘요.
- 화면: 결재/요청 → 결재함 (/worker/requests?view=history&tab=need)
- 하면 안 되는 것: 결재 목록을 AI 가 고치지 않아요. / 내 차례가 아닌 휴가는 보여 주지 않아요.

### LV-04 남은 연차를 봐요.
- 누가: 직원 · 팀장 · 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「내 연차 며칠 남았어?」 「남은 휴가 알려줘」 「올해 연차 몇 개야」 「연차 얼마 남음」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_my_leave_balance","args":{"year":2026}}}
     서버: 몸통 src/routes/mcp-tools/leave.ts:query_my_leave_balance · 함수 src/lib/leave-balance.ts:remainingAnnualLeaveDays · 웹 API GET /api/leave/balance/me
     다음으로 넘길 값: 남은 일수 · 부여 일수 · 사용 일수 · 대기 일수
```

- 필요한 값 · 되묻기: 연도 말이 없으면 올해예요.
- 끝: 올해 남은 연차 일수를 먼저 보여 줘요.
- 화면: 휴가 → 내 휴가 신청 이력 (/worker/leave)
- 하면 안 되는 것: 다른 사람 연차를 이 흐름으로 보지 않아요. / 대기 중인 휴가는 남은 일수에서 빼지 않아요.

### LV-05 연차를 하루나 여러 날 신청해요.
- 누가: 직원 · 팀장 · 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「다음 주 월요일 연차 올려줘」 「12월 24일 하루 쉬고 싶어」 「내일부터 이틀 연차 쓸게요」 「휴가 신청 부탁해」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"approval_preview","args":{"type":"leave"}}}
     서버: 몸통 src/routes/mcp-tools/approval-request.ts:engineLine
     다음으로 넘길 값: 결재자 이름 · 참조인 이름
  (값이 없으면 먼저 물어요: 「언제부터 언제까지 쉴까요?」)
  2-미리보기. tools/call {"name":"approval_request","arguments":{"type":"leave","start_date":"2026-10-26","end_date":"2026-10-27","leave_type":"annual","reason":"개인 사정"}}
     서버: 몸통 src/routes/mcp-tools/approval-request.ts:buildPlan · 함수 src/routes/mcp-leave-request.ts:createMcpLeaveRequest · 웹 API POST /api/leave/requests {start_date, end_date, leave_type, reason}
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  2-확정. tools/call {"name":"approval_request","arguments":{"type":"leave","start_date":"2026-10-26","end_date":"2026-10-27","leave_type":"annual","reason":"개인 사정","confirmation_id":"<2-미리보기.confirmation_id>"}}
     넘겨받는 값: 2-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/approval-request.ts:buildPlan · 함수 src/routes/mcp-leave-request.ts:createMcpLeaveRequest · 웹 API POST /api/leave/requests {start_date, end_date, leave_type, reason}
     다음으로 넘길 값: 휴가 신청 번호 · 결재자 이름
```

- 필요한 값 · 되묻기: 시작하는 날 / 끝나는 날이 없으면 하루로 봐요. / 종류 말이 없으면 연차예요.
- 끝: 휴가 신청이 올라가고 결재자에게 알림이 가요.
- 화면: 휴가 → 휴가 신청 (/worker/leave)
- 하면 안 되는 것: 확인 없이 신청을 올리지 않아요. / 다른 사람 이름으로 올리지 않아요.

### LV-06 올린 휴가가 아직 결재 전이면 취소해요.
- 누가: 직원 · 팀장 · 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「어제 올린 휴가 취소해줘」 「결재 안 난 휴가 없던 걸로 해줘」 「휴가 신청 철회할게요」 「아까 올린 연차 취소할래」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_my_leaves","args":{"status":"pending","year":2026}}}
     서버: 몸통 src/routes/mcp-tools/leave.ts:query_my_leaves · 웹 API GET /api/leave/requests/me
     다음으로 넘길 값: 신청 번호 · 날짜 · 종류
  2-미리보기. tools/call {"name":"run_write","arguments":{"tool":"cancel_leave_request","args":{}}}
     넘겨받는 값: 1.leaves.0.leave_id → leave_id
     서버: 몸통 src/routes/mcp-tools/leave.ts:cancelMcpLeaveAtomically · 웹 API PATCH /api/leave/requests/:id/cancel
     다음으로 넘길 값: confirmation_id
     그다음: 후보가 여럿이면(needs_choice) 「어느 휴가 신청을 취소할까요?」 → 고른 id 로 같은 줄을 다시 · 미리보기를 사용자에게 보여 주고 「네」를 받아요
  2-확정. tools/call {"name":"run_write","arguments":{"tool":"cancel_leave_request","args":{},"confirmation_id":"<2-미리보기.confirmation_id>"}}
     넘겨받는 값: 1.leaves.0.leave_id → leave_id · 2-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/leave.ts:cancelMcpLeaveAtomically · 웹 API PATCH /api/leave/requests/:id/cancel
     다음으로 넘길 값: 취소된 날짜
```

- 필요한 값 · 되묻기: 대기 중인 건이 여럿이면 어느 건인지 물어요.
- 끝: 대기 중이던 휴가 신청이 취소돼요.
- 화면: 휴가 → 내 휴가 신청 이력 (/worker/leave)
- 하면 안 되는 것: 확인 없이 취소하지 않아요. / 이미 승인된 휴가는 이 흐름으로 취소하지 않아요.

### LV-07 반차·병가·무급 같은 휴가를 쓸 수 있게 켜고 꺼요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「반차 허용해줘」 「무급휴가 켜줘」 「병가 못 쓰게 막아줘」 「무급 반차도 쓸 수 있게 해줘」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_leave_policy","args":{}}}
     서버: 몸통 src/routes/mcp-tools/policies.ts:query_leave_policy · 함수 src/lib/leave-policy.ts:resolveLeavePolicy · 웹 API GET /api/leave/policies/:eid
     다음으로 넘길 값: 지금 허용 상태
  (값이 없으면 먼저 물어요: 「어떤 휴가를 켜고 어떤 휴가를 끌까요?」)
  2-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_leave_policy","args":{"half_day_supported":true,"allow_unpaid":true}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_leave_policy · 웹 API PATCH /api/leave/policies/:eid {half_day_supported, allow_unpaid, allow_sick_leave, allow_family_event}
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  2-확정. tools/call {"name":"run_write","arguments":{"tool":"update_leave_policy","args":{"half_day_supported":true,"allow_unpaid":true},"confirmation_id":"<2-미리보기.confirmation_id>"}}
     넘겨받는 값: 2-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_leave_policy · 웹 API PATCH /api/leave/policies/:eid {half_day_supported, allow_unpaid, allow_sick_leave, allow_family_event}
     다음으로 넘길 값: 바뀐 항목
```

- 필요한 값 · 되묻기: 반차·병가·경조사·무급 중 바꿀 휴가 / 켤지 끌지
- 끝: 고른 휴가 종류의 허용 여부가 바뀌어요.
- 화면: 휴가 → 휴가 규칙 (/admin/enterprise/hr/leave-policy)
- 하면 안 되는 것: 반반차 허용은 이 흐름에서 바꾸지 않아요. / 확인 없이 회사 규칙을 바꾸지 않아요.

### LV-08 직원이 취소해 달라고 한 승인된 휴가를 처리해요.
- 누가: 팀장 · 관리자 · 대표
- 방식: 아직 AI 로 안 돼요 · 대신 화면
- 이렇게 말해요: 「휴가 취소 결재는 어디서 수락해?」 「관리 탭에서 취소 결재 받으려면 어떻게 해요」 「승인한 휴가를 직원이 취소하고 싶대」 「취소 결재 대기 건 처리할래」
- 호출 순서: 없음(화면에서 해요)
- 필요한 값 · 되묻기: 아직 AI 로 안 돼요 · 대신 화면에서 해요. / 취소 결재는 화면의 휴가 취소 결재 칸에서 해요.
- 끝: 취소 결재를 처리하는 화면을 알려 줘요.
- 화면: 연차 결재 → 휴가 취소 결재 (/admin/enterprise/leave)
- 하면 안 되는 것: AI 로 취소 결재를 승인하지 않아요. / 관리 탭은 팀 현황을 보는 곳이라고 알려 줘요.

### LV-09 내 휴가를 누가 결재하는지 먼저 봐요.
- 누가: 직원 · 팀장 · 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「휴가 올리면 누구한테 가?」 「누가 내 휴가 결재해요?」 「부서장인데 내 휴가는 누가 결재해」 「결재선 확인할 수 없다고 나와요」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"approval_preview","args":{"type":"leave"}}}
     서버: 몸통 src/routes/mcp-tools/approval-request.ts:engineLine
     다음으로 넘길 값: 결재자 이름 · 참조인 이름
```

- 필요한 값 · 되묻기: 따로 필요한 값은 없어요.
- 끝: 누가 결재하고 누가 참조인지 보여 줘요.
- 화면: 휴가 → 휴가 신청 (/worker/leave)
- 하면 안 되는 것: 결재자를 마음대로 고르지 않아요. / 결재선이 없으면 관리자에게 확인하라고 안내해요.

### LV-10 연차 기준과 남은 연차 처리 방식을 바꿔요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「연차를 입사일 기준으로 바꿔줘」 「남은 연차는 다음 해로 넘기게 해줘」 「연차 기본 15일로 해줘」 「회계연도 기준으로 연차 주고 싶어」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_leave_policy","args":{}}}
     서버: 몸통 src/routes/mcp-tools/policies.ts:query_leave_policy · 함수 src/lib/leave-policy.ts:resolveLeavePolicy · 웹 API GET /api/leave/policies/:eid
     다음으로 넘길 값: 지금 부여 기준 · 지금 이월 방식
  (값이 없으면 먼저 물어요: 「무엇을 어떻게 바꿀까요?」)
  2-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_leave_policy","args":{"accrual_basis":"hire_date","carryover_method":"next_year","base_annual_days":15}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_leave_policy · 웹 API PATCH /api/leave/policies/:eid {accrual_basis, carryover_method, base_annual_days}
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  2-확정. tools/call {"name":"run_write","arguments":{"tool":"update_leave_policy","args":{"accrual_basis":"hire_date","carryover_method":"next_year","base_annual_days":15},"confirmation_id":"<2-미리보기.confirmation_id>"}}
     넘겨받는 값: 2-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_leave_policy · 웹 API PATCH /api/leave/policies/:eid {accrual_basis, carryover_method, base_annual_days}
     다음으로 넘길 값: 바뀐 항목
```

- 필요한 값 · 되묻기: 부여 기준(입사일·회계연도) / 남은 연차 처리(소멸·수당·이월) / 기본 연차 일수
- 끝: 고른 연차 기준이 회사 휴가 규칙에 저장돼요.
- 화면: 휴가 → 휴가 규칙 (/admin/enterprise/hr/leave-policy)
- 하면 안 되는 것: 확인 없이 회사 규칙을 바꾸지 않아요. / 바꾸는 항목만 고치고 나머지는 그대로 둬요.

### LV-11 반차(오전·오후)를 신청해요.
- 누가: 직원 · 팀장 · 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「금요일 오전 반차 신청해줘」 「내일 오후 반차 쓸게요」 「목요일 오후에 반차 낼래」 「오전 반차 올려줘」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"approval_preview","args":{"type":"leave"}}}
     서버: 몸통 src/routes/mcp-tools/approval-request.ts:engineLine
     다음으로 넘길 값: 결재자 이름
  (값이 없으면 먼저 물어요: 「오전 반차인가요, 오후 반차인가요?」)
  2-미리보기. tools/call {"name":"approval_request","arguments":{"type":"leave","start_date":"2026-10-23","leave_type":"half_morning","reason":"병원 방문"}}
     서버: 몸통 src/routes/mcp-tools/approval-request.ts:buildPlan · 함수 src/routes/mcp-leave-request.ts:createMcpLeaveRequest · 웹 API POST /api/leave/requests {start_date, leave_type, reason}
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  2-확정. tools/call {"name":"approval_request","arguments":{"type":"leave","start_date":"2026-10-23","leave_type":"half_morning","reason":"병원 방문","confirmation_id":"<2-미리보기.confirmation_id>"}}
     넘겨받는 값: 2-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/approval-request.ts:buildPlan · 함수 src/routes/mcp-leave-request.ts:createMcpLeaveRequest · 웹 API POST /api/leave/requests {start_date, leave_type, reason}
     다음으로 넘길 값: 휴가 신청 번호 · 결재자 이름
```

- 필요한 값 · 되묻기: 날짜(반차는 하루만 돼요) / 오전인지 오후인지
- 끝: 반차 신청이 올라가고 0.5일이 대기로 잡혀요.
- 화면: 휴가 → 휴가 신청 (/worker/leave)
- 하면 안 되는 것: 반차를 이틀 이상으로 올리지 않아요. / 회사가 반차를 막았으면 올리지 않아요.

### LV-12 이미 승인된 내 휴가를 취소하고 싶어요.
- 누가: 직원 · 팀장 · 관리자 · 대표
- 방식: 아직 AI 로 안 돼요 · 대신 화면
- 이렇게 말해요: 「승인된 휴가 취소하고 싶어요」 「다음 주 연차 없던 걸로 해야 해요」 「결재 끝난 휴가 철회할래」 「내가 올린 취소 결재는 누가 처리해?」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_my_leaves","args":{"status":"approved","year":2026}}}
     서버: 몸통 src/routes/mcp-tools/leave.ts:query_my_leaves · 웹 API GET /api/leave/requests/me
     다음으로 넘길 값: 신청 번호 · 날짜 · 종류
```

- 필요한 값 · 되묻기: 아직 AI 로 안 돼요 · 대신 화면에서 해요. / 화면에서 취소 결재 요청을 올려요.
- 끝: 승인된 휴가 목록을 보여 주고 취소 결재 요청 화면으로 안내해요.
- 화면: 휴가 → 내 휴가 신청 이력 (/worker/leave)
- 하면 안 되는 것: 승인된 휴가를 바로 지우지 않아요. / 본인이 올린 취소 결재를 본인이 승인하지 않아요.

### LV-13 휴가를 결재하는 사람을 더하거나 빼요.
- 누가: 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「휴가 결재자에 박가상 추가해줘」 「휴가 결재권자에서 이가상 빼줘」 「휴가 결재선이 어떻게 돼 있어?」 「부서장 휴가는 누가 결재하게 해줘」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_approval_lines","args":{}}}
     서버: 몸통 src/routes/mcp-tools/approvals.ts:query_approval_lines
     다음으로 넘길 값: 지금 결재 순서
  (값이 없으면 먼저 물어요: 「누구를 휴가 결재자로 더할까요?」)
  2. tools/call {"name":"run_write","arguments":{"tool":"set_approval_line","args":{"action":"add","item_type":"leave","worker":"박가상"}}}
     서버: 몸통 src/routes/mcp-tools/approval-roster-tool.ts:set_approval_line · 함수 src/lib/approval-authority-write.ts:addApprovalAuthority
     다음으로 넘길 값: 바뀐 결재자 명단
     그다음: 후보가 여럿이면(needs_choice) 「같은 이름이 여럿이에요. 누구일까요?」 → 고른 id 로 같은 줄을 다시 · 앱에서 사람이 승인한 뒤 같은 인자로 다시 불러요
```

- 필요한 값 · 되묻기: 더할지 뺄지 / 대상 직원 이름 / 앱에서 사람이 한 번 더 승인해야 해요.
- 끝: 앞으로 올라올 휴가 결재의 후보 명단이 바뀌어요.
- 화면: 결재하는 사람 → 휴가 결재권자 (/admin/enterprise/approval-rules)
- 하면 안 되는 것: 이미 올라온 결재는 옮기지 않아요. / 부서장은 자동 포함이라 더하거나 빼지 않아요.

### LV-14 내가 올린 휴가 신청의 상태를 봐요.
- 누가: 직원 · 팀장 · 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「내가 신청한 휴가 보여줘」 「내 휴가 신청 상태 알려줘」 「휴가 승인됐어?」 「반려된 휴가 있어?」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_my_leaves","args":{"status":"all","year":2026,"limit":10}}}
     서버: 몸통 src/routes/mcp-tools/leave.ts:query_my_leaves · 웹 API GET /api/leave/requests/me
     다음으로 넘길 값: 신청 번호 · 날짜 · 종류 · 상태 · 반려 사유
```

- 필요한 값 · 되묻기: 상태 말이 없으면 전부 보여요. / 연도 말이 없으면 올해예요.
- 끝: 날짜·종류·상태를 신청마다 한 줄씩 보여 줘요.
- 화면: 휴가 → 내 휴가 신청 이력 (/worker/leave)
- 하면 안 되는 것: 다른 사람 신청을 이 흐름으로 보지 않아요.

### LV-15 반반차나 시간 단위로 쉬는 휴가를 신청해요.
- 누가: 직원 · 팀장 · 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「수요일 반반차 쓸게요」 「목요일 오후 2시부터 2시간만 쉴게요」 「시간 연차 쓰고 싶어요」 「두 시간만 연차 올려줘」

호출 순서 (POST /api/mcp · tools/call):

```text
  (값이 없으면 먼저 물어요: 「몇 시부터 쉬시나요?」)
  1-미리보기. tools/call {"name":"run_write","arguments":{"tool":"request_leave","args":{"start_date":"2026-10-28","leave_type":"quarter","start_time":"14:00","reason":"개인 용무"}}}
     서버: 몸통 src/routes/mcp-tool-handlers.ts:request_leave · 함수 src/routes/mcp-leave-request.ts:createMcpLeaveRequest · 웹 API POST /api/leave/requests {start_date, leave_type, start_time, hours, reason}
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  1-확정. tools/call {"name":"run_write","arguments":{"tool":"request_leave","args":{"start_date":"2026-10-28","leave_type":"quarter","start_time":"14:00","reason":"개인 용무"},"confirmation_id":"<1-미리보기.confirmation_id>"}}
     넘겨받는 값: 1-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tool-handlers.ts:request_leave · 함수 src/routes/mcp-leave-request.ts:createMcpLeaveRequest · 웹 API POST /api/leave/requests {start_date, leave_type, start_time, hours, reason}
     다음으로 넘길 값: 휴가 신청 번호 · 쉬는 일수 · 결재자 이름
```

- 필요한 값 · 되묻기: 날짜(하루만 돼요) / 시작 시각 / 시간 단위로 쉴 때는 몇 시간인지
- 끝: 반반차나 시간 연차 신청이 올라가요.
- 화면: 휴가 → 휴가 신청 (/worker/leave)
- 하면 안 되는 것: 확인 없이 신청을 올리지 않아요. / 회사가 막아 둔 휴가는 올리지 않아요.

### LV-16 남은 연차를 쓰도록 직원에게 알려요.
- 누가: 관리자 · 대표
- 방식: 아직 AI 로 안 돼요 · 대신 화면
- 이렇게 말해요: 「연차 촉진 기능 있나요?」 「연차 사용촉진 통보 보내줘」 「남은 연차 쓰라고 직원들에게 알리고 싶어」 「1차 촉진 통지는 어디서 해?」
- 호출 순서: 없음(화면에서 해요)
- 필요한 값 · 되묻기: 아직 AI 로 안 돼요 · 대신 화면에서 해요. / 휴가 규칙에서 연차 촉진제를 먼저 시행으로 켜요.
- 끝: 사용촉진 통보를 보내는 화면과 순서를 알려 줘요.
- 화면: 연차 결재 → 사용촉진 (/admin/enterprise/leave-encouragement)
- 하면 안 되는 것: AI 가 통보를 대신 보내지 않아요. / 대상자 목록은 연차를 적게 쓴 직원 흐름에서 봐요.

### LV-17 직원 연차를 더하거나 빼요.
- 누가: 관리자 · 대표
- 방식: 아직 AI 로 안 돼요 · 대신 화면
- 이렇게 말해요: 「직원들 연차를 하루씩 더 주고 싶어요」 「포상 휴가로 연차 하루 추가해줘」 「연차 보너스 일괄로 넣을 수 있어?」 「특정 직원 연차 조정하고 싶어요」
- 호출 순서: 없음(화면에서 해요)
- 필요한 값 · 되묻기: 아직 AI 로 안 돼요 · 대신 화면에서 해요. / 직원 줄을 눌러 연차 카드의 수정을 눌러요.
- 끝: 연차를 조정하는 화면과 순서를 알려 줘요.
- 화면: 휴가 → 직원별 휴가 (/admin/enterprise/hr/leave-ledger)
- 하면 안 되는 것: AI 가 직원 연차를 대신 바꾸지 않아요. / 조정 사유를 꼭 적으라고 안내해요.

### LV-18 우리 팀에서 승인 기다리는 휴가를 봐요.
- 누가: 팀장 · 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「우리팀 휴가 신청 누가 했어?」 「승인할 휴가 있어?」 「팀 휴가 대기 목록 보여줘」 「휴가 대기 중인 팀원 알려줘」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_team_pending_leaves","args":{"limit":10}}}
     서버: 몸통 src/routes/mcp-tool-handlers.ts:query_team_pending_leaves
     다음으로 넘길 값: 신청자 · 날짜 · 종류 · 신청 번호
```

- 필요한 값 · 되묻기: 따로 필요한 값은 없어요. / 내 팀 신청만 보여요.
- 끝: 승인 기다리는 팀원 휴가를 건수와 함께 보여 줘요.
- 화면: 결재/요청 → 결재함 (/worker/requests?view=history&tab=need)
- 하면 안 되는 것: 이 흐름으로 승인이나 반려를 하지 않아요. / 다른 팀 신청은 보여 주지 않아요.

### LV-19 우리 회사 휴가 규칙을 봐요.
- 누가: 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「우리 회사 연차 정책 어떻게 돼?」 「반차 되는지 규칙 보여줘」 「연차 며칠부터 시작해?」 「휴가 규칙 알려줘」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_leave_policy","args":{}}}
     서버: 몸통 src/routes/mcp-tools/policies.ts:query_leave_policy · 함수 src/lib/leave-policy.ts:resolveLeavePolicy · 웹 API GET /api/leave/policies/:eid
     다음으로 넘길 값: 기본 연차 일수 · 부여 기준 · 반차·병가 허용
```

- 필요한 값 · 되묻기: 따로 필요한 값은 없어요.
- 끝: 기본 연차·부여 기준·허용 휴가를 보여 줘요.
- 화면: 휴가 → 휴가 규칙 (/admin/enterprise/hr/leave-policy)
- 하면 안 되는 것: 이 흐름으로 규칙을 바꾸지 않아요.

### LV-20 우리 회사만 쓰는 휴가 종류를 만들어요.
- 누가: 관리자 · 대표
- 방식: 아직 AI 로 안 돼요 · 대신 화면
- 이렇게 말해요: 「사내 포상 휴가 종류 만들어줘」 「휴가 종류 추가하고 싶어요」 「리프레시 휴가 새로 만들고 싶어」 「회사 휴가 유형 관리는 어디서 해?」
- 호출 순서: 없음(화면에서 해요)
- 필요한 값 · 되묻기: 아직 AI 로 안 돼요 · 대신 화면에서 해요. / 휴가 종류 화면에서 유형 추가를 눌러요.
- 끝: 휴가 종류를 만드는 화면과 순서를 알려 줘요.
- 화면: 휴가 → 휴가 종류 (/admin/enterprise/hr/leave-types)
- 하면 안 되는 것: AI 가 휴가 종류를 대신 만들지 않아요. / 종류는 회사에서 최대 열 개까지 가능해요.

### LV-21 병가나 경조 같은 다른 종류 휴가를 올려요.
- 누가: 직원 · 팀장 · 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「병가 쓸게요」 「결혼해서 경조휴가 3일 올려줘」 「무급휴가 하루 신청해줘」 「경조사 휴가 신청 부탁해요」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"approval_preview","args":{"type":"leave"}}}
     서버: 몸통 src/routes/mcp-tools/approval-request.ts:engineLine
     다음으로 넘길 값: 결재자 이름
  (값이 없으면 먼저 물어요: 「어떤 종류의 휴가인가요?」)
  2-미리보기. tools/call {"name":"approval_request","arguments":{"type":"leave","start_date":"2026-11-02","end_date":"2026-11-04","leave_type":"family_event","reason":"본인 결혼"}}
     서버: 몸통 src/routes/mcp-tools/approval-request.ts:buildPlan · 함수 src/routes/mcp-leave-request.ts:createMcpLeaveRequest · 웹 API POST /api/leave/requests {start_date, end_date, leave_type, reason}
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  2-확정. tools/call {"name":"approval_request","arguments":{"type":"leave","start_date":"2026-11-02","end_date":"2026-11-04","leave_type":"family_event","reason":"본인 결혼","confirmation_id":"<2-미리보기.confirmation_id>"}}
     넘겨받는 값: 2-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/approval-request.ts:buildPlan · 함수 src/routes/mcp-leave-request.ts:createMcpLeaveRequest · 웹 API POST /api/leave/requests {start_date, end_date, leave_type, reason}
     다음으로 넘길 값: 휴가 신청 번호 · 결재자 이름
```

- 필요한 값 · 되묻기: 종류(병가·경조사·무급·출산·공가) / 시작하는 날과 끝나는 날 / 사유
- 끝: 고른 종류의 휴가 신청이 올라가요.
- 화면: 휴가 → 휴가 신청 (/worker/leave)
- 하면 안 되는 것: 회사가 막아 둔 종류는 올리지 않아요. / 월차나 쉬는 날은 연차로 보지 않고 종류를 물어요.

### LV-22 팀원의 남은 연차를 봐요.
- 누가: 팀장 · 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「김가상 연차 얼마나 남았어?」 「이가상 휴가 며칠 남았어요」 「우리 팀원 남은 연차 알려줘」 「박가상 올해 연차 몇 개야」

호출 순서 (POST /api/mcp · tools/call):

```text
  (값이 없으면 먼저 물어요: 「누구의 연차를 볼까요?」)
  1. tools/call {"name":"run_read","arguments":{"tool":"query_leave_balance","args":{"worker":"김가상","year":2026}}}
     서버: 몸통 src/routes/mcp-tools/leave.ts:query_leave_balance
     다음으로 넘길 값: 남은 일수 · 사용 일수
```

- 필요한 값 · 되묻기: 직원 이름 / 연도 말이 없으면 올해예요.
- 끝: 그 직원의 올해 남은 연차 일수를 보여 줘요.
- 화면: 관리 → 휴가현황 (/worker/team?tab=leave)
- 하면 안 되는 것: 부서장은 자기 팀 밖 직원 연차를 보지 않아요.

### LV-23 연차를 거의 안 쓴 직원이 누구인지 봐요.
- 누가: 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「연차 안 쓴 사람 누구야?」 「휴가 촉진 대상 알려줘」 「연차를 3일도 안 쓴 직원 보여줘」 「올해 연차 적게 쓴 직원」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_low_leave_users","args":{"year":2026,"max_used_days":3}}}
     서버: 몸통 src/routes/mcp-tools/org-payroll.ts:query_low_leave_users
     다음으로 넘길 값: 이름 · 부서 · 사용 일수 · 남은 일수
```

- 필요한 값 · 되묻기: 기준 일수 말이 없으면 3일 이하로 봐요. / 연도 말이 없으면 올해예요.
- 끝: 연차를 적게 쓴 직원을 적게 쓴 순서로 보여 줘요.
- 화면: 연차 결재 → 사용촉진 (/admin/enterprise/leave-encouragement)
- 하면 안 되는 것: 이 흐름으로 통보를 보내지 않아요.

### LV-24 반려된 휴가를 고쳐서 다시 올려요.
- 누가: 직원 · 팀장 · 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「반려된 휴가 고쳐서 다시 올려줘」 「거절된 연차 날짜 바꿔서 다시 신청할래」 「반려된 거 재신청해줘」 「휴가 반려됐는데 다시 올리고 싶어」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_my_leaves","args":{"status":"rejected","year":2026}}}
     서버: 몸통 src/routes/mcp-tools/leave.ts:query_my_leaves · 웹 API GET /api/leave/requests/me
     다음으로 넘길 값: 신청 번호 · 반려 사유
  (값이 없으면 먼저 물어요: 「어느 날로 바꿔서 다시 올릴까요?」)
  2-미리보기. tools/call {"name":"run_write","arguments":{"tool":"approval_resubmit","args":{"type":"leave","start_date":"2026-10-28","reason":"일정 조정 후 다시 신청","end_date":"2026-10-28"}}}
     넘겨받는 값: 1.leaves.0.leave_id → from_id
     서버: 몸통 src/routes/mcp-tools/approval-request.ts:buildPlan · 함수 src/routes/mcp-leave-request.ts:createMcpLeaveRequest · 웹 API POST /api/leave/requests
     다음으로 넘길 값: confirmation_id
     그다음: 후보가 여럿이면(needs_choice) 「어느 반려 건을 다시 올릴까요?」 → 고른 id 로 같은 줄을 다시 · 미리보기를 사용자에게 보여 주고 「네」를 받아요
  2-확정. tools/call {"name":"run_write","arguments":{"tool":"approval_resubmit","args":{"type":"leave","start_date":"2026-10-28","reason":"일정 조정 후 다시 신청","end_date":"2026-10-28"},"confirmation_id":"<2-미리보기.confirmation_id>"}}
     넘겨받는 값: 1.leaves.0.leave_id → from_id · 2-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/approval-request.ts:buildPlan · 함수 src/routes/mcp-leave-request.ts:createMcpLeaveRequest · 웹 API POST /api/leave/requests
     다음으로 넘길 값: 새 신청 번호 · 결재자 이름
```

- 필요한 값 · 되묻기: 다시 올릴 반려 건 / 바꿀 날짜나 사유
- 끝: 고친 내용으로 휴가 신청이 새로 올라가요.
- 화면: 휴가 → 내 휴가 신청 이력 (/worker/leave)
- 하면 안 되는 것: 확인 없이 다시 올리지 않아요. / 남이 반려받은 건은 다시 올리지 않아요.

### LV-25 회사 전체의 휴가 사용 현황을 봐요.
- 누가: 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「전사 휴가 사용률 알려줘」 「올해 연차 얼마나 썼어?」 「회사 연차 현황 보여줘」 「직원들 연차 사용한 합계」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_company_leave_summary","args":{"year":2026}}}
     서버: 몸통 src/routes/mcp-tools/leave.ts:query_company_leave_summary
     다음으로 넘길 값: 부여 합계 · 사용 합계 · 남은 합계 · 사용률
```

- 필요한 값 · 되묻기: 연도 말이 없으면 올해예요.
- 끝: 부여·사용·남은 연차 합계와 사용률을 보여 줘요.
- 화면: 휴가 → 직원별 휴가 (/admin/enterprise/hr/leave-ledger)
- 하면 안 되는 것: 개인별 연차는 이 흐름에서 보여 주지 않아요.

### LV-26 회사 전체에서 승인 기다리는 휴가를 봐요.
- 누가: 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「결재 대기 중인 휴가 보여줘」 「승인 안 된 휴가 전체 목록」 「내가 승인해야 할 휴가 뭐 있어」 「회사 전체 휴가 대기」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_leaves_pending","args":{}}}
     서버: 몸통 src/routes/mcp-tool-handlers.ts:query_leaves_pending
     다음으로 넘길 값: 신청자 · 부서 · 날짜 · 종류 · 신청 번호
```

- 필요한 값 · 되묻기: 따로 필요한 값은 없어요.
- 끝: 회사 전체의 승인 기다리는 휴가를 오래된 순서로 보여 줘요.
- 화면: 결재/요청 → 결재함 (/worker/requests?view=history&tab=need)
- 하면 안 되는 것: 이 흐름으로 승인이나 반려를 하지 않아요.

### LV-27 오늘이나 내일 누가 쉬는지 봐요.
- 누가: 팀장 · 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「내일 누가 쉬어?」 「오늘 휴무자 알려줘」 「우리팀 이번주 휴가자 있어?」 「10월 22일에 쉬는 사람」

호출 순서 (POST /api/mcp · tools/call):

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_leaves_on_date","args":{"date":"2026-10-22"}}}
     서버: 몸통 src/routes/mcp-tools/leave.ts:query_leaves_on_date
     다음으로 넘길 값: 이름 · 부서 · 휴가 종류 · 기간
```

- 필요한 값 · 되묻기: 날짜 말이 없으면 오늘이에요.
- 끝: 그날 쉬는 사람의 이름과 휴가 종류를 보여 줘요.
- 화면: 관리 → 휴가현황 (/worker/team?tab=leave)
- 하면 안 되는 것: 부서장은 자기 팀 사람만 봐요. / 승인 기다리는 휴가는 쉬는 사람에 넣지 않아요.

### LV-28 회사가 쉬는 날(공휴일)을 정해요.
- 누가: 관리자 · 대표
- 방식: 아직 AI 로 안 돼요 · 대신 화면
- 이렇게 말해요: 「공휴일 등록은 어디서 해?」 「회사 창립기념일을 쉬는 날로 하고 싶어요」 「우리 회사 쉬는 날 추가해줘」 「공휴일에 나오면 가산 붙는지 보고 싶어」
- 호출 순서: 없음(화면에서 해요)
- 필요한 값 · 되묻기: 아직 AI 로 안 돼요 · 대신 화면에서 해요. / 쉬는 날 화면에서 날짜를 추가해요.
- 끝: 쉬는 날을 정하는 화면을 알려 줘요.
- 화면: 휴가 → 쉬는 날 (/admin/enterprise/hr/company-holidays)
- 하면 안 되는 것: AI 가 쉬는 날을 대신 정하지 않아요.

### 이 영역 도구가 나오는 다른 흐름

- MULTI-02 필요한 도구를 찾고 남은 연차를 읽어요. → https://insacheck.com/docs/mcp/multi.md
- MULTI-03 휴가 신청 기능을 찾고 반차를 올려요. → https://insacheck.com/docs/mcp/multi.md
- MULTI-05 직원을 찾고 그 사람의 남은 연차를 봐요. → https://insacheck.com/docs/mcp/multi.md
- MULTI-06 남은 연차를 보고 확인한 뒤 휴가를 올려요. → https://insacheck.com/docs/mcp/multi.md
- MULTI-14 휴가를 올리고 바로 취소해요. → https://insacheck.com/docs/mcp/multi.md
- MULTI-16 오늘 출근 현황과 휴가자를 함께 봐요. → https://insacheck.com/docs/mcp/multi.md
- MULTI-18 남은 연차와 쓴 내역을 같이 봐요. → https://insacheck.com/docs/mcp/multi.md

## 안 되는 것 · 대안

아직 AI 로 안 되는 일이에요. 대신 화면에서 해요.

- 올라온 휴가 신청을 승인하거나 반려하고 싶어요. → 결재/요청 → 결재함 (/worker/requests?view=history&tab=need)
- 내 연차가 왜 이 숫자인지 알고 싶어요. → 휴가 → 연차 표 (/worker/leave/table)
- 직원이 취소해 달라고 한 승인된 휴가를 처리해요. → 연차 결재 → 휴가 취소 결재 (/admin/enterprise/leave)
- 이미 승인된 내 휴가를 취소하고 싶어요. → 휴가 → 내 휴가 신청 이력 (/worker/leave)
- 남은 연차를 쓰도록 직원에게 알려요. → 연차 결재 → 사용촉진 (/admin/enterprise/leave-encouragement)
- 직원 연차를 더하거나 빼요. → 휴가 → 직원별 휴가 (/admin/enterprise/hr/leave-ledger)
- 우리 회사만 쓰는 휴가 종류를 만들어요. → 휴가 → 휴가 종류 (/admin/enterprise/hr/leave-types)
- 회사가 쉬는 날(공휴일)을 정해요. → 휴가 → 쉬는 날 (/admin/enterprise/hr/company-holidays)
