adpa-enterprise-framework-automation
Version:
Modular, standards-compliant Node.js/TypeScript automation framework for enterprise requirements, project, and data management. Provides CLI and API for BABOK v3, PMBOK 7th Edition, and DMBOK 2.0 (in progress). Production-ready Express.js API with TypeSpe
439 lines • 11.3 kB
TypeScript
/**
* Human-in-the-Loop Document Review Types
* Type definitions for document review and verification workflow
*/
export type ReviewStatus = 'pending_assignment' | 'assigned' | 'in_review' | 'feedback_provided' | 'approved' | 'rejected' | 'revision_requested' | 'completed';
export type ReviewerRole = 'subject_matter_expert' | 'technical_reviewer' | 'compliance_officer' | 'project_manager' | 'business_analyst' | 'quality_assurance' | 'stakeholder';
export type ReviewPriority = 'low' | 'medium' | 'high' | 'critical';
export type FeedbackType = 'content_accuracy' | 'technical_compliance' | 'formatting' | 'completeness' | 'clarity' | 'stakeholder_alignment' | 'regulatory_compliance';
export type ReviewDecision = 'approve' | 'reject' | 'request_revision';
/**
* Interface for document review request
*/
export interface DocumentReview {
id: string;
documentId: string;
documentName: string;
documentType: string;
documentPath: string;
projectId: string;
projectName: string;
status: ReviewStatus;
priority: ReviewPriority;
dueDate?: Date;
assignedReviewers: ReviewerAssignment[];
currentReviewer?: string;
reviewRounds: ReviewRound[];
currentRound: number;
createdAt: Date;
updatedAt: Date;
submittedAt?: Date;
completedAt?: Date;
metadata: {
generationJobId?: string;
complianceScore?: number;
automatedChecks?: AutomatedCheckResult[];
tags?: string[];
};
}
/**
* Interface for reviewer assignment
*/
export interface ReviewerAssignment {
reviewerId: string;
reviewerName: string;
reviewerEmail: string;
role: ReviewerRole;
expertise: string[];
assignedAt: Date;
notifiedAt?: Date;
acceptedAt?: Date;
status: 'assigned' | 'accepted' | 'declined' | 'completed';
estimatedHours?: number;
}
/**
* Interface for review round
*/
export interface ReviewRound {
roundNumber: number;
startedAt: Date;
completedAt?: Date;
reviewerId: string;
reviewerName: string;
feedback: ReviewFeedback[];
decision: ReviewDecision;
overallComments?: string;
qualityScore?: number;
complianceScore?: number;
attachments?: ReviewAttachment[];
references?: string[];
}
/**
* Interface for review feedback
*/
export interface ReviewFeedback {
id: string;
type: FeedbackType;
severity: 'info' | 'minor' | 'major' | 'critical';
section?: string;
lineNumber?: number;
title: string;
description: string;
suggestion?: string;
originalText?: string;
suggestedText?: string;
status: 'open' | 'addressed' | 'dismissed' | 'deferred';
addressedBy?: string;
addressedAt?: Date;
createdAt: Date;
updatedAt: Date;
}
/**
* Interface for review attachments
*/
export interface ReviewAttachment {
id: string;
filename: string;
originalName: string;
mimeType: string;
size: number;
uploadedBy: string;
uploadedAt: Date;
description?: string;
}
/**
* Interface for automated check results
*/
export interface AutomatedCheckResult {
checkType: string;
checkName: string;
status: 'passed' | 'failed' | 'warning';
score?: number;
details: string;
recommendations?: string[];
executedAt: Date;
}
/**
* Interface for review template/criteria
*/
export interface ReviewCriteria {
id: string;
name: string;
description: string;
documentTypes: string[];
criteria: ReviewCriterion[];
passingScore: number;
weightedScoring: boolean;
createdBy: string;
createdAt: Date;
updatedAt: Date;
isActive: boolean;
}
/**
* Interface for individual review criterion
*/
export interface ReviewCriterion {
id: string;
name: string;
description: string;
category: FeedbackType;
weight: number;
required: boolean;
guidelines: string;
examples?: string[];
maxScore: number;
passingScore: number;
}
/**
* Interface for reviewer profile
*/
export interface ReviewerProfile {
id: string;
userId: string;
name: string;
email: string;
title: string;
department: string;
organization: string;
roles: ReviewerRole[];
expertise: string[];
certifications: string[];
experienceYears: number;
availability: ReviewerAvailability;
preferences: ReviewerPreferences;
metrics: ReviewerMetrics;
isActive: boolean;
createdAt: Date;
updatedAt: Date;
}
/**
* Interface for reviewer availability
*/
export interface ReviewerAvailability {
hoursPerWeek: number;
timeZone: string;
workingHours: {
start: string;
end: string;
};
workingDays: number[];
unavailableDates: Date[];
maxConcurrentReviews: number;
}
/**
* Interface for reviewer preferences
*/
export interface ReviewerPreferences {
preferredDocumentTypes: string[];
preferredProjectTypes: string[];
notificationPreferences: {
email: boolean;
inApp: boolean;
sms: boolean;
};
reminderFrequency: 'none' | 'daily' | 'weekly';
}
/**
* Interface for reviewer performance metrics
*/
export interface ReviewerMetrics {
totalReviews: number;
completedReviews: number;
averageReviewTime: number;
averageQualityScore: number;
onTimeCompletionRate: number;
last30DaysReviews: number;
last30DaysAvgTime: number;
feedbackQualityScore: number;
thoroughnessScore: number;
lastUpdated: Date;
}
/**
* Interface for review workflow configuration
*/
export interface ReviewWorkflowConfig {
id: string;
name: string;
description: string;
documentTypes: string[];
requiredRoles: ReviewerRole[];
reviewStages: ReviewStage[];
defaultDueDays: number;
escalationRules: EscalationRule[];
minimumReviewers: number;
requiredApprovals: number;
qualityThreshold: number;
autoAssignment: boolean;
autoEscalation: boolean;
autoNotification: boolean;
isActive: boolean;
createdBy: string;
createdAt: Date;
updatedAt: Date;
}
/**
* Interface for review stage definition
*/
export interface ReviewStage {
stageNumber: number;
name: string;
description: string;
requiredRole?: ReviewerRole;
requiredExpertise?: string[];
isParallel: boolean;
isOptional: boolean;
canSkip: boolean;
estimatedHours: number;
maxDays: number;
criteria: string[];
passingScore: number;
}
/**
* Interface for escalation rules
*/
export interface EscalationRule {
id: string;
name: string;
condition: EscalationCondition;
action: EscalationAction;
triggerAfterHours: number;
reminderIntervalHours: number;
maxReminders: number;
escalateTo: string[];
notificationTemplate: string;
isActive: boolean;
}
/**
* Interface for escalation conditions
*/
export interface EscalationCondition {
type: 'overdue' | 'no_response' | 'quality_threshold' | 'custom';
parameters: Record<string, any>;
}
/**
* Interface for escalation actions
*/
export interface EscalationAction {
type: 'notify' | 'reassign' | 'auto_approve' | 'escalate_manager' | 'custom';
parameters: Record<string, any>;
}
/**
* Interface for review analytics and reporting
*/
export interface ReviewAnalytics {
period: {
start: Date;
end: Date;
};
totalReviews: number;
completedReviews: number;
pendingReviews: number;
overdueReviews: number;
averageReviewTime: number;
onTimeCompletionRate: number;
averageQualityScore: number;
activeReviewers: number;
reviewerUtilization: number;
topPerformers: ReviewerMetrics[];
documentTypeBreakdown: Record<string, number>;
qualityTrends: QualityTrend[];
commonIssues: FeedbackSummary[];
improvementAreas: string[];
}
/**
* Interface for quality trends
*/
export interface QualityTrend {
date: Date;
averageScore: number;
reviewCount: number;
documentType?: string;
}
/**
* Interface for feedback summary
*/
export interface FeedbackSummary {
type: FeedbackType;
count: number;
severity: 'info' | 'minor' | 'major' | 'critical';
commonPatterns: string[];
recommendations: string[];
}
/**
* Interface for review notification
*/
export interface ReviewNotification {
id: string;
type: 'assignment' | 'reminder' | 'escalation' | 'completion' | 'feedback';
reviewId: string;
recipientId: string;
title: string;
message: string;
actionUrl?: string;
status: 'pending' | 'sent' | 'delivered' | 'read' | 'failed';
sentAt?: Date;
readAt?: Date;
createdAt: Date;
metadata?: Record<string, any>;
}
/**
* Interface for review dashboard data
*/
export interface ReviewDashboard {
userId: string;
assignedReviews: DocumentReview[];
pendingReviews: DocumentReview[];
completedReviews: DocumentReview[];
overdueReviews: DocumentReview[];
personalMetrics: ReviewerMetrics;
currentWorkload: number;
upcomingDeadlines: Date[];
unreadNotifications: ReviewNotification[];
quickActions: QuickAction[];
}
/**
* Interface for quick actions
*/
export interface QuickAction {
id: string;
type: 'review' | 'approve' | 'feedback' | 'escalate';
title: string;
description: string;
url: string;
priority: ReviewPriority;
}
/**
* Request/Response interfaces for API
*/
export interface CreateReviewRequest {
documentId: string;
documentName: string;
documentType: string;
documentPath: string;
projectId: string;
priority: ReviewPriority;
dueDate?: Date;
requiredRoles?: ReviewerRole[];
specificReviewers?: string[];
workflowId?: string;
metadata?: Record<string, any>;
}
export interface AssignReviewerRequest {
reviewId: string;
reviewerId: string;
role: ReviewerRole;
estimatedHours?: number;
dueDate?: Date;
}
export interface SubmitFeedbackRequest {
reviewId: string;
roundNumber: number;
feedback: Omit<ReviewFeedback, 'id' | 'createdAt' | 'updatedAt'>[];
decision: ReviewDecision;
overallComments?: string;
qualityScore?: number;
attachments?: File[];
}
export interface UpdateReviewStatusRequest {
reviewId: string;
status: ReviewStatus;
comments?: string;
}
export interface ReviewSearchParams {
status?: ReviewStatus[];
priority?: ReviewPriority[];
documentType?: string[];
projectId?: string;
reviewerId?: string;
dateFrom?: Date;
dateTo?: Date;
limit?: number;
offset?: number;
sortBy?: 'createdAt' | 'dueDate' | 'priority' | 'status';
sortOrder?: 'asc' | 'desc';
}
export interface ReviewResponse {
review: DocumentReview;
permissions: ReviewPermissions;
}
export interface ReviewPermissions {
canEdit: boolean;
canAssign: boolean;
canApprove: boolean;
canReject: boolean;
canEscalate: boolean;
canViewFeedback: boolean;
canAddFeedback: boolean;
}
export interface ReviewListResponse {
reviews: DocumentReview[];
total: number;
page: number;
limit: number;
hasMore: boolean;
}
export interface ReviewAnalyticsResponse {
analytics: ReviewAnalytics;
generatedAt: Date;
}
//# sourceMappingURL=review.d.ts.map