병원 식수관리 시스템

직원 식권·추가식수·이동배식 신청과 승인, 식수 현황 집계를 한 곳에서 처리하는 병원 내부 웹 시스템.

운영
상시 운영 중
유형
업무 시스템·장기 운영
장비
웹 시스템(관리자·직원 화면) · 식당 단말기 연동
식수현황 집계표 — 일별×끼니별×단말기(A~E)와 이동식을 한 표에 집계. 주말 강조, 인쇄·엑셀.

대학병원 직원 식사 운영을 위한 내부 웹 시스템입니다. 근린·정석 식권, 추가식수, 이동배식 신청과 부서장 확인, 관리자 집계, 식당 단말기 차감을 하나의 체계로 통합했습니다. 납품 후 유지보수 계약으로 운영 요청을 반영하고 있습니다.

프로젝트 개요

  • 범위: 직원·부서 관리자·시스템 관리자 웹 화면, 신청·확인·집계 업무 로직, 인사 DB 및 식당 단말기 데이터 연동, 배치 처리, 엑셀 내보내기, 서버 배포
  • 운영 형태: 상시 운영 업무 시스템. 사번 기반 로그인, 권한별 메뉴
  • 연동 대상: 인사 DB(재직·부서·직종), 식당 단말기 사용 이력 DB

주요 기능

  • 직원: 나의 식수 현황(고정식·이월식·추가식 사용과 잔여), 근린·정석 식권 신청, 추가식수·이동배식 신청과 본인 이력 조회
  • 부서 관리자: 부서원 대리 신청·일괄 신청, 부서 신청 내역 확인·취소, 부서장 확인 처리
  • 시스템 관리자: 전체 신청 내역 관리, 식수현황 집계표(일별×끼니×단말기), 식수관리현황표, 근린/정석 집계표, 식수 사용 등록, 고정식 등록·변경, 공휴일·마감·식사시간 설정, 메뉴 권한·운영자 관리
  • 엑셀 내보내기 8종(신청 내역·집계표·사용 현황 등)과 당월 입사자 일괄 등록(엑셀 업로드)

시스템 구성

  • 프론트엔드: React, TypeScript, Ant Design. 화면별 코드 분할과 ETag 기반 캐시로 초기 로딩 최적화
  • 백엔드: Spring Boot(Java 17), Spring Security, JPA, Swagger 문서화
  • 데이터: MS SQL Server. 인사 DB와 식수 DB가 분리되어 있어 사번 키로 애플리케이션 계층에서 병합
  • 인증·권한: JWT(액세스·리프레시 토큰), 20분 유휴 자동 로그아웃, 권한 코드별 메뉴 매핑(DB 관리), 복수 권한 보유자는 로그인 시 권한 선택
  • 배포: 프론트를 백엔드 JAR에 내장한 단일 실행 파일, systemd 서비스 등록, 리버스 프록시 선택 적용

업무 규칙 구현

  • 신청 상태: 신청 → 승인 → 취소. 승인 취소는 이력 보존을 위해 중간 상태와 신규 행으로 기록
  • 부서장 확인은 신청 상태와 별도로 관리하여 집계표에서 확인·미확인·취소를 구분
  • 마감 규칙: 월별 신청 기간·시간·한도(근린/정석), 끼니별 마감 시각(이동배식·추가식수)을 설정 화면에서 관리
  • 차감 우선순위: 이월분(2개월 전 → 1개월 전) → 추가분 → 고정식. 단말기 태깅과 이동배식은 각각의 순서를 적용하고, 취소 시 차감 기록까지 역순 복원
  • 배치: 매월 1일 고정식 일괄 부여, 추가식수 만료 자동 처리, 관리자 수동 실행 화면 제공

성능·운영

  • 대량 조회 화면(고정식 변경)의 응답 시간을 13초대에서 1초 미만으로 개선. DB 페이징과 일괄 조회로 쿼리 수를 99% 이상 감소
  • 엑셀 다운로드는 서버 스트리밍 방식으로 통일하여 대량 데이터에서도 브라우저 부담 없이 처리
  • 통합 예외 처리와 표준 응답 형식, 운영 환경 API 문서·소스맵 비활성화

시스템 구성

연동 대상과 데이터 흐름입니다. 그림을 누르면 원본 크기로 열립니다.

