Compare commits

..
3 Commits
Author SHA1 Message Date
hz4th_coder 3f9848c635 fix: 修复内容库显示问题
- 产品名称(product_names)不再自动填充为网页标题
- 内容库显示搜索标题(search_title)作为主标题
- 产品名称单独显示(如果有关联)
2026-07-14 11:29:22 +08:00
hz4th_coder dd42957a48 fix: 默认勾选'抓取后自动保存到内容库' 2026-07-14 11:14:59 +08:00
hz4th_coder 0229f2dfcf fix: 后台任务列表自动刷新(每3秒) 2026-07-14 11:07:29 +08:00
5 changed files with 35 additions and 9 deletions
+5 -2
View File
@@ -102,15 +102,18 @@ class BackgroundTaskService:
# 检查URL是否已存在
existing = db.search_articles(url)
if not any(a.get('url') == url for a in existing):
# 获取抓取到的网页标题
page_title = fetch_result.get('title', '') or title
article_id = db.add_article(
product_names=[title],
product_names=[], # 产品名称留空,后续手动关联
category=category or '',
keywords=keywords or [],
summary=content[:200],
content=content,
source=url,
url=url,
search_title=title
search_title=title # 搜索结果的标题
)
if article_id:
saved_count += 1
+2 -2
View File
@@ -250,7 +250,7 @@
color: #667eea;
}
.article-page-title {
.article-products {
font-size: 13px;
color: #666;
margin-bottom: 10px;
@@ -259,7 +259,7 @@
border-radius: 4px;
}
.article-page-title i {
.article-products i {
color: #4caf50;
}
+4 -4
View File
@@ -110,7 +110,7 @@ function displayArticles() {
const productNames = safeParseJSON(article.product_names, []);
const keywords = safeParseJSON(article.keywords, []);
// 确定显示标题:优先 search_title,其次 product_names,最后来源
// 确定显示标题:优先 search_title(搜索标题),其次 product_names(产品名称),最后来源
const displayTitle = article.search_title || productNames.join(', ') || article.source || '未命名';
return `
@@ -133,9 +133,9 @@ function displayArticles() {
</button>
</div>
</div>
${article.search_title && productNames.length > 0 && article.search_title !== productNames.join(', ') ? `
<div class="article-page-title">
<i class="ri-article-line"></i> 网页标题: ${escapeHtml(productNames.join(', '))}
${productNames.length > 0 ? `
<div class="article-products">
<i class="ri-price-tag-3-line"></i> 产品: ${escapeHtml(productNames.join(', '))}
</div>
` : ''}
<div class="article-meta">
+23
View File
@@ -8,6 +8,7 @@ let currentResultIndex = -1;
// 后台任务相关
let currentTaskId = null;
let taskPollInterval = null;
let autoRefreshTasksInterval = null; // 自动刷新任务列表
// 页面加载初始化
document.addEventListener('DOMContentLoaded', () => {
@@ -21,6 +22,9 @@ document.addEventListener('DOMContentLoaded', () => {
// 加载失败URL和后台任务
loadFailedUrls();
loadBackgroundTasks();
// 启动自动刷新后台任务列表(每3秒)
startAutoRefreshTasks();
});
// 执行搜索
@@ -861,4 +865,23 @@ async function clearCompletedTasks() {
} catch (error) {
showToast('清理任务出错', 'error');
}
}
// 启动自动刷新后台任务列表
function startAutoRefreshTasks() {
if (autoRefreshTasksInterval) {
clearInterval(autoRefreshTasksInterval);
}
autoRefreshTasksInterval = setInterval(() => {
loadBackgroundTasks();
}, 3000); // 每3秒刷新一次
}
// 停止自动刷新
function stopAutoRefreshTasks() {
if (autoRefreshTasksInterval) {
clearInterval(autoRefreshTasksInterval);
autoRefreshTasksInterval = null;
}
}
+1 -1
View File
@@ -51,7 +51,7 @@
<span>搜索后自动抓取内容</span>
</label>
<label class="checkbox-label">
<input type="checkbox" id="auto-save">
<input type="checkbox" id="auto-save" checked>
<span>抓取后自动保存到内容库</span>
</label>
</div>