"""在大屏 JSON 副本上删除组件,用于后端校验,不删除共享数据源""" from app.actions.base import BaseActionHandler from app.schemas.actions import DeleteAction from app.schemas.screen import Screen class DeleteHandler(BaseActionHandler[DeleteAction]): def apply(self, screen: Screen, action: DeleteAction) -> Screen: # 确认删除目标存在,并取得与原始输入隔离的大屏副本及目标节点 result, target = self.copy_target(screen, action.target_id) # 从副本中移除目标组件,保留其余组件及共享数据源 result.nodes = [node for node in result.nodes if node.id != target.id] # 返回删除后的完整大屏,原始输入保持不变 return result