embedding_config_controller.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package controller
  2. import (
  3. "net/http"
  4. "github.com/2930134478/AI-CS/backend/service"
  5. "github.com/gin-gonic/gin"
  6. )
  7. // EmbeddingConfigController 知识库向量配置控制器
  8. type EmbeddingConfigController struct {
  9. service *service.EmbeddingConfigService
  10. }
  11. // NewEmbeddingConfigController 创建控制器实例
  12. func NewEmbeddingConfigController(s *service.EmbeddingConfigService) *EmbeddingConfigController {
  13. return &EmbeddingConfigController{service: s}
  14. }
  15. // Get 获取当前配置(API Key 脱敏)
  16. // GET /agent/embedding-config?user_id=1
  17. func (e *EmbeddingConfigController) Get(c *gin.Context) {
  18. _, err := parseUintQuery(c, "user_id")
  19. if err != nil {
  20. c.JSON(http.StatusBadRequest, gin.H{"error": "user_id 不合法"})
  21. return
  22. }
  23. result, err := e.service.GetForAPI()
  24. if err != nil {
  25. c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
  26. return
  27. }
  28. c.JSON(http.StatusOK, result)
  29. }
  30. // Update 更新配置(仅管理员)
  31. // PUT /agent/embedding-config
  32. // Body: { "user_id": 1, "embedding_type": "openai", "api_url": "...", "api_key": "...", "model": "...", "customer_can_use_kb": true }
  33. func (e *EmbeddingConfigController) Update(c *gin.Context) {
  34. var req struct {
  35. UserID uint `json:"user_id" binding:"required"`
  36. EmbeddingType *string `json:"embedding_type"`
  37. APIURL *string `json:"api_url"`
  38. APIKey *string `json:"api_key"`
  39. Model *string `json:"model"`
  40. CustomerCanUseKB *bool `json:"customer_can_use_kb"`
  41. VisitorWebSearchEnabled *bool `json:"visitor_web_search_enabled"`
  42. WebSearchSource *string `json:"web_search_source"`
  43. }
  44. if err := c.ShouldBindJSON(&req); err != nil {
  45. c.JSON(http.StatusBadRequest, gin.H{"error": "请求参数错误"})
  46. return
  47. }
  48. result, err := e.service.Update(req.UserID, service.UpdateEmbeddingConfigInput{
  49. EmbeddingType: req.EmbeddingType,
  50. APIURL: req.APIURL,
  51. APIKey: req.APIKey,
  52. Model: req.Model,
  53. CustomerCanUseKB: req.CustomerCanUseKB,
  54. VisitorWebSearchEnabled: req.VisitorWebSearchEnabled,
  55. WebSearchSource: req.WebSearchSource,
  56. })
  57. if err != nil {
  58. c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
  59. return
  60. }
  61. c.JSON(http.StatusOK, result)
  62. }