fix: Enhance Kol Variable Rendering and Management
- Updated the regex for placeholder matching to support more flexible key formats. - Refactored variable storage to allow both ID and key lookups in rendering. - Improved schema validation to check for duplicate keys and enforce non-empty keys. - Added new utility functions for variable value lookup and display name generation. - Enhanced tests to cover new key-based variable scenarios. - Refactored KolPrompt repository to simplify prompt storage and management, including the removal of obsolete revision handling. - Introduced new API endpoints for saving, activating, and archiving prompts. - Added new utility functions for handling Kol placeholders and platform options in the admin web. - Implemented database migrations to simplify prompt storage structure and ensure data integrity.
This commit is contained in:
@@ -33,12 +33,11 @@ import type {
|
||||
KolAssistTask,
|
||||
KolPackageSummary,
|
||||
KolPackageDetail,
|
||||
PublishKolPromptRequest,
|
||||
KolSubscription,
|
||||
KolSubscriptionPromptCard,
|
||||
KolProfile,
|
||||
KolPromptDetail,
|
||||
KolPromptRevision,
|
||||
KolSaveDraftRequest,
|
||||
KolSubscriptionPromptSchema,
|
||||
KolGenerateRequest,
|
||||
KolGenerateResponse,
|
||||
@@ -323,15 +322,27 @@ export const kolManageApi = {
|
||||
deletePrompt(id: number) {
|
||||
return apiClient.remove<null>(`/api/tenant/kol/manage/prompts/${id}`);
|
||||
},
|
||||
saveDraft(promptId: number, body: KolSaveDraftRequest) {
|
||||
return apiClient.post<KolPromptRevision, KolSaveDraftRequest>(
|
||||
`/api/tenant/kol/manage/prompts/${promptId}/draft`,
|
||||
savePrompt(promptId: number, body: PublishKolPromptRequest) {
|
||||
return apiClient.post<KolPromptDetail, PublishKolPromptRequest>(
|
||||
`/api/tenant/kol/manage/prompts/${promptId}/save`,
|
||||
body,
|
||||
);
|
||||
},
|
||||
publishPrompt(promptId: number) {
|
||||
return apiClient.post<{ ok: boolean }, Record<string, never>>(
|
||||
publishPrompt(promptId: number, body: PublishKolPromptRequest) {
|
||||
return apiClient.post<KolPromptDetail, PublishKolPromptRequest>(
|
||||
`/api/tenant/kol/manage/prompts/${promptId}/publish`,
|
||||
body,
|
||||
);
|
||||
},
|
||||
activatePrompt(promptId: number) {
|
||||
return apiClient.put<KolPromptDetail, Record<string, never>>(
|
||||
`/api/tenant/kol/manage/prompts/${promptId}/activate`,
|
||||
{},
|
||||
);
|
||||
},
|
||||
archivePrompt(promptId: number) {
|
||||
return apiClient.put<KolPromptDetail, Record<string, never>>(
|
||||
`/api/tenant/kol/manage/prompts/${promptId}/archive`,
|
||||
{},
|
||||
);
|
||||
},
|
||||
@@ -348,7 +359,7 @@ export const kolManageApi = {
|
||||
|
||||
export const kolMarketplaceApi = {
|
||||
list(params: { industry?: string; keyword?: string; limit?: number; offset?: number }) {
|
||||
return apiClient.get<KolPackageSummary[]>("/api/tenant/kol/marketplace", { params });
|
||||
return apiClient.get<KolPackageSummary[]>("/api/tenant/kol/marketplace/packages", { params });
|
||||
},
|
||||
detail(id: number) {
|
||||
return apiClient.get<KolPackageDetail>(`/api/tenant/kol/marketplace/packages/${id}`);
|
||||
@@ -360,12 +371,10 @@ export const kolMarketplaceApi = {
|
||||
);
|
||||
},
|
||||
mySubscriptions() {
|
||||
return apiClient.get<KolSubscription[]>("/api/tenant/kol/marketplace/my-subscriptions");
|
||||
return apiClient.get<KolSubscription[]>("/api/tenant/kol/subscriptions");
|
||||
},
|
||||
mySubscriptionPrompts() {
|
||||
return apiClient.get<KolSubscriptionPromptCard[]>(
|
||||
"/api/tenant/kol/marketplace/my-subscription-prompts",
|
||||
);
|
||||
return apiClient.get<KolSubscriptionPromptCard[]>("/api/tenant/kol/subscription-prompts");
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user