MCPcopy Create free account
hub / github.com/OpenRaiser/PaperFlow / simulate_daily_feedback

Function simulate_daily_feedback

experiments/simulation/simulate_feedback.py:61–112  ·  view source on GitHub ↗

Simulate feedback for multiple days Args: user_id: User identifier days: Number of days to simulate

(user_id: str, days: int = 7)

Source from the content-addressed store, hash-verified

59
60
61def simulate_daily_feedback(user_id: str, days: int = 7):
62 """
63 Simulate feedback for multiple days
64
65 Args:
66 user_id: User identifier
67 days: Number of days to simulate
68 """
69 feedback_logs = []
70 base_date = datetime.now() - timedelta(days=days)
71
72 for day in range(days):
73 current_date = base_date + timedelta(days=day)
74 push_id = f"push_{current_date.strftime('%Y%m%d')}"
75
76 # Simulate selection behavior
77 # User tends to select 🔴 papers more often
78 selected = []
79 skipped = []
80
81 for paper in SAMPLE_PAPERS:
82 if paper["category"] == "🔴":
83 # 80% chance to select 🔴 papers
84 if random.random() < 0.8:
85 selected.append(paper["id"])
86 else:
87 skipped.append(paper["id"])
88 elif paper["category"] == "🟡":
89 # 40% chance to select 🟡 papers
90 if random.random() < 0.4:
91 selected.append(paper["id"])
92 else:
93 skipped.append(paper["id"])
94 else: # 🔵
95 # 10% chance to select 🔵 papers
96 if random.random() < 0.1:
97 selected.append(paper["id"])
98 else:
99 skipped.append(paper["id"])
100
101 # Create feedback log entry
102 feedback_log = {
103 "user_id": user_id,
104 "date": current_date.isoformat(),
105 "push_id": push_id,
106 "selected": selected,
107 "skipped": skipped,
108 "selection_rate": len(selected) / len(SAMPLE_PAPERS),
109 }
110 feedback_logs.append(feedback_log)
111
112 return feedback_logs
113
114
115def save_feedback_logs(logs: list, output_path: str):

Callers 1

simulate_and_saveFunction · 0.85

Calls 1

nowMethod · 0.80

Tested by

no test coverage detected