
직원들의 불편함을 없애기 위해 직접 만든 프로그램
직원들은 연차를 사용할 때마다 인사 담당자에게 “남은 연차가 몇 일인가요?”를 반복해서 물어봐야 했고,신청 과정 또한 종이 문서를 작성하고 전달하는 방식에 머물러 있었습니다. 이러한 방식은 업무를 번거롭게 만들 뿐만 아니라, 인사 담당자에게도 지속적인 확인 업무를 발생시키는 비효율적인 구조였습니다.
저는 이 문제를 단순한 불편함이 아니라, 시대에 맞지 않는 인사 프로세스라고 판단했습니다. 그래서 누구나 쉽게 접근할 수 있는 웹 기반 연차 관리 시스템을 직접 기획하고 개발했습니다. 직원은 자신의 연차 잔여일수를 즉시 확인하고 온라인으로 신청할 수 있으며, 관리자는 승인과 전체 현황을 한눈에 관리할 수 있습니다.
별도의 외부 서비스 없이 병원 내부망에서 안전하게 운영되며, 데이터는 자동으로 백업되어 안정성을 확보했습니다.
불필요하게 여러번 반복되는 프로세스와 종이 사용량을 줄이고, 보다 효율적인 인사 업무 환경을 만들기 위한 개선 프로젝트입니다.
본 프로젝트는 AI 기반 개발 도구 Cursor를 활용하여 직접 기획·설계·개발한 프로젝트입니다. 실제 병원 업무에서 발견한 문제를 바탕으로 서비스 구조와 기능을 설계하고, Cursor를 개발 보조 도구로 활용해 웹 애플리케이션 구현과 테스트, 운영 환경 구축까지 진행했습니다.
프로젝트의 목적

가장 중요한 목표는 연차 업무를 복잡한 시스템으로 만드는 것이 아니라, 기존에 사람이 반복해서 처리하던 과정을 최대한 단순하게 만드는 것이었습니다. 직원은 별도의 프로그램을 설치하지 않고 병원 PC의 웹 브라우저에서 자신의 연차 발생일수와 사용일수, 잔여일수를 확인하고 연차를 신청할 수 있도록 했습니다. 신청된 연차는 부서 승인자가 확인하여 승인하거나 반려하고, 최종적으로 인사 담당자가 사용 내역을 관리하는 흐름으로 구성했습니다. 관리자 화면에서는 직원별·부서별 연차 현황을 조회하고 직원 정보, 부서, 연차 기록과 신청 내역을 관리할 수 있도록 했습니다. 기존 엑셀 자료를 활용할 수 있도록 직원 및 연차 데이터를 가져오거나 내보내는 기능도 함께 구성했습니다. 결과적으로 이 프로젝트의 목표는 연차 확인 → 신청 → 승인 → 기록 → 관리로 이어지는 과정을 하나의 시스템 안에서 연결하고, 직원과 담당자 모두의 반복 업무를 줄이는 것이었습니다.
병원 내부 환경에 맞춘 시스템 설계

이 시스템은 일반적인 인터넷 서비스와 다르게 병원 내부 전산망(LAN)에서만 동작하는 독립형 웹 애플리케이션으로 설계했습니다.
직원 정보와 연차 데이터가 외부 클라우드 서비스로 전달되지 않도록 서버와 데이터베이스를 병원 내부 PC에서 직접 운영합니다. 동일한 내부 네트워크에 연결된 PC라면 Chrome과 같은 일반적인 웹 브라우저에서 서버 주소로 접속할 수 있기 때문에 각 직원 PC마다 프로그램을 별도로 설치할 필요도 없습니다. 서버 역할을 하는 Windows PC 한 대에서 시스템을 실행하면 다른 직원들은 브라우저를 통해 동일한 시스템에 접근하는 구조입니다. 운영 PC를 변경해야 할 경우에도 프로젝트 폴더와 데이터를 옮긴 뒤 실행 파일을 이용해 다시 구동할 수 있도록 구성했습니다. 전산 전문 인력이 항상 시스템을 관리하기 어려운 환경도 고려했습니다. 복잡한 명령어를 입력하지 않아도 설치, 서버 실행, 종료, 방화벽 설정, 데이터 백업과 같은 작업을 Windows BAT 파일로 실행할 수 있도록 만들어 실제 운영 과정 자체를 최대한 단순화했습니다.
개발 아키텍처

