embedding_config_controller.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. }
  42. if err := c.ShouldBindJSON(&req); err != nil {
  43. c.JSON(http.StatusBadRequest, gin.H{"error": "请求参数错误"})
  44. return
  45. }
  46. result, err := e.service.Update(req.UserID, service.UpdateEmbeddingConfigInput{
  47. EmbeddingType: req.EmbeddingType,
  48. APIURL: req.APIURL,
  49. APIKey: req.APIKey,
  50. Model: req.Model,
  51. CustomerCanUseKB: req.CustomerCanUseKB,
  52. })
  53. if err != nil {
  54. c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
  55. return
  56. }
  57. c.JSON(http.StatusOK, result)
  58. }