주간 근무시간을 기준으로 연장/야간/휴일 가산수당을 계산하는 과정은
입력과 집계가 복잡하고 오류가 발생하기 쉽습니다.
이 계산기는 직원별 주간 근무 입력 → 자동 계산 → 저장/조회 → 엑셀 출력까지
한 번에 처리할 수 있도록 만들었습니다.
- 주간 근무 입력 및 자동 계산
- 연장/야간/휴일 가산수당 계산(30분 단위)
- 이월(주 경계) 처리 및 합산 조회
- 저장된 내역 관리 및 엑셀 다운로드
- 관리자 보관함(삭제 복원/영구삭제), 직원 관리
- 계산 단위: 30분
- 일일 기준: 00:00~24:00
- 주간 기준: 월요일 00:00 ~ 다음 월요일 00:00
- 일 8시간 초과분 → 연장(1.5배)
- 주 40시간 초과분 → 연장(1.5배)
(일일 8시간 초과분은 주 40시간 합산에서 제외) - 야간(22:00~06:00), 휴일 근로는 가산 적용
- 가중 배율: 1.0 / 1.5 / 2.0 / 2.5 배
- 경고 기준: 주 52시간 초과, 연장근로 포함 시간 12시간 초과
- **메인 화면(직원별 기록)**에서 직원 선택
- 근무등록에서 주차 기준일과 근무 시간 입력
- 계산하기 → 결과 확인
- 내역 저장 또는 엑셀 다운로드
- 자정 넘김 근무는 같은 날짜에 입력
예) 12/31 22:00~01/01 06:00 → 12/31에22:00~06:00 - 겹치는 시간대는 오류로 처리
09:00~09:00같은 입력은 익일 처리
- 한 주를 월요일 00:00 ~ 다음 월요일 00:00으로 보기 때문에 자정 이후 시간은 다음 주로 자동 이월됩니다.
- 상세 테이블에서는 이월된 시간을 제외하고 표시됩니다.
- 이월된 구간의 메모도 다음 주에 복사됩니다.
- 동일 주간 저장 내역이 2건 이상이면 합산 버튼으로 합산 결과 확인 가능
- 직원 추가/삭제
- 삭제 보관함에서 복원/영구삭제
# 1) 가상환경(권장)
python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
# 2) 의존성 설치
pip install -r requirements.txt
# 3) 실행
python app.py실행 후 브라우저 접속:
- DB 파일:
workpay.sqlite3(프로젝트 폴더 내) - 관리자 비밀번호: 환경변수
ADMIN_PASSWORD(없으면config.py기본값 사용)
- DB는 프로젝트 폴더 밖으로 이동하고
DB_PATH환경변수로 지정 권장 - 배포 전 DB 백업 권장
app.py: Flask 엔트리포인트routes_calculator.py: 라우트/저장/엑셀/관리자calc_weekly.py: 계산 엔진db.py,config.py,time_utils.py: DB/설정/유틸templates/: 화면 템플릿static/: 이미지 리소스