任务管理页面后端优化:提升进度更新频率和状态详细程度

1. 提高爬取阶段进度更新频率:从每10个改为每5个代理更新一次
2. 提高验证阶段进度更新频率:从每5个改为每验证1个代理就更新一次
3. 添加进度百分比计算所需字段:在progress消息中添加current和total字段
4. 增强状态信息详细程度:
   - 添加connecting状态:正在连接插件源
   - 添加starting状态:正在启动爬虫
   - 添加crawling_start状态:开始爬取代理
   - 添加validating_start状态:开始验证代理
   - 在进度消息中添加message字段,显示更详细的进度描述

这些改进可以让前端显示更实时、更详细的任务进度和状态信息
This commit is contained in:
祀梦
2026-01-27 23:15:43 +08:00
parent 466c77b28d
commit b5932a95b2
6 changed files with 844 additions and 51 deletions

View File

@@ -14,6 +14,17 @@
</template>
<el-form :model="settings" label-width="150px" class="settings-form">
<el-form-item label="管理员API Key">
<el-input
v-model="settings.api_key"
placeholder="请输入管理员API Key"
type="password"
show-password
class="setting-input"
/>
<div class="setting-hint">用于执行管理操作的API Key</div>
</el-form-item>
<el-form-item label="数据库路径">
<el-input v-model="settings.db_path" placeholder="数据库文件路径" />
</el-form-item>
@@ -92,6 +103,7 @@ import PageHeader from '../components/PageHeader.vue'
const loading = ref(false)
const saving = ref(false)
const settings = reactive({
api_key: '',
db_path: '',
crawl_timeout: 30,
validation_timeout: 10,
@@ -109,6 +121,7 @@ async function fetchSettings() {
const data = await response.json()
Object.assign(settings, data)
}
settings.api_key = localStorage.getItem('api_key') || ''
} finally {
loading.value = false
}
@@ -117,12 +130,19 @@ async function fetchSettings() {
async function handleSave() {
saving.value = true
try {
if (settings.api_key) {
localStorage.setItem('api_key', settings.api_key)
} else {
localStorage.removeItem('api_key')
}
const { api_key, ...settingsToSend } = settings
const response = await fetch('http://localhost:8923/api/settings', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(settings)
body: JSON.stringify(settingsToSend)
})
if (response.ok) {
@@ -171,6 +191,13 @@ onMounted(() => {
color: var(--text-secondary);
}
.setting-hint {
margin-top: 8px;
font-size: 12px;
color: var(--text-secondary);
line-height: 1.4;
}
.btn-icon {
font-size: 20px;
margin-right: 8px;