| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- import { IssueStatus, IssuePriority, IssueType } from '../../../../modules/project/services/project-issue.service';
- export interface ProjectStage {
- id: string;
- name: string;
- order: number;
- }
- export interface ProjectPhase {
- name: string;
- percentage: number;
- startPercentage: number;
- isCompleted: boolean;
- isCurrent: boolean;
- }
- export interface Project {
- id: string;
- name: string;
- type: 'soft' | 'hard';
- memberType: 'vip' | 'normal';
- designerName: string;
- status: string;
- expectedEndDate: Date;
- deadline: Date;
- createdAt?: Date;
- isOverdue: boolean;
- overdueDays: number;
- dueSoon: boolean;
- urgency: 'high' | 'medium' | 'low';
- phases: ProjectPhase[];
- currentStage: string;
- qualityRating?: 'excellent' | 'qualified' | 'unqualified' | 'pending';
- lastCustomerFeedback?: string;
- searchIndex?: string;
- // 可选扩展字段
- contact?: any;
- customer?: string;
- designerId?: string;
- space?: string;
- demoday?: Date;
- updatedAt?: Date | string;
- data?: any;
- }
- export interface TodoTask {
- id: string;
- title: string;
- description: string;
- deadline: Date;
- priority: 'high' | 'medium' | 'low';
- type: 'review' | 'assign' | 'performance';
- targetId: string;
- }
- export interface TodoTaskFromIssue {
- id: string;
- title: string;
- description?: string;
- priority: IssuePriority;
- type: IssueType;
- status: IssueStatus;
- projectId: string;
- projectName: string;
- relatedSpace?: string;
- relatedStage?: string;
- assigneeName?: string;
- creatorName?: string;
- createdAt: Date;
- updatedAt: Date;
- dueDate?: Date;
- tags?: string[];
- }
- export interface UrgentEvent {
- id: string;
- title: string;
- description: string;
- eventType: 'review' | 'delivery' | 'phase_deadline' | 'customer_alert';
- phaseName?: string;
- deadline: Date;
- projectId: string;
- projectName: string;
- designerName?: string;
- urgencyLevel: 'critical' | 'high' | 'medium';
- overdueDays?: number;
- completionRate?: number;
- category?: 'customer' | 'phase' | 'review' | 'delivery';
- statusType?: 'dueSoon' | 'overdue' | 'stagnant';
- followUpNeeded?: boolean;
- allowConfirmOnTime?: boolean;
- allowMarkHandled?: boolean;
- allowCreateTodo?: boolean;
- stagnationDays?: number;
- customerIssueType?: 'feedback_pending' | 'complaint' | 'idle';
- labels?: string[];
- isMuted?: boolean;
- }
- export interface LeaveRecord {
- id: string;
- employeeName: string;
- date: string;
- isLeave: boolean;
- leaveType?: 'sick' | 'personal' | 'annual' | 'other';
- reason?: string;
- }
- export interface EmployeeDetail {
- name: string;
- currentProjects: number;
- projectNames: string[];
- projectData: Array<{ id: string; name: string }>;
- leaveRecords: LeaveRecord[];
- redMarkExplanation: string;
- calendarData?: EmployeeCalendarData;
- surveyCompleted?: boolean;
- surveyData?: any;
- profileId?: string;
- }
- export interface EmployeeCalendarData {
- currentMonth: Date;
- days: EmployeeCalendarDay[];
- }
- export interface EmployeeCalendarDay {
- date: Date;
- projectCount: number;
- projects: Array<{ id: string; name: string; deadline?: Date }>;
- isToday: boolean;
- isCurrentMonth: boolean;
- }
|