lty/qy-lty-admin/lib/api/ai-models.ts
pmc bd95ba470c feat: update admin panel, API modules, and add migrations
- Update food, outfits, props, home-decor pages and components
- Add permissions page and sidebar updates
- Update API client and all API modules (auth, food, dances, etc.)
- Add card model migrations for optional fields
- Update Django views, serializers, and authentication
- Add affinity level migrations and user app updates
- Add project documentation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 13:06:50 +08:00

85 lines
2.7 KiB
TypeScript
Raw Permalink 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 { AiModel } from "./types"
import { apiClient } from "./client"
import type { PaginatedResponse, PaginationParams } from "./client"
// 将后端 Bot 数据映射到前端 AiModel 类型
// 后端 Bot 只有 id, name, description其他字段用默认值
function mapBackendBot(b: any): AiModel {
return {
id: String(b.id),
name: b.name,
version: "1.0.0",
description: b.description || "",
status: "活跃",
parameters: undefined,
accuracy: undefined,
trainingData: undefined,
createdAt: undefined,
updatedAt: undefined,
}
}
// 获取AI模型(Bot)列表
export const getAiModels = async (params?: PaginationParams): Promise<PaginatedResponse<AiModel>> => {
const page = params?.page || 1
const pageSize = params?.pageSize || 10
const searchParam = params?.search ? `&search=${encodeURIComponent(params.search)}` : ""
const response = await apiClient.get(
`/ai/bots/?page=${page}&page_size=${pageSize}${searchParam}`
)
const data = response.data?.data || response.data
const results: any[] = data.results || (Array.isArray(data) ? data : [data])
const total = data.count || results.length
return {
items: results.map(mapBackendBot),
total,
page,
pageSize,
totalPages: Math.ceil(total / pageSize),
}
}
// 获取单个AI模型
export const getAiModel = async (id: string): Promise<AiModel> => {
const response = await apiClient.get(`/ai/bots/${id}/`)
const data = response.data?.data || response.data
return mapBackendBot(data)
}
// 创建AI模型需要管理员权限
export const createAiModel = async (modelData: Partial<AiModel>): Promise<AiModel> => {
const payload = {
name: modelData.name,
description: modelData.description || "",
}
const response = await apiClient.post(`/ai/bots/`, payload)
const data = response.data?.data || response.data
return mapBackendBot(data)
}
// 更新AI模型需要管理员权限
export const updateAiModel = async (id: string, modelData: Partial<AiModel>): Promise<AiModel> => {
const payload: any = {}
if (modelData.name !== undefined) payload.name = modelData.name
if (modelData.description !== undefined) payload.description = modelData.description
const response = await apiClient.patch(`/ai/bots/${id}/`, payload)
const data = response.data?.data || response.data
return mapBackendBot(data)
}
// 删除AI模型需要管理员权限
export const deleteAiModel = async (id: string): Promise<boolean> => {
await apiClient.delete(`/ai/bots/${id}/`)
return true
}
// 发布AI模型Bot没有发布概念这里直接返回当前数据
export const publishAiModel = async (id: string): Promise<AiModel> => {
return getAiModel(id)
}