(task_id: str)
| 2671 | def _reading_language_notice(response_language: str) -> str: |
| 2672 | if _normalize_response_language(response_language) == "en": |
| 2673 | return "The GUI language is set to English; this reading report will be written in English." |
| 2674 | return "GUI 页面当前选择语言为中文;本次精读报告将按中文生成。" |
| 2675 | |
| 2676 | |
| 2677 | def _reading_task_payload(task: Optional[Dict[str, Any]]) -> Optional[Dict[str, Any]]: |
| 2678 | if not task: |
| 2679 | return None |
| 2680 | return {key: value for key, value in task.items() if key not in {"thread", "internal_docs"}} |
| 2681 | |
| 2682 | |
| 2683 | def _finish_reading_task(task_id: str) -> None: |
| 2684 | with _READING_TASK_LOCK: |
| 2685 | task = _READING_TASKS.get(task_id) |
| 2686 | if not task: |
| 2687 | return |
| 2688 | task["status"] = "running" |
| 2689 | task["progress_phase"] = "running" |
| 2690 | task["updated_at"] = _task_timestamp() |
| 2691 | user_id = str(task.get("user_id") or "") |
| 2692 | push_id = str(task.get("push_id") or "") |
| 2693 | response_language = str(task.get("response_language") or "zh") |
| 2694 | write_feishu = task.get("write_feishu") |
| 2695 | selected_numbers = list(task.get("selected_numbers") or []) |
| 2696 | docs = list(task.get("internal_docs") or []) |
| 2697 | completed_docs: List[Dict[str, Any]] = [] |
| 2698 | errors: List[str] = [] |
| 2699 | |
| 2700 | for index, number in enumerate(selected_numbers): |
| 2701 | doc = docs[index] if index < len(docs) else {} |
| 2702 | paper = doc.get("paper_raw") or doc.get("paper") or {} |
| 2703 | report_path = Path(str(doc.get("report_path") or "")) |
| 2704 | try: |
| 2705 | with _READING_TASK_LOCK: |
| 2706 | task["current_index"] = index + 1 |
| 2707 | task["progress_phase"] = "reading" |
| 2708 | task["updated_at"] = _task_timestamp() |
| 2709 | _write_reading_placeholder( |
| 2710 | user_id=user_id, |
| 2711 | paper=paper, |
| 2712 | report_path=report_path, |
| 2713 | status="running", |
| 2714 | steps=[ |
| 2715 | "已创建精读报告占位文件。", |
| 2716 | _reading_language_notice(response_language), |
| 2717 | "正在解析 PDF;如已配置 MinerU,会优先使用 MinerU。", |
| 2718 | "正在调用 LLM 生成 Q1-Q7 精读内容。", |
| 2719 | ], |
| 2720 | response_language=response_language, |
| 2721 | ) |
| 2722 | result = create_reading_reports( |
| 2723 | user_id=user_id, |
| 2724 | push_id=push_id, |
| 2725 | paper_numbers=[number], |
| 2726 | write_feishu=write_feishu, |
| 2727 | response_language=response_language, |
| 2728 | ) |
| 2729 | result_docs = list(result.get("created_docs") or []) |
| 2730 | completed_docs.extend(result_docs) |
nothing calls this directly
no test coverage detected