fix: restore local mileage monitoring queries
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
shishengliang
2026-09-16 09:10:39 +08:00
parent d7538ed6eb
commit c49a02e3d9
3 changed files with 50 additions and 1 deletions
@@ -0,0 +1,45 @@
import assert from 'node:assert/strict';
import test from 'node:test';
import pool from '../../db/mysql.js';
import monitoring from './monitoring.js';
import { clearOneOsMileageCache } from './oneos-api.js';
test('single-day monitoring merges all target rows and handles an empty target table', async (t) => {
const previousUrl = process.env.ONEOS_MILEAGE_API_BASE_URL;
const previousKey = process.env.ONEOS_MILEAGE_API_KEY;
process.env.ONEOS_MILEAGE_API_BASE_URL = 'https://oneos.test';
process.env.ONEOS_MILEAGE_API_KEY = 'test-key';
t.after(() => {
if (previousUrl === undefined) delete process.env.ONEOS_MILEAGE_API_BASE_URL;
else process.env.ONEOS_MILEAGE_API_BASE_URL = previousUrl;
if (previousKey === undefined) delete process.env.ONEOS_MILEAGE_API_KEY;
else process.env.ONEOS_MILEAGE_API_KEY = previousKey;
clearOneOsMileageCache();
});
let targets = [
{ id: 1, target_name: '目标A', plate_number: '粤A10001' },
{ id: 2, target_name: '目标B', plate_number: '粤A10001' },
];
t.mock.method(pool, 'query', async (sql: string) => {
if (sql.includes('tab_mileage_assessment_target')) return [targets, []];
assert.ok(sql.includes('FROM vehicle_info vi'));
return [[{ plate: '粤A10001', vin: 'test-vin' }], []];
});
t.mock.method(globalThis, 'fetch', async (_url: unknown, init: RequestInit) => {
const { date } = JSON.parse(String(init.body));
return Response.json({ code: 'SUCCESS', data: [{
plateNumber: '粤A10001', date, status: 'NORMAL',
dailyMileageKm: 12, totalMileageKm: 100, sourceProtocol: 'GB32960',
}] });
});
for (const expectedTargets of [['目标A', '目标B'], []]) {
clearOneOsMileageCache();
const response = await monitoring.request('/?startDate=2026-09-16&endDate=2026-09-16&sourcePriority=instrument');
assert.equal(response.status, 200);
const payload = await response.json();
assert.equal(payload.total, 1);
assert.equal(payload.vehicles[0].dailyKm, 12);
assert.deepEqual(payload.vehicles[0].targetNames, expectedTargets);
targets = [];
}
});