feat: add api key

This commit is contained in:
scarqin
2024-12-26 15:39:52 +08:00
parent 977919fdb1
commit 4a84a69fe7
4 changed files with 23 additions and 31 deletions
@@ -49,7 +49,6 @@ const AiSettingList = () => {
const { fetchData } = useFetch()
const [aiSettingList, setAiSettingList] = useState<AiSettingListItem[]>([])
const [loading, setLoading] = useState<boolean>(false)
// const [updateLoading, setUpdateLoading] = useState<boolean>(false)
const modalRef = useRef<AiSettingModalContentHandle>()
const { setAiConfigFlushed, accessData } = useGlobalContext()
@@ -21,7 +21,7 @@ const ApiKeyContent: React.FC<ApiKeyContentProps> = forwardRef(({ provider, enti
useEffect(() => {
try {
const isNeverExpire = entity.expire_time === '0'
const isNeverExpire = entity.expire_time === 0
setNeverExpire(isNeverExpire)
form.setFieldsValue({
name: entity.name,
@@ -41,28 +41,22 @@ const ApiKeyContent: React.FC<ApiKeyContentProps> = forwardRef(({ provider, enti
try {
const values = await form.validateFields()
const { expire_time, ...restValues } = values
const expireTime = neverExpire ? '0' : expire_time?.format('YYYY-MM-DD HH:mm:ss')
const expireTime = neverExpire ? 0 : expire_time.valueOf()
const [response, error] = await fetchData<BasicResponse<null>>('ai/resource/key', {
method: 'POST',
eoParams: { provider: provider?.id },
const response = await fetchData<BasicResponse<null>>('ai/resource/key', {
method: entity.id ? 'PUT' : 'POST',
eoParams: { provider: provider?.id, id: entity.id },
eoBody: { ...restValues, expire_time: expireTime },
eoTransformKeys: ['config']
})
if (error) {
console.error('API request failed:', error)
message.error($t(RESPONSE_TIPS.error))
throw error
}
const { code, msg } = response
if (code === STATUS_CODE.SUCCESS) {
message.success(msg || $t(RESPONSE_TIPS.success))
return true
} else {
message.error(msg || $t(RESPONSE_TIPS.error))
throw new Error(msg || $t(RESPONSE_TIPS.error))
return false
}
} catch (error) {
console.error('Validation failed:', error)
@@ -10,6 +10,7 @@ import { $t } from '@common/locales'
import { checkAccess } from '@common/utils/permission'
import AIProviderSelect, { AIProvider } from '@core/components/AIProviderSelect'
import { App, Divider, Space, Typography } from 'antd'
import dayjs from 'dayjs'
import React, { useEffect, useRef, useState } from 'react'
import ApiKeyContent from './components/ApiKeyContent'
import { APIKey, EditAPIKey } from './types'
@@ -45,7 +46,8 @@ const KeySettings: React.FC = () => {
message.loading($t(RESPONSE_TIPS.loading))
const { code, data, msg } = await fetchData<BasicResponse<{ info: EditAPIKey }>>('ai/resource/key', {
method: 'GET',
eoParams: { provider: selectedProvider, id: entity!.id }
eoParams: { provider: selectedProvider, id: entity!.id },
eoApiPrefix: 'http://uat.apikit.com:11204/mockApi/aoplatform/api/v1/'
})
message.destroy()
if (code !== STATUS_CODE.SUCCESS) {
@@ -58,7 +60,7 @@ const KeySettings: React.FC = () => {
entity = {
name: `key${total}`,
config: provider.default_config,
expire_time: '0'
expire_time: 0
} as EditAPIKey
}
const newEntity = entity as EditAPIKey
@@ -67,10 +69,15 @@ const KeySettings: React.FC = () => {
title: mode === 'add' ? $t(`添加 ${provider?.name} APIKey`) : $t('编辑 APIKey'),
content: <ApiKeyContent ref={modalRef} entity={newEntity} provider={provider} />,
onOk: () => {
return modalRef.current?.handleOk().then((res) => {
if (res === true) {
pageListRef.current?.reload()
}
return new Promise((resolve, reject) => {
modalRef.current?.handleOk().then((res: boolean) => {
if (res === true) {
pageListRef.current?.reload()
resolve(res)
return
}
reject()
})
})
},
width: 600,
@@ -305,7 +312,9 @@ const KeySettings: React.FC = () => {
title: $t('过期时间'),
dataIndex: 'expire_time',
render: (dom: React.ReactNode, entity: APIKey) => {
return entity.expire_time === '0' ? $t('永不过期') : entity.expire_time
return entity.expire_time === 0
? $t('永不过期')
: dayjs(Number(entity.expire_time)).format('YYYY-MM-DD HH:mm:ss')
}
},
...operation
@@ -1,14 +1,4 @@
export interface APIKey extends Record<string, unknown> {
id: string
name: string
status: 'normal' | 'exceeded' | 'expired' | 'disabled' | 'error'
use_token: number
update_time: string
expire_time: string
can_delete: boolean
priority: number
}
export interface APIKey extends EditAPIKey {
status: 'normal' | 'exceeded' | 'expired' | 'disabled' | 'error'
@@ -22,5 +12,5 @@ export interface EditAPIKey {
id?: string
name: string
config: string
expire_time: string
expire_time: number
}