feat: 外观专利改直连 LLM(DeepSeek/Gemini)、无效ASIN菜单更名 BRAND_DB、紫鸟店铺索引场景化
Build Backend JAR / build (push) Has been cancelled

- AppearancePatent:Coze 工作流切换为 llm-host 直连模型(title/appearance 双模型、行并发、重试),配置键迁移并保留旧环境变量兜底
- InvalidAsinDataMapper 补充按值+品牌唯一键查询
- ZiniaoShopIndexService 新增店铺分类/索引场景
- V98:无效ASIN菜单 rename 补充 BRAND_DB;docs 架构优化规划
- 配套单测更新
This commit is contained in:
2026-08-31 17:02:59 +08:00
parent 14a41e64f1
commit c8cd851b2f
20 changed files with 1291 additions and 2338 deletions
+41 -11
View File
@@ -1048,6 +1048,34 @@
pointer-events: none;
}
.shop-check-badge {
display: inline-block;
margin-left: 8px;
padding: 1px 7px;
border-radius: 9px;
font-size: 11px;
line-height: 17px;
white-space: nowrap;
cursor: default;
}
.shop-check-badge.ok { color: #067647; background: #e6f4ea; border: 1px solid #b7e0c3; }
.shop-check-badge.bad { color: #b42318; background: #fee4e2; border: 1px solid #fecdca; }
.shop-check-badge.run { color: #175cd3; background: #eaf2ff; border: 1px solid #b8d2ff; }
.shop-check-badge.wait { color: #667085; background: #f2f4f7; border: 1px solid #d0d5dd; }
.shop-check-badge.warn { color: #b54708; background: #fef0c7; border: 1px solid #fedf89; }
.btn-check {
color: #5158d9;
border-color: #c7cbfa;
}
.btn-check:hover:not(:disabled) {
color: #fff;
background: #5158d9;
border-color: #5158d9;
}
.dedupe-group-access {
display: flex;
align-items: center;
@@ -3478,20 +3506,22 @@
#panel-dedupe-total-data .dedupe-table-scroll th:nth-child(6) { width: 16%; }
#panel-dedupe-total-data .dedupe-table-scroll th:nth-child(7) { width: 9%; }
.shop-manage-table-scroll > table { min-width: 1220px; table-layout: fixed; }
.shop-manage-table-scroll > table { min-width: 1360px; table-layout: fixed; }
#panel-shop-manage .shop-manage-table-scroll th:nth-child(1) { width: 58px; }
#panel-shop-manage .shop-manage-table-scroll th:nth-child(2) { width: 116px; }
#panel-shop-manage .shop-manage-table-scroll th:nth-child(3) { width: 126px; }
#panel-shop-manage .shop-manage-table-scroll th:nth-child(4) { width: 230px; }
#panel-shop-manage .shop-manage-table-scroll th:nth-child(5) { width: 150px; }
#panel-shop-manage .shop-manage-table-scroll th:nth-child(6) { width: 190px; }
#panel-shop-manage .shop-manage-table-scroll th:nth-child(7) { width: 108px; }
#panel-shop-manage .shop-manage-table-scroll th:nth-child(4) { width: 210px; }
#panel-shop-manage .shop-manage-table-scroll th:nth-child(5) { width: 140px; }
#panel-shop-manage .shop-manage-table-scroll th:nth-child(6) { width: 180px; }
#panel-shop-manage .shop-manage-table-scroll th:nth-child(7) { width: 152px; }
#panel-shop-manage .shop-manage-table-scroll th:nth-child(8), #panel-shop-manage .shop-manage-table-scroll th:nth-child(9) { width: 132px; }
#panel-shop-manage .shop-manage-table-scroll th:nth-child(10) { width: 150px; }
#panel-shop-manage .shop-manage-table-scroll th:nth-child(10) { width: 200px; }
#panel-shop-manage .shop-manage-table-scroll td { overflow: hidden; }
.table-ellipsis { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.shop-password-cell { max-width: 100%; }
.shop-password-value { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.shop-col-password { min-width: 0; }
.shop-col-actions { white-space: nowrap; }
.category-table-scroll > table { min-width: 860px; }
.category-table-scroll td { vertical-align: middle; }
@@ -3887,7 +3917,7 @@
</button>
<div class="menu-group-body">
<button class="tab" type="button" data-tab="dedupe-total-data" aria-controls="panel-dedupe-total-data"><span class="adm-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z"></path><path d="m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65"></path><path d="m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65"></path></svg></span><span class="adm-label">去重数据汇总</span></button>
<button class="tab" type="button" data-tab="invalid-asin-data" aria-controls="panel-invalid-asin-data"><span class="adm-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"></path><path d="M12 9v4"></path><path d="M12 17h.01"></path></svg></span><span class="adm-label">无效ASIN数据</span></button>
<button class="tab" type="button" data-tab="invalid-asin-data" aria-controls="panel-invalid-asin-data"><span class="adm-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"></path><path d="M12 9v4"></path><path d="M12 17h.01"></path></svg></span><span class="adm-label">品牌数据</span></button>
<button class="tab" type="button" data-tab="query-asin" aria-controls="panel-query-asin"><span class="adm-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="8"></circle><path d="m21 21-4.3-4.3"></path></svg></span><span class="adm-label">查询 ASIN</span></button>
<button class="tab" type="button" data-tab="product-categories" aria-controls="panel-product-categories"><span class="adm-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"></path></svg></span><span class="adm-label">商品类目</span></button>
</div>
@@ -4302,7 +4332,7 @@
<!-- 不符合ASIN数据 -->
<div id="panel-invalid-asin-data" class="tab-panel">
<div class="form-box">
<h3 style="margin-bottom:16px;">新增无效ASIN数据</h3>
<h3 style="margin-bottom:16px;">新增品牌数据</h3>
<div class="form-row">
<div class="form-group" style="min-width:220px;">
<label>ASIN</label>
@@ -4326,7 +4356,7 @@
<p class="msg" id="msgInvalidAsinData"></p>
</div>
<div class="panel-box">
<h3 style="margin-bottom:16px;">无效ASIN数据列表</h3>
<h3 style="margin-bottom:16px;">品牌数据列表</h3>
<div class="form-row" style="margin-bottom:16px;">
<div class="form-group" style="min-width:220px;">
<label>ASIN / 品牌(模糊搜索)</label>
@@ -4970,7 +5000,7 @@
<!-- 编辑不符合ASIN数据弹窗 -->
<div class="modal-mask" id="editInvalidAsinDataModal">
<div class="modal">
<h3>编辑无效ASIN数据</h3>
<h3>编辑品牌数据</h3>
<input type="hidden" id="editInvalidAsinDataId">
<input type="hidden" id="editInvalidAsinDataRecordSource">
<div class="form-group">
@@ -5415,7 +5445,7 @@
window.__initAdminMenuCollapse();
})();
</script>
<script src="/static/admin.js?v=admin-menu-v2"></script>
<script src="/static/admin.js?v=admin-menu-v3"></script>
<div class="admin-toast-region" id="adminToastRegion" role="status" aria-live="polite" aria-atomic="true"></div>
<div class="admin-confirm-mask" id="adminConfirmModal" aria-hidden="true">
<section class="admin-confirm-dialog" role="alertdialog" aria-modal="true" aria-labelledby="adminConfirmTitle" aria-describedby="adminConfirmMessage">