Commit aee5b8ca by t0ng7u

feat(pricing): add default vendor icons with LobeHub color support

- Add defaultVendorIcons mapping for major AI vendors
- Update getOrCreateVendor to automatically set vendor icons
- Add getDefaultVendorIcon helper function
- Support LobeHub icons Color variants (e.g., Claude.Color, Gemini.Color)
- Fix issue where default vendors were created without icons

This ensures that when new models are encountered, their vendors
will be created with appropriate colored icons for better UI display.

Affected vendors include:
- OpenAI, Anthropic, Google, Moonshot, 智谱, 阿里巴巴
- DeepSeek, MiniMax, 百度, 讯飞, 腾讯, Cohere
- Cloudflare, 360, 零一万物, Jina, Mistral, xAI
- Meta, 字节跳动, 快手, 即梦, Vidu, Microsoft/Azure
parent fc7234a1
...@@ -37,6 +37,36 @@ var defaultVendorRules = map[string]string{ ...@@ -37,6 +37,36 @@ var defaultVendorRules = map[string]string{
"vidu": "Vidu", "vidu": "Vidu",
} }
// 供应商默认图标映射
var defaultVendorIcons = map[string]string{
"OpenAI": "OpenAI",
"Anthropic": "Claude.Color",
"Google": "Gemini.Color",
"Moonshot": "Moonshot",
"智谱": "Zhipu.Color",
"阿里巴巴": "Qwen.Color",
"DeepSeek": "DeepSeek.Color",
"MiniMax": "Minimax.Color",
"百度": "Wenxin.Color",
"讯飞": "Spark.Color",
"腾讯": "Hunyuan.Color",
"Cohere": "Cohere.Color",
"Cloudflare": "Cloudflare.Color",
"360": "Ai360.Color",
"零一万物": "Yi.Color",
"Jina": "Jina",
"Mistral": "Mistral.Color",
"xAI": "XAI",
"Meta": "Ollama",
"字节跳动": "Doubao.Color",
"快手": "Kling.Color",
"即梦": "Jimeng.Color",
"Vidu": "Vidu",
"微软": "AzureAI",
"Microsoft": "AzureAI",
"Azure": "AzureAI",
}
// initDefaultVendorMapping 简化的默认供应商映射 // initDefaultVendorMapping 简化的默认供应商映射
func initDefaultVendorMapping(metaMap map[string]*Model, vendorMap map[int]*Vendor, enableAbilities []AbilityWithChannel) { func initDefaultVendorMapping(metaMap map[string]*Model, vendorMap map[int]*Vendor, enableAbilities []AbilityWithChannel) {
for _, ability := range enableAbilities { for _, ability := range enableAbilities {
...@@ -78,6 +108,7 @@ func getOrCreateVendor(vendorName string, vendorMap map[int]*Vendor) int { ...@@ -78,6 +108,7 @@ func getOrCreateVendor(vendorName string, vendorMap map[int]*Vendor) int {
newVendor := &Vendor{ newVendor := &Vendor{
Name: vendorName, Name: vendorName,
Status: 1, Status: 1,
Icon: getDefaultVendorIcon(vendorName),
} }
if err := newVendor.Insert(); err != nil { if err := newVendor.Insert(); err != nil {
...@@ -87,3 +118,11 @@ func getOrCreateVendor(vendorName string, vendorMap map[int]*Vendor) int { ...@@ -87,3 +118,11 @@ func getOrCreateVendor(vendorName string, vendorMap map[int]*Vendor) int {
vendorMap[newVendor.Id] = newVendor vendorMap[newVendor.Id] = newVendor
return newVendor.Id return newVendor.Id
} }
// 获取供应商默认图标
func getDefaultVendorIcon(vendorName string) string {
if icon, exists := defaultVendorIcons[vendorName]; exists {
return icon
}
return ""
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment