LivePack V4 정책서
2026-09-02 기준

정책 ↔ 구현 대응표

정책이 코드 어디에 반영돼 있는지의 색인이다. 정책을 바꾸면 여기부터 확인한다.

정책 구현 위치
§3, §4 채널 타입·IVS 타입 비노출 app/utils/channelSpec.ts CHANNEL_SPECS
§4.1 일반 채널 기본 선택 channelSpec.ts DEFAULT_CHANNEL_TYPE
§4.3 권장 송출 사양 channelSpec.ts RECOMMENDED_INGEST
§9 썸네일 사용 여부 · 간격 1~10초(기본 2초) · 채널 소관 channelSpec.ts THUMBNAIL_INTERVAL_*, types Channel.thumbnailEnabled/thumbnailIntervalSec
§7 프리뷰 이미지 · 기본 이미지 channelSpec.ts BROADCAST_IMAGE_*/BROADCAST_DEFAULT_PREVIEW, public/images/broadcast-default-preview.jpg, types BroadcastInput
§7 방송 카드 그리드 · 라디오 선택 app/pages/[account]/channels/[id]/broadcasts.vue .bc-card (role="radio")
§7 방송별 최근 방송일·총 횟수 types Broadcast.lastSessionAt/sessionCount (세션 이력에서 집계)
§15 Trial 한도 / §16 표준 한도 channelSpec.ts PLAN_LIMITS
§15 Trial·Enterprise 우선 운영 app/types/index.ts PlanCode, app/utils/mockData.ts MOCK_PLAN_CODE
§19-5 / §16.1 리전 할당량 70~80% 경고 (콘솔 코드 없음 — 운영이 지켜보는 값이라 화면에 띄우지 않는다)
§19-12 48시간 연속 방송 channelSpec.ts MAX_CONTINUOUS_BROADCAST_SEC
§19-13 30초 재연결 대기 channelSpec.ts RECONNECT_GRACE_SEC
§6, §7 채널/방송/방송 세션 3계층 app/types/index.ts Channel / Broadcast / BroadcastSession, LNB 메뉴 구성
§7.1 기본 방송 자동 생성·적용 중 1개 app/utils/mockData.ts makeDefaultBroadcast, app/stores/channels.ts
§19-14 시청자 지표 4종(V3 동일) app/types/index.ts BroadcastSession viewers/peakViewers/uniqueViewers/peakUniqueViewers
§19-14 조건 선택 3단계(검색+페이징) · CSV 는 표 위 app/components/common/FilterDropdown.vue, app/pages/[account]/analytics.vue .analytics-filter / .csv-btn
§19-14 세션 구간별 지표(1/10/60/1440분) · 표 아래 지표 설명 types SessionIntervalPoint/SessionIntervalUnit, mockData.ts makeSessionIntervals, analytics.vue intervalRows/intervalNotes, livepack.css .metric-note
§19-14 조회 기간 1년 / 최근 3년 channelSpec.ts ANALYTICS_MAX_RANGE_YEARS/ANALYTICS_MAX_AGE_YEARS/checkPeriod, PeriodPicker.vue, analytics.vue·usage.vue appliedFrom/appliedTo
§19-14 표 위 차트(막대/꺾은선) app/components/common/SeriesChart.vue, analytics.vue channelChart
§22 계정 메뉴 글자 크기 · 홈페이지 이동 AppHeader.vue fontScalePct / HOMEPAGE_URL
§22 상담(채널톡) utils/channelTalk.ts, plugins/channel-talk.client.ts, AppHeader.vue openChannelTalk, nuxt.config.ts channelTalkPluginKey
§23.4 적용 기능은 글자로 · 켠 것만 ChannelCard.vue .channel-card__tag, usage.vue .opt-tag/optionText, types SessionAppliedOptions.thumbnailEnabled
§9 라이브 썸네일이 없으면 방송 프리뷰 이미지 LiveThumbnail.vue poster
§19-14 드릴다운·선택 세션을 URL 에 analytics.vue queryId/범위 watch, sessions.vue·channels/[id]/sessions.vue restorePicked
§5 채널 ID 노출 ChannelCard.vue .channel-card__id, channels/index.vue 채널 ID 열, ChannelDetailHeader.vue copyId
§14 채팅 로그 (상태·내려받기) types ChatLogInfo/BroadcastSession.chatLog, mockData.ts makeChatLog, SessionTable.vue 채팅 로그 열, SessionHealthPanel.vue artifacts
§23.4 드릴다운 경로 바 위치 · 한 줄 app/components/common/DrillBreadcrumb.vue, analytics.vue pathCrumbs/goPath
§19-14 조회/초기화 (즉시 조회하지 않음) analytics.vue draftChannel/runQuery/resetFilters/filterDirty, usage.vue 같은 구조, PeriodPicker.vue v-model:invalid
§19-14 더보기 · 세션 요약 접기 useTableSort.ts visible/showMore, livepack.css .table-more/.collapse-head
§9 라이브 모니터 갱신 5초 고정 channelSpec.ts MONITOR_REFRESH_SEC
§7.3 세션 적용값 스냅샷 app/types/index.ts SessionAppliedOptions
§19-18 사용량 분석 app/pages/[account]/usage.vue, mockData.ts getStorageUsage/getDailyStorage/getDailyUsage
§19-18 스토리지 추이·증감·피크 types DailyStorageRow, usage.vue storageChart/storagePeak/.delta--up·.delta--down
§19-18 피크 대역폭(bps) types DailyUsageRow.peakBps, useFormat.ts bps(), usage.vue usageSeries/peakBpsMax
§19-18 이중 축 차트(막대+선) SeriesChart.vue ChartSeries.axis/kind, formatRight, yRight/yTicksRight
§19-18 표는 수집 단위 · 차트는 선택 단위 useFormat.ts BYTE_UNITS/bytesIn/bpsIn, SeriesChart.vue unit, usage.vue chartUnit, livepack.css .unit-picker
§19-18 날짜 → 시간대(트래픽 전용) types HourlyUsageRow, mockData.ts getHourlyUsage, usage.vue hourlyChart/exportHourlyCsv
§19-18 빈 날짜 0 채움 mockData.ts getDailyUsage/getDailyStorage 의 날짜 선채움, usage.vue 0건 행 드릴 잠금
§22.1 관리자 등급·권한 app/composables/usePermission.ts ADMIN_LEVEL, app/pages/[account]/account/admins.vue
§22.1 등급별 메뉴 접근 usePermission.ts canAccessAccountMenu, app/middleware/account-menu.global.ts, AppSidebar.vue
§22.2 알림 유형 app/types/index.ts NotificationTypeKey, app/pages/[account]/account/notifications.vue
§22.3 IP 접속제한(콘솔/API 분리) app/types/index.ts IpPolicyScope, app/composables/useIpRange.ts, account/ip-restriction.vue · account/developer-api.vue
§22.4 콘솔 로그인 세션 타임아웃 app/types/index.ts ConsoleSessionPolicy, app/pages/[account]/account/session-policy.vue
§14 라이브 채팅 types ChatSettings/ChatMessage/ChatBan, channels/[id]/chat.vue, useApi.ts 채팅 블록
§22.5 플레이어 app/types/index.ts LivePlayer/LivePlayerOptions, app/pages/[account]/players/, app/components/player/
§22.6 API 키 발급·조회 app/composables/useApi.ts getApiKey/createApiKey, app/pages/[account]/account/developer-api.vue
§23.1 카피라이트 위치·문구 app/components/common/AppFooter.vue, app/layouts/default.vue, livepack.css .page-scroll
§23.1 전체 폭 바(축·탭·필터바·표·하단 바) app/assets/css/livepack.css .page-body:not(.page-body--flush) > …
§23.4 하단 바는 화면 아래 끝 app/assets/css/livepack.css .page-body--stack > .batch-bar(margin-top: auto + 아래 패딩 상쇄)
§23.2 축 ↔ 하위 축 계층 표현 livepack.css .stats-nav / .subtab, app/pages/[account]/analytics.vue · usage.vue
§23.3 LNB 순서·하위 접기 app/components/common/AppSidebar.vue sections / openSubs
§23.4 건수 표시·단위 locales/*.json common.totalItems(개) / common.totalCount(건)
§23.4 선택 삭제 · 하단 바 app/components/common/AppPagination.vue, app/pages/[account]/players/index.vue
§23.4 표 정렬 · 페이징 app/composables/useTableSort.ts, app/components/common/SortableTh.vue
§23.4 표 위 도구 줄 · 순번 열 · 카드 폭 app/components/common/TableToolbar.vue, livepack.css .stats-toolbar/.table__no/.card--bleed
§12 재생 정보 · QR channels/[id]/index.vue, app/components/common/QrCode.vue, app/utils/qr.ts
§12 재생 접근 제한 3방식 types RestrictMode/ChannelSecurity, channels/[id]/playback.vue
§2.2 인프라 자동 판정 types ChannelInfra, channelSpec.ts resolveInfra/infraWouldChange, mockData.ts updateChannel(재발급), channels/[id]/settings.vue·chat.vue(확인 문구)
§7.3 자원 설정은 채널 · 콘텐츠는 방송 types Channel.chatEnabled/recordingEnabled/thumbnailEnabled/thumbnailIntervalSec, Broadcast(제목·설명·이미지만), ChannelCreateDialog.vue whereHints
§2.1 운영방식(표준/전문) 표준 운영방식만 구현. 프리롤·채널 중지/비활성·대체 이미지는 전문 운영방식으로 미룸
§8 지연 모드(기본 일반) types LatencyMode, channels/[id]/settings.vue
§13 녹화 파일 형식(MP4) mockData.ts makeRecording(.mp4), SessionHealthPanel.vue artifacts(MP4 · 용량), recording.retentionNotice
§16 동시 LIVE 는 플랜 화면에 적지 않음 AppSidebar.vue usageRows, plan.vue
§13 녹화 보관 30일 · 직접 삭제 channelSpec.ts RECORDING_RETENTION_DAYS, types RecordingStatus, useApi.ts deleteRecording, recordings.vue
§14 세션 패널에서 산출물 삭제 useApi.ts deleteChatLog, SessionHealthPanel.vue removeArtifact/changed emit, sessions.vue·channels/[id]/sessions.vue onSessionChanged
§13 녹화 실패·재시도 types RecordingStatus(failed/unrecoverablelastTriedAt, useApi.ts retryRecording, recordings.vue retryRecording/hasFailed
§22.1 액션 권한 usePermission.ts canManageChannel/canRotateStreamKey/canDeleteArtifact/canDeletePlayer, common.noPermission
§13 녹화 메뉴 = 만료 관리 화면 recordings.vue urgent/keptBytes/channelFilter/sortByExpiry, 기본 정렬 expiresAt asc, .rec-urgent-box
§7.5 세션 제목 postfix useFormat.ts sessionTitle, SessionTable.vue, recordings.vue, usage.vue, analytics.vue
§19-20 방송 이력 조회 기간 channelSpec.ts SESSION_DEFAULT_RANGE_DAYS, types SessionFilter, sessions.vue (특정기간/최근/현재)
§19-19 라이브 상태 types IngestSignal/SessionHealth/LiveEvent, LiveHealth.vue, SessionHealthPanel.vue, useBitrateChart.ts
§12 디바이스별 배포 설정 types DeliveryPreference, channelSpec.ts RENDITIONS, channels/[id]/playback.vue
브랜드 로고 · 파비콘 public/images/livepack-logo.png/livepack-mark.png, public/favicon.png, AppSidebar.vue, login.vue
§23.5 빈 상태 각 목록·집계 화면의 .empty-state
§23.6 대시보드 시청 추이 app/pages/[account]/dashboard.vue (세션 이력에서 집계)
§23.7 상세 열 폭 드래그 app/composables/useResizableAside.ts, livepack.css .detail-layout__grip
§23.4 방송 이력 기간 검색 app/pages/[account]/sessions.vue dateFrom/dateTo
§7 방송 그리드/목록 전환 app/stores/ui.ts broadcastView/setBroadcastView
§23.7 상세 패널·하단 액션 app/pages/[account]/players/index.vue .player-panel__footer
§23.8 설정 아코디언 · 하단 저장 바 livepack.css .pc-acc* / .form-footer, app/pages/[account]/players/create.vue