习题类学科辅导小程序生成框架
输入:任意学科的题库数据(每题含题干/选项/答案/解析,可选章节·知识点·年份·题型标注)。
产出:可上传微信商店的完整小程序 zip + 评测报告 + 上架材料。
核心纪律:主包 ≤2MB、整包 ≤20MB、tabBar 页必须在主包、合规三件套缺一不可、一切改动用断言评测兜底、内容免责声明必备。
功能框架(默认模块,按需取舍)
| 模块 | 说明 | 页面 |
|---|---|---|
| 首页 | 主视觉(学科名+标语)、数据亮点、快捷入口、每日学习建议 | 主包 tabBar |
| 练习模式 | 按 章节/知识点/题型/年份 四维筛选;支持顺序/随机/分层抽样 | 主包壳页→分包完整页 |
| 模考模式 | 整卷限时;分值表可配置(题型→分值,按目标考试自定义);交卷出得分+薄弱点 Top5 | 主包壳页→分包完整页 |
| 错题本 | 错题自动入本;艾宾浩斯间隔复习(stage 分级 + next_review_at) | 分包 |
| 笔记/收藏 | 收藏标记 + 学习笔记 | 主包 |
| 学情分析 | 作答记录聚合:正确率/章节分布/趋势 | 主包 |
| 我的 | 登录、学习数据、目标设置、合规入口、版本号、账号注销 | 主包 tabBar |
| 合规三页 | 用户协议/隐私政策/免责声明 | 主包 |
数据层设计(subject-agnostic)
题目 schema(统一字段,新增学科只换数据不换代码):
{
id: 'Y2025-A-1', // 唯一 id:来源/年份-题型-序号
year: 2025, no: 1, // 可选:年份与卷内题号
type: 'A', // 题型(单选/共用选项/多选…,按学科自定义)
chapter: '章节名', // 学科章节
knowledge: '知识点', // 细粒度知识点
stem: '题干', options: ['A…','B…'],
answer: 'C',
analysis: '【考点】…【解析】…【技巧】…' // 解析按【标记】分段渲染
}
- 两层拆分(完整数据 >500KB 时必须):主包
data/meta.js轻量索引(id/chapter/knowledge/type/year/stem 等渲染必需字段);分包bankpkg/data/完整题目按来源/年份分文件。 - 解析渲染:
splitAnalysis()按/(?=【[^】]+】)/前向切分为 [{label,body}],段首标签加粗着色;无标记保持单段;HTML 版需转义<>&。
工作流(按序执行)
1. 需求澄清
- 学科与题库:来源(自编/历年/模拟)、题量、题型与分值规则、章节/知识点结构。
- 是否需要登录与云同步(跨设备错题/学情)、目标用户。
- 产出页面清单与数据体积估算,判断分包方案(见 references/architecture.md)。
2. 架构搭建
- 主包:app.* + tabBar 页(首页/练习壳/模考壳/我的等)+ 轻量页 + meta 层 + utils + sitemap + project.config.json。
- 分包:重度页(练习/模考/错题/题库浏览)+ 完整数据层。
- 壳页转发:主包轻壳页
onLoad带参时navigateTo转发分包完整页,旧入口无感。 - require 规则:分包页引主包 utils 用
../../../utils/;主包不可 require 分包文件。详见 references/architecture.md。
3. 核心功能实现
- 练习:四维筛选 → 抽题(可分层抽样保证题型结构)→ 逐题作答 → 答案与解析分段展示。
- 模考:整卷组卷 → 倒计时 → 交卷按分值表评分 → 结果页(得分/题型与章节正确率/薄弱知识点 Top5/错题重练/再考一次)。
- 错题:交卷与练习答错时自动入本;复习队列按 stage 间隔(1/2/4/7/15 天)推进,答对晋级、答错归零。
- 学情:作答记录聚合正确率、章节分布、薄弱点、连续学习天数。
- 云同步(可选):批量 insert 作答、
in()查错题、RLS owner-only、失败不阻塞主流程。
4. 合规三件套(上架硬门槛)
- 三页注册进 app.json 并在「我的」页给入口 + 版本号(utils/version.js)。
- 账号注销(PIPL 要求):二次确认 → 删云端数据 → 清本地全部存储键 → 登出。
- 免责声明通用口径:"内容为整理/改编,非官方发布;仅供学习交流,不构成专业建议;错漏以官方权威来源为准"。
- 另备三份 HTML 版合规页供 mp 后台「隐私政策 URL」填写。详见 references/compliance-upload.md。
5. 评测体系(改动兜底)
- 三套起:①页面全量评测(mock wx/Page/App,逐页加载+模拟用户流);②专项评测(新功能针对性断言);③回归冒烟(核心链路:筛选→作答→交卷→错题入本)。
- 每套输出
PASS: N,全绿才算完成;WXML 做标签配对校验。见 references/testing.md,骨架在 assets/templates/test_harness.js。
6. 打包与体积验收
node tmp/stage.js暂存必需文件 →node tmp/mkzip.js产 zip(UTF-8 文件名)。- project.config.json 加
packOptions.ignore;硬校验:主包 ≤2MB(留 ≥20% 余量)、整包 ≤20MB。见 references/packaging.md。
7. 上架材料与流程
- 材料:AppID(正式需注册+主体认证)、类目(教育/学习类)、头像(1024×1024 扁平矢量居中)、简介(≤120 字)、合规 HTML 地址。
- 流程:解压 zip → 微信开发者工具导入 → AppID → 上传 → mp 后台体验版 → 提交审核 → 备案。详见 references/compliance-upload.md。
高频坑(先读再动手)
- URL/dataset 传参是字符串,与数字字段比较必须
String()归一,否则筛选 0 条。 - tabBar 页只能
switchTab,普通页只能navigateTo,用错静默失败。 - 模块内局部
const api遮蔽模块级引用 → TDZ 报错。 - 数据迁分包后 require 路径全部失效,改完必须全量回归。
- 列表函数(年份/章节)注意排序方向,首页"最新"展示直接受影响。
- 密码哈希等安全逻辑不得只放前端;正式上线前下沉服务端(bcrypt/Argon2)。
- 题库内容版权:仅用自有整理/已授权内容,简介与声明避免"官方/押题/包过"表述。
- 脚本与模板改动必须实际运行验证——本 skill 模板首版实测即暴露三类经典 bug:
forEach(...) && rmdirSync()短路导致目录不删、恒真分支吞掉后续逻辑致页面零加载、return提前退出同层遍历致漏检。评测假绿(全来自 WXML 校验)靠"页面注册计数"自检兜底。
参考文档(按需加载)
- references/architecture.md — 主包/分包规则、meta 层切分、壳页转发、require 路径、体积判断。
- references/features-data.md — 功能模块实现要点与题库数据规范(分值表、抽题策略、艾宾浩斯参数)。
- references/compliance-upload.md — 合规三页要点、注销实现、上传与备案流程、审核避坑。
- references/testing.md — 评测体系:mock 策略、断言组织、专项/回归拆分、WXML 校验。
- references/packaging.md — stage/mkzip 原理、packOptions.ignore、体积预算校验。
脚本模板(复制到项目 tmp/ 后按注释改常量)
- assets/templates/stage.js — 暂存小程序必需文件。
- assets/templates/mkzip.js — Node 原生 zip(UTF-8 文件名,免外部工具)。
- assets/templates/test_harness.js — 页面评测骨架(mock wx/Page/App + 断言)。