query by NodeType instead of key prefix
Replace key prefix matching (journal#j-, daily-, weekly-, monthly-) with NodeType filters (EpisodicSession, EpisodicDaily, EpisodicWeekly, EpisodicMonthly) for all queries: journal-tail, digest gathering, digest auto-detection, experience mining dedup, and find_journal_node. Add EpisodicMonthly to NodeType enum and capnp schema. Key naming conventions (journal#j-TIMESTAMP-slug, daily-DATE, etc.) are retained for key generation — the fix is about how we find nodes, not how we name them. Co-Authored-By: ProofOfConcept <poc@bcachefs.org>
This commit is contained in:
parent
fd5591653d
commit
804578b977
8 changed files with 43 additions and 47 deletions
|
|
@ -336,21 +336,11 @@ pub fn experience_mine(
|
|||
.map(|n| n.content.clone())
|
||||
.unwrap_or_default();
|
||||
|
||||
// Get recent journal entries to avoid duplication
|
||||
let key_date_re = Regex::new(r"^journal#j-(\d{4}-\d{2}-\d{2}[t-]\d{2}-\d{2})").unwrap();
|
||||
let date_re = Regex::new(r"(\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2})").unwrap();
|
||||
// Get recent episodic entries to avoid duplication
|
||||
let mut journal: Vec<_> = store.nodes.values()
|
||||
.filter(|node| node.key.starts_with("journal#j-"))
|
||||
.filter(|node| matches!(node.node_type, store::NodeType::EpisodicSession))
|
||||
.collect();
|
||||
journal.sort_by(|a, b| {
|
||||
let ak = key_date_re.captures(&a.key).map(|c| c[1].to_string())
|
||||
.or_else(|| date_re.captures(&a.content).map(|c| c[1].to_string()))
|
||||
.unwrap_or_default();
|
||||
let bk = key_date_re.captures(&b.key).map(|c| c[1].to_string())
|
||||
.or_else(|| date_re.captures(&b.content).map(|c| c[1].to_string()))
|
||||
.unwrap_or_default();
|
||||
ak.cmp(&bk)
|
||||
});
|
||||
journal.sort_by_key(|n| n.timestamp);
|
||||
let recent: String = journal.iter().rev().take(10)
|
||||
.map(|n| format!("---\n{}\n", n.content))
|
||||
.collect();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue