diff --git a/controller/ai/controller.go b/controller/ai/controller.go index 9e8c48e2..5c9fed77 100644 --- a/controller/ai/controller.go +++ b/controller/ai/controller.go @@ -15,6 +15,7 @@ type IProviderController interface { UnConfiguredProviders(ctx *gin.Context) ([]*ai_dto.ProviderItem, error) SimpleProviders(ctx *gin.Context) ([]*ai_dto.SimpleProviderItem, error) Provider(ctx *gin.Context, id string) (*ai_dto.Provider, error) + SimpleProvider(ctx *gin.Context, id string) (*ai_dto.SimpleProvider, error) LLMs(ctx *gin.Context, driver string) ([]*ai_dto.LLMItem, *ai_dto.ProviderItem, error) Enable(ctx *gin.Context, id string) error Disable(ctx *gin.Context, id string) error diff --git a/controller/ai/iml.go b/controller/ai/iml.go index 0840eeb1..dd9200e0 100644 --- a/controller/ai/iml.go +++ b/controller/ai/iml.go @@ -37,6 +37,10 @@ func (i *imlProviderController) Provider(ctx *gin.Context, id string) (*ai_dto.P return i.module.Provider(ctx, id) } +func (i *imlProviderController) SimpleProvider(ctx *gin.Context, id string) (*ai_dto.SimpleProvider, error) { + return i.module.SimpleProvider(ctx, id) +} + func (i *imlProviderController) LLMs(ctx *gin.Context, driver string) ([]*ai_dto.LLMItem, *ai_dto.ProviderItem, error) { return i.module.LLMs(ctx, driver) } diff --git a/controller/service/iml.go b/controller/service/iml.go index 7227e6b7..2e0d8cff 100644 --- a/controller/service/iml.go +++ b/controller/service/iml.go @@ -318,8 +318,8 @@ func (i *imlServiceController) Get(ctx *gin.Context, id string) (*service_dto.Se return i.module.Get(ctx, id) } -func (i *imlServiceController) Search(ctx *gin.Context, teamID string, keyword string) ([]*service_dto.ServiceItem, error) { - return i.module.Search(ctx, teamID, keyword) +func (i *imlServiceController) Search(ctx *gin.Context, teamIDs string, keyword string, page string, pageSize string, sort string, asc string, serviceKind string) ([]*service_dto.ServiceItem, error) { + return i.module.Search(ctx, teamIDs, keyword) } func (i *imlServiceController) Create(ctx *gin.Context, teamID string, input *service_dto.CreateService) (*service_dto.Service, error) { diff --git a/controller/service/service.go b/controller/service/service.go index 4e2a553e..0509fe9a 100644 --- a/controller/service/service.go +++ b/controller/service/service.go @@ -15,7 +15,7 @@ type IServiceController interface { Get(ctx *gin.Context, id string) (*service_dto.Service, error) // SearchMyServices 搜索服务 SearchMyServices(ctx *gin.Context, teamID string, keyword string) ([]*service_dto.ServiceItem, error) - Search(ctx *gin.Context, teamID string, keyword string) ([]*service_dto.ServiceItem, error) + Search(ctx *gin.Context, teamIDs string, keyword string, page string, pageSize string, sort string, asc string, serviceKind string) ([]*service_dto.ServiceItem, error) // Create 创建 Create(ctx *gin.Context, teamID string, input *service_dto.CreateService) (*service_dto.Service, error) // Edit 编辑 diff --git a/module/ai-key/dto/enum.go b/module/ai-key/dto/enum.go index f5a224f0..29a26280 100644 --- a/module/ai-key/dto/enum.go +++ b/module/ai-key/dto/enum.go @@ -2,9 +2,9 @@ package ai_key_dto var ( KeyNormal KeyStatus = "normal" - KeyExceed KeyStatus = "exceed" + KeyExceed KeyStatus = "exceeded" KeyExpired KeyStatus = "expired" - KeyDisable KeyStatus = "disable" + KeyDisable KeyStatus = "disabled" KeyError KeyStatus = "error" ) diff --git a/module/ai/dto/output.go b/module/ai/dto/output.go index 31272d8e..53481441 100644 --- a/module/ai/dto/output.go +++ b/module/ai/dto/output.go @@ -4,6 +4,14 @@ import ( "github.com/eolinker/go-common/auto" ) +type SimpleProvider struct { + Id string `json:"id"` + Name string `json:"name"` + Config string `json:"config"` + Logo string `json:"logo"` + GetAPIKeyUrl string `json:"get_apikey_url"` +} + type Provider struct { Id string `json:"id"` Name string `json:"name"` @@ -42,11 +50,12 @@ type ProviderItem struct { } type SimpleProviderItem struct { - Id string `json:"id"` - Name string `json:"name"` - Logo string `json:"logo"` - Configured bool `json:"configured"` - Status ProviderStatus `json:"status"` + Id string `json:"id"` + Name string `json:"name"` + Logo string `json:"logo"` + Configured bool `json:"configured"` + DefaultConfig string `json:"default_config"` + Status ProviderStatus `json:"status"` } type LLMItem struct { diff --git a/module/ai/iml.go b/module/ai/iml.go index 7b662f61..45c64bd0 100644 --- a/module/ai/iml.go +++ b/module/ai/iml.go @@ -60,6 +60,19 @@ type imlProviderModule struct { transaction store.ITransaction `autowired:""` } +func (i *imlProviderModule) SimpleProvider(ctx context.Context, id string) (*ai_dto.SimpleProvider, error) { + p, has := model_runtime.GetProvider(id) + if !has { + return nil, fmt.Errorf("ai provider not found") + } + return &ai_dto.SimpleProvider{ + Id: p.ID(), + Name: p.Name(), + Logo: p.Logo(), + GetAPIKeyUrl: p.HelpUrl(), + }, nil +} + func (i *imlProviderModule) Sort(ctx context.Context, input *ai_dto.Sort) error { return i.transaction.Transaction(ctx, func(txCtx context.Context) error { list, err := i.providerService.List(ctx) @@ -194,10 +207,11 @@ func (i *imlProviderModule) SimpleProviders(ctx context.Context) ([]*ai_dto.Simp items := make([]*ai_dto.SimpleProviderItem, 0, len(providers)) for _, v := range providers { item := &ai_dto.SimpleProviderItem{ - Id: v.ID(), - Name: v.Name(), - Logo: v.Logo(), - Status: ai_dto.ProviderDisabled, + Id: v.ID(), + Name: v.Name(), + Logo: v.Logo(), + DefaultConfig: v.DefaultConfig(), + Status: ai_dto.ProviderDisabled, } if info, has := providerMap[v.ID()]; has { item.Configured = true diff --git a/module/ai/module.go b/module/ai/module.go index 0241484b..176c5c38 100644 --- a/module/ai/module.go +++ b/module/ai/module.go @@ -16,6 +16,7 @@ type IProviderModule interface { UnConfiguredProviders(ctx context.Context) ([]*ai_dto.ProviderItem, error) SimpleProviders(ctx context.Context) ([]*ai_dto.SimpleProviderItem, error) Provider(ctx context.Context, id string) (*ai_dto.Provider, error) + SimpleProvider(ctx context.Context, id string) (*ai_dto.SimpleProvider, error) LLMs(ctx context.Context, driver string) ([]*ai_dto.LLMItem, *ai_dto.ProviderItem, error) UpdateProviderStatus(ctx context.Context, id string, enable bool) error UpdateProviderConfig(ctx context.Context, id string, input *ai_dto.UpdateConfig) error diff --git a/plugins/core/ai.go b/plugins/core/ai.go index 39fde966..cc45281b 100644 --- a/plugins/core/ai.go +++ b/plugins/core/ai.go @@ -14,6 +14,7 @@ func (p *plugin) aiAPIs() []pm3.Api { pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai/providers/configured", []string{"context"}, []string{"providers", "backup"}, p.aiProviderController.ConfiguredProviders, access.SystemSettingsAiProviderView), pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/ai/providers", []string{"context"}, []string{"providers"}, p.aiProviderController.SimpleProviders), pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai/provider/config", []string{"context", "query:provider"}, []string{"provider"}, p.aiProviderController.Provider, access.SystemSettingsAiProviderView), + pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/ai/provider", []string{"context", "query:provider"}, []string{"provider"}, p.aiProviderController.SimpleProvider), pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai/provider/llms", []string{"context", "query:provider"}, []string{"llms", "provider"}, p.aiProviderController.LLMs), pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/ai/provider/sort", []string{"context", "body"}, nil, p.aiProviderController.Sort), pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/ai/provider/config", []string{"context", "query:provider", "body"}, nil, p.aiProviderController.UpdateProviderConfig, access.SystemSettingsAiProviderManager), diff --git a/plugins/core/my-team.go b/plugins/core/my-team.go index e8d963a0..7b556606 100644 --- a/plugins/core/my-team.go +++ b/plugins/core/my-team.go @@ -22,7 +22,7 @@ func (p *plugin) MyTeamApi() []pm3.Api { pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/team/member/role", []string{"context", "query:team", "body"}, nil, p.myTeamController.UpdateMemberRole, access.SystemWorkspaceTeamManager, access.TeamTeamMemberManager), // 团队项目操作 - pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/team/services", []string{"context", "query:team", "query:keyword"}, []string{"services"}, p.serviceController.Search, access.SystemWorkspaceServiceViewAll, access.TeamTeamServiceView), + pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/team/services", []string{"context", "query:team", "query:keyword", "query:page", "query:page_size", "query:sort", "query:asc", "query:status"}, []string{"services"}, p.serviceController.Search, access.SystemWorkspaceServiceViewAll, access.TeamTeamServiceView), pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/team/service", []string{"context", "query:team", "body"}, []string{"service"}, p.serviceController.Create, access.SystemWorkspaceServiceManagerAll, access.TeamTeamServiceManager), pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/team/app", []string{"context", "query:team", "body"}, []string{"app"}, p.appController.CreateApp, access.SystemWorkspaceApplicationManagerAll, access.TeamTeamConsumerManager), pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/team/service", []string{"context", "query:service"}, nil, p.serviceController.Delete, access.SystemWorkspaceServiceManagerAll, access.TeamTeamServiceManager), diff --git a/plugins/core/service.go b/plugins/core/service.go index e929e6ef..95a062d0 100644 --- a/plugins/core/service.go +++ b/plugins/core/service.go @@ -17,7 +17,7 @@ func (p *plugin) ServiceApis() []pm3.Api { pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/service/info", []string{"context", "query:service", "body"}, []string{"service"}, p.serviceController.Edit, access.SystemWorkspaceServiceManagerAll, access.TeamTeamServiceManager), pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/service/info", []string{"context", "query:service"}, nil, p.serviceController.Delete, access.SystemWorkspaceServiceManagerAll, access.TeamTeamServiceManager), pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/my_services", []string{"context", "query:team", "query:keyword"}, []string{"services"}, p.serviceController.SearchMyServices), - pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/services", []string{"context", "query:team", "query:keyword"}, []string{"services"}, p.serviceController.Search, access.SystemWorkspaceServiceViewAll, access.TeamTeamServiceView), + pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/services", []string{"context", "query:team", "query:keyword", "query:page", "query:page_size", "query:sort", "query:asc", "query:workspace"}, []string{"services"}, p.serviceController.Search, access.SystemWorkspaceServiceViewAll, access.TeamTeamServiceView), pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/services", []string{"context"}, []string{"services"}, p.serviceController.Simple), pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/services/mine", []string{"context"}, []string{"services"}, p.serviceController.MySimple), // 应用相关