From afab4933b468ee82f82b9f36bbd0de1520d55b3c Mon Sep 17 00:00:00 2001 From: jeremygan2021 Date: Tue, 17 Mar 2026 21:11:19 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=90=E5=AD=97=E7=A8=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/competition/judge_views.py | 3 +- .../templates/judge/dashboard.html | 94 ++++++++++++++++++- 2 files changed, 94 insertions(+), 3 deletions(-) diff --git a/backend/competition/judge_views.py b/backend/competition/judge_views.py index b4684e4..e1439d3 100644 --- a/backend/competition/judge_views.py +++ b/backend/competition/judge_views.py @@ -313,7 +313,8 @@ def project_detail_api(request, project_id): if latest_task: ai_data = { 'transcription': latest_task.transcription, - 'summary': latest_task.summary + 'summary': latest_task.summary, + 'auto_chapters_data': latest_task.auto_chapters_data } data = { diff --git a/backend/competition/templates/judge/dashboard.html b/backend/competition/templates/judge/dashboard.html index 36178d1..40093b5 100644 --- a/backend/competition/templates/judge/dashboard.html +++ b/backend/competition/templates/judge/dashboard.html @@ -99,8 +99,13 @@

AI 总结

-
-

逐字稿片段

+
+
+

逐字稿片段

+ +

@@ -202,6 +207,37 @@ + + + {% endblock %} {% block extra_js %} @@ -223,6 +259,56 @@ function openUploadModal() { document.getElementById('uploadModal').classList.add('active'); } +function openFullTranscriptionModal() { + if (!window.currentAiData) return; + + document.getElementById('modalFullTrans').innerText = window.currentAiData.transcription || '暂无完整逐字稿'; + + let chaptersData = window.currentAiData.auto_chapters_data; + const chaptersSection = document.getElementById('chaptersSection'); + const chaptersContent = document.getElementById('modalChaptersContent'); + + // Check if chaptersData is a string and parse it if necessary + if (typeof chaptersData === 'string') { + try { + chaptersData = JSON.parse(chaptersData); + } catch (e) { + console.error('Failed to parse auto_chapters_data:', e); + chaptersData = null; + } + } + + if (chaptersData && chaptersData.AutoChapters && chaptersData.AutoChapters.length > 0) { + chaptersSection.style.display = 'block'; + chaptersContent.innerHTML = chaptersData.AutoChapters.map(chapter => { + // Convert ms to mm:ss format + const formatTime = ms => { + const totalSeconds = Math.floor(ms / 1000); + const minutes = Math.floor(totalSeconds / 60); + const seconds = totalSeconds % 60; + return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; + }; + + const start = formatTime(chapter.Start); + const end = formatTime(chapter.End); + + return ` +
+
+

${chapter.Headline || '未命名章节'}

+ ${start} - ${end} +
+

${chapter.Summary || '无摘要'}

+
+ `; + }).join(''); + } else { + chaptersSection.style.display = 'none'; + } + + document.getElementById('fullTranscriptionModal').classList.add('active'); +} + async function viewProject(id) { try { // Show loading state or skeleton if possible, for now just fetch @@ -240,8 +326,12 @@ async function viewProject(id) { aiSection.style.display = 'block'; document.getElementById('modalAiSummary').innerText = (data.ai_result.summary || '暂无总结').substring(0, 300) + (data.ai_result.summary && data.ai_result.summary.length > 300 ? '...' : ''); document.getElementById('modalAiTrans').innerText = (data.ai_result.transcription || '暂无内容').substring(0, 150) + '...'; + + // Store full data for full transcription modal + window.currentAiData = data.ai_result; } else { aiSection.style.display = 'none'; + window.currentAiData = null; } // Render History Comments