Files
st-react/server/model/app/response/ai_config.go
Echo f4e166c5ee 🎉 初始化项目
Signed-off-by: Echo <1711788888@qq.com>
2026-02-27 21:52:00 +08:00

89 lines
2.4 KiB
Go

package response
import (
"encoding/json"
"time"
"git.echol.cn/loser/st/server/model/app"
)
// AIConfigResponse AI配置响应
type AIConfigResponse struct {
ID uint `json:"id"`
Name string `json:"name"`
Provider string `json:"provider"`
BaseURL string `json:"baseUrl"`
APIKey string `json:"apiKey"` // 前端显示时应该脱敏
Models []string `json:"models"`
DefaultModel string `json:"defaultModel"`
Settings map[string]interface{} `json:"settings"`
IsActive bool `json:"isActive"`
IsDefault bool `json:"isDefault"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
// AIConfigListResponse AI配置列表响应
type AIConfigListResponse struct {
List []AIConfigResponse `json:"list"`
Total int64 `json:"total"`
}
// TestAIConfigResponse 测试AI配置响应
type TestAIConfigResponse struct {
Success bool `json:"success"`
Message string `json:"message"`
Latency int64 `json:"latency"` // 响应延迟(ms)
}
// GetModelsResponse 获取模型列表响应
type GetModelsResponse struct {
Models []ModelInfo `json:"models"`
}
// ModelInfo 模型信息
type ModelInfo struct {
ID string `json:"id"`
Name string `json:"name"`
OwnedBy string `json:"ownedBy"`
}
// ToAIConfigResponse 转换为AI配置响应结构
func ToAIConfigResponse(config *app.AIConfig) AIConfigResponse {
resp := AIConfigResponse{
ID: config.ID,
Name: config.Name,
Provider: config.Provider,
BaseURL: config.BaseURL,
APIKey: maskAPIKey(config.APIKey),
DefaultModel: config.DefaultModel,
IsActive: config.IsActive,
IsDefault: config.IsDefault,
CreatedAt: config.CreatedAt,
UpdatedAt: config.UpdatedAt,
}
// 解析 JSON 字段
if len(config.Models) > 0 {
var models []string
json.Unmarshal(config.Models, &models)
resp.Models = models
}
if len(config.Settings) > 0 {
var settings map[string]interface{}
json.Unmarshal(config.Settings, &settings)
resp.Settings = settings
}
return resp
}
// maskAPIKey 脱敏API Key
func maskAPIKey(apiKey string) string {
if len(apiKey) <= 8 {
return "****"
}
return apiKey[:4] + "****" + apiKey[len(apiKey)-4:]
}