fix: improve recovery and auto-start flows

This commit is contained in:
2026-04-25 00:06:25 +08:00
parent 39db8c012f
commit 9701c88c8b
5 changed files with 207 additions and 14 deletions
+99 -1
View File
@@ -115,6 +115,26 @@ const emailTemplateTokens = [
"{{occurredAtUtc}}"
];
const eventScriptEnvironmentExamples = [
{ name: "LIVE_RECORDER_EVENT", example: "segment_completed", scope: "全部事件" },
{ name: "LIVE_RECORDER_PLATFORM", example: "Douyin", scope: "全部事件" },
{ name: "LIVE_RECORDER_LIVE_ROOM_ID", example: "6f73a2f2-1d4c-4e7a-a9b1-3d29d54ed901", scope: "全部事件" },
{ name: "LIVE_RECORDER_ROOM_ID", example: "676493068539", scope: "全部事件" },
{ name: "LIVE_RECORDER_TITLE", example: "今晚划水聊天", scope: "全部事件" },
{ name: "LIVE_RECORDER_ANCHOR", example: "布莱克", scope: "全部事件" },
{ name: "LIVE_RECORDER_SOURCE_URL", example: "https://live.douyin.com/676493068539", scope: "全部事件" },
{ name: "LIVE_RECORDER_OCCURRED_AT_UTC", example: "2026-04-25T12:34:56.7890000+00:00", scope: "全部事件" },
{ name: "LIVE_RECORDER_RECORD_SESSION_ID", example: "8e2e9c64-b8f6-4d15-b6cb-1d4ce0adab77", scope: "仅分片完成" },
{ name: "LIVE_RECORDER_RECORD_TASK_ID", example: "2a4810a2-7ef4-4a22-90d4-0211b90cc54c", scope: "仅分片完成" },
{ name: "LIVE_RECORDER_SEGMENT_INDEX", example: "1", scope: "仅分片完成" },
{ name: "LIVE_RECORDER_SEGMENT_FILE_PATH", example: "/app/records/Douyin/布莱克/2026-04-25/203000_今晚划水聊天__00001.mp4", scope: "仅分片完成" },
{ name: "LIVE_RECORDER_DANMAKU_FILE_PATH", example: "/app/records/Douyin/布莱克/2026-04-25/203000_今晚划水聊天__00001.xml", scope: "仅分片完成" },
{ name: "LIVE_RECORDER_DURATION_SECONDS", example: "2185.1", scope: "仅分片完成" },
{ name: "LIVE_RECORDER_FILE_SIZE_BYTES", example: "734003200", scope: "仅分片完成" },
{ name: "LIVE_RECORDER_TASK_STATUS", example: "Completed", scope: "仅分片完成" },
{ name: "LIVE_RECORDER_SESSION_STATUS", example: "Running", scope: "仅分片完成" }
];
const canSendTestEmail = computed(() =>
Boolean(form.emailSmtpHost.trim() && form.emailFromAddress.trim() && form.emailToAddresses.trim())
);
@@ -480,7 +500,25 @@ onMounted(loadSettings);
</el-form>
<div class="helper-panel">
常用环境变量LIVE_RECORDER_EVENTLIVE_RECORDER_PLATFORMLIVE_RECORDER_ROOM_IDLIVE_RECORDER_ANCHORLIVE_RECORDER_RECORD_SESSION_IDLIVE_RECORDER_RECORD_TASK_IDLIVE_RECORDER_SEGMENT_INDEXLIVE_RECORDER_SEGMENT_FILE_PATHLIVE_RECORDER_DANMAKU_FILE_PATH
<div class="event-script-help__intro">
开播/下播脚本会带全部事件里的变量分片完成脚本会额外带分片路径弹幕路径时长文件大小任务状态这些值取不到时会传空字符串
</div>
<div class="event-script-example">
<div class="event-script-example__label">环境变量示例值</div>
<div class="event-script-example__grid">
<div v-for="item in eventScriptEnvironmentExamples" :key="item.name" class="event-script-example__row">
<code>{{ item.name }}</code>
<code class="event-script-example__value">{{ item.example }}</code>
<span class="event-script-example__scope">{{ item.scope }}</span>
</div>
</div>
</div>
<div class="event-script-help__usage">
<div><strong>Bash:</strong> <code>echo "$LIVE_RECORDER_EVENT $LIVE_RECORDER_SEGMENT_FILE_PATH"</code></div>
<div><strong>PowerShell:</strong> <code>Write-Host "$env:LIVE_RECORDER_EVENT $env:LIVE_RECORDER_SEGMENT_FILE_PATH"</code></div>
</div>
</div>
</el-card>
@@ -692,6 +730,57 @@ onMounted(loadSettings);
line-height: 1.7;
}
.event-script-help__intro {
margin-bottom: 12px;
}
.event-script-example {
display: grid;
gap: 10px;
margin-top: 12px;
padding: 14px;
border-radius: 10px;
background: rgba(255, 255, 255, 0.72);
border: 1px solid rgba(91, 110, 129, 0.12);
}
.event-script-example__label {
font-size: 12px;
font-weight: 700;
color: #687381;
letter-spacing: 0.06em;
text-transform: uppercase;
}
.event-script-example__grid {
display: grid;
gap: 8px;
}
.event-script-example__row {
display: grid;
grid-template-columns: minmax(220px, 1.2fr) minmax(0, 1.8fr) auto;
gap: 12px;
align-items: start;
font-size: 12px;
}
.event-script-example__value {
overflow-wrap: anywhere;
color: #44505c;
}
.event-script-example__scope {
color: #687381;
white-space: nowrap;
}
.event-script-help__usage {
display: grid;
gap: 6px;
margin-top: 12px;
}
.template-section {
padding: 18px 18px 4px;
border-radius: 12px;
@@ -770,6 +859,15 @@ onMounted(loadSettings);
flex-direction: column;
align-items: flex-start;
}
.event-script-example__row {
grid-template-columns: 1fr;
gap: 4px;
}
.event-script-example__scope {
white-space: normal;
}
}
@media (max-width: 768px) {