From ea6a816d589525dc83d06dc5575a4ef5b1c52afa Mon Sep 17 00:00:00 2001 From: dk <1260500659@qq.com> Date: Wed, 24 Jun 2026 18:28:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=B7=A5=E4=BD=9C=E6=8A=A5=E5=91=8A-=20?= =?UTF-8?q?=E5=91=A8=E6=8A=A5):=20=E4=BF=AE=E5=A4=8D=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BE=9D=E7=84=B6=E6=BA=A2=E5=87=BA=E5=88=B0?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=B1=82=E7=BA=A7=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../work-report/weekly/modules/fill-page.vue | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/views/personal-center/work-report/weekly/modules/fill-page.vue b/src/views/personal-center/work-report/weekly/modules/fill-page.vue index 1645138..0f3e974 100644 --- a/src/views/personal-center/work-report/weekly/modules/fill-page.vue +++ b/src/views/personal-center/work-report/weekly/modules/fill-page.vue @@ -609,14 +609,22 @@ function createStructuredSectionsFromTextV2( let currentCategory = ''; let previousTask: StructuredTask | null = null; + const legacyTaskLineRe = + /^(?!(?:(?:\d+[..、])|(?:\d+\s+)|(?:[一二三四五六七八九十百千万]+[、..]))\s*)(.+?)\s*[--]\s*(.+)$/u; + + const isExplicitStructuredTaskLine = (line: string) => { + if (!STRUCTURED_TASK_PREFIX_RE.test(line)) return false; + const normalizedLine = stripStructuredTaskPrefix(line); + const { rawTitle, metricsText } = extractStructuredTaskParts(normalizedLine); + return Boolean(stripStructuredTaskSuffix(rawTitle) && isStructuredMetricsText(metricsText)); + }; const shouldAppendToPreviousTaskDetail = (line: string) => { if (!previousTask?.detail) return false; if (line.startsWith('#')) return false; - if (line.includes('(') || line.includes('(') || line.includes(':') || line.includes(':')) return false; - return !/^(?!(?:(?:\d+[..、])|(?:\d+\s+)|(?:[一二三四五六七八九十百千万]+[、..]))\s*)(.+?)\s*[--]\s*(.+)$/u.test( - line - ); + if (legacyTaskLineRe.test(line)) return false; + if (isExplicitStructuredTaskLine(line)) return false; + return true; }; lines.forEach(line => { @@ -632,9 +640,7 @@ function createStructuredSectionsFromTextV2( // 仅当行首不是结构化任务前缀(如 "3、")时,才按旧式 "<分类> - <事项>" 解析; // 否则会把 "2026-06-12 - 2026-06-19" 这种含 " - " 的出差行误判为分类。 - const legacyMatch = trimmedLine.match( - /^(?!(?:(?:\d+[..、])|(?:\d+\s+)|(?:[一二三四五六七八九十百千万]+[、..]))\s*)(.+?)\s*[--]\s*(.+)$/u - ); + const legacyMatch = trimmedLine.match(legacyTaskLineRe); if (legacyMatch) { const [, rawCategory, rawTaskText] = legacyMatch; const category = rawCategory.trim();