税法学习
Overview
把用户导入的税法内容转化为一个交互式学习网页,让用户通过「拆解 → 理解 → 测验 → 案例实操」的闭环把知识装进脑子。
与「披萨学习法」的区别:披萨学习法是对话式(分批发内容、发测验、用户回复答案);本 skill 是网页式——一次性生成完整的学习网页(含全部讲解、题目、案例),用户打开网页后自主学习、答题、看判分、练错题。
本 skill 复用「税法拆解」skill 的"法条 → 款 → 项"层级思想来切分知识块。
触发条件
- 用户说"税法学习""税法自学""用税法学习skill""学税法"
- 用户导入税法内容(政策文件、公告、讲义、课件、文章、转写稿)并希望系统掌握
- 用户要求"生成税法学习网页 / 学习课程 / 把内容做成学习工具"
核心能力
- 受众分层:学习前先问基础(小白 / 从业者 / 专家),据此调整讲解风格与题库
- 分解学习文本:按税法拆解框架把内容切成独立知识块,产出框架图 + 分块清单
- 客观题答题:单选 + 多选,即时判分 + 解析 + 标注法条,错题自动进错题本
- 应用案例:全部内容学完后的独立阶段,四种案例形式
- 学习报告:学完后汇总正确率、薄弱点、错题清单
工作流程
第一步:内容导入
- 询问用户要学习什么税法内容。
- 引导用户提供内容,支持格式:
- 直接粘贴文本
- 本地文件(PDF / Word / PPT / txt / md,用对应工具或 markitdown 提取文本)
- 网页链接(WebFetch 或 web-access skill 抓取全文)
- 音视频转写稿(用户提供的文字稿) - 内容解析完毕后,询问用户"内容是否已导入完整?",等用户确认后再进入下一步。
- 用户可能分多次发送,未确认前不要推进。
第二步:确认受众基础(强制,输出学习内容前必须先问)
用选择式询问用户基础,提供三个备选项:
请选择你的基础水平:
1. 小白(0 基础)
2. 从业者(通过学习实现进阶)
3. 专家(快速学习新税法或复习旧知识)
根据选择确定后续讲解风格与题库:
| 档位 | 讲解风格 | 题库 |
|---|---|---|
| 小白 | 多配比喻、细致讲解,文案可较长 | 标准题库 |
| 从业者 | 少比喻,可直接解析条文 | 标准题库(与小白同库,不分难度/数量) |
| 专家 | 无比喻、简短;只深入讲难点和新政 | 难点题库 + 新政知识点题库 |
> 专家档拆解范围仍覆盖全部内容,只是讲解时跳过简单条文、只深入讲难点和新政。
第三步:拆解内容
- 复用「税法拆解」skill 的"法条 → 款 → 项"层级思想,把导入内容切成独立知识块。
- 知识块粒度:一个块 = 一个可独立学习的知识点(某一条法条、某个概念、某个税目、某项规则)。
- 所有档位都拆全部内容(专家档也不例外)。
- 块命名:参考税法拆解的"街道命名"思路,用 2~8 字主题名(如"纳税人""视同销售""进项抵扣")。
- 产出:
- 知识框架图:SVG 树状图(从中心/顶部展开,主节点=主题,分支=知识块)
- 逐块学习清单:编号列出全部知识块标题 - 向用户展示框架图 + 分块清单,等用户确认后再生成完整网页(如块数明显不合理,可询问是否调整)。
第四步:生成讲解(按档位)
为每个知识块生成讲解内容,严格按第二步确定的档位风格执行:
- 小白:多配比喻、细致讲解,解释基础概念和术语,文案可长
- 从业者:少比喻,直接解析条文,讲清适用与口径
- 专家:跳过简单条文,只深入讲难点和新政,无比喻,语言简短
讲解要求:条文必须锚定(引用文号、条号);可配具体数字示例;语言专业准确。
第五步:生成客观题
为每个知识块生成该块对应的客观题:
- 题型:单选 + 多选
- 题量:每块 3~8 题(按该块内容量动态调整),整套内容出题上限 50 题
- 选项:每题 4 个选项(A/B/C/D)
- 单选:有且仅有一个正确答案;多选:至少两个正确答案,避免全选
- 题库按档位:小白/从业者用标准题库;专家只出"难点"和"新政"相关题,不出常规题
- 每题附带:解析(说明为什么对/错)+ 对应法条(文号、条号)
第六步:生成应用案例
全部知识块学完后推出的独立阶段,四种形式全部支持:
- AI 模拟案例:虚构主体(甲公司/乙公司)的场景
- 真实税案改编:用政策原文或真实案例改编成练习
- 计算题:算税负、申报额、抵免额等带数字的题
- 情境判断题:给业务场景,判断适用政策与处理方式
案例不分档(所有档位同一套),每题附参考答案 + 解析。
第七步:组装网页并交付
- 把以上内容组织成
LEARNING_DATAJSON(结构见references/data-schema.md)。 - 用脚本把 JSON 注入网页模板,生成最终单文件 HTML:
python scripts/build_page.py <data.json> -o <输出.html>
- 交付给用户:
- 本地单文件 HTML(可直接双击打开,手机可直接打开)
- 公网可访问链接(用「发布为应用」skill 或 workbuddy_sites_deploy 发布) - 告知用户:网页内逐块学习,学完一块做该块题,全部学完解锁案例,最后生成学习报告;进度和错题本自动保存在浏览器本地。
数据规范
LEARNING_DATA 的结构、字段含义、示例见 references/data-schema.md。生成 JSON 前务必先读该文件。
拆解框架
税法拆解的"法条 → 款 → 项"层级映射、税种分类表见 references/framework.md。拆解知识块时参考此框架。
视觉规范(颜色体系)
所有生成的网页、SVG 框架图、讲解内容中的强调色,统一使用「茶税庄」颜色体系,不得使用其他彩色(模板 CSS 已内置这些变量,内容侧只需保证 SVG 与 HTML 不夹带杂色)。
颜色表
| 用途 | 色值 |
|---|---|
| 品牌主色(按钮、进度条、导航激活、卡片标题强调、框架图主节点/连线) | #376b6d |
| 主色深变体(主按钮 hover、深色强调) | #295052 |
| 主色浅底(讲解框、统计卡、框架图子节点填充) | #eaf1f1 |
| 正文文字 | #3f3f3f |
| 页面背景 | #f5f7f7 |
| 受众徽章·小白 | #4a7f81 |
| 受众徽章·从业者 | #376b6d |
| 受众徽章·专家 | #23494b |
规则
- SVG 框架图:主节点填充
#376b6d(文字#ffffff),子节点填充#eaf1f1、描边#376b6d、文字#3f3f3f,连线#376b6d。禁止其他彩色。 - 讲解内容(explanation / scenario 的 HTML):需要强调的字词用
<strong>(模板已用主色深变体呈现),不要在 HTML 里内联其他彩色。 - 判分语义色:答对绿、答错红由模板固定(
--correct/--wrong),与品牌色无关,生成内容时不涉及。 - 受众徽章三色由模板按档位自动套用(茶税庄色系明度三档),生成数据时无需写入颜色。
注意事项
- 必须先问受众基础再输出学习内容,不得跳过。
- 拆解范围覆盖全部内容,专家档仅在讲解时跳过简单条文。
- 每块题量 3~8 题,整套上限 50 题,超出需精简。
- 选项固定 4 个;多选至少 2 个正确且避免全选。
- 讲解和题目必须锚定法条(文号 + 条号),不编造条文。
- 案例不分档,四种形式尽量都覆盖(内容少时可只出 2~3 种)。
- 交付网页默认本地单文件 + 公网链接,手机可直接打开。
- 生成 HTML 用 build_page.py 注入模板,不要手写完整 HTML 骨架,避免结构漂移。
- 内容量大时(约 10 个知识块以上),LEARNING_DATA 的 JSON 体积会超过单次文件写入的稳定长度,容易出现写到一半被截断、JSON 不完整的情况。建议拆成多个片段文件(head.json + part1.json…partN.json)分批写入,再用脚本合并成完整 data.json,最后交给 build_page.py。
- 错题本的语义(模板已实现,勿回退):题目一旦答错就进入错题本并长期保留,重做答对后不自动消失,只标记为「已订正」并归入「已订正」分组;错题本分「未订正 / 已订正」两组展示,每组每条都有「重做本题」,另有「移出错题本」单题按钮和「清空已订正」批量按钮——移出只能由用户手动触发。相关状态字段:
wrongKeys(长期在册)、wrongSnap(首次错选,用于回溯)、fixed(是否已订正)。改动模板或重建网页后,务必回归测试:node scripts/test_wrongbook.js <学习网页.html>(需 jsdom,31 项断言,覆盖入本、分组、重做、回落、单题移出、批量清空、解锁不被误锁、旧版存储兼容)。 - 模板中知识块解锁以
completedBlocks(而非judged)判定,避免重做错题清掉judged时把已解锁的后续块重新锁上。