api/utils.go

55 lines
1.2 KiB
Go
Raw Normal View History

package api
import (
"fmt"
"sort"
"strings"
)
// ExportGoStructs 根据全局配置生成 Go 结构体代码
func ExportGoStructs(packageName string) string {
var sb strings.Builder
sb.WriteString(fmt.Sprintf("package %s\n\n", packageName))
sb.WriteString("// API Services and Actions\n")
keys := make([]string, 0, len(GlobalConfigs))
for k := range GlobalConfigs {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
sb.WriteString(fmt.Sprintf("// Service: %s\n", k))
}
return sb.String()
}
// GetManifest 返回 API 的描述信息,方便 AI 阅读
func GetManifest() map[string]any {
manifest := map[string]any{}
for name, cfg := range GlobalConfigs {
if cfgMap, ok := cfg.(map[string]any); ok {
manifest[name] = getActionManifest(cfgMap)
}
}
return manifest
}
func getActionManifest(cfgMap map[string]any) map[string]any {
m := map[string]any{
"url": cfgMap["url"],
"method": cfgMap["method"],
}
if actions, ok := cfgMap["actions"].(map[string]any); ok {
manifestActions := map[string]any{}
for name, sub := range actions {
if subMap, ok := sub.(map[string]any); ok {
manifestActions[name] = getActionManifest(subMap)
}
}
m["actions"] = manifestActions
}
return m
}