HQ Surface Matrix — 본사 모드(HQ_MANAGER) 화면별 구현 현황
기획 원문 docs/planning/11-prd-client-admin-mode.md(Page 1~22) 대비 현재 구현 현황 추적표.
코드 현황 기준이며, 신규 기능 정의가 아니라 갭 가시화용이다. 본사 모드는 apps/space
(space.linkmusic.io)의 /admin/* 라우트로 구현된다(점장 모드와 한 앱).
Overview
본사(HQ_MANAGER) PRD 는 22 페이지(Page 1~21 + Page 22 LLM 자동멘트 v1 신규)다. 현재 구현은
읽기 영역(대시보드·산하 매장 조회·플레이리스트 조회·라이브러리 목록+상세 조회) + TTS 안내방송
콘텐츠 생성·송출에서 점차 확장 중이고, 나머지는 미구현(HQSidebar enabled: false 일부)이다. 이
페이지가 PRD ↔ 시안 ↔ 구현 ↔ 후속 게이트의 대응을 한눈에 추적한다.
사이드바 현황:
HQSidebar(10 항목, 시안hq-shared.jsx §HQSidebar) 중 대시보드·안내방송· 플레이리스트·매장 4항목만 enabled, CM송·라이브러리·구독결제·고객지원·LLM 자동멘트·설정 6항목은enabled: false(“준비 중”)다. 코드:apps/space/src/components/hq-shell/hq-sidebar.tsx.
핵심 경계 — TTS 안내방송
TTS 안내방송 = 콘텐츠 생성·수정·재생·삭제 + 송출(전체 매장 ALL)까지 구현(#061 생성·#062 수정· #063 톤 프리셋·송출 슬라이스,
/admin/announcements). 행 [송출] → 산하 매장 전체에 fan-out → 점장 player 가 곡 끝에 삽입 재생(dead-end 폐쇄). 스케줄·매장 개별선택(STORES)·미리듣기 게이트·더킹·우선순위·캘린더는 미구현(후속) — 시안 (hq-broadcast-new.jsx스텝퍼·hq-schedule.jsx캘린더)만 존재. 즉 “안내방송을 만들고 전체 매장에 보낼 수 있으며, 점장 화면에서 실제로 들린다.” 상세는 HQ Mode TTS 안내방송 참조.
표면 매트릭스
구현 상태 범례: 구현 = 동작하는 화면 / 조회만 = read-only(편집 불가) / stub = 사이드바 disabled 또는 placeholder / 없음 = 라우트·화면 자체 미존재.
| 화면 / 플로우 | PRD 근거 | 시안(hq-*.jsx) | 구현 상태 | SPEC / 후속 게이트 |
|---|---|---|---|---|
| 대시보드 | Page 1 | hq-dashboard.jsx | 구현 — 산하 매장 집계 실데이터 | #050 |
| 안내방송 목록 | Page 2 | (목록은 시안 별도 없음, ListToolbar 관용구) | 구현 — 목록·검색·재생·수정·삭제 | #061/#062/#063 |
| 새 안내방송 등록(생성) | Page 3 | hq-broadcast-new.jsx §Step1Content | 구현(콘텐츠 합성만) — 송출/대상/미리듣기 게이트 단계는 제외 | #061 / 송출=후속 게이트 |
| 안내방송 상세·편집 | Page 4 | hq-broadcast-new.jsx(편집 겸용) | 구현 — 수정(조건부 재합성)·삭제 | #062 |
| 안내방송 송출(전체 매장 ALL) | Page 2~4 인터랙션 | (확인 다이얼로그 — 삭제 idiom 미러) | 구현(첫 슬라이스) — 행 [송출]→전체 매장 fan-out→점장 삽입 재생 | 송출 슬라이스 |
| 안내방송 송출 고도화(매장선택·예약·미리듣기) | Page 2~4 인터랙션 | hq-broadcast-new.jsx §Step2~ | 없음 — STORES 개별선택·스케줄·미리듣기 게이트·더킹·우선순위 endpoint 없음 | 후속 게이트(20-policy §3·4) |
| 방송 스케줄(캘린더) | Page 5 | hq-schedule.jsx | 없음 — 분 슬롯·캘린더·충돌검증 BE 없음 | 후속 게이트 |
| CM송 목록 | Page 6 | (시안 없음) | stub — HQSidebar CM송 disabled | 후속 도메인 |
| CM송 업로드 | Page 7 | (시안 없음) | 없음 — BE·라우트 없음 | 후속 도메인 |
| CM송 빈도 설정 | Page 8 | (시안 없음) | 없음 — BE·라우트 없음 | 후속 도메인 |
| 라이브러리 목록 조회 | Page 9 | (시안 없음, ListToolbar 관용구) | 조회만 — /admin/libraries 목록·검색(q)·타입 필터(AI/TRUST)·페이지네이션, 행=이름 Link·타입 배지·음원 수·PL 사용 수·수정 시각 | #080 / 편집=운영사 전용 |
| 라이브러리 상세 조회 | Page 9 | (시안 없음, hq-playlist 상세 idiom 미러) | 조회만 — /admin/libraries/[id] 메타 카드(음원 수·PL 사용·수정일)·트랙 테이블(제목·길이 mm:ss·추가일)·페이지네이션. 메타 server fetch(404→notFound), 트랙 client query. read-only(음원 추가/제거·편집 없음) | #107(#080 §F1 마감) / 음원 할당=운영사 전용 |
| 플레이리스트 조회 | Page 10 | hq-playlist.jsx | 조회만 — read-only, 기본 PL 배지(#058)·상태 파생 배지(#060) | #057 / 편집=운영사 전용(본사 미편집) |
| 플레이리스트 편집 | Page 10 | hq-playlist.jsx | 없음 — 본사는 조회만, 편집은 운영사(apps/admin) | 비대상(정책상 운영사 편집) |
| 매장 목록 | Page 11 | hq-stores.jsx | 조회만 — 산하 매장 목록·검색·페이지네이션 | #051 |
| 매장 상세 | Page 14 | hq-stores.jsx | 없음 — 본사 매장 상세 라우트 없음(운영사 상세만) | 후속 |
| 신규 매장 등록(단일) | Page 12 | (시안 부재 — atom-grounded) | 구현 — /admin/stores/new 단일 단계 폼(5 필드) createHqStore | #106(#084 F2 마감) |
| 매장 CSV 일괄 등록 | Page 13 | (시안 부재 — atom-grounded, design-debt §2) | 구현(MVP) — /admin/stores/bulk 파일 업로드 + 부분 실패 결과 리포트 bulkCreateHqStores(multipart, 5필드). 점장 발급·영업시간·2단계 미리보기는 후속 | #111(#084 F3 마감) |
| 구독/결제·이력·방식변경 | Page 15~17 | (시안 없음) | stub — HQSidebar 구독·결제 disabled | 후속 도메인(토스/팝빌 외부연동) |
| 고객지원 목록·작성·상세·댓글 | Page 18~20 | (시안 없음, ListToolbar+운영자 /tickets idiom 합성) | 구현 — /admin/support 목록·검색·필터·작성·상세·댓글(read+create+comment) | #086 / #101(audit) |
| 고객지원 상태/우선순위 변경 | (상세 인터랙션) | (운영자 tickets/[id] ActionCard idiom 미러) | 구현 — F1 상태(제한적: RESOLVED→CLOSED·IN_PROGRESS, CLOSED→IN_PROGRESS; OPEN/IN_PROGRESS 는 운영자 전담) · F2 우선순위(LOW/NORMAL/HIGH, URGENT 제외) | #108(#086 F1·F2 마감) |
| 계정 설정 | Page 21 | (시안 없음) | stub — HQSidebar 설정 disabled | 후속 |
| LLM 자동멘트 | Page 22 (v1 신규) | (시안 없음) | stub — HQSidebar LLM 자동멘트 disabled, BE 없음 | 후속 게이트(가드레일·외부 LLM) |
| 긴급 즉시 송출 | (송출 인터랙션) | (시안 없음) | 없음 — 송출 백본 미존재 | 송출 후속 게이트 |
| 본인 프로필(getHqMe) | (셸 공통) | hq-shared.jsx | 구현 — 임퍼소네이션 배너·본인 프로필 | #050 |
| 온보딩 — 비밀번호 변경 강제 | (계정 공통) | ops-change-password.jsx (본사·점장 공용) | 구현 — /onboarding/change-password 본사·점장 공용 관문(login + /admin layout 가드가 me.passwordMustChange 로 강제). 변경 완료 후 /admin | #050 / 자기-변경·reset 후속 |
정리 — 구현 영역 4 + 1
현재 본사 모드에서 실제 동작하는 표면은 다음뿐이다.
- 대시보드(#050) — 산하 매장 집계 실데이터.
- 산하 매장 조회(#051) — 목록·검색·페이지네이션(read-only).
- 플레이리스트 조회(#057) — read-only, 기본 PL·상태 파생 배지.
- TTS 안내방송 콘텐츠(#061/#062/#063) — 생성·수정·재생·삭제(송출·스케줄 제외).
(+ 본인 프로필·임퍼소네이션 배너 = 셸 공통)
나머지 PRD 17개 영역(CM송 3·매장 등록/상세/CSV·결제 3·CS 3·설정·LLM·송출·스케줄)은 미구현이며, 대부분 사이드바 disabled 또는 라우트 부재 상태다. 송출·스케줄·CM송은 방송 송출 백본(매장 큐 삽입· 분 슬롯·더킹·미리듣기 게이트) 도착에, 결제·CS·LLM 은 각 외부연동/도메인 도착에 게이트돼 있다.
References
- 기획 원문
docs/planning/11-prd-client-admin-mode.md(Page 1~22) - 시안: workspace parent dir
design_handoff_linkmusic/design/hq-shared.jsx·screens/hq-dashboard.jsx·hq-broadcast-new.jsx·hq-schedule.jsx·hq-playlist.jsx·hq-stores.jsx - 코드:
apps/space/src/components/hq-shell/hq-sidebar.tsx(사이드바 enabled 현황) ·apps/space/src/app/admin/*(대시보드·매장·플레이리스트·안내방송) - 구현 상세: HQ Mode 대시보드·산하 매장 · HQ Mode 플레이리스트 조회 · HQ Mode TTS 안내방송
- SPEC #050(대시보드)·#051(매장)·#057(플레이리스트 조회)·#061/#062/#063(TTS 안내방송)