diff --git a/docs/history.md b/docs/history.md index c9e9249..3dab20e 100644 --- a/docs/history.md +++ b/docs/history.md @@ -1,5 +1,9 @@ # 의사결정 이력 +## 2026-04-02 v1.3.54 +- 관리자 요청 카드는 운영자가 이미 흐름을 알고 있다는 전제에서, 설명형 힌트보다 즉시 판단에 필요한 메타와 액션만 남기는 편이 더 적합하다고 정리했다. +- 요청 종류 표시는 중복 텍스트보다 오른쪽 상단의 짧은 상태 배지 하나로 고정하고, 하단 액션 줄은 `보조 링크는 왼쪽 / 실제 처리 버튼은 오른쪽` 구조가 더 읽기 쉽다고 판단했다. + ## 2026-04-02 v1.3.53 - 관리자 후속 리팩터링은 남은 큰 액션 묶음인 `상단 고정 게임 정렬`과 `커스텀 아이템 검수`부터 composable로 분리하는 편이 `AdminView.vue` 체감 복잡도를 가장 빨리 낮춘다고 판단했다. - 이 단계에서도 레이아웃이나 문구보다 로직 책임 경계를 먼저 옮기고, 실제 스타일 파일 분리는 그 다음 단계로 이어가는 편이 안전하다고 정리했다. diff --git a/docs/todo.md b/docs/todo.md index 3b49186..3beec1a 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -5,6 +5,7 @@ - 관리자 본문 컴포넌트 분리와 `게임/템플릿 요청/회원 관리/아이템 관리/목록 관리` composable 분리는 시작했으므로, 다음 단계에서는 공통 모달 상태를 어느 계층에서 소유할지 정리하고 남은 관리자 유틸 함수를 더 줄인다. - 관리자 화면은 섹션 경로 분리까지 끝났으므로, 다음 단계에서는 `AdminView.vue`를 실제 레이아웃 뷰와 섹션별 라우트 컴포넌트로 더 쪼갤지 결정한다. - 관리자 공통 스타일은 `adminUiScope` 기준으로 다시 묶었으므로, 다음 단계에서는 각 섹션을 별도 파일로 완전히 분리할 때 스타일도 `admin.css` 또는 섹션별 스타일로 옮길지 결정한다. +- 관리자 요청 카드 밀도는 줄였으므로, 다음 단계에서는 전체 티어표 카드와 요청 카드의 상단/하단 액션 정렬을 한 번 더 통일할지 비교 QA한다. - 관리자 게임 아이템 순서 저장은 추가됐으므로, 다음 단계에서는 새 아이템 추가 직후 `자동 맨 앞 배치`와 `관리자 수동 고정 순서`의 우선순위를 실제 운영 흐름 기준으로 한 번 더 QA한다. - 관리자 템플릿 요청 미리보기는 실제 완성본 iframe 방식과의 체감 차이를 마지막으로 한 번 더 QA한다. - 라이트모드/다크모드 2차 보정까지 반영했으므로, 남은 작업은 전체 화면을 실제 사용 흐름으로 돌려 보며 대비·명도·아이콘 가독성을 미세하게 QA하는 최종 테마 점검 단계로 가져간다. diff --git a/docs/update.md b/docs/update.md index df8ef4d..3cd19a6 100644 --- a/docs/update.md +++ b/docs/update.md @@ -1,5 +1,10 @@ # 업데이트 로그 +## 2026-04-02 v1.3.54 +- 관리자 `티어표 관리` 요청 카드에서는 사용법 힌트 문구와 중복 타입 텍스트를 제거해, 카드 본문이 관리 정보만 더 빠르게 읽히도록 정리함. +- `신규 템플릿 / 보유 템플릿` 구분은 카드 오른쪽 상단의 별도 배지로 옮기고, 기존 `추가 아이템 / 확인함 여부` 배지는 그대로 유지해 정보 계층을 더 단순하게 맞춤. +- `요청 티어표 보기` 링크는 하단 액션 줄의 왼쪽으로 옮기고 `확인하기 / 처리 완료` 버튼은 오른쪽에 정렬해, 실제 작업 버튼과 보조 링크의 역할이 한 줄 안에서도 분명하게 보이도록 조정함. + ## 2026-04-02 v1.3.53 - 관리자 리팩터링 4차로 `목록 관리` 정렬 로직과 `아이템 관리` 모달/삭제/승격 액션을 각각 `useAdminFeaturedGames`, `useAdminCustomItems` composable로 분리해 `AdminView.vue`의 직접 액션 코드를 더 줄임. - 따라서 관리자 메인 뷰는 섹션 연결과 공통 상태 중심으로 더 가까워졌고, 상단 고정 게임 정렬과 커스텀 아이템 처리 흐름은 각 영역 책임에 맞는 파일로 옮겨 유지보수 범위를 좁힘. diff --git a/frontend/src/components/admin/AdminTierlistsSection.vue b/frontend/src/components/admin/AdminTierlistsSection.vue index a1600e5..b94569c 100644 --- a/frontend/src/components/admin/AdminTierlistsSection.vue +++ b/frontend/src/components/admin/AdminTierlistsSection.vue @@ -5,12 +5,10 @@ const props = defineProps({ tierlistsMode: { type: String, required: true }, templateRequests: { type: Array, required: true }, openTemplateRequestPreview: { type: Function, required: true }, - templateRequestTypeLabel: { type: Function, required: true }, fmt: { type: Function, required: true }, templateRequestTargetLabel: { type: Function, required: true }, templateRequestStatusLabel: { type: Function, required: true }, templateRequestSourceUrl: { type: Function, required: true }, - templateRequestReviewHint: { type: Function, required: true }, startTemplateRequestReview: { type: Function, required: true }, completeTemplateRequest: { type: Function, required: true }, adminTierLists: { type: Array, required: true }, @@ -32,7 +30,6 @@ const props = defineProps({
사용자 요청
-
요청 카드는 미확인/확인함 상태로 관리하고, 실제 아이템 반영은 게임 관리 화면에서 직접 진행합니다. 처리 완료를 눌러야 카드가 목록에서 빠져요.
@@ -67,10 +64,13 @@ const props = defineProps({
+ + {{ request.type === 'create' ? '신규 템플릿' : '보유 템플릿' }} +
{{ request.sourceTierListTitle }}
{{ request.sourceDescription }}
- {{ props.templateRequestTypeLabel(request) }} · {{ request.requesterName }} · {{ props.fmt(request.createdAt) }} + {{ request.requesterName }} · {{ props.fmt(request.createdAt) }}
{{ props.templateRequestTargetLabel(request) }}
@@ -78,7 +78,6 @@ const props = defineProps({
추가 아이템 {{ request.items?.length || 0 }}개 - {{ request.type === 'create' ? '새 템플릿' : '기존 템플릿 업데이트' }} {{ props.templateRequestStatusLabel(request) }}
@@ -89,24 +88,24 @@ const props = defineProps({
- - -
- - +
@@ -117,7 +116,6 @@ const props = defineProps({
전체 티어표 관리
-
공개/비공개를 포함한 최근 티어표를 모두 확인하고, 추가 아이템을 기존 게임 템플릿으로 승격하거나 커스텀 티어표를 새 게임 템플릿으로 만들 수 있어요. 여기는 요청 목록과 별개로 전체 저장 티어표를 보는 영역입니다.
diff --git a/frontend/src/views/AdminView.vue b/frontend/src/views/AdminView.vue index d1f6600..a832291 100644 --- a/frontend/src/views/AdminView.vue +++ b/frontend/src/views/AdminView.vue @@ -1374,12 +1374,10 @@ function userAvatarFallback(user) { :tierlists-mode="tierlistsMode" :template-requests="templateRequests" :open-template-request-preview="openTemplateRequestPreview" - :template-request-type-label="templateRequestTypeLabel" :fmt="fmt" :template-request-target-label="templateRequestTargetLabel" :template-request-status-label="templateRequestStatusLabel" :template-request-source-url="templateRequestSourceUrl" - :template-request-review-hint="templateRequestReviewHint" :start-template-request-review="startTemplateRequestReview" :complete-template-request="completeTemplateRequest" :admin-tier-lists="adminTierLists" @@ -3368,9 +3366,17 @@ function userAvatarFallback(user) { .adminUiScope .templateRequestCard__items { grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); } -.adminUiScope .templateRequestCard__links { - display: grid; +.adminUiScope .templateRequestCard__footer { + display: flex; + gap: 12px; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; +} +.adminUiScope .templateRequestCard__footerLeft { + display: flex; gap: 10px; + align-items: center; } .adminUiScope .templateRequestCard__actions { display: flex; @@ -3557,6 +3563,7 @@ function userAvatarFallback(user) { min-width: 0; display: grid; gap: 14px; + position: relative; } .adminUiScope .tierAdminCard__head { display: flex; @@ -3564,9 +3571,15 @@ function userAvatarFallback(user) { justify-content: space-between; align-items: flex-start; } +.adminUiScope .templateRequestCard__cornerBadge { + position: absolute; + top: 0; + right: 0; +} .adminUiScope .tierAdminCard__title { font-size: 18px; font-weight: 900; + padding-right: 132px; } .adminUiScope .tierAdminCard__desc { margin-top: 6px;