feat(channel-monitor): 保存模板协议快照
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
38d8195946
commit
a5072f77bd
@ -37,6 +37,7 @@ func (r *channelMonitorRepository) Create(ctx context.Context, m *service.Channe
|
|||||||
builder := client.ChannelMonitor.Create().
|
builder := client.ChannelMonitor.Create().
|
||||||
SetName(m.Name).
|
SetName(m.Name).
|
||||||
SetProvider(channelmonitor.Provider(m.Provider)).
|
SetProvider(channelmonitor.Provider(m.Provider)).
|
||||||
|
SetAPIMode(defaultAPIModeRepo(m.APIMode)).
|
||||||
SetEndpoint(m.Endpoint).
|
SetEndpoint(m.Endpoint).
|
||||||
SetAPIKeyEncrypted(m.APIKey). // 调用方传入的已是密文
|
SetAPIKeyEncrypted(m.APIKey). // 调用方传入的已是密文
|
||||||
SetPrimaryModel(m.PrimaryModel).
|
SetPrimaryModel(m.PrimaryModel).
|
||||||
@ -79,6 +80,7 @@ func (r *channelMonitorRepository) Update(ctx context.Context, m *service.Channe
|
|||||||
updater := client.ChannelMonitor.UpdateOneID(m.ID).
|
updater := client.ChannelMonitor.UpdateOneID(m.ID).
|
||||||
SetName(m.Name).
|
SetName(m.Name).
|
||||||
SetProvider(channelmonitor.Provider(m.Provider)).
|
SetProvider(channelmonitor.Provider(m.Provider)).
|
||||||
|
SetAPIMode(defaultAPIModeRepo(m.APIMode)).
|
||||||
SetEndpoint(m.Endpoint).
|
SetEndpoint(m.Endpoint).
|
||||||
SetAPIKeyEncrypted(m.APIKey).
|
SetAPIKeyEncrypted(m.APIKey).
|
||||||
SetPrimaryModel(m.PrimaryModel).
|
SetPrimaryModel(m.PrimaryModel).
|
||||||
@ -708,6 +710,7 @@ func entToServiceMonitor(row *dbent.ChannelMonitor) *service.ChannelMonitor {
|
|||||||
ID: row.ID,
|
ID: row.ID,
|
||||||
Name: row.Name,
|
Name: row.Name,
|
||||||
Provider: string(row.Provider),
|
Provider: string(row.Provider),
|
||||||
|
APIMode: defaultAPIModeRepo(row.APIMode),
|
||||||
Endpoint: row.Endpoint,
|
Endpoint: row.Endpoint,
|
||||||
APIKey: row.APIKeyEncrypted, // 仍为密文,service 层负责解密
|
APIKey: row.APIKeyEncrypted, // 仍为密文,service 层负责解密
|
||||||
PrimaryModel: row.PrimaryModel,
|
PrimaryModel: row.PrimaryModel,
|
||||||
@ -747,6 +750,13 @@ func defaultBodyModeRepo(mode string) string {
|
|||||||
return mode
|
return mode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func defaultAPIModeRepo(apiMode string) string {
|
||||||
|
if apiMode == "" {
|
||||||
|
return "chat_completions"
|
||||||
|
}
|
||||||
|
return apiMode
|
||||||
|
}
|
||||||
|
|
||||||
func emptySliceIfNil(in []string) []string {
|
func emptySliceIfNil(in []string) []string {
|
||||||
if in == nil {
|
if in == nil {
|
||||||
return []string{}
|
return []string{}
|
||||||
|
|||||||
@ -30,6 +30,7 @@ func (r *channelMonitorRequestTemplateRepository) Create(ctx context.Context, t
|
|||||||
builder := client.ChannelMonitorRequestTemplate.Create().
|
builder := client.ChannelMonitorRequestTemplate.Create().
|
||||||
SetName(t.Name).
|
SetName(t.Name).
|
||||||
SetProvider(channelmonitorrequesttemplate.Provider(t.Provider)).
|
SetProvider(channelmonitorrequesttemplate.Provider(t.Provider)).
|
||||||
|
SetAPIMode(defaultAPIModeRepo(t.APIMode)).
|
||||||
SetDescription(t.Description).
|
SetDescription(t.Description).
|
||||||
SetExtraHeaders(emptyHeadersIfNilRepo(t.ExtraHeaders)).
|
SetExtraHeaders(emptyHeadersIfNilRepo(t.ExtraHeaders)).
|
||||||
SetBodyOverrideMode(defaultBodyModeRepo(t.BodyOverrideMode))
|
SetBodyOverrideMode(defaultBodyModeRepo(t.BodyOverrideMode))
|
||||||
@ -61,6 +62,7 @@ func (r *channelMonitorRequestTemplateRepository) Update(ctx context.Context, t
|
|||||||
client := clientFromContext(ctx, r.client)
|
client := clientFromContext(ctx, r.client)
|
||||||
updater := client.ChannelMonitorRequestTemplate.UpdateOneID(t.ID).
|
updater := client.ChannelMonitorRequestTemplate.UpdateOneID(t.ID).
|
||||||
SetName(t.Name).
|
SetName(t.Name).
|
||||||
|
SetAPIMode(defaultAPIModeRepo(t.APIMode)).
|
||||||
SetDescription(t.Description).
|
SetDescription(t.Description).
|
||||||
SetExtraHeaders(emptyHeadersIfNilRepo(t.ExtraHeaders)).
|
SetExtraHeaders(emptyHeadersIfNilRepo(t.ExtraHeaders)).
|
||||||
SetBodyOverrideMode(defaultBodyModeRepo(t.BodyOverrideMode))
|
SetBodyOverrideMode(defaultBodyModeRepo(t.BodyOverrideMode))
|
||||||
@ -90,8 +92,11 @@ func (r *channelMonitorRequestTemplateRepository) List(ctx context.Context, para
|
|||||||
if params.Provider != "" {
|
if params.Provider != "" {
|
||||||
q = q.Where(channelmonitorrequesttemplate.ProviderEQ(channelmonitorrequesttemplate.Provider(params.Provider)))
|
q = q.Where(channelmonitorrequesttemplate.ProviderEQ(channelmonitorrequesttemplate.Provider(params.Provider)))
|
||||||
}
|
}
|
||||||
|
if params.APIMode != "" {
|
||||||
|
q = q.Where(channelmonitorrequesttemplate.APIModeEQ(defaultAPIModeRepo(params.APIMode)))
|
||||||
|
}
|
||||||
rows, err := q.
|
rows, err := q.
|
||||||
Order(dbent.Asc(channelmonitorrequesttemplate.FieldProvider), dbent.Asc(channelmonitorrequesttemplate.FieldName)).
|
Order(dbent.Asc(channelmonitorrequesttemplate.FieldProvider), dbent.Asc(channelmonitorrequesttemplate.FieldAPIMode), dbent.Asc(channelmonitorrequesttemplate.FieldName)).
|
||||||
All(ctx)
|
All(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("list monitor templates: %w", err)
|
return nil, fmt.Errorf("list monitor templates: %w", err)
|
||||||
@ -122,7 +127,10 @@ func (r *channelMonitorRequestTemplateRepository) ApplyToMonitors(ctx context.Co
|
|||||||
Where(
|
Where(
|
||||||
channelmonitor.TemplateIDEQ(id),
|
channelmonitor.TemplateIDEQ(id),
|
||||||
channelmonitor.IDIn(monitorIDs...),
|
channelmonitor.IDIn(monitorIDs...),
|
||||||
|
channelmonitor.ProviderEQ(channelmonitor.Provider(tpl.Provider)),
|
||||||
|
channelmonitor.APIModeEQ(defaultAPIModeRepo(tpl.APIMode)),
|
||||||
).
|
).
|
||||||
|
SetAPIMode(defaultAPIModeRepo(tpl.APIMode)).
|
||||||
SetExtraHeaders(emptyHeadersIfNilRepo(tpl.ExtraHeaders)).
|
SetExtraHeaders(emptyHeadersIfNilRepo(tpl.ExtraHeaders)).
|
||||||
SetBodyOverrideMode(defaultBodyModeRepo(tpl.BodyOverrideMode))
|
SetBodyOverrideMode(defaultBodyModeRepo(tpl.BodyOverrideMode))
|
||||||
if tpl.BodyOverride != nil {
|
if tpl.BodyOverride != nil {
|
||||||
@ -165,6 +173,7 @@ func (r *channelMonitorRequestTemplateRepository) ListAssociatedMonitors(ctx con
|
|||||||
ID: row.ID,
|
ID: row.ID,
|
||||||
Name: row.Name,
|
Name: row.Name,
|
||||||
Provider: string(row.Provider),
|
Provider: string(row.Provider),
|
||||||
|
APIMode: defaultAPIModeRepo(row.APIMode),
|
||||||
Enabled: row.Enabled,
|
Enabled: row.Enabled,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -185,6 +194,7 @@ func entToServiceTemplate(row *dbent.ChannelMonitorRequestTemplate) *service.Cha
|
|||||||
ID: row.ID,
|
ID: row.ID,
|
||||||
Name: row.Name,
|
Name: row.Name,
|
||||||
Provider: string(row.Provider),
|
Provider: string(row.Provider),
|
||||||
|
APIMode: defaultAPIModeRepo(row.APIMode),
|
||||||
Description: row.Description,
|
Description: row.Description,
|
||||||
ExtraHeaders: headers,
|
ExtraHeaders: headers,
|
||||||
BodyOverrideMode: row.BodyOverrideMode,
|
BodyOverrideMode: row.BodyOverrideMode,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user