From 7c3b506fe74323bd69d4d8e8e7fd0933d45e1005 Mon Sep 17 00:00:00 2001 From: lingniu Date: Sat, 4 Jul 2026 05:30:40 +0800 Subject: [PATCH] feat(platform): preserve missing source filters --- vehicle-data-platform/apps/web/src/domain/appRoute.test.ts | 7 ++++--- vehicle-data-platform/apps/web/src/domain/appRoute.ts | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/vehicle-data-platform/apps/web/src/domain/appRoute.test.ts b/vehicle-data-platform/apps/web/src/domain/appRoute.test.ts index 5e4c3af7..676669a1 100644 --- a/vehicle-data-platform/apps/web/src/domain/appRoute.test.ts +++ b/vehicle-data-platform/apps/web/src/domain/appRoute.test.ts @@ -12,13 +12,14 @@ describe('parseAppHash', () => { }); test('parses vehicle list filters from hash query', () => { - expect(parseAppHash('#/vehicles?coverage=multi&serviceStatus=degraded&online=online&bindingStatus=bound')).toEqual({ + expect(parseAppHash('#/vehicles?coverage=multi&serviceStatus=degraded&online=online&bindingStatus=bound&missingProtocol=YUTONG_MQTT')).toEqual({ page: 'vehicles', filters: { coverage: 'multi', serviceStatus: 'degraded', online: 'online', - bindingStatus: 'bound' + bindingStatus: 'bound', + missingProtocol: 'YUTONG_MQTT' } }); }); @@ -45,7 +46,7 @@ describe('buildAppHash', () => { }); test('builds shareable vehicle list hash with filters', () => { - expect(buildAppHash({ page: 'vehicles', filters: { coverage: 'multi', serviceStatus: 'degraded' } })).toBe('#/vehicles?coverage=multi&serviceStatus=degraded'); + expect(buildAppHash({ page: 'vehicles', filters: { coverage: 'multi', serviceStatus: 'degraded', missingProtocol: 'YUTONG_MQTT' } })).toBe('#/vehicles?coverage=multi&serviceStatus=degraded&missingProtocol=YUTONG_MQTT'); }); test('builds shareable quality hash with filters', () => { diff --git a/vehicle-data-platform/apps/web/src/domain/appRoute.ts b/vehicle-data-platform/apps/web/src/domain/appRoute.ts index 9b7d6a65..e2638d4d 100644 --- a/vehicle-data-platform/apps/web/src/domain/appRoute.ts +++ b/vehicle-data-platform/apps/web/src/domain/appRoute.ts @@ -9,7 +9,7 @@ export type AppRoute = { filters?: Record; }; -const filterKeys = ['coverage', 'serviceStatus', 'online', 'bindingStatus', 'issueType'] as const; +const filterKeys = ['coverage', 'serviceStatus', 'online', 'bindingStatus', 'missingProtocol', 'issueType'] as const; export function parseAppHash(hash: string): AppRoute { const normalized = hash.trim().replace(/^#\/?/, '');