From 0f549842ee746e400b1f72516b0b2e292e267e2c Mon Sep 17 00:00:00 2001 From: Jack Date: Thu, 24 Sep 2026 14:20:31 +0800 Subject: [PATCH] fix(stats): attribute Hy4 preview traffic to Tencent (#51050) Co-authored-by: MrMushrooooom <19261047+MrMushrooooom@users.noreply.github.com> --- packages/stats/core/src/domain/geo.ts | 6 +++++- packages/stats/core/src/domain/inference.test.ts | 11 +++++++++++ packages/stats/core/src/domain/model-normalization.ts | 1 + packages/stats/core/src/domain/model.ts | 1 + 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/stats/core/src/domain/geo.ts b/packages/stats/core/src/domain/geo.ts index a61e341145..975e0b927d 100644 --- a/packages/stats/core/src/domain/geo.ts +++ b/packages/stats/core/src/domain/geo.ts @@ -207,7 +207,11 @@ export class GeoStatRepo extends Context.Service DatabaseError.make({ cause }), diff --git a/packages/stats/core/src/domain/inference.test.ts b/packages/stats/core/src/domain/inference.test.ts index f86f6873a7..1e06f0e545 100644 --- a/packages/stats/core/src/domain/inference.test.ts +++ b/packages/stats/core/src/domain/inference.test.ts @@ -57,6 +57,17 @@ describe("inference stat normalization", () => { expect(statProvider("unknown", "", "custom-provider")).toBe("custom-provider") }) + test("attributes hy4 preview traffic to Tencent instead of the unknown provider", () => { + expect(modelAuthor("hy4-preview")).toBe("tencent") + expect(toModelAggregate(aggregate("hy4-preview", "opencode"))).toMatchObject([ + { model: "hy4-preview", provider: "tencent" }, + ]) + expect(toProviderAggregate(aggregate("hy4-preview", "opencode"))).toMatchObject([{ provider: "tencent" }]) + expect(toGeoAggregate({ ...aggregate("hy4-preview", "opencode"), country: "US" })).toMatchObject([ + { model: "hy4-preview", provider: "tencent" }, + ]) + }) + test("maps oversized model ids to unknown before aggregation", () => { expect(statModel("x".repeat(256), "")).toBe("x".repeat(256)) expect(statModel("x".repeat(257), "")).toBe("unknown") diff --git a/packages/stats/core/src/domain/model-normalization.ts b/packages/stats/core/src/domain/model-normalization.ts index 52ed155b13..227eef1e90 100644 --- a/packages/stats/core/src/domain/model-normalization.ts +++ b/packages/stats/core/src/domain/model-normalization.ts @@ -6,6 +6,7 @@ export const MODEL_AUTHOR_RULES = [ { match: "gpt", author: "openai" }, { match: "grok", author: "xai" }, { match: "hy3", author: "tencent" }, + { match: "hy4", author: "tencent" }, { match: "kimi", author: "moonshot" }, { match: "mimo", author: "xiaomi" }, { match: "minimax", author: "minimax" }, diff --git a/packages/stats/core/src/domain/model.ts b/packages/stats/core/src/domain/model.ts index a19fdc7858..ec16d65158 100644 --- a/packages/stats/core/src/domain/model.ts +++ b/packages/stats/core/src/domain/model.ts @@ -195,6 +195,7 @@ export class ModelStatRepo extends Context.Service