Files
tier-maker/docs/todo.md
2026-04-07 14:43:05 +09:00

58 KiB

할 일 및 이슈

단기 확인

  • v1.1.15 이후 나의 티어표에서도 왼쪽 공통 검색창이 정상 동작하고, 검색 결과가 없을 때 전용 빈 상태 문구가 자연스럽게 보이는지 확인한다.
  • v1.1.14 이후 왼쪽 공통 검색창이 홈/템플릿/주제/팔로우 피드/즐겨찾기 각각의 범위만 정확히 검색하는지 확인한다.
  • v1.1.14 이후 주제 허브, 팔로우 피드, 즐겨찾기 화면 상단에서 중복 검색창이 모두 사라졌는지 확인한다.
  • 즐겨찾기 목록에서는 해제 버튼이 숨겨지고, 실제 해제는 해당 티어표 화면 우측 CTA에서만 가능한 흐름이 사용자 의도와 맞는지 확인한다.
  • v1.1.13 이후 팔로우 피드에서도 공통 viewToggle이 보이고, 리스트형 보기에서 작성자 카드와 썸네일 정렬이 어색하지 않은지 확인한다.
  • v1.1.12 이후 홈/템플릿/나의 티어표/즐겨찾기에서 공통 viewToggle이 모두 같은 위치/같은 동작으로 보이는지 확인한다.
  • 리스트형 보기에서 홈/템플릿/나의 티어표/즐겨찾기 카드가 데스크톱과 모바일 모두에서 썸네일 비율과 제목 overflow 없이 안정적으로 보이는지 확인한다.
  • 내가 만든 저장 티어표도 즐겨찾기에 추가되고 /favorites에 나타나는지, 비공개 내 티어표를 즐겨찾기했을 때 접근/표시 규칙이 자연스러운지 확인한다.
  • 현재 주요 목록 화면은 전체 데이터를 한 번에 가져오는 구조이므로, 실제 데이터가 많아졌을 때 페이지네이션 또는 무한 스크롤이 필요한 시점을 추후 점검한다.
  • v1.1.11 이후 즐겨찾기 페이지 카드 우측 상단 즐겨찾기 해제 버튼이 카드 열기와 충돌하지 않는지, 해제 직후 목록에서 즉시 빠지고 새로고침 후에도 유지되는지 확인한다.
  • v1.1.10 이후 댓글 관리 화면이 기본적으로 안 읽은 댓글만 보이므로, 사용자가 처음 들어왔을 때 빈 화면처럼 느끼지 않는지와 전체 보기로 돌렸을 때도 자연스러운지 확인한다.
  • 개별 읽음 처리 버튼을 눌렀을 때 카드가 즉시 사라지고 좌측 메뉴 unread dot도 함께 줄어드는지, 마지막 unread 카드까지 처리하면 dot이 사라지는지 확인한다.
  • 티어표 보기 화면 우측 즐겨찾기 단독 CTA가 편집 라우트의 읽기 전용 상태와 preview=1 뷰어 모드 양쪽에서 모두 자연스럽게 보이는지 확인한다.
  • v1.1.9 이후 댓글 관리 카드에서 좌측 썸네일/티어표 정보와 우측 루트 댓글/새 댓글 정보가 실제로 한눈에 읽히는지, 특히 답글 알림에서 부모 댓글 작성자 정보가 자연스럽게 보이는지 확인한다.
  • v1.1.9 이후 commentInboxCard__lead 제거로 정보가 부족해지지 않았는지, 제목과 댓글 블록만으로 상태를 이해할 수 있는지 데스크톱/모바일에서 다시 확인한다.
  • v1.1.8 이후 댓글 더 보기 규칙(루트 10개, 답글 3개)과 남은 개수 표기가 실제 데이터에서 자연스럽게 동작하는지 확인한다.
  • 댓글 관리 화면의 안 읽은 댓글만 보기 토글과 모두 읽음 처리 버튼이 설정/에디터의 공통 컨트롤 톤과 이질감이 없는지 확인한다.
  • v1.1.7 이후 댓글 관리 카드 썸네일이 실제로 모든 카드에서 16:9로 유지되는지 데스크톱/모바일에서 다시 확인한다.
  • v1.1.6 이후 루트 댓글이 최신순으로, 답글은 오래된순으로 정확히 보이는지 실제 댓글 데이터를 여러 개 넣어 확인한다.
  • 뷰어 모드에서 댓글이 길어져도 우측 공유 티어표 보기 카드가 스폰서 카드 바로 아래에서 유지되고, 더 이상 하단으로 밀려 보이지 않는지 확인한다.
  • v1.1.5 이후 댓글 카드/댓글 관리 카드에서 보더가 과해 보이지 않고, surface/shadow 중심 레이어가 다크/라이트 모드 모두에서 자연스러운지 확인한다.
  • 댓글 등록/답글 등록 버튼이 실제 저장 CTA 톤으로 보이고 hover/disabled 상태도 다른 저장 버튼들과 이질감이 없는지 확인한다.
  • v1.1.4 이후 댓글 관리 카드에서 티어표 썸네일, 원댓글/새 댓글 비교 블록이 데스크톱과 모바일에서 모두 자연스럽게 보이는지 확인한다.
  • 댓글 스레드 카드 리디자인 후 답글 연결선, 배지, 본문 말풍선 배경이 라이트/다크 모드 모두에서 과하지 않게 보이는지 확인한다.
  • v1.1.3 이후 답글 작성 시 입력창이 열리자마자 포커스를 받고, 포커스 전에도 카드/입력 경계가 분명하게 보이는지 다크/라이트 모드 모두에서 확인한다.
  • v1.1.2 반영 후 실제 운영/로컬 DB에서 서버를 다시 띄워 comment_notifications.is_read 컬럼이 자동 보강되는지, 댓글 관리 메뉴 unread dot과 /api/comments/inbox/unread-count가 더 이상 SQL 오류 없이 동작하는지 확인한다.
  • v1.1.1 댓글 복구 이후 다음 흐름을 우선 QA한다: 공개 티어표 프리뷰 하단 댓글 노출, 댓글 작성/답글 작성/본인 댓글 삭제, 댓글 관리 메뉴 red dot, 댓글 관리 화면에서 안 읽은 댓글만 보기모두 읽음 처리, 카드 클릭 후 해당 댓글 위치 스크롤.
  • 작성자 본인 티어표 편집 화면과 타인 티어표 프리뷰 화면에서 같은 댓글 카드가 모두 자연스럽게 보이는지, 새로고침 후에도 기존 에디터 회귀 없이 댓글 카드만 안정적으로 붙는지 확인한다.
  • 댓글 알림 unread count는 현재 접속 시와 라우트 이동 시 갱신되므로, 다른 탭에서 새 댓글이 생겼을 때 실시간 반영이 필요하면 이후 polling 또는 SSE 도입 여부를 검토한다.
  • v1.1.0에서 홈을 공개 티어표 피드로, 템플릿을 /templates로 분리했으므로 왼쪽 사이드 홈 / 템플릿 / 나의 티어표 / 설정 흐름과 검색 placeholder가 각 화면에서 자연스럽게 바뀌는지 확인한다.
  • 관리자 계정으로 일반 템플릿 목록(/templates)에 들어가도 비공개 템플릿이 보이지 않고, 관리자 화면에서는 여전히 비공개 템플릿이 관리 가능한지 확인한다.
  • 홈 피드의 추천 티어표와 최신 공개 티어표 카드가 데스크톱/태블릿/모바일에서 overflow 없이 안정적으로 보이는지 확인한다.
  • 아바타 fallback 이니셜이 썸네일 미등록 상태에서 계정명이 아니라 닉네임 첫 글자로 보이는지 홈/주제 허브/나의 티어표/즐겨찾기/팔로우 피드/검색 결과/사용자 프로필에서 각각 확인한다.

