feat: 수정 요청 메시지를 선택 사항으로 변경
수정 요청 시 공용 메시지 입력을 필수에서 선택으로 완화한다. - 백엔드: ApprovalChangesDto.note 를 선택값으로 변경, requestChanges 가 빈 메시지면 changesNote 를 null 로 저장 - 프론트: 제출 버튼 비활성(메시지 필수) 해제, 빈 메시지는 미전송, 안내/라벨 문구를 '선택'으로 정리 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,7 +2,6 @@ import {
|
||||
ArrayMaxSize,
|
||||
IsArray,
|
||||
IsBoolean,
|
||||
IsNotEmpty,
|
||||
IsOptional,
|
||||
IsString,
|
||||
IsUUID,
|
||||
@@ -45,16 +44,17 @@ export class ChecklistReviewDto {
|
||||
note?: string;
|
||||
}
|
||||
|
||||
// 수정 요청(지시자 → 담당자) — 보완 내용 필수 + 항목별 완료 체크(선택)
|
||||
// 수정 요청(지시자 → 담당자) — 보완 메시지(선택) + 항목별 완료 체크(선택)
|
||||
export class ApprovalChangesDto {
|
||||
@ApiProperty({
|
||||
description: '수정 요청 메시지(보완이 필요한 내용)',
|
||||
description: '수정 요청 메시지(선택)',
|
||||
required: false,
|
||||
example: '세로형 카피 가독성이 낮으니 자간과 대비를 조정해 주세요.',
|
||||
})
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
@IsNotEmpty({ message: '수정 요청 내용을 입력해 주세요.' })
|
||||
@MaxLength(2000)
|
||||
note!: string;
|
||||
note?: string;
|
||||
|
||||
@ApiProperty({
|
||||
description: '항목별 완료 검토 결과(체크/X). 생략 시 체크리스트 변경 없음',
|
||||
|
||||
@@ -892,14 +892,14 @@ export class TaskService {
|
||||
projectId: string,
|
||||
actingUserId: string,
|
||||
seq: number,
|
||||
note: string,
|
||||
note: string | undefined,
|
||||
reviews?: { id: string; done: boolean; note?: string }[],
|
||||
): Promise<TaskDetailResponse> {
|
||||
const project = await this.getProjectOrThrow(projectId);
|
||||
const membership = await this.assertMember(project.id, actingUserId);
|
||||
const task = await this.getTaskOrThrow(project.id, seq);
|
||||
|
||||
task.changesNote = note;
|
||||
task.changesNote = note?.trim() ? note.trim() : null;
|
||||
task.approvalNote = null;
|
||||
task.approvalRequestedAt = null;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user