feat: add video reuse — re-analyze previous uploads without re-uploading

This commit is contained in:
jetson committed 2026-09-21 09:35:29 +07:00
1 parent a75db4ca49
commit f779f05190
7 files changed
+453 -62

No files matched your search

+59
View File
@@ -45,6 +45,57 @@
cursor: pointer;
}
/* Existing videos section */
.existing-videos-section { margin-top: var(--space-8); }
.section-title {
font-size: var(--text-lg);
font-weight: var(--font-semibold);
margin-bottom: var(--space-4);
}
.video-list {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: var(--space-4);
}
.video-item {
background: var(--color-neutral-50);
border: 2px solid var(--color-neutral-200);
border-radius: var(--radius-lg);
padding: var(--space-4);
cursor: pointer;
transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
display: flex;
align-items: center;
gap: var(--space-3);
}
.video-item:hover {
border-color: var(--color-neutral-300);
box-shadow: var(--shadow-sm);
}
.video-item.selected {
border-color: var(--color-primary);
box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary) 12%, transparent);
}
.video-item-radio {
flex-shrink: 0;
width: 18px;
height: 18px;
accent-color: var(--color-primary);
cursor: pointer;
}
.video-item-info { flex: 1; min-width: 0; }
.video-item-name {
font-weight: var(--font-medium);
color: var(--color-neutral-800);
font-size: var(--text-sm);
word-break: break-word;
}
.video-item-meta {
font-size: var(--text-xs);
color: var(--color-neutral-500);
margin-top: var(--space-1);
}
/* File info */
.file-info {
margin-top: var(--space-4);
@@ -215,6 +266,8 @@
</div>
<form action="/upload" method="post" enctype="multipart/form-data" id="upload-form">
<input type="hidden" name="video_path" id="video-path-input" value="">
{# --- Upload Zone --- #}
<div class="upload-zone" id="upload-zone" role="button" tabindex="0" aria-label="Upload video file">
<span class="upload-zone-icon" aria-hidden="true">&#128190;</span>
@@ -237,6 +290,12 @@
</div>
</div>
{# --- Existing Videos --- #}
<div class="existing-videos-section" id="existing-videos-section" style="display:none">
<h3 class="section-title">Or use a previously uploaded video</h3>
<div class="video-list" id="video-list"></div>
</div>
{# --- Model Selection --- #}
<div class="model-section">
<div class="model-section-header">