docs: 两大核心服务时间窗口铁律 — cron 分支分歧修复 + 阅读日报 24h 滚动窗口
This commit is contained in:
@ -131,3 +131,16 @@
|
|||||||
**决策**:周报从工作报告风格改为私人思考伙伴风格。
|
**决策**:周报从工作报告风格改为私人思考伙伴风格。
|
||||||
|
|
||||||
**原因**:AI 的角色不应该是给老板写报告,而是陪用户思考。日报格式更符合私人知识库定位。
|
**原因**:AI 的角色不应该是给老板写报告,而是陪用户思考。日报格式更符合私人知识库定位。
|
||||||
|
|
||||||
|
### O-2026-06-20: 定时任务时间窗口统一为滚动窗口
|
||||||
|
|
||||||
|
**决策**:所有"每日"定时任务的数据过滤,从日历日字符串匹配改为滚动时间窗口(过去N小时)。
|
||||||
|
|
||||||
|
**原因**:阅读日报使用 `date_str = datetime.now().strftime("%Y-%m-%d")` 严格按日历日过滤。22:00 cron 触发时抓取 `2026-06-20` 的数据,但用户 23:00 的晚间阅读标记为 `2026-06-20`,次日 22:00 的报告只认 `2026-06-21`,这条数据漏入日历间隙。
|
||||||
|
|
||||||
|
**实施**:
|
||||||
|
- 灵感日报:`list_memos(days=1)` → 本就是 24h 滚动窗口,无需修改
|
||||||
|
- 阅读日报:`load_today_data()` → 从日期字符串匹配改为 `since_dt = now - timedelta(hours=24)` 时间戳比较
|
||||||
|
- `parse_time_from_line()` → 从只截取日期改为捕获完整 datetime 对象
|
||||||
|
|
||||||
|
**教训**:任何"每日"定时任务如果用日历日过滤,必须考虑夜间时段的归属。滚动窗口(过去N小时)比日历日更鲁棒。尤其是用户活跃时段与 cron 触发时间接近或重叠时。
|
||||||
|
|||||||
@ -68,3 +68,21 @@ yt-dlp 下载(带 upload_date) → 排序 → 加前缀
|
|||||||
- 生效:明日 22:00 cron
|
- 生效:明日 22:00 cron
|
||||||
|
|
||||||
**教训**:任何"每日"定时任务如果用日历日过滤,必须考虑夜间时段的归属。滚动窗口(过去N小时)比日历日更鲁棒。
|
**教训**:任何"每日"定时任务如果用日历日过滤,必须考虑夜间时段的归属。滚动窗口(过去N小时)比日历日更鲁棒。
|
||||||
|
|
||||||
|
|
||||||
|
## 23:25 🔴 两大核心服务时间窗口铁律固化
|
||||||
|
|
||||||
|
### 日报 cron 分支分歧修复
|
||||||
|
- 根因:两条线推同一个 inspiration-collector 仓库撞车(WorkBuddy推文章 vs cron推日报)
|
||||||
|
- 修复:`run_daily_digest.sh` 增加 `git pull --rebase` before push
|
||||||
|
- 以前没出过是因为以前推文顺序在日报之后
|
||||||
|
|
||||||
|
### 阅读日报 24h 滚动窗口修复
|
||||||
|
- 问题:`daily_report_ai.py` 的 `load_today_data()` 严格按日历日过滤,晚间阅读漏入次日间隙
|
||||||
|
- 修复:改为 `since_dt = now - timedelta(hours=24)` 时间戳比较
|
||||||
|
- 经验:任何"每日"定时任务,滚动窗口比日历日更鲁棒
|
||||||
|
|
||||||
|
### 三层文档已同步
|
||||||
|
- 项目级:weread-notes Gitea (commit 2508746)
|
||||||
|
- 宏观:server-ops DECISION_LOG + daily
|
||||||
|
- 本地:Claw MEMORY.md 铁律
|
||||||
Reference in New Issue
Block a user