From da5f91984bd47210cf5326a02ec127dc329864ef Mon Sep 17 00:00:00 2001 From: KINDNICK Date: Sat, 16 May 2026 18:13:39 +0900 Subject: [PATCH] =?UTF-8?q?v2.10.2:=20=ED=9C=B4=EC=9D=BC=20=EA=B7=BC?= =?UTF-8?q?=EB=AC=B4=20=EC=B9=B4=EC=9A=B4=ED=84=B0=20=EC=B4=88=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 원격 v2.10.1(cmd창 깜빡임 hotfix) 위에 rebase → 2.10.2. - 휴일 분기 표시용 remaining을 초 정밀도 timedelta로 분리 (적립 계산은 퇴근 시 분 단위 그대로 — 영향 없음) - pytest 189 + 통합 53 green --- CHANGELOG.md | 10 ++++++++++ core/version.py | 2 +- ui/main_window.py | 20 +++++++++++--------- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d7aa64..e37d99b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 창 깜빡임 제거 diff --git a/core/version.py b/core/version.py index 3040562..62289d3 100644 --- a/core/version.py +++ b/core/version.py @@ -4,4 +4,4 @@ 릴리스 시 이 값을 올린 후 git tag → push. CHANGELOG.md의 최상단 항목과 일치시킬 것. """ -__version__ = '2.10.1' +__version__ = '2.10.2' diff --git a/ui/main_window.py b/ui/main_window.py index 5506379..c095a16 100644 --- a/ui/main_window.py +++ b/ui/main_window.py @@ -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에 # 그대로 반영되어 카운트다운이 단축됨.