---
目标完成度:
锻炼:
阅读:
语言:
睡觉习惯:
date: <% tp.date.now("YYYY-MM-DD") %>
---
<%*
const MAX_DAYS = 30;
let tomorrowGoals = "";
let dedupedUnfinished = "";
let daysAgo = 0;
let foundDate = null;
for (let i = 1; i <= MAX_DAYS; i++) {
const targetDate = moment().subtract(i, 'days').format('YYYY-MM-DD');
const targetFile = tp.file.find_tfile(targetDate);
if (targetFile) {
const content = await tp.file.include("[[" + targetDate + "]]");
const goalMatch = content.match(/## 明日目标\n([\s\S]*?)(?=\n## |\n---|\n#[^#]|$)/);
tomorrowGoals = goalMatch ? goalMatch[1].trim() : "";
const unfinished = content
.split('\n')
.filter(line => line.match(/^- \[ \]/))
.join('\n');
if (tomorrowGoals || unfinished) {
const tomorrowLines = new Set(tomorrowGoals.split('\n').map(l => l.trim()));
dedupedUnfinished = unfinished
.split('\n')
.filter(line => !tomorrowLines.has(line.trim()))
.join('\n');
daysAgo = i;
foundDate = targetDate;
break;
}
}
}
const dateHint = daysAgo > 1 ? `<!-- 来自 ${foundDate},${daysAgo} 天前 -->` : "";
const todayGoals = tomorrowGoals || "- [ ] ";
const carriedBlock = dedupedUnfinished
? dedupedUnfinished
: "_(无延续任务)_";
-%>
# <% tp.date.now("YYYY-MM-DD") %>
## 今日目标
<% todayGoals %>
## 延续目标
<% daysAgo > 1 ? `> [!note] 来自 ${foundDate}(${daysAgo} 天前)\n\n` + carriedBlock : carriedBlock %>
## 今日复盘
- 推进了什么:
- 浪费在哪:
- 明天关键:
- 做了什么去推进主线任务:
## 明日目标
- [ ]
## 今日记录