feat(symptom): add Symptom @Model + start/end sheets + ongoing card
- Symptom @Model with severity 1-5 clamp, isOngoing, duration helpers - SymptomStartSheet / SymptomEndSheet / OngoingSymptomsCard - RecordSheet 加 .symptom kind 入口 - RootView 增加 'records' tab + ArchiveListView placeholder - HomeView 顶部加 OngoingSymptomsCard - ModelsSchemaTests: 2 个 Symptom 烟测(ongoing predicate + severity clamp) Note: Symptom 是 CLAUDE.md §10 清单外的新功能,由产品负责人决定加入。 ArchiveListView 仍是 placeholder,真实 C1 实现按计划在 W4。
This commit is contained in:
@@ -131,6 +131,39 @@ final class Asset {
|
||||
}
|
||||
}
|
||||
|
||||
@Model
|
||||
final class Symptom {
|
||||
var name: String
|
||||
var startedAt: Date
|
||||
var endedAt: Date?
|
||||
var note: String?
|
||||
var severity: Int
|
||||
var tags: [String]
|
||||
var createdAt: Date
|
||||
|
||||
init(name: String,
|
||||
startedAt: Date = .now,
|
||||
endedAt: Date? = nil,
|
||||
note: String? = nil,
|
||||
severity: Int = 3,
|
||||
tags: [String] = [],
|
||||
createdAt: Date = .now) {
|
||||
self.name = name
|
||||
self.startedAt = startedAt
|
||||
self.endedAt = endedAt
|
||||
self.note = note
|
||||
self.severity = max(1, min(5, severity))
|
||||
self.tags = tags
|
||||
self.createdAt = createdAt
|
||||
}
|
||||
|
||||
var isOngoing: Bool { endedAt == nil }
|
||||
|
||||
var duration: TimeInterval {
|
||||
(endedAt ?? .now).timeIntervalSince(startedAt)
|
||||
}
|
||||
}
|
||||
|
||||
@Model
|
||||
final class ChatTurn {
|
||||
var question: String
|
||||
|
||||
Reference in New Issue
Block a user