(
*,
user_id: str,
push_id: str,
selected_numbers: Iterable[Any],
skipped_numbers: Iterable[Any],
later_numbers: Iterable[Any] = (),
)
| 2310 | user_id=user_id, |
| 2311 | push_id=push_id, |
| 2312 | paper=paper, |
| 2313 | action=action, |
| 2314 | action_type=action, |
| 2315 | category=category, |
| 2316 | metadata=metadata, |
| 2317 | behavior_log_id=behavior_log_id, |
| 2318 | ) |
| 2319 | return behavior_log_id |
| 2320 | |
| 2321 | |
| 2322 | def submit_gui_feedback( |
| 2323 | *, |
| 2324 | user_id: str, |
| 2325 | push_id: str, |
| 2326 | selected_numbers: Iterable[Any], |
| 2327 | skipped_numbers: Iterable[Any], |
| 2328 | later_numbers: Iterable[Any] = (), |
| 2329 | ) -> Dict[str, Any]: |
| 2330 | push = db_ops.get_push_papers(push_id) |
| 2331 | if not push or not push.get("papers"): |
| 2332 | raise ValueError(f"Push not found: {push_id}") |
| 2333 | |
| 2334 | papers = list(push["papers"]) |
| 2335 | selected = set(_unique_ints(selected_numbers, maximum=len(papers))) |
| 2336 | skipped = set(_unique_ints(skipped_numbers, maximum=len(papers))) - selected |
| 2337 | later = (set(_unique_ints(later_numbers, maximum=len(papers))) - selected) - skipped |
| 2338 | |
| 2339 | current_timestamp = datetime.now() |
| 2340 | previously_selected = feedback_agent.get_existing_selected_numbers(user_id, push_id, papers) |
| 2341 | new_selected = selected - previously_selected |
| 2342 | |
| 2343 | for paper_number in sorted(new_selected): |
| 2344 | paper = papers[paper_number - 1] |
| 2345 | _log_feedback_event( |
| 2346 | user_id=user_id, |
| 2347 | push_id=push_id, |
| 2348 | paper_number=paper_number, |
| 2349 | paper=paper, |
| 2350 | action="selected", |
| 2351 | action_type="gui_selected", |
| 2352 | category=paper.get("category", "unknown"), |
| 2353 | ) |
| 2354 | |
| 2355 | for paper_number in sorted(skipped): |
| 2356 | paper = papers[paper_number - 1] |
| 2357 | _log_feedback_event( |
| 2358 | user_id=user_id, |
| 2359 | push_id=push_id, |
| 2360 | paper_number=paper_number, |
| 2361 | paper=paper, |
| 2362 | action="skipped", |
| 2363 | action_type="gui_skipped", |
| 2364 | category=paper.get("category", "unknown"), |
| 2365 | ) |
| 2366 | |
| 2367 | for paper_number in sorted(later): |
| 2368 | paper = papers[paper_number - 1] |
| 2369 | _log_feedback_event( |
no test coverage detected