feat(kol): admin-web API client + router entries for KOL
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
"@milkdown/kit": "^7.20.0",
|
||||
"@milkdown/theme-nord": "^7.20.0",
|
||||
"@milkdown/vue": "^7.20.0",
|
||||
"nanoid": "^5.1.7",
|
||||
"@tanstack/vue-query": "^5.96.0",
|
||||
"@vueuse/core": "^14.2.1",
|
||||
"ant-design-vue": "^4.2.6",
|
||||
|
||||
@@ -28,6 +28,14 @@ import type {
|
||||
KnowledgeItemDetail,
|
||||
KnowledgeTextItemRequest,
|
||||
KnowledgeURLItemRequest,
|
||||
KolAssistRequest,
|
||||
KolAssistSubmitResponse,
|
||||
KolAssistTask,
|
||||
KolPackageSummary,
|
||||
KolProfile,
|
||||
KolPromptDetail,
|
||||
KolPromptRevision,
|
||||
KolSaveDraftRequest,
|
||||
Keyword,
|
||||
KeywordRequest,
|
||||
LoginRequest,
|
||||
@@ -82,6 +90,10 @@ import type {
|
||||
ImageUpdateRequest,
|
||||
UpdateQuestionRequest,
|
||||
UpdateArticleRequest,
|
||||
CreateKolPackageRequest,
|
||||
CreateKolPromptRequest,
|
||||
UpdateKolPackageRequest,
|
||||
UpdateKolPromptRequest,
|
||||
UserInfo,
|
||||
WorkspaceOverview,
|
||||
} from "@geo/shared-types";
|
||||
@@ -243,6 +255,84 @@ export const templatesApi = {
|
||||
},
|
||||
};
|
||||
|
||||
export const kolManageApi = {
|
||||
profile() {
|
||||
return apiClient.get<KolProfile>("/api/tenant/kol/manage/profile");
|
||||
},
|
||||
listPackages() {
|
||||
return apiClient.get<KolPackageSummary[]>("/api/tenant/kol/manage/packages");
|
||||
},
|
||||
createPackage(body: CreateKolPackageRequest) {
|
||||
return apiClient.post<KolPackageSummary, CreateKolPackageRequest>(
|
||||
"/api/tenant/kol/manage/packages",
|
||||
body,
|
||||
);
|
||||
},
|
||||
updatePackage(id: number, body: UpdateKolPackageRequest) {
|
||||
return apiClient.put<KolPackageSummary, UpdateKolPackageRequest>(
|
||||
`/api/tenant/kol/manage/packages/${id}`,
|
||||
body,
|
||||
);
|
||||
},
|
||||
publishPackage(id: number) {
|
||||
return apiClient.put<KolPackageSummary, Record<string, never>>(
|
||||
`/api/tenant/kol/manage/packages/${id}/publish`,
|
||||
{},
|
||||
);
|
||||
},
|
||||
archivePackage(id: number) {
|
||||
return apiClient.put<KolPackageSummary, Record<string, never>>(
|
||||
`/api/tenant/kol/manage/packages/${id}/archive`,
|
||||
{},
|
||||
);
|
||||
},
|
||||
deletePackage(id: number) {
|
||||
return apiClient.remove<null>(`/api/tenant/kol/manage/packages/${id}`);
|
||||
},
|
||||
listPrompts(packageId: number) {
|
||||
return apiClient.get<KolPromptDetail[]>(`/api/tenant/kol/manage/packages/${packageId}/prompts`);
|
||||
},
|
||||
createPrompt(packageId: number, body: CreateKolPromptRequest) {
|
||||
return apiClient.post<KolPromptDetail, CreateKolPromptRequest>(
|
||||
`/api/tenant/kol/manage/packages/${packageId}/prompts`,
|
||||
body,
|
||||
);
|
||||
},
|
||||
getPrompt(id: number) {
|
||||
return apiClient.get<KolPromptDetail>(`/api/tenant/kol/manage/prompts/${id}`);
|
||||
},
|
||||
updatePromptMetadata(id: number, body: UpdateKolPromptRequest) {
|
||||
return apiClient.put<KolPromptDetail, UpdateKolPromptRequest>(
|
||||
`/api/tenant/kol/manage/prompts/${id}`,
|
||||
body,
|
||||
);
|
||||
},
|
||||
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`,
|
||||
body,
|
||||
);
|
||||
},
|
||||
publishPrompt(promptId: number) {
|
||||
return apiClient.post<{ ok: boolean }, Record<string, never>>(
|
||||
`/api/tenant/kol/manage/prompts/${promptId}/publish`,
|
||||
{},
|
||||
);
|
||||
},
|
||||
submitAssist(body: KolAssistRequest) {
|
||||
return apiClient.post<KolAssistSubmitResponse, KolAssistRequest>(
|
||||
"/api/tenant/kol/manage/assist",
|
||||
body,
|
||||
);
|
||||
},
|
||||
getAssist(id: string) {
|
||||
return apiClient.get<KolAssistTask>(`/api/tenant/kol/manage/assist/${id}`);
|
||||
},
|
||||
};
|
||||
|
||||
export const articlesApi = {
|
||||
list(params: ArticleListParams) {
|
||||
return apiClient.get<ArticleListResponse>("/api/tenant/articles", { params });
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
import { nanoid } from "nanoid";
|
||||
|
||||
export function newVariableId(): string {
|
||||
return `var_${nanoid(8)}`;
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
declare module "@/views/KolManageView.vue" {
|
||||
import type { DefineComponent } from "vue";
|
||||
|
||||
const component: DefineComponent<Record<string, never>, Record<string, never>, any>;
|
||||
export default component;
|
||||
}
|
||||
|
||||
declare module "@/views/KolDashboardView.vue" {
|
||||
import type { DefineComponent } from "vue";
|
||||
|
||||
const component: DefineComponent<Record<string, never>, Record<string, never>, any>;
|
||||
export default component;
|
||||
}
|
||||
|
||||
declare module "@/views/KolMarketplaceView.vue" {
|
||||
import type { DefineComponent } from "vue";
|
||||
|
||||
const component: DefineComponent<Record<string, never>, Record<string, never>, any>;
|
||||
export default component;
|
||||
}
|
||||
|
||||
declare module "@/views/KolPackageDetailView.vue" {
|
||||
import type { DefineComponent } from "vue";
|
||||
|
||||
const component: DefineComponent<Record<string, never>, Record<string, never>, any>;
|
||||
export default component;
|
||||
}
|
||||
|
||||
declare module "@/views/KolGenerateView.vue" {
|
||||
import type { DefineComponent } from "vue";
|
||||
|
||||
const component: DefineComponent<Record<string, never>, Record<string, never>, any>;
|
||||
export default component;
|
||||
}
|
||||
@@ -146,6 +146,53 @@ const router = createRouter({
|
||||
navKey: "/images",
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "kol/manage",
|
||||
name: "kol-manage",
|
||||
component: () => import("@/views/KolManageView.vue"),
|
||||
meta: {
|
||||
titleKey: "kol.manage.title",
|
||||
navKey: "/kol/manage",
|
||||
requiresKol: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "kol/dashboard",
|
||||
name: "kol-dashboard",
|
||||
component: () => import("@/views/KolDashboardView.vue"),
|
||||
meta: {
|
||||
titleKey: "kol.dashboard.title",
|
||||
navKey: "/kol/dashboard",
|
||||
requiresKol: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "kol/marketplace",
|
||||
name: "kol-marketplace",
|
||||
component: () => import("@/views/KolMarketplaceView.vue"),
|
||||
meta: {
|
||||
titleKey: "kol.marketplace.title",
|
||||
navKey: "/kol/marketplace",
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "kol/packages/:id",
|
||||
name: "kol-package-detail",
|
||||
component: () => import("@/views/KolPackageDetailView.vue"),
|
||||
meta: {
|
||||
titleKey: "kol.marketplace.title",
|
||||
navKey: "/kol/marketplace",
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "kol/generate/:subscriptionPromptId",
|
||||
name: "kol-generate",
|
||||
component: () => import("@/views/KolGenerateView.vue"),
|
||||
meta: {
|
||||
titleKey: "kol.generate.title",
|
||||
navKey: "/kol/marketplace",
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
@@ -166,6 +213,10 @@ router.beforeEach(async (to) => {
|
||||
};
|
||||
}
|
||||
|
||||
if (to.meta.requiresKol && !authStore.isActiveKol) {
|
||||
return { name: "workspace" };
|
||||
}
|
||||
|
||||
if (to.name === "login" && authStore.isAuthenticated) {
|
||||
return { name: "workspace" };
|
||||
}
|
||||
|
||||
Vendored
+1
@@ -7,6 +7,7 @@ declare module "vue-router" {
|
||||
titleKey?: string;
|
||||
descriptionKey?: string;
|
||||
requiresAuth?: boolean;
|
||||
requiresKol?: boolean;
|
||||
navKey?: string | null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1292,6 +1292,11 @@ export interface KolAssistRequest {
|
||||
description?: string;
|
||||
current_content?: string;
|
||||
prompt_id?: number;
|
||||
schema?: KolSchemaJson;
|
||||
}
|
||||
|
||||
export interface KolAssistSubmitResponse {
|
||||
task_id: string;
|
||||
}
|
||||
|
||||
export interface KolAssistTask {
|
||||
@@ -1350,3 +1355,10 @@ export interface KolSaveDraftRequest {
|
||||
schema: KolSchemaJson;
|
||||
card_config: Record<string, unknown>;
|
||||
}
|
||||
|
||||
export interface KolPromptRevision {
|
||||
id: number;
|
||||
prompt_id: number;
|
||||
revision_no: number;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
Generated
+3
@@ -34,6 +34,9 @@ importers:
|
||||
'@milkdown/vue':
|
||||
specifier: ^7.20.0
|
||||
version: 7.20.0(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.40.0)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.7)(typescript@5.9.3)(vue@3.5.31(typescript@5.9.3))
|
||||
nanoid:
|
||||
specifier: ^5.1.7
|
||||
version: 5.1.7
|
||||
'@tanstack/vue-query':
|
||||
specifier: ^5.96.0
|
||||
version: 5.96.0(vue@3.5.31(typescript@5.9.3))
|
||||
|
||||
Reference in New Issue
Block a user