-
-
Notifications
You must be signed in to change notification settings - Fork 182
Closed
Description
📋 描述
当前 Provider 仅支持单一 groupTag(字符串)。需要支持 Provider 归属多个分组,匹配到用户的多分组(用户端已支持逗号分隔)。
🎯 目标
- Schema 支持 provider 多分组(向后兼容)
- 选择器支持多分组匹配(包含任一即通过)
- UI 支持多选分组(创建/编辑表单)
📍 当前实现
- Provider:
src/drizzle/schema.ts:76groupTag: varchar('group_tag', ...) - 选择器:用户端多分组支持(逗号分隔)
src/app/v1/_lib/proxy/provider-selector.ts:359
🔧 实现方案
子任务清单
- 数据层:新增可选
groupTags: string[] | null- 文件:
src/drizzle/schema.ts:63 - 技术要点:
jsonb('group_tags').$type<string[]|null>().default(null);保留旧字段兼容迁移
- 文件:
- 选择器:匹配逻辑更新
- 文件:
src/app/v1/_lib/proxy/provider-selector.ts:367 - 技术要点: 若 provider 存在
groupTags则与userGroups求交集判定
- 文件:
- 表单:多选输入(chips)
- 文件:
src/app/[locale]/settings/providers/_components/forms/provider-form.tsx:1
- 文件:
技术细节
// schema 片段(向后兼容保留 groupTag)
export const providers = pgTable('providers', {
// ...
groupTag: varchar('group_tag', { length: 50 }),
groupTags: jsonb('group_tags').$type<string[] | null>().default(null),
});✅ 验收标准
- 具备多分组持久化与查询能力
- 选择器依据多分组过滤有效
- UI 可新增/编辑多个分组值
📝 备注
为后续“分组降级策略”提供数据基础。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels