릴리스: v1.3.63 이미지 최적화 작업 라벨 정리

This commit is contained in:
2026-04-02 14:03:41 +09:00
parent b98a3d5a6d
commit b542b963d2
4 changed files with 41 additions and 2 deletions

View File

@@ -523,6 +523,36 @@ function formatBytes(value) {
return `${current >= 10 || unitIndex === 0 ? current.toFixed(0) : current.toFixed(1)} ${units[unitIndex]}`
}
function formatImageJobSourceCategory(category) {
switch (String(category || '').trim()) {
case 'custom':
return '커스텀 아이템'
case 'tierlists':
return '티어표 썸네일'
case 'games':
return '게임/템플릿 이미지'
case 'avatars':
return '프로필 아바타'
default:
return '기타 이미지'
}
}
function formatImageJobStatus(status) {
switch (String(status || '').trim()) {
case 'queued':
return '대기'
case 'processing':
return '처리중'
case 'completed':
return '완료'
case 'failed':
return '실패'
default:
return status || '알 수 없음'
}
}
const imageDiagnosticsCards = computed(() => {
const stats = imageStats.value
if (!stats) return []
@@ -2079,10 +2109,11 @@ function userAvatarFallback(user) {
<div v-else class="imageJobList">
<article v-for="job in imageRecentJobs" :key="job.id" class="imageJobRow">
<div class="imageJobRow__head">
<strong>{{ job.sourceCategory || 'asset' }}</strong>
<span class="imageJobRow__status">{{ job.status }}</span>
<strong>{{ formatImageJobSourceCategory(job.sourceCategory) }}</strong>
<span class="imageJobRow__status">{{ formatImageJobStatus(job.status) }}</span>
</div>
<div class="hint hint--tight">{{ formatBytes(job.originalByteSize) }} {{ formatBytes(job.optimizedByteSize) }}</div>
<div v-if="job.reusedAsset" class="hint hint--tight">기존 최적화 파일 재사용</div>
<div class="hint hint--tight">{{ fmt(job.queuedAt) }}</div>
</article>
</div>