(task, options = {})
| 919 | } |
| 920 | |
| 921 | async function handleDailyTask(task, options = {}) { |
| 922 | if (!task) { |
| 923 | setDailyButtonBusy(false); |
| 924 | return; |
| 925 | } |
| 926 | |
| 927 | const previousStatus = state.dailyTaskStatus; |
| 928 | state.dailyTaskId = task.task_id || state.dailyTaskId; |
| 929 | state.dailyTaskStatus = task.status || ""; |
| 930 | |
| 931 | if (task.status === "queued" || task.status === "running") { |
| 932 | setDailyButtonBusy(true); |
| 933 | if (task.preview_push && task.preview_push.papers && task.preview_push.papers.length) { |
| 934 | renderPush(task.preview_push, { preserveSelection: true }); |
| 935 | } |
| 936 | if (!options.fromPoll || previousStatus !== task.status) { |
| 937 | const previewCount = task.preview_push?.papers?.length || 0; |
| 938 | const progressText = previewCount ? `每日推送运行中,已展示 ${previewCount} 篇` : "每日推送运行中"; |
| 939 | setStatus(task.status === "queued" ? "每日推送排队中" : progressText, true); |
| 940 | } else { |
| 941 | const previewCount = task.preview_push?.papers?.length || 0; |
| 942 | $("statusText").textContent = previewCount ? `每日推送运行中,已展示 ${previewCount} 篇...` : "每日推送运行中..."; |
| 943 | } |
| 944 | scheduleDailyTaskPolling(); |
| 945 | return; |
| 946 | } |
| 947 | |
| 948 | stopDailyTaskPolling(); |
| 949 | setDailyButtonBusy(false); |
| 950 | |
| 951 | if (task.status === "completed") { |
| 952 | if (task.push) renderPush(task.push); |
| 953 | const count = task.push?.papers?.length || 0; |
| 954 | state.dailyTaskId = ""; |
| 955 | state.dailyTaskStatus = ""; |
| 956 | await Promise.allSettled([refreshDashboard(), refreshWikiStats()]); |
| 957 | if (!options.silent) { |
| 958 | setStatus(count ? "每日推送完成" : "每日推送完成,但本轮没有通过筛选的论文"); |
| 959 | } |
| 960 | return; |
| 961 | } |
| 962 | |
| 963 | if (task.status === "failed") { |
| 964 | state.dailyTaskId = ""; |
| 965 | state.dailyTaskStatus = ""; |
| 966 | if (!options.silent) { |
| 967 | const message = task.error || "每日推送失败"; |
| 968 | setStatus(message); |
| 969 | window.alert(`每日推送失败:\n${message}`); |
| 970 | } |
| 971 | } |
| 972 | } |
| 973 | |
| 974 | async function refreshDailyTaskStatus(options = {}) { |
| 975 | const userId = activeUser(); |
no test coverage detected