ai_scheduler/internal/services/support.go

62 lines
1.4 KiB
Go

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)
}