// Skills管理相关功能 let skillsList = []; let currentEditingSkillName = null; let isSavingSkill = false; // 防止重复提交 let skillsSearchKeyword = ''; let skillsSearchTimeout = null; // 搜索防抖定时器 let skillsPagination = { currentPage: 1, pageSize: 20, // 每页20条(默认值,实际从localStorage读取) total: 0 }; let skillsStats = { total: 0, totalCalls: 0, totalSuccess: 0, totalFailed: 0, skillsDir: '', stats: [] }; // 获取保存的每页显示数量 function getSkillsPageSize() { try { const saved = localStorage.getItem('skillsPageSize'); if (saved) { const size = parseInt(saved); if ([20, 50, 100].includes(size)) { return size; } } } catch (e) { console.warn('无法从localStorage读取分页设置:', e); } return 20; // 默认20 } // 初始化分页设置 function initSkillsPagination() { const savedPageSize = getSkillsPageSize(); skillsPagination.pageSize = savedPageSize; } // 加载skills列表(支持分页) async function loadSkills(page = 1, pageSize = null) { try { // 如果没有指定pageSize,使用保存的值或默认值 if (pageSize === null) { pageSize = getSkillsPageSize(); } // 更新分页状态(确保使用正确的pageSize) skillsPagination.currentPage = page; skillsPagination.pageSize = pageSize; // 清空搜索关键词(正常分页加载时) skillsSearchKeyword = ''; const searchInput = document.getElementById('skills-search'); if (searchInput) { searchInput.value = ''; } // 构建URL(支持分页) const offset = (page - 1) * pageSize; const url = `/api/skills?limit=${pageSize}&offset=${offset}`; const response = await apiFetch(url); if (!response.ok) { throw new Error('获取skills列表失败'); } const data = await response.json(); skillsList = data.skills || []; skillsPagination.total = data.total || 0; renderSkillsList(); renderSkillsPagination(); updateSkillsManagementStats(); } catch (error) { console.error('加载skills列表失败:', error); showNotification('加载skills列表失败: ' + error.message, 'error'); const skillsListEl = document.getElementById('skills-list'); if (skillsListEl) { skillsListEl.innerHTML = '
| Skill名称 | 总调用 | 成功 | 失败 | 成功率 | 最后调用时间 |
|---|---|---|---|---|---|
| ${escapeHtml(stat.skill_name || '')} | ${totalCalls} | ${successCalls} | ${failedCalls} | ${successRate}% | ${escapeHtml(lastCallTime)} |