refactor(iod): 重构数联网相关组件和逻辑

-优化了 Data、Scene 和 Team组件的逻辑,使用 currentIodMessage 替代复杂的条件判断- 改进了 IodRelevant 组件的动画和数据处理方式
- 调整了 Message 组件以支持数联网搜索功能
- 重构了 PlaygroundIodProvider,简化了上下文类型和数据处理
- 更新了数据库相关操作,使用新的 HistoryMessage 类型
- 新增了 IodDb 类来管理数联网连接配置
This commit is contained in:
zhaoweijie
2025-08-24 19:00:49 +08:00
parent f9763778fa
commit 2b4885ae2d
20 changed files with 415 additions and 399 deletions

View File

@@ -1,28 +1,6 @@
import { Knowledge } from "@/db/knowledge"
import { create } from "zustand"
import { AllIodRegistryEntry } from "@/types/iod.ts"
type WebSearch = {
search_engine: string
search_url: string
search_query: string
search_results: {
title: string
link: string
}[]
}
export type Message = {
isBot: boolean
name: string
message: string
webSources: any[]
iodSources: AllIodRegistryEntry
images?: string[]
search?: WebSearch
reasoning_time_taken?: number
id?: string
messageType?: string
}
import { Message } from "esbuild"
export type ChatHistory = {
role: "user" | "assistant" | "system"
@@ -36,8 +14,11 @@ type State = {
setMessages: (messages: Message[]) => void
history: ChatHistory
setHistory: (history: ChatHistory) => void
currentMeteringEntry: {data: MeteringEntry, loading: boolean}
setCurrentMeteringEntry: (meteringEntry: {data: MeteringEntry, loading: boolean}) => void
currentMeteringEntry: { data: MeteringEntry; loading: boolean }
setCurrentMeteringEntry: (meteringEntry: {
data: MeteringEntry
loading: boolean
}) => void
meteringEntries: MeteringEntry[]
setMeteringEntries: (meteringEntries: MeteringEntry[]) => void
streaming: boolean
@@ -123,9 +104,12 @@ export const useStoreMessageOption = create<State>((set) => ({
setMessages: (messages) => set({ messages }),
history: [],
setHistory: (history) => set({ history }),
currentMeteringEntry: {data: {} as MeteringEntry, loading: false},
setCurrentMeteringEntry: (currentMeteringEntry) => set({ currentMeteringEntry }),
meteringEntries: JSON.parse(localStorage.getItem("meteringEntries") || JSON.stringify([])),
currentMeteringEntry: { data: {} as MeteringEntry, loading: false },
setCurrentMeteringEntry: (currentMeteringEntry) =>
set({ currentMeteringEntry }),
meteringEntries: JSON.parse(
localStorage.getItem("meteringEntries") || JSON.stringify([])
),
setMeteringEntries: (meteringEntries) => set({ meteringEntries }),
streaming: false,
setStreaming: (streaming) => set({ streaming }),