feat(channel-monitor): 暴露 API 模式接口字段
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
parent
a5072f77bd
commit
917bd877ae
@ -38,6 +38,7 @@ func NewChannelMonitorHandler(monitorService *service.ChannelMonitorService) *Ch
|
|||||||
type channelMonitorCreateRequest struct {
|
type channelMonitorCreateRequest struct {
|
||||||
Name string `json:"name" binding:"required,max=100"`
|
Name string `json:"name" binding:"required,max=100"`
|
||||||
Provider string `json:"provider" binding:"required,oneof=openai anthropic gemini"`
|
Provider string `json:"provider" binding:"required,oneof=openai anthropic gemini"`
|
||||||
|
APIMode string `json:"api_mode" binding:"omitempty,oneof=chat_completions responses"`
|
||||||
Endpoint string `json:"endpoint" binding:"required,max=500"`
|
Endpoint string `json:"endpoint" binding:"required,max=500"`
|
||||||
APIKey string `json:"api_key" binding:"required,max=2000"`
|
APIKey string `json:"api_key" binding:"required,max=2000"`
|
||||||
PrimaryModel string `json:"primary_model" binding:"required,max=200"`
|
PrimaryModel string `json:"primary_model" binding:"required,max=200"`
|
||||||
@ -54,6 +55,7 @@ type channelMonitorCreateRequest struct {
|
|||||||
type channelMonitorUpdateRequest struct {
|
type channelMonitorUpdateRequest struct {
|
||||||
Name *string `json:"name" binding:"omitempty,max=100"`
|
Name *string `json:"name" binding:"omitempty,max=100"`
|
||||||
Provider *string `json:"provider" binding:"omitempty,oneof=openai anthropic gemini"`
|
Provider *string `json:"provider" binding:"omitempty,oneof=openai anthropic gemini"`
|
||||||
|
APIMode *string `json:"api_mode" binding:"omitempty,oneof=chat_completions responses"`
|
||||||
Endpoint *string `json:"endpoint" binding:"omitempty,max=500"`
|
Endpoint *string `json:"endpoint" binding:"omitempty,max=500"`
|
||||||
APIKey *string `json:"api_key" binding:"omitempty,max=2000"`
|
APIKey *string `json:"api_key" binding:"omitempty,max=2000"`
|
||||||
PrimaryModel *string `json:"primary_model" binding:"omitempty,max=200"`
|
PrimaryModel *string `json:"primary_model" binding:"omitempty,max=200"`
|
||||||
@ -72,6 +74,7 @@ type channelMonitorResponse struct {
|
|||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Provider string `json:"provider"`
|
Provider string `json:"provider"`
|
||||||
|
APIMode string `json:"api_mode"`
|
||||||
Endpoint string `json:"endpoint"`
|
Endpoint string `json:"endpoint"`
|
||||||
APIKeyMasked string `json:"api_key_masked"`
|
APIKeyMasked string `json:"api_key_masked"`
|
||||||
APIKeyDecryptFailed bool `json:"api_key_decrypt_failed"`
|
APIKeyDecryptFailed bool `json:"api_key_decrypt_failed"`
|
||||||
@ -138,6 +141,7 @@ func channelMonitorToResponse(m *service.ChannelMonitor) *channelMonitorResponse
|
|||||||
ID: m.ID,
|
ID: m.ID,
|
||||||
Name: m.Name,
|
Name: m.Name,
|
||||||
Provider: m.Provider,
|
Provider: m.Provider,
|
||||||
|
APIMode: m.APIMode,
|
||||||
Endpoint: m.Endpoint,
|
Endpoint: m.Endpoint,
|
||||||
APIKeyMasked: maskAPIKey(m.APIKey),
|
APIKeyMasked: maskAPIKey(m.APIKey),
|
||||||
APIKeyDecryptFailed: m.APIKeyDecryptFailed,
|
APIKeyDecryptFailed: m.APIKeyDecryptFailed,
|
||||||
@ -303,6 +307,7 @@ func (h *ChannelMonitorHandler) Create(c *gin.Context) {
|
|||||||
m, err := h.monitorService.Create(c.Request.Context(), service.ChannelMonitorCreateParams{
|
m, err := h.monitorService.Create(c.Request.Context(), service.ChannelMonitorCreateParams{
|
||||||
Name: req.Name,
|
Name: req.Name,
|
||||||
Provider: req.Provider,
|
Provider: req.Provider,
|
||||||
|
APIMode: req.APIMode,
|
||||||
Endpoint: req.Endpoint,
|
Endpoint: req.Endpoint,
|
||||||
APIKey: req.APIKey,
|
APIKey: req.APIKey,
|
||||||
PrimaryModel: req.PrimaryModel,
|
PrimaryModel: req.PrimaryModel,
|
||||||
@ -338,6 +343,7 @@ func (h *ChannelMonitorHandler) Update(c *gin.Context) {
|
|||||||
m, err := h.monitorService.Update(c.Request.Context(), id, service.ChannelMonitorUpdateParams{
|
m, err := h.monitorService.Update(c.Request.Context(), id, service.ChannelMonitorUpdateParams{
|
||||||
Name: req.Name,
|
Name: req.Name,
|
||||||
Provider: req.Provider,
|
Provider: req.Provider,
|
||||||
|
APIMode: req.APIMode,
|
||||||
Endpoint: req.Endpoint,
|
Endpoint: req.Endpoint,
|
||||||
APIKey: req.APIKey,
|
APIKey: req.APIKey,
|
||||||
PrimaryModel: req.PrimaryModel,
|
PrimaryModel: req.PrimaryModel,
|
||||||
|
|||||||
@ -27,6 +27,7 @@ func NewChannelMonitorRequestTemplateHandler(templateService *service.ChannelMon
|
|||||||
type channelMonitorTemplateCreateRequest struct {
|
type channelMonitorTemplateCreateRequest struct {
|
||||||
Name string `json:"name" binding:"required,max=100"`
|
Name string `json:"name" binding:"required,max=100"`
|
||||||
Provider string `json:"provider" binding:"required,oneof=openai anthropic gemini"`
|
Provider string `json:"provider" binding:"required,oneof=openai anthropic gemini"`
|
||||||
|
APIMode string `json:"api_mode" binding:"omitempty,oneof=chat_completions responses"`
|
||||||
Description string `json:"description" binding:"max=500"`
|
Description string `json:"description" binding:"max=500"`
|
||||||
ExtraHeaders map[string]string `json:"extra_headers"`
|
ExtraHeaders map[string]string `json:"extra_headers"`
|
||||||
BodyOverrideMode string `json:"body_override_mode" binding:"omitempty,oneof=off merge replace"`
|
BodyOverrideMode string `json:"body_override_mode" binding:"omitempty,oneof=off merge replace"`
|
||||||
@ -35,6 +36,7 @@ type channelMonitorTemplateCreateRequest struct {
|
|||||||
|
|
||||||
type channelMonitorTemplateUpdateRequest struct {
|
type channelMonitorTemplateUpdateRequest struct {
|
||||||
Name *string `json:"name" binding:"omitempty,max=100"`
|
Name *string `json:"name" binding:"omitempty,max=100"`
|
||||||
|
APIMode *string `json:"api_mode" binding:"omitempty,oneof=chat_completions responses"`
|
||||||
Description *string `json:"description" binding:"omitempty,max=500"`
|
Description *string `json:"description" binding:"omitempty,max=500"`
|
||||||
ExtraHeaders *map[string]string `json:"extra_headers"`
|
ExtraHeaders *map[string]string `json:"extra_headers"`
|
||||||
BodyOverrideMode *string `json:"body_override_mode" binding:"omitempty,oneof=off merge replace"`
|
BodyOverrideMode *string `json:"body_override_mode" binding:"omitempty,oneof=off merge replace"`
|
||||||
@ -45,6 +47,7 @@ type channelMonitorTemplateResponse struct {
|
|||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Provider string `json:"provider"`
|
Provider string `json:"provider"`
|
||||||
|
APIMode string `json:"api_mode"`
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
ExtraHeaders map[string]string `json:"extra_headers"`
|
ExtraHeaders map[string]string `json:"extra_headers"`
|
||||||
BodyOverrideMode string `json:"body_override_mode"`
|
BodyOverrideMode string `json:"body_override_mode"`
|
||||||
@ -67,6 +70,7 @@ func (h *ChannelMonitorRequestTemplateHandler) toResponse(c *gin.Context, t *ser
|
|||||||
ID: t.ID,
|
ID: t.ID,
|
||||||
Name: t.Name,
|
Name: t.Name,
|
||||||
Provider: t.Provider,
|
Provider: t.Provider,
|
||||||
|
APIMode: t.APIMode,
|
||||||
Description: t.Description,
|
Description: t.Description,
|
||||||
ExtraHeaders: headers,
|
ExtraHeaders: headers,
|
||||||
BodyOverrideMode: t.BodyOverrideMode,
|
BodyOverrideMode: t.BodyOverrideMode,
|
||||||
@ -93,6 +97,7 @@ func parseTemplateID(c *gin.Context) (int64, bool) {
|
|||||||
func (h *ChannelMonitorRequestTemplateHandler) List(c *gin.Context) {
|
func (h *ChannelMonitorRequestTemplateHandler) List(c *gin.Context) {
|
||||||
items, err := h.templateService.List(c.Request.Context(), service.ChannelMonitorRequestTemplateListParams{
|
items, err := h.templateService.List(c.Request.Context(), service.ChannelMonitorRequestTemplateListParams{
|
||||||
Provider: strings.TrimSpace(c.Query("provider")),
|
Provider: strings.TrimSpace(c.Query("provider")),
|
||||||
|
APIMode: strings.TrimSpace(c.Query("api_mode")),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
response.ErrorFrom(c, err)
|
response.ErrorFrom(c, err)
|
||||||
@ -129,6 +134,7 @@ func (h *ChannelMonitorRequestTemplateHandler) Create(c *gin.Context) {
|
|||||||
t, err := h.templateService.Create(c.Request.Context(), service.ChannelMonitorRequestTemplateCreateParams{
|
t, err := h.templateService.Create(c.Request.Context(), service.ChannelMonitorRequestTemplateCreateParams{
|
||||||
Name: req.Name,
|
Name: req.Name,
|
||||||
Provider: req.Provider,
|
Provider: req.Provider,
|
||||||
|
APIMode: req.APIMode,
|
||||||
Description: req.Description,
|
Description: req.Description,
|
||||||
ExtraHeaders: req.ExtraHeaders,
|
ExtraHeaders: req.ExtraHeaders,
|
||||||
BodyOverrideMode: req.BodyOverrideMode,
|
BodyOverrideMode: req.BodyOverrideMode,
|
||||||
@ -154,6 +160,7 @@ func (h *ChannelMonitorRequestTemplateHandler) Update(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
t, err := h.templateService.Update(c.Request.Context(), id, service.ChannelMonitorRequestTemplateUpdateParams{
|
t, err := h.templateService.Update(c.Request.Context(), id, service.ChannelMonitorRequestTemplateUpdateParams{
|
||||||
Name: req.Name,
|
Name: req.Name,
|
||||||
|
APIMode: req.APIMode,
|
||||||
Description: req.Description,
|
Description: req.Description,
|
||||||
ExtraHeaders: req.ExtraHeaders,
|
ExtraHeaders: req.ExtraHeaders,
|
||||||
BodyOverrideMode: req.BodyOverrideMode,
|
BodyOverrideMode: req.BodyOverrideMode,
|
||||||
@ -209,6 +216,7 @@ type associatedMonitorBriefResponse struct {
|
|||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Provider string `json:"provider"`
|
Provider string `json:"provider"`
|
||||||
|
APIMode string `json:"api_mode"`
|
||||||
Enabled bool `json:"enabled"`
|
Enabled bool `json:"enabled"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,7 +235,7 @@ func (h *ChannelMonitorRequestTemplateHandler) AssociatedMonitors(c *gin.Context
|
|||||||
out := make([]associatedMonitorBriefResponse, 0, len(items))
|
out := make([]associatedMonitorBriefResponse, 0, len(items))
|
||||||
for _, m := range items {
|
for _, m := range items {
|
||||||
out = append(out, associatedMonitorBriefResponse{
|
out = append(out, associatedMonitorBriefResponse{
|
||||||
ID: m.ID, Name: m.Name, Provider: m.Provider, Enabled: m.Enabled,
|
ID: m.ID, Name: m.Name, Provider: m.Provider, APIMode: m.APIMode, Enabled: m.Enabled,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
response.Success(c, gin.H{"items": out})
|
response.Success(c, gin.H{"items": out})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user