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

# 회사 설정 (company)

회사 정보 · 근무지 · 근태와 휴가 정책 · 거래처 · 차량.

## 할 수 있는 일

- 도구 20개 · 흐름 24개 (AI 로 끝까지 19개 · 화면 안내 5개)
- SET-01 우리 회사 정보를 한눈에 봐요.
- SET-02 회사 이름을 바꿔요.
- SET-03 회사 전화번호와 주소를 바꿔요.
- SET-04 회사 담당자 연락처를 바꿔요.
- SET-06 기본 연차 일수와 상한을 바꿔요.
- SET-07 반차와 무급 휴가를 쓰게 켜요.
- SET-08 쓰고 남은 연차를 넘기는 방법을 정해요.
- SET-09 연차 계산 기준을 정해요.
- SET-10 GPS 위치 확인을 끄거나 낮춰요.
- SET-11 출근 가능한 반경을 바꿔요.
- SET-12 사무실 와이파이 이름을 등록해요.
- SET-13 바깥 근무 출퇴근을 쓰게 켜요.
- SET-14 우리 회사 일하는 곳 목록을 봐요.
- SET-15 새 일하는 곳을 추가해요.
- SET-16 일하는 곳의 반경을 바꿔요.
- SET-17 문 닫은 일하는 곳을 비활성으로 바꿔요.
- SET-18 연장근무 시작 시각과 저녁 휴게를 정해요.
- SET-19 결재하는 사람 묶음을 봐요.
- SET-20 결재하는 사람을 넣거나 빼요.

## 도구

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

