chore: 移除项目内无用代码(28 文件)

- 清理任务面板/SPA 化改造遗留的未使用变量与函数(模板管理配套 6 函数、
  payloadForDisplay/showTip/hasRunning/schedulePoll/removeMatchedRowLocally 等 30+ 处)
- 清理未使用 import(getBrandTemplateXlsxUrl/uploadTempFileToJava/getProductRiskTasksBatch 等)
- useTaskProgressLoop 改为仅类型导入;progress/task-request 缓存未用参数精简
- DeleteBrandRunService 删除永不执行的 taskItems 死分支
- 全量 vue-tsc(含 --noUnusedLocals/--noUnusedParameters)0 错误;648 测试全过
This commit is contained in:
2026-09-08 10:20:30 +08:00
parent e248b6e43a
commit d9e3f34d37
28 changed files with 24 additions and 408 deletions
@@ -91,7 +91,7 @@
:source-url="currentWorkspace.sceneAsset.sourceUrl" :loading="currentWorkspace.sceneAsset.uploading"
allow-url compact action-label="上传场景图" selected-label="场景图" url-label="场景图链接" url-placeholder="也可以粘贴场景图链接"
@select="(file) => setAsset(activeTab, 'sceneAsset', file)"
@url-change="(url) => setAssetUrl(activeTab, 'sceneAsset', url, 'image/*')" preview-clickable
@url-change="(url) => setAssetUrl(activeTab, 'sceneAsset', url)" preview-clickable
@preview="openImagePreview" @clear="clearAsset(activeTab, 'sceneAsset')" />
</AiSectionCard>
</div>
@@ -190,7 +190,7 @@
:source-url="currentWorkspace.modelAsset.sourceUrl" :loading="currentWorkspace.modelAsset.uploading"
allow-url compact preview-clickable action-label="上传模特图" selected-label="模特图" url-label="模特图链接"
url-placeholder="也可以粘贴模特图链接" @select="(file) => setAsset(activeTab, 'modelAsset', file)"
@url-change="(url) => setAssetUrl(activeTab, 'modelAsset', url, 'image/*')" @preview="openImagePreview"
@url-change="(url) => setAssetUrl(activeTab, 'modelAsset', url)" @preview="openImagePreview"
@clear="clearAsset(activeTab, 'modelAsset')" />
</AiSectionCard>
@@ -277,7 +277,7 @@
:source-url="currentWorkspace.speechAsset.sourceUrl" :loading="currentWorkspace.speechAsset.uploading"
allow-url compact action-label="上传背景音乐" selected-label="背景音乐" url-label="背景音乐链接"
@select="(file) => setAsset(activeTab, 'speechAsset', file)"
@url-change="(url) => setAssetUrl(activeTab, 'speechAsset', url, 'audio/*')"
@url-change="(url) => setAssetUrl(activeTab, 'speechAsset', url)"
@clear="clearAsset(activeTab, 'speechAsset')" />
</template>
@@ -786,7 +786,7 @@ function resolvePreviewKindFromMediaType(mediaType: string): PreviewKind {
return 'file'
}
function resolveMediaTypeFromUrl(url: string, accept = ''): MediaType {
function resolveMediaTypeFromUrl(url: string): MediaType {
const cleanUrl = url.split('?')[0]?.toLowerCase() || ''
if (/\.(png|jpe?g|webp|gif|bmp|svg)$/.test(cleanUrl)) return 'image'
if (/\.(mp4|mov|webm|m4v|ogg|avi|mkv)$/.test(cleanUrl)) return 'video'
@@ -794,10 +794,10 @@ function resolveMediaTypeFromUrl(url: string, accept = ''): MediaType {
return 'file'
}
function setAssetUrl(tab: WorkspaceTab, assetKey: AssetKey, url: string, accept = '') {
function setAssetUrl(tab: WorkspaceTab, assetKey: AssetKey, url: string) {
const target = workspaces[tab][assetKey]
const normalizedUrl = (url || '').trim()
const mediaType = resolveMediaTypeFromUrl(normalizedUrl, accept)
const mediaType = resolveMediaTypeFromUrl(normalizedUrl)
target.sourceUrl = normalizedUrl
target.previewUrl = normalizedUrl
target.fileName = normalizedUrl ? '在线素材' : ''
@@ -855,7 +855,7 @@ function setProductAssetUrl(tab: WorkspaceTab, index: number, url: string) {
target.sourceUrl = normalizedUrl
target.previewUrl = normalizedUrl
target.fileName = normalizedUrl ? '在线素材' : ''
target.mediaType = resolveMediaTypeFromUrl(normalizedUrl, 'image/*')
target.mediaType = resolveMediaTypeFromUrl(normalizedUrl)
target.previewKind = resolvePreviewKindFromMediaType(target.mediaType)
scheduleDeliveryGridLayout()
}
@@ -1517,26 +1517,6 @@ function findMediaFileUrl(value: unknown) {
]) || findUrlMatching(value, isMediaFileUrl)
}
function resolveWorkflowStatus(value: unknown) {
return (findTextByKeys(value, [
'execute_status',
'executeStatus',
'workflow_status',
'workflowStatus',
'status',
]) || '').toUpperCase()
}
function isTerminalWorkflowStatus(status: string) {
const normalized = (status || '').toUpperCase()
return ['SUCCESS', 'SUCCEEDED', 'COMPLETED', 'DONE', 'FINISHED', 'FAILED', 'FAIL', 'ERROR', 'CANCELED', 'CANCELLED'].includes(normalized)
}
function isFailedWorkflowStatus(status: string) {
const normalized = (status || '').toUpperCase()
return ['FAILED', 'FAIL', 'ERROR', 'CANCELED', 'CANCELLED'].includes(normalized)
}
function findTextByKeys(value: unknown, keys: string[]): string {
if (!value) return ''
const normalizedKeys = keys.map((key) => key.toLowerCase())
@@ -1751,7 +1731,7 @@ async function synthesizeVoice() {
const result = await waitForImageVideoTask(ticket)
const audioUrl = findMediaFileUrl(result)
if (audioUrl) {
setAssetUrl(activeTab.value, 'speechAsset', audioUrl, 'audio/*')
setAssetUrl(activeTab.value, 'speechAsset', audioUrl)
setVoiceStatus('语音合成完成,已写入最终配音文件', 'success')
ElMessage.success('语音合成完成,已写入口播音频链接')
} else {
@@ -1794,7 +1774,7 @@ async function setVoiceCloneAsset(file: File) {
function setVoiceCloneUrl(url: string) {
const normalizedUrl = (url || '').trim()
const mediaType = resolveMediaTypeFromUrl(normalizedUrl, 'audio/*,video/*')
const mediaType = resolveMediaTypeFromUrl(normalizedUrl)
voiceCloneAsset.sourceUrl = normalizedUrl
voiceCloneAsset.previewUrl = normalizedUrl
voiceCloneAsset.fileName = normalizedUrl ? '在线克隆素材' : ''