package collect import ( "context" "fmt" "geo/internal/config" "github.com/gofiber/fiber/v2/log" ) // CollectManager 收集管理器 type CollectManager struct { ctx context.Context config *config.Config logger log.AllLogger } // NewCollectManager 创建收集管理器 func NewCollectManager(ctx context.Context, cfg *config.Config, logger log.AllLogger) *CollectManager { return &CollectManager{ ctx: ctx, config: cfg, logger: logger, } } // GetCollector 获取指定平台的收集器 func (m *CollectManager) GetCollector(platform string, params *CollectParams) (CollectorInterface, error) { collectorValue, ok := CollectorMap[platform] if !ok { return nil, fmt.Errorf("不支持的平台: %s", platform) } collector := collectorValue.InitMethod(m.ctx, params, m.config, m.logger) if collector == nil { return nil, fmt.Errorf("创建收集器失败: %s", platform) } return collector, nil } // AskQuestion 向指定AI平台提问 func (m *CollectManager) AskQuestion(platform string, params *CollectParams, question string) (*CollectResult, error) { collector, err := m.GetCollector(platform, params) if err != nil { return nil, err } return collector.AskQuestion(question) } // WaitLogin 等待指定平台登录 func (m *CollectManager) WaitLogin(platform string, params *CollectParams) (bool, string) { collector, err := m.GetCollector(platform, params) if err != nil { return false, err.Error() } return collector.WaitLogin() } // ListPlatforms 列出所有支持的平台 func (m *CollectManager) ListPlatforms() []string { platforms := make([]string, 0, len(CollectorMap)) for platform := range CollectorMap { platforms = append(platforms, platform) } return platforms }