style: 后端代码black格式化
Deploy / Staging E2E Tests (push) Has been skipped
Deploy / Build Production Runtime Images (push) Has been skipped
Deploy / Deploy Production (push) Has been skipped
Deploy / Production Browser E2E (push) Has been skipped
Deploy / Deploy Staging (push) Failing after 138h4m33s
CI/CD Pipeline / Frontend Lint (push) Failing after 138h4m39s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 138h4m39s

This commit is contained in:
灵应
2026-07-03 18:49:54 +08:00
parent bcb1663de4
commit 8935196fcd
104 changed files with 2490 additions and 1519 deletions
+1 -4
View File
@@ -6,10 +6,7 @@ import apiClient from "./client";
/** 查重记录状态 */
export type DuplicationStatus =
| "pending"
| "processing"
| "completed"
| "failed";
"pending" | "processing" | "completed" | "failed";
/** 查重记录 */
export interface DuplicationRecord {
+5 -7
View File
@@ -11,11 +11,7 @@ import type { AssetItem } from "./assets";
/** 剪辑计划状态枚举 */
export type EditPlanStatus =
| "draft"
| "editing"
| "rendering"
| "completed"
| "failed";
"draft" | "editing" | "rendering" | "completed" | "failed";
/** 剪辑计划(后端响应) */
export interface EditPlan {
@@ -218,7 +214,8 @@ function mapAssetToMediaAsset(asset: AssetItem): MediaAsset {
id: asset.id,
name: asset.name,
type: inferMediaType(asset.mime_type || ""),
thumbnail_url: typeof ext.thumbnail_url === "string" ? ext.thumbnail_url : undefined,
thumbnail_url:
typeof ext.thumbnail_url === "string" ? ext.thumbnail_url : undefined,
duration:
typeof ext.duration === "number"
? ext.duration
@@ -229,7 +226,8 @@ function mapAssetToMediaAsset(asset: AssetItem): MediaAsset {
tags: [],
created_at: asset.created_at ?? "",
quality_score: asset.quality_score ?? undefined,
classification_status: (asset.classification_status ?? undefined) as MediaAsset["classification_status"],
classification_status: (asset.classification_status ??
undefined) as MediaAsset["classification_status"],
};
}
+2 -1
View File
@@ -113,7 +113,8 @@ export const getTTSJobs = async (
const searchParams = new URLSearchParams();
if (params?.status) searchParams.set("status", params.status);
if (params?.skip !== undefined) searchParams.set("skip", String(params.skip));
if (params?.limit !== undefined) searchParams.set("limit", String(params.limit));
if (params?.limit !== undefined)
searchParams.set("limit", String(params.limit));
const qs = searchParams.toString();
const response = await apiClient.get<TTSJobListResponse>(
`/tts/jobs${qs ? `?${qs}` : ""}`,
+15 -5
View File
@@ -128,7 +128,8 @@ export const getVoiceClones = async (
const searchParams = new URLSearchParams();
if (params?.status) searchParams.set("status", params.status);
if (params?.skip !== undefined) searchParams.set("skip", String(params.skip));
if (params?.limit !== undefined) searchParams.set("limit", String(params.limit));
if (params?.limit !== undefined)
searchParams.set("limit", String(params.limit));
const qs = searchParams.toString();
const response = await apiClient.get<ListVoiceCloneResponse>(
`/voice-clones${qs ? `?${qs}` : ""}`,
@@ -143,7 +144,8 @@ export const getVoiceClonesWithTotal = async (
const searchParams = new URLSearchParams();
if (params?.status) searchParams.set("status", params.status);
if (params?.skip !== undefined) searchParams.set("skip", String(params.skip));
if (params?.limit !== undefined) searchParams.set("limit", String(params.limit));
if (params?.limit !== undefined)
searchParams.set("limit", String(params.limit));
const qs = searchParams.toString();
const response = await apiClient.get<ListVoiceCloneResponse>(
`/voice-clones${qs ? `?${qs}` : ""}`,
@@ -155,7 +157,9 @@ export const getVoiceClonesWithTotal = async (
export const getVoiceCloneDetail = async (
id: string,
): Promise<VoiceCloneProfile> => {
const response = await apiClient.get<VoiceCloneProfile>(`/voice-clones/${id}`);
const response = await apiClient.get<VoiceCloneProfile>(
`/voice-clones/${id}`,
);
return response.data;
};
@@ -186,8 +190,14 @@ export const updateVoiceClone = async (
data: Partial<Pick<VoiceClone, "name">>,
): Promise<VoiceClone> => {
// 后端暂未提供更新端点,暂用详情接口模拟
const response = await apiClient.get<VoiceCloneProfile>(`/voice-clones/${id}`);
return toVoiceClone({ ...response.data, ...data, updated_at: new Date().toISOString() });
const response = await apiClient.get<VoiceCloneProfile>(
`/voice-clones/${id}`,
);
return toVoiceClone({
...response.data,
...data,
updated_at: new Date().toISOString(),
});
};
/** 获取克隆状态 */
+4 -2
View File
@@ -72,7 +72,8 @@ export const fetchVoices = async (
if (params?.type) searchParams.set("type", params.type);
if (params?.status) searchParams.set("status", params.status);
if (params?.skip !== undefined) searchParams.set("skip", String(params.skip));
if (params?.limit !== undefined) searchParams.set("limit", String(params.limit));
if (params?.limit !== undefined)
searchParams.set("limit", String(params.limit));
const qs = searchParams.toString();
const response = await apiClient.get<UnifiedVoiceListResponse>(
`/voices${qs ? `?${qs}` : ""}`,
@@ -82,7 +83,8 @@ export const fetchVoices = async (
/** 获取预设音色列表(无需鉴权) */
export const fetchPresetVoices = async (): Promise<PresetVoiceListResponse> => {
const response = await apiClient.get<PresetVoiceListResponse>("/voices/presets");
const response =
await apiClient.get<PresetVoiceListResponse>("/voices/presets");
return response.data;
};