feat: dashboard overhaul, chargeability reports, dispo import enhancements, UI polish
Dashboard: expanded chargeability widget, resource/project table widgets with sorting and filters, stat cards with formatMoney integration. Chargeability: new report client with filtering, chargeability-bookings use case, updated dashboard overview logic. Dispo import: TBD project handling, parse-dispo-matrix improvements, stage-dispo-projects resource value scores, new tests. Estimates: CommercialTermsEditor component, commercial-terms engine module, expanded estimate schemas and types. UI: AppShell navigation updates, timeline filter/toolbar enhancements, role management improvements, signin page redesign, Tailwind/globals polish, SystemSettings SMTP section, anonymization support. Tests: new router tests (anonymization, chargeability, effort-rule, entitlement, estimate, experience-multiplier, notification, resource, staffing, vacation). Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
@@ -37,6 +37,7 @@ export interface ImportDispoBatchOptions {
|
||||
allowTbdUnresolved: boolean;
|
||||
chargeabilityWorkbookPath: string;
|
||||
costWorkbookPath: string | undefined;
|
||||
importTbdProjects: boolean;
|
||||
notes: string | undefined;
|
||||
planningWorkbookPath: string;
|
||||
previewUnresolvedLimit: number;
|
||||
@@ -93,6 +94,7 @@ interface StageDispoImportBatchResult {
|
||||
|
||||
interface CommitDispoImportBatchInput {
|
||||
allowTbdUnresolved?: boolean;
|
||||
importTbdProjects?: boolean;
|
||||
importBatchId: string;
|
||||
}
|
||||
|
||||
@@ -149,6 +151,7 @@ export function parseImportDispoBatchArgs(argv: string[]): ImportDispoBatchOptio
|
||||
allowTbdUnresolved: true,
|
||||
chargeabilityWorkbookPath: DEFAULT_CHARGEABILITY_WORKBOOK,
|
||||
costWorkbookPath: DEFAULT_COST_WORKBOOK,
|
||||
importTbdProjects: false,
|
||||
notes: undefined,
|
||||
planningWorkbookPath: DEFAULT_PLANNING_WORKBOOK,
|
||||
previewUnresolvedLimit: 10,
|
||||
@@ -222,6 +225,11 @@ export function parseImportDispoBatchArgs(argv: string[]): ImportDispoBatchOptio
|
||||
continue;
|
||||
}
|
||||
|
||||
if (argument === "--import-tbd-projects") {
|
||||
options.importTbdProjects = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (argument === "--no-roster") {
|
||||
options.rosterWorkbookPath = undefined;
|
||||
continue;
|
||||
@@ -259,6 +267,7 @@ function buildHelpText() {
|
||||
" --skip-commit Stage and assess readiness only",
|
||||
" --strict-source-data Require readiness without fallback assumptions",
|
||||
" --disallow-tbd Fail commit if [tbd] unresolved rows remain",
|
||||
" --import-tbd-projects Commit [tbd] rows as provisional DRAFT projects",
|
||||
].join("\n");
|
||||
}
|
||||
|
||||
@@ -415,6 +424,7 @@ export async function runImportDispoBatch(options: ImportDispoBatchOptions) {
|
||||
|
||||
const commitResult = await dispoImport.commitDispoImportBatch(prisma, {
|
||||
allowTbdUnresolved: options.allowTbdUnresolved,
|
||||
importTbdProjects: options.importTbdProjects,
|
||||
importBatchId: stageResult.batchId,
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user