Cache backend tags so offline pill filtering stays accurate
Add tags[] to CachedStory (defaulted for lightweight migration) and persist them on upsert; offline StorySummary now carries the cached tags instead of falling back to topic. Backend stays the source of truth. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -170,6 +170,9 @@ final class CachedStory {
|
|||||||
var headline: String
|
var headline: String
|
||||||
var summary: String
|
var summary: String
|
||||||
var topic: String
|
var topic: String
|
||||||
|
/// Canonical backend tags, so offline pill filtering stays accurate.
|
||||||
|
/// Defaulted for lightweight migration of existing cached rows.
|
||||||
|
var tags: [String] = []
|
||||||
var signalScore: Int
|
var signalScore: Int
|
||||||
var sourceCount: Int
|
var sourceCount: Int
|
||||||
var consensus: String?
|
var consensus: String?
|
||||||
@@ -182,6 +185,7 @@ final class CachedStory {
|
|||||||
self.headline = summary.headline
|
self.headline = summary.headline
|
||||||
self.summary = summary.summary
|
self.summary = summary.summary
|
||||||
self.topic = summary.topic
|
self.topic = summary.topic
|
||||||
|
self.tags = summary.tags ?? []
|
||||||
self.signalScore = summary.signalScore
|
self.signalScore = summary.signalScore
|
||||||
self.sourceCount = summary.sourceCount
|
self.sourceCount = summary.sourceCount
|
||||||
self.consensus = summary.consensus
|
self.consensus = summary.consensus
|
||||||
|
|||||||
@@ -466,6 +466,7 @@ struct SignalFeedView: View {
|
|||||||
if let found = existing?.first {
|
if let found = existing?.first {
|
||||||
found.signalScore = summary.signalScore
|
found.signalScore = summary.signalScore
|
||||||
found.sourceCount = summary.sourceCount
|
found.sourceCount = summary.sourceCount
|
||||||
|
found.tags = summary.tags ?? []
|
||||||
found.updatedAt = summary.updatedAt
|
found.updatedAt = summary.updatedAt
|
||||||
} else {
|
} else {
|
||||||
modelContext.insert(CachedStory(from: summary))
|
modelContext.insert(CachedStory(from: summary))
|
||||||
@@ -483,7 +484,7 @@ extension StorySummary {
|
|||||||
headline: cached.headline,
|
headline: cached.headline,
|
||||||
summary: cached.summary,
|
summary: cached.summary,
|
||||||
topic: cached.topic,
|
topic: cached.topic,
|
||||||
tags: nil,
|
tags: cached.tags,
|
||||||
signalScore: cached.signalScore,
|
signalScore: cached.signalScore,
|
||||||
scoreBreakdown: ScoreBreakdown(sourceAuthority: 0, freshness: 0, localRelevance: 0,
|
scoreBreakdown: ScoreBreakdown(sourceAuthority: 0, freshness: 0, localRelevance: 0,
|
||||||
crossSourceConfirmation: 0, topicImportance: 0),
|
crossSourceConfirmation: 0, topicImportance: 0),
|
||||||
|
|||||||
Reference in New Issue
Block a user