mirror of
https://github.com/2930134478/AI-CS.git
synced 2026-06-15 08:45:41 +08:00
69 lines
2.3 KiB
Go
69 lines
2.3 KiB
Go
package controller
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/2930134478/AI-CS/backend/service"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// EmbeddingConfigController 知识库向量配置控制器
|
|
type EmbeddingConfigController struct {
|
|
service *service.EmbeddingConfigService
|
|
}
|
|
|
|
// NewEmbeddingConfigController 创建控制器实例
|
|
func NewEmbeddingConfigController(s *service.EmbeddingConfigService) *EmbeddingConfigController {
|
|
return &EmbeddingConfigController{service: s}
|
|
}
|
|
|
|
// Get 获取当前配置(API Key 脱敏)
|
|
// GET /agent/embedding-config?user_id=1
|
|
func (e *EmbeddingConfigController) Get(c *gin.Context) {
|
|
_, err := parseUintQuery(c, "user_id")
|
|
if err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": "user_id 不合法"})
|
|
return
|
|
}
|
|
result, err := e.service.GetForAPI()
|
|
if err != nil {
|
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, result)
|
|
}
|
|
|
|
// Update 更新配置(仅管理员)
|
|
// PUT /agent/embedding-config
|
|
// Body: { "user_id": 1, "embedding_type": "openai", "api_url": "...", "api_key": "...", "model": "...", "customer_can_use_kb": true }
|
|
func (e *EmbeddingConfigController) Update(c *gin.Context) {
|
|
var req struct {
|
|
UserID uint `json:"user_id" binding:"required"`
|
|
EmbeddingType *string `json:"embedding_type"`
|
|
APIURL *string `json:"api_url"`
|
|
APIKey *string `json:"api_key"`
|
|
Model *string `json:"model"`
|
|
CustomerCanUseKB *bool `json:"customer_can_use_kb"`
|
|
VisitorWebSearchEnabled *bool `json:"visitor_web_search_enabled"`
|
|
WebSearchSource *string `json:"web_search_source"`
|
|
}
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": "请求参数错误"})
|
|
return
|
|
}
|
|
result, err := e.service.Update(req.UserID, service.UpdateEmbeddingConfigInput{
|
|
EmbeddingType: req.EmbeddingType,
|
|
APIURL: req.APIURL,
|
|
APIKey: req.APIKey,
|
|
Model: req.Model,
|
|
CustomerCanUseKB: req.CustomerCanUseKB,
|
|
VisitorWebSearchEnabled: req.VisitorWebSearchEnabled,
|
|
WebSearchSource: req.WebSearchSource,
|
|
})
|
|
if err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, result)
|
|
}
|