package services import ( "ai_scheduler/internal/biz/support" "ai_scheduler/internal/config" errorcode "ai_scheduler/internal/data/error" "github.com/gofiber/fiber/v2" ) type SupportService struct { cfg *config.Config addressIngester map[string]support.AddressIngester addressIngestHyt *support.HytAddressIngester } func NewSupportService(cfg *config.Config, addressIngestHyt *support.HytAddressIngester) *SupportService { s := &SupportService{ cfg: cfg, addressIngester: map[string]support.AddressIngester{ "hyt": addressIngestHyt, }, } return s } type AddressIngestReq struct { Text string `json:"text"` // 待提取文本 } // AddressIngest 收获地址提取 func (s *SupportService) AddressIngest(c *fiber.Ctx) error { platform := c.Params("platform") ingester, ok := s.addressIngester[platform] if !ok { return errorcode.ParamErrf("unsupported platform: %s", platform) } // 鉴权 if err := ingester.Auth(c); err != nil { return err } // 解析请求参数 body req := AddressIngestReq{} if err := c.BodyParser(&req); err != nil { return errorcode.ParamErrf("invalid request body: %v", err) } // 必要参数校验 if req.Text == "" { return errorcode.ParamErrf("missing required fields") } // 执行提取 res, err := ingester.Ingest(c.Context(), req.Text) if err != nil { return err } return c.JSON(res) }