/** * Video Learning Sessions Module for AutoGLM Dashboard * * This module provides functionality for managing video learning sessions, * including listing, controlling, and monitoring sessions. */ const SessionsModule = { // Current session state sessions: [], isLoading: false, /** * Load all sessions */ async loadSessions() { try { const response = await axios.get('/api/video-learning/sessions/list'); this.sessions = response.data; return this.sessions; } catch (error) { console.error('Error loading sessions:', error); throw error; } }, /** * Get session status */ async getSessionStatus(sessionId) { try { const response = await axios.get(`/api/video-learning/sessions/${sessionId}/status`); return response.data; } catch (error) { console.error('Error getting session status:', error); throw error; } }, /** * Get session videos */ async getSessionVideos(sessionId) { try { const response = await axios.get(`/api/video-learning/sessions/${sessionId}/videos`); return response.data; } catch (error) { console.error('Error getting session videos:', error); throw error; } }, /** * Control session (pause/resume/stop) */ async controlSession(sessionId, action) { try { const response = await axios.post(`/api/video-learning/sessions/${sessionId}/control`, { action: action }); return response.data; } catch (error) { console.error('Error controlling session:', error); throw error; } }, /** * Delete session */ async deleteSession(sessionId) { try { const response = await axios.delete(`/api/video-learning/sessions/${sessionId}`); return response.data; } catch (error) { console.error('Error deleting session:', error); throw error; } }, /** * Format platform name */ getPlatformName(platform) { const names = { 'douyin': '抖音', 'kuaishou': '快手', 'tiktok': 'TikTok' }; return names[platform] || platform; }, /** * Get status text */ getStatusText(session) { if (!session.is_active && !session.is_paused) return '已完成'; if (session.is_paused) return '已暂停'; if (session.is_active) return '进行中'; return '未知'; }, /** * Format duration */ formatDuration(seconds) { if (!seconds) return '0s'; if (seconds < 60) { return `${seconds.toFixed(1)}s`; } const minutes = Math.floor(seconds / 60); const remainingSeconds = seconds % 60; return `${minutes}m ${remainingSeconds.toFixed(1)}s`; } }; // Export for use in other modules if (typeof module !== 'undefined' && module.exports) { module.exports = SessionsModule; }