| 이름 | 조회/쓰기 | 등급 | 필요 역할 | 범위 | 설명 | 부르는 길 |
|---|---|---|---|---|---|---|
| `query_company_info` | 조회 | 0 바로 조회 | owner (대표) | view | 우리 회사 기본정보와 근태/정책 설정 현황을 조회합니다. 수정 전에 현재 값을 확인할 때 사용. "우리 회사 정보 보여줘", "지금 연차 정책 어떻게 돼 있어?", "사업자등록번호 맞게 들어가 있어?" 같은 질문에. 회사 설정 권한이 있는 사람(대표·회사 관리자·임시 관리자)만. | run_read |
| `update_company_info` | 쓰기 | 2 미리보기 → 확정 | owner (대표) | admin | 회사 기본정보를 수정합니다. "우리 회사 상호를 인사책으로 바꿔", "대표자 이름 김보람으로", "회사 주소 바꿔줘", "회사 주소/업종/대표전화 수정" 같은 명령에. 바꿀 항목만 넘기면 나머지는 그대로 유지. 회사 설정 권한이 있는 사람(대표·회사 관리자·임시 관리자)만. | run_write |
| `update_attendance_policy` | 쓰기 | 2 미리보기 → 확정 | owner (대표) | admin | 출퇴근(근태) 정책을 수정합니다. "GPS 반경 100미터로", "출퇴근 GPS 검증을 soft로 완화", "외근 자동전환 꺼줘", "회사 Wi-Fi 이름 설정" 같은 명령에. 회사 설정 권한이 있는 사람(대표·회사 관리자·임시 관리자)만. 대상을 골라 거는 기능이 없습니다 — GPS 판정·외근 자동전환은 회사 전체에, Wi-Fi 이름·반경은 첫 번째 active 사업장에 적용됩니다. 사업장·부서·개인별로 다른 근무정책을 거는 것은 관리자 화면(회사 근무 방침)에서 합니다. | run_write |
| `update_company_work_hours` | 쓰기 | 2 미리보기 → 확정 | hr_manager (관리자 이상) | admin | 회사 기본 출퇴근·점심 시각을 바꿉니다 — "출근 9시 퇴근 6시", "퇴근 시간 6시로 바꿔줘", "점심 12시~1시" 같은 말에 사용. start 출근 · end 퇴근 · lunch_start/lunch_end 점심(모두 24시간 "HH:MM" · 예 "09:00") 중 하나 이상. 말하지 않은 칸은 지금 값 그대로예요. 부서·사업장·직원에게 따로 정한 시간은 바뀌지 않아요. 교대·요일별 근무 회사는 웹 근무 방침 화면에서 바꿔야 해요. 미리보기로 지금 값과 바뀐 뒤를 보여 준 뒤, 사람이 확인하면 같은 인자에 confirmation_id 를 넣어 다시 부르세요. 회사 설정 권한(대표) 전용. | run_write |
| `query_leave_policy` | 조회 | 0 바로 조회 | hr_manager (관리자 이상) | view | 회사 연차/휴가 정책 (기본 부여일수, 회계연도 시작, 반차/반반차 지원 등). "우리 회사 연차 정책 어떻게 돼?", "연차 며칠부터 시작?" 같은 질문에 사용. 인사 권한 필요. | run_read |
| `update_leave_policy` | 쓰기 | 2 미리보기 → 확정 | owner (대표) | admin | 연차/휴가 정책을 수정합니다. "연차 기본 15일로", "3년차부터 2년마다 +1일, 상한 25일", "반차 허용", "무급휴가 켜줘", "연차를 회계연도 기준으로 바꿔", "주 4일 근무로" 같은 명령에. 바꿀 항목만 넘기면 나머지 유지. 회사 설정 권한이 있는 사람(대표·회사 관리자·임시 관리자)만. | run_write |
| `query_worksites` | 조회 | 0 바로 조회 | employee (직원) | view | 회사 사업장(본사/지점/공장/매장/물류/해외법인/대리점) 목록과 인원·GPS·지역을 조회합니다. "우리 회사 사업장 어디어디 있어?", "지점 목록", "사업장별 인원" 같은 질문에 사용. | run_read |
| `create_worksite` | 쓰기 | 2 미리보기 → 확정 | hr_manager (관리자 이상) | admin | 사업장(본사/지점/공장/매장/해외법인/대리점 등)을 추가합니다. "강남지점 만들어", "부산공장 등록", "베트남법인 사업장 추가" 같은 명령에 사용. GPS 좌표·반경을 주면 그 사업장의 출퇴근 인증 범위가 됩니다. 인사 권한 필요. | run_write |
| `update_worksite` | 쓰기 | 2 미리보기 → 확정 | hr_manager (관리자 이상) | admin | 사업장 정보(GPS/종류/지역/타임존/반경/활성)를 수정합니다. "강남지점 반경 200미터로", "부산공장 GPS 갱신", "제주점 폐쇄" 같은 명령에 사용. 인사 권한 필요. | run_write |
| `query_worksite_headcount` | 조회 | 0 바로 조회 | dept_manager (팀장 이상) | view | 사업장별 재직 인원 현황 + 미배치 인원. "지점별 인원 몇 명?", "사업장별 헤드카운트", "강남지점 몇 명?" 같은 질문에 사용. 부서장 이상. | run_read |
| `link_party_to_worksite` | 쓰기 | 2 미리보기 → 확정 | hr_manager (관리자 이상) | admin | 비직원(가맹점주 등)을 특정 사업장에 연결합니다. "강남점주를 강남지점에 연결" 같은 명령에 사용. 인사 권한 필요. | run_write |
| `register_external_party` | 쓰기 | 2 미리보기 → 확정 | hr_manager (관리자 이상) | admin | 비직원 협력관계(가맹점주/대리점/위탁/파견사/프리랜서/협력사)를 등록합니다. "강남가맹점 점주 김사장 등록", "OO파견사 등록" 같은 명령에 사용. 근로자(직원)가 아닌 외부 관계를 별도 관리 — 근로계약/4대보험 전제 없음. 인사 권한 필요. | run_write |
| `query_external_parties` | 조회 | 0 바로 조회 | dept_manager (팀장 이상) | view | 비직원 협력관계 목록. "우리 가맹점 몇 개야?", "대리점 목록", "거래 파견사" 같은 질문에 사용. 부서장 이상. | run_read |
| `update_external_party` | 쓰기 | 2 미리보기 → 확정 | hr_manager (관리자 이상) | admin | 비직원 관계 정보/상태를 수정합니다. "강남가맹점 계약종료 처리", "OO파견사 연락처 변경" 같은 명령에 사용. 인사 권한 필요. | run_write |
| `query_corporate_vehicles` | 조회 | 0 바로 조회 | employee (직원) | view | 법인 차량 목록. "우리 회사 법인차 뭐 있어?", "차량 목록" 같은 질문에 사용. | run_read |
| `register_corporate_vehicle` | 쓰기 | 2 미리보기 → 확정 | hr_manager (관리자 이상) | admin | 법인 차량을 등록합니다. "법인차 12가1234 아반떼 등록" 같은 명령에 사용. 인사 권한 필요. | run_write |
| `log_vehicle_trip` | 쓰기 | 2 미리보기 → 확정 | employee (직원) | send | 차량 운행일지를 기록합니다. "법인차 1번 본사→강남 거래처 30km 운행" 같은 명령에 사용. 누적 주행거리가 자동 합산됩니다. | run_write |
| `query_vehicle_logs` | 조회 | 0 바로 조회 | dept_manager (팀장 이상) | view | 차량 운행일지 조회 (차량 지정 또는 최근). "법인차 1번 운행기록", "이번달 운행일지" 같은 질문에 사용. 부서장 이상. | run_read |
| `set_feature_switch` | 쓰기 | 2 미리보기 → 확정 | hr_manager (관리자 이상) | admin | 회사 기능을 켜거나 끕니다 — feature 는 tasks=업무책 · drive=책Drive(파일 클라우드). "업무책 꺼 줘", "책Drive 켜 줘" 같은 말에 사용. on=true 켜기 · on=false 끄기. 끄는 일은 메뉴만 숨겨요 — 쓴 데이터는 그대로 남고 다시 켜면 보여요. 미리보기로 지금 상태와 바뀔 상태를 보여 준 뒤, 사람이 확인하면 같은 인자에 confirmation_id 를 넣어 다시 부르세요. 대표·회사 관리자 전용. | run_write |
| `billing_status` | 조회 | 0 바로 조회 | owner (대표) | view | 우리 회사의 결제 현황을 봅니다. "포인트 얼마 남았어?", "다음 결제일이 언제야?", "최근 결제 내역 보여줘" 같은 질문에 사용. 포인트 잔액과 소멸 예정, 정기결제 상태(쓰는 회사만), 최근 결제 내역(충전 · 청구서 · 영수증 주소)을 알려 줘요. 보기만 해요 — 결제 · 해지 · 카드 · 충전은 인사책 앱에서 직접 해야 하고, 세금계산서 목록은 볼 수 없어요. 대표 권한 필요. | run_read |