다음 작업자 인수인계

  • 현재 기준선은 v1.0.104다. 홈 피드와 댓글 기능은 이 버전 위에서 다시 구현해야 하며, 편집 화면 로딩/새로고침 안정성이 먼저다.
  • 홈 피드는 기존 템플릿 메인 화면과 분리된 별도 / 화면으로 두되, 데이터 원천은 공개 티어표 목록 API로만 시작한다. 첫 단계에서는 최근 공개 티어표 목록과 관리자 추천 티어표 상단 섹션만 붙이고, 템플릿 화면 카드 문법을 최대한 재사용한다.
  • 홈 피드 카드는 새 컴포넌트를 급히 만들기보다, 이미 안정적이던 템플릿/목록 카드 문법을 공통 컴포넌트로 먼저 분리한 뒤 사용한다. 썸네일 비율, 아바타 fallback, 제목/메타 overflow를 카드마다 따로 다시 구현하지 않는다.
  • 댓글 기능은 티어표 편집기 본문 안으로 깊게 섞기보다, 저장된 티어표 하단의 독립 카드 섹션으로 붙인다. 편집 모드와 preview 모드 모두 같은 댓글 카드 컴포넌트를 재사용하는 구조가 안전하다.
  • 댓글 로딩은 에디터 메인 loadEditorState()와 분리해, 티어표 본문이 먼저 안정적으로 그려진 뒤 별도 비동기로 붙인다. 댓글 로딩/스크롤/읽음 처리 타이머는 라우트 변경 시 즉시 취소 가능해야 한다.
  • commentId 이동, 댓글 관리함, unread dot 같은 부가 기능은 댓글 목록 조회/등록이 안정화된 뒤 2단계로 구현한다. 처음부터 알림, 자동 스크롤, 읽음 처리까지 한 번에 붙이지 않는다.
  • 글로벌 로딩 화면이나 initial loading state는 에디터 본문 전체를 조건부로 갈아끼우기보다, 앱 셸 수준의 고정 오버레이 또는 최소한의 skeleton으로 처리한다. Teleport 우측 레일, RouterView, 편집기 내부 DOM을 동시에 조건부 마운트/언마운트하는 방식은 피한다.
  • 티어표 편집 화면에서는 새로고침 직후 다음 세 가지 QA가 항상 선행되어야 한다: 오른쪽 아이템 풀 복구, 왼쪽 메뉴 이동 가능, 콘솔 Vue patch/unmount 오류 없음.

