From 2e27677f801e5be2c7ec0a43f03b4ba2a4c40d2f Mon Sep 17 00:00:00 2001 From: link2026 Date: Wed, 10 Jun 2026 07:12:48 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E4=BF=AE=E6=AD=A3=E4=B8=A4=E5=A4=84?= =?UTF-8?q?=E6=96=AD=E8=A8=80=E6=97=A7=E8=A1=8C=E4=B8=BA=E7=9A=84=E5=AD=98?= =?UTF-8?q?=E9=87=8F=E6=B5=8B=E8=AF=95(=E6=82=A3=E8=80=85=E2=86=92?= =?UTF-8?q?=E6=88=91=20=E6=96=87=E6=A1=88=E3=80=81lab=20=E6=AE=B5=E5=BD=92?= =?UTF-8?q?=E5=B9=B6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- 康康Tests/HealthExportDialogueTests.swift | 15 +++++++++------ 康康Tests/SeriesBucketTests.swift | 9 ++++++--- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/康康Tests/HealthExportDialogueTests.swift b/康康Tests/HealthExportDialogueTests.swift index 3dea586..9248700 100644 --- a/康康Tests/HealthExportDialogueTests.swift +++ b/康康Tests/HealthExportDialogueTests.swift @@ -3,7 +3,7 @@ import Testing @testable import 康康 struct HealthExportDialogueTests { - @Test func dialogueTranscriptKeepsTurnOrderAndRoles() { + @Test func dialogueTranscriptKeepsTurnOrderAndRoles() throws { let turns: [HealthExportDialogueTurn] = [ .user("我最近头晕,帮我看看"), .assistant("我会结合你的指标和日记整理。"), @@ -12,10 +12,13 @@ struct HealthExportDialogueTests { let transcript = HealthExportDialogueTurn.transcript(from: turns) - #expect(transcript.contains("患者: 我最近头晕,帮我看看")) + // 用户角色标签是「我」(产品红线:不出现「患者」,见 ca5a3fa)。 + #expect(transcript.contains("我: 我最近头晕,帮我看看")) #expect(transcript.contains("康康: 我会结合你的指标和日记整理。")) - #expect(transcript.contains("患者: 重点看血压")) - #expect(transcript.range(of: "患者: 我最近头晕")!.lowerBound < transcript.range(of: "患者: 重点看血压")!.lowerBound) + #expect(transcript.contains("我: 重点看血压")) + let first = try #require(transcript.range(of: "我: 我最近头晕")) + let second = try #require(transcript.range(of: "我: 重点看血压")) + #expect(first.lowerBound < second.lowerBound) } @Test func dialogueTranscriptDropsEmptyTurns() { @@ -27,8 +30,8 @@ struct HealthExportDialogueTests { let transcript = HealthExportDialogueTurn.transcript(from: turns) - #expect(!transcript.contains("患者: ")) + #expect(!transcript.contains("我: ")) #expect(transcript.contains("康康: 请补充想看的问题")) - #expect(transcript.contains("患者: 最近三个月")) + #expect(transcript.contains("我: 最近三个月")) } } diff --git a/康康Tests/SeriesBucketTests.swift b/康康Tests/SeriesBucketTests.swift index 83d38d6..42dec4a 100644 --- a/康康Tests/SeriesBucketTests.swift +++ b/康康Tests/SeriesBucketTests.swift @@ -18,14 +18,17 @@ struct SeriesBucketTests { seriesKey: seriesKey) } - @Test func skipsIndicatorsWithoutSeriesKey() { + @Test func indicatorsWithoutSeriesKeyFoldIntoLabBucket() { + // 「lab 段」特性:无 seriesKey 的指标按 name+unit 归并,同名 ≥minPoints 次即成趋势。 let now = Date() let items = [ - makeIndicator(value: "5.0", capturedAt: now, seriesKey: nil), + makeIndicator(value: "5.0", capturedAt: now.addingTimeInterval(-86_400), seriesKey: nil), makeIndicator(value: "5.2", capturedAt: now, seriesKey: nil), ] let buckets = SeriesBucket.build(from: items) - #expect(buckets.isEmpty) + #expect(buckets.count == 1) + #expect(buckets.first?.kind == .lab) + #expect(buckets.first?.lines.first?.points.count == 2) } @Test func filtersOutSeriesWithFewerThanMinPoints() {