도구마다 따로 읽는 문서: [query_company_info](https://insacheck.com/docs/mcp/tools/query_company_info.md) · [update_company_info](https://insacheck.com/docs/mcp/tools/update_company_info.md) · [update_attendance_policy](https://insacheck.com/docs/mcp/tools/update_attendance_policy.md) · [update_company_work_hours](https://insacheck.com/docs/mcp/tools/update_company_work_hours.md) · [query_leave_policy](https://insacheck.com/docs/mcp/tools/query_leave_policy.md) · [update_leave_policy](https://insacheck.com/docs/mcp/tools/update_leave_policy.md) · [query_worksites](https://insacheck.com/docs/mcp/tools/query_worksites.md) · [create_worksite](https://insacheck.com/docs/mcp/tools/create_worksite.md) · [update_worksite](https://insacheck.com/docs/mcp/tools/update_worksite.md) · [query_worksite_headcount](https://insacheck.com/docs/mcp/tools/query_worksite_headcount.md) · [link_party_to_worksite](https://insacheck.com/docs/mcp/tools/link_party_to_worksite.md) · [register_external_party](https://insacheck.com/docs/mcp/tools/register_external_party.md) · [query_external_parties](https://insacheck.com/docs/mcp/tools/query_external_parties.md) · [update_external_party](https://insacheck.com/docs/mcp/tools/update_external_party.md) · [query_corporate_vehicles](https://insacheck.com/docs/mcp/tools/query_corporate_vehicles.md) · [register_corporate_vehicle](https://insacheck.com/docs/mcp/tools/register_corporate_vehicle.md) · [log_vehicle_trip](https://insacheck.com/docs/mcp/tools/log_vehicle_trip.md) · [query_vehicle_logs](https://insacheck.com/docs/mcp/tools/query_vehicle_logs.md) · [set_feature_switch](https://insacheck.com/docs/mcp/tools/set_feature_switch.md) · [billing_status](https://insacheck.com/docs/mcp/tools/billing_status.md)

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

### SET-01 우리 회사 정보를 한눈에 봐요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「우리 회사 정보 보여줘」 「회사 정보 어떻게 돼 있어?」 「등록된 회사 전화번호랑 주소 알려줘」

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

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_company_info","args":{}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:query_company_info
     다음으로 넘길 값: 회사 이름 · 대표자 · 근무 정책 · 휴가 정책
```

- 필요한 값 · 되묻기: 따로 필요한 값은 없어요.
- 끝: 회사 정보와 근무·휴가 정책 요약을 보여 줘요.
- 화면: 설정 → 회사 정보 (/admin/enterprise/profile)
- 하면 안 되는 것: 사업자등록증 파일은 이 흐름으로 보여 주지 않아요.

### SET-02 회사 이름을 바꿔요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「회사 이름을 가상상사로 바꿔줘」 「상호 변경해 주세요」 「우리 회사 이름 고쳐줘」

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

```text
  (값이 없으면 먼저 물어요: 「바꿀 회사 이름이 뭐예요?」)
  1-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_company_info","args":{"name":"가상상사"}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_company_info
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  1-확정. tools/call {"name":"run_write","arguments":{"tool":"update_company_info","args":{"name":"가상상사"},"confirmation_id":"<1-미리보기.confirmation_id>"}}
     넘겨받는 값: 1-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_company_info
```

- 필요한 값 · 되묻기: 새 회사 이름(1~100자)
- 끝: 회사 이름이 새 이름으로 저장돼요.
- 화면: 설정 → 회사 정보 (/admin/enterprise/profile)
- 하면 안 되는 것: 대표 역할이나 직원 이름은 이 흐름으로 바꾸지 않아요.

### SET-03 회사 전화번호와 주소를 바꿔요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「회사 전화번호 바꿔줘」 「사무실 이사했어, 주소 새로 넣어줘」 「대표 번호랑 주소 수정해 줘」

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

```text
  (값이 없으면 먼저 물어요: 「새 전화번호와 주소를 알려 주세요.」)
  1-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_company_info","args":{"phone":"02-0000-0000","address":"서울시 가상구 가상로 1"}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_company_info
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  1-확정. tools/call {"name":"run_write","arguments":{"tool":"update_company_info","args":{"phone":"02-0000-0000","address":"서울시 가상구 가상로 1"},"confirmation_id":"<1-미리보기.confirmation_id>"}}
     넘겨받는 값: 1-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_company_info
```

- 필요한 값 · 되묻기: 새 전화번호 / 새 주소
- 끝: 회사 전화번호와 주소가 바뀌어요.
- 화면: 설정 → 회사 정보 (/admin/enterprise/profile)
- 하면 안 되는 것: 일하는 곳 위치(GPS)는 이 흐름으로 바꾸지 않아요.

### SET-04 회사 담당자 연락처를 바꿔요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「담당자 연락처 바꿔줘」 「회사 담당자를 김가상으로 바꿔줘」 「담당자 메일 주소 수정해 줘」

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

```text
  (값이 없으면 먼저 물어요: 「담당자 이름과 연락처를 알려 주세요.」)
  1-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_company_info","args":{"manager_name":"김가상","manager_contact":"010-0000-0000","manager_email":"manager@example.com"}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_company_info
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  1-확정. tools/call {"name":"run_write","arguments":{"tool":"update_company_info","args":{"manager_name":"김가상","manager_contact":"010-0000-0000","manager_email":"manager@example.com"},"confirmation_id":"<1-미리보기.confirmation_id>"}}
     넘겨받는 값: 1-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_company_info
```

- 필요한 값 · 되묻기: 담당자 이름 / 연락처 / 메일 주소
- 끝: 담당자 이름과 연락처가 바뀌어요.
- 화면: 설정 → 회사 정보 (/admin/enterprise/profile)
- 하면 안 되는 것: 담당자 권한은 이 흐름으로 바꾸지 않아요.

### SET-06 기본 연차 일수와 상한을 바꿔요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「기본 연차를 15일로 해줘」 「연차 상한을 25일로 바꿔줘」 「2년마다 1일씩 더 주게 해줘」

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

```text
  (값이 없으면 먼저 물어요: 「기본 일수와 상한을 알려 주세요.」)
  1-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_leave_policy","args":{"base_annual_days":15,"extra_per_2years":1,"max_annual_days":25}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_leave_policy
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  1-확정. tools/call {"name":"run_write","arguments":{"tool":"update_leave_policy","args":{"base_annual_days":15,"extra_per_2years":1,"max_annual_days":25},"confirmation_id":"<1-미리보기.confirmation_id>"}}
     넘겨받는 값: 1-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_leave_policy
```

- 필요한 값 · 되묻기: 기본 연차 일수 / 2년마다 더하는 일수 / 연차 상한
- 끝: 새 기본 연차와 상한이 저장돼요.
- 화면: 설정 → 휴가 → 휴가 규칙 (/admin/enterprise/hr/leave-policy)
- 하면 안 되는 것: 기본 일수가 상한보다 크면 저장하지 않아요. / 이미 쓴 연차는 바꾸지 않아요.

### SET-07 반차와 무급 휴가를 쓰게 켜요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「반차 쓸 수 있게 해줘」 「무급 휴가 가능하게 바꿔줘」 「병가랑 경조사 휴가도 켜줘」

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

```text
  1-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_leave_policy","args":{"half_day_supported":true,"allow_unpaid":true,"allow_sick_leave":true,"allow_family_event":true}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_leave_policy
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  1-확정. tools/call {"name":"run_write","arguments":{"tool":"update_leave_policy","args":{"half_day_supported":true,"allow_unpaid":true,"allow_sick_leave":true,"allow_family_event":true},"confirmation_id":"<1-미리보기.confirmation_id>"}}
     넘겨받는 값: 1-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_leave_policy
```

- 필요한 값 · 되묻기: 켜거나 끌 휴가 종류
- 끝: 고른 휴가 종류를 쓸 수 있게 저장돼요.
- 화면: 설정 → 휴가 → 휴가 규칙 (/admin/enterprise/hr/leave-policy)
- 하면 안 되는 것: 반반차와 시간 단위 휴가는 이 흐름으로 켜지 않아요.

### SET-08 쓰고 남은 연차를 넘기는 방법을 정해요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「남은 연차는 다음 해로 넘겨줘」 「연차 이월 방식을 바꿔줘」 「안 쓴 연차는 수당으로 주게 해줘」

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

```text
  (값이 없으면 먼저 물어요: 「소멸, 수당, 다음 해 중 어느 쪽이에요?」)
  1-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_leave_policy","args":{"carryover_method":"next_year"}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_leave_policy
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  1-확정. tools/call {"name":"run_write","arguments":{"tool":"update_leave_policy","args":{"carryover_method":"next_year"},"confirmation_id":"<1-미리보기.confirmation_id>"}}
     넘겨받는 값: 1-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_leave_policy
```

- 필요한 값 · 되묻기: 이월 방법(소멸 · 수당 · 다음 해)
- 끝: 이월 방법이 새로 저장돼요.
- 화면: 설정 → 휴가 → 휴가 규칙 (/admin/enterprise/hr/leave-policy)
- 하면 안 되는 것: 지난해에 이미 정산된 연차는 바꾸지 않아요.

### SET-09 연차 계산 기준을 정해요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「연차를 입사일 기준으로 바꿔줘」 「회계연도 기준으로 연차 계산하게 해줘」 「연차 발생 기준을 바꾸고 싶어요」

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

```text
  (값이 없으면 먼저 물어요: 「회계연도와 입사일 중 어느 쪽이에요?」)
  1-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_leave_policy","args":{"accrual_basis":"hire_date"}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_leave_policy
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  1-확정. tools/call {"name":"run_write","arguments":{"tool":"update_leave_policy","args":{"accrual_basis":"hire_date"},"confirmation_id":"<1-미리보기.confirmation_id>"}}
     넘겨받는 값: 1-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_leave_policy
```

- 필요한 값 · 되묻기: 기준(회계연도 · 입사일)
- 끝: 연차 계산 기준이 새로 저장돼요.
- 화면: 설정 → 휴가 → 휴가 규칙 (/admin/enterprise/hr/leave-policy)
- 하면 안 되는 것: 이미 부여된 연차를 다시 계산하지 않아요.

### SET-10 GPS 위치 확인을 끄거나 낮춰요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「GPS 꺼줘」 「NFC 만 쓰게 GPS 끄고 싶어요」 「위치 확인을 느슨하게 바꿔줘」

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

```text
  (값이 없으면 먼저 물어요: 「엄격, 느슨, 끔 중 어느 쪽이에요?」)
  1-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_attendance_policy","args":{"gps_mode":"off"}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_attendance_policy
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  1-확정. tools/call {"name":"run_write","arguments":{"tool":"update_attendance_policy","args":{"gps_mode":"off"},"confirmation_id":"<1-미리보기.confirmation_id>"}}
     넘겨받는 값: 1-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_attendance_policy
```

- 필요한 값 · 되묻기: 위치 확인 방식(엄격 · 느슨 · 끔)
- 끝: 위치 확인 방식이 새로 저장돼요.
- 화면: 설정 → 근무규정 → 출근 확인 (/admin/enterprise/attendance-methods)
- 하면 안 되는 것: NFC 태그 등록은 이 흐름으로 하지 않아요.

### SET-11 출근 가능한 반경을 바꿔요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「출근 반경을 150m 로 해줘」 「사무실에서 조금 떨어져도 출근되게 넓혀줘」 「출근 반경 줄여줘」

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

```text
  (값이 없으면 먼저 물어요: 「반경을 몇 미터로 할까요?」)
  1-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_attendance_policy","args":{"office_radius_m":150}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_attendance_policy
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  1-확정. tools/call {"name":"run_write","arguments":{"tool":"update_attendance_policy","args":{"office_radius_m":150},"confirmation_id":"<1-미리보기.confirmation_id>"}}
     넘겨받는 값: 1-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_attendance_policy
```

- 필요한 값 · 되묻기: 반경(20~5000m)
- 끝: 출근 반경이 새로 저장돼요.
- 화면: 설정 → 우리 회사 → 일하는 곳 (/admin/enterprise/hr/office-location)
- 하면 안 되는 것: 사무실 위치(좌표)는 이 흐름으로 바꾸지 않아요. / 너무 좁으면 경고만 하고 막지 않아요.

### SET-12 사무실 와이파이 이름을 등록해요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「사무실 와이파이 이름을 등록해줘」 「와이파이로도 출근 확인되게 해줘」 「와이파이 이름 추가」

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

```text
  (값이 없으면 먼저 물어요: 「사무실 와이파이 이름을 알려 주세요.」)
  1-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_attendance_policy","args":{"wifi_ssids":["가상사무실-5G"]}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_attendance_policy
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  1-확정. tools/call {"name":"run_write","arguments":{"tool":"update_attendance_policy","args":{"wifi_ssids":["가상사무실-5G"]},"confirmation_id":"<1-미리보기.confirmation_id>"}}
     넘겨받는 값: 1-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_attendance_policy
```

- 필요한 값 · 되묻기: 와이파이 이름(10개까지) / 사용 중인 일하는 곳
- 끝: 와이파이 이름이 일하는 곳에 저장돼요.
- 화면: 설정 → 근무규정 → 출근 확인 (/admin/enterprise/attendance-methods)
- 하면 안 되는 것: 와이파이 비밀번호는 받지 않아요.

### SET-13 바깥 근무 출퇴근을 쓰게 켜요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「외근 출퇴근 쓸 수 있게 해줘」 「밖에서도 출근 찍게 켜줘」 「현장 근무 출퇴근 기능 켜줘」

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

```text
  1-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_attendance_policy","args":{"field_work_enabled":true}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_attendance_policy
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  1-확정. tools/call {"name":"run_write","arguments":{"tool":"update_attendance_policy","args":{"field_work_enabled":true},"confirmation_id":"<1-미리보기.confirmation_id>"}}
     넘겨받는 값: 1-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_attendance_policy
```

- 필요한 값 · 되묻기: 켜기 또는 끄기
- 끝: 바깥 근무 출퇴근 사용 여부가 저장돼요.
- 화면: 설정 → 우리 회사 → 일하는 곳 (/admin/enterprise/hr/office-location)
- 하면 안 되는 것: 바깥 출퇴근 요청 승인은 이 흐름으로 하지 않아요.

### SET-14 우리 회사 일하는 곳 목록을 봐요.
- 누가: 직원 · 팀장 · 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「우리 회사 일하는 곳이 어디야?」 「등록된 사무실 목록 보여줘」 「지점이 몇 개 있어?」

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

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_worksites","args":{}}}
     서버: 몸통 src/routes/mcp-tools/orgmodel.ts:query_worksites
     다음으로 넘길 값: 일하는 곳 이름 · 반경
```

- 필요한 값 · 되묻기: 따로 필요한 값은 없어요.
- 끝: 등록된 일하는 곳과 반경을 보여 줘요.
- 화면: 설정 → 우리 회사 → 일하는 곳 (/admin/enterprise/hr/office-location)
- 하면 안 되는 것: 직원을 일하는 곳에 옮기지는 않아요.

### SET-15 새 일하는 곳을 추가해요.
- 누가: 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「새 지점 추가해줘」 「부산 사무실을 일하는 곳에 등록해줘」 「공장 위치 하나 더 등록」

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

```text
  (값이 없으면 먼저 물어요: 「이름과 주소를 알려 주세요.」)
  1-미리보기. tools/call {"name":"run_write","arguments":{"tool":"create_worksite","args":{"name":"가상 부산지점","site_type":"branch","address":"부산시 가상구 가상로 2","radius_m":100}}}
     서버: 몸통 src/routes/mcp-tools/orgmodel.ts:create_worksite
     다음으로 넘길 값: confirmation_id
     그다음: 미리보기를 사용자에게 보여 주고 「네」를 받아요
  1-확정. tools/call {"name":"run_write","arguments":{"tool":"create_worksite","args":{"name":"가상 부산지점","site_type":"branch","address":"부산시 가상구 가상로 2","radius_m":100},"confirmation_id":"<1-미리보기.confirmation_id>"}}
     넘겨받는 값: 1-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/orgmodel.ts:create_worksite
```

- 필요한 값 · 되묻기: 일하는 곳 이름 / 종류 / 주소
- 끝: 새 일하는 곳이 등록돼요.
- 화면: 설정 → 우리 회사 → 일하는 곳 (/admin/enterprise/hr/office-location)
- 하면 안 되는 것: 직원을 새 곳에 옮기지는 않아요.

### SET-16 일하는 곳의 반경을 바꿔요.
- 누가: 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「본사 반경을 120m 로 바꿔줘」 「첫 번째 사무실 반경 넓혀줘」 「일하는 곳 반경 수정」

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

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_worksites","args":{}}}
     서버: 몸통 src/routes/mcp-tools/orgmodel.ts:query_worksites
     다음으로 넘길 값: 일하는 곳 번호
  2-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_worksite","args":{"radius_m":120}}}
     넘겨받는 값: 1.worksites.0.worksite_id → worksite
     서버: 몸통 src/routes/mcp-tools/orgmodel.ts:update_worksite
     다음으로 넘길 값: confirmation_id
     그다음: 후보가 여럿이면(needs_choice) 「어느 일하는 곳이에요?」 → 고른 id 로 같은 줄을 다시 · 미리보기를 사용자에게 보여 주고 「네」를 받아요
  2-확정. tools/call {"name":"run_write","arguments":{"tool":"update_worksite","args":{"radius_m":120},"confirmation_id":"<2-미리보기.confirmation_id>"}}
     넘겨받는 값: 1.worksites.0.worksite_id → worksite · 2-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/orgmodel.ts:update_worksite
```

- 필요한 값 · 되묻기: 바꿀 일하는 곳 / 새 반경
- 끝: 고른 일하는 곳의 반경이 바뀌어요.
- 화면: 설정 → 우리 회사 → 일하는 곳 (/admin/enterprise/hr/office-location)
- 하면 안 되는 것: 지워지는 곳은 없어요.

### SET-17 문 닫은 일하는 곳을 비활성으로 바꿔요.
- 누가: 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「폐쇄한 지점을 목록에서 빼줘」 「이 사무실 더 안 써, 닫아줘」 「일하는 곳 하나 비활성 처리해 줘」

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

```text
  1. tools/call {"name":"run_read","arguments":{"tool":"query_worksites","args":{}}}
     서버: 몸통 src/routes/mcp-tools/orgmodel.ts:query_worksites
     다음으로 넘길 값: 일하는 곳 번호
  2-미리보기. tools/call {"name":"run_write","arguments":{"tool":"update_worksite","args":{"active":false}}}
     넘겨받는 값: 1.worksites.0.worksite_id → worksite
     서버: 몸통 src/routes/mcp-tools/orgmodel.ts:update_worksite
     다음으로 넘길 값: confirmation_id
     그다음: 후보가 여럿이면(needs_choice) 「어느 일하는 곳을 닫을까요?」 → 고른 id 로 같은 줄을 다시 · 미리보기를 사용자에게 보여 주고 「네」를 받아요
  2-확정. tools/call {"name":"run_write","arguments":{"tool":"update_worksite","args":{"active":false},"confirmation_id":"<2-미리보기.confirmation_id>"}}
     넘겨받는 값: 1.worksites.0.worksite_id → worksite · 2-미리보기.confirmation_id → confirmation_id
     서버: 몸통 src/routes/mcp-tools/orgmodel.ts:update_worksite
```

- 필요한 값 · 되묻기: 닫을 일하는 곳
- 끝: 고른 일하는 곳이 쓰지 않는 곳으로 바뀌어요.
- 화면: 설정 → 우리 회사 → 일하는 곳 (/admin/enterprise/hr/office-location)
- 하면 안 되는 것: 지난 출퇴근 기록은 지우지 않아요.

### SET-18 연장근무 시작 시각과 저녁 휴게를 정해요.
- 누가: 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「연장근무는 6시 이후부터 세줘」 「저녁 휴게를 30분으로 해줘」 「연장근무 시작 시간 바꿔줘」

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

```text
  (값이 없으면 먼저 물어요: 「시작 시각과 저녁 휴게 분을 알려 주세요.」)
  1. tools/call {"name":"run_write","arguments":{"tool":"update_wage_policy","args":{"overtime_start_clock":"18:00","dinner_break_minutes":30}}}
     서버: 몸통 src/routes/mcp-tools/enterprise-settings.ts:update_wage_policy
     그다음: 앱에서 사람이 승인한 뒤 같은 인자로 다시 불러요
```

- 필요한 값 · 되묻기: 연장근무 시작 시각 / 저녁 휴게 분(0~240)
- 끝: 연장근무 시작 시각과 저녁 휴게가 저장돼요.
- 화면: 설정 → 근무규정 → 근무 규칙 (/admin/enterprise/attendance-policies)
- 하면 안 되는 것: 가산율은 이 흐름으로 바꾸지 않아요. / 앱에서 승인해야 저장돼요.

### SET-19 결재하는 사람 묶음을 봐요.
- 누가: 팀장 · 관리자 · 대표
- 방식: 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
     다음으로 넘길 값: 결재 종류 · 결재하는 사람
```

- 필요한 값 · 되묻기: 따로 필요한 값은 없어요.
- 끝: 결재 종류별 결재하는 사람을 보여 줘요.
- 화면: 설정 → 사람·권한 → 결재하는 사람 (/admin/enterprise/approval-rules)
- 하면 안 되는 것: 결재 승인과 반려는 이 흐름으로 하지 않아요.

### SET-20 결재하는 사람을 넣거나 빼요.
- 누가: 관리자 · 대표
- 방식: AI 로 끝까지 돼요
- 이렇게 말해요: 「김가상을 휴가 결재자로 넣어줘」 「결재권자 명단에서 빼줘」 「이 사람도 결재할 수 있게 추가해 줘」

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

```text
  (값이 없으면 먼저 물어요: 「누구를 어느 결재에 넣을까요?」)
  1. 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
     그다음: 후보가 여럿이면(needs_choice) 「같은 이름이 여럿이에요. 누구예요?」 → 고른 id 로 같은 줄을 다시 · 앱에서 사람이 승인한 뒤 같은 인자로 다시 불러요
```

- 필요한 값 · 되묻기: 넣을지 뺄지 / 결재 종류 / 사람 이름
- 끝: 결재하는 사람 명단이 바뀌어요.
- 화면: 설정 → 사람·권한 → 결재하는 사람 (/admin/enterprise/approval-rules)
- 하면 안 되는 것: 이미 올라와 있는 결재는 그대로 둬요. / 앱에서 승인해야 바뀌어요.

### SET-21 회사 기능을 켜거나 꺼요.
- 누가: 대표
- 방식: 아직 AI 로 안 돼요 · 대신 화면
- 이렇게 말해요: 「메신저 켜줘」 「업무 기능을 끄고 싶어요」 「드라이브 기능 켜줘」
- 호출 순서: 없음(화면에서 해요)
- 필요한 값 · 되묻기: 아직 AI 로 안 돼요 · 대신 화면에서 해요. / 켜거나 끌 기능(메신저 · 업무 · 드라이브)
- 끝: 고른 기능이 회사 전체에서 켜지거나 꺼져요.
- 화면: 설정 → 회사 기능 설정 (/admin/enterprise/settings/modules)
- 하면 안 되는 것: 직원 한 사람씩 따로 켜지 않아요.

### SET-22 연차 신청서의 사유 칸을 빼요.
- 누가: 대표
- 방식: 아직 AI 로 안 돼요 · 대신 화면
- 이렇게 말해요: 「연차 사유 칸 없애줘」 「휴가 신청서에서 사유를 안 받고 싶어요」 「사유 입력 칸 빼줘」
- 호출 순서: 없음(화면에서 해요)
- 필요한 값 · 되묻기: 아직 AI 로 안 돼요 · 대신 화면에서 해요. / 사유 칸을 보일지 정하기
- 끝: 새 신청서에서 사유 칸이 빠져요.
- 화면: 설정 → 휴가 → 휴가 규칙 (/admin/enterprise/hr/leave-policy)
- 하면 안 되는 것: 이미 낸 신청서의 사유는 지우지 않아요.

### SET-23 출퇴근을 NFC 로만 되게 정해요.
- 누가: 대표
- 방식: 아직 AI 로 안 돼요 · 대신 화면
- 이렇게 말해요: 「NFC 로만 출퇴근되게 해줘」 「버튼 출근은 막고 싶어요」 「NFC 와 수동 출퇴근을 같이 쓰고 싶어요」
- 호출 순서: 없음(화면에서 해요)
- 필요한 값 · 되묻기: 아직 AI 로 안 돼요 · 대신 화면에서 해요. / 쓸 출퇴근 방법 고르기
- 끝: 고른 출퇴근 방법만 쓰도록 저장돼요.
- 화면: 설정 → 근무규정 → 출근 확인 (/admin/enterprise/attendance-methods)
- 하면 안 되는 것: NFC 스티커를 사 주지는 않아요.

### SET-24 출근·퇴근 시각표를 바꿔요.
- 누가: 대표
- 방식: 아직 AI 로 안 돼요 · 대신 화면
- 이렇게 말해요: 「근무시간을 8시 30분부터로 바꿔줘」 「점심시간을 12시부터 1시로 해줘」 「유연근무를 예전 근무로 되돌려줘」
- 호출 순서: 없음(화면에서 해요)
- 필요한 값 · 되묻기: 아직 AI 로 안 돼요 · 대신 화면에서 해요. / 출근 시각 / 퇴근 시각 / 휴게 시간
- 끝: 새 근무 시각표가 저장돼요.
- 화면: 설정 → 근무규정 → 근무 규칙 (/admin/enterprise/attendance-policies)
- 하면 안 되는 것: 이미 찍힌 출퇴근 기록은 바꾸지 않아요.

### SET-25 휴가 결재 방식을 정해요.
- 누가: 대표
- 방식: 아직 AI 로 안 돼요 · 대신 화면
- 이렇게 말해요: 「휴가 결재를 팀장 한 명만 하게 해줘」 「결재 방식을 바꾸고 싶어요」 「휴가 결재선을 사람마다 다르게 하고 싶어요」
- 호출 순서: 없음(화면에서 해요)
- 필요한 값 · 되묻기: 아직 AI 로 안 돼요 · 대신 화면에서 해요. / 결재 방식 고르기
- 끝: 새 휴가 결재 방식이 저장돼요.
- 화면: 설정 → 사람·권한 → 결재하는 사람 (/admin/enterprise/approval-rules)
- 하면 안 되는 것: 이미 올라온 결재의 결재자는 바꾸지 않아요.

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

- ATT-09 출퇴근 GPS 강도와 사무실 반경을 바꿔요. → https://insacheck.com/docs/mcp/attendance.md
- LV-07 반차·병가·무급 같은 휴가를 쓸 수 있게 켜고 꺼요. → https://insacheck.com/docs/mcp/leave.md
- LV-10 연차 기준과 남은 연차 처리 방식을 바꿔요. → https://insacheck.com/docs/mcp/leave.md
- LV-19 우리 회사 휴가 규칙을 봐요. → https://insacheck.com/docs/mcp/leave.md
- MULTI-09 일하는 곳 번호를 찾아 반경을 바꿔요. → https://insacheck.com/docs/mcp/multi.md
- MULTI-10 회사 정보를 보고 전화번호를 바꿔요. → https://insacheck.com/docs/mcp/multi.md
- MULTI-11 휴가 규칙을 보고 신청 기한을 바꿔요. → https://insacheck.com/docs/mcp/multi.md

## 안 되는 것 · 대안

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

- 회사 기능을 켜거나 꺼요. → 설정 → 회사 기능 설정 (/admin/enterprise/settings/modules)
- 연차 신청서의 사유 칸을 빼요. → 설정 → 휴가 → 휴가 규칙 (/admin/enterprise/hr/leave-policy)
- 출퇴근을 NFC 로만 되게 정해요. → 설정 → 근무규정 → 출근 확인 (/admin/enterprise/attendance-methods)
- 출근·퇴근 시각표를 바꿔요. → 설정 → 근무규정 → 근무 규칙 (/admin/enterprise/attendance-policies)
- 휴가 결재 방식을 정해요. → 설정 → 사람·권한 → 결재하는 사람 (/admin/enterprise/approval-rules)
