From 6ac16b8b248dd3feceda04bf44902b29f9612272 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Fri, 4 Sep 2026 18:30:05 +0800 Subject: [PATCH] fix(api): satisfy complexity ratchet --- app/api/endpoints/transfer.py | 80 ++++++++++++++++---------------- app/chain/message.py | 11 +---- app/chain/transfer/retry.py | 12 +---- app/chain/transfer/settlement.py | 5 +- 4 files changed, 44 insertions(+), 64 deletions(-) diff --git a/app/api/endpoints/transfer.py b/app/api/endpoints/transfer.py index c6c77b2cf..8dc1a2da0 100644 --- a/app/api/endpoints/transfer.py +++ b/app/api/endpoints/transfer.py @@ -77,6 +77,43 @@ def _public_transfer_result(data: dict[str, Any]) -> dict[str, Any]: return result +def _build_failure_preview_item(file_item: FileItem, message: Optional[str]) -> dict: + """构造手动整理预览失败项。""" + return { + "source": file_item.path if file_item else None, + "target": None, + "target_dir": None, + "success": False, + "message": _public_transfer_message(message), + "type": None, + "title": None, + "season": None, + "episode": None, + "episode_end": None, + "part": None, + "org_string": None, + "apply_words": [], + "resource_team": None, + "customization": None, + } + + +def _merge_transfer_messages(messages: List[str]) -> str: + """合并手动整理批量预览提示信息,并统一转换错误文案。""" + valid_messages = [ + public_message + for msg in messages + if msg + for public_message in [_public_transfer_message(msg)] + if public_message + ] + if not valid_messages: + return "" + return "、".join(valid_messages[:2]) + ( + f",等{len(valid_messages)}条消息" if len(valid_messages) > 2 else "" + ) + + def _manual_review_actor(current_user: object) -> str: """按名称、用户名和用户 ID 的稳定顺序提取人工复核操作者。""" for attribute in ("name", "username", "id"): @@ -637,45 +674,6 @@ def _execute_manual_transfer( ) explicit_selected_files = bool(transer_item.fileitems) - def _build_failure_preview_item(file_item: FileItem, message: str | None) -> dict: - """ - 构造手动整理预览失败项。 - """ - return { - "source": file_item.path if file_item else None, - "target": None, - "target_dir": None, - "success": False, - "message": _public_transfer_message(message), - "type": None, - "title": None, - "season": None, - "episode": None, - "episode_end": None, - "part": None, - "org_string": None, - "apply_words": [], - "resource_team": None, - "customization": None, - } - - def _merge_messages(messages: List[str]) -> str: - """ - 合并手动整理批量预览提示信息,并统一转换错误文案。 - """ - valid_messages = [ - public_message - for msg in messages - if msg - for public_message in [_public_transfer_message(msg)] - if public_message - ] - if not valid_messages: - return "" - return "、".join(valid_messages[:2]) + ( - f",等{len(valid_messages)}条消息" if len(valid_messages) > 2 else "" - ) - # 前端显式传入文件列表时,按选中的文件逐个处理,避免将目录整体展开。 if explicit_selected_files: preview_items: List[dict] = [] @@ -748,7 +746,7 @@ def _execute_manual_transfer( if isinstance(preview_item, dict) else preview_item ) - merged_message = _merge_messages(error_messages) + merged_message = _merge_transfer_messages(error_messages) preview_data = { "summary": { "total": len(merged_preview_items), @@ -771,7 +769,7 @@ def _execute_manual_transfer( if not all_success: return _SchemaResponse( success=False, - message=_merge_messages(error_messages), + message=_merge_transfer_messages(error_messages), ) return _SchemaResponse(success=True) diff --git a/app/chain/message.py b/app/chain/message.py index 99ebec201..bd3a7931d 100644 --- a/app/chain/message.py +++ b/app/chain/message.py @@ -1472,11 +1472,7 @@ class MessageChain(ChainBase): except Exception as e: logger.error(f"处理AI智能体消息失败: {e}", exc_info=True) - self.messagehelper.put( - "智能助手执行失败,请稍后重试", - role="system", - title="MoviePilot助手", - ) + self.messagehelper.put("智能助手执行失败,请稍后重试", role="system", title="MoviePilot助手") return False def _transcribe_audio_refs( @@ -1798,10 +1794,7 @@ class MessageChain(ChainBase): } ) except Exception as err: - logger.error( - f"准备附件上下文失败: {attachment.ref}, error: {err}", - exc_info=True, - ) + logger.error(f"准备附件上下文失败: {attachment.ref}, error: {err}", exc_info=True) payload["error"] = "附件读取失败,请稍后重试" prepared_files.append(payload) diff --git a/app/chain/transfer/retry.py b/app/chain/transfer/retry.py index 9cfa8e5c2..0a4407892 100644 --- a/app/chain/transfer/retry.py +++ b/app/chain/transfer/retry.py @@ -168,11 +168,7 @@ class FailedRetryMixin(_TransferOwnerBase): state, errmsg = self.redo_transfer_history(history_id) if state: - public_message = ( - public_error_message(errmsg, context="transfer") - if errmsg - else "" - ) + public_message = public_error_message(errmsg, context="transfer") if errmsg else "" self.post_message( Message( channel=channel, @@ -242,11 +238,7 @@ class FailedRetryMixin(_TransferOwnerBase): source=source, userid=userid, username=username, - title=( - public_message - if accepted - else "重新整理失败" - ), + title=public_message if accepted else "重新整理失败", text=None if accepted else public_message, link=self.runtime_config.history_url, save_history=False, diff --git a/app/chain/transfer/settlement.py b/app/chain/transfer/settlement.py index c386f065c..6177ba2ab 100644 --- a/app/chain/transfer/settlement.py +++ b/app/chain/transfer/settlement.py @@ -531,10 +531,7 @@ class TransferSettlementOwner(_TransferOwnerBase): else task.fileitem.name if task.fileitem else "未知媒体" ), season_episode=getattr(task.meta, "season_episode", "") or "", - reason=( - public_error_message(transferinfo.message, context="transfer") - or "整理失败" - ), + reason=public_error_message(transferinfo.message, context="transfer") or "整理失败", history_id=history_id, image=( task.mediainfo.get_message_image()