mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-19 04:40:52 +08:00
feat(watcher): add AmpCode config change detection
This commit is contained in:
@@ -570,6 +570,35 @@ func summarizeExcludedModels(list []string) excludedModelsSummary {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ampModelMappingsSummary struct {
|
||||||
|
hash string
|
||||||
|
count int
|
||||||
|
}
|
||||||
|
|
||||||
|
func summarizeAmpModelMappings(mappings []config.AmpModelMapping) ampModelMappingsSummary {
|
||||||
|
if len(mappings) == 0 {
|
||||||
|
return ampModelMappingsSummary{}
|
||||||
|
}
|
||||||
|
entries := make([]string, 0, len(mappings))
|
||||||
|
for _, mapping := range mappings {
|
||||||
|
from := strings.TrimSpace(mapping.From)
|
||||||
|
to := strings.TrimSpace(mapping.To)
|
||||||
|
if from == "" && to == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
entries = append(entries, from+"->"+to)
|
||||||
|
}
|
||||||
|
if len(entries) == 0 {
|
||||||
|
return ampModelMappingsSummary{}
|
||||||
|
}
|
||||||
|
sort.Strings(entries)
|
||||||
|
sum := sha256.Sum256([]byte(strings.Join(entries, "|")))
|
||||||
|
return ampModelMappingsSummary{
|
||||||
|
hash: hex.EncodeToString(sum[:]),
|
||||||
|
count: len(entries),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func summarizeOAuthExcludedModels(entries map[string][]string) map[string]excludedModelsSummary {
|
func summarizeOAuthExcludedModels(entries map[string][]string) map[string]excludedModelsSummary {
|
||||||
if len(entries) == 0 {
|
if len(entries) == 0 {
|
||||||
return nil
|
return nil
|
||||||
@@ -1762,6 +1791,31 @@ func buildConfigChangeDetails(oldCfg, newCfg *config.Config) []string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AmpCode settings (redacted where needed)
|
||||||
|
oldAmpURL := strings.TrimSpace(oldCfg.AmpCode.UpstreamURL)
|
||||||
|
newAmpURL := strings.TrimSpace(newCfg.AmpCode.UpstreamURL)
|
||||||
|
if oldAmpURL != newAmpURL {
|
||||||
|
changes = append(changes, fmt.Sprintf("ampcode.upstream-url: %s -> %s", oldAmpURL, newAmpURL))
|
||||||
|
}
|
||||||
|
oldAmpKey := strings.TrimSpace(oldCfg.AmpCode.UpstreamAPIKey)
|
||||||
|
newAmpKey := strings.TrimSpace(newCfg.AmpCode.UpstreamAPIKey)
|
||||||
|
switch {
|
||||||
|
case oldAmpKey == "" && newAmpKey != "":
|
||||||
|
changes = append(changes, "ampcode.upstream-api-key: added")
|
||||||
|
case oldAmpKey != "" && newAmpKey == "":
|
||||||
|
changes = append(changes, "ampcode.upstream-api-key: removed")
|
||||||
|
case oldAmpKey != newAmpKey:
|
||||||
|
changes = append(changes, "ampcode.upstream-api-key: updated")
|
||||||
|
}
|
||||||
|
if oldCfg.AmpCode.RestrictManagementToLocalhost != newCfg.AmpCode.RestrictManagementToLocalhost {
|
||||||
|
changes = append(changes, fmt.Sprintf("ampcode.restrict-management-to-localhost: %t -> %t", oldCfg.AmpCode.RestrictManagementToLocalhost, newCfg.AmpCode.RestrictManagementToLocalhost))
|
||||||
|
}
|
||||||
|
oldMappings := summarizeAmpModelMappings(oldCfg.AmpCode.ModelMappings)
|
||||||
|
newMappings := summarizeAmpModelMappings(newCfg.AmpCode.ModelMappings)
|
||||||
|
if oldMappings.hash != newMappings.hash {
|
||||||
|
changes = append(changes, fmt.Sprintf("ampcode.model-mappings: updated (%d -> %d entries)", oldMappings.count, newMappings.count))
|
||||||
|
}
|
||||||
|
|
||||||
if entries, _ := diffOAuthExcludedModelChanges(oldCfg.OAuthExcludedModels, newCfg.OAuthExcludedModels); len(entries) > 0 {
|
if entries, _ := diffOAuthExcludedModelChanges(oldCfg.OAuthExcludedModels, newCfg.OAuthExcludedModels); len(entries) > 0 {
|
||||||
changes = append(changes, entries...)
|
changes = append(changes, entries...)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user