fix: 저장소 활동 피드 상태 변경 문구를 알림·상세 탭과 정렬
task.status_changed 를 일반 라벨('승인 대기로 변경')이 아닌 행위 중심 문구로
파생(statusFrom→statusTo): 시작/다시 시작·승인을 요청·수정을 요청·완료(승인).
업무 상세 활동 탭(task.store)·알림과 동일 표현으로 일관화. 안 쓰게 된
taskStatusLabel·TaskStatus import 제거.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,14 +6,9 @@ import {
|
||||
escapeHtml,
|
||||
monthDayKo,
|
||||
relativeTimeKo,
|
||||
taskStatusLabel,
|
||||
} from '@/shared/utils/format'
|
||||
import type { ApiActivity } from '@/types/activity'
|
||||
import type {
|
||||
RepoActivityDay,
|
||||
RepoActivityItem,
|
||||
TaskStatus,
|
||||
} from '@/mock/relay.mock'
|
||||
import type { RepoActivityDay, RepoActivityItem } from '@/mock/relay.mock'
|
||||
|
||||
// payload(자유형)에서 문자열 값 안전 추출
|
||||
function pstr(payload: Record<string, unknown>, key: string): string {
|
||||
@@ -71,18 +66,24 @@ function toRepoActivityItem(api: ApiActivity): RepoActivityItem {
|
||||
case 'task.created':
|
||||
return { ...base, tone: 'task', icon: 'pencil', html: `<b>${actor}</b>님이 <span class="tgt">${title}</span> 업무를 지시했습니다` }
|
||||
case 'task.status_changed': {
|
||||
// 알림·업무 상세 활동 탭과 동일한 행위 중심 문구(from→to 로 파생)
|
||||
const from = pstr(p, 'statusFrom')
|
||||
const to = pstr(p, 'statusTo')
|
||||
const tgt = `<span class="tgt">${title}</span>`
|
||||
if (to === 'prog') {
|
||||
const verb = from === 'changes' ? '다시 시작' : '시작'
|
||||
return { ...base, tone: 'task', icon: 'check', html: `<b>${actor}</b>님이 ${tgt} 업무를 <span class="st prog">${verb}</span>했습니다` }
|
||||
}
|
||||
if (to === 'review') {
|
||||
return { ...base, tone: 'task', icon: 'check', html: `<b>${actor}</b>님이 ${tgt} 업무의 승인을 요청했습니다` }
|
||||
}
|
||||
if (to === 'changes') {
|
||||
return { ...base, tone: 'task', icon: 'check', html: `<b>${actor}</b>님이 ${tgt} 업무의 수정을 요청했습니다` }
|
||||
}
|
||||
if (to === 'done') {
|
||||
return { ...base, tone: 'task', icon: 'check', html: `<b>${actor}</b>님이 <span class="tgt">${title}</span> 업무를 <span class="st done">완료</span>했습니다` }
|
||||
}
|
||||
const label = taskStatusLabel(to as TaskStatus)
|
||||
const cls = to === 'prog' ? 'prog' : ''
|
||||
return {
|
||||
...base,
|
||||
tone: 'task',
|
||||
icon: 'check',
|
||||
html: `<b>${actor}</b>님이 <span class="tgt">${title}</span> 업무를 <span class="st ${cls}">${escapeHtml(label)}</span>(으)로 변경했습니다`,
|
||||
return { ...base, tone: 'task', icon: 'check', html: `<b>${actor}</b>님이 ${tgt} 업무를 <span class="st done">완료(승인)</span>했습니다` }
|
||||
}
|
||||
return { ...base, tone: 'task', icon: 'check', html: `<b>${actor}</b>님이 ${tgt} 업무의 상태를 변경했습니다` }
|
||||
}
|
||||
case 'task.comment_added':
|
||||
return { ...base, tone: 'task', icon: 'check', html: `<b>${actor}</b>님이 <span class="tgt">${title}</span> 업무에 댓글을 남겼습니다` }
|
||||
|
||||
Reference in New Issue
Block a user