가치함께 AI
블로그 목록으로
케이스 스터디

수작업에서 웹앱으로 - 직원들의 휴무일 지정 및 근무일에 업무 배치 시스템 개발

매주 엑셀로 작성하던 근무표를 웹 기반 자동 배치 시스템으로 전환한 맞춤형 프로그램 개발 과정을 공유합니다.

2026년 5월 22일10분 읽기|Amos
맞춤형개발웹앱주간보호센터업무배치Next.jsSupabase케이스스터디

클라이언트의 문제

처음 연락이 왔을 때, 담당자는 이렇게 말했습니다.

"매주 월요일 아침 두 시간이 근무표 작성에 사라져요. 직원 8명의 스케줄을 엑셀로 짜는데, 한 명이 휴가를 내거나 공휴일이 끼면 전체를 다시 짜야 해서요. 가끔은 실수로 공백이 생겨서 어르신 돌봄에 구멍이 나기도 합니다."

노인 주간보호센터는 돌봄 서비스 특성상 직원 배치에 빈틈이 생기면 안 됩니다. 단순한 불편함이 아니라, 서비스 품질과 직결된 문제였습니다.

현황 정리

  • 직원 8명, 요일별 고정 출근·휴일·대체 근무 패턴
  • 자격증 보유 직원이 특정 케어 업무에 반드시 배치되어야 하는 규정
  • 연차·병가 발생 시 수동으로 대체 직원 검색 후 재배치
  • 월말 보고서 작성에도 동일한 근무표 데이터가 필요

요구사항 분석 (현장 인터뷰 2회)

첫 번째 인터뷰는 현황 파악, 두 번째는 기능 명세 확정에 집중했습니다.

AS-IS → TO-BE 전환 목표:

AS-IS · 이전

엑셀 수기 작성, 매주 2~3시간 소요. 실수로 인한 배치 공백 발생 위험.

TO-BE · 이후

웹 기반 자동 배치, 15분 내 완료. 제약 조건 자동 검증으로 공백 원천 차단.

필수 기능 목록 (명세서 기준):

  1. 직원 정보 관리 (이름·자격·패턴·휴가 등록)
  2. 요일별 근무 패턴 설정
  3. 자동 배치 알고리즘 (제약 조건 기반)
  4. 배치 결과 수동 조정 기능
  5. 출석 현황 실시간 확인
  6. 월별 보고서 PDF 출력

제약 조건:

  • 운영팀이 IT에 익숙하지 않음 → UX 철저히 단순화
  • 개인정보 보호 → 외부 클라우드 저장 최소화

기술 아키텍처

Next.js 15SupabasePostgreSQLTailwind CSSTypeScript

핵심 선택: 배치 알고리즘

그리디(Greedy) 알고리즘 기반으로 제약 조건을 순차적으로 처리했습니다.

입력: 직원 목록, 근무 패턴, 휴가 정보, 날짜
↓
연속 근무 제한 체크 (3일 이상 연속 근무 금지)
↓
자격 요건 매칭 (케어 업무 ↔ 자격증 보유 직원)
↓
휴가·공휴일 제외
↓
가용 직원 중 최근 근무 횟수 적은 순으로 배치
↓
배치 결과 출력

단순하지만 실제 운영 환경에서는 충분한 성능을 보여줬습니다. 직원 8명 규모에서는 과도한 최적화보다 명확한 제약 조건 정의가 더 중요했습니다.

Supabase Row Level Security

직원 개인정보는 인증된 관리자만 접근할 수 있도록 RLS 정책을 적용했습니다. 외부 접근 없이 센터 내부에서만 운영되는 시스템이지만, 보안 기본은 처음부터 갖추는 것이 원칙입니다.

개발 과정 (14단계)

Phase 1: 문의·인터뷰

현장 방문 인터뷰 2회를 통해 실제 엑셀 근무표를 받아 데이터 구조를 파악했습니다. 담당자가 엑셀에서 어떤 순서로 작업하는지 직접 관찰했습니다.

Phase 2: 분석·설계

요구사항 정의서 작성 후 담당자 승인. DB 스키마(직원·근무패턴·배치결과·출석) 설계. 화면 흐름 Figma 프로토타입으로 공유.

Phase 3: 계약·개발

MVP 먼저 납품(핵심 배치 기능만), 중간 검수 후 전체 기능 완성. 총 5주 소요.

Phase 4: 검수·납품

담당자가 실제 다음 주 근무표를 시스템으로 작성하는 UAT 진행. 수정 사항 반영 후 최종 납품.

납품 결과

시스템 오픈 후 첫 달 운영 결과:

  • 주간 근무표 작성 시간: 기존 2~3시간 → 15분 이내
  • 배치 오류로 인한 돌봄 공백: 0건
  • 담당자 만족도: "이제 월요일 아침이 두렵지 않아요"

월별 보고서는 PDF 출력 버튼 클릭 한 번으로 생성됩니다. 이전에는 근무표 데이터를 다시 정리해서 보고서를 따로 작성했지만, 이제는 자동으로 포맷이 맞춰진 PDF가 바로 나옵니다.

범위 확장 요청과 대응

개발 중반에 담당자에게서 이런 요청이 왔습니다.

"급여 계산 기능도 추가해주실 수 있나요? 근무 시간이 나오니까 자동 계산되면 좋을 것 같아서요."

이 시점에 명확하게 답했습니다.

"이번 계약 범위에는 포함되지 않습니다. Phase 2로 별도 계약이 필요합니다."

이것이 범위 관리(Scope Management)입니다. 처음에 이 원칙을 지키지 않으면 프로젝트가 끝없이 늘어나고, 개발자도 클라이언트도 지칩니다. 명세서에 포함/미포함 기능을 명확히 정의하고, 추가 요청은 별도 계약으로 처리하는 것이 장기적으로 신뢰를 쌓는 방법입니다.

급여 계산 기능은 이후 Phase 2 계약으로 별도 진행했습니다.

배운 점

맞춤형 소프트웨어 개발에서 가장 중요한 것은 현장 이해입니다.

담당자가 매주 어떻게 일하는지, 어디서 시간이 새는지, 어떤 실수가 반복되는지를 직접 보지 않으면 잘못된 것을 만들게 됩니다. 인터뷰 2회, 실제 엑셀 파일 분석, 현장 관찰에 투자한 시간이 개발 시간보다 더 가치 있었습니다.

그리고 기술적 화려함보다 운영 안정성이 먼저입니다. 어르신 돌봄 현장에서는 시스템이 갑자기 멈추거나 이상한 결과를 내놓으면 안 됩니다. 단순한 알고리즘이라도 예측 가능하고 검증 가능한 결과를 내는 것이 더 중요했습니다.

이런 서비스가 필요하다면

맞춤 프로그램

직원 휴무일 지정 및 업무 배치 시스템

복지 기관의 대상자 배치·스케줄 관리를 자동화한 맞춤형 웹 소프트웨어

Next.jsSupabaseTypeScriptTailwind CSS
포트폴리오 상세 보기 →

기성 솔루션으로 해결되지 않는 업무가 있다면 맞춤형 개발 상담을 신청해 주세요.

맞춤형 프로그램 개발 상담 →

관련 포스트

이런 서비스가 필요하신가요?

AI 자동화, 홈페이지, 맞춤 개발까지 — 가치함께 AI가 함께합니다.

무료 상담 신청 →