学习计划文档规范化(study-plan-normalizer)
用途
把"叙事型"学习计划 Markdown 转换为「每日日志」App 最易解析的标准表格,
解决 App 解析器对非表格文档识别差的问题(日期无法归位、分类串错、标题过长)。
支持的输入结构
## ▶ 第一周 · 地基(线性方程组 + 矩阵代数) ← 章节 → 表格分类
### ☐ D1 · 2026-08-05 周三 · 第1章 1.1–1.2 线性方程组与行化简 ← 一天开始
- 📖 读:方程组↔增广矩阵;行初等变换;... ← 子任务(每行一条)
- ✍️ 练:手算 3 道不同情形... ← 子任务
- ☐ 完成打卡 ← 完成打卡(保留为任务)
### 🔴 2026-08-09 周日 · 缓冲(W1 补漏 + 周测) ← 缓冲日(学习日=W1缓冲)
用法
python "C:\Users\MECHREVO\.workbuddy\skills\study-plan-normalizer\normalize_plan.py" <输入.md>
# 输出:同目录 <输入名>-normalized.md
# 默认每天一条 App 任务(标题=每日主题,子任务合并进备注)
# 展开模式(每个子任务独立成一条 App 任务,旧行为):
python "C:\Users\MECHREVO\.workbuddy\skills\study-plan-normalizer\normalize_plan.py" <输入.md> --detail
输出格式
# 线性代数-每日执行表(规范化版)
> 默认每天一条:App 任务标题 = 每日主题,子任务读/练/SLAM 合并进备注,验收标准 = 自测题。
## 第一周 · 地基(线性方程组 + 矩阵代数)
| 日期(2026) | 学习日 | 模块 | 当日主题 | 验收标准 |
|---|---|---|---|---|
| 08-05 周三 | D1 | 第一周 · 地基 | **第1章 1.1–1.2 线性方程组与行化简**;📖 读:方程组↔增广矩阵;行初等变换;...;✍️ 练:...;🔗 SLAM:... | Ax=b 无解时,用 pivot 位置怎么一句话判断? |
- 模块列 = 章节/阶段分类(App 识别为 Task.theme)
- 当日主题列 = 首个
**加粗**部分作为 App 任务标题,其余读/练/SLAM 子任务进备注 - 验收标准列 = 自测题内容,也会追加进备注
- 计划名(Task.plan)由 App 从文档主标题自动提取(如 "线性代数"、"视觉SLAM十四讲")
关键规则(与 App 解析器对齐)
- 日期列:
MM-DD 周X(AppparseTableCellDate直接解析,年份取表头 2026) - 「模块」列:章节标题(去掉括号内补充说明后的简短分类,如"第一周 · 地基")
- 主题列:首个加粗块作为 App 任务标题;默认取清洗后的每日主题(去掉"第X-Y周·"计划前缀),其余子任务合并进备注
- 学习日:D1~D24;已完成日(
### ✓ Dn前缀)标为Dn(已完成);缓冲日从主题括号提取 W 编号 →W1缓冲,无 W 编号则为缓冲 - 章节:每个
##章节一个独立表格 → App 自动取章节标题为分类 - 无日期章节(如"配合闸门"说明、引用块、分隔线)自动跳过,不会混入任务
- 无周几的过期缓冲日(如
### 🟡 2026-08-09(已过期))不生成任务,其列表内容也不会混入上一天(未识别的###标题自动结束当前学习日) - 需要旧行为(每个子任务一条)时,加
--detail参数
验证
规范化后文件可直接在 App「导入」页选择并导入,预览应显示 ~100+ 条任务,
每条归位到真实日期、分类为章节名。若输出异常,检查原文档标题格式是否偏离上述结构。
安全说明
纯本地脚本:只读输入文件、只写输出新文件,无网络、无删除、无危险操作。