fix(explain): address review findings — N+1 queries, duplicate decisions, silent errors
1. fetch_open_threads: replace N+1 loop (2 queries per thread) with a single query using correlated subqueries for note_count and started_by. 2. extract_key_decisions: track consumed notes so the same note is not matched to multiple events, preventing duplicate decision entries. 3. build_timeline_excerpt_from_pipeline: log tracing::warn on seed/collect failures instead of silently returning empty timeline.
This commit is contained in:
@@ -119,15 +119,12 @@ pub fn search_fts(
|
||||
}
|
||||
|
||||
pub fn generate_fallback_snippet(content_text: &str, max_chars: usize) -> String {
|
||||
if content_text.chars().count() <= max_chars {
|
||||
return content_text.to_string();
|
||||
}
|
||||
|
||||
let byte_end = content_text
|
||||
.char_indices()
|
||||
.nth(max_chars)
|
||||
.map(|(i, _)| i)
|
||||
.unwrap_or(content_text.len());
|
||||
// Use char_indices to find the boundary at max_chars in a single pass,
|
||||
// short-circuiting early for large strings instead of counting all chars.
|
||||
let byte_end = match content_text.char_indices().nth(max_chars) {
|
||||
Some((i, _)) => i,
|
||||
None => return content_text.to_string(), // content fits within max_chars
|
||||
};
|
||||
let truncated = &content_text[..byte_end];
|
||||
|
||||
if let Some(last_space) = truncated.rfind(' ') {
|
||||
|
||||
Reference in New Issue
Block a user