diff --git a/docs/history.md b/docs/history.md index 383bb34..9fdbbc7 100644 --- a/docs/history.md +++ b/docs/history.md @@ -1,5 +1,8 @@ # 의사결정 이력 +## 2026-04-02 v1.4.2 +- 용어 정리를 시작한 뒤에는 일부 화면만 바꾸는 것보다, 관리자 모달과 확인 메시지처럼 실제 운영 중 많이 보는 문구도 함께 맞춰 주는 편이 체감 일관성이 더 높다고 판단했다. + ## 2026-04-02 v1.4.1 - 좌측 메뉴와 화면 타이틀의 명칭이 서로 다르면 사용자가 현재 위치를 직관적으로 매칭하기 어렵기 때문에, 메뉴 이름과 진입 타이틀을 같은 문구로 맞추는 편이 맞다고 판단했다. diff --git a/docs/todo.md b/docs/todo.md index ae6db58..f0f0708 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -1,6 +1,7 @@ # 할 일 및 이슈 ## 단기 확인 +- 관리자 화면까지 포함한 사용자 노출 `게임` 문구를 2차로 정리했으므로, 실제 운영 흐름에서 뜨는 확인창/토스트/선택 모달까지 표현이 자연스러운지 한 번 더 QA한다. - 왼쪽 사이드 메뉴와 각 화면 타이틀을 한글 기준으로 맞췄으므로, 홈/나의 티어표/즐겨찾기/설정 진입 시 실제 체감이 자연스럽고 중복 표현이 어색하지 않은지 한 번 더 QA한다. - 용어 정리 1차는 사용자 노출 문구만 `주제 / 템플릿`으로 바꿨으므로, 홈/주제 화면/관리자 템플릿 관리에서 어색하게 남은 `게임` 문구가 없는지 한 번 더 QA한다. - 내부 모델명은 아직 `game`을 유지하므로, 다음 단계에서는 문서와 보조 화면 문구를 더 정리할지, 아니면 내부 리네이밍 계획을 따로 잡을지 결정한다. diff --git a/docs/update.md b/docs/update.md index 646be5f..1b335e3 100644 --- a/docs/update.md +++ b/docs/update.md @@ -1,5 +1,8 @@ # 업데이트 로그 +## 2026-04-02 v1.4.2 +- 관리자 화면과 보조 모달에 남아 있던 사용자 노출 `게임` 문구를 추가로 걷어내고, `템플릿 / 주제` 기준 표현으로 더 통일했다. + ## 2026-04-02 v1.4.1 - 왼쪽 사이드 메뉴를 `주제 선택 / 나의 티어표 / 즐겨찾기 / 설정` 한글 문구로 통일하고, 해당 화면 진입 시 헤더 타이틀도 같은 이름 기준으로 맞췄다. diff --git a/frontend/src/views/AdminView.vue b/frontend/src/views/AdminView.vue index 3cbcd1b..3380d27 100644 --- a/frontend/src/views/AdminView.vue +++ b/frontend/src/views/AdminView.vue @@ -571,7 +571,7 @@ function formatImageJobSourceCategory(category) { case 'tierlists': return '티어표 썸네일' case 'games': - return '게임/템플릿 이미지' + return '주제/템플릿 이미지' case 'avatars': return '프로필 아바타' default: @@ -599,7 +599,7 @@ function customItemDeleteImpactText(item) { if (item.sourceType === 'template') { return item.isAssetLibraryItem ? `"${item.label}" 보관 자산 항목을 정리할까요? 라이브러리 항목만 제거되고, 같은 이미지를 쓰는 다른 참조는 그대로 유지됩니다.` - : `"${item.label}" 템플릿 항목을 정리할까요? 연결된 템플릿과 같은 게임의 저장된 티어표에서 이 항목이 함께 제거될 수 있어요.` + : `"${item.label}" 템플릿 항목을 정리할까요? 연결된 템플릿과 같은 주제의 저장된 티어표에서 이 항목이 함께 제거될 수 있어요.` } return `"${item.label}" 사용자 업로드 이미지를 삭제할까요? 현재 항목만 정리됩니다.` @@ -703,7 +703,7 @@ async function confirmImageReset() { } async function cleanupMissingImageReferences() { - const ok = window.confirm('파일이 실제로 없는 이미지 참조만 정리할까요? 누락된 썸네일은 비워지고, 누락된 게임/커스텀 아이템은 관련 참조와 함께 정리됩니다.') + const ok = window.confirm('파일이 실제로 없는 이미지 참조만 정리할까요? 누락된 썸네일은 비워지고, 누락된 템플릿/커스텀 아이템은 관련 참조와 함께 정리됩니다.') if (!ok) return try { @@ -714,10 +714,10 @@ async function cleanupMissingImageReferences() { success.value = `누락 참조를 정리했어요. ` + `아바타 ${result.clearedAvatars || 0}건, ` + - `게임 썸네일 ${result.clearedGameThumbnails || 0}건, ` + + `템플릿 썸네일 ${result.clearedGameThumbnails || 0}건, ` + `티어표 썸네일 ${result.clearedTierListThumbnails || 0}건, ` + `요청 썸네일 ${result.clearedTemplateRequestThumbnails || 0}건, ` + - `게임 아이템 ${result.deletedGameItems || 0}건, ` + + `템플릿 아이템 ${result.deletedGameItems || 0}건, ` + `커스텀 아이템 ${result.deletedCustomItems || 0}건` } catch (e) { error.value = '누락 이미지 참조 정리에 실패했어요.' @@ -1180,10 +1180,10 @@ async function saveGameVisibility() { }, } await refreshGames() - success.value = data.game?.isPublic ? '게임을 공개 상태로 전환했어요.' : '게임을 비공개 상태로 전환했어요.' + success.value = data.game?.isPublic ? '템플릿을 공개 상태로 전환했어요.' : '템플릿을 비공개 상태로 전환했어요.' return true } catch (e) { - error.value = '게임 공개 상태를 저장하지 못했어요.' + error.value = '템플릿 공개 상태를 저장하지 못했어요.' return false } finally { gameVisibilitySaving.value = false @@ -1225,9 +1225,9 @@ async function removeGameItem(itemId) { if (!res.ok) throw new Error('failed') await loadGame() - success.value = '게임 기본 아이템을 삭제했어요.' + success.value = '템플릿 기본 아이템을 삭제했어요.' } catch (e) { - error.value = '게임 기본 아이템 삭제에 실패했어요.' + error.value = '템플릿 기본 아이템 삭제에 실패했어요.' } } @@ -1258,7 +1258,7 @@ async function removeGame() { resetMessages() if (!selectedGameId.value || !selectedGame.value?.game) return - const ok = window.confirm(`"${selectedGame.value.game.name}" 게임을 삭제할까요? 관련 기본 아이템과 티어표도 함께 삭제됩니다.`) + const ok = window.confirm(`"${selectedGame.value.game.name}" 템플릿을 삭제할까요? 관련 기본 아이템과 티어표도 함께 삭제됩니다.`) if (!ok) return try { @@ -1273,7 +1273,7 @@ async function removeGame() { selectedGame.value = null resetUploadState() await refreshGames() - success.value = `${deletedName} 게임을 삭제했어요.` + success.value = `${deletedName} 템플릿을 삭제했어요.` } catch (e) { error.value = '템플릿 삭제에 실패했어요.' } @@ -1950,12 +1950,12 @@ function userAvatarFallback(user) {