package services import ( "ai_scheduler/internal/biz" "ai_scheduler/internal/config" "ai_scheduler/internal/entitys" "ai_scheduler/internal/pkg/file_download" "context" "errors" "net/url" "github.com/gofiber/fiber/v2" ) // ChatHandler 聊天处理器 type AdviceService struct { adviceBiz *biz.AdviceBiz cfg *config.Config } // NewChatHandler 创建聊天处理器 func NewAdviceService( adviceBiz *biz.AdviceBiz, cfg *config.Config, ) *AdviceService { return &AdviceService{ adviceBiz: adviceBiz, cfg: cfg, } } func (a *AdviceService) WordAna(c *fiber.Ctx) error { req := &entitys.WordAnaReq{} if err := c.BodyParser(req); err != nil { return err } // URL 解码 fileURL, err := url.PathUnescape(req.WordFileUrl) if err != nil { return errors.New("URL 解码失败") } result, _, err := file_download.GetWordTextFromURL(fileURL, file_download.IsWordFile) if err != nil { return err } return a.adviceBiz.WordAna(c.UserContext(), result) } func (a *AdviceService) WordAnat(path string) error { // URL 解码 fileURL, err := url.PathUnescape(path) if err != nil { return errors.New("URL 解码失败") } result, _, err := file_download.GetWordTextFromURL(fileURL, file_download.IsWordFile) if err != nil { return err } return a.adviceBiz.WordAna(context.Background(), result) }