- Scoping tab: AI matches now auto-expand to show Simple/Medium/Complex sibling variants; toggle button to switch between All Complexities / AI Match Only view; row tracking keyed by catalogId (stable on toggle) - Squad Breakdown: per-row checkboxes + trash icon, bulk "Delete Selected" action bar, "Restore Hidden Roles" button; excluded roles removed from FTE/hours totals and CSV export; excludedRoles persisted in scenarios Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
49 lines
1,001 B
TypeScript
49 lines
1,001 B
TypeScript
|
|
export interface Asset {
|
|
uniques: string; // Unique identifier: "Asset101 - Brand Communication Idea (BCI) - Simple"
|
|
catalogId: string;
|
|
category: string;
|
|
subCategory: string;
|
|
assetName: string;
|
|
complexityLevel: string;
|
|
description: string;
|
|
complexityDescription: string;
|
|
studioCaveats: string;
|
|
isMaster: boolean;
|
|
}
|
|
|
|
export interface RoleHours {
|
|
roleTitle: string;
|
|
discipline: string;
|
|
hours: number;
|
|
}
|
|
|
|
export interface SelectedAsset extends Asset {
|
|
volume: number;
|
|
}
|
|
|
|
export interface RoleProjection {
|
|
discipline: string;
|
|
roleTitle: string;
|
|
totalHours: number;
|
|
calculatedFte: number;
|
|
manualOverride?: number;
|
|
}
|
|
|
|
export interface ManualStaff {
|
|
discipline: string;
|
|
roleTitle: string;
|
|
quantity: number;
|
|
}
|
|
|
|
export interface Scenario {
|
|
id: string;
|
|
name: string;
|
|
selectedAssets: SelectedAsset[];
|
|
overrides: Record<string, number>;
|
|
manualStaff: ManualStaff[];
|
|
excludedRoles?: string[];
|
|
totalFte: number;
|
|
totalHours: number;
|
|
timestamp: number;
|
|
}
|