From 48ed337310b3ffc72732427c69793221190f3561 Mon Sep 17 00:00:00 2001 From: hub-gif <2487812171@qq.com> Date: Tue, 14 Apr 2026 13:25:51 +0800 Subject: [PATCH] refactor(frontend): simplify report build page, drop LLM checkboxes Made-with: Cursor --- .../src/composables/useReportConfigForm.js | 33 ++++++++++++------ frontend/src/views/jd/JdAnalysisBuildView.vue | 34 ++++++------------- 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/frontend/src/composables/useReportConfigForm.js b/frontend/src/composables/useReportConfigForm.js index 92dce02..eb63c3a 100644 --- a/frontend/src/composables/useReportConfigForm.js +++ b/frontend/src/composables/useReportConfigForm.js @@ -11,6 +11,18 @@ function splitTriggers(text) { .filter(Boolean) } +/** + * 表单未展示的大模型/细类归纳等布尔项:从任务读入后在「保存」时原样写回,避免误清空。 + * (与 backend ``validate_report_config_body`` 允许的键一致。) + */ +const REPORT_CONFIG_PASSTHROUGH_BOOL_KEYS = [ + 'llm_comment_sentiment', + 'llm_section_bridges', + 'llm_matrix_group_summaries', + 'llm_price_group_summaries', + 'llm_comment_group_summaries', +] + /** * 报告调参表单(与后端 report_config 字段对应),面向非技术用户。 */ @@ -20,15 +32,14 @@ export function useReportConfigForm() { const marketRows = ref([ { indicator: '', value_and_scope: '', source: '', year: '' }, ]) - const useLlmCommentSentiment = ref(false) - const useLlmSectionBridges = ref(false) + /** 表单未编辑的布尔项,从任务配置读入后随保存写回 */ + const passthroughBools = ref({}) function resetToEmpty() { focusWordRows.value = [{ text: '' }] scenarioGroups.value = [{ label: '', triggersText: '' }] marketRows.value = [{ indicator: '', value_and_scope: '', source: '', year: '' }] - useLlmCommentSentiment.value = false - useLlmSectionBridges.value = false + passthroughBools.value = {} } /** @@ -99,8 +110,11 @@ export function useReportConfigForm() { marketRows.value = [{ indicator: '', value_and_scope: '', source: '', year: '' }] } - useLlmCommentSentiment.value = Boolean(cfg.llm_comment_sentiment) - useLlmSectionBridges.value = Boolean(cfg.llm_section_bridges) + const pass = {} + for (const k of REPORT_CONFIG_PASSTHROUGH_BOOL_KEYS) { + if (Object.prototype.hasOwnProperty.call(cfg, k)) pass[k] = Boolean(cfg[k]) + } + passthroughBools.value = pass } /** @returns {Record} 可 PATCH 到后端的 report_config;全空则为 {} */ @@ -140,9 +154,7 @@ export function useReportConfigForm() { })) } - out.llm_comment_sentiment = useLlmCommentSentiment.value - out.llm_section_bridges = useLlmSectionBridges.value - + Object.assign(out, passthroughBools.value) return out } @@ -188,8 +200,7 @@ export function useReportConfigForm() { focusWordRows, scenarioGroups, marketRows, - useLlmCommentSentiment, - useLlmSectionBridges, + passthroughBools, resetToEmpty, applyFromApiConfig, buildPayload, diff --git a/frontend/src/views/jd/JdAnalysisBuildView.vue b/frontend/src/views/jd/JdAnalysisBuildView.vue index 4f7f770..76fc3f6 100644 --- a/frontend/src/views/jd/JdAnalysisBuildView.vue +++ b/frontend/src/views/jd/JdAnalysisBuildView.vue @@ -11,7 +11,6 @@ import { useReportConfigForm } from '../../composables/useReportConfigForm' const { jobs } = useJobs() const selectedId = ref('') -const useLlm = ref(false) const regenErr = ref('') const genInFlight = generationInFlightKey() const REGEN_PREFIX = 'regenerate-report:' @@ -31,8 +30,6 @@ const { focusWordRows, scenarioGroups, marketRows, - useLlmCommentSentiment, - useLlmSectionBridges, applyFromApiConfig, buildPayload, addFocusRow, @@ -159,7 +156,7 @@ async function regenerateReport() { try { const r = await api(`/api/jobs/${id}/regenerate-report/`, { method: 'POST', - body: JSON.stringify({ generator: useLlm.value ? 'llm' : 'rules' }), + body: JSON.stringify({ generator: 'rules' }), }) const text = await r.text() if (!r.ok) { @@ -213,17 +210,12 @@ watch(

分析报告生成

- 选择已成功的任务,调整报告统计规则后保存。未勾选下方选项时,按固定统计规则生成报告;勾选「使用大模型生成」后,由大模型根据本批次摘要撰写全文(通常更慢且可能计费)。均不重新爬取。 + 选择已成功的任务,调整下方统计规则后点「保存以上设置」,再点「重新生成报告」。本页始终按规则引擎更新 + competitor_analysis.md(统计图与表格),不重新爬取。若需大模型整篇稿或 §8.2 等开关,请用「高级 JSON」写入对应字段后保存,或通过 API 调用。 阅读与下载请至 报告查看

-
- -
- 评价章大模型归纳(§8.2 主题解读,需 API 密钥) - - -