feat(desktop): 优化一些逻辑

1. 优化通知配置

2. 优化命名规范

3. 优化代码逻辑
This commit is contained in:
2026-01-10 23:37:28 +08:00
parent bce411af7e
commit 36cf521851
30 changed files with 674 additions and 575 deletions

View File

@@ -1,44 +1,44 @@
import { z } from 'zod'
import { publicProcedure, router } from '@rpc/init'
import { publicProcedure, router } from '@rpc/index'
import Store from 'electron-store'
import { CONFIG_STORE_KEY } from '@rpc/constants/store_key'
import { CHAT_MODELS_KEY, CONFIG_STORE_KEY, NOTIFICATION_KEY } from '@rpc/constants/store_key'
import { ILLMConfigSchema, INoticeConfigSchema } from '@shared/types/IConfig'
// 兼容性处理获取 Store 构造函数
const StoreClass = (Store as any).default || Store
const store = new StoreClass({ encryptionKey: CONFIG_STORE_KEY })
export const configRouter = router({
// 获取配置
// src/main/rpc/routers/configRouter.ts
// 获取大模型配置
getChatConfigs: publicProcedure.query(() => {
const data = store.get('chatModels')
const data = store.get(CHAT_MODELS_KEY)
// 检查是否包含必要的嵌套 Key如果没有说明是旧版本数据
if (data && !data.reading && !data.summary) {
console.log('检测到旧版本配置,正在重置...')
store.delete('chatModels') // 删除旧的根键
store.delete(CHAT_MODELS_KEY) // 删除旧的根键
return null
}
return data || null
}),
// 分类保存配置
saveChatConfig: publicProcedure
.input(
z.object({
type: z.enum(['reading', 'summary']), // 明确支持 reading
config: z.object({
apiKey: z.string(),
baseURL: z.string(),
modelName: z.string(),
temperature: z.number()
})
})
)
.mutation(async ({ input }) => {
// 存储到 chatModels.reading 或 chatModels.summary
store.set(`chatModels.${input.type}`, input.config)
return { success: true }
})
// 保存大模型配置
saveChatConfig: publicProcedure.input(ILLMConfigSchema).mutation(async ({ input }) => {
const { type, config } = input
store.set(`${CHAT_MODELS_KEY}.${type}`, config)
return { success: true }
}),
// 获取通知配置
getNoticeConfigs: publicProcedure.query(() => {
const data = store.get(NOTIFICATION_KEY)
return data || null
}),
// 保存通知配置
saveNoticeConfigs: publicProcedure.input(INoticeConfigSchema).mutation(async ({ input }) => {
const {} = input
store.set(NOTIFICATION_KEY, input)
return { success: true }
})
})