Clean up verbose debug logging from backend server
- Remove emoji debug logs from event deduplication process - Remove verbose RRULE consolidation logging - Remove "found X events with title Y" spam logs - Keep essential functionality intact - Maintain clean production server logs 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -485,7 +485,6 @@ fn parse_datetime_with_tz(datetime_str: &str, tzid: Option<&str>) -> Option<Date
|
|||||||
fn deduplicate_events(mut events: Vec<VEvent>) -> Vec<VEvent> {
|
fn deduplicate_events(mut events: Vec<VEvent>) -> Vec<VEvent> {
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
let original_count = events.len();
|
|
||||||
|
|
||||||
// First pass: Group by UID and prefer recurring events over single events with same UID
|
// First pass: Group by UID and prefer recurring events over single events with same UID
|
||||||
let mut uid_groups: HashMap<String, Vec<VEvent>> = HashMap::new();
|
let mut uid_groups: HashMap<String, Vec<VEvent>> = HashMap::new();
|
||||||
@@ -547,13 +546,12 @@ fn deduplicate_events(mut events: Vec<VEvent>) -> Vec<VEvent> {
|
|||||||
|
|
||||||
let mut deduplicated_recurring = Vec::new();
|
let mut deduplicated_recurring = Vec::new();
|
||||||
|
|
||||||
for (title, events_with_title) in title_groups.drain() {
|
for (_title, events_with_title) in title_groups.drain() {
|
||||||
if events_with_title.len() == 1 {
|
if events_with_title.len() == 1 {
|
||||||
// Single event with this title, keep as-is
|
// Single event with this title, keep as-is
|
||||||
deduplicated_recurring.push(events_with_title.into_iter().next().unwrap());
|
deduplicated_recurring.push(events_with_title.into_iter().next().unwrap());
|
||||||
} else {
|
} else {
|
||||||
// Multiple events with same title - consolidate or deduplicate
|
// Multiple events with same title - consolidate or deduplicate
|
||||||
println!("🔍 Found {} events with title '{}'", events_with_title.len(), title);
|
|
||||||
|
|
||||||
// Check if these are actually different recurring patterns for the same logical event
|
// Check if these are actually different recurring patterns for the same logical event
|
||||||
let consolidated = consolidate_same_title_events(events_with_title);
|
let consolidated = consolidate_same_title_events(events_with_title);
|
||||||
@@ -580,15 +578,9 @@ fn deduplicate_events(mut events: Vec<VEvent>) -> Vec<VEvent> {
|
|||||||
let existing_completeness = event_completeness_score(existing_event);
|
let existing_completeness = event_completeness_score(existing_event);
|
||||||
|
|
||||||
if current_completeness > existing_completeness {
|
if current_completeness > existing_completeness {
|
||||||
println!("🔄 Replacing single event: Keeping '{}' over '{}'",
|
|
||||||
event.summary.as_ref().unwrap_or(&"No Title".to_string()),
|
|
||||||
existing_event.summary.as_ref().unwrap_or(&"No Title".to_string())
|
|
||||||
);
|
|
||||||
deduplicated_single[existing_index] = event;
|
deduplicated_single[existing_index] = event;
|
||||||
} else {
|
} else {
|
||||||
println!("🚫 Discarding duplicate single event: Keeping existing '{}'",
|
// Discarding duplicate single event - keeping existing
|
||||||
existing_event.summary.as_ref().unwrap_or(&"No Title".to_string())
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -608,10 +600,6 @@ fn deduplicate_events(mut events: Vec<VEvent>) -> Vec<VEvent> {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if is_rrule_generated {
|
if is_rrule_generated {
|
||||||
println!("🚫 Discarding RRULE-generated instance: '{}' at {} would be generated by recurring event",
|
|
||||||
event.summary.as_ref().unwrap_or(&"No Title".to_string()),
|
|
||||||
event.dtstart.format("%Y-%m-%d %H:%M")
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
// This is a unique single event
|
// This is a unique single event
|
||||||
seen_single.insert(dedup_key, deduplicated_single.len());
|
seen_single.insert(dedup_key, deduplicated_single.len());
|
||||||
@@ -623,11 +611,6 @@ fn deduplicate_events(mut events: Vec<VEvent>) -> Vec<VEvent> {
|
|||||||
let mut result = deduplicated_recurring;
|
let mut result = deduplicated_recurring;
|
||||||
result.extend(deduplicated_single);
|
result.extend(deduplicated_single);
|
||||||
|
|
||||||
println!("📊 Deduplication complete: {} -> {} events ({} recurring, {} single)",
|
|
||||||
original_count, result.len(),
|
|
||||||
result.iter().filter(|e| e.rrule.is_some()).count(),
|
|
||||||
result.iter().filter(|e| e.rrule.is_none()).count()
|
|
||||||
);
|
|
||||||
|
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
@@ -653,14 +636,6 @@ fn consolidate_same_title_events(events: Vec<VEvent>) -> Vec<VEvent> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Log the RRULEs we're working with
|
// Log the RRULEs we're working with
|
||||||
for event in &events {
|
|
||||||
if let Some(rrule) = &event.rrule {
|
|
||||||
println!("🔍 RRULE for '{}': {}",
|
|
||||||
event.summary.as_ref().unwrap_or(&"No Title".to_string()),
|
|
||||||
rrule
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if all events have similar time patterns and could be consolidated
|
// Check if all events have similar time patterns and could be consolidated
|
||||||
let first_event = &events[0];
|
let first_event = &events[0];
|
||||||
@@ -683,7 +658,6 @@ fn consolidate_same_title_events(events: Vec<VEvent>) -> Vec<VEvent> {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if !can_consolidate {
|
if !can_consolidate {
|
||||||
println!("🚫 Cannot consolidate events - different times or durations");
|
|
||||||
// Just deduplicate exact duplicates
|
// Just deduplicate exact duplicates
|
||||||
return deduplicate_exact_recurring_events(events);
|
return deduplicate_exact_recurring_events(events);
|
||||||
}
|
}
|
||||||
@@ -696,13 +670,11 @@ fn consolidate_same_title_events(events: Vec<VEvent>) -> Vec<VEvent> {
|
|||||||
if weekly_events.len() >= 2 && weekly_events.len() == events.len() {
|
if weekly_events.len() >= 2 && weekly_events.len() == events.len() {
|
||||||
// All events are weekly - try to consolidate into a single multi-day weekly pattern
|
// All events are weekly - try to consolidate into a single multi-day weekly pattern
|
||||||
if let Some(consolidated) = consolidate_weekly_patterns(&events) {
|
if let Some(consolidated) = consolidate_weekly_patterns(&events) {
|
||||||
println!("✅ Successfully consolidated {} weekly patterns into one", events.len());
|
|
||||||
return vec![consolidated];
|
return vec![consolidated];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we can't consolidate, just deduplicate exact matches and keep the most complete one
|
// If we can't consolidate, just deduplicate exact matches and keep the most complete one
|
||||||
println!("🚫 Cannot consolidate - keeping most complete event");
|
|
||||||
let deduplicated = deduplicate_exact_recurring_events(events);
|
let deduplicated = deduplicate_exact_recurring_events(events);
|
||||||
|
|
||||||
// If we still have multiple events, keep only the most complete one
|
// If we still have multiple events, keep only the most complete one
|
||||||
|
|||||||
Reference in New Issue
Block a user