test(runtime): wire new pricing importers into pipeline smoke and catalog mapping

This commit is contained in:
phamnazage-jpg
2026-05-23 18:35:08 +08:00
parent e757cd2dd7
commit c32661fd2a
15 changed files with 299 additions and 144 deletions

View File

@@ -45,7 +45,7 @@ func TestRun360PricingImportDryRunPrintsSummary(t *testing.T) {
for _, want := range []string{
"source=360-pricing-import",
"models=4",
"operator=360 Open Platform",
"operator=360 ZhiNao",
"dry_run=true",
} {
if !strings.Contains(output, want) {

View File

@@ -31,68 +31,68 @@ func TestBuildPlanCatalogRows(t *testing.T) {
foundVendorTop20 := false
foundRelayTop20Plus := false
wantImporterKeys := map[string]string{
"tencent-cloud-token-plan-enterprise-pro": "tencent_catalog",
"tencent-cloud-token-plan-enterprise-pro": "tencent_catalog",
"tencent-cloud-token-plan-enterprise-lite": "tencent_catalog",
"tencent-cloud-coding-plan": "tencent_catalog",
"aliyun-bailian-token-plan-team": "import_aliyun_subscription.go",
"aliyun-bailian-coding-plan": "import_aliyun_subscription.go",
"baidu-qianfan-token-benefit-pack": "import_baidu_subscription.go",
"baidu-qianfan-coding-plan": "import_baidu_subscription.go",
"bytedance-doubao-api-payg": "import_bytedance_pricing.go",
"zhipu-glm-coding-plan": "import_zhipu_coding_plan.go",
"minimax-token-plan": "import_minimax_subscription.go",
"volcengine-ark-coding-plan": "import_bytedance_subscription.go",
"huawei-cloud-maas-package-plan": "import_huawei_package.go",
"ctyun-token-plan": "import_ctyun_subscription.go",
"ctyun-coding-plan": "import_ctyun_subscription.go",
"cucloud-aicp-platform": "import_cucloud_catalog.go",
"cucloud-ai-app-platform": "import_cucloud_catalog.go",
"cucloud-aisp-token-plan-pricing": "import_cucloud_pricing.go",
"mobile-cloud-ai-market": "import_mobile_cloud_pricing.go",
"aliyun-modelscope-api-inference": "import_catalog_seed_verification.go",
"youdao-zhiyun-maas": "import_youdao_pricing.go",
"ctyun-model-inference-payg": "import_catalog_seed_verification.go",
"360-open-platform": "import_360_pricing.go",
"siliconflow-siliconcloud": "import_siliconflow_pricing.go",
"ppio-model-api": "import_ppio_pricing.go",
"ucloud-umodelverse": "import_ucloud_pricing.go",
"anthropic-api-payg": "import_catalog_seed_verification.go",
"xai-api-payg": "import_catalog_seed_verification.go",
"alibaba-qwen-api-payg": "import_qwen_pricing.go",
"tencent-hunyuan-api-payg": "import_hunyuan_pricing.go",
"huawei-pangu-api-payg": "import_huawei_maas_pricing.go",
"baichuan-api-payg": "import_catalog_seed_verification.go",
"01ai-api-payg": "import_catalog_seed_verification.go",
"sensenova-api-payg": "import_catalog_seed_verification.go",
"xfyun-spark-api-payg": "import_catalog_seed_verification.go",
"360-zhinao-api-payg": "import_catalog_seed_verification.go",
"youdao-ziyue-api-payg": "import_catalog_seed_verification.go",
"modelbest-minicpm-api-payg": "import_catalog_seed_verification.go",
"baai-flagopen-api-payg": "import_catalog_seed_verification.go",
"skywork-api-payg": "import_catalog_seed_verification.go",
"infinigence-api-payg": "import_catalog_seed_verification.go",
"qingcloud-coreshub": "import_coreshub_pricing.go",
"ksyun-xingliu-platform": "import_catalog_seed_verification.go",
"google-gemini-api-payg": "import_catalog_seed_verification.go",
"mistral-api-payg": "import_catalog_seed_verification.go",
"cohere-api-payg": "import_catalog_seed_verification.go",
"openrouter-api-payg": "fetch_openrouter.go",
"together-ai-api-payg": "import_catalog_seed_verification.go",
"fireworks-ai-api-payg": "import_catalog_seed_verification.go",
"deepinfra-api-payg": "import_catalog_seed_verification.go",
"groq-api-payg": "import_catalog_seed_verification.go",
"replicate-api-payg": "import_catalog_seed_verification.go",
"hyperbolic-api-payg": "import_catalog_seed_verification.go",
"novita-ai-api-payg": "import_catalog_seed_verification.go",
"azure-openai-service-payg": "import_azure_openai_pricing.go",
"amazon-bedrock-payg": "import_bedrock_pricing.go",
"google-vertex-ai-genai-payg": "import_vertex_pricing.go",
"cloudflare-workers-ai-payg": "import_cloudflare_pricing.go",
"baseten-inference-payg": "import_catalog_seed_verification.go",
"cerebras-inference-payg": "import_catalog_seed_verification.go",
"perplexity-agent-api-payg": "import_perplexity_pricing.go",
"sambanova-cloud-payg": "import_catalog_seed_verification.go",
"jdcloud-joybuilder-payg": "import_catalog_seed_verification.go",
"tencent-cloud-coding-plan": "tencent_catalog",
"aliyun-bailian-token-plan-team": "import_aliyun_subscription.go",
"aliyun-bailian-coding-plan": "import_aliyun_subscription.go",
"baidu-qianfan-token-benefit-pack": "import_baidu_subscription.go",
"baidu-qianfan-coding-plan": "import_baidu_subscription.go",
"bytedance-doubao-api-payg": "import_bytedance_pricing.go",
"zhipu-glm-coding-plan": "import_zhipu_coding_plan.go",
"minimax-token-plan": "import_minimax_subscription.go",
"volcengine-ark-coding-plan": "import_bytedance_subscription.go",
"huawei-cloud-maas-package-plan": "import_huawei_package.go",
"ctyun-token-plan": "import_ctyun_subscription.go",
"ctyun-coding-plan": "import_ctyun_subscription.go",
"cucloud-aicp-platform": "import_cucloud_catalog.go",
"cucloud-ai-app-platform": "import_cucloud_catalog.go",
"cucloud-aisp-token-plan-pricing": "import_cucloud_pricing.go",
"mobile-cloud-ai-market": "import_mobile_cloud_pricing.go",
"aliyun-modelscope-api-inference": "import_catalog_seed_verification.go",
"youdao-zhiyun-maas": "import_youdao_pricing.go",
"ctyun-model-inference-payg": "import_catalog_seed_verification.go",
"360-open-platform": "import_360_pricing.go",
"siliconflow-siliconcloud": "import_siliconflow_pricing.go",
"ppio-model-api": "import_ppio_pricing.go",
"ucloud-umodelverse": "import_ucloud_pricing.go",
"anthropic-api-payg": "import_catalog_seed_verification.go",
"xai-api-payg": "import_catalog_seed_verification.go",
"alibaba-qwen-api-payg": "import_qwen_pricing.go",
"tencent-hunyuan-api-payg": "import_hunyuan_pricing.go",
"huawei-pangu-api-payg": "import_huawei_maas_pricing.go",
"baichuan-api-payg": "import_baichuan_pricing.go",
"01ai-api-payg": "import_lingyiwanwu_pricing.go",
"sensenova-api-payg": "import_sensenova_pricing.go",
"xfyun-spark-api-payg": "import_xfyun_pricing.go",
"360-zhinao-api-payg": "import_360_pricing.go",
"youdao-ziyue-api-payg": "import_youdao_pricing.go",
"modelbest-minicpm-api-payg": "import_catalog_seed_verification.go",
"baai-flagopen-api-payg": "import_catalog_seed_verification.go",
"skywork-api-payg": "import_catalog_seed_verification.go",
"infinigence-api-payg": "import_catalog_seed_verification.go",
"qingcloud-coreshub": "import_coreshub_pricing.go",
"ksyun-xingliu-platform": "import_catalog_seed_verification.go",
"google-gemini-api-payg": "import_catalog_seed_verification.go",
"mistral-api-payg": "import_catalog_seed_verification.go",
"cohere-api-payg": "import_catalog_seed_verification.go",
"openrouter-api-payg": "fetch_openrouter.go",
"together-ai-api-payg": "import_catalog_seed_verification.go",
"fireworks-ai-api-payg": "import_catalog_seed_verification.go",
"deepinfra-api-payg": "import_catalog_seed_verification.go",
"groq-api-payg": "import_catalog_seed_verification.go",
"replicate-api-payg": "import_catalog_seed_verification.go",
"hyperbolic-api-payg": "import_catalog_seed_verification.go",
"novita-ai-api-payg": "import_catalog_seed_verification.go",
"azure-openai-service-payg": "import_azure_openai_pricing.go",
"amazon-bedrock-payg": "import_bedrock_pricing.go",
"google-vertex-ai-genai-payg": "import_vertex_pricing.go",
"cloudflare-workers-ai-payg": "import_cloudflare_pricing.go",
"baseten-inference-payg": "import_catalog_seed_verification.go",
"cerebras-inference-payg": "import_catalog_seed_verification.go",
"perplexity-agent-api-payg": "import_perplexity_pricing.go",
"sambanova-cloud-payg": "import_catalog_seed_verification.go",
"jdcloud-joybuilder-payg": "import_catalog_seed_verification.go",
}
for _, row := range rows {
if row.CatalogCode == "zhipu-glm-coding-plan" {

View File

@@ -20,17 +20,20 @@ func TestParseYoudaoPricingCatalogBuildsRecords(t *testing.T) {
if err != nil {
t.Fatalf("parseYoudaoPricingCatalog 返回错误: %v", err)
}
if len(records) != 5 {
t.Fatalf("期望 5 条有道价格记录,实际 %d", len(records))
if len(records) != 10 {
t.Fatalf("期望 10 条有道价格记录,实际 %d", len(records))
}
if records[0].ModelID != "youdao-deepseek-v4-flash" {
t.Fatalf("首条 modelID 错误: %q", records[0].ModelID)
}
if records[2].ProviderName != "Moonshot AI" {
t.Fatalf("Kimi provider 归一化错误: %q", records[2].ProviderName)
if records[5].ProviderName != "Moonshot AI" {
t.Fatalf("Kimi provider 归一化错误: %q", records[5].ProviderName)
}
if records[4].ContextLength != 128000 {
t.Fatalf("GLM-5 上下文长度错误: %d", records[4].ContextLength)
if records[8].ProviderName != "Zhipu AI" {
t.Fatalf("智谱 provider 归一化错误: %q", records[8].ProviderName)
}
if records[8].ContextLength != 200000 {
t.Fatalf("GLM-5 上下文长度错误: %d", records[8].ContextLength)
}
}
@@ -47,7 +50,7 @@ func TestRunYoudaoPricingImportDryRunPrintsSummary(t *testing.T) {
output := out.String()
for _, want := range []string{
"source=youdao-pricing-import",
"models=5",
"models=10",
"operator=Youdao Zhiyun MaaS",
"dry_run=true",
} {

View File

@@ -32,6 +32,8 @@ printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=hunyuan-fixture'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=hunyuan-live'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=mobile-cloud-fixture'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=mobile-cloud-live'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=youdao-fixture'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=youdao-live'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=cucloud-pricing-fixture'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=cucloud-pricing-live'
printf '%s' "$PASS_OUTPUT" | grep -q '\[PASS\] importer_smoke=huawei-maas-fixture'

View File

@@ -444,6 +444,8 @@ func providerMetadata(providerName string) (string, string, string) {
switch providerName {
case "Alibaba", "Qwen":
return "阿里云", "CN", "https://tongyi.aliyun.com"
case "360":
return "360", "CN", "https://ai.360.com/open/models"
case "Amazon":
return "亚马逊", "US", "https://aws.amazon.com"
case "Anthropic":
@@ -452,6 +454,8 @@ func providerMetadata(providerName string) (string, string, string) {
return "智源", "CN", "https://www.baai.ac.cn"
case "Baidu":
return "百度", "CN", "https://cloud.baidu.com"
case "Baichuan":
return "百川智能", "CN", "https://platform.baichuan-ai.com"
case "ByteDance":
return "字节跳动", "CN", "https://www.volcengine.com"
case "China Mobile":
@@ -478,12 +482,20 @@ func providerMetadata(providerName string) (string, string, string) {
return "OpenAI", "US", "https://openai.com"
case "Perplexity":
return "Perplexity", "US", "https://www.perplexity.ai"
case "SenseTime":
return "商汤科技", "CN", "https://www.sensetime.com"
case "Tencent":
return "腾讯", "CN", "https://cloud.tencent.com"
case "Huawei":
return "华为", "CN", "https://www.huaweicloud.com"
case "iFlytek":
return "科大讯飞", "CN", "https://www.xfyun.cn"
case "Yi":
return "零一万物", "CN", "https://platform.lingyiwanwu.com"
case "xAI":
return "xAI", "US", "https://x.ai"
case "Xiaomi":
return "小米", "CN", "https://xiaomi.com"
case "Zhipu AI":
return "智谱", "CN", "https://open.bigmodel.cn"
default:

View File

@@ -26,20 +26,38 @@ check_contains "scripts/run_daily.sh" 'error_exit "腾讯云套餐导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "qwen_pricing" "通义千问价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "hunyuan_pricing" "腾讯混元价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "mobile_cloud_pricing" "移动云 MoMA 价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "youdao_pricing" "网易有道价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "platform360_pricing" "360 智脑价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "cucloud_pricing" "联通云 Token Plan 价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "huawei_maas_pricing" "华为云 MaaS 价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "baichuan_pricing" "百川价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "lingyiwanwu_pricing" "零一万物价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "sensenova_pricing" "商汤 SenseNova 价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "xfyun_pricing" "讯飞价格导入失败"'
check_contains "scripts/run_intel_pipeline.sh" 'run_or_fail "bytedance_pricing" "火山方舟价格导入失败"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "qwen_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "hunyuan_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "mobile_cloud_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "youdao_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "platform360_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "cucloud_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "huawei_maas_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "baichuan_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "lingyiwanwu_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "sensenova_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "xfyun_pricing"'
check_contains "scripts/run_real_pipeline.sh" 'merge_failed_source_keys "bytedance_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "qwen_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "hunyuan_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "mobile_cloud_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "youdao_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "platform360_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "cucloud_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "huawei_maas_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "baichuan_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "lingyiwanwu_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "sensenova_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "xfyun_pricing"'
check_contains "scripts/run_daily.sh" 'merge_failed_source_keys "bytedance_pricing"'
@@ -47,8 +65,14 @@ check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "tencent-live"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "qwen-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "hunyuan-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "mobile-cloud-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "youdao-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "platform360-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "cucloud-pricing-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "huawei-maas-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "baichuan-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "lingyiwanwu-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "sensenova-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "xfyun-fixture"'
check_contains "scripts/verify_importer_smoke.sh" 'run_smoke "bytedance-fixture"'
echo "pipeline_runtime_alignment_test: PASS"

View File

@@ -30,11 +30,11 @@ func parse360PricingCatalog(raw string) ([]officialPricingRecord, error) {
ProviderNameCn: providerNameCn,
ProviderCountry: providerCountry,
ProviderWebsite: providerWebsite,
OperatorName: "360 Open Platform",
OperatorName: "360 ZhiNao",
OperatorNameCn: "360 智脑开放平台",
OperatorCountry: "CN",
OperatorWebsite: "https://ai.360.com",
OperatorType: "relay",
OperatorWebsite: default360PricingURL,
OperatorType: "official",
Region: "CN",
Currency: "CNY",
InputPrice: mustParseSubscriptionPrice(match[3]),
@@ -43,7 +43,7 @@ func parse360PricingCatalog(raw string) ([]officialPricingRecord, error) {
SourceURL: default360PricingURL,
ModelSourceURL: default360PricingURL,
DateConfidence: "unknown",
DateSourceKind: "official_product_page",
DateSourceKind: "official_pricing",
Modality: detectModality(modelName),
}
record.IsFree = record.InputPrice == 0 && record.OutputPrice == 0

View File

@@ -22,7 +22,7 @@ MODEL_COUNT=""
FETCH_OUT="${PROJECT_DIR}/models.json"
FETCH_TOTAL="0"
PIPELINE_STAGE_SET="openrouter,multi_source,official_imports,daily_signal_snapshot,daily_report"
PIPELINE_SOURCE_SET="openrouter,moonshot,deepseek,openai,zhipu,baidu,bytedance,tencent_subscription,aliyun_subscription,baidu_subscription,ctyun_subscription,bytedance_subscription,huawei_package,zhipu_coding_plan,minimax_subscription,cucloud_catalog,cucloud_pricing,mobile_cloud_pricing,youdao_pricing,platform360_pricing,siliconflow_pricing,ppio_pricing,ucloud_pricing,coreshub_pricing,cloudflare_pricing,perplexity_pricing,vertex_pricing,bedrock_pricing,azure_openai_pricing,qwen_pricing,hunyuan_pricing,huawei_maas_pricing,bytedance_pricing,catalog_seed_verification"
PIPELINE_SOURCE_SET="openrouter,moonshot,deepseek,openai,zhipu,baidu,bytedance,tencent_subscription,aliyun_subscription,baidu_subscription,ctyun_subscription,bytedance_subscription,huawei_package,zhipu_coding_plan,minimax_subscription,cucloud_catalog,cucloud_pricing,mobile_cloud_pricing,youdao_pricing,platform360_pricing,siliconflow_pricing,ppio_pricing,ucloud_pricing,coreshub_pricing,cloudflare_pricing,perplexity_pricing,vertex_pricing,bedrock_pricing,azure_openai_pricing,qwen_pricing,hunyuan_pricing,huawei_maas_pricing,baichuan_pricing,lingyiwanwu_pricing,sensenova_pricing,xfyun_pricing,bytedance_pricing,catalog_seed_verification"
PIPELINE_FAILED_SOURCE_SET="none"
MULTI_SOURCE_AUDIT="multi_source_audit=unavailable"
PIPELINE_AUDIT_SUMMARY=""
@@ -419,6 +419,34 @@ if ! go run -tags llm_script \
merge_failed_source_keys "huawei_maas_pricing"
error_exit "华为云 MaaS 价格导入失败"
fi
if ! go run -tags llm_script \
scripts/subscription_import_common.go \
scripts/official_pricing_import_common.go \
scripts/import_baichuan_pricing.go >> "$LOG_FILE" 2>&1; then
merge_failed_source_keys "baichuan_pricing"
error_exit "百川价格导入失败"
fi
if ! go run -tags llm_script \
scripts/subscription_import_common.go \
scripts/official_pricing_import_common.go \
scripts/import_lingyiwanwu_pricing.go >> "$LOG_FILE" 2>&1; then
merge_failed_source_keys "lingyiwanwu_pricing"
error_exit "零一万物价格导入失败"
fi
if ! go run -tags llm_script \
scripts/subscription_import_common.go \
scripts/official_pricing_import_common.go \
scripts/import_sensenova_pricing.go >> "$LOG_FILE" 2>&1; then
merge_failed_source_keys "sensenova_pricing"
error_exit "商汤 SenseNova 价格导入失败"
fi
if ! go run -tags llm_script \
scripts/subscription_import_common.go \
scripts/official_pricing_import_common.go \
scripts/import_xfyun_pricing.go >> "$LOG_FILE" 2>&1; then
merge_failed_source_keys "xfyun_pricing"
error_exit "讯飞价格导入失败"
fi
if ! go run -tags llm_script \
scripts/subscription_import_common.go \
scripts/official_pricing_import_common.go \

View File

@@ -27,7 +27,7 @@ REPORT_DATE="${REPORT_DATE:-$(date +%F)}"
FETCH_OUT="$ROOT_DIR/models.json"
FETCH_TOTAL="0"
PIPELINE_STAGE_SET="openrouter,multi_source,official_imports,daily_signal_snapshot"
PIPELINE_SOURCE_SET="openrouter,moonshot,deepseek,openai,zhipu,baidu,bytedance,tencent_subscription,aliyun_subscription,baidu_subscription,ctyun_subscription,bytedance_subscription,huawei_package,zhipu_coding_plan,minimax_subscription,cucloud_catalog,cucloud_pricing,mobile_cloud_pricing,youdao_pricing,platform360_pricing,siliconflow_pricing,ppio_pricing,ucloud_pricing,coreshub_pricing,cloudflare_pricing,perplexity_pricing,vertex_pricing,bedrock_pricing,azure_openai_pricing,qwen_pricing,hunyuan_pricing,huawei_maas_pricing,bytedance_pricing,catalog_seed_verification"
PIPELINE_SOURCE_SET="openrouter,moonshot,deepseek,openai,zhipu,baidu,bytedance,tencent_subscription,aliyun_subscription,baidu_subscription,ctyun_subscription,bytedance_subscription,huawei_package,zhipu_coding_plan,minimax_subscription,cucloud_catalog,cucloud_pricing,mobile_cloud_pricing,youdao_pricing,platform360_pricing,siliconflow_pricing,ppio_pricing,ucloud_pricing,coreshub_pricing,cloudflare_pricing,perplexity_pricing,vertex_pricing,bedrock_pricing,azure_openai_pricing,qwen_pricing,hunyuan_pricing,huawei_maas_pricing,baichuan_pricing,lingyiwanwu_pricing,sensenova_pricing,xfyun_pricing,bytedance_pricing,catalog_seed_verification"
PIPELINE_FAILED_SOURCE_SET="none"
MULTI_SOURCE_AUDIT="multi_source_audit=unavailable"
PIPELINE_AUDIT_SUMMARY=""
@@ -181,6 +181,14 @@ run_or_fail "hunyuan_pricing" "腾讯混元价格导入失败" \
go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_hunyuan_pricing.go
run_or_fail "huawei_maas_pricing" "华为云 MaaS 价格导入失败" \
go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_huawei_maas_pricing.go
run_or_fail "baichuan_pricing" "百川价格导入失败" \
go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_baichuan_pricing.go
run_or_fail "lingyiwanwu_pricing" "零一万物价格导入失败" \
go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_lingyiwanwu_pricing.go
run_or_fail "sensenova_pricing" "商汤 SenseNova 价格导入失败" \
go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_sensenova_pricing.go
run_or_fail "xfyun_pricing" "讯飞价格导入失败" \
go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_xfyun_pricing.go
run_or_fail "bytedance_pricing" "火山方舟价格导入失败" \
go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_bytedance_pricing.go

View File

@@ -28,7 +28,7 @@ REPORT_DATE="$(report_date_value)"
FETCH_OUT="$ROOT_DIR/models.json"
FETCH_TOTAL="0"
PIPELINE_STAGE_SET="openrouter,multi_source,official_imports,daily_signal_snapshot,daily_report"
PIPELINE_SOURCE_SET="openrouter,moonshot,deepseek,openai,zhipu,baidu,bytedance,tencent_subscription,aliyun_subscription,baidu_subscription,ctyun_subscription,bytedance_subscription,huawei_package,zhipu_coding_plan,minimax_subscription,cucloud_catalog,cucloud_pricing,mobile_cloud_pricing,youdao_pricing,platform360_pricing,siliconflow_pricing,ppio_pricing,ucloud_pricing,coreshub_pricing,cloudflare_pricing,perplexity_pricing,vertex_pricing,bedrock_pricing,azure_openai_pricing,qwen_pricing,hunyuan_pricing,huawei_maas_pricing,bytedance_pricing,catalog_seed_verification"
PIPELINE_SOURCE_SET="openrouter,moonshot,deepseek,openai,zhipu,baidu,bytedance,tencent_subscription,aliyun_subscription,baidu_subscription,ctyun_subscription,bytedance_subscription,huawei_package,zhipu_coding_plan,minimax_subscription,cucloud_catalog,cucloud_pricing,mobile_cloud_pricing,youdao_pricing,platform360_pricing,siliconflow_pricing,ppio_pricing,ucloud_pricing,coreshub_pricing,cloudflare_pricing,perplexity_pricing,vertex_pricing,bedrock_pricing,azure_openai_pricing,qwen_pricing,hunyuan_pricing,huawei_maas_pricing,baichuan_pricing,lingyiwanwu_pricing,sensenova_pricing,xfyun_pricing,bytedance_pricing,catalog_seed_verification"
PIPELINE_FAILED_SOURCE_SET="none"
MULTI_SOURCE_AUDIT="multi_source_audit=unavailable"
PIPELINE_AUDIT_SUMMARY=""
@@ -289,6 +289,26 @@ if ! go run -tags llm_script "./scripts/subscription_import_common.go" "./script
record_failure "华为云 MaaS 价格导入失败"
exit 1
fi
if ! go run -tags llm_script "./scripts/subscription_import_common.go" "./scripts/official_pricing_import_common.go" "./scripts/import_baichuan_pricing.go"; then
merge_failed_source_keys "baichuan_pricing"
record_failure "百川价格导入失败"
exit 1
fi
if ! go run -tags llm_script "./scripts/subscription_import_common.go" "./scripts/official_pricing_import_common.go" "./scripts/import_lingyiwanwu_pricing.go"; then
merge_failed_source_keys "lingyiwanwu_pricing"
record_failure "零一万物价格导入失败"
exit 1
fi
if ! go run -tags llm_script "./scripts/subscription_import_common.go" "./scripts/official_pricing_import_common.go" "./scripts/import_sensenova_pricing.go"; then
merge_failed_source_keys "sensenova_pricing"
record_failure "商汤 SenseNova 价格导入失败"
exit 1
fi
if ! go run -tags llm_script "./scripts/subscription_import_common.go" "./scripts/official_pricing_import_common.go" "./scripts/import_xfyun_pricing.go"; then
merge_failed_source_keys "xfyun_pricing"
record_failure "讯飞价格导入失败"
exit 1
fi
if ! go run -tags llm_script "./scripts/subscription_import_common.go" "./scripts/official_pricing_import_common.go" "./scripts/import_bytedance_pricing.go"; then
merge_failed_source_keys "bytedance_pricing"
record_failure "火山方舟价格导入失败"

View File

@@ -1,36 +1,72 @@
DeepSeek V4 Flash
DeepSeek-V4-Flash
DeepSeek
上下文长度 1M
输入:¥1.0
输出:¥2.0
查看详情
DeepSeek-V4-Pro
DeepSeek
上下文长度 1M
输入:¥12.0
输出:¥24.0
查看详情
Qwen-3.5-Plus
Qwen
上下文长度 1M
输入:¥0.8
输出:¥4.8
查看详情
Qwen-3.5-Flash
Qwen
上下文长度 128K
输入:¥0.5
输出:¥2
查看详情
DeepSeek V4 Pro
DeepSeek
上下文长度 128K
输入:¥2
输出:¥8
查看详情
Kimi K2.6
Kimi
上下文长度 262K
输入:¥4
输出:¥16
查看详情
MiniMax M2.5
Minimax
上下文长度 1M
输入:¥1
输出:¥8
查看详情
GLM-5
Zhipu
上下文长度 128K
输入:¥1
输出:¥3
查看详情
输出:¥1.5
即将上线
Qwen-3.6-Plus
Qwen
上下文长度 1M
输入:¥2.0
输出:¥12.0
查看详情
Kimi-K2.5
Kimi
上下文长度 256K
输入:¥0.8
输出:¥3.2
输入:¥4
输出:¥21
查看详情
Kimi-K2.6
Kimi
上下文长度 256K
输入:¥6.5
输出:¥27.0
查看详情
Minimax-M2.5
Minimax
上下文长度 200K
输入:¥2.1
输出:¥8.4
查看详情
Minimax-M2.7
Minimax
上下文长度 200K
输入:¥2.1
输出:¥8.4
查看详情
GLM-5
智谱
上下文长度 200K
输入:¥4.0
输出:¥18.0
查看详情
GLM-5.1
智谱
上下文长度 200K
输入:¥6.0
输出:¥24.0
查看详情
MiMo-V2.5
小米
上下文长度 1M
输入:¥0.56
输出:¥2.80
即将上线

View File

@@ -12,9 +12,15 @@ TENCENT_FIXTURE_PATH="${TENCENT_FIXTURE_PATH:-./scripts/testdata/tencent_token_p
QWEN_FIXTURE_PATH="${QWEN_FIXTURE_PATH:-./scripts/testdata/qwen_pricing_sample.txt}"
HUNYUAN_FIXTURE_PATH="${HUNYUAN_FIXTURE_PATH:-./scripts/testdata/hunyuan_pricing_sample.txt}"
MOBILE_CLOUD_FIXTURE_PATH="${MOBILE_CLOUD_FIXTURE_PATH:-./scripts/testdata/mobile_cloud_pricing_sample.html}"
YOUDAO_FIXTURE_PATH="${YOUDAO_FIXTURE_PATH:-./scripts/testdata/youdao_pricing_sample.txt}"
CUCLOUD_FIXTURE_PATH="${CUCLOUD_FIXTURE_PATH:-./scripts/testdata/cucloud_pricing_sample.html}"
BYTEDANCE_FIXTURE_PATH="${BYTEDANCE_FIXTURE_PATH:-./scripts/testdata/bytedance_ark_pricing_sample.txt}"
HUAWEI_MAAS_FIXTURE_PATH="${HUAWEI_MAAS_FIXTURE_PATH:-./scripts/testdata/huawei_maas_pricing_sample.json}"
BAICHUAN_FIXTURE_PATH="${BAICHUAN_FIXTURE_PATH:-./scripts/testdata/baichuan_pricing_sample.txt}"
LINGYIWANWU_FIXTURE_PATH="${LINGYIWANWU_FIXTURE_PATH:-./scripts/testdata/lingyiwanwu_pricing_sample.txt}"
PLATFORM360_FIXTURE_PATH="${PLATFORM360_FIXTURE_PATH:-./scripts/testdata/platform360_pricing_sample.txt}"
SENSENOVA_FIXTURE_PATH="${SENSENOVA_FIXTURE_PATH:-./scripts/testdata/sensenova_pricing_sample.txt}"
XFYUN_FIXTURE_PATH="${XFYUN_FIXTURE_PATH:-./scripts/testdata/xfyun_pricing_sample.html}"
last_meaningful_line() {
awk 'NF && $0 !~ /^exit status [0-9]+$/ { line=$0 } END { print line }'
@@ -53,10 +59,22 @@ run_smoke "hunyuan-fixture" "go run -tags llm_script ./scripts/subscription_impo
run_smoke "hunyuan-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_hunyuan_pricing.go -dry-run"
run_smoke "mobile-cloud-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_mobile_cloud_pricing.go -fixture ${MOBILE_CLOUD_FIXTURE_PATH@Q} -dry-run"
run_smoke "mobile-cloud-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_mobile_cloud_pricing.go -dry-run"
run_smoke "youdao-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/youdao_pricing_lib.go ./scripts/import_youdao_pricing.go -fixture ${YOUDAO_FIXTURE_PATH@Q} -dry-run"
run_smoke "youdao-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/youdao_pricing_lib.go ./scripts/import_youdao_pricing.go -dry-run"
run_smoke "platform360-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/platform360_pricing_lib.go ./scripts/import_360_pricing.go -fixture ${PLATFORM360_FIXTURE_PATH@Q} -dry-run"
run_smoke "platform360-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/platform360_pricing_lib.go ./scripts/import_360_pricing.go -dry-run"
run_smoke "cucloud-pricing-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_cucloud_pricing.go -fixture ${CUCLOUD_FIXTURE_PATH@Q} -dry-run"
run_smoke "cucloud-pricing-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_cucloud_pricing.go -dry-run"
run_smoke "huawei-maas-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_huawei_maas_pricing.go -fixture ${HUAWEI_MAAS_FIXTURE_PATH@Q} -dry-run"
run_smoke "huawei-maas-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_huawei_maas_pricing.go -dry-run"
run_smoke "baichuan-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_baichuan_pricing.go -fixture ${BAICHUAN_FIXTURE_PATH@Q} -dry-run"
run_smoke "baichuan-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_baichuan_pricing.go -dry-run"
run_smoke "lingyiwanwu-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_lingyiwanwu_pricing.go -fixture ${LINGYIWANWU_FIXTURE_PATH@Q} -dry-run"
run_smoke "lingyiwanwu-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_lingyiwanwu_pricing.go -dry-run"
run_smoke "sensenova-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_sensenova_pricing.go -fixture ${SENSENOVA_FIXTURE_PATH@Q} -dry-run"
run_smoke "sensenova-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_sensenova_pricing.go -dry-run"
run_smoke "xfyun-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_xfyun_pricing.go -fixture ${XFYUN_FIXTURE_PATH@Q} -dry-run"
run_smoke "xfyun-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_xfyun_pricing.go -dry-run"
run_smoke "bytedance-fixture" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_bytedance_pricing.go -fixture ${BYTEDANCE_FIXTURE_PATH@Q} -dry-run"
run_smoke "bytedance-live" "go run -tags llm_script ./scripts/subscription_import_common.go ./scripts/official_pricing_import_common.go ./scripts/import_bytedance_pricing.go -dry-run"

View File

@@ -8,9 +8,9 @@ import (
"strings"
)
const defaultYoudaoPricingURL = "https://ai.youdao.com/new/model-service"
const defaultYoudaoPricingURL = "https://ai.youdao.com/new/thinkflow"
var youdaoCardPattern = regexp.MustCompile(`(?s)([A-Za-z0-9.+\- ]+)\n([A-Za-z][A-Za-z0-9 ]+)\n.*?上下文长度\s*([0-9A-Za-z., ]+)\n.*?输入[:]?\s*¥?([\d.]+)\n.*?输出[:]?\s*¥?([\d.]+)\n.*?(查看详情|即将上线)`)
var youdaoCardPattern = regexp.MustCompile(`(?s)([A-Za-z0-9.+\- ]+)\n([^\n]+)\n.*?上下文长度\s*([0-9A-Za-z., ]+)\n.*?输入[:]?\s*¥?([\d.]+)\n.*?输出[:]?\s*¥?([\d.]+)\n.*?(查看详情|即将上线)`)
func parseYoudaoPricingCatalog(raw string) ([]officialPricingRecord, error) {
matches := youdaoCardPattern.FindAllStringSubmatch(raw, -1)
@@ -36,8 +36,8 @@ func parseYoudaoPricingCatalog(raw string) ([]officialPricingRecord, error) {
OperatorName: "Youdao Zhiyun MaaS",
OperatorNameCn: "有道智云 MaaS",
OperatorCountry: "CN",
OperatorWebsite: "https://sf.163.com",
OperatorType: "relay",
OperatorWebsite: defaultYoudaoPricingURL,
OperatorType: "official",
Region: "CN",
Currency: "CNY",
InputPrice: mustParseSubscriptionPrice(match[4]),
@@ -46,7 +46,7 @@ func parseYoudaoPricingCatalog(raw string) ([]officialPricingRecord, error) {
SourceURL: defaultYoudaoPricingURL,
ModelSourceURL: defaultYoudaoPricingURL,
DateConfidence: "unknown",
DateSourceKind: "official_product_page",
DateSourceKind: "official_pricing",
Modality: detectModality(modelName),
}
record.IsFree = record.InputPrice == 0 && record.OutputPrice == 0
@@ -70,6 +70,10 @@ func normalizeYoudaoProvider(raw string) string {
return "MiniMax"
case "zhipu":
return "Zhipu AI"
case "智谱":
return "Zhipu AI"
case "xiaomi", "小米":
return "Xiaomi"
default:
return strings.TrimSpace(raw)
}