优化页面交互并增强 Provider 配置能力
- 表单下拉框不再用 label 包裹,改为 div + aria-label,避免点击后 下拉面板瞬间关闭 - Provider 卡片新增「从上游获取模型」和「修改」入口,支持编辑 base URL、API Key 与 api_mode,凭据写入对应的环境变量 - 服务端抽出 provider-model-discovery 统一不同 api_mode 的模型发现, 旧的 custom_providers 与新的 providers 字典结构都能正确更新 - Agent Bridge 改为后台启动,HTTP 接口在 Python 运行时就绪前即可用; worker 连接被拒时按类型重试,不重放可能已产生副作用的请求 - 断线重连后恢复 profiles、models 与会话列表,健康检查改为自调度 的 setTimeout,离线时 2 秒后重试 - 批量删除确认文案改用 Popconfirm content,避免变成侧栏触发器文本
This commit is contained in:
@@ -41,7 +41,8 @@ export const useAppStore = defineStore('app', () => {
|
||||
const customModels = ref<Record<string, string[]>>({})
|
||||
const modelAliases = ref<Record<string, Record<string, string>>>({})
|
||||
const modelVisibility = ref<ModelVisibility>({})
|
||||
const healthPollTimer = ref<ReturnType<typeof setInterval>>()
|
||||
const healthPollTimer = ref<ReturnType<typeof setTimeout>>()
|
||||
let healthPollGeneration = 0
|
||||
const nodeVersion = ref('')
|
||||
const isDocker = ref(false)
|
||||
|
||||
@@ -301,13 +302,19 @@ export const useAppStore = defineStore('app', () => {
|
||||
|
||||
function startHealthPolling(interval = 30000) {
|
||||
stopHealthPolling()
|
||||
checkConnection()
|
||||
healthPollTimer.value = setInterval(checkConnection, interval)
|
||||
const generation = healthPollGeneration
|
||||
const poll = async () => {
|
||||
await checkConnection()
|
||||
if (generation !== healthPollGeneration) return
|
||||
healthPollTimer.value = setTimeout(poll, connected.value ? interval : Math.min(interval, 2000))
|
||||
}
|
||||
void poll()
|
||||
}
|
||||
|
||||
function stopHealthPolling() {
|
||||
healthPollGeneration++
|
||||
if (healthPollTimer.value) {
|
||||
clearInterval(healthPollTimer.value)
|
||||
clearTimeout(healthPollTimer.value)
|
||||
healthPollTimer.value = undefined
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user