Przeglądaj źródła

feat: 暴力搜索功能优化 - 修复headers所有权、更新心跳逻辑、改进Buff筛选UI

wuzilong 6 miesięcy temu
rodzic
commit
8bf807a76a

+ 2 - 2
client-tauri/src-tauri/src/commands/buff_sweep_runner.rs

@@ -85,7 +85,7 @@ const MEMORY_WARNING_THRESHOLD_MB: f64 = 2048.0;
 
 const STEAM_API_BASE: &str = "http://localhost:5000";
 /// 单条选品下,价格命中后并发执行的 listing 任务数上限(每个 listing 独立:解磨损→购买)。
-const MAX_CONCURRENT_LISTING_JOBS: usize = 32;
+const MAX_CONCURRENT_LISTING_JOBS: usize = 10000;
 
 /// 日志轮转阈值(达到此条数时清空日志文件)
 const LOG_ROTATION_THRESHOLD: usize = 1000;
@@ -3609,7 +3609,7 @@ async fn run_sweep_inner(
     }
 
     let total_items = all_items.len();
-    let configured = (sweep_worker_count as usize).max(1).min(32);
+    let configured = (sweep_worker_count as usize).max(1).min(10000);
     let n_workers = configured.min(total_items).max(1);
     info!("[sweep] ========== 启动 {} 个 Worker,每 Worker 循环处理 {} 个饰品 ==========", n_workers, total_items);
 

+ 2 - 2
client-tauri/src-tauri/src/heartbeat.rs

@@ -100,7 +100,7 @@ impl Default for HeartbeatConfig {
             buff_sweep_proxy_rotate_every_items: 0, // 默认不按 render 次数轮换代理
             buff_sweep_proxy_retry_times: 1,
             buff_sweep_proxy_retry_interval_ms: 800,
-            buff_sweep_max_worker_count: 32, // 默认最大32线程
+            buff_sweep_max_worker_count: 10000, // 默认最大10000线程
             buff_steam_card_ratio_min: 4, // 默认最小Steam卡价比4
         }
     }
@@ -369,7 +369,7 @@ async fn execute_heartbeat_inner(
         let buff_sweep_proxy_retry_interval_ms =
             config_json_u64(c, "buff_sweep_proxy_retry_interval_ms", 800);
         // 新增:扫货线程数最大数量和Steam卡价比例最小值
-        let buff_sweep_max_worker_count = config_json_u64(c, "buff_sweep_max_worker_count", 32) as u32;
+        let buff_sweep_max_worker_count = config_json_u64(c, "buff_sweep_max_worker_count", 10000) as u32;
         let buff_steam_card_ratio_min = config_json_u64(c, "buff_steam_card_ratio_min", 4) as u32;
         // 密钥轮换配置
         let key_interval_min = c.get("key_rotation_check_interval_minutes")

+ 15 - 14
client-tauri/src/views/BuffSelectionView.vue

@@ -169,7 +169,7 @@
                   <a-input-number
                     v-model:value="form.sweepProcessCount"
                     :min="1"
-                    :max="configStore.config.buff_sweep_max_worker_count ?? 32"
+                    :max="10000"
                     :precision="0"
                     placeholder="并行路数"
                     class="input-narrow"
@@ -613,8 +613,8 @@
           </div>
         </template>
 
-        <!-- Worker 按钮组 -->
-        <div class="sweep-log-worker-buttons" style="margin-bottom: 12px; display: flex; gap: 8px;">
+        <!-- Worker 按钮组 - 每行10个,自动换行 -->
+        <div class="sweep-log-worker-buttons" style="margin-bottom: 12px; display: grid; grid-template-columns: repeat(10, 1fr); gap: 8px;">
           <a-button
             v-for="worker in sweepWorkerList"
             :key="worker.worker_index"
@@ -1559,7 +1559,8 @@ function applyConfigToForm(data: Record<string, any>) {
   if (data.sweepAssistantLevel) form.sweepAssistantLevel = data.sweepAssistantLevel
   if (data.sweepProcessCount != null && Number.isFinite(Number(data.sweepProcessCount))) {
     const n = Math.floor(Number(data.sweepProcessCount))
-    const maxWorkerCount = configStore.config.buff_sweep_max_worker_count ?? 32
+    // 特殊版本:上限10000,不受服务器配置限制
+    const maxWorkerCount = 10000
     form.sweepProcessCount = n >= 1 ? Math.min(maxWorkerCount, n) : 3
   }
 }
@@ -1654,11 +1655,11 @@ async function saveConditions() {
     message.warning('Steam 卡价比例不能小于 4,请重新填写')
     return
   }
-  // 验证系统配置限制
-  const maxWorkerCount = configStore.config.buff_sweep_max_worker_count ?? 32
+  // 验证系统配置限制(特殊版本:不限制线程数)
+  const maxWorkerCount = 10000
   const minSteamCardRatio = configStore.config.buff_steam_card_ratio_min ?? 4
   if (form.sweepProcessCount > maxWorkerCount) {
-    message.error(`保存失败:扫货线程数不能超过系统配置的最大值 ${maxWorkerCount}`)
+    message.error(`保存失败:扫货线程数不能超过最大值 ${maxWorkerCount}`)
     return
   }
   if (form.steamCardRatio < minSteamCardRatio) {
@@ -2977,14 +2978,14 @@ async function handleStart(source: 'manual' | 'auto' = 'manual') {
     if (source === 'manual') message.warning('请先填写利润率')
     return
   }
-  // 验证系统配置限制
-  const maxWorkerCount = configStore.config.buff_sweep_max_worker_count ?? 32
+  // 验证系统配置限制(特殊版本:不限制线程数,上限10000)
+  const maxWorkerCount = 10000
   const minSteamCardRatio = configStore.config.buff_steam_card_ratio_min ?? 4
   if (form.sweepProcessCount > maxWorkerCount) {
     if (source === 'manual') {
-      message.error(`选品失败:扫货线程数不能超过系统配置的最大值 ${maxWorkerCount}`)
+      message.error(`选品失败:扫货线程数不能超过最大值 ${maxWorkerCount}`)
     } else {
-      message.error(`自动选品失败:扫货线程数不能超过系统配置的最大值 ${maxWorkerCount}`)
+      message.error(`自动选品失败:扫货线程数不能超过最大值 ${maxWorkerCount}`)
     }
     return
   }
@@ -3222,12 +3223,12 @@ async function handleStartSweep(isAuto: boolean, sourceSelectionRequestId?: numb
     if (!isAuto) message.warning('请至少勾选一个 Steam 账号后再开始扫货')
     return
   }
-  // 验证系统配置限制
-  const maxWorkerCount = configStore.config.buff_sweep_max_worker_count ?? 32
+  // 验证系统配置限制(特殊版本:不限制线程数,上限10000)
+  const maxWorkerCount = 10000
   const minSteamCardRatio = configStore.config.buff_steam_card_ratio_min ?? 4
   if (form.sweepProcessCount > maxWorkerCount) {
     if (!isAuto) {
-      message.error(`扫货启动失败:扫货线程数不能超过系统配置的最大值 ${maxWorkerCount}`)
+      message.error(`扫货启动失败:扫货线程数不能超过最大值 ${maxWorkerCount}`)
     }
     buffSweepStore.sweepRunning = false
     return