Appearance
프론티아 글로벌 — 운영·어드민 PRD
운영자가 어드민에서 마켓별로 홈 큐레이션·공지·팝업·푸시를 운영하고, 유저를 마켓·국가·언어로 관리하고, 콘텐츠를 모더레이션하는 도구를 다룬다. 유저가 콘텐츠를 보는 소비 쪽은 탐색·플레이 PRD, 콘텐츠 발행·소울·프롬프트 관리는 창작·발행, 결제·정산 어드민은 결제·정산 PRD 소관이다.
Status: draft Created: 2026-07-03 Last updated: 2026-07-03 대상 표면: 어드민 (일부 규칙이 앱/웹 노출·발송에 반영)
이 문서의 표기
- 마켓 코드: 콘텐츠 마켓 7개(NA·JP·KR·TW·LATAM·BR·ID). 마켓에 매핑되지 않은 나머지 국가(태국·베트남 등)는 NA로 매핑된다(별도 'ROW' 구분 없음). 마켓은 국가에서 매핑되는 콘텐츠 격리 단위이며 언어와 무관. 전체 정의는 가입·온보딩 & 글로벌 토대 PRD.
- 노출 대상 마켓: 어떤 큐레이션 설정·공지·팝업·푸시가 노출·발송될 마켓의 집합(여러 개 지정 가능).
- 마켓 대표 타임존: 마켓마다 하나 정한 대표 시간대(정의는 가입·온보딩 & 글로벌 토대 PRD). 팝업·배너·푸시의 "공통 시간"을 각 마켓 로컬 시각으로 바꾸는 데 쓴다.
- 되돌리기 비용 등급(R): R1=쉬움(노출·화면 조정) · R2=중간(데이터 구조 변경·기존 데이터 채우기) · R3=비쌈(데이터 재이전).
- 표시 약속:
검토 필요=아직 정해지지 않음(§7) ·후속=출시 후 디테일 패스.
Reversal Risk Summary
| 레이어 | R등급 | 점검 초점 |
|---|---|---|
| 정책 / 규칙 | R1 | 어드민 권한은 1차 단일 유지(마켓별 권한 2차) → 정책 가벼움 |
| 데이터 / 백엔드 | R2 | 큐레이션 설정·공지·팝업·푸시에 노출 대상 마켓 항목 추가 + 기존 데이터 채우기 |
| 유저 대면 화면 | R1 | 노출·발송은 규칙만 바뀜, 신규 유저 화면 없음 |
| 문구 / 시각 표현 | R1 | 공지·차단 안내 문구는 언어별 리소스(UI 현지화)로 조정 쉬움 |
1. 목표 및 배경
1.1 목표
- 프론티아 글로벌 확장을 운영이 지탱하도록, 운영자가 각 마켓의 홈·공지·팝업·푸시를 마켓별로 나눠 운영하고, 유저·콘텐츠를 마켓 단위로 관리·모더레이션하게 한다. 각 마켓에 그 마켓에 맞는 콘텐츠·공지가 노출되고, 마켓별 콘텐츠 부족을 운영으로 빠르게 메운다.
1.2 배경 (현황)
- 프론티아 어드민은 역할 구분 없는 단일 권한이고, 홈 큐레이션·공지·팝업·푸시가 전부 하나의 한국 풀 기준으로 동작한다(마켓 구분 0건).
- 그대로 글로벌에 열면 마켓이 섞여, 일본 공지가 대만 유저에게 가거나 한국 콘텐츠가 NA 홈에 뜬다.
1.3 접근
- 데이터는 통합 관리하되 마켓 태깅으로 구분한다 — 마켓별로 페이지를 통째로 나누지 않고, 각 설정·유저에 마켓을 붙여 필터·노출을 가른다.
- 어드민 권한은 1차 단일 유지(운영진이 전부 내부 한국팀). 도구만 마켓을 구분한다. 마켓별 권한 제한은 지역 운영팀이 생길 때 2차.
- 팝업·배너·푸시의 시간은 마켓 대표 타임존으로 각 나라 로컬 시각에 맞춘다.
2. 타깃 사용자
2.1 주요 사용자
- 어드민 운영자(내부 한국팀): 전 마켓의 큐레이션·공지·팝업·푸시·유저 관리·모더레이션을 운영. 도구가 마켓별 필터·노출 대상 마켓 지정을 제공한다.
2.2 핵심 시나리오
- 운영자가 JP 마켓을 골라 JP 홈 큐레이션 섹션을 구성하고, JP 전용 공지(일본어)를 예약 발행한다 — 다른 마켓과 섞이지 않는다.
- 운영자가 팝업을 "오전 9시" + 타깃 NA·JP로 설정하면 → NA 유저는 NA 오전 9시에, JP 유저는 일본 오전 9시에 각각 뜬다.
- 운영자가 어드민에서 댓글을 큐레이션할 때, 연결된 에피소드의 마켓 기준으로 마켓별 댓글만 골라 본다.
3. 핵심 기능 요구사항
3.1 어드민 권한 (1차 단일 유지)
- 1차는 현행 단일 어드민을 유지한다 — 전 운영자가 전 마켓을 관리한다.
- 어드민 도구는 마켓을 구분(마켓별 필터·노출 대상 마켓 설정)하지만 권한을 마켓별로 제한하지 않는다(특정 어드민을 특정 마켓에 묶지 않음).
- 마켓별 권한 제한·세부 역할은 2차.
3.2 화면 관리 — 마켓별 탭
- 동작: 화면 편집기 최상단에 마켓 선택 탭을 둔다. 운영자가 마켓을 고르면 그 마켓의 화면 구성(홈 탭/섹션/메인 배너/띠 배너/홈 장르칩/큐레이션 섹션/오가닉 셀렉트/댓글카드 큐레이션/세그먼트 큐레이션/로그인 화면)만 보고 편집한다.
- 적용 화면: 홈 화면 · 로그인 화면 · 큐레이션 라이브러리 · 오가닉 셀렉트.
- 비즈니스 룰:
- 화면 설정 단위에 노출 대상 마켓(최소 1개)을 붙인다 — 단, 에피소드에 연결된 단위(댓글카드·오가닉 셀렉트)는 연결 에피소드의 마켓을 물려받아 별도 지정하지 않고, 나머지 독립 단위(배너·섹션·세그먼트·홈 탭 등)는 노출 대상 마켓을 명시한다. 마켓별 데이터 저장 방식은 백엔드 설계 소관.
- 홈 화면은 기존 추천/랭킹/신작 탭 구조를 그대로 두고, 그 위에 마켓 탭이 얹힌다.
- 마켓별 빈 노출 영역은 운영으로 채운다.
- 모든 운영자가 전 마켓 화면을 만들고/보고/고친다(마켓 탭은 노출 스코프 구분이지 권한 제한 아님).
3.3 유저 관리 · 환불 어뷰저 (마켓/국가/언어 조회·수정)
- 동작: 유저 목록·상세에 각 유저의 마켓·유저 국가·언어를 표시하고 CS/어드민이 수정한다. 환불 어뷰저 목록에도 동일하게 표시한다.
- 비즈니스 룰:
- 유저는 단일 풀로 관리하며 마켓별 페이지로 나누지 않는다.
- 유저 마켓 모델·판정·셀프 변경 불가·변경 이력 로깅은 토대 PRD 소관. 본 PRD는 어드민 도구에 이 정보가 표시·수정 가능해야 한다는 노출 요구만 정의한다.
3.4 공지 · 팝업 (마켓별 + 언어별 + 타임존)
- 공지: 만들기/고치기/지우기 시 노출 대상 마켓 + 언어를 지정한다. 유저는 자기 마켓·언어 공지만 받는다(소비는 탐색·플레이). 예약 발행·상단 고정·분류는 기존 유지.
- 팝업: 노출 대상 마켓을 기존 타게팅(플랫폼·성별·나이·가입일·화풍) 위에 필터형으로 더한다. 마켓을 지정하면 그 마켓 유저에게만 노출한다.
- 팝업·배너 노출/만료 시간 (타임존):
- 운영자는 공통 시간 하나(예: 오전 9시)와 타깃 마켓을 입력한다.
- 시스템은 각 타깃 마켓의 마켓 대표 타임존으로 그 시간을 해석해, 마켓마다 그 나라 로컬 시각에 노출·만료되게 한다(내부적으로 각 마켓의 시각을 계산해 저장). 여러 마켓을 타깃하면 마켓마다 각자의 로컬 시각에 뜬다.
- 권한: 모든 운영자가 전 마켓 공지·팝업을 작성한다(마켓은 노출 대상 지정이지 권한 제한 아님).
3.5 푸시 관리 (마켓 · 언어 타게팅)
- 전체 푸시: 발송 대상에 마켓 선택 필드를 추가해 특정 마켓 유저에게만 보낸다. 문구는 유저 언어에 맞춰 발송한다(유저 언어 정보를 가져와 언어별 문구로).
- 전체 푸시 시간: 팝업과 동일 — 공통 시간 + 타깃 마켓 → 마켓 대표 타임존으로 각 나라 로컬 시각에 발송.
- 대량 푸시: CSV로 유저를 직접 지정하므로 마켓과 무관하다.
- 자동 푸시(활동 기반): 팔로우 디렉터 신작·댓글·좋아요 등. 디렉터는 본인 마켓에만 발행하고 프로필·콘텐츠가 마켓 하드 게이트라 팔로워도 같은 마켓이므로, 활동 알림은 자동으로 마켓 정합이라 별도 필터가 필요 없다.
3.6 콘텐츠 모더레이션 (에피소드 차단 · 댓글 큐레이션)
- 에피소드 차단: 에피소드를 마켓별로 차단할 수 있다. 마켓별 페이지를 나누지 않고, 에피소드에 붙은 마켓 정보로 어느 마켓 콘텐츠인지 확인해 차단한다(마켓 정보만 있으면 되고 별도 분리 불필요).
- 댓글 큐레이션: 댓글을 어드민에서 큐레이션할 때 연결된 에피소드의 마켓을 기준으로 마켓별로 골라낼 수 있어야 한다. 댓글 데이터가 에피소드 마켓을 참조하도록 한다(DB에는 마켓이 섞여 저장되므로, 에피소드 마켓으로 발라내는 조회가 필요).
- 어드민 전 마켓 접근: 어드민 모더레이션은 소비 경로가 아니므로 마켓 하드 게이트의 예외다 — 운영자는 전 마켓 콘텐츠·댓글을 조회·처분한다.
3.7 Scope
포함 (In scope)
- 어드민 권한 1차 단일 유지(도구만 마켓 구분).
- 화면 관리(홈·로그인·큐레이션 라이브러리·오가닉 셀렉트) 마켓별 탭 + 설정 단위 노출 대상 마켓.
- 유저 관리·환불 어뷰저에 마켓/국가/언어 조회·수정 노출.
- 공지 마켓별+언어별, 팝업 마켓 필터 + 팝업·배너·푸시 시간 마켓 대표 타임존 처리.
- 전체 푸시 마켓 선택 + 유저 언어 발송, 자동 푸시 마켓 교차 차단.
- 에피소드 마켓별 차단, 댓글 큐레이션 에피소드 마켓 기준 필터.
제외 (Out of scope) — 인접 문서 경계
| 항목 | 소관 |
|---|---|
| 마켓 필터·마켓 대표 타임존 정의·유저 마켓 모델·변경 규칙 | 가입·온보딩 & 글로벌 토대 |
| 유저가 보는 탐색·노출·알림 수신 | 탐색·플레이 |
| 에피소드·소울 발행·프롬프트 관리 어드민 | 창작·발행 |
| 결제·환불·정산 어드민 | 결제·정산 |
| 공지·팝업·차단 안내 문구 번역 | UI 현지화 |
| 마켓 전체 켜기/끄기·전체 차단 스위치, 마켓별 어드민 권한 제한·세부 역할 | 2차/미도입 |
4. 에러 처리 및 예외 상황
| 상황 | 처리 방향 |
|---|---|
| 마켓별 화면 빈 노출 영역 | 운영으로 채움(교차 노출 금지) |
| 팝업·푸시 여러 마켓 타깃 | 마켓마다 각자 대표 타임존 로컬 시각에 노출/발송 |
| 자동 푸시 대상이 신작 에피소드 마켓과 불일치 | 발송 제외(못 여는 콘텐츠 알림 방지) |
| 댓글에 에피소드 마켓 참조 없음 | 에피소드 마켓으로 조인해 큐레이션 필터 제공(마켓 참조 확보) |
| 어드민이 다른 마켓 콘텐츠 조회 | 허용(모더레이션은 하드 게이트 예외) |
5. 데이터 분석
- 큐레이션·공지·팝업·푸시 이벤트에 노출 대상 마켓/언어 속성을 추가한다. 유저 공통 속성(
user_market·user_language)은 토대 PRD 규칙을 따른다. 후속: event-docs.frontia.dev에서 어드민·알림 기존 이벤트명·그룹 확인 후 속성 추가 대상 확정.
6. Ubiquitous Language
마켓·마켓 대표 타임존 등 토대 용어는 토대 PRD 용어표가 기준. 여기선 이 문서 고유 항목만.
| Term | Korean | Definition | Do Not Confuse With |
|---|---|---|---|
| 노출 대상 마켓 | 노출 대상 마켓 | 큐레이션 설정·공지·팝업·푸시가 노출·발송될 마켓 집합(복수). 설정·공지 쪽 값 | 유저 마켓(유저 쪽 값) / 에피소드 마켓(콘텐츠 귀속, 한 개) |
7. 검토 필요 (미결정 항목)
열린 결정 없음. 큐레이션 단위별 마켓 적용은 §3.2에서 확정(에피소드 연결 단위=에피소드 마켓 상속, 독립 단위=노출 대상 마켓 명시). 마켓 대표 타임존(NA 포함) 선택은 가입·온보딩 & 글로벌 토대 PRD 소관.
외부 grounding 필요 (구현 시 코드/데이터에서 확인)
- 댓글 데이터에 에피소드 마켓 참조가 있는지(없으면 조인 경로 확인).
- event-docs 어드민·알림 기존 이벤트 목록.
부록: 메타 정보
Required artifacts
- Spec — N/A. 기존 어드민 위에 마켓 항목·필터를 얹는 것이라 백엔드가 §3 요구사항 보고 직접 구현.
- Design — 대부분 N/A(어드민 화면은 백엔드 직접 구현). 유저 대면 신규 화면 없음.
- Migration plan — 본문 §3에 포함(노출 대상 마켓·공지 마켓/언어·팝업 시간 기존 데이터 채우기). 별도 파일 아님.
Size & Risks
- Size: L / Confidence: medium — 영향 화면 다수(큐레이션·공지·팝업·푸시·유저관리·모더레이션). 화면당 난도는 낮으나 빠짐없이 마켓 항목·필터를 적용하는 범위가 관리 포인트.
- 위험: ①마켓 필터 누락 → 잘못된 노출/발송(대응: 화면 체크리스트) ②팝업·푸시 타임존 계산 오류로 엉뚱한 시각 발송(대응: 마켓 대표 타임존 단일 로직).
- 의존: 가입·온보딩 & 글로벌 토대(마켓 모델·대표 타임존·마켓 필터, 선행). 창작·발행(에피소드 마켓). UI 현지화(공지·안내 문구).
References
- 위키 근거(As-is): 어드민이 역할 구분 없는 단일 권한, 탐색·발견·알림이 하나의 풀(마켓 구분 0) — frontia-wiki admin-ops/discovery/notification capabilities.
- 결정 로그 원문: CLAUDE.md §8.