//go:build llm_script package main import ( "fmt" "regexp" "strings" ) const ( defaultBaiduCodingPlanURL = "https://cloud.baidu.com/doc/qianfan/s/imlg0beiu" defaultBaiduTokenPlanURL = "https://cloud.baidu.com/doc/qianfan/s/Smoghsq3g" ) func parseBaiduSubscriptionCatalog(codingRaw string, tokenRaw string) ([]subscriptionImportRecord, error) { publishedAt, known := publishedAtFromText(firstNonEmptyText(codingRaw, tokenRaw)) codingRecords, err := parseBaiduCodingPlan(codingRaw, publishedAt) if err != nil { return nil, err } tokenRecords, err := parseBaiduTokenBenefitPack(tokenRaw, publishedAt) if err != nil { return nil, err } records := append(codingRecords, tokenRecords...) for i := range records { records[i].PublishedAtKnown = known } return records, nil } func parseBaiduCodingPlan(raw string, publishedAt string) ([]subscriptionImportRecord, error) { pattern := regexp.MustCompile(`Coding Plan (Lite|Pro)\s+¥\s*([\d,]+)\s*/\s*月\s+每 5 小时:最多约 [\d,]+ 次请求\s+每周:最多约 [\d,]+ 次请求\s+每订阅月:最多约 ([\d,]+) 次请求`) matches := pattern.FindAllStringSubmatch(raw, -1) if len(matches) != 2 { return nil, fmt.Errorf("unexpected baidu coding plan count: %d", len(matches)) } records := make([]subscriptionImportRecord, 0, len(matches)) for _, match := range matches { tier := match[1] records = append(records, subscriptionImportRecord{ ProviderName: "Baidu", ProviderNameCn: "百度", ProviderCountry: "CN", ProviderWebsite: "https://cloud.baidu.com", OperatorName: "Baidu Qianfan", OperatorNameCn: "百度千帆", OperatorCountry: "CN", OperatorWebsite: "https://cloud.baidu.com/doc/qianfan/index.html", OperatorType: "cloud", PlanFamily: "coding_plan", PlanCode: "baidu-coding-plan-" + strings.ToLower(tier), PlanName: "千帆 Coding Plan " + tier, Tier: tier, BillingCycle: "monthly", Currency: "CNY", ListPrice: mustParseSubscriptionPrice(match[2]), PriceUnit: "CNY/month", QuotaValue: mustParseSubscriptionInt64(match[3]), QuotaUnit: "requests/month", PlanScope: "Coding Plan", SourceURL: defaultBaiduCodingPlanURL, PublishedAt: publishedAt, EffectiveDate: effectiveDateFromPublishedAt(publishedAt), Notes: "额度按 5 小时、每周、每订阅月三重窗口刷新。", }) } return records, nil } func parseBaiduTokenBenefitPack(raw string, publishedAt string) ([]subscriptionImportRecord, error) { pattern := regexp.MustCompile(`(\d{2,3},\d{3})\s+1个月\s+¥(\d+)\s+¥(\d+)`) matches := pattern.FindAllStringSubmatch(raw, -1) if len(matches) != 5 { return nil, fmt.Errorf("unexpected baidu token benefit pack count: %d", len(matches)) } records := make([]subscriptionImportRecord, 0, len(matches)) for _, match := range matches { quota := mustParseSubscriptionInt64(match[1]) originalPrice := strings.TrimSpace(match[2]) promoPrice := strings.TrimSpace(match[3]) records = append(records, subscriptionImportRecord{ ProviderName: "Baidu", ProviderNameCn: "百度", ProviderCountry: "CN", ProviderWebsite: "https://cloud.baidu.com", OperatorName: "Baidu Qianfan", OperatorNameCn: "百度千帆", OperatorCountry: "CN", OperatorWebsite: "https://cloud.baidu.com/doc/qianfan/index.html", OperatorType: "cloud", PlanFamily: "token_plan", PlanCode: fmt.Sprintf("baidu-token-benefit-pack-%d", quota), PlanName: fmt.Sprintf("千帆 Token 福利包 %d", quota), Tier: fmt.Sprintf("%d", quota), BillingCycle: "monthly", Currency: "CNY", ListPrice: mustParseSubscriptionPrice(promoPrice), PriceUnit: "CNY/pack", QuotaValue: quota, QuotaUnit: "credits/pack", PlanScope: "Token 福利包", SourceURL: defaultBaiduTokenPlanURL, PublishedAt: publishedAt, EffectiveDate: effectiveDateFromPublishedAt(publishedAt), Notes: fmt.Sprintf("首购优惠价 ¥%s,原价 ¥%s,有效期 1 个月。", promoPrice, originalPrice), }) } return records, nil }