|
|
@@ -3810,6 +3810,35 @@
|
|
|
if (r.cached) { await qrLoadScores(r.sel); return; }
|
|
|
showTask("Query 评分 · 643 格", r.task_id, async () => { await qrLoadScores(r.sel); });
|
|
|
};
|
|
|
+ async function qrRunSearch(query) {
|
|
|
+ const body = { query, platforms: "xhs,gzh", max_count: 20 }; // 方向无关,标签自动路由
|
|
|
+ const r = await api("/api/run_search", { method: "POST", body: JSON.stringify(body) });
|
|
|
+ return r; // {task_id, query_id}
|
|
|
+ }
|
|
|
+ // 点高亮格 → 确认 → 搜
|
|
|
+ $("#qr-table-wrap").onclick = async (e) => {
|
|
|
+ const td = e.target.closest("td.qr-c.keep");
|
|
|
+ if (!td) return;
|
|
|
+ const v = qrState.scores[`${td.dataset.ai}_${td.dataset.ti}`];
|
|
|
+ const query = (v && v.rewrite) || td.textContent.replace(/\d+(\.\d+)?$/, "").trim();
|
|
|
+ if (!confirm(`发起搜索(小红书+公众号 各20):\n${query}`)) return;
|
|
|
+ try {
|
|
|
+ const r = await qrRunSearch(query);
|
|
|
+ showTask(`搜索 · ${r.query_id} ${query}`, r.task_id, null);
|
|
|
+ } catch (err) { toast("搜索启动失败:" + (err.body?.error || err.status), "error"); }
|
|
|
+ };
|
|
|
+ // 搜全部达标:逐格起任务(朴素循环,失败不阻断)
|
|
|
+ $("#qr-search-all").onclick = async () => {
|
|
|
+ const keeps = Object.entries(qrState.scores || {}).filter(([, v]) => v.keep);
|
|
|
+ if (!keeps.length) return;
|
|
|
+ if (!confirm(`将对 ${keeps.length} 个达标 query 各起一次搜索(小红书+公众号 各20),确认?`)) return;
|
|
|
+ let ok = 0;
|
|
|
+ for (const [, v] of keeps) {
|
|
|
+ try { await qrRunSearch(v.rewrite || v.query); ok++; }
|
|
|
+ catch (e) { /* 单格失败不阻断 */ }
|
|
|
+ }
|
|
|
+ toast(`已发起 ${ok}/${keeps.length} 个搜索任务`, "info");
|
|
|
+ };
|
|
|
|
|
|
/* ════ 新建搜索 ════ */
|
|
|
/* 渠道下拉多选(选项同 search_eval:小红书/知乎/公众号/抖音/视频号/YouTube) */
|