📊 실습: 부서별 인력 현황 대시보드

엑셀(CSV) HR 데이터를 끌어다 놓으면 한눈에 보이는 대시보드를 만들어 봅니다.
도구는 VS Code + 로컬 Git, 예상 30~40분. 환경 세팅부터 STEP 순서대로 따라오세요.

가이드로 돌아가기

🎯 이번 실습으로 배우는 것

브리핑 ① · 문제 상황

🧩 어떤 문제를 푸나요?

당신은 HR 담당자입니다. 매달 부서별 인력 현황을 엑셀로 받지만, 행이 수십~수백 줄이라 한눈에 파악하기 어렵습니다. "부서별 인원은? 직급 분포는? 평균 근속연수는? 퇴사율은?" 같은 질문에 매번 수식을 다시 짜야 하죠.

그래서 엑셀 데이터를 끌어다 놓기만 하면 핵심 지표와 차트가 자동으로 그려지는 나만의 대시보드를 바이브코딩으로 만들려고 합니다.

브리핑 ② · 목표 결과물

🖼️ 이런 걸 만들 거예요

아래는 완성 이미지(목업)예요. 실제 데이터에 따라 숫자·그래프가 채워집니다.

128
총원
6
부서 수
5.2년
평균 근속
12%
퇴사율

↑ KPI 카드 · 부서별 인원(막대) · 직급 분포(도넛) · (아래엔 표 + 필터 + 내보내기 버튼)

브리핑 ③ · 규칙

🔒 시작 전, 꼭 지킬 규칙

사내 환경을 가정한 실습이라 보안 규칙이 핵심이에요.

🚨 이 실습의 샘플 데이터는 전부 가짜입니다. 실제 사내 데이터로 연습할 땐 위 규칙을 반드시 지키세요.
시작 전 핵심 · 프롬프팅

✍️ 좋은 프롬프트 쓰는 법 (고기 잡는 법)

정답 프롬프트를 외우는 게 아니라, 스스로 설계하는 법을 익혀요. 그래야 어떤 작업이든 응용할 수 있어요.

🧭 맥락 (Context)

지금 뭘 만드는 중인지, 기술 스택(단일 HTML·CDN 등)을 먼저 알려줘요.

🎯 목표 (Goal)

무엇을, 어떤 결과가 보이면 성공인지 구체적으로.

🚧 제약 (Constraints)

지켜야 할 규칙(업로드 금지, npm 대신 CDN 등)을 명시.

🗺️ 계획 먼저

바로 시키지 말고, 구현 계획부터 세우게 한 뒤 검토하세요.

🧩 작게 쪼개기

한 번에 다 시키지 말고, 한 단계씩. 되면 다음으로.

🔁 피드백

안 되면 "안 돼"가 아니라 에러 메시지 + 원하는 동작을 그대로.

🧪 검증까지

"되는 것 같다" 금지. 기대 결과를 먼저 정하고 직접 확인(그레이존 금지).

📐 예시·형식

원하는 출력 형태·예시를 주면 훨씬 정확해져요.

한 줄 공식: "[맥락]에서 [목표]를 만들어줘. 단, [제약]을 지켜줘."
아래 STEP마다 먼저 💭 스스로 설계해 보고, 그다음 🪄 모범 예시를 펼쳐 내 프롬프트와 비교해 보세요.
▶ 여기서부터 따라하기

STEP 1 · 환경 세팅 (VS Code + 로컬 Git)

작업 폴더를 만들고 첫 세이브 포인트를 찍어요.

🙌 지금부터는 직접 손으로 따라하는 단계예요. STEP 1 → 7 순서대로!
1

