feat(categories): detail page with fleet insights
CI / Lint · Typecheck · Test · Build (push) Successful in 46s
CI / Playwright (smoke) (push) Has been skipped
CI / Build & push images (push) Successful in 1m6s

Clicking a category anywhere in the app now opens /categories/:id with
MPN breakdown, manufacturer mix, failures by MPN, and past-EOL exposure
— a dual of the manufacturer detail page.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-04-17 15:41:47 -04:00
parent 62a3d615f4
commit a2b088463d
15 changed files with 1016 additions and 7 deletions
+49
View File
@@ -0,0 +1,49 @@
export interface CategoryPriceStats {
total: number;
average: number;
min: number | null;
max: number | null;
countWithPrice: number;
}
export interface CategoryFailureStats {
repairs: number;
distinctFailedParts: number;
fmsImplicating: number;
}
export interface CategoryManufacturerCount {
manufacturerId: string;
manufacturerName: string;
count: number;
}
export interface CategoryModelCount {
partModelId: string;
mpn: string;
count: number;
}
export interface CategoryModelFailureCount {
partModelId: string;
mpn: string;
repairs: number;
}
export interface CategoryPastEolModel {
partModelId: string;
mpn: string;
eolDate: string;
deployedCount: number;
}
export interface CategoryInsights {
totalPartModels: number;
totalParts: number;
priceStats: CategoryPriceStats;
failures: CategoryFailureStats;
byManufacturer: CategoryManufacturerCount[];
topModelsByUnits: CategoryModelCount[];
failuresByModel: CategoryModelFailureCount[];
pastEolModels: CategoryPastEolModel[];
}
+1
View File
@@ -20,3 +20,4 @@ export * from './csv-imports.js';
export * from './analytics.js';
export * from './part-model-insights.js';
export * from './manufacturer-insights.js';
export * from './category-insights.js';