feat(report): add official release event source

This commit is contained in:
phamnazage-jpg
2026-05-13 21:36:18 +08:00
parent b4e28d5be4
commit b9ca312366
2 changed files with 184 additions and 9 deletions

View File

@@ -405,6 +405,20 @@ func TestGenerateHTMLV3IncludesTencentSubscriptionSection(t *testing.T) {
func TestBuildHeadlineItemsUsesModelEvents(t *testing.T) {
report := sampleReportForV1()
report.ModelEvents = []ModelEvent{
{
EventType: "official_release",
ModelName: "GLM-5",
ProviderName: "Zhipu",
OperatorName: "Zhipu",
TrustLabel: "官方来源",
Baseline: "官方首次发布",
Summary: "官方发布新模型,值得优先复查中文通用与推理场景默认选择。",
SourceKindLabel: "官方发布",
PrimarySource: "https://open.bigmodel.cn/dev/howuse/model",
UpdatedAt: "2026-05-13 08:30",
EvidenceDetail: "models.release_date = 今日,且 source_url 指向官方文档",
Priority: 120,
},
{
EventType: "price_cut",
ModelName: "glm-5",
@@ -441,14 +455,14 @@ func TestBuildHeadlineItemsUsesModelEvents(t *testing.T) {
if len(items) < 2 {
t.Fatalf("expected at least 2 headline items, got %d", len(items))
}
if !strings.Contains(items[0].Title, "glm-5") {
t.Fatalf("expected price_cut event to rank first, got %+v", items[0])
if !strings.Contains(items[0].Title, "GLM-5") || items[0].Label != "官方发布" {
t.Fatalf("expected official release event to rank first, got %+v", items[0])
}
if items[0].Baseline != "较昨日 -25%" {
t.Fatalf("expected event baseline to be preserved, got %+v", items[0])
if items[1].Baseline != "较昨日 -25%" {
t.Fatalf("expected price_cut baseline to be preserved, got %+v", items[1])
}
if items[0].SourceKindLabel != "价格快照" || items[0].PrimarySource != "pricing_history" {
t.Fatalf("expected event evidence fields to be preserved, got %+v", items[0])
if items[0].SourceKindLabel != "官方发布" || items[0].PrimarySource != "https://open.bigmodel.cn/dev/howuse/model" {
t.Fatalf("expected official release evidence fields to be preserved, got %+v", items[0])
}
}
@@ -534,3 +548,30 @@ func TestHeadlineItemFromModelEventIncludesEvidenceFields(t *testing.T) {
t.Fatalf("expected evidence detail to be populated, got %+v", item)
}
}
func TestHeadlineItemFromOfficialReleaseEvent(t *testing.T) {
item := headlineItemFromModelEvent(ModelEvent{
EventType: "official_release",
ModelName: "Claude Sonnet 4.5",
TrustLabel: "官方来源",
Baseline: "官方首次发布",
Summary: "官方发布新模型。",
SourceKindLabel: "官方发布",
PrimarySource: "https://docs.anthropic.com/en/release-notes/api",
UpdatedAt: "2026-05-13 07:00",
EvidenceDetail: "models.release_date = 今日,且 source_url 指向官方发布页",
})
if item.Label != "官方发布" {
t.Fatalf("expected label to be 官方发布, got %+v", item)
}
if !strings.Contains(item.Title, "官方发布") {
t.Fatalf("expected title to mention 官方发布, got %+v", item)
}
if item.SourceKindLabel != "官方发布" {
t.Fatalf("expected source kind label to be 官方发布, got %+v", item)
}
if item.PrimarySource != "https://docs.anthropic.com/en/release-notes/api" {
t.Fatalf("expected primary source to be preserved, got %+v", item)
}
}