feat: update xianyu web login and Hermes optimizer
This commit is contained in:
@@ -232,6 +232,16 @@ function renderLoginStatus(data) {
|
||||
function renderLoginQr(data) {
|
||||
const panel = document.getElementById('login-qr-panel');
|
||||
const img = document.getElementById('login-qr-img');
|
||||
const title = document.getElementById('login-qr-title');
|
||||
const sub = document.getElementById('login-qr-sub');
|
||||
if (title) title.textContent = data.qrScreenshotKind || '扫码登录';
|
||||
if (sub) {
|
||||
const source = data.qrSource || '闲鱼 Web 登录入口';
|
||||
const redirected = data.qrUrl && /login\.taobao\.com|havanaone/.test(data.qrUrl)
|
||||
? '(已从闲鱼入口跳转到淘宝/阿里统一登录,这是官方登录链路)'
|
||||
: '';
|
||||
sub.textContent = `来源:${source}${redirected}。二维码过期就重新获取。`;
|
||||
}
|
||||
if (data.qrImage) {
|
||||
img.src = data.qrImage;
|
||||
panel.style.display = 'block';
|
||||
@@ -358,6 +368,8 @@ function collectTaskForm() {
|
||||
maxItems: maxItems ? Number(maxItems) : 60,
|
||||
region,
|
||||
personalSeller,
|
||||
autoAnalyze: document.getElementById('f-auto-analyze')?.checked !== false,
|
||||
autoNotify: document.getElementById('f-auto-notify')?.checked !== false,
|
||||
customRequirements,
|
||||
coarsePrompt: coarsePrompt || '',
|
||||
finePrompt: finePrompt || '',
|
||||
@@ -403,7 +415,7 @@ async function optimizeTaskForm() {
|
||||
currentRequirements: document.getElementById('f-requirements').value.trim(),
|
||||
});
|
||||
fillTaskForm(result.task || {});
|
||||
status.textContent = result.source === 'ai' ? '已由 AI 优化' : 'AI不可用,已用本地规则优化';
|
||||
status.textContent = result.source === 'hermes' ? '已由 Hermes Agent 优化' : '已用本地规则优化(Hermes 不可用时兜底)';
|
||||
} catch (err) {
|
||||
status.textContent = `优化失败:${err.message}`;
|
||||
}
|
||||
@@ -419,6 +431,8 @@ function fillTaskForm(taskOrConfig, name = '') {
|
||||
document.getElementById('f-max-items').value = c.maxItems || 60;
|
||||
document.getElementById('f-region').value = c.region || '';
|
||||
document.getElementById('f-personal').checked = !!c.personalSeller;
|
||||
const autoAnalyze = document.getElementById('f-auto-analyze'); if (autoAnalyze) autoAnalyze.checked = c.autoAnalyze !== false;
|
||||
const autoNotify = document.getElementById('f-auto-notify'); if (autoNotify) autoNotify.checked = c.autoNotify !== false;
|
||||
document.getElementById('f-requirements').value = c.customRequirements || '';
|
||||
document.getElementById('f-coarse-prompt').value = c.coarsePrompt || defaultCoarsePrompt;
|
||||
document.getElementById('f-fine-prompt').value = c.finePrompt || defaultFinePrompt;
|
||||
|
||||
@@ -226,8 +226,8 @@
|
||||
<div class="login-qr-panel" id="login-qr-panel" style="display:none">
|
||||
<div class="login-qr-header">
|
||||
<div>
|
||||
<div class="login-qr-title">扫码登录</div>
|
||||
<div class="login-qr-sub">点击“获取登录二维码”后,在这里直接扫码;二维码过期就重新获取。</div>
|
||||
<div class="login-qr-title" id="login-qr-title">扫码登录</div>
|
||||
<div class="login-qr-sub" id="login-qr-sub">点击“获取登录二维码”后,会先从闲鱼官网入口打开登录链路;如跳转到淘宝/阿里统一登录,会在这里标明来源。</div>
|
||||
</div>
|
||||
<button class="btn btn-sm" onclick="clearLoginQr()">清空</button>
|
||||
</div>
|
||||
@@ -240,10 +240,11 @@
|
||||
<button class="btn" onclick="checkLoginStatus()">刷新账号状态</button>
|
||||
</div>
|
||||
<div class="login-help">
|
||||
<p>1. 点击“获取/刷新登录二维码”后,后台会从闲鱼 Web 登录入口生成二维码/登录面板截图,可直接在本页面扫码。</p>
|
||||
<p>2. 扫码完成后点击“刷新账号状态”,本页会展示当前账号昵称、头像、Cookie 数和登录墙状态。</p>
|
||||
<p>3. Cookie 会自动保存在项目的 <code>browser-data/</code> 目录,后续采集任务复用这个登录态。</p>
|
||||
<p>4. 如果二维码过期或页面显示登录墙,重新获取二维码后再扫码。</p>
|
||||
<p>1. 点击“获取/刷新登录二维码”后,后台会先进入闲鱼官网,再沿官方登录链路生成二维码/登录面板截图。</p>
|
||||
<p>2. 闲鱼当前可能跳转到淘宝/阿里统一登录;页面会明确显示来源,不再把淘宝登录截图伪装成“闲鱼二维码”。</p>
|
||||
<p>3. 扫码完成后点击“刷新账号状态”,本页会展示当前账号昵称、头像、Cookie 数和登录墙状态。</p>
|
||||
<p>4. Cookie 会自动保存在项目的 <code>browser-data/</code> 目录,后续采集任务复用这个登录态。</p>
|
||||
<p>5. 如果二维码过期或页面显示登录墙,重新获取二维码后再扫码。</p>
|
||||
</div>
|
||||
<pre class="login-log" id="login-log"></pre>
|
||||
</div>
|
||||
@@ -298,12 +299,21 @@
|
||||
<textarea id="f-requirements" rows="3" placeholder="例如:只要成色9新以上的,电池健康90%以上,价格4500以内优先,最好有原装配件和发票。不要华强北翻新机。"></textarea>
|
||||
</div>
|
||||
<div class="form-group task-optimize-card">
|
||||
<label>AI 优化生成 <span class="hint">(根据当前商品/预算/需求生成关键词和筛选条件)</span></label>
|
||||
<label>任务智能润色 <span class="hint">(根据当前商品/预算/需求生成关键词和筛选条件;优先调用 Hermes Agent,失败自动降级本地规则)</span></label>
|
||||
<div class="persona-actions">
|
||||
<button type="button" class="btn btn-sm btn-primary" onclick="optimizeTaskForm()">AI 优化当前表单</button>
|
||||
<button type="button" class="btn btn-sm btn-primary" onclick="optimizeTaskForm()">润色当前表单</button>
|
||||
<span class="hint" id="optimize-status"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group checkbox-group">
|
||||
<label><input id="f-auto-analyze" type="checkbox" checked> 采集完成后自动执行 Hermes 分析</label>
|
||||
</div>
|
||||
<div class="form-group checkbox-group">
|
||||
<label><input id="f-auto-notify" type="checkbox" checked> 分析后按通知设置自动推送</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hint">默认全自动:保存并采集 → 本地预筛 → Hermes 分析 → 命中通知;无需再手动点“执行分析”。</div>
|
||||
<details class="advanced-section" open>
|
||||
<summary class="advanced-toggle">定时任务</summary>
|
||||
<div class="form-row" style="margin-top:12px">
|
||||
@@ -349,6 +359,6 @@
|
||||
|
||||
|
||||
|
||||
<script src="app.js?v=19"></script>
|
||||
<script src="app.js?v=20"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user