# 실습 데이터: 조직인력 현황 대시보드

가상의 전자 계열사 인사 마스터입니다. **모든 인물·조직·수치는 생성된 가짜 데이터**이며 실제 인물·조직과 무관합니다.

기준일: **2026-08-31** (당월 = 2026년 8월)

## 파일

| 파일 | 내용 | 행 수 |
|---|---|---|
| `employees.csv` | 인사 마스터 — 재직자 + 최근 24개월(2024-09~2026-08) 퇴사자 | 약 3,480명 |
| `headcount_plan.csv` | 팀별 정원표 | 42팀 |
| `generate_mock_hr.py` | 생성 스크립트 (seed 고정, 표준 라이브러리만) | — |

인코딩은 UTF-8(BOM) — 엑셀에서 바로 열립니다.

## employees.csv 컬럼

| 컬럼 | 값 | 비고 |
|---|---|---|
| 사번 | `S2015-0042` | 입사연도-순번 |
| 성명 | 가명 | |
| 부문 | DX / DS / 경영지원 | |
| 사업부 | MX사업부, 메모리사업부 … 7개 | |
| 팀 | 개발1팀, 설계2팀, 인사팀 … 42개 | 사업부 내에서만 유일 (다른 사업부에 같은 팀명 있음 → 사업부+팀으로 조인) |
| 직급 | CL1 / CL2 / CL3 / CL4 | CL1 고졸·전문대 기술직, CL2 사원·대리, CL3 과장·차장, CL4 부장 |
| 직군 | 개발 / 기술 / 사무 / 영업 | |
| 입사일 | YYYY-MM-DD | |
| 생년월일 | YYYY-MM-DD | |
| 성별 | 남 / 여 | |
| 고용형태 | 정규 / 계약 | |
| 근무지 | 수원 / 서울 / 화성 / 평택 / 광주 | |
| 직급승격일 | YYYY-MM-DD | 현재 직급으로 승격한 날 (입사 직급이면 입사일과 동일) |
| 재직상태 | 재직 / 퇴사 | |
| 퇴사일 | YYYY-MM-DD 또는 빈칸 | 퇴사자만 |
| 퇴사사유 | 이직 / 개인사유 / 계약만료 / 권고사직 / 정년퇴직 | 퇴사자만 |

## headcount_plan.csv 컬럼

부문, 사업부, 팀, 주직군, 정원

## 자주 쓰는 계산 정의

- **현원**: 재직상태 = 재직 인원
- **충원율**: 현원 ÷ 정원
- **과부족**: 현원 − 정원
- **당월 입사/퇴사**: 입사일 또는 퇴사일이 2026-08인 인원
- **연간 자발퇴직률**: 최근 12개월 퇴사사유 ∈ {이직, 개인사유} ÷ 기간 평균 현원
- **조기퇴사율**: 최근 24개월 입사자 중 입사 1년 내 퇴사한 비율
- **직급 체류연수**: 기준일 − 직급승격일

## 재생성

```bash
python3 generate_mock_hr.py
```

## 1차 대시보드 예시

상위 폴더의 `build_dashboard.py`가 이 두 CSV로 `dashboard.html`(단일 파일, 외부 의존 없음)을 만듭니다. 브라우저에서 열면 부문·사업부·직급·성별·연령대 필터가 즉시 재계산됩니다.

```bash
python3 ../build_dashboard.py
```
