feat: build vehicle data platform and production pipeline

This commit is contained in:
lingniu
2026-07-14 12:35:33 +08:00
parent b452be3b94
commit bb59303a4b
270 changed files with 88016 additions and 1975 deletions

View File

@@ -0,0 +1,31 @@
import { describe, expect, it } from 'vitest';
import { MONITOR_REFRESH, monitorMapQueryParams, monitorQueryParams } from './useMonitorData';
describe('monitor query params', () => {
it('keeps server-owned status filters and bounded list size', () => {
const params = monitorQueryParams({ keyword: ' 沪A ', protocol: 'JT808', status: 'driving' }, 200);
expect(params.get('keyword')).toBe('沪A');
expect(params.get('protocol')).toBe('JT808');
expect(params.get('status')).toBe('driving');
expect(params.get('online')).toBeNull();
expect(params.get('limit')).toBe('200');
});
it('retains compatibility online filter for online and offline states', () => {
expect(monitorQueryParams({ keyword: '', protocol: '', status: 'offline' }, 200).get('online')).toBe('offline');
});
it('drops stale viewport bounds for a direct vehicle search', () => {
const viewport = { zoom: 13, bounds: '103,29,105,31' };
expect(monitorMapQueryParams({ keyword: '粤A1', protocol: '', status: '' }, viewport).has('bounds')).toBe(false);
expect(monitorMapQueryParams({ keyword: '', protocol: '', status: '' }, viewport).get('bounds')).toBe(viewport.bounds);
});
});
describe('monitor refresh cadence', () => {
it('prioritizes one selected vehicle without polling the whole fleet too aggressively', () => {
expect(MONITOR_REFRESH).toEqual({ summary: 30_000, fleet: 15_000, selected: 10_000, alerts: 15_000 });
expect(MONITOR_REFRESH.selected).toBeLessThan(MONITOR_REFRESH.fleet);
expect(MONITOR_REFRESH.fleet).toBeLessThan(MONITOR_REFRESH.summary);
});
});