task-98: 移除 similar-asin/appearance-patent 模块 Coze,状态机与共享组件改名 LLM
Build Backend JAR / build (push) Has been cancelled

- similarasin/appearancepatent 模块全部 Coze 工作流调用改走 direct-LLM(已确认唯一运行路径)
- 共享组件改名:CozeTaskQueueGate→TaskQueueGate、CozeGroupResultPropagator→GroupResultPropagator
- 状态机改名:biz_task_scope_state 的 coze_* 列→llm_*、stateJson coze 键→llm(V100 迁移已应用生产)
- 删除 biz_coze_credential 表、CozeCredential* 类、SimilarAsinCozeClient、AppearancePatentCozeClient→LlmClient
- 前端 brand 页 Coze 文案→LLM;Python 后端删除 cozepy 依赖与死配置
- 修复 TaskResultFileJobWorker 启动失败:TaskFileJobConfig 注册 ResultFileJobHandlerRegistry 与 13 个 handler bean(含 validateCoverage 启动校验)
This commit is contained in:
2026-09-01 02:19:45 +08:00
parent 0cc7380205
commit e2607ab723
109 changed files with 6903 additions and 4582 deletions
@@ -68,7 +68,7 @@
{{ pushing ? '推送中...' : '推送到 Python 队列' }}
</button>
</div>
<p class="loading-msg">Python 回传字段按 idasin国家价格标题图片链接数组提交后端接收分片后按 10 条一批送检结果区展示真实 Coze 批次进度</p>
<p class="loading-msg">Python 回传字段按 idasin国家价格标题图片链接数组提交后端接收分片后按 10 条一批送检结果区展示真实 LLM 批次进度</p>
<div v-if="visibleTaskSummary" class="parse-card">
<div>任务 ID{{ visibleTaskSummary.taskId }}</div>
@@ -307,7 +307,7 @@ function mergeCurrentTaskItem(item: SimilarAsinHistoryItem) {
}
}
function effectiveCozeApiKey() {
function effectiveLlmApiKey() {
return getStoredApiSecret('similar-asin').trim()
}
@@ -460,7 +460,7 @@ async function parseFiles() {
ElMessage.warning('请先选择 Excel')
return
}
if (!effectiveCozeApiKey()) {
if (!effectiveLlmApiKey()) {
ElMessage.warning('请先在左上角设置中填写货源查询密钥')
return
}
@@ -472,7 +472,7 @@ async function parseFiles() {
originalFilename: f.originalFilename,
relativePath: f.relativePath,
}))
const res = await parseSimilarAsin(files, effectiveCozeApiKey(), imgSwitch.value, categorySwitch.value)
const res = await parseSimilarAsin(files, effectiveLlmApiKey(), imgSwitch.value, categorySwitch.value)
// 只保留摘要字段与有界预览行,避免数千行 items/groups 进入响应式对象
const previewOptions: ParsePreviewOptions = { previewRowLimit: 200 }
parseResult.value = toParsePreview(res, previewOptions) as unknown as SimilarAsinParseVo
@@ -499,7 +499,7 @@ async function pushToPythonQueue() {
ElMessage.error('当前环境未启用 pywebview enqueue_json')
return
}
if (!effectiveCozeApiKey()) {
if (!effectiveLlmApiKey()) {
ElMessage.warning('请先在左上角设置中填写货源查询密钥')
return
}
@@ -540,7 +540,7 @@ async function pushToPythonQueue() {
data: {
taskId,
user_id: currentUserId(),
api_key: effectiveCozeApiKey(),
api_key: effectiveLlmApiKey(),
sourceFileCount: currentParseResult.sourceFileCount || 0,
totalRows: currentParseResult.totalRows || 0,
acceptedRows: currentParseResult.acceptedRows || 0,
@@ -926,7 +926,7 @@ function pendingResultHint(item: SimilarAsinHistoryItem) {
if (!isResultPreparing(item)) return ''
const fileStatus = (item.fileStatus || '').toUpperCase()
if (fileStatus === 'RUNNING') {
return '任务已完成,正在等待 Coze 回流并组装结果文件,下载按钮稍后出现'
return '任务已完成,正在等待 LLM 回流并组装结果文件,下载按钮稍后出现'
}
if (fileStatus === 'PENDING') {
return '任务已完成,结果文件已入队,正在等待后端开始处理'
@@ -961,13 +961,13 @@ function fileProgressPercent(item: SimilarAsinHistoryItem) {
function displayFileProgressStage(item: SimilarAsinHistoryItem, fallback: string) {
const message = (item.fileProgressMessage || '').trim()
if (!message) return fallback
if (/coze/i.test(message) || /Coze|回流/.test(message)) {
if (/submitting/i.test(message) || /提交/.test(message)) return '正在提交 Coze 批次'
if (/生成结果|结果文件|组装/i.test(message)) return 'Coze 已回流,正在生成结果文件'
if (/llm/i.test(message) || /LLM|回流/.test(message)) {
if (/submitting/i.test(message) || /提交/.test(message)) return '正在提交 LLM 批次'
if (/生成结果|结果文件|组装/i.test(message)) return 'LLM 已回流,正在生成结果文件'
if (/waiting/i.test(message) || /等待/.test(message) || /\d+\s*\/\s*\d+/.test(message)) {
return 'Coze 回流中,等待结果回传'
return 'LLM 回流中,等待结果回传'
}
return 'Coze 处理中'
return 'LLM 处理中'
}
if (/assembling|xlsx|组装|生成结果/i.test(message)) return '正在组装结果文件'
return message
@@ -978,11 +978,11 @@ function fileProgressCountLabel(item: SimilarAsinHistoryItem) {
const parsed = parseProgressCountFromMessage(message)
const current = parsed?.current ?? item.fileProgressCurrent ?? 0
const total = parsed?.total ?? item.fileProgressTotal ?? 0
if (/coze/i.test(message) || /Coze|回流/.test(message)) {
if (/llm/i.test(message) || /LLM|回流/.test(message)) {
if (/submitting/i.test(message) || /提交/.test(message)) {
return `Coze 提交批次 ${current}/${total}`
return `LLM 提交批次 ${current}/${total}`
}
return `Coze 回流批次 ${current}/${total}`
return `LLM 回流批次 ${current}/${total}`
}
return `当前阶段 ${current}/${total}`
}