단기 확인

  • v1.4.68에서 아이템 우클릭 처리를 window 캡처 단계로 보강했으므로, 보드에 배치된 아이템/미사용 풀 아이템/아이템 썸네일 이미지 위에서 각각 우클릭했을 때 브라우저 기본 메뉴 대신 아이템 복제 메뉴가 바로 뜨는지 QA한다.
  • v1.4.67에서 같은 src가 프로필 아바타와 템플릿/사용자 아이템으로 동시에 쓰여도 자산 카드를 유지하도록 바꿨으므로, 운영 관리자 화면의 전체 이미지프로필 이미지 필터에서 실제 아바타가 보이고 상세 모달의 공유 참조 목록도 자연스럽게 읽히는지 QA한다.
  • 아이템 우클릭 복제 기능을 추가했으므로, 템플릿 아이템 복제/커스텀 아이템 복제/이미 보드에 배치된 아이템 복제 각각에서 복제본이 미사용 풀 맨 앞에 생기고 원본과 복제본을 서로 다른 칸에 동시에 둘 수 있는지 QA한다.
  • 복제본은 dup-... 새 ID로 저장되므로, 저장 후 재진입/티어표 복사본 생성/뷰어 모드 열람에서도 복제본이 그대로 유지되는지와, 템플릿 업데이트 요청에 복제된 커스텀 아이템이 포함될 때 운영상 이상이 없는지 확인한다.
  • v1.4.62에서 NAS 배포 문서에 운영 DB 완전 초기화 절차를 추가했으므로, 실제 NAS에서 git pull → docker compose ... down -v → up -d --build 순서로 재배포했을 때 빈 DB가 현재 스키마로 다시 올라오고 freeform만 생성되는지 확인한다.
  • docker volume rm tier-maker_tmaker_mariadb_data 방식은 프로젝트 디렉터리명에 따라 실제 볼륨 이름이 달라질 수 있으므로, 운영 NAS에서는 먼저 docker volume ls | grep tmaker로 이름을 확인한 뒤 문서 명령이 그대로 맞는지 점검한다.
  • v1.4.61에서 템플릿 공개 주소를 slug로 분리했으므로, 홈 카드/주제 상세/나의 티어표/즐겨찾기/검색 결과/팔로우 피드/사용자 프로필에서 열리는 URL이 /topics/:slug, /editor/:slug/... 형태로 바뀌고, 실제 화면 내용도 같은 주제 템플릿으로 정확히 열리는지 QA한다.
  • 관리자 템플릿 생성/설정은 이제 내부 ID가 아니라 slug + 이름만 입력하므로, 새 템플릿 생성, 기존 템플릿 이름/slug 저장, 중복 slug 입력, 대문자/특수문자 slug 입력, 공개/비공개 토글, 썸네일/기본 아이템 관리가 모두 같은 템플릿에 정상 반영되는지 확인한다.
  • 신규 빈 DB 초기화 시 topicsfreeform 한 건만 생성되고 example-topic, another-topic 같은 예시 템플릿이 더 이상 자동으로 생기지 않는지 운영/로컬 재배포 후 확인한다.
  • v1.4.60에서 추가한 npm --prefix backend run images:shard-assets를 로컬/운영에 적용할 때는 먼저 백업을 확보한 뒤 실행하고, 평면 /uploads/assets/<파일명>.webp 파일이 샤딩 폴더로 이동하면서 image_assets.src와 각 참조 컬럼/JSON이 모두 새 경로로 바뀌었는지 확인한다.
  • v1.4.59에서 thumbnail/avatar 필터를 실제 DB 참조 역할 기준으로 다시 판별하도록 바꿨으므로, 최근 업로드처럼 /uploads/assets/<파일명>.webp 또는 /uploads/assets/<앞2글자>/<파일명>.webp 경로여도 썸네일 이미지/프로필 이미지 필터에서 빠지지 않는지 확인한다.
  • 신규 업로드 이미지는 /uploads/assets/<앞2글자>/<파일명>.webp로 저장되므로, 템플릿 썸네일/티어표 썸네일/프로필 아바타/아이템 업로드를 각각 새로 올린 뒤 실제 파일이 샤딩 폴더에 생성되고, 브라우저 표시·삭제·중복 재사용이 모두 기존처럼 동작하는지 QA한다.
  • 기존 /uploads/assets/<파일명>.webp 평면 경로는 그대로 유지되므로, 예전에 만든 티어표 썸네일과 아이템 이미지가 새 저장 구조 변경 후에도 깨지지 않는지 확인한다.
  • v1.4.58에서 작성자 프로필 상단 헤더를 사용자 프로필 공통 제목으로 바꾸고 @accountName 노출을 뺐으므로, /users/:userId에서 상단 문구와 본문 프로필 카드가 중복되지 않고 닉네임/아바타/팔로우 버튼만 자연스럽게 읽히는지 확인한다.
  • v1.4.57에서 관리자 아이템 필터 순서를 전체 이미지 → 아이템(템플릿 + 사용자) → 템플릿 아이템 → 사용자 아이템 → 썸네일 이미지 → 프로필 이미지 → 미사용 아이템으로 바꿨으므로, 우측 셀렉트 순서와 실제 필터링 결과가 같은 의미로 동작하는지 QA한다.
  • 썸네일 이미지 필터에서는 /uploads/assets/tierlists, /uploads/assets/topics만 모이고, 프로필 이미지 필터에서는 /uploads/assets/avatars만 모이며, 각 카드 배지가 썸네일 이미지 / 프로필 아바타로 구분되는지 확인한다.
  • 미사용 아이템 필터는 사용자 아이템 중 저장 티어표 사용 횟수와 템플릿 연결이 모두 0인 항목만 보여주고, 계정 탈퇴로 이미 custom_items 레코드가 삭제된 항목이 따로 남지 않는지 확인한다.
  • v1.4.56에서 아이템 관리 기본 필터를 아이템만 (템플릿+사용자)로 바꿨으므로, 관리자 화면 첫 진입 시 프로필 아바타/티어표 썸네일 같은 1회성 자산이 기본 목록에서 빠지고 실제 템플릿/사용자 아이템만 보이는지 확인한다.
  • 보관 이미지 자산도 이름 변경, 템플릿에 추가, 개별 삭제가 기존처럼 동작하는지 확인한다.
  • 아이템 관리 상단 통계의 미사용 아이템 수치는 프로필/썸네일 자산을 포함하지 않고, 실제 사용자 아이템 중 사용 횟수와 템플릿 연결이 모두 0인 항목만 세는지 확인한다.
  • v1.4.55에서 회원 카드의 최근 활동최근 콘텐츠 활동으로 바꾸고 마지막 접속일을 따로 추가했으므로, 티어표를 수정하지 않고 로그인만 한 계정은 마지막 접속일만 갱신되고 최근 콘텐츠 활동은 유지되는지, 반대로 로그인 없이 과거 티어표만 있던 계정은 두 값이 다르게 보이는지 QA한다.
  • /api/auth/me에서도 last_login_at을 10분 단위 이상 간격으로만 갱신하도록 넣었으므로, 새로고침을 반복해도 과도한 DB 쓰기가 생기지 않으면서 실제 재접속 후에는 마지막 접속일이 자연스럽게 갱신되는지 확인한다.
  • 관리자 회원 목록의 마지막 접속순 정렬과 회원 카드의 프로필 보기 버튼이 정상 동작하고, 버튼 클릭 시 해당 회원의 /users/:userId 공개 프로필 화면으로 이동하는지 확인한다.
  • v1.4.54에서 관리자 전체 티어표 카드에 즐겨찾기 수와 인기순 정렬/최소 즐겨찾기 필터를 붙였으므로, 즐겨찾기 많은 순으로 바꿨을 때 실제 받은 즐겨찾기 수가 큰 글부터 보이고 최소값을 올리면 추천 후보만 남는지 확인한다.
  • 관리자 전체 티어표 통계 카드도 최소 즐겨찾기 필터가 적용된 범위 기준으로 전체/추천/공개/비공개 숫자가 바뀌는지 QA한다.
  • v1.4.54에서 회원 관리 카드에 팔로워 수와 받은 즐겨찾기 수를 추가했으므로, 팔로워 많은 순/받은 즐겨찾기 많은 순 정렬이 실제 운영 데이터 순서와 맞고 최고 관리자 보호 로직도 그대로 유지되는지 확인한다.
  • 관리자 회원 카드에서 비밀번호 초기화 버튼과 모달을 숨겼으므로, 일반 운영 동선에서는 비밀번호 직접 조작 UI가 보이지 않고 기존 회원 정보 수정/삭제/썸네일 변경은 그대로 동작하는지 확인한다.
  • v1.4.53에서 본인 티어표 복사 버튼을 다시 열었으므로, 작성자 본인 편집 모드와 뷰어 모드 모두에서 복사본 만들기가 보이고, 복사 후 새 복사본 화면으로 실제 이동하는지 확인한다.
  • 본인 티어표를 수정한 뒤 저장하지 않은 상태로 복사본 만들기를 누르면 복사 직전에 원본이 먼저 저장되고, 새 복사본이 방금 수정한 최신 내용 기준으로 생성되는지 QA한다.
  • /users/:userId 작성자 프로필에서 비로그인 사용자는 팔로우 버튼이 안 보이고, 로그인 사용자는 타인 프로필에서 팔로우 / 팔로잉 전환과 팔로워 수 갱신이 정상이며, 자기 프로필에서는 팔로우 버튼이 숨겨지는지 확인한다.
  • /following 팔로우 피드는 팔로우한 작성자의 공개 티어표만 최신 업데이트순으로 보이고, 비로그인 진입 시 /login?redirect=/following으로 이동하며, 검색어로 제목/주제/작성자를 필터링할 수 있는지 확인한다.
  • 티어표 편집/뷰어 우측 패널의 작성자 프로필 보기가 현재 티어표 작성자 프로필로 정확히 이동하고, 복사본에서는 복사본 작성자 자신 프로필로, 원본 링크는 기존처럼 원본 티어표로 이동하는지 함께 QA한다.
  • v1.4.51에서 주제별 공개 목록을 추천 티어표 / 전체 공개 티어표로 분리했으므로, 추천 지정된 티어표가 상단 강조 섹션에만 나오고 아래 일반 목록에는 중복되지 않는지, 추천 해제 즉시 아래 일반 목록으로 내려가는지 확인한다.
  • 관리자 전체 티어표 관리에서 공개 글은 추천 지정 / 추천 해제가 정상 동작하고, 비공개 글은 추천 지정 버튼이 비활성화되며, 추천글을 비공개로 바꾸면 추천 상태가 자동 해제되는지 QA한다.
  • 추천 섹션은 최대 16개까지만 보여주도록 잘라두었으므로, 17개 이상 추천 지정 시 최근 지정순과 좋아요 수 보조 정렬이 기대대로 적용되는지 한 번 더 확인한다.
  • v1.4.50에서 설정 화면을 좌우 2열 카드형으로 나눴으므로, 데스크톱 폭에서는 프로필 정보가 왼쪽, 비밀번호 변경이 오른쪽에 나란히 보이고, 모바일/좁은 폭에서는 두 카드가 자연스럽게 위아래로 쌓이는지 확인한다.
  • v1.4.49에서 설정 화면에 비밀번호 변경 섹션을 추가했으므로, 현재 비밀번호가 틀린 경우 현재 비밀번호가 일치하지 않아요., 새 비밀번호 확인이 다른 경우 비밀번호 확인이 일치하지 않아요., 성공 시 비밀번호를 변경했어요. 토스트가 각각 정확히 뜨는지 확인한다.
  • 설정 화면 닉네임 저장도 중복/예약어 에러를 구체적으로 보여주도록 바꿨으므로, 이미 사용 중인 닉네임과 예약어 닉네임을 각각 넣었을 때 서버 문제처럼 보이지 않고 원인 문구가 정확히 뜨는지 QA한다.
  • 로그인한 상태로 비밀번호 재설정 메일의 login?resetToken=... 링크를 눌렀을 때도 바로 내 티어표 화면으로 튕기지 않고 새 비밀번호 설정 화면이 먼저 뜨는지 확인한다.
  • v1.4.48에서 로컬 APP_ORIGINlocalhost:5173으로 먼저 주입하도록 바꿨으므로, 백엔드를 다시 띄운 뒤 새 회원가입 인증 메일과 비밀번호 재설정 메일 링크가 운영 도메인이 아니라 로컬 주소로 열리는지 확인한다.
  • v1.4.47에서 로컬 백엔드가 루트 .env.production을 읽도록 바꿨으므로, SMTP_PASS 교체 후 백엔드를 다시 띄우고 로컬 회원가입이 더 이상 mail_not_configured 503으로 떨어지지 않는지 확인한다.
  • .env.productionSMTP_PASS=여기에_Gmail_앱_비밀번호_입력 placeholder를 실제 Gmail 앱 비밀번호로 교체한 뒤, 운영 컨테이너를 재기동해서 회원가입 인증 메일과 비밀번호 재설정 메일이 실제로 발송되는지 확인한다.
  • v1.4.45에서 이메일 인증/비밀번호 재설정 메일 발송을 Gmail SMTP로 붙였으므로, 운영 .envSMTP_USER, SMTP_PASS, SMTP_HOST, SMTP_PORT, SMTP_SECURE, SMTP_FROM, APP_ORIGIN을 넣은 뒤 실제 회원가입 인증 메일과 비밀번호 재설정 메일이 도착하는지 확인한다.
  • 일반 회원가입 직후에는 자동 로그인되지 않고 인증 안내 문구가 떠야 하며, 메일의 login?verifyToken=... 링크를 누르면 이메일 인증과 로그인 세션 생성이 함께 끝나는지 QA한다.
  • 미인증 계정으로 로그인하면 email_unverified 상태 안내가 뜨고, 인증 메일 재전송 버튼으로 같은 메일 주소에 인증 링크를 다시 보낼 수 있는지 확인한다.
  • 비밀번호를 잊으셨나요?에서 재설정 메일을 요청한 뒤 login?resetToken=... 링크로 들어가면 새 비밀번호 입력 화면이 열리고, 저장 후 바로 로그인 상태로 내 티어표 화면으로 이동하는지 확인한다.
  • Gmail 주소 그대로 발송하는 1차 단계에서는 도메인 DNS 인증을 당장 쓰지 않지만, 이후 noreply@sori.studio 같은 도메인 발신 주소로 바꿀 경우 Cloudflare DNS에 SPF/DKIM/DMARC를 설정하는 후속 작업이 필요하다.
  • v1.4.44에서 공통 카피라이트 zenn 링크를 테마 텍스트 색으로 바꿨으므로, 다크/라이트 모드 양쪽에서 하단 링크가 배경에 묻히지 않고 hover 상태도 자연스러운지 확인한다.
  • v1.4.43에서 같은 TierEditorView 라우트 안에서도 topicId / tierListId / preview가 바뀌면 상태를 다시 불러오게 했으므로, 타인 티어표 복사 직후 화면이 내 복사본으로 바뀌는지와 상단 원본 링크 클릭 시 실제 원본 티어표 내용으로 전환되는지 확인한다.
  • 편집 중 미저장 변경이 있는 상태에서 상단 원본 링크를 눌렀을 때는 경고 모달이 뜨고, 계속 편집은 현재 화면 유지, 저장 없이 이동은 원본으로 이동하면서 변경분을 버리는지 QA한다.
  • v1.4.42에서 홈 템플릿 정렬을 즐겨찾기 → 수동 순서 → 최신 생성순 → 이름순으로 바꿨으므로, 관리자에서 아무 수동 정렬을 하지 않은 신규 템플릿이 가장 앞쪽에 보이고, 즐겨찾기/수동 고정 항목은 기존 우선순위를 유지하는지 확인한다.
  • 티어표 편집기의 클릭 배치를 추가했으므로, 풀 아이템 클릭→빈 셀 클릭, 셀 아이템 클릭→다른 셀 클릭, 셀 아이템 클릭→풀 빈 영역 클릭, 같은 아이템 재클릭 선택 해제, 드래그 직후 의도치 않은 재선택 방지까지 한 번씩 QA한다.
  • 클릭 배치에서 이미 아이템이 들어 있는 셀 안의 빈 영역을 눌렀을 때는 해당 셀 끝에 추가되고, 같은 셀을 다시 누르면 선택만 해제되는지 확인한다.
  • v1.4.41에서 관리자 템플릿 기본 아이템 다중 업로드를 100개/파일당 20MB와 Nginx client_max_body_size 1024m으로 올렸으므로, 운영 NAS 앞단 리버스 프록시에도 별도 본문 크기 제한이 있으면 같은 수준으로 맞춰야 하는지 확인한다.
  • 실제 QA에서는 10개 이상, 50개 이상, 100개 근처의 이미지 묶음을 한 번에 올렸을 때 브라우저/프런트 Nginx/백엔드 중 어느 단계에서도 413이나 업로드 실패가 나지 않는지 확인한다.
  • v1.4.40에서 preview=1 공유 화면을 뷰어 모드로 정리했으므로, 비로그인/로그인한 타인/작성자 본인 세 경우에 드래그 편집이 막히고 오른쪽 레일 버튼이 각각 공유하기, 내 티어표로 복사, 수정 모드로 전환 조건대로 노출되는지 확인한다. 특히 비로그인/타인이 일반 편집 URL로 직접 들어왔을 때도 자동으로 preview=1로 바뀌는지 본다.
  • 작성자 본인 편집 화면에는 뷰어 모드로 보기가 추가됐으므로, 저장된 본인 티어표에서 뷰어 모드로 진입한 뒤 다시 수정 모드로 전환으로 돌아오는 왕복 라우팅이 자연스러운지 QA한다.
  • 뷰어 모드 오른쪽 레일이 공통 로컬 레일 마운트를 다시 사용하게 바뀌었으므로, 데스크톱/태블릿 폭에서 광고가 상단에 나오고 액션 카드가 하단으로 내려가며, 우측 레일 접기/펼치기 시 콘텐츠가 깨지지 않는지 확인한다.
  • v1.4.39에서 기존 저장 티어표/복사본을 다시 열 때 최신 템플릿 기본 아이템이 미사용 풀로 합류하도록 바꿨으므로, 12345로 저장한 티어표를 만든 뒤 관리자 템플릿에 6789를 추가하고 다시 열거나 복사했을 때 6789만 미사용 상태로 나타나는지 확인한다.
  • 같은 정책에서 관리자 템플릿에서 삭제한 기존 아이템은 과거 저장 티어표의 그룹/풀 안에 남아 있으면 계속 보존되어야 하므로, 5번을 삭제해도 이미 사용한 옛 티어표에서 사라지지 않는지 다시 확인한다.
  • v1.4.39에서 주제별 공개 티어표 화면을 pageWrap으로 감쌌으므로, 좁은 브라우저 폭에서 검색창이 아래 줄로 내려온 상태에서도 검색창과 카드 목록 사이 간격이 홈/즐겨찾기 화면과 비슷하게 유지되는지 확인한다.
  • v1.4.38에서 운영자 계정의 최고 관리자 관리 버튼을 프런트에서 비활성화했으므로, 최고 관리자/일반 운영자/일반 회원 세 계정 조합으로 회원 정보 수정, 썸네일 변경, 비밀번호 초기화, 삭제 버튼 활성 상태와 서버 차단 응답이 기대대로 맞는지 확인한다.
  • 관리자 회원 정보 수정에서는 예약어 닉네임을 허용하도록 예외를 열었으므로, 일반 회원가입/개인 프로필 수정은 여전히 예약어가 막히고 관리자 수정만 저장되는지 한 번 더 QA한다.
  • preview=1 화면이 공통 앱 셸을 그대로 쓰도록 바뀌었으므로, 좌측 레일 접기/펼치기, 우측 레일 닫기/열기, 중앙 헤더 타이틀, 메인 배경색, 오른쪽 광고와 카피라이트 정렬이 홈 화면과 같은 문법으로 보이는지 비교 QA한다.
  • 프리뷰 우측 광고에 padding-top: 78px를 넣었으므로, 데스크톱/태블릿 폭에서 광고 시작 위치가 너무 내려가거나 모바일 오버레이 레이아웃에서 어색해지지 않는지 확인한다.
  • v1.4.33에서 회원가입에 닉네임 입력과 중복/예약어 검사를 붙였으므로, 실제 QA에서는 이메일 중복, 닉네임 중복, 예약 닉네임, 프로필 닉네임 변경, 관리자 회원 수정 흐름이 같은 규칙으로 막히는지 확인한다.
  • 테마는 저장값이 없을 때 무조건 다크로 시작하게 바꿨고 설정 화면 토글도 다시 열었으므로, 첫 접속/새 브라우저/다른 운영체제에서 기본 다크 시작과 수동 토글 저장이 그대로 정상인지 확인한다.
  • 관리자 템플릿 썸네일 드롭존 빈 상태 아이콘 제거와 아이템 상세 모달 썸네일 프리뷰가 들어갔으므로, 관리자 화면에서 썸네일 교체와 아이템 선택 모달 가독성을 한 번 더 QA한다.
  • v1.4.32에서 파일명·composable·관리자 클래스명·백엔드 헬퍼 함수명까지 topic/template 기준으로 끝까지 정리했으므로, 다음 실제 QA는 기능 동작 확인에 집중하고 이름층 회귀는 별도 체크만 하면 된다.
  • 현재 backend/src, frontend/src, backend/scripts, backend/index.js 기준 game/Game 검색은 0건이므로, 이후 남는 확인 작업은 서비스 동작과 배포 환경 쪽에만 집중한다.
  • v1.4.31에서 /games redirect와 legacy DB 마이그레이션까지 제거했으므로, 실제 QA에서는 오직 현재 주소(/topics, /admin/templates)와 새 DB 기준 흐름만 집중적으로 확인하면 된다.
  • 현재 backend/src, frontend/src 기준 game 검색은 0건이므로, 이후 남는 확인 작업은 기능 QA와 운영 환경 배포 점검 쪽에만 집중한다.
  • v1.4.30에서 빈 로컬 MariaDB 재초기화 검증까지 통과했으므로, 다음 실제 QA에서는 “기존 데이터가 있는 환경”에서 ensureData()가 저장 티어표와 템플릿 요청 스냅샷의 legacy origin을 정상 정규화하는지만 추가 확인하면 된다.
  • 개발 환경 기준으로는 새 DB에서 legacyTierItems=0, legacyRequestItems=0가 확인됐으므로, 이후에는 origin: 'game' 호환 코드를 언제 완전히 제거할지 운영 데이터 기준으로만 판단하면 된다.
  • v1.4.29에서 새 티어표 데이터 기본 origin을 template로 바꿨으므로, 저장 후 다시 열기/복사/요청 생성/관리자 가져오기 흐름에서 예전 데이터와 새 데이터가 함께 섞여도 정상 동작하는지 한 번 더 확인한다.
  • 관리자 아이템 라이브러리 응답 키가 linkedTemplates로 정리됐으므로, 사용자 업로드 이미지 삭제 차단과 템플릿 이동 모달이 그대로 정상 동작하는지 확인한다.
  • 현재 남아 있는 game는 레거시 redirect, DB 마이그레이션, 호환용 origin만 남겨둔 상태이므로, v1.4 QA 후에는 이 레거시 층을 언제 제거할지 별도 마감 판단만 하면 된다.
  • v1.4.28에서 관리자 템플릿 상세 상태와 기본 아이템 정렬 상태 이름을 template 기준으로 더 정리했으므로, 관리자 템플릿 선택/공개 전환/기본 아이템 정렬 저장이 그대로 정상인지 한 번 더 확인한다.
  • 새 템플릿 썸네일/기본 아이템 업로드는 이제 topics 디렉터리로 저장되므로, 실제 업로드 후 최적화 작업 분류와 관리자 최근 작업 표시가 자연스럽게 보이는지 확인한다.
  • 현재 코드 검색에 남는 game는 레거시 redirect, DB 마이그레이션, origin: 'game' 호환이 중심이므로, 이 층까지 실제로 없앨지 여부는 v1.4 QA 후 안정성 기준으로 다시 판단한다.
  • v1.4.27에서 관리자 내부 탭/라우트 이름과 DB alias export까지 더 정리했으므로, 관리자 템플릿 탭 이동, 커스텀 아이템에서 템플릿 관리로 점프, 템플릿 요청 확인하기 이동이 모두 정상인지 한 번 더 확인한다.
  • v1.4.26에서 관리자 기본 경로를 /admin/templates로 바꾸고 /api/admin/templates만 남겼으므로, 관리자 진입/새로고침/뒤로가기와 템플릿 생성·썸네일 업로드·아이템 추가가 모두 정상인지 확인한다.
  • v1.4.26에서 공개 API /api/games를 제거했으므로, 실제 서버 재시작 후 홈/주제 상세/티어표 편집기에서 /api/topics만으로 모두 정상 동작하는지 확인한다.
  • 오래된 관리자 주소 /admin/games는 redirect만 남겼으므로, 북마크로 직접 진입해도 /admin/templates로 자연스럽게 바뀌는지 본다.
  • v1.4.25에서 티어표/요청 응답의 gameId / gameName 호환 키를 실제로 제거했으므로, 브라우저에서 홈 목록, 주제 상세, 저장된 티어표 열기, 즐겨찾기, 검색 결과, 관리자 템플릿 요청/전체 티어표 관리가 모두 정상 동작하는지 한 번 더 QA한다.
  • v1.4.25에서 관리자 route query와 편집기 저장/request payload를 topicId 기준으로 옮겼으므로, /admin/templates?topicId=..., /admin/tierlists?mode=all&topicId=..., 티어표 저장, 템플릿 요청, 추가 아이템 가져오기 흐름이 모두 정상인지 확인한다.
  • 남은 gameId는 의도적으로 유지한 레거시 주소 alias(/games/:gameId)와 관리자 alias route path뿐이므로, 오래된 외부 링크 진입 후 주소가 새 topic 체계로 자연스럽게 정규화되는지만 마지막으로 본다.
  • v1.4.24에서 공개 주제 API와 관리자 템플릿 API의 기본 응답 키를 더 줄였으므로, 실제 브라우저에서 홈 목록, 즐겨찾기 토글, 주제 상세, 티어표 편집기, 관리자 템플릿 공개 전환/생성이 모두 그대로 정상인지 한 번 더 QA한다.
  • 다음 단계에서는 mapTierListRow, mapTemplateRequestRow, 관리자 route query, 저장 payload 입력 호환에 남아 있는 gameId/gameName/sourceGameId/targetGameId를 끝까지 걷어낼지 최종 결정한다.
  • v1.4.23에서 프런트 api.js의 레거시 game 별칭 메서드와 티어표 저장/요청 내부 payload를 더 걷어냈으므로, 실제 브라우저에서 저장/복사/템플릿 요청/관리자 요청 카드 표시가 그대로 정상인지 한 번 더 QA한다.
  • 다음 단계에서는 응답의 game, gameId, gameName, sourceGameId, targetGameId 호환 키를 실제로 제거할지, 아니면 v1.4 마감 후 안정화 기간을 두고 걷어낼지 최종 결정한다.
  • v1.4.22에서 공개 주제 라우트 파일을 topics.js로 옮겼으므로, 실제 서버 재기동 후 /api/topics/api/games 호환 경로가 모두 정상 응답하는지 한 번 더 QA한다.
  • 다음 단계에서는 응답의 game, gameId, gameName 호환 키를 실제로 어느 범위까지 제거할지, 그리고 관리자/티어표 저장 payload에서 남은 gameId 입력 호환을 어디까지 유지할지 최종 결정한다.
  • v1.4.21에서 홈/주제 상세/에디터/나의 티어표/즐겨찾기/검색 결과/관리자 템플릿 생성이 topic/template 응답 키를 우선 읽도록 바뀌었으므로, 실제 브라우저에서 즐겨찾기 토글과 에디터 이동, 관리자 신규 템플릿 생성이 모두 정상인지 한 번 더 QA한다.
  • 다음 단계에서는 실제 응답의 game, gameId, gameName 호환 키를 어디까지 남길지, 그리고 /api/games 호환 경로와 games.js 파일명을 언제 걷어낼지 최종 범위를 정한다.
  • v1.4.20에서 백엔드 db export와 공개/관리자 라우트 내부 이름을 topic/template 기준으로 정리했으므로, 실제 브라우저와 관리자 화면에서 주제 목록/즐겨찾기/템플릿 생성/요청 반영 흐름이 모두 정상인지 한 번 더 QA한다.
  • 다음 단계에서는 남아 있는 호환 응답 키 game, gameId, gameName과 레거시 route 파일명 games.js를 어디까지 실제 topic 이름으로 마감할지 범위를 결정한다.
  • v1.4.19에서 템플릿 기본 아이템 삭제는 기존 저장 티어표를 보존하도록 정책이 바뀌었으므로, 실제 운영 데이터에서 삭제 후 예전 티어표의 배치/대기풀이 그대로 유지되는지와 새 티어표 생성 시에만 아이템이 빠지는지 한 번 더 QA한다.
  • v1.4.19에서 삭제 전 영향 개수 경고를 붙였으므로, 공개/비공개 티어표가 섞인 템플릿에서 숫자가 기대대로 보이는지와 삭제 취소/확정 후 스크롤 위치가 안정적으로 유지되는지 한 번 더 QA한다.
  • v1.4.19에서 템플릿 썸네일 등록 아이콘은 썸네일이 있을 때 숨기도록 정리했으므로, 썸네일 있음/없음 상태 전환과 드래그 오버 활성 상태에서 안내 문구가 겹치지 않는지 한 번 더 QA한다.
  • v1.4.18에서 관리자 템플릿 요청 카드 썸네일 클릭을 브라우저 기본 새 창 열기로 정리했으므로, 요청 썸네일 클릭 시 오류 없이 새 탭이 열리고 전체 티어표 관리 썸네일 모달 동작과도 섞이지 않는지 한 번 더 QA한다.
  • v1.4.17에서 주제 컬렉션 카드 클릭 시 에디터 진입 무한 루프를 끊었으므로, 새 티어표 만들기/기존 티어표 열기/공유 링크 열기 세 흐름이 모두 정상 진입하는지 한 번 더 QA한다.
  • v1.4.16에서 장애 전용 안내 화면을 붙였으므로, 실제로 db_init_failed와 네트워크 차단 상황에서 각각 서비스 점검 중, 서버 연결 확인 중 화면이 기대대로 분기되는지 한 번 더 QA한다.
  • v1.4.15에서 ensureData()가 실제 운영 DB 설정으로 ok까지 통과한 것은 확인했으므로, 이제는 브라우저에서 /api/auth/me, /api/auth/meta, /api/topics 500이 실제로 사라졌는지와 기존 세션 로그인 흐름이 복구됐는지 한 번 더 QA한다.
  • v1.4.14부터는 DB 마이그레이션이 rename 대신 복사 기반으로 바뀌었으므로, 실제 운영 DB에서 서버 재시작 후 topics 계열 테이블과 tierlists.topic_id, template_requests.source_topic_id/target_topic_id가 기대대로 채워지는지 먼저 확인한다.
  • 레거시 /games/.../editor/:gameId/...는 redirect로 남겼으므로, 오래된 북마크 진입 후 주소가 /topics/..., /editor/:topicId/...로 자연스럽게 정규화되는지 한 번 더 QA한다.
  • v1.4.13부터 DB 실명도 topics / topic_items / favorite_topics / topic_id 기준으로 옮겼으므로, 기존 운영 DB에서 서버 재시작 후 자동 마이그레이션이 한 번만 자연스럽게 수행되는지 먼저 확인한다.
  • 백엔드 응답은 현재 topicId / topicNamegameId / gameName을 함께 내려주고 있으므로, 다음 단계에서는 실제 프런트/관리자에서 더 이상 gameId fallback이 필요 없는 지점을 확인해 호환 키 제거 순서를 정한다.
  • 티어표 공개 목록, 관리자 전체 티어표 관리, 저장/요청 API는 topicId를 우선 받도록 바꿨으므로, 실제 브라우저에서 검색/저장/공유/관리자 필터가 모두 같은 파라미터 체계로 자연스럽게 이어지는지 한 번 더 QA한다.
  • /api/topics, /api/admin/templates alias를 연 뒤 프런트 호출도 새 경로로 옮겼으므로, 실제 브라우저에서 주제 목록/즐겨찾기/주제 상세/관리자 템플릿 관리가 모두 같은 세션으로 자연스럽게 동작하는지 한 번 더 QA한다.
  • 프런트 API 호출부는 topic/template 의미 이름으로 옮겼으므로, 다음 단계에서는 api.js 안의 레거시 alias를 얼마나 더 유지할지와 백엔드 API 경로를 실제로 바꿀지 범위를 정한다.
  • 관리자 템플릿/주제 화면과 홈·에디터·즐겨찾기에서 새 API 이름층으로 바뀐 뒤에도 저장, 즐겨찾기, 템플릿 생성, 아이템 정렬 흐름이 자연스러운지 한 번 더 QA한다.
  • topicHub / topicId를 기본 라우트 기준으로 세웠으므로, 기존 /games/... 북마크와 새 /topics/... 주소 양쪽에서 주제 상세와 에디터 진입이 모두 자연스럽게 이어지는지 한 번 더 QA한다.
  • 경로 헬퍼를 사용자 주요 화면에 연결했으므로, 로그인 리다이렉트·공유 프리뷰·복사본 이동·주제 복귀 흐름이 실제 브라우저에서 모두 같은 주소 체계로 자연스럽게 이어지는지 한 번 더 QA한다.
  • 다음 단계에서는 router/index.jsgameHub, route.params.gameId, api.getGame처럼 남아 있는 프런트 내부 이름도 어디까지 topic/template 의미로 감쌀지 범위를 더 좁힌다.
  • 주제 상세 화면 제목은 ID fallback 대신 로딩 문구를 쓰도록 바꿨으므로, 직접 진입·뒤로가기·다른 주제로 연속 이동할 때 헤더가 깜빡이거나 이전 제목을 잠깐 유지하지 않는지 한 번 더 QA한다.
  • 검색 결과 화면도 pageHead 구조로 맞췄으므로, 주요 목록 화면들 간 상단 여백과 타이포 리듬이 자연스러운지 한 번 더 비교 QA한다.
  • 주제 상세 컬렉션 화면은 pageHead 공통 레이아웃과 /topics 기본 경로로 옮겼으므로, 직접 진입·뒤로가기·검색 후 재진입 시 주소와 헤더 흐름이 자연스러운지 한 번 더 QA한다.
  • /topics/:gameId를 기본 경로로 세우고 /games/:gameId는 alias로 남겼으므로, 다음 단계에서는 에디터/검색/공유 흐름에서 어떤 링크를 새 경로로 더 전환할지 범위를 정한다.
  • 신규 DB 기준 template_requests 스키마 누락은 보정했으므로, 운영 NAS에서 down -v 후 재배포했을 때 관리자 /admin/featured, /admin/tierlists, /admin/users 진입과 템플릿 요청/이미지 통계 API가 모두 500 없이 동작하는지 한 번 더 QA한다.
  • 브라우저 탭 파비콘은 다시 인라인 SVG로 돌려 정적 /favicon.svg, /favicon-32x32.png 요청 자체를 끊었으므로, 최신 배포 후 강력 새로고침 기준으로 favicon 403 로그가 실제로 사라졌는지 한 번 더 QA한다.
  • 우측 레일 Teleport 대상 DOM을 상시 유지하는 방식으로 바꿨으므로, 관리자 /admin/... → 설정 /profile → 홈 /처럼 전용 우측 레일과 일반 우측 레일을 오가는 라우트 전환에서 콘솔 오류가 더 이상 재현되지 않는지 운영 브라우저로 한 번 더 QA한다.
  • 내부 리네이밍 2단계로 관리자 selectedTemplate / templates / loadTemplate / refreshTemplates 묶음까지 정리했으므로, 다음 단계에서는 /games/:gameId 라우트와 프런트 API 호출부를 어디까지 topic/template 의미로 감쌀지 범위를 먼저 정리한다.
  • 화면/문서 층의 용어 정리는 거의 마무리됐으므로, 다음 단계에서는 내부 gameId / games 모델을 실제로 옮길지, 아니면 라우트 alias/리다이렉트부터 둘지 점진 전환 순서를 정한다.
  • 관리자 화면까지 포함한 사용자 노출 게임 문구를 3차까지 정리했으므로, 실제 운영 흐름에서 뜨는 확인창/토스트/선택 모달까지 표현이 자연스러운지 한 번 더 QA한다.
  • 왼쪽 사이드 메뉴와 각 화면 타이틀을 한글 기준으로 맞췄으므로, 홈/나의 티어표/즐겨찾기/설정 진입 시 실제 체감이 자연스럽고 중복 표현이 어색하지 않은지 한 번 더 QA한다.
  • 사용자 노출 용어는 주제 / 템플릿 기준으로 계속 걷어내고 있으므로, 홈/주제 화면/관리자 템플릿 관리에서 어색하게 남은 게임 문구가 없는지 한 번 더 QA한다.
  • 내부 모델명은 아직 game을 유지하므로, 다음 단계에서는 문서와 보조 화면 문구를 더 정리할지, 아니면 내부 리네이밍 계획을 따로 잡을지 결정한다.
  • 주제 목록과 티어표 카드 썸네일은 기본 이미지 드래그를 막았으므로, 데스크톱 브라우저에서 클릭/드래그 시 원본 이미지 프리뷰가 더 이상 뜨지 않는지 한 번 더 QA한다.
  • 왼쪽 레일 활성 배경은 공용 인디케이터가 이동하는 방식으로 바뀌었으므로, 홈/내 티어표/즐겨찾기/설정 전환과 레일 접힘 상태 양쪽에서 위치 보정이 자연스러운지 한 번 더 QA한다.
  • 로그인 화면 상단 토글은 이동형 인디케이터로 바뀌었으므로, 데스크톱과 모바일에서 로그인 / 회원가입 전환 애니메이션이 어색하지 않고 포커스/클릭 상태도 자연스러운지 한 번 더 QA한다.
  • 관리자 카드 설명 줄임은 line-clamp 표준 속성까지 함께 선언했으므로, 실제 브라우저별 표시 차이가 없는지 한 번 더 QA한다.
  • 사용하지 않는 기본 자산을 정리했으므로, 배포본에서 누락 참조 없이 파비콘/공유 썸네일/좌측 레일 아이콘이 정상 노출되는지 한 번 더 QA한다.
  • 공유 썸네일 og-card는 이번에 이미지 수정본까지 함께 반영했으므로, 실제 메신저 미리보기에서 최신 그림이 캐시 갱신 후 정상 노출되는지 한 번 더 QA한다.
  • 홈페이지 공유 메타와 새 og-card.png는 이번에 처음 붙였으므로, 카카오톡/디스코드/슬랙/모바일 브라우저에서 제목·설명·썸네일이 기대대로 보이는지 한 번 더 QA한다.
  • 파비콘은 svg + 32px png + apple-touch-icon 조합으로 정리했으므로, 데스크톱 브라우저 탭과 iOS 홈 화면 추가에서 모두 정상 노출되는지 한 번 더 QA한다.
  • 티어표 아이콘 크기는 이제 저장 데이터로 승격됐으므로, 저장 후 재진입/프리뷰/복사본 생성에서 같은 크기가 유지되는지 한 번 더 QA한다.
  • 티어표 편집/프리뷰 모바일 열 배지는 새로 붙였으므로, 실제 좁은 화면에서 칸 상단 배지와 아이템 썸네일이 겹치지 않고 열 구분이 자연스러운지 한 번 더 QA한다.
  • 모바일 열 배지는 같은 구간에서 상단 열 제목을 숨기도록 다시 맞췄으므로, 720px 안팎뿐 아니라 980px 이하 전 구간에서 중복 표기 없이 자연스러운지 한 번 더 QA한다.
  • 모바일 티어표 편집 레이아웃은 행 라벨 폭을 다시 덮어쓰던 규칙을 걷어냈으므로, 실제 980px 이하 구간에서 행 라벨이 과하게 넓지 않고 칸 폭을 충분히 남기는지 한 번 더 QA한다.
  • 프리뷰 완성본 하단 메타는 새로 붙였으므로, 작성자/저장 시각이 공개 열람 화면과 이미지 다운로드 결과 기준에서 모두 자연스럽게 읽히는지 한 번 더 QA한다.
  • 관리자 템플릿 요청 카드는 썸네일 클릭이 새창 열기 역할로 바뀌었으므로, 썸네일 클릭과 확인하기 액션이 서로 헷갈리지 않는지 한 번 더 QA한다.
  • 티어표 만들기 화면의 공유하기는 저장된 티어표에서만 노출되므로, 저장 직후/수정 중/복사본/읽기 전용 상태 각각에서 노출 조건과 클립보드 복사가 자연스러운지 한 번 더 QA한다.
  • 우측 카피라이트는 이제 공통 오른쪽 레일 footer이므로, 관리자 화면뿐 아니라 홈/프로필 등 오른쪽 사이드가 보이는 화면에서도 같은 최하단 위치에 유지되는지 한 번 더 QA한다.
  • 왼쪽 레일 축소 상태의 하단 액션 아이콘은 홈과 주제 화면에서 서로 다른 아이콘을 쓰도록 나눴으므로, 실제로 두 문맥이 한눈에 구분되는지 한 번 더 QA한다.
  • 왼쪽 레일 축소 상태 최하단의 티어표 만들기 아이콘 버튼은 새로 추가했으므로, 홈/주제 화면에서 실제로 같은 위치 감각으로 동작하는지 한 번 더 QA한다.
  • 관리자 우측 카피라이트 문구는 사이드바 내부 최하단으로 다시 옮겼으므로, 실제 관리자 화면에서 스크롤/창 크기 변화에도 계속 보이는지 한 번 더 QA한다.
  • 왼쪽 레일 축소 상태는 아이콘 줄 높이를 50px 기준으로 통일했으므로, 실제 데스크톱에서 아바타/검색/메뉴 아이콘이 시각적으로 같은 리듬으로 보이는지 한 번 더 QA한다.
  • 왼쪽 레일 검색은 이제 항상 주제 템플릿 검색으로 홈으로 이동하므로, 홈이 아닌 화면에서 사이드 검색 후 주제 목록 결과로 자연스럽게 이동하는지 한 번 더 QA한다.
  • 앱 왼쪽 사이드 레일은 접힘 상태 레이아웃을 다시 손봤으므로, 데스크톱에서 접기/펼치기 반복 시 아바타 영역 높이, 아이콘 중앙 정렬, 검색 버튼 간격, 네비게이션 히트 영역이 모두 자연스러운지 한 번 더 QA한다.
  • 관리자 우측 사이드바 하단 카피라이트 링크는 새 창 외부 링크로 바꿨으므로, 실제 클릭 시 zenn.town 연결과 hover 대비가 자연스러운지 한 번 더 QA한다.
  • 관리자 아이템 상세 모달은 공통 패딩 예외 처리를 다시 넣었으므로, 대형 상세 모달과 일반 템플릿 선택 모달이 각각 기대한 크기로 보이는지 한 번 더 QA한다.
  • 아이템 관리 모달의 공용 템플릿 선택기에서는 이미 연결된 템플릿이 비활성화되므로, 실제 운영 데이터에서 중복 연결 방지와 이미 추가됨 표시가 기대대로 읽히는지 한 번 더 QA한다.
  • 공용 템플릿 선택 모달을 아이템 관리 모달에도 붙였으므로, 관리자 템플릿 관리 / 전체 티어표 관리 / 아이템 관리 세 흐름에서 같은 검색/선택 UX가 자연스럽게 느껴지는지 한 번 더 QA한다.
  • 관리자 /admin/games?gameId=... 직접 진입과 새로고침에서 선택 템플릿이 정상 복원되고 콘솔 오류가 없는지 한 번 더 QA한다.
  • 공용 템플릿 선택 검색 모달은 새로 붙였으므로, 템플릿 관리 선택/전체 티어표 관리 필터 양쪽에서 검색어 입력, 선택, 해제, 뒤로가기 흐름을 한 번 더 QA한다.
  • 관리자 전체 티어표 관리의 템플릿 필터와 관리 모달은 새로 붙였으므로, 실제 운영 데이터에서 필터 전환 후 공개/비공개 집계, 제목 수정, 비공개 전환, 삭제 흐름이 자연스럽게 이어지는지 한 번 더 QA한다.
  • 관리자 템플릿 관리 상단의 전체 / 공개 / 비공개 티어표 수치와 전체 티어표 관리 상단 집계가 실제 운영 데이터와 맞는지, 공개 전환 직후 숫자가 자연스럽게 갱신되는지 한 번 더 QA한다.
  • 관리자 아이템 상세 모달은 왼쪽 선택 카드와 오른쪽 상세 본문으로 다시 정리했으므로, 데스크톱/모바일에서 긴 템플릿 목록과 긴 참조 목록이 각각 자연스럽게 스크롤되는지 한 번 더 QA한다.
  • 관리자 계정으로 /admin/...을 직접 새로고침했을 때 홈으로 튕기지 않고 그대로 유지되는지, 실제 세션이 살아 있는 브라우저와 만료된 브라우저 각각에서 한 번 더 QA한다.
  • 티어표 만들기 화면의 보드 드롭존은 점선/높이/중앙 정렬로 존재감이 커졌으므로, 데스크톱과 모바일에서 파일 선택 버튼과 안내 문구 밀도를 한 번 더 QA한다.
  • 관리자 썸네일 드롭존과 기본 아이템 추가 드롭존은 에디터 드롭존과 시각 문법을 맞췄으므로, 라이트모드와 좁은 화면에서 아이콘 대비와 배경 밝기가 과하지 않은지 한 번 더 QA한다.
  • 커스텀 이미지가 많은 티어표를 저장할 때 커스텀 이름 정리 목록과 미배치 아이템 영역 순서가 실제로 안정적으로 유지되는지, 10장 이상 업로드한 상태로 한 번 더 QA한다.
  • 관리자 이미지 최적화 현황은 최근 작업 라벨을 읽기 쉬운 이름으로 바꿨으므로, 실제 운영 데이터에서 커스텀 아이템 / 티어표 썸네일 / 게임·템플릿 이미지 / 프로필 아바타 흐름이 기대와 맞게 찍히는지 한 번 더 QA한다.
  • 관리자 게임 설정 카드를 본문 상단으로 옮겼으므로, 긴 게임 목록 상태에서 선택-썸네일 교체-공개 전환-삭제 흐름이 스크롤 없이 자연스러운지 한 번 더 QA한다.
  • 누락 참조 정리는 실제 파일이 없는 참조만 지우도록 넣었으므로, 운영 데이터에서 실행했을 때 누락 수치가 줄고 대표 썸네일/티어표/템플릿 요청 표시가 기대대로 비워지는지 한 번 더 QA한다.
  • 아이템 관리의 같은 이미지 참조 요약과 상세 모달은 붙였으므로, 실제 운영 데이터에서 카드 수치와 모달 목록이 기대한 참조 관계와 맞는지 한 번 더 QA한다.

