91 lines
1.8 KiB
TypeScript
91 lines
1.8 KiB
TypeScript
export type ProjectStatus = 'Active' | 'Archived' | 'OnHold';
|
|
|
|
export interface Project {
|
|
id: string;
|
|
name: string;
|
|
description: string;
|
|
key: string;
|
|
status: ProjectStatus;
|
|
ownerId: string;
|
|
createdAt: string;
|
|
updatedAt?: string;
|
|
}
|
|
|
|
export interface CreateProjectDto {
|
|
name: string;
|
|
description: string;
|
|
key: string;
|
|
ownerId?: string; // Optional in form, will be set automatically
|
|
}
|
|
|
|
export interface UpdateProjectDto {
|
|
name?: string;
|
|
description?: string;
|
|
status?: ProjectStatus;
|
|
}
|
|
|
|
export interface Epic {
|
|
id: string;
|
|
name: string;
|
|
description: string;
|
|
projectId: string;
|
|
status: TaskStatus;
|
|
priority: TaskPriority;
|
|
createdAt: string;
|
|
createdBy: string;
|
|
}
|
|
|
|
export type TaskStatus = 'ToDo' | 'InProgress' | 'InReview' | 'Done' | 'Blocked';
|
|
export type TaskPriority = 'Low' | 'Medium' | 'High' | 'Urgent';
|
|
|
|
export interface Story {
|
|
id: string;
|
|
title: string;
|
|
description: string;
|
|
epicId: string;
|
|
status: TaskStatus;
|
|
priority: TaskPriority;
|
|
estimatedHours?: number;
|
|
actualHours?: number;
|
|
assigneeId?: string;
|
|
createdBy: string;
|
|
createdAt: string;
|
|
updatedAt?: string;
|
|
}
|
|
|
|
export interface Task {
|
|
id: string;
|
|
title: string;
|
|
description: string;
|
|
storyId: string;
|
|
status: TaskStatus;
|
|
priority: TaskPriority;
|
|
estimatedHours?: number;
|
|
actualHours?: number;
|
|
assigneeId?: string;
|
|
customFields?: Record<string, any>;
|
|
createdBy: string;
|
|
createdAt: string;
|
|
updatedAt?: string;
|
|
}
|
|
|
|
export interface CreateTaskDto {
|
|
title: string;
|
|
description: string;
|
|
storyId: string;
|
|
priority: TaskPriority;
|
|
estimatedHours?: number;
|
|
assigneeId?: string;
|
|
}
|
|
|
|
export interface UpdateTaskDto {
|
|
title?: string;
|
|
description?: string;
|
|
status?: TaskStatus;
|
|
priority?: TaskPriority;
|
|
estimatedHours?: number;
|
|
actualHours?: number;
|
|
assigneeId?: string;
|
|
customFields?: Record<string, any>;
|
|
}
|