From daff61c85eb5c71efef76f1aa18ec65f1a1bb27c Mon Sep 17 00:00:00 2001 From: ttipo Date: Tue, 23 Jun 2026 00:02:42 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EC=97=85=EB=AC=B4=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20'todo'=20=EB=9D=BC=EB=B2=A8=EC=9D=84=20'=EB=8C=80?= =?UTF-8?q?=EA=B8=B0'=20=EB=A1=9C=20=ED=86=B5=EC=9D=BC=20(Phase=204)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit todo 표기가 화면마다 '할 일'(taskStatusLabel) vs '대기'(ProjectDetail 배지)로 갈리던 불일치 해소. SSOT(format.taskStatusLabel)를 '대기' 로 통일하고 ProjectDetailPage 의 자체 STATUS_LABEL 제거 → taskStatusLabel 사용. Co-Authored-By: Claude Opus 4.8 (1M context) --- frontend/src/pages/relay/ProjectDetailPage.vue | 14 ++++---------- frontend/src/shared/utils/format.ts | 2 +- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/frontend/src/pages/relay/ProjectDetailPage.vue b/frontend/src/pages/relay/ProjectDetailPage.vue index fba490a..a52203a 100644 --- a/frontend/src/pages/relay/ProjectDetailPage.vue +++ b/frontend/src/pages/relay/ProjectDetailPage.vue @@ -15,7 +15,8 @@ import EmptyState from '@/components/common/EmptyState.vue' import { useProjectStore } from '@/stores/project.store' import { useTaskStore } from '@/stores/task.store' import type { TaskListQuery, TaskSegment, TaskSort } from '@/types/task' -import type { Project, TaskStatus } from '@/mock/relay.mock' +import { taskStatusLabel } from '@/shared/utils/format' +import type { Project } from '@/mock/relay.mock' const route = useRoute() const projectId = computed(() => String(route.params.projectId)) @@ -108,14 +109,7 @@ const isFiltered = computed(() => keyword.value.trim() !== '' || segment.value ! // 지연 건수 — 현재 로드된 목록 기준(전역 정확 집계는 백엔드 미지원, 알려진 한계) const overdueCount = computed(() => tasks.value.filter((t) => t.overdue).length) -// 업무 상태 → 배지 라벨 -const STATUS_LABEL: Record = { - prog: '진행 중', - review: '승인 대기', - todo: '대기', - done: '완료', - changes: '수정 요청', -} +// 업무 상태 → 배지 라벨은 공용 SSOT(taskStatusLabel) 사용