feat(article): support regenerating failed articles

This commit is contained in:
2026-05-07 10:55:44 +08:00
parent ff2bb77cdd
commit 7d82c5c193
21 changed files with 659 additions and 23 deletions
+22 -1
View File
@@ -6,9 +6,26 @@ export interface ArticleActionState {
showPreview: boolean
showCopy: boolean
showDelete: boolean
showRegenerate: boolean
}
export function resolveArticleActionState(generateStatus?: string | null): ArticleActionState {
export interface ArticleActionSource {
generate_status?: string | null
source_type?: string | null
}
const regeneratableSourceTypes = new Set(['template', 'custom_generation', 'imitation', 'kol'])
export function resolveArticleActionState(
articleOrGenerateStatus?: ArticleActionSource | string | null,
): ArticleActionState {
const generateStatus =
typeof articleOrGenerateStatus === 'string'
? articleOrGenerateStatus
: articleOrGenerateStatus?.generate_status
const sourceType =
typeof articleOrGenerateStatus === 'string' ? undefined : articleOrGenerateStatus?.source_type
if (generateStatus === 'completed') {
return {
showPublish: true,
@@ -16,6 +33,7 @@ export function resolveArticleActionState(generateStatus?: string | null): Artic
showPreview: true,
showCopy: true,
showDelete: true,
showRegenerate: false,
}
}
@@ -26,6 +44,7 @@ export function resolveArticleActionState(generateStatus?: string | null): Artic
showPreview: false,
showCopy: false,
showDelete: true,
showRegenerate: false,
}
}
@@ -36,6 +55,7 @@ export function resolveArticleActionState(generateStatus?: string | null): Artic
showPreview: false,
showCopy: false,
showDelete: true,
showRegenerate: sourceType ? regeneratableSourceTypes.has(sourceType) : false,
}
}
@@ -45,6 +65,7 @@ export function resolveArticleActionState(generateStatus?: string | null): Artic
showPreview: true,
showCopy: false,
showDelete: true,
showRegenerate: false,
}
}