feat: 空白作息区间计入加班工时
This commit is contained in:
@@ -280,3 +280,33 @@ def test_admin_forced_release_still_caps_work_time():
|
||||
assert metrics["duration_minutes"] == 60
|
||||
assert metrics["effective_minutes"] == 60
|
||||
assert item.allocated_minutes == 60
|
||||
|
||||
|
||||
def test_morning_blank_interval_counts_as_overtime():
|
||||
start_at = datetime(2026, 7, 25, 6, 0, 0)
|
||||
end_at = datetime(2026, 7, 25, 8, 0, 0)
|
||||
item = Item(good_qty=10)
|
||||
|
||||
metrics = calculate_report_metrics(start_at, end_at, [item])
|
||||
|
||||
assert metrics["duration_minutes"] == 120
|
||||
assert metrics["effective_minutes"] == 120
|
||||
assert metrics["shift_day_minutes"] == 0
|
||||
assert metrics["shift_overtime_minutes"] == 120
|
||||
assert metrics["shift_night_minutes"] == 0
|
||||
assert item.allocated_minutes == 120
|
||||
|
||||
|
||||
def test_dinner_blank_interval_counts_as_overtime():
|
||||
start_at = datetime(2026, 7, 25, 17, 20, 0)
|
||||
end_at = datetime(2026, 7, 25, 18, 0, 0)
|
||||
item = Item(good_qty=10)
|
||||
|
||||
metrics = calculate_report_metrics(start_at, end_at, [item])
|
||||
|
||||
assert metrics["duration_minutes"] == 40
|
||||
assert metrics["effective_minutes"] == 40
|
||||
assert metrics["shift_day_minutes"] == 0
|
||||
assert metrics["shift_overtime_minutes"] == 40
|
||||
assert metrics["shift_night_minutes"] == 0
|
||||
assert item.allocated_minutes == 40
|
||||
|
||||
Reference in New Issue
Block a user