()
| 1763 | } |
| 1764 | |
| 1765 | async function pollAutoRegistrationStatus() { |
| 1766 | try { |
| 1767 | const data = await api.get('/registration/auto-monitor'); |
| 1768 | |
| 1769 | elements.taskStatusRow.style.display = 'grid'; |
| 1770 | elements.taskId.textContent = data.current_batch_id || 'auto-registration'; |
| 1771 | elements.taskStatus.textContent = data.message || data.status || '-'; |
| 1772 | if (elements.taskLastChecked) { |
| 1773 | elements.taskLastChecked.textContent = formatAutoMonitorTimestamp(data.last_checked_at); |
| 1774 | } |
| 1775 | if (elements.taskInventory) { |
| 1776 | const readyCount = data.current_ready_count ?? '-'; |
| 1777 | const targetCount = data.target_ready_count ?? '-'; |
| 1778 | elements.taskInventory.textContent = `${readyCount} / ${targetCount}`; |
| 1779 | } |
| 1780 | const effectiveStatus = data.batch && data.batch.cancelled && !data.batch.finished |
| 1781 | ? 'cancelling' |
| 1782 | : (data.status || 'pending'); |
| 1783 | updateAutoMonitorHeader(effectiveStatus, data.last_checked_at); |
| 1784 | updateTaskStatus(effectiveStatus); |
| 1785 | |
| 1786 | const logs = data.logs || []; |
| 1787 | for (let i = autoMonitorLastLogIndex; i < logs.length; i++) { |
| 1788 | addLog(getLogType(logs[i]), logs[i]); |
| 1789 | } |
| 1790 | autoMonitorLastLogIndex = logs.length; |
| 1791 | |
| 1792 | if (data.batch) { |
| 1793 | currentBatch = data.batch; |
| 1794 | activeBatchId = data.batch.batch_id; |
| 1795 | batchCompleted = !!data.batch.finished; |
| 1796 | elements.cancelBtn.disabled = !!data.batch.finished; |
| 1797 | showBatchStatus({ count: data.batch.total }); |
| 1798 | updateBatchProgress(data.batch); |
| 1799 | if ((!batchWebSocket || batchWebSocket.readyState === WebSocket.CLOSED) && !data.batch.finished) { |
| 1800 | connectBatchWebSocket(data.batch.batch_id); |
| 1801 | } |
| 1802 | } else { |
| 1803 | currentBatch = null; |
| 1804 | activeBatchId = null; |
| 1805 | elements.cancelBtn.disabled = true; |
| 1806 | elements.batchProgressSection.style.display = 'none'; |
| 1807 | } |
| 1808 | } catch (error) { |
| 1809 | console.error('加载自动注册监控失败:', error); |
| 1810 | updateAutoMonitorHeader('error', null); |
| 1811 | elements.taskStatus.textContent = '自动注册监控获取失败'; |
| 1812 | addLog('warning', '[警告] 自动注册监控获取失败'); |
| 1813 | } |
| 1814 | } |
| 1815 | |
| 1816 | function startAutoRegistrationMonitor() { |
| 1817 | stopAutoRegistrationMonitor(); |
no test coverage detected