feat(ui): rename 图生图→参考图 with count; distinguish video 首尾帧 vs 参考图

- model list: any model with max_reference_images>0 shows 首尾帧 N (frame mode)
  or 参考图 N (asset/other); drop the count-less "图生图" label
- ModelFormModal / TestModal: capability labels use 参考图 (not 图生图)
- grok-video uses reference_mode=asset (参考图), runway/adobe video stay frame (首尾帧)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-28 14:51:26 +08:00
co-authored by Claude Opus 4.8
parent 17cd289dfd
commit d289ec378d
4 changed files with 12 additions and 9 deletions
+3
View File
@@ -60,3 +60,6 @@ __pycache__/
Thumbs.db Thumbs.db
.idea/ .idea/
.vscode/ .vscode/
# fast-deploy build artifact
/frontend/dist.tar.gz
+2 -2
View File
@@ -241,8 +241,8 @@ async function save() {
<span v-for="r in resolutions" :key="r" class="ro-chip">{{ r }}</span> <span v-for="r in resolutions" :key="r" class="ro-chip">{{ r }}</span>
<span v-if="!resolutions.length" class="text-white/30"></span> <span v-if="!resolutions.length" class="text-white/30"></span>
</div> </div>
<span class="text-white/40">图生</span> <span class="text-white/40">参考</span>
<div class="text-white/70">{{ entry.image_to_image ? '支持' : '不支持' }}</div> <div class="text-white/70">{{ entry.max_reference_images > 0 ? `${entry.max_reference_images}` : (entry.image_to_image ? '支持' : '不支持') }}</div>
</template> </template>
</div> </div>
</div> </div>
+2 -2
View File
@@ -56,8 +56,8 @@ const refMode = computed(() => familyPreset.value?.reference_mode || props.model
// text2video; frame refs (首帧/末帧) only enhance the result when supplied. // text2video; frame refs (首帧/末帧) only enhance the result when supplied.
const refsRequired = computed(() => false) const refsRequired = computed(() => false)
const refsLabel = computed(() => { const refsLabel = computed(() => {
if (!isVideo) return maxRefs.value > 0 ? '参考图 (可选, 图生图)' : '' if (!isVideo) return maxRefs.value > 0 ? '参考图 (可选)' : ''
if (refMode.value === 'asset') return `参考图 (asset 模式, 最多 ${maxRefs.value} 张)` if (refMode.value === 'asset') return `参考图 (最多 ${maxRefs.value} 张)`
if (refMode.value === 'frame') { if (refMode.value === 'frame') {
if (maxRefs.value >= 2) return `首帧 / 末帧 (1=首帧, 2=首尾帧, 最多 ${maxRefs.value} 张)` if (maxRefs.value >= 2) return `首帧 / 末帧 (1=首帧, 2=首尾帧, 最多 ${maxRefs.value} 张)`
return `首帧 (可选, ${maxRefs.value} 张)` return `首帧 (可选, ${maxRefs.value} 张)`
+5 -5
View File
@@ -211,12 +211,12 @@ onMounted(loadModels)
video frame mode, supported resolutions for video. --> video frame mode, supported resolutions for video. -->
<td class="px-3 py-3.5 align-middle"> <td class="px-3 py-3.5 align-middle">
<div class="flex flex-wrap items-center gap-1 text-[11px]"> <div class="flex flex-wrap items-center gap-1 text-[11px]">
<span v-if="m.type === 'image' && m.image_to_image" <!-- reference capability with count: frame mode = 首尾帧, else 参考图 -->
class="cap-chip cap-emerald">图生图</span> <span v-if="m.max_reference_images > 0"
<!-- 参考图 is a capability like 图生图 same emerald style, shown first -->
<span v-if="m.type === 'video' && m.max_reference_images > 0"
class="cap-chip cap-emerald" class="cap-chip cap-emerald"
:title="REF_MODE_LABEL[m.reference_mode]">参考图 {{ m.max_reference_images }}</span> :title="REF_MODE_LABEL[m.reference_mode]">{{ m.reference_mode === 'frame' ? '首尾帧' : '参考图' }} {{ m.max_reference_images }}</span>
<span v-else-if="m.type === 'image' && m.image_to_image"
class="cap-chip cap-emerald">参考图</span>
<span v-if="m.type === 'video'" v-for="r in (m.resolutions || [])" :key="'vr'+r" <span v-if="m.type === 'video'" v-for="r in (m.resolutions || [])" :key="'vr'+r"
class="cap-chip cap-slate">{{ r }}</span> class="cap-chip cap-slate">{{ r }}</span>
<span v-if="(m.type === 'image' && !(m.ratios || []).length && !m.image_to_image) || <span v-if="(m.type === 'image' && !(m.ratios || []).length && !m.image_to_image) ||