refactor: modularize application domains

This commit is contained in:
kkfluous
2026-08-13 12:03:34 +08:00
parent d610e4b841
commit 06fe75b4c7
142 changed files with 14645 additions and 8885 deletions
@@ -0,0 +1,53 @@
import assert from 'node:assert/strict';
import test from 'node:test';
import {
customerClause,
dateRangeClause,
enumerateDateRange,
resolveDateRange,
} from './query-model.js';
test('客户范围继续让外部车辆返回空数据', () => {
assert.equal(customerClause('external'), '1=0');
assert.equal(customerClause('lingniu'), '1=1');
assert.equal(customerClause('all'), '1=1');
});
test('能源日期快捷区间继续按本地自然日计算', () => {
const now = new Date(2026, 7, 12, 23, 30);
assert.deepEqual(resolveDateRange('thisWeek', undefined, undefined, now), {
start: '2026-08-10',
end: '2026-08-12',
});
assert.deepEqual(resolveDateRange('thisMonth', undefined, undefined, now), {
start: '2026-08-01',
end: '2026-08-12',
});
assert.deepEqual(resolveDateRange('last15', undefined, undefined, now), {
start: '2026-07-29',
end: '2026-08-12',
});
});
test('合法自定义日期优先并在倒置时交换边界', () => {
assert.deepEqual(resolveDateRange('last15', '2026-08-12', '2026-08-01'), {
start: '2026-08-01',
end: '2026-08-12',
});
assert.deepEqual(resolveDateRange('last15', 'invalid', '2026-08-01', new Date(2026, 7, 12)), {
start: '2026-07-29',
end: '2026-08-12',
});
});
test('补零日期序列包含首尾且 SQL 日期上界保持开区间', () => {
assert.deepEqual(enumerateDateRange('2026-08-10', '2026-08-12'), [
'2026-08-10',
'2026-08-11',
'2026-08-12',
]);
assert.equal(
dateRangeClause('b.refuel_time'),
'b.refuel_time >= ? AND b.refuel_time < DATE_ADD(?, INTERVAL 1 DAY)',
);
});