Files
geo/apps/admin-web/src/lib/kol-platform-options.ts
T
root 8991edabb5
Frontend CI / Frontend (push) Successful in 2m47s
Backend CI / Backend (push) Failing after 6m50s
feat(kol): support multiple platform hints with shared tag renderer
Turn the KOL prompt platform hint into a multi-select backed by the
media platforms API, persist hints as a 、-joined string, and add a
reusable KolPlatformTags component so manage/generate/package/template/
workspace views and the generate-task drawer all render the hints
consistently with truncation and overflow handling.

Also auto-select the first available subscription prompt in
GenerateTaskDrawer when switching to the subscription-prompt target so
users land on a usable option without an extra click.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 01:48:04 +08:00

52 lines
1.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { MediaPlatform } from '@geo/shared-types'
export interface KolPlatformOption {
label: string
value: string
disabled?: boolean
}
export const KOL_PLATFORM_HINT_DEFAULT = '通用'
export function buildKolPlatformOptions(
defaultLabel: string,
platforms: MediaPlatform[] = [],
selectedValues: string[] = [],
): KolPlatformOption[] {
const defaultSelected = selectedValues.includes(KOL_PLATFORM_HINT_DEFAULT)
const options = [
{ label: defaultLabel, value: '通用' },
...platforms.map((item) => ({
label: item.name,
value: item.name,
disabled: defaultSelected,
})),
]
const knownValues = new Set(options.map((item) => item.value))
const customOptions = normalizeKolPlatformHints(selectedValues)
.filter((value) => !knownValues.has(value))
.map((value) => ({ label: value, value }))
return [...customOptions, ...options]
}
export function parseKolPlatformHints(value?: string | null): string[] {
return normalizeKolPlatformHints(String(value ?? '').split(/[、,;\n]+/))
}
export function normalizeKolPlatformHints(values?: Array<string | null | undefined>): string[] {
const next = Array.from(
new Set((values ?? []).map((item) => String(item ?? '').trim()).filter(Boolean)),
)
if (next.includes(KOL_PLATFORM_HINT_DEFAULT)) {
return [KOL_PLATFORM_HINT_DEFAULT]
}
return next
}
export function serializeKolPlatformHints(values?: Array<string | null | undefined>): string {
return normalizeKolPlatformHints(values).join('、')
}