작업 폴더 만들고 Git 초기화

  • VS Code에서 새 폴더(예: hr-dashboard) 열기
  • 그 안에 index.html 파일 새로 만들기
  • VS Code 내장 터미널 열기 (단축키: Ctrl + `)
  • 아래 명령으로 Git 초기화 + 첫 커밋
git init git add . git commit -m "start: HR 대시보드 실습 시작"
✅ 폴더·파일·git 준비 완료!
STEP 2 · 계획 세우기

🗺️ 만들기 전, 계획부터

바로 코드부터 시키지 말고, 무엇을 어떤 순서로 만들지 AI에게 계획을 먼저 받아 검토해요.

2

AI에게 구현 계획부터 받기

큰 그림에서 벗어나지 않도록, 코드 전에 단계별 계획을 받아 검토합니다.

💭 먼저 스스로: 계획을 어떻게 받을까?
  • 무엇을 만들지 한 줄로 요약할 수 있나?
  • 어떤 순서가 자연스러울까? (데이터 → 표 → 집계 → 차트 → 필터 → 내보내기)
  • 각 단계에서 '무엇을 확인하면 됐다'고 할 수 있을까?
🪄 모범 예시 프롬프트 펼쳐보기
"HR CSV로 KPI·차트·필터·내보내기가 있는 대시보드를 만들 거야. 바로 코드 짜지 말고, 단계별 구현 계획부터 제안해줘. 각 단계에서 '무엇을 검증하면 되는지'도 함께 적어줘."
🧪 이렇게 검증하세요
  • 제안된 계획이 아래 STEP 4~8 흐름과 크게 어긋나지 않는가?
  • 중요 로직(집계·필터)의 '확인 방법'이 계획에 들어 있는가?
✅ 계획을 이해했고, 막힐 지점을 미리 파악했다!
STEP 3 · 데이터 준비

📥 샘플 HR 데이터 받기 (가짜)

샘플 CSV를 받아 작업 폴더에 넣고, AI에는 '스키마'만 복사해 둡니다.

3

CSV 다운로드 + 스키마 복사

컬럼 구조 (이것만 AI에 알려주세요):

💡 받은 sample_hr_data.csv를 STEP 1 폴더에 넣으세요. CSV는 Excel 호환(UTF-8 BOM)이라 더블클릭하면 엑셀로도 열려요.
✅ CSV가 폴더에 있고, 스키마를 복사해 뒀다!
STEP 4

📄 CSV 끌어다 놓고 표로 보기

4

드래그&드롭으로 데이터 읽기

CSV 파일을 화면에 끌어다 놓으면 표로 그려지게 만듭니다.

💭 먼저 스스로: 내 프롬프트에 이걸 담았나?
  • 맥락: "단일 HTML, 브라우저에서만 처리, 파싱은 CDN 라이브러리"라고 했나?
  • 목표: "CSV를 끌어다 놓으면 표로 보이게"가 분명한가?
  • 제약: "업로드 금지(로컬 처리)"를 넣었나?
  • 정보: 컬럼명을 알려줬나?
🪄 모범 예시 프롬프트 펼쳐보기
"CSV 파일을 끌어다 놓으면 브라우저에서만 읽어 표로 보여주는 단일 HTML을 만들어줘. 파싱은 PapaParse(CDN)를 쓰고, 컬럼은 (사번·이름·부서·직급·입사일·재직상태·평가등급·연차사용일·성별·생년)이야. 데이터는 외부로 업로드하지 말고 로컬에서만 처리해줘."
🧪 이렇게 검증하세요
  • 화면 표의 행 수가 원본 CSV 행 수(40)와 같은가?
  • 컬럼 10개가 모두 보이고, 한글이 안 깨지는가?
✅ 검증됐으면 → git commit -m "feat: CSV 표 렌더링"
STEP 5

🔢 KPI 카드 만들기

5

핵심 숫자 4개 요약

표 위에 한눈에 보이는 요약 카드를 추가합니다.

💭 먼저 스스로: 무엇을 요약할까?
  • 어떤 지표 4개를 보여줄까? (총원·부서 수·평균 근속·퇴사율)
  • 각 계산식을 설명했나? (예: 근속 = 오늘 − 입사일)
  • 어디에 둘까? (표 위, 카드 형태)
🪄 모범 예시 프롬프트 펼쳐보기
"불러온 데이터로 상단에 KPI 카드 4개를 만들어줘: 총원, 부서 수, 평균 근속연수(입사일 기준), 퇴사율(재직상태가 '퇴사'인 비율). 카드 형태로 보기 좋게 배치해줘."
🧪 이렇게 검증하세요 (그레이존 금지!)
  • 한 부서 인원을 손으로 세어 '총원'·'부서 수'와 맞는지 대조
  • 퇴사율 = 퇴사 인원 ÷ 전체 인원, 직접 계산해 카드 값과 비교
✅ 숫자가 맞으면 → git commit -m "feat: KPI 카드"
STEP 6

📊 차트 그리기

6

부서별·직급별 시각화

검증된 차트 라이브러리를 CDN으로 불러와 그립니다.

💭 먼저 스스로: 어떤 차트가 어울릴까?
  • 데이터별로 어떤 종류? (비교=막대, 비율=도넛, 추이=선)
  • 어떤 라이브러리를 CDN으로 부를까?
  • 필터/데이터가 바뀌면 차트도 갱신되어야 하나?
🪄 모범 예시 프롬프트 펼쳐보기
"Chart.js(CDN)로 차트 3개를 추가해줘: ① 부서별 인원 막대그래프 ② 직급 분포 도넛 ③ 입사연도별 인원 선그래프. 데이터가 바뀌면 차트도 갱신되게 해줘."
🧪 이렇게 검증하세요
  • 막대그래프 값의 합이 총원과 같은가?
  • 라벨(부서명·연도)이 실제 데이터와 일치하는가?
✅ 차트가 맞으면 → git commit -m "feat: 차트 추가"
STEP 7

🔎 필터 추가

7

부서·재직상태로 걸러 보기

원하는 조건만 보고, 화면 전체가 함께 바뀌게 합니다.

💭 먼저 스스로: 무엇을, 어떻게 거를까?
  • 무엇으로 필터링? (부서 / 재직상태)
  • 필터가 바뀌면 무엇이 같이 갱신? (KPI·차트·표 전부)
  • 결과가 0건일 때 화면은?
🪄 모범 예시 프롬프트 펼쳐보기
"상단에 부서 선택과 재직상태 선택 필터를 추가해줘. 필터를 바꾸면 KPI 카드·차트·표가 모두 그 조건으로 다시 계산되게 해줘."
🧪 이렇게 검증하세요
  • 필터를 걸면 표 행수·KPI·차트가 함께 바뀌는가?
  • 결과가 0건일 때 화면이 깨지지 않는가?
✅ 필터가 동작하면 → git commit -m "feat: 필터"
STEP 8

💾 내보내기 & 마무리

8

이미지·단일 HTML로 공유

완성 화면을 저장·공유할 수 있게 정리합니다.

💭 먼저 스스로: 어떻게 공유할까?
  • 어떤 형식? (PNG 이미지 / 단일 HTML)
  • 어떤 라이브러리(CDN)를 쓸까?
  • 공유 환경은? (SharePoint 등 script 막히면 이미지가 안전)
🪄 모범 예시 프롬프트 펼쳐보기
"현재 대시보드 화면을 PNG로 저장하는 버튼을 html2canvas(CDN)로 추가하고, 전체를 의존성 없는 단일 HTML로 정리해줘. (CDN 링크는 그대로 두고 별도 설치가 필요 없게)"
🧪 이렇게 검증하세요
  • 저장한 PNG를 실제로 열어 내용이 보이는가?
  • 단일 HTML을 더블클릭(브라우저로 열기)해도 정상 동작하는가?
✅ 완성! → git commit -m "feat: 내보내기 + 단일 HTML 정리"
STEP 9

📦 모듈화 & 빌드해서 반입하기

9

커지면 나누고, 반입은 빌드 결과물만

기능이 늘수록 모든 코드를 index.html 하나에 넣으면 맥락 잡기 어렵고 스파게티 코드가 돼요. 역할별로 파일을 나누고(모듈화), 사내 반입 땐 빌드한 결과물(dist)만 가져갑니다.

💭 먼저 스스로: 어떻게 나누고 반입할까?
  • 어떤 기준으로 파일을 나눌까? (데이터 처리 / 차트 / 필터 / 화면)
  • 빌드하면 무엇이 나오나? (합쳐·압축된 dist 결과물)
  • 사내엔 무엇만 반입? (소스 전체 X → dist 결과물만)
🪄 모범 예시 프롬프트 펼쳐보기
"기능이 늘어 index.html이 너무 길어졌어. 역할별로 파일을 나눠 모듈화하고, Vite로 빌드하면 dist 폴더에 합쳐진 결과물이 나오게 해줘. 사내엔 그 dist 결과물만 반입할 거야. 빌드·실행 명령도 알려줘."
🧪 이렇게 검증하세요
  • 빌드 후 dist 폴더가 생겼는가?
  • dist 결과물만 열어도(브라우저로) 똑같이 동작하는가?
  • 반입은 소스 전체가 아니라 dist 결과물만인지 확인
✅ 빌드 결과물이 동작하면 → git commit -m "build: 반입용 dist 생성"
마무리 · 회고

✅ 점검 & 돌아보기

git log --oneline
📜 git log로 내가 찍은 세이브 포인트들을 돌아보세요. 망가졌다면 이전 커밋으로 되돌릴 수 있어요.
BONUS

🚀 더 도전해보기

1 / 1