LogicGoInfotechSpaces commited on
Commit
5c831e5
·
1 Parent(s): 32fb484

Add comprehensive debug logging for expense checking in check_user_has_category_data

Browse files
Files changed (1) hide show
  1. app/smart_recommendation.py +86 -18
app/smart_recommendation.py CHANGED
@@ -285,32 +285,100 @@ class SmartBudgetRecommender:
285
  import traceback
286
  traceback.print_exc()
287
 
288
- # Check expenses collection as fallback
 
289
  try:
290
  try:
291
  category_objid = ObjectId(category_id)
292
- expense_query = {
293
- "$or": [
294
- {"user_id": ObjectId(user_id), "category": category_objid},
295
- {"user_id": ObjectId(user_id), "category": category_id},
296
- {"user_id": user_id, "category": category_objid},
297
- {"user_id": user_id, "category": category_id},
298
- ]
299
- }
 
 
 
 
 
 
 
300
  except (ValueError, TypeError):
301
- expense_query = {
302
- "$or": [
303
- {"user_id": ObjectId(user_id), "category": category_id},
304
- {"user_id": user_id, "category": category_id},
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
305
  ]
306
  }
 
 
 
 
 
 
307
 
308
- expense_count = self.db.expenses.count_documents(expense_query)
309
- if expense_count > 0:
310
- print(f"✅ Found {expense_count} expense(s) for user {user_id} with category_id {category_id}")
311
- return True
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
312
  except Exception as e:
313
- print(f"Error checking expenses: {e}")
 
 
314
 
315
  print(f"❌ No previous data found for user {user_id} with category_id {category_id}")
316
  return False
 
285
  import traceback
286
  traceback.print_exc()
287
 
288
+ # Check expenses collection as fallback - more comprehensive search
289
+ print(f"🔍 Checking expenses collection for user {user_id} with category_id {category_id}")
290
  try:
291
  try:
292
  category_objid = ObjectId(category_id)
293
+ # Try multiple expense query patterns
294
+ expense_queries = [
295
+ {"user_id": ObjectId(user_id), "category": category_objid},
296
+ {"user_id": ObjectId(user_id), "category": category_id},
297
+ {"user_id": ObjectId(user_id), "categoryId": category_objid},
298
+ {"user_id": ObjectId(user_id), "categoryId": category_id},
299
+ {"user_id": ObjectId(user_id), "headCategory": category_objid},
300
+ {"user_id": ObjectId(user_id), "headCategory": category_id},
301
+ {"user_id": user_id, "category": category_objid},
302
+ {"user_id": user_id, "category": category_id},
303
+ {"user_id": user_id, "categoryId": category_objid},
304
+ {"user_id": user_id, "categoryId": category_id},
305
+ {"user_id": user_id, "headCategory": category_objid},
306
+ {"user_id": user_id, "headCategory": category_id},
307
+ ]
308
  except (ValueError, TypeError):
309
+ expense_queries = [
310
+ {"user_id": ObjectId(user_id), "category": category_id},
311
+ {"user_id": ObjectId(user_id), "categoryId": category_id},
312
+ {"user_id": ObjectId(user_id), "headCategory": category_id},
313
+ {"user_id": user_id, "category": category_id},
314
+ {"user_id": user_id, "categoryId": category_id},
315
+ {"user_id": user_id, "headCategory": category_id},
316
+ ]
317
+
318
+ # Try each query pattern
319
+ for i, expense_query in enumerate(expense_queries, 1):
320
+ try:
321
+ expense_count = self.db.expenses.count_documents(expense_query)
322
+ if expense_count > 0:
323
+ print(f"✅ Found {expense_count} expense(s) for user {user_id} with category_id {category_id}")
324
+ print(f" Expense query that matched (pattern {i}): {expense_query}")
325
+ return True
326
+ except Exception as e:
327
+ print(f"⚠️ Error with expense query pattern {i}: {e}")
328
+
329
+ # Also try comprehensive query
330
+ try:
331
+ comprehensive_expense_query = {
332
+ "$and": [
333
+ {"$or": [
334
+ {"user_id": ObjectId(user_id)},
335
+ {"user_id": user_id}
336
+ ]},
337
+ {"$or": [
338
+ {"category": category_objid if 'category_objid' in locals() else category_id},
339
+ {"category": category_id},
340
+ {"categoryId": category_objid if 'category_objid' in locals() else category_id},
341
+ {"categoryId": category_id},
342
+ {"headCategory": category_objid if 'category_objid' in locals() else category_id},
343
+ {"headCategory": category_id},
344
+ ]}
345
  ]
346
  }
347
+ expense_count = self.db.expenses.count_documents(comprehensive_expense_query)
348
+ if expense_count > 0:
349
+ print(f"✅ Found {expense_count} expense(s) using comprehensive query for user {user_id} with category_id {category_id}")
350
+ return True
351
+ except Exception as e:
352
+ print(f"⚠️ Error with comprehensive expense query: {e}")
353
 
354
+ # Debug: Check total expenses for this user
355
+ try:
356
+ total_user_expenses = self.db.expenses.count_documents({
357
+ "$or": [
358
+ {"user_id": ObjectId(user_id)},
359
+ {"user_id": user_id}
360
+ ]
361
+ })
362
+ print(f"🔍 Debug: User {user_id} has {total_user_expenses} total expenses")
363
+
364
+ # Check if category exists in any expense (sample check)
365
+ sample_expenses = list(self.db.expenses.find({
366
+ "$or": [
367
+ {"user_id": ObjectId(user_id)},
368
+ {"user_id": user_id}
369
+ ]
370
+ }).limit(5))
371
+ if sample_expenses:
372
+ print(f"🔍 Debug: Sample expense category fields:")
373
+ for exp in sample_expenses:
374
+ print(f" - category: {exp.get('category')}, categoryId: {exp.get('categoryId')}, headCategory: {exp.get('headCategory')}")
375
+ except Exception as e:
376
+ print(f"⚠️ Error in expense debug check: {e}")
377
+
378
  except Exception as e:
379
+ print(f"Error checking expenses: {e}")
380
+ import traceback
381
+ traceback.print_exc()
382
 
383
  print(f"❌ No previous data found for user {user_id} with category_id {category_id}")
384
  return False