v2.10.2: 휴일 근무 카운터 초 표시 수정

원격 v2.10.1(cmd창 깜빡임 hotfix) 위에 rebase → 2.10.2.
- 휴일 분기 표시용 remaining을 초 정밀도 timedelta로 분리
  (적립 계산은 퇴근 시 분 단위 그대로 — 영향 없음)
- pytest 189 + 통합 53 green
This commit is contained in:
KINDNICK 2026-05-16 18:13:39 +09:00
parent 3db4ed2351
commit da5f91984b
3 changed files with 22 additions and 10 deletions

View File

@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [2.10.2] — 2026-05-16
### Fixed
- **휴일/주말 근무 시 카운터 초가 항상 `00`** 으로 멈춰 보이던 문제 (사용자 보고)
- 원인: 휴일 분기에서 `calculate_holiday_overtime`의 분 절삭값(적립 단위)을
그대로 표시에 사용 → 초 정보 소실
- 수정: 표시용 `remaining`을 초 정밀도 timedelta로 분리 계산
(적립 계산은 퇴근 시 분 단위 그대로 — 영향 없음)
- 차감 항목(점심·저녁·외출·연장 사용)은 `calculate_holiday_overtime`과 동일하게 적용
## [2.10.1] — 2026-05-01
### Fixed — 업데이트 시 cmd 창 깜빡임 제거

View File

@ -4,4 +4,4 @@
릴리스 값을 올린 git tag push.
CHANGELOG.md의 최상단 항목과 일치시킬 .
"""
__version__ = '2.10.1'
__version__ = '2.10.2'

View File

@ -757,15 +757,17 @@ class MainWindow(QMainWindow):
is_holiday = is_non_working or is_full_day_leave
if is_holiday:
actual_ot, _ = self.time_calc.calculate_holiday_overtime(
self.clock_in_time, now,
include_lunch=self.lunch_break_enabled,
include_dinner=self.dinner_break_enabled,
break_minutes=break_minutes,
)
# 사용한 추가근무 차감만 반영 (leave_used는 holiday/override 케이스에서 의미 없음)
actual_ot = max(0, actual_ot - overtime_used_today)
remaining = -timedelta(minutes=actual_ot)
# 표시는 초 단위로 부드럽게 — 적립(분 절삭)은 퇴근 시 별도 계산.
# calculate_holiday_overtime와 동일한 차감 항목을 timedelta로 적용.
deduction_min = break_minutes + overtime_used_today
if self.lunch_break_enabled:
deduction_min += self.time_calc.lunch_duration_minutes
if self.dinner_break_enabled:
deduction_min += self.time_calc.dinner_duration_minutes
worked = (now - self.clock_in_time) - timedelta(minutes=deduction_min)
if worked.total_seconds() < 0:
worked = timedelta(0)
remaining = -worked
else:
# 평일: 정상 남은 시간 계산. 부분 연차(반차/시간연차)는 leave_used_today에
# 그대로 반영되어 카운트다운이 단축됨.