fix: aggregate national fleet by province

This commit is contained in:
lingniu
2026-08-03 21:23:54 +08:00
parent 53506afbde
commit 72dae44a31
3 changed files with 117 additions and 14 deletions
+41
View File
@@ -0,0 +1,41 @@
import assert from 'node:assert/strict';
import fs from 'node:fs';
import vm from 'node:vm';
const source = fs.readFileSync(new URL('../app.js', import.meta.url), 'utf8');
const checks = `
dashboard = {
vehicles: [
{ vin: 'VIN-GD-1', plateNumber: '粤A00001', online: true, dailyMileageKm: 10, locationAvailable: true, longitude: 113.2, latitude: 23.1 },
{ vin: 'VIN-GD-2', plateNumber: '粤B00002', online: false, dailyMileageKm: 5, locationAvailable: false },
{ vin: 'VIN-ZJ-1', plateNumber: '浙F00003', online: true, dailyMileageKm: 8, locationAvailable: true, longitude: 120.7, latitude: 30.7 },
{ vin: 'VIN-X-1', plateNumber: '观光车001', online: false, dailyMileageKm: 0, locationAvailable: false }
]
};
const summary = buildVehicleProvinceNodes();
assert.equal(summary.nodes.length, 2);
assert.equal(summary.unassigned, 1);
const guangdong = summary.nodes.find(node => node.nameZh === '广东');
assert.equal(guangdong.count, 2);
assert.equal(guangdong.online, 1);
assert.equal(guangdong.dist, 15);
map = { getZoom: () => 4.8 };
assert.equal(vehicleNodes().length, 2);
assert.ok(vehicleNodes().every(node => node.kind === 'vehicleProvince'));
map = { getZoom: () => 8 };
assert.ok(vehicleNodes().every(node => node.kind === 'vehicleCluster'));
assert.equal(vehicleNodes().reduce((sum, node) => sum + node.count, 0), 2);
`;
const sandbox = {
assert,
console,
document: { addEventListener() {} },
window: {},
setInterval() {},
clearInterval() {}
};
vm.runInNewContext(`${source}\n${checks}`, sandbox, { filename: 'app.js' });
console.log('vehicle province aggregation tests: ok');