시스템 구성도 — 직원·부서 관리자·시스템 관리자 화면, 식수관리 서버, 식수 DB·인사 DB, 식당 단말기 사이의 호출과 데이터 흐름
시스템 구성도 — 직원·부서 관리자·시스템 관리자 화면, 식수관리 서버, 식수 DB·인사 DB, 식당 단말기 사이의 호출과 데이터 흐름

화면 살펴보기

실제 운영 중인 프로그램의 화면입니다. 화면을 누르면 원본 크기로 열립니다.

  1. 1

    나의 정보(직원)

    이달 고정식·이월식·추가식 사용과 잔여를 한 표로 봅니다.

    나의 정보(직원) — 이달 고정식·이월식·추가식 사용과 잔여를 한 표로 봅니다.
  2. 2

    근린식권 신청(부서 관리자)

    아직 신청하지 않은 부서원만 목록에 뜨고, 정석·근린 수량을 넣어 일괄 신청합니다.

    근린식권 신청(부서 관리자) — 아직 신청하지 않은 부서원만 목록에 뜨고, 정석·근린 수량을 넣어 일괄 신청합니다.
  3. 3

    근린식권 신청내역(관리자)

    부서·소팀·상태·성명 필터, 선택 건 일괄 확인·취소, 엑셀 다운로드.

    근린식권 신청내역(관리자) — 부서·소팀·상태·성명 필터, 선택 건 일괄 확인·취소, 엑셀 다운로드.
  4. 4

    추가식수 신청내역

    사유×끼니 집계표(확인·미확인·취소)와 그 아래 신청 사용자 목록.

    추가식수 신청내역 — 사유×끼니 집계표(확인·미확인·취소)와 그 아래 신청 사용자 목록.
  5. 5

    식수현황 집계표

    일별×끼니별×단말기(A~E)와 이동식을 한 표에 집계. 주말 강조, 인쇄·엑셀.

    식수현황 집계표 — 일별×끼니별×단말기(A~E)와 이동식을 한 표에 집계. 주말 강조, 인쇄·엑셀.
  6. 6

    식수관리현황표

    사람별 이월·변동·고정·카드 부여 식수와 추가·이동·단말 사용, 잔여.

    식수관리현황표 — 사람별 이월·변동·고정·카드 부여 식수와 추가·이동·단말 사용, 잔여.
  7. 7

    메뉴 권한 관리

    권한별로 보이는 메뉴를 체크박스 트리로 설정합니다.

    메뉴 권한 관리 — 권한별로 보이는 메뉴를 체크박스 트리로 설정합니다.

이런 프로젝트를 계획 중이라면

같은 방식으로 만들어 드립니다.

이 사례를 참고로 붙여 문의하면 요구 확인이 빨라집니다. 아래는 이 유형에서 의뢰 전에 가장 많이 받는 질문입니다.

이 사례 참고해서 문의

자주 묻는 것

  • 현장에 사람을 보내지 않고 자동 업데이트로 반영합니다. 키오스크가 대기 화면에서 새 버전을 받아 적용하고, 그동안 「새 버전 내려받는 중」이 표시되어 운영자가 재실행을 반복하지 않게 합니다.

  • 흐름과 기능은 시안 없이 먼저 만들고, 시안이 오는 날 바로 입혀 배포합니다. 그래서 시안 수령이 늦어도 일정 대부분을 지킬 수 있습니다. 다만 시안 수령일은 견적 단계에서 함께 정해 둡니다.

  • 연동은 단계를 나눠 처리합니다. 우리 쪽 기록을 먼저 확정하고 외부 호출은 그다음에 하기 때문에, 외부 시스템이 잠시 응답하지 않아도 데이터가 사라지지 않고 상태로 남아 재처리할 수 있습니다. 실패 건은 관리자 화면에 바로 표시됩니다.

  • 운영 데이터는 클라이언트 서버 또는 지정 DB에 저장하고 일 단위 백업을 설정합니다. 납품 후에는 유지보수 계약으로 운영 요청과 보안 업데이트를 이어가며, 변경 이력은 운영 로그로 남깁니다.

  • 배포는 클라이언트 명의의 서버·도메인·계정에 합니다. 원하시면 서버 구축부터 맡고, 운영자 교육과 운영 문서를 인계합니다. 납품 후에는 유지보수 계약으로 장애 대응·기능 개선·보안 업데이트를 이어갑니다. 소스 코드와 배포 절차의 인계 범위(전체 인계 또는 사용권 부여)는 계약 단계에서 정합니다.

비슷한 프로젝트