| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package tools
- import (
- "context"
- "github.com/mark3labs/mcp-go/mcp"
- "fwh-toolbox-server/agentmcp/kit"
- "fwh-toolbox-server/repositories"
- "fwh-toolbox-server/services"
- )
- // ---- shutdown_stats ----
- type shutdownStatsArgs struct {
- Date string `json:"date,omitempty" jsonschema:"统计日期 yyyy-MM-dd(北京时间),不填取最新可用日期"`
- }
- var ShutdownStats = kit.Def[shutdownStatsArgs]{
- Name: "shutdown_stats",
- Title: "查询停机统计",
- Description: "查询 ToolBox 每日停机统计汇总。返回:date;count(当日停机站点数,all/us/au);" +
- "weekly(截至该日最近 7 天每天的停机站点数,all/us/au 各 7 个数,按时间顺序);yearly(最近 12 个月每月的停机站点数)。" +
- "查看当日具体是哪些站点用 shutdown_sites。",
- ReadOnly: true,
- Handler: func(ctx context.Context, a shutdownStatsArgs) (*mcp.CallToolResult, error) {
- day, err := kit.ParseDate("date", a.Date, true)
- if err != nil {
- return kit.Fail(err), nil
- }
- var datePtr *string
- if day != nil {
- s := day.Format(kit.DateLayout)
- datePtr = &s
- } else {
- latest, err := services.GetShutdownStatisticsDate()
- if err != nil {
- return kit.Upstream("ToolBox 停机统计", err), nil
- }
- datePtr = latest
- }
- dash, err := services.GetShutdownStatistics(datePtr)
- if err != nil {
- return kit.Upstream("ToolBox 停机统计", err), nil
- }
- out := map[string]any{"date": dash.Date, "weekly": dash.Weekly, "yearly": dash.Yearly}
- if item, err := services.GetShutdownInfoMap(datePtr); err == nil && item != nil {
- out["count"] = item.Count
- out["status"] = item.Status
- }
- return kit.Object(out), nil
- },
- }
- // ---- shutdown_sites ----
- type shutdownSitesArgs struct {
- Date string `json:"date" jsonschema:"日期 yyyy-MM-dd"`
- Country string `json:"country,omitempty" jsonschema:"国家:all(默认)、us(美国)、au(澳大利亚)"`
- Limit int `json:"limit,omitempty" jsonschema:"最多返回条数,1~500,默认 200"`
- }
- var ShutdownSites = kit.Def[shutdownSitesArgs]{
- Name: "shutdown_sites",
- Title: "查询停机站点列表",
- Description: "查询某一天发生停机(Shutdown)的站点列表(FWH 平台)。" +
- "返回字段:gatewayId(站点 SN)、shutdownType(1 系统停机、2 aPower 停机)、country、province、activeTime(激活时间)、deviceTime(停机开始的设备时间)。",
- ReadOnly: true,
- Handler: func(ctx context.Context, a shutdownSitesArgs) (*mcp.CallToolResult, error) {
- day, err := kit.ParseDate("date", a.Date, false)
- if err != nil {
- return kit.Fail(err), nil
- }
- country, err := parseCountry(a.Country)
- if err != nil {
- return kit.Fail(err), nil
- }
- items, err := repositories.QuerySiteShutdownList(day.Format(kit.DateLayout), int(country))
- if err != nil {
- return kit.Upstream("FWH 平台停机列表接口", err), nil
- }
- return kit.List(items, -1, kit.Limit(a.Limit, 200, 500), "结果已截断,可按 country 分别查询"), nil
- },
- }
|