"""Read the impact of deleting a task without deleting or stopping anything.""" from uuid import UUID from artemis.exploration.store import ExplorationConflict, explorations from apps.admin_console.database.repositories.session_repository import session_repo from apps.admin_console.services.automation_store import store from apps.admin_console.services.exploration_deletion import _check_runs def deletion_preview(session_id: str) -> dict: session_id = str(UUID(session_id)) run = explorations.run(session_id) if run and run["kind"] == "exploration": return exploration_deletion_preview(run["exploration_id"]) if not session_repo.get_session_by_id(session_id) and not store.job(session_id): raise KeyError("任务不存在") _check_runs([{"id": session_id}]) job = store.job(session_id) or {} if job.get("status") in {"pending", "queued", "running", "task_paused", "resuming"}: raise ExplorationConflict("任务仍在执行或排队,请先停止并等待结束") return { "session_ids": [session_id], "preserved_session_ids": [], "removes": ["任务历史", "报告", "截图、录像及附件"], } def exploration_deletion_preview(exploration_id: str) -> dict: session = explorations.get(exploration_id) runs = explorations.runs(exploration_id) _check_runs(runs) if session.get("active_run_id") or session.get("active_demonstration_id"): raise ExplorationConflict("探索尚有活动任务或示范,请先停止并等待结束") return { "exploration_id": exploration_id, "session_ids": [run["id"] for run in runs if run["kind"] == "exploration"], "preserved_session_ids": [run["id"] for run in runs if run["kind"] != "exploration"], "removes": ["探索对话", "用例版本", "探索执行历史及证据"], }