FeaturesHQ (본사)HQ Surface Matrix (본사 표면 매트릭스)

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 신규)다. 현재 구현은 대시보드 · 안내방송(생성·수정·송출·예약/반복·캘린더) · CM송 관리 · 라이브러리/플레이리스트 조회 · 산하 매장(목록·상세·등록·CSV 일괄·인라인 편집) · 고객지원 · 감사 · 계정 설정까지 확장됐고, 남은 미구현은 LLM 자동멘트(외부 LLM 게이트)와 범위 밖 구독/결제뿐이다. 이 페이지가 PRD ↔ 시안 ↔ 구현 ↔ 후속 게이트의 대응을 한눈에 추적한다.

사이드바 현황: HQSidebar 10 항목(시안 hq-shared.jsx §HQSidebar) 중 9 항목이 enabled (대시보드·안내방송·CM송·플레이리스트·라이브러리·매장·고객지원·감사·설정)이고, enabled: false (“준비 중”)는 LLM 자동멘트 1개뿐이다. 구독/결제 항목은 확정 스코프 제외라 사이드바에서 아예 제거됐다(감사 B3/B6 — 제외는 제거, 예정 미구현만 disabled). 코드: apps/space/src/components/hq-shell/hq-sidebar.tsx.

핵심 경계 — TTS 안내방송

