feat: multi-module iteration
This commit is contained in:
@@ -0,0 +1,181 @@
|
||||
import {
|
||||
ArrayMinSize,
|
||||
IsArray,
|
||||
IsIn,
|
||||
IsNotEmpty,
|
||||
IsOptional,
|
||||
IsString,
|
||||
ValidateIf,
|
||||
ValidateNested,
|
||||
} from 'class-validator';
|
||||
import { Type } from 'class-transformer';
|
||||
import {
|
||||
DEV_PLAN_TASK_STATUSES,
|
||||
DEV_PLAN_TASK_TYPES,
|
||||
DEV_PLAN_VERSION_STATUSES,
|
||||
} from '@dukang/shared-types';
|
||||
|
||||
export class DevPlanTaskListQueryDto {
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
status?: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
type?: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
keyword?: string;
|
||||
|
||||
@IsOptional()
|
||||
page?: number;
|
||||
|
||||
@IsOptional()
|
||||
pageSize?: number;
|
||||
}
|
||||
|
||||
export class CreateDevPlanTaskDto {
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
content!: string;
|
||||
|
||||
@IsIn(DEV_PLAN_TASK_TYPES)
|
||||
type!: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
supportTicketId?: string;
|
||||
}
|
||||
|
||||
export class UpdateDevPlanTaskDto {
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
content?: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsIn(DEV_PLAN_TASK_TYPES)
|
||||
type?: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsIn(DEV_PLAN_TASK_STATUSES)
|
||||
status?: string;
|
||||
}
|
||||
|
||||
export class CreateDevPlanVersionDto {
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
versionNo!: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
content?: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsIn(DEV_PLAN_VERSION_STATUSES)
|
||||
status?: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
@IsString({ each: true })
|
||||
taskIds?: string[];
|
||||
}
|
||||
|
||||
export class UpdateDevPlanVersionDto {
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
versionNo?: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
content?: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsIn(DEV_PLAN_VERSION_STATUSES)
|
||||
status?: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
@IsString({ each: true })
|
||||
taskIds?: string[];
|
||||
}
|
||||
|
||||
export class ReplaceVersionTasksDto {
|
||||
@IsArray()
|
||||
@IsString({ each: true })
|
||||
taskIds!: string[];
|
||||
}
|
||||
|
||||
export class UpdateDevPlanSettingsDto {
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
reviewAssistantLlmConfigId?: string | null;
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
reviewAssistantKnowledgeBaseId?: string | null;
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
reviewAssistantPrompt?: string | null;
|
||||
}
|
||||
|
||||
export class DevPlanTaskDispatchDto {
|
||||
@IsArray()
|
||||
@ArrayMinSize(1)
|
||||
@IsString({ each: true })
|
||||
taskIds!: string[];
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
supplement?: string;
|
||||
}
|
||||
|
||||
export class DevPlanTaskFromTicketDto {
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
content!: string;
|
||||
|
||||
@IsIn(DEV_PLAN_TASK_TYPES)
|
||||
type!: 'BUG' | 'REQUIREMENT' | 'OPTIMIZATION';
|
||||
}
|
||||
|
||||
export class ReviewSupportTicketDto {
|
||||
@IsIn(['APPROVE', 'REJECT'])
|
||||
decision!: 'APPROVE' | 'REJECT';
|
||||
|
||||
@ValidateIf((o: ReviewSupportTicketDto) => o.decision === 'REJECT')
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
rejectReason?: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
note?: string;
|
||||
|
||||
@ValidateIf((o: ReviewSupportTicketDto) => o.decision === 'APPROVE')
|
||||
@IsArray()
|
||||
@ArrayMinSize(1)
|
||||
@ValidateNested({ each: true })
|
||||
@Type(() => DevPlanTaskFromTicketDto)
|
||||
tasks?: DevPlanTaskFromTicketDto[];
|
||||
}
|
||||
|
||||
export class BatchReviewPreviewDto {
|
||||
@IsArray()
|
||||
@IsString({ each: true })
|
||||
ticketIds!: string[];
|
||||
}
|
||||
|
||||
export class BatchReviewConfirmDto {
|
||||
@IsArray()
|
||||
items!: Array<{
|
||||
ticketId: string;
|
||||
decision: 'APPROVE' | 'REJECT';
|
||||
rejectReason?: string;
|
||||
note?: string;
|
||||
tasks?: Array<{ content: string; type: 'BUG' | 'REQUIREMENT' | 'OPTIMIZATION' }>;
|
||||
}>;
|
||||
}
|
||||
Reference in New Issue
Block a user