홈으로 돌아가기

요청 처리 소프트웨어에서의 근무일 계산

이 글은 신청 처리 시스템에서 근무일 기준 마감일 계산 구현을 설명합니다. 카운트다운 규칙, 카운터 표시, 예제, 백엔드 세부 사항, 테스트 전략을 다룹니다. 시스템 로직과 UX의 균형을 맞춘 접근법입니다.

개발에서의 근무일: 마감일과 UX
Advertisement 728x90

애플리케이션 처리 시스템에서 근무일 기준 마감일 계산하기

애플리케이션 처리 시스템은 정확한 마감일 계산을 위해 달력일이 아닌 근무일을 기준으로 추적해야 합니다. 카운트는 업무 시간 내에 게시된 날부터 시작되며, 업무 시간 외에 게시된 경우 다음 근무일부터 시작됩니다. 달력은 시스템 시작 시 외부 서비스에서 자동으로 로드되며, 올해와 내년 데이터를 매일 확인합니다. 달력이 없을 경우 시스템은 달력일로 대체됩니다.

등록은 게시 즉시 이루어지며, 근무일을 기다리지 않습니다. 예를 들어: 근무일 오후 11시에 게시된 경우 시작일은 다음 근무일로 이동합니다; 같은 날 오전 6시에 게시된 경우, 업무 시작 시간이 이후라면 현재 날짜로 유지됩니다.

카운터 표시 규칙

카운터는 경과한 전체 근무일 수를 표시합니다. 게시 시간과 관계없이, 마감일 시작 날에는 0/N으로 표시됩니다.

Google AdInline article slot
  • 업무 시간 내 게시일: 다음 날 00:00까지 0/N으로 표시.
  • 업무 시간 외 게시: 첫 번째 근무일 00:00까지 0/N으로 표시.

카운터는 전체 근무일이 끝난 후 00:00에 증가합니다. 값이 ≥ N(예: 5/5)일 때 마감을 놓친 것으로 간주됩니다.

논의에서 거부된 대안

  • 게시 시점부터 1/N으로 카운터 시작 — 전체 일수 인식이 복잡해짐.
  • 근무일 종료 시 증가 — 직원 지연을 무시함.
  • 근무일 종료 시 초과 표시 — 오후 5:59와 오후 6:01 사이 직관적이지 않음.

계산 예시

예시 1: 1월 1일(휴일) 게시, 첫 근무일 1월 12일, 마감일 1월 16일(5일). 1월 13일 처리 — 카운터 1/5(전체 일수: 1월 12일만).

예시 2: 처리 기간 2일, 근무일 오전 9:00(월요일) 게시. 월요일: 0/2; 화요일: 1/2; 화요일 자정: 2/2(초과).

Google AdInline article slot

예시 3: 동일 작업, 월요일 오후 8:00 게시. 월요일: 0/2; 화요일: 0/2; 수요일: 1/2; 수요일 자정: 2/2.

시간대는 단순화를 위해 서버 시간으로 통일됩니다.

백엔드 구현 세부 사항

  • 메모리에 달력 캐싱: 올해 + 내년(오래된 데이터 정리 포함).
  • 각 애플리케이션에 대해 카운터 값과 원본 마감일을 데이터베이스에 기록 — 재계산 최소화.
  • 마감일 이력 저장: 유형/기간별 구성용 별도 테이블 또는 엔티티 컬럼.

달력 업데이트: 시작 시 API 요청, 매일 00:00.

Google AdInline article slot

주요 시나리오 테스트

실시간으로 동작 테스트 또는 데이터베이스/API 시뮬레이션:

  • 정상 근무일.
  • 휴일.
  • 근무일 저녁(업무 시간 후).
  • 달력 없음 — 대체 및 자동 업데이트.
  • 초과 및 정상 마감일.
  • 부하: 여러 해에 걸친 다중 달력.
  • 비활성 API 서비스.

핵심 포인트

  • 카운트는 업무 시간 내 게시일 또는 다음 근무일부터 시작.
  • 카운터: 경과한 전체 일수, 0/N으로 시작.
  • 초과: 마감일 후 00:00에 ≥ N.
  • 캐싱 및 데이터베이스 기록으로 부하 감소.
  • 테스트 경계 사례: 휴일, 저녁 시간, 데이터 누락.

— Editorial Team

Advertisement 728x90

다음 읽기