fix(工作报告- 周报): 修复工作日志依然溢出到任务层级的问题。

This commit is contained in:
dk
2026-06-24 18:28:00 +08:00
parent 3ffdad142d
commit ea6a816d58

View File

@@ -609,14 +609,22 @@ function createStructuredSectionsFromTextV2(
let currentCategory = ''; let currentCategory = '';
let previousTask: StructuredTask | null = null; 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) => { const shouldAppendToPreviousTaskDetail = (line: string) => {
if (!previousTask?.detail) return false; if (!previousTask?.detail) return false;
if (line.startsWith('#')) return false; if (line.startsWith('#')) return false;
if (line.includes('') || line.includes('(') || line.includes('') || line.includes(':')) return false; if (legacyTaskLineRe.test(line)) return false;
return !/^(?!(?:(?:\d+[..、])|(?:\d+\s+)|(?:[一二三四五六七八九十百千万]+[、.]))\s*)(.+?)\s*[-]\s*(.+)$/u.test( if (isExplicitStructuredTaskLine(line)) return false;
line return true;
);
}; };
lines.forEach(line => { lines.forEach(line => {
@@ -632,9 +640,7 @@ function createStructuredSectionsFromTextV2(
// 仅当行首不是结构化任务前缀(如 "3、")时,才按旧式 "<分类> - <事项>" 解析; // 仅当行首不是结构化任务前缀(如 "3、")时,才按旧式 "<分类> - <事项>" 解析;
// 否则会把 "2026-06-12 - 2026-06-19" 这种含 " - " 的出差行误判为分类。 // 否则会把 "2026-06-12 - 2026-06-19" 这种含 " - " 的出差行误判为分类。
const legacyMatch = trimmedLine.match( const legacyMatch = trimmedLine.match(legacyTaskLineRe);
/^(?!(?:(?:\d+[..、])|(?:\d+\s+)|(?:[一二三四五六七八九十百千万]+[、.]))\s*)(.+?)\s*[-]\s*(.+)$/u
);
if (legacyMatch) { if (legacyMatch) {
const [, rawCategory, rawTaskText] = legacyMatch; const [, rawCategory, rawTaskText] = legacyMatch;
const category = rawCategory.trim(); const category = rawCategory.trim();