TTS 안내방송 = 콘텐츠 생성·수정·재생·삭제 + 송출(전체 매장 ALL)까지 구현(#061 생성·#062 수정· #063 톤 프리셋·송출 슬라이스, /admin/announcements). 행 [송출] → 산하 매장 전체에 fan-out → 점장 player 가 음악을 멈추지 않고 더킹(음악 감쇠) + 오버레이로 동시재생(dead-end 폐쇄, SPEC #141). 매장 개별선택(STORES · #072)·지역 지정(REGION · #144 — 시/도 17종 select, 미선택 시 제출 disabled)· 미리듣기 게이트(#073)·예약/반복 예약·캘린더(#078·#083·#139)·더킹 (#141, 본사는 default 설정만 — 감쇠 자체는 점장 player)까지 구현됐다. 방송 우선순위 큐만 미구현(후속). 즉 “안내방송을 만들어 전체/지정 매장/지정 지역에 즉시 또는 예약 송출할 수 있으며, 점장 화면에서 음악 위에 겹쳐 실제로 들린다.” 상세는 HQ Mode TTS 안내방송 참조.

표면 매트릭스

구현 상태 범례: 구현 = 동작하는 화면 / 조회만 = read-only(편집 불가) / stub = 사이드바 disabled 또는 placeholder / 없음 = 라우트·화면 자체 미존재 / 범위 밖 = 확정 스코프에서 제외.

화면 / 플로우PRD 근거시안(hq-*.jsx)구현 상태SPEC / 후속 게이트
대시보드Page 1hq-dashboard.jsx구현 — 산하 매장 집계 실데이터#050
안내방송 목록Page 2(목록은 시안 별도 없음, ListToolbar 관용구)구현 — 목록·검색·재생·수정·삭제#061/#062/#063
새 안내방송 등록(생성)Page 3hq-broadcast-new.jsx §Step1Content구현(콘텐츠 합성만) — 대상 선택·미리듣기 게이트·송출은 목록 행의 별도 송출 다이얼로그가 담당(아래 2행)#061
안내방송 상세·편집Page 4hq-broadcast-new.jsx(편집 겸용)구현 — 수정(조건부 재합성)·삭제#062
안내방송 송출(전체 매장 ALL)Page 2~4 인터랙션(확인 다이얼로그 — 삭제 idiom 미러)구현 — 행 [송출]→전체 매장 fan-out→점장 player 가 음악 위에 동시재생(더킹)송출 슬라이스
안내방송 송출 고도화(매장선택·지역·예약·미리듣기)Page 2~4 인터랙션hq-broadcast-new.jsx §Step2~구현 — STORES 개별선택(#072)·REGION 지역 지정(#144)·미리듣기 게이트(#073)·예약/반복 예약·캘린더(#078·#083·#139)·더킹 default(#141)방송 우선순위 큐만 후속(20-policy §4)
방송 스케줄(캘린더)Page 5hq-schedule.jsx구현/admin/announcements/schedules 반복 예약 등록·목록·취소 + 타임테이블(시각×방송 그리드, 전체 ACTIVE 규칙 집계) + 월 캘린더 탭(getHqDispatchCalendar, 월 그리드 범위만 fetch)#078·#083·#139 / 5분 슬롯 충돌 UI 는 점장측(#109)만
CM송 목록Page 6(시안 없음 — 본사 hq-stores.jsx 테이블 idiom 미러)구현/admin/commercials 목록·검색·페이지네이션·상세(/[id] 편집·삭제)#093
CM송 업로드Page 7(시안 없음)구현(MVP)/admin/commercials/new 등록 폼(title·audioUrl·durationSeconds). 음원 파일 업로드 UI 는 미포함(공개 URL 직접 입력, SPEC #093 §D9)#093 / 업로드 흐름은 후속
CM송 빈도 설정Page 8(시안 없음)구현 — 본사 default 는 /admin/settings “CM송 사이클 빈도”(1~100, #095), 매장 override 는 /admin/stores/[id](#103). 재생은 점장 player 라운드로빈(#104)#095·#103·#104
라이브러리 목록 조회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 10hq-playlist.jsx조회만 — read-only, 기본 PL 배지(#058)·상태 파생 배지(#060)#057 / 편집=운영사 전용(본사 미편집)
플레이리스트 편집Page 10hq-playlist.jsx없음 — 본사는 조회만, 편집은 운영사(apps/admin)비대상(정책상 운영사 편집)
매장 목록Page 11hq-stores.jsx조회만 — 산하 매장 목록·검색·점장 계정 필터(#184 D8)·페이지네이션 + [등록]·[CSV 일괄] 진입. 상태 변경(정지·복구·폐점)·점장 계정 관리(정지/회수/비번 재설정)는 여전히 운영사 전용#051 · #184
매장 상세Page 14(시안 부재 — 운영사 /stores/[id] 5섹션 idiom 미러)구현/admin/stores/[id] 5섹션(개요·점장 정보·활성 PL·운영 상태·메타) + 매장 정보 인라인 편집(#105) + CM 사이클 빈도 override(#103) + 더킹 per-field override(#141) + [점장 발급] 사후 발급(#184 D4 — 미발급·회수 상태에서만, 폐점 제외)#084 F1 마감(#105)·#103·#141·#184 F5 발급 마감
신규 매장 등록(단일)Page 12(시안 부재 — atom-grounded)구현/admin/stores/new 단일 단계 폼(5 필드) createHqStore. #184 — managerEmail = 점장 로그인 ID 이며 매장 + 계정 한 트랜잭션(비우면 “점장 미정”). 201 응답이 envelope {store, managerAccount?} 로 변경#106(#084 F2 마감) · #184
매장 CSV 일괄 등록Page 13(시안 부재 — atom-grounded, design-debt §2)구현/admin/stores/bulk 파일 업로드 + 부분 실패 결과 리포트 bulkCreateHqStores(multipart, 5필드). #184 — “담당자이메일” 행은 점장 계정까지 발급(합계 managerAccountCreatedCount·setupEmailFailedCount 안내). 영업시간·2단계 미리보기는 후속#111(#084 F3 마감) · #184
구독/결제·이력·방식변경Page 15~17(시안 없음)범위 밖 — billing/PG 확정 스코프 제외라 HQSidebar 구독·결제 항목 제거(감사 B3/B6)후속 도메인(토스/팝빌 외부연동)
고객지원 목록·작성·상세·댓글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(시안 없음)구현/admin/settings 본사/본인 정보(읽기)·매니저 이름 편집·이메일 변경·비밀번호 변경·CM송 사이클 빈도(#095)·더킹 default(#141)#085·#095·#141
감사(송출 audit 조회)(PRD 외 — 운영 요구)hq-audit-page.jsx(design_8 §8E-⑤)구현/admin/audit 송출 audit 목록·필터(기간·actor·action·q)·CSV 내보내기·임퍼소네이션 행 강조#067·#069·#070 / #101(CS audit 합류)
LLM 자동멘트Page 22 (v1 신규)(시안 없음)stubHQSidebar 10 항목 중 유일한 enabled: false, BE 없음후속 게이트(가드레일·외부 LLM)
긴급 즉시 송출(송출 인터랙션)(시안 없음)구현(점장측) — 긴급 옵션은 점장 즉시방송(isEmergency, #082)이고 점장 player 가 진행 중인 일반 방송을 preempt 해 즉시 재생한다(#090). 본사 송출 다이얼로그에는 긴급 옵션이 없다(본사는 일반 송출만)#082·#090 / 본사측 긴급 토글·우선순위 큐는 후속
본인 프로필(getHqMe)(셸 공통)hq-shared.jsx구현 — 임퍼소네이션 배너·본인 프로필#050
온보딩 — 비밀번호 변경 강제(계정 공통)ops-change-password.jsx (본사·점장 공용)구현/onboarding/change-password 본사·점장 공용 관문(login + /admin layout 가드가 me.passwordMustChange 로 강제). 변경 완료 후 /admin#050 / 자기-변경·reset 후속

정리 — 남은 미구현

위 표 기준으로 본사 모드에서 아직 없는 표면은 다음뿐이다.

  1. LLM 자동멘트(Page 22) — HQSidebar 유일한 disabled. 외부 LLM 연동·가드레일 게이트.
  2. 구독/결제·이력·방식변경(Page 15~17) — 확정 스코프 범위 밖(billing/PG 제외). 사이드바 항목도 제거됐다.
  3. 송출 우선순위 큐(20-policy §4) — 동시 도착 방송의 6단계 우선순위 정책. 현재는 긴급 > 일반 안내방송 > CM 3단계만 점장 player 안에서 구현.
  4. 본사측 긴급 송출 토글 — 긴급은 점장 즉시방송(#082)에만 있다.
  5. CM송 음원 파일 업로드 UI — 현재는 공개 URL 직접 입력(#093 §D9).

그 외 PRD 영역(대시보드·안내방송 생성/수정/송출/예약/캘린더·CM송·라이브러리·플레이리스트 조회· 매장 목록/상세/등록/CSV·고객지원·감사·설정)은 전부 라이브다. 각 화면의 상세는 위 표의 SPEC 열과 References 링크를 따라간다.

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/*(대시보드·안내방송+schedules·commercials·libraries·playlists·stores· support·audit·settings)
  • 구현 상세: HQ Mode 대시보드·산하 매장 · HQ Mode 플레이리스트 조회 · HQ Mode TTS 안내방송 · HQ Mode CM송 관리 · HQ Mode 계정 설정 · HQ Mode 감사
  • SPEC #050(대시보드)·#051/#084/#105/#106/#111(매장)·#057(플레이리스트 조회)·#080/#107(라이브러리)· #061/#062/#063(TTS 안내방송)·#072/#073/#144(송출 대상·게이트)·#078/#083/#139(예약·캘린더)· #093/#095/#103/#104(CM송)·#086/#108(고객지원)·#067/#069/#070(감사)·#085/#141(설정·더킹)