중기 개선

  • 목록 카드의 작성자 메타를 카드 전체 열기 버튼과 충돌 없이 직접 프로필 링크로 분리하는 후속 UX를 검토한다.
  • 추천 티어표는 전체 누적 즐겨찾기 기준 정렬/필터부터 붙였으므로, 다음 단계에서는 최근 N일 기준 급상승 추천 후보 필터와 추천 섹션 노출 개수 설정을 관리자 화면에 추가할지 검토한다.
  • 이메일 인증/비밀번호 재설정 1차 구현이 들어갔으므로, 다음 단계에서는 Gmail 발신 기반이 실제 운영에서 스팸함으로 얼마나 가는지 보고 필요하면 Cloudflare DNS의 SPF/DKIM/DMARC와 도메인 발신 주소 전환을 정리한다.
  • 구글 계정 로그인은 아직 붙이지 않았으므로, 이메일 인증 안정화 후 Google OAuth 클라이언트를 만들고 일반 이메일 계정과 같은 이메일의 구글 계정을 자동 연결할지 정책을 먼저 결정한다.
  • 신규 템플릿 요청은 현재 첫 생성 1회 후 요청과 게임을 연결해 재사용 단계까지 정리했으므로, 다음 단계에서는 정말로 게임을 DB에 만들기 전까지 임시 작업 상태로 유지할지 여부를 운영 흐름 기준으로 결정한다.
  • 관리자 템플릿 요청은 동일 src 중복 생성 방지와 연결된 게임/이미 반영 n개 표시까지 붙였으므로, 이후에는 요청별 반영 이력(예: 어떤 아이템을 언제 반영했는지)까지 별도로 남길지 검토한다.
  • 관리자 URL 분리는 시작했으므로, 다음 단계에서는 AdminView.vue 단일 대형 파일을 섹션별 뷰/컴포저블로 쪼개고 직접 진입 시 선택 게임/요청 작업 상태 복원 범위도 함께 정리한다.
  • 관리자 본문 컴포넌트 분리와 게임/템플릿 요청/회원 관리/아이템 관리/목록 관리 composable 분리는 시작했으므로, 다음 단계에서는 공통 모달 상태를 어느 계층에서 소유할지 정리하고 남은 관리자 유틸 함수를 더 줄인다.
  • 관리자 화면은 섹션 경로 분리까지 끝났으므로, 다음 단계에서는 AdminView.vue를 실제 레이아웃 뷰와 섹션별 라우트 컴포넌트로 더 쪼갤지 결정한다.
  • 관리자 공통 스타일은 adminUiScope 기준으로 다시 묶었으므로, 다음 단계에서는 각 섹션을 별도 파일로 완전히 분리할 때 스타일도 admin.css 또는 섹션별 스타일로 옮길지 결정한다.
  • 관리자 요청 카드 밀도는 줄였으므로, 다음 단계에서는 전체 티어표 카드와 요청 카드의 상단/하단 액션 정렬을 한 번 더 통일할지 비교 QA한다.
  • 신규 템플릿 요청 썸네일 기본 승계는 붙였으므로, 다음 단계에서는 요청 아이템 반영 후 처리 완료까지의 관리자 흐름을 실제 데이터로 한 번 더 QA한다.
  • 관리자 게임 아이템 순서 저장은 추가됐으므로, 다음 단계에서는 새 아이템 추가 직후 자동 맨 앞 배치관리자 수동 고정 순서의 우선순위를 실제 운영 흐름 기준으로 한 번 더 QA한다.
  • 관리자 템플릿 요청 미리보기는 실제 완성본 iframe 방식과의 체감 차이를 마지막으로 한 번 더 QA한다.
  • 라이트모드/다크모드 2차 보정까지 반영했으므로, 남은 작업은 전체 화면을 실제 사용 흐름으로 돌려 보며 대비·명도·아이콘 가독성을 미세하게 QA하는 최종 테마 점검 단계로 가져간다.
  • 라이트모드 공통 토큰 재정비와 카드/아바타/즐겨찾기 버튼 보정까지 반영했으므로, 다음 QA에서는 로그인/홈/주제 허브/에디터/관리자 순으로 실제 플로우를 돌리며 남은 하드코딩 색과 과한 대비가 없는지 확인한다.
  • 관리자용 티어표 승인/숨김 처리, 아이템 정렬 UI를 추가한다.
  • 회원 일괄 작업(다중 선택, 활동 저조 계정 정리) 같은 관리 보조 기능을 추가한다. 비밀번호는 평소 운영자가 직접 덮어쓰기보다 이메일 재설정 흐름을 우선하므로, 관리자 일괄 비밀번호 초기화는 별도 긴급 대응 정책이 생긴 뒤에만 다시 검토한다.
  • 티어 행 프리셋 저장, 색상 관리, 행 복제 같은 고급 편집 기능을 추가한다.
  • 로그인/회원가입/관리자 비밀번호 초기화에 요청 횟수 제한을 추가한다.
  • 업로드 파일은 MIME 타입뿐 아니라 파일 시그니처 기반 검증까지 확장한다.
  • production에서 SESSION_SECRET 누락 시 서버가 부팅되지 않도록 강제한다.
  • helmet 기반 보안 헤더와 업로드 정적 응답 헤더를 정리한다.
  • 책 아이콘 기반 사용법 모달은 제작 흐름뿐 아니라 복사, 템플릿 업데이트 요청, 새 템플릿 요청까지 확장했으므로, 실제 16:9 스크린샷 자산과 단계별 문구를 운영 톤에 맞게 채운다.
  • 관리자 아이템 라이브러리에서 동일 이미지(src)를 여러 템플릿이 공유하는 경우, 필요하면 묶어서 보거나 대표 카드로 합쳐 보는 후속 정리 옵션을 검토한다.
  • 라이트모드 최종 QA 시 홈/설정/관리자/에디터를 실제 사용 흐름으로 돌리며, 남아 있는 하드코딩 텍스트 색과 플레이스홀더 배경을 한 번 더 점검한다.
  • 템플릿 기본 아이템 다중 업로드는 8개까지 성공, 9개 이상 한 번에 전송 시 실패하는 사례가 있었으므로 NAS/리버스 프록시의 업로드 body 제한(client_max_body_size 등)과 실제 응답 코드를 운영 환경에서 확인한다.
  • 프리뷰 우측 광고 레일을 붙였으므로, 실제 운영 환경에서 광고가 로드될 때 프리뷰 본문 폭이 과하게 줄지 않는지 데스크톱 기준으로 한 번 더 확인한다.
  • 관리자 아이템 라이브러리는 보관 자산까지 노출되므로, 이후에는 활성 템플릿 / 보관 자산 분리 필터나 그룹 보기까지 검토한다.
  • 가이드 모달과 관리자 아이템 모달은 현재 같은 톤의 큰 셸을 쓰므로, 이후 공통 모달 레이아웃 컴포넌트로 분리할지 검토한다.
  • 관리자 아이템 라이브러리 이름 변경은 템플릿·사용자 업로드·보관 자산까지 모두 가능하므로, 이후에는 일괄 이름 정리나 중복 이름 감지 보조 기능까지 검토한다.
  • 관리자 템플릿 요청 카드와 전체 티어표 카드가 같은 문법으로 맞춰졌으므로, 이후에는 라이트모드까지 포함해 두 카드의 썸네일 높이·입력창 밀도·아이템 그리드를 한 번 더 비교 QA한다.
  • 템플릿 요청 저장 흐름은 저장된 티어표 기준으로 바뀌었으므로, 이후 실제 데이터로 빈 제목 저장 시 자동 생성 제목·요청 버튼 노출 시점·관리자 요청 미리보기 밀도를 한 번 더 비교 QA한다.