fix(工时): 按中国工作日历统计正常耗时
This commit is contained in:
@@ -1,14 +1,26 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
|
||||
import { calcActualElapsedHours, formatActualDuration } from './work-hours';
|
||||
import { calcActualElapsedHours, calcWorkHours, formatActualDuration } from './work-hours';
|
||||
import { calcDuration } from './overtime';
|
||||
|
||||
test('calcActualElapsedHours uses real elapsed time with a half-hour minimum', () => {
|
||||
test('calcWorkHours skips official holidays and counts makeup workdays', () => {
|
||||
assert.equal(calcWorkHours('2026-10-01T09:00:00', '2026-10-01T18:00:00'), 0);
|
||||
assert.equal(calcWorkHours('2026-10-10T09:00:00', '2026-10-10T18:00:00'), 8);
|
||||
});
|
||||
|
||||
test('calcActualElapsedHours uses work calendar time with a half-hour minimum', () => {
|
||||
assert.equal(calcActualElapsedHours('2026-06-22T09:00:00', '2026-06-22T09:10:00'), 0.5);
|
||||
assert.equal(calcActualElapsedHours('2026-06-22T09:00:00', '2026-06-22T10:15:00'), 1.5);
|
||||
assert.equal(calcActualElapsedHours('2026-10-01T09:00:00', '2026-10-01T18:00:00'), 0);
|
||||
assert.equal(calcActualElapsedHours('2026-10-10T09:00:00', '2026-10-10T10:00:00'), 1);
|
||||
assert.equal(calcActualElapsedHours('2026-06-22T10:00:00', '2026-06-22T09:00:00'), 0);
|
||||
});
|
||||
|
||||
test('overtime duration still counts holiday time directly', () => {
|
||||
assert.equal(calcDuration('2026-10-01T09:00:00', '2026-10-01T18:00:00'), 9);
|
||||
});
|
||||
|
||||
test('formatActualDuration converts hours to natural days', () => {
|
||||
assert.equal(formatActualDuration(60.5), '60.5h(2.5天)');
|
||||
assert.equal(formatActualDuration(0.5), '0.5h(0.02天)');
|
||||
|
||||
Reference in New Issue
Block a user