feat: add live room metadata, uploads, proxies and backups

This commit is contained in:
2026-04-26 17:35:51 +08:00
parent 85f24f8a84
commit d2b2f714e0
38 changed files with 2371 additions and 116 deletions
+14 -14
View File
@@ -1,4 +1,4 @@
<script setup lang="ts">
<script setup lang="ts">
import { computed, onMounted, ref } from "vue";
import { useRouter } from "vue-router";
import { useViewport } from "@/composables/useViewport";
@@ -86,10 +86,9 @@ onMounted(loadReport);
<div class="page-stack">
<div class="page-header">
<div>
<h1 class="page-title">回顾日报</h1>
<h1 class="page-title">鍥為鏃ユ姤</h1>
<p class="page-subtitle">
按天聚合录制时长异常和弹幕热度日报只做页面内查看不会主动推送
</p>
鎸夊ぉ鑱氬悎褰曞埗鏃堕暱銆佸紓甯稿拰寮瑰箷鐑害銆傛棩鎶ュ彧鍋氶闈㈠唴鏌ョ湅锛屼笉浼氫富鍔ㄦ帹閫併? </p>
</div>
<el-space wrap class="header-actions">
@@ -102,7 +101,7 @@ onMounted(loadReport);
:disabled-date="disableFutureDates"
@change="loadReport"
/>
<el-button @click="loadReport">刷新日报</el-button>
<el-button @click="loadReport">鍒锋柊鏃ユ姤</el-button>
</el-space>
</div>
@@ -135,7 +134,7 @@ onMounted(loadReport);
<div class="stat-card">
<div class="stat-card__label">警告 / 错误</div>
<div class="stat-card__value">{{ report.summary.warningCount }} / {{ report.summary.errorCount }}</div>
<div class="stat-card__hint">来自当天 Warning / Error 系统日志</div>
<div class="stat-card__hint">来自当天警告 / 错误系统日志</div>
</div>
<div class="stat-card">
<div class="stat-card__label">弹幕事件</div>
@@ -148,7 +147,7 @@ onMounted(loadReport);
<div class="section-header">
<div>
<h3 class="section-title">直播间汇总</h3>
<p class="section-subtitle">每个房间当天的录制规模异常和弹幕数量</p>
<p class="section-subtitle">每个房间当天的录制规模异常数量和弹幕活跃度都会聚合在这里</p>
</div>
</div>
@@ -184,7 +183,7 @@ onMounted(loadReport);
<div class="section-header">
<div>
<h3 class="section-title">重点会话</h3>
<p class="section-subtitle">最长最热和异常最多的会话会出现在这里</p>
<p class="section-subtitle">最长最热和异常最多的会话会集中展示在这里</p>
</div>
</div>
@@ -204,15 +203,15 @@ onMounted(loadReport);
<span>{{ formatDuration(item.durationSeconds) }}</span>
</div>
<div class="highlight-item__stats">
<span>分片 {{ item.segmentCount }}</span>
<span>弹幕 {{ item.danmakuCount }}</span>
<span>警告 {{ item.warningCount }}</span>
<span>错误 {{ item.errorCount }}</span>
<span>鍒嗙墖 {{ item.segmentCount }}</span>
<span>寮瑰箷 {{ item.danmakuCount }}</span>
<span> {{ item.warningCount }}</span>
<span>閿欒 {{ item.errorCount }}</span>
</div>
<div class="highlight-item__summary">{{ item.summary || "-" }}</div>
<div class="highlight-item__footer">
<span>{{ formatDate(item.startedAt || item.endedAt) }}</span>
<el-button size="small" @click="openSession(item.recordSessionId)">查看会话</el-button>
<el-button size="small" @click="openSession(item.recordSessionId)">鏌ョ湅浼氳瘽</el-button>
</div>
</section>
</div>
@@ -222,7 +221,7 @@ onMounted(loadReport);
<div class="section-header">
<div>
<h3 class="section-title">热点时刻</h3>
<p class="section-subtitle">基于弹幕 XML 的分钟级活跃度帮助快速定位当天最热的时间窗</p>
<p class="section-subtitle">基于弹幕 XML 的分钟级活跃度帮助快速定位当天最热的时间窗</p>
</div>
</div>
@@ -385,3 +384,4 @@ onMounted(loadReport);
}
}
</style>