project cockpit

This commit is contained in:
2026-03-17 19:13:54 -05:00
parent 7993f16a76
commit f772ccacc7
7 changed files with 550 additions and 229 deletions

View File

@@ -1,10 +1,12 @@
export const projectStatuses = ["PLANNED", "ACTIVE", "ON_HOLD", "AT_RISK", "COMPLETE"] as const;
export const projectPriorities = ["LOW", "MEDIUM", "HIGH", "CRITICAL"] as const;
export const projectMilestoneStatuses = ["PLANNED", "IN_PROGRESS", "BLOCKED", "COMPLETE"] as const;
export const projectCockpitRiskLevels = ["LOW", "MEDIUM", "HIGH"] as const;
export type ProjectStatus = (typeof projectStatuses)[number];
export type ProjectPriority = (typeof projectPriorities)[number];
export type ProjectMilestoneStatus = (typeof projectMilestoneStatuses)[number];
export type ProjectCockpitRiskLevel = (typeof projectCockpitRiskLevels)[number];
export interface ProjectCustomerOptionDto {
id: string;
@@ -69,6 +71,93 @@ export interface ProjectMilestoneDto {
sortOrder: number;
}
export interface ProjectCockpitCommercialDto {
quoteTotal: number | null;
quoteStatus: string | null;
orderTotal: number | null;
orderStatus: string | null;
activeDocumentType: "QUOTE" | "ORDER" | null;
activeDocumentNumber: string | null;
activeDocumentStatus: string | null;
activeDocumentTotal: number | null;
}
export interface ProjectCockpitPurchaseOrderDto {
id: string;
documentNumber: string;
vendorId: string;
vendorName: string;
status: string;
issueDate: string;
linkedLineCount: number;
linkedLineValue: number;
totalOrderedQuantity: number;
totalReceivedQuantity: number;
totalOutstandingQuantity: number;
receiptCount: number;
}
export interface ProjectCockpitVendorDto {
vendorId: string;
vendorName: string;
orderCount: number;
linkedLineValue: number;
outstandingQuantity: number;
}
export interface ProjectCockpitReceiptDto {
receiptId: string;
receiptNumber: string;
purchaseOrderId: string;
purchaseOrderNumber: string;
vendorName: string;
receivedAt: string;
totalQuantity: number;
}
export interface ProjectCockpitPurchasingDto {
linkedPurchaseOrderCount: number;
openPurchaseOrderCount: number;
vendorCount: number;
linkedLineCount: number;
linkedLineValue: number;
totalOrderedQuantity: number;
totalReceivedQuantity: number;
totalOutstandingQuantity: number;
purchaseOrders: ProjectCockpitPurchaseOrderDto[];
vendors: ProjectCockpitVendorDto[];
recentReceipts: ProjectCockpitReceiptDto[];
}
export interface ProjectCockpitDeliveryDto {
shipmentNumber: string | null;
shipmentStatus: string | null;
shipDate: string | null;
packageCount: number;
trackingNumber: string | null;
carrier: string | null;
serviceLevel: string | null;
}
export interface ProjectCockpitRiskDto {
readinessScore: number;
riskLevel: ProjectCockpitRiskLevel;
blockedMilestoneCount: number;
overdueMilestoneCount: number;
overdueWorkOrderCount: number;
shortageItemCount: number;
totalUncoveredQuantity: number;
outstandingPurchaseOrderCount: number;
outstandingReceiptQuantity: number;
}
export interface ProjectCockpitDto {
commercial: ProjectCockpitCommercialDto;
purchasing: ProjectCockpitPurchasingDto;
delivery: ProjectCockpitDeliveryDto;
risk: ProjectCockpitRiskDto;
}
export interface ProjectMilestoneInput {
id?: string | null;
title: string;
@@ -90,6 +179,7 @@ export interface ProjectDetailDto extends ProjectSummaryDto {
customerEmail: string;
customerPhone: string;
milestones: ProjectMilestoneDto[];
cockpit: ProjectCockpitDto;
}
export interface ProjectInput {