style(frontend): 全站背景图 webp 化(bg.jpg 4MB→251KB 压缩 + bg.webp)+品牌工具页默认策略调优(品牌检测默认改精确匹配 Simple、Terms 后置)+任务面板/登录页/亚马逊控制台观感微调
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
<aside class="left-panel left-panel--with-template">
|
||||
<div class="section-title">上传文件</div>
|
||||
<div class="upload-zone">
|
||||
<div class="hint">选择 Excel 后点击解析,后端会提取 id、ASIN、国家、价格,每一行都会独立送检。</div>
|
||||
<div class="hint">选择 Excel 后点击解析,系统会识别表格里的 ID、ASIN、国家、价格,每一行都会自动检测。</div>
|
||||
<div class="btns">
|
||||
<button type="button" class="opt-btn" @click="selectFiles">选择 Excel</button>
|
||||
<button type="button" class="opt-btn" @click="selectFolder">选择文件夹</button>
|
||||
@@ -68,7 +68,7 @@
|
||||
{{ pushing ? '启动中...' : '启动任务' }}
|
||||
</button>
|
||||
</div>
|
||||
<p class="loading-msg">Python 回传字段按 id、asin、国家、价格、标题、图片链接数组提交;后端接收分片后按 10 条一批送检,结果区展示真实 LLM 批次进度。</p>
|
||||
<p class="loading-msg">提交后系统自动分批检测,进度显示在右侧任务区,完成后可下载结果。</p>
|
||||
|
||||
<div v-if="visibleTaskSummary" class="parse-card">
|
||||
<div>任务 ID:{{ visibleTaskSummary.taskId }}</div>
|
||||
@@ -562,7 +562,7 @@ async function pushToPythonQueue() {
|
||||
await activateSimilarAsinTask(taskId)
|
||||
const result = await api.enqueue_json(payload)
|
||||
if (!result?.success) {
|
||||
ElMessage.error(result?.error || '推送失败')
|
||||
ElMessage.error(result?.error || '启动失败')
|
||||
return
|
||||
}
|
||||
queuedTaskSummary.value = toTaskSummary(currentParseResult)
|
||||
@@ -889,7 +889,7 @@ function hasMeaningfulProgressValue(value: unknown) {
|
||||
function statusText(item: SimilarAsinHistoryItem) {
|
||||
const status = normalizeTaskStatus(item)
|
||||
if (status === 'RUNNING') return '执行中'
|
||||
if (status === 'PENDING') return '已解析待推送'
|
||||
if (status === 'PENDING') return '已解析待启动'
|
||||
if (isResultPreparing(item)) return '结果生成中'
|
||||
if (isResultBuildFailed(item)) return '结果生成失败'
|
||||
if (status === 'SUCCESS' || item.success) return '已完成'
|
||||
@@ -934,10 +934,10 @@ function pendingResultHint(item: SimilarAsinHistoryItem) {
|
||||
if (!isResultPreparing(item)) return ''
|
||||
const fileStatus = (item.fileStatus || '').toUpperCase()
|
||||
if (fileStatus === 'RUNNING') {
|
||||
return '任务已完成,正在等待 LLM 回流并组装结果文件,下载按钮稍后出现'
|
||||
return '任务已完成,正在生成结果文件,下载按钮稍后出现'
|
||||
}
|
||||
if (fileStatus === 'PENDING') {
|
||||
return '任务已完成,结果文件已入队,正在等待后端开始处理'
|
||||
return '任务已完成,结果文件排队中,请稍候'
|
||||
}
|
||||
return '任务已完成,正在生成结果文件,下载按钮稍后出现'
|
||||
}
|
||||
@@ -970,14 +970,14 @@ function displayFileProgressStage(item: SimilarAsinHistoryItem, fallback: string
|
||||
const message = (item.fileProgressMessage || '').trim()
|
||||
if (!message) return fallback
|
||||
if (/llm/i.test(message) || /LLM|回流/.test(message)) {
|
||||
if (/submitting/i.test(message) || /提交/.test(message)) return '正在提交 LLM 批次'
|
||||
if (/生成结果|结果文件|组装/i.test(message)) return 'LLM 已回流,正在生成结果文件'
|
||||
if (/submitting/i.test(message) || /提交/.test(message)) return '正在提交检测批次'
|
||||
if (/生成结果|结果文件|组装/i.test(message)) return '检测结果已返回,正在生成结果文件'
|
||||
if (/waiting/i.test(message) || /等待/.test(message) || /\d+\s*\/\s*\d+/.test(message)) {
|
||||
return 'LLM 回流中,等待结果回传'
|
||||
return '检测中,等待结果返回'
|
||||
}
|
||||
return 'LLM 处理中'
|
||||
return '检测中'
|
||||
}
|
||||
if (/assembling|xlsx|组装|生成结果/i.test(message)) return '正在组装结果文件'
|
||||
if (/assembling|xlsx|组装|生成结果/i.test(message)) return '正在生成结果文件'
|
||||
return message
|
||||
}
|
||||
|
||||
@@ -988,9 +988,9 @@ function fileProgressCountLabel(item: SimilarAsinHistoryItem) {
|
||||
const total = parsed?.total ?? item.fileProgressTotal ?? 0
|
||||
if (/llm/i.test(message) || /LLM|回流/.test(message)) {
|
||||
if (/submitting/i.test(message) || /提交/.test(message)) {
|
||||
return `LLM 提交批次 ${current}/${total}`
|
||||
return `检测批次 ${current}/${total}`
|
||||
}
|
||||
return `LLM 回流批次 ${current}/${total}`
|
||||
return `检测完成批次 ${current}/${total}`
|
||||
}
|
||||
return `当前阶段 ${current}/${total}`
|
||||
}
|
||||
@@ -1118,7 +1118,7 @@ async function batchDeleteHistory(views: TaskItemView[]) {
|
||||
<style scoped>
|
||||
.module-page {
|
||||
min-height: 100vh;
|
||||
background: #151a25;
|
||||
background: #242424;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
@@ -1129,7 +1129,7 @@ async function batchDeleteHistory(views: TaskItemView[]) {
|
||||
|
||||
.left-panel {
|
||||
width: 400px;
|
||||
background: #1c2333;
|
||||
background: #242424;
|
||||
padding: 20px;
|
||||
overflow-y: auto;
|
||||
border-right: 1px solid #2e3a52;
|
||||
@@ -1138,7 +1138,7 @@ async function batchDeleteHistory(views: TaskItemView[]) {
|
||||
.right-panel {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
background: #151a25;
|
||||
background: #242424;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
@@ -1153,7 +1153,7 @@ async function batchDeleteHistory(views: TaskItemView[]) {
|
||||
border: 1px dashed #3e4a62;
|
||||
border-radius: 10px;
|
||||
padding: 18px;
|
||||
background: #2e3a52;
|
||||
background: #242424;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
@@ -1308,7 +1308,7 @@ async function batchDeleteHistory(views: TaskItemView[]) {
|
||||
.opt-btn {
|
||||
padding: 8px 14px;
|
||||
color: #c8d2e2;
|
||||
background: #2e3a52;
|
||||
background: #242424;
|
||||
border: 1px solid #3e4a62;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user