feat: 新增模型管理和供应商配置功能

### v1.1.0
- #### Added
  - 新增 AI 笔记风格选择
  - 新增 AI 笔记返回格式选择
  - 添加 AI 自定义笔记备注 Prompt
  - 添加任务失败重试
  - 添加全局设置页,可在设置页进行模型设置

- #### Optimize
  - 优化前端样式,优化用户体验
  - 增加生成中间产物,可用于失败后加快生成速度
- #### Fix
  - 修复视频截图视频过早删除错误
This commit is contained in:
思诺特
2025-04-26 23:40:17 +08:00
parent 1323cfd1ec
commit 171dea5e0d
51 changed files with 2511 additions and 414 deletions

View File

@@ -1,6 +1,11 @@
import { create } from 'zustand'
import { IProvider } from '@/types'
import { getProviderList } from '@/services/model.ts'
import {
addProvider,
getProviderById,
getProviderList,
updateProviderById,
} from '@/services/model.ts'
interface ProviderStore {
provider: IProvider[]
@@ -9,12 +14,14 @@ interface ProviderStore {
getProviderById: (id: number) => IProvider | undefined
getProviderList: () => IProvider[]
fetchProviderList: () => Promise<void>
loadProviderById: (id: string) => Promise<void>
addNewProvider: (provider: IProvider) => Promise<void>
updateProvider: (provider: IProvider) => Promise<void>
}
export const useProviderStore = create<ProviderStore>((set, get) => ({
provider: [],
// 添加或更新一个 provider
setProvider: newProvider =>
set(state => {
@@ -30,10 +37,60 @@ export const useProviderStore = create<ProviderStore>((set, get) => ({
// 设置整个 provider 列表
setAllProviders: providers => set({ provider: providers }),
loadProviderById: async (id: string) => {
const res = await getProviderById(id)
if (res.data.code === 0) {
const item = res.data.data
console.log('Provider ', item)
return {
id: item.id,
name: item.name,
logo: item.logo,
apiKey: item.api_key,
baseUrl: item.base_url,
type: item.type,
enabled: item.enabled,
}
} else {
console.log('Provider not found')
}
},
addNewProvider: async (provider: IProvider) => {
const payload = {
...provider,
api_key: provider.apiKey,
base_url: provider.baseUrl,
}
try {
const res = await addProvider(payload)
if (res.data.code === 0) {
const item = res.data.data
console.log('Provider ', item)
await get().fetchProviderList()
}
} catch (error) {
console.error('Error fetching provider:', error)
}
},
// 按 id 获取单个 provider
getProviderById: id => get().provider.find(p => p.id === id),
updateProvider: async (provider: IProvider) => {
try {
const data = {
...provider,
api_key: provider.apiKey,
base_url: provider.baseUrl,
}
const res = await updateProviderById(data)
if (res.data.code === 0) {
const item = res.data.data
console.log('Provider ', item)
await get().fetchProviderList()
}
} catch (error) {
console.error('Error fetching provider:', error)
}
},
getProviderList: () => get().provider,
fetchProviderList: async () => {
try {
@@ -55,6 +112,7 @@ export const useProviderStore = create<ProviderStore>((set, get) => ({
apiKey: item.api_key,
baseUrl: item.base_url,
type: item.type,
enabled: item.enabled,
}
}
),