feat: 添加搜索功能的优先级选择、AI 开关和最低展示分数控制,优化用户体验

This commit is contained in:
2026-03-16 01:21:44 +08:00
parent dd47614d39
commit 5aa4ba6dc2
2 changed files with 158 additions and 3 deletions

View File

@@ -35,6 +35,22 @@
<option value="{{ key }}" {% if fuzziness == key %}selected{% endif %}>{{ profile.label }}</option>
{% endfor %}
</select>
<label class="priority-label">优先级:
<select id="priority-select" name="priority" aria-label="搜索优先级">
<option value="name" {% if priority == 'name' %}selected{% endif %}>名称优先</option>
<option value="part_no" {% if priority == 'part_no' %}selected{% endif %}>料号优先</option>
</select>
</label>
<!-- AI 开关:用户可选择是否启用 AI 解析,状态保存在 localStorage -->
<input type="hidden" id="use-ai-hidden" name="use_ai" value="1">
<label class="ai-toggle">
<input type="checkbox" id="use-ai-toggle" checked>
启用 AI 解析
</label>
<!-- 最低展示分数控制(本地保存) -->
<label class="min-score-label">最低展示分数:
<input id="min-score-input" type="number" name="min_score" step="0.1" min="0" value="{{ min_display_score }}" style="width:80px">
</label>
<button class="btn" type="submit">搜索</button>
</form>
<div class="search-examples">
@@ -195,6 +211,47 @@
});
}
// AI 开关行为:从 localStorage 读取用户偏好并在提交时保存
var useAiToggle = document.getElementById('use-ai-toggle');
var useAiHidden = document.getElementById('use-ai-hidden');
var minScoreInput = document.getElementById('min-score-input');
var prioritySelect = document.getElementById('priority-select');
try {
var saved = localStorage.getItem('use_ai_enabled');
if (saved !== null) {
var enabled = saved === '1' || saved === 'true';
if (useAiToggle) useAiToggle.checked = enabled;
if (useAiHidden) useAiHidden.value = enabled ? '1' : '0';
}
var savedScore = localStorage.getItem('search_min_score');
if (savedScore !== null && minScoreInput) {
minScoreInput.value = savedScore;
}
var savedPriority = localStorage.getItem('search_priority');
if (savedPriority !== null && prioritySelect) {
try { prioritySelect.value = savedPriority; } catch (e) {}
}
} catch (e) {
// ignore localStorage errors
}
if (searchForm) {
searchForm.addEventListener('submit', function () {
var enabled = !!(useAiToggle && useAiToggle.checked);
if (useAiHidden) useAiHidden.value = enabled ? '1' : '0';
try {
if (minScoreInput) {
localStorage.setItem('search_min_score', String(minScoreInput.value));
}
if (prioritySelect) {
localStorage.setItem('search_priority', String(prioritySelect.value));
}
} catch (e) {}
try {
localStorage.setItem('use_ai_enabled', enabled ? '1' : '0');
} catch (e) {}
});
}
document.querySelectorAll('[data-example]').forEach(function (button) {
button.addEventListener('click', function () {
if (!searchInput || !searchForm) {