백엔드는 Python과 Flask를 중심으로 개발했으며 실제 운영 서버는 Waitress를 사용합니다. 연차·직원·부서·신청 데이터를 저장하는 데이터베이스는 별도의 데이터베이스 서버가 필요하지 않은 SQLite를 사용했습니다. 화면은 HTML, CSS, JavaScript를 기반으로 구성했습니다. 직원 화면은 자신의 연차 현황과 신청 과정에 집중하도록 단순하게 설계하고, 관리자 화면은 전체 직원 조회, 부서 관리, 신청 처리, 연차 기록, 설정과 같은 관리 기능을 중심으로 구성했습니다. 프로그램 내부 구조도 기능별로 역할을 분리했습니다. 서버 영역에서는 애플리케이션 설정과 데이터베이스, 인증을 담당하는 Core 영역과 요청을 처리하는 Routes, 실제 연차 계산이나 직원 관리와 같은 업무 로직을 담당하는 Services, 보안과 접근 제어를 담당하는 Middleware를 구분했습니다. 화면 영역 역시 서버 코드와 분리하여 템플릿과 CSS·JavaScript 파일을 별도로 관리했습니다. 덕분에 새로운 기능을 추가하거나 화면을 수정할 때 전체 프로그램을 한꺼번에 수정하지 않고 필요한 영역만 관리할 수 있도록 했습니다. 데이터와 프로그램 코드 역시 분리했습니다. 실제 운영 데이터베이스와 로그, 백업 파일은 애플리케이션 코드와 별도의 저장 영역에서 관리하도록 구성해 업데이트나 코드 수정 과정에서 실제 운영 데이터가 영향을 받지 않도록 했습니다.
권한과 데이터 보호
| 권한 | 주요 역할 | 접근 가능한 페이지·화면 | 주요 기능 |
|---|
| 일반 직원 | 자신의 연차 확인 및 신청 | 내 연차, 내 신청 | 연차 발생·사용·잔여일수 조회, 연차 신청, 신청 진행상태 확인 |
| 부서 승인자 | 소속 부서 연차 신청 검토 | 내 연차, 내 신청, 승인 처리 | 일반 직원 기능 + 담당 직원 신청 승인·반려 |
| HR 관리자 | 직원·연차 실무 관리 | 대시보드, 전체 조회, 개인 상세, 휴지통, 설정 및 관리, 연차 신청 관리 | 직원 및 연차정보 관리, 최종 사용 등록, 긴급 처리, 부서·결재라인 관리, 엑셀 Import/Export |
| 조회 관리자 | 현황 조회 전용 | 대시보드, 전체 조회, 개인 상세 | 전체 직원 및 연차 현황 조회. 등록·수정·삭제 기능은 제한 |
| 최고 관리자 | 시스템 전체 운영 | 대시보드, 전체 조회, 개인 상세, 휴지통, 설정 및 관리, 기록, 개발자 문서 | HR 관리자 기능 + 관리자 계정 및 시스템 설정, 감사 기록 조회, 운영·개발 문서 확인 |
사용자의 역할에 따라 접근할 수 있는 화면과 기능을 구분했습니다. 일반 직원은 자신의 연차 정보만 확인할 수 있으며, 승인자와 인사 담당자, 최고관리자는 업무 범위에 필요한 기능만 단계적으로 사용할 수 있도록 설계했습니다.
권한은 단순히 화면을 숨기는 방식이 아니라 서버의 인증과 접근 제어를 기준으로 제한했습니다. 직원 계정은 로그인한 사용자의 식별정보를 기준으로 본인의 데이터만 조회할 수 있으며, 관리자 기능 역시 역할별 권한을 확인한 뒤 요청을 처리합니다.

또한 직원 생성·수정·삭제, 연차 변경, 연도 이월과 같이 중요한 데이터 변경 작업은 기록으로 남겨 관리자가 이후 변경 이력을 확인할 수 있도록 구성했습니다. 이를 통해 개인정보와 인사 데이터를 다루는 시스템에서 필요한 최소 권한 원칙과 변경 이력 추적을 함께 고려했습니다.
사용 환경을 고려한 라이트 · 다크 모드
업무용 시스템은 하루 중 여러 시간대와 다양한 모니터 환경에서 반복적으로 사용될 수 있기 때문에, 사용자가 자신의 환경에 맞는 화면을 선택할 수 있도록 라이트 모드와 다크 모드를 함께 구성했습니다.

단순히 배경색을 반전시키는 방식이 아니라 텍스트, 카드, 입력창, 테이블, 버튼, 상태 표시 등의 명암과 대비가 각 테마에서도 일관되게 유지되도록 UI를 설계했습니다. 라이트 모드는 일반적인 사무 환경에서 정보를 빠르게 확인하기 쉽도록 구성하고, 다크 모드는 화면 밝기가 부담스러운 환경에서도 주요 데이터와 인터페이스를 명확하게 구분할 수 있도록 했습니다.

이를 위해 공통 디자인 기준을 사용하여 테마가 변경되더라도 정보의 계층과 기능의 위치는 동일하게 유지되도록 했으며, 사용자가 화면 모드에 관계없이 같은 방식으로 시스템을 사용할 수 있도록 구성했습니다.
단순한 웹 개발보다 업무 구조를 개선하는 프로젝트




이 프로젝트를 개발하면서 가장 중요하게 생각한 부분은 새로운 프로그램을 만드는 것 자체가 아니었습니다.
기존 업무가 어떤 순서로 이루어지고 있는지 관찰하고, 그 과정에서 반복되는 확인 업무와 불필요한 전달 과정을 찾아낸 뒤 이를 웹 시스템의 기능과 데이터 구조로 다시 설계하는 것이 핵심이었습니다.







직원이 자신의 정보를 직접 확인할 수 있도록 만들고, 신청과 승인 과정을 하나의 흐름으로 연결하며, 담당자가 전체 현황을 한곳에서 관리할 수 있도록 구성했습니다. 동시에 병원 내부망이라는 실제 운영 환경을 고려하여 설치와 유지관리, 개인정보 보호, 데이터 백업까지 시스템 설계에 포함했습니다.



연차관리 시스템은 반복적인 수작업을 디지털 업무 흐름으로 전환하고, 실제 조직에서 지속적으로 사용할 수 있는 형태의 사내 웹 애플리케이션을 직접 기획하고 구현한 프로젝트입니다.
현재 운영 상태
현재 연차관리 시스템은 실제 업무에 적용할 수 있는 수준까지 개발을 완료했으며, 주요 기능 또한 정상적으로 동작하고 있습니다.
다만 기존 임직원 연차 정보가 엑셀 파일과 종이 문서 등 여러 형태로 분산되어 관리되어 왔기 때문에, 시스템에 이관할 기준 데이터가 아직 충분히 정리되지 않은 상태입니다. 따라서 우선적으로 기존 연차 데이터를 정비하고, 직원별 잔여 연차와 사용 이력을 하나의 기준으로 통합하는 선행 작업이 필요합니다.
기술적인 문제 외에도 실제 도입 과정에서는 기존 업무 방식에 대한 높은 의존도와 새로운 시스템으로의 전환에 대한 낮은 관심도 역시 중요한 장애요소로 작용하고 있습니다. 특히 해당 업무를 담당하는 실무자와 관리자의 디지털 시스템에 대한 이해도와 활용 경험이 충분하지 않은 상황에서는, 새로운 시스템을 구축하는 것만으로 기존 업무 프로세스를 곧바로 전환하기 어렵다는 현실적인 한계가 있습니다.
결국 업무 자동화와 디지털 전환은 단순히 프로그램을 개발하는 것으로 끝나는 것이 아니라, 기존 데이터의 정비와 함께 실제 사용자의 이해, 참여, 업무 방식의 변화가 동시에 이루어져야 한다는 점을 이번 프로젝트를 통해 확인할 수 있었습니다.
현재는 이러한 데이터 및 운영 환경의 정비 문제로 실제 업무 적용을 보류하고 있으며, 향후 임직원 연차 데이터의 정리와 검증, 사용자 교육 및 운영 기준이 마련된다면 별도의 기능 개발 없이도 실제 연차관리 업무에 적용할 수 있는 상태입니다.