(display_index: int, target_index: int, raw_paper: Dict[str, Any])
| 4887 | print(f"Reusing {reused_count} existing reading report(s); generating only missing ones.") |
| 4888 | |
| 4889 | def build_pending_report(display_index: int, target_index: int, raw_paper: Dict[str, Any]) -> Dict[str, Any]: |
| 4890 | try: |
| 4891 | print( |
| 4892 | f"\n[{display_index}/{len(pending_entries)}] Processing: " |
| 4893 | f"{str(raw_paper.get('title', 'Unknown'))[:60]}" |
| 4894 | ) |
| 4895 | enriched_paper, parsed_pdf, pdf_error = _enrich_paper_for_reading_report_compat( |
| 4896 | raw_paper, |
| 4897 | user_id=user_id, |
| 4898 | ) |
| 4899 | heuristic_payload = build_heuristic_report_payload( |
| 4900 | enriched_paper, |
| 4901 | profile, |
| 4902 | parsed_pdf=parsed_pdf, |
| 4903 | pdf_error=pdf_error, |
| 4904 | response_language=response_language, |
| 4905 | ) |
| 4906 | llm_payload = _synthesize_report_with_llm( |
| 4907 | enriched_paper, |
| 4908 | profile, |
| 4909 | parsed_pdf=parsed_pdf, |
| 4910 | heuristic_payload=heuristic_payload, |
| 4911 | response_language=response_language, |
| 4912 | ) |
| 4913 | report_payload = _merge_report_payload(heuristic_payload, llm_payload) |
| 4914 | proposed_label = report_payload.get("recommendation_label") |
| 4915 | report_payload["recommendation_label"] = calibrate_recommendation_label( |
| 4916 | enriched_paper, |
| 4917 | proposed_label, |
| 4918 | report_payload.get("analysis_source"), |
| 4919 | ) |
| 4920 | report_payload["recommendation_calibration"] = build_recommendation_calibration_metadata( |
| 4921 | enriched_paper, |
| 4922 | proposed_label, |
| 4923 | report_payload.get("recommendation_label"), |
| 4924 | report_payload.get("analysis_source"), |
| 4925 | ) |
| 4926 | report_payload["report_style"] = report_style |
| 4927 | report_payload["response_language"] = response_language |
| 4928 | report_content = generate_reading_report( |
| 4929 | enriched_paper, |
| 4930 | profile, |
| 4931 | report_payload=report_payload, |
| 4932 | response_language=response_language, |
| 4933 | ) |
| 4934 | |
| 4935 | doc_prefix = "[Reading]" if response_language == "en" else "[精读]" |
| 4936 | doc_title = f"{doc_prefix} {enriched_paper.get('title', 'Unknown')[:80]}" |
| 4937 | return { |
| 4938 | "target_index": target_index, |
| 4939 | "enriched_paper": enriched_paper, |
| 4940 | "parsed_pdf": parsed_pdf, |
| 4941 | "report_payload": report_payload, |
| 4942 | "report_content": report_content, |
| 4943 | "doc_title": doc_title, |
| 4944 | } |
| 4945 | except Exception as exc: |
| 4946 | print(f" Error creating reading report: {exc}") |
no test coverage detected