# 10 个 uniapp 小程序 · 计划与状态（内部工作文件）

位置：/www/wwwroot/ceshixcx/miniapps/。参考模板：/www/wwwroot/ceshixcx/（倒班日历）。
脚手架：`bash scaffold.sh <目录> <名称> <描述>`（package.json/vite.config/index.html/main.js/App.vue/manifest/ad.js 已生成，node_modules 软链主项目，禁止 npm install）。
编译验证：`bash build_all.sh h5` 与 `bash build_all.sh mp-weixin`（构建脚本已在模板 package.json）。
统一规范：Vue3 `<script setup>`；store 用 reactive+watch+uni.setStorageSync 防抖持久化（参考主项目 src/store/index.js）；rpx；纯逻辑放 src/utils/logic.js 且**不得 import uni**（node 可测，tests/*.test.mjs）；
变现统一走 src/utils/ad.js：showRewardedAd()（微信=流量主激励视频/H5=演示模式直接成功）+ unlockByAd()/isUnlocked()；README 必须写流量主接入与虚拟支付定价建议。

## 状态表（全部完成 ✅）
| # | 目录 | 名称 | 状态 |
|---|------|------|------|
| 01 | 01-habit-pulse | 习惯打卡器 | ✅ 双端编译过 + 逻辑测试 5 组（我写，代理静默死亡后重做） |
| 02 | 02-coin-ledger | 轻记账 | ✅ 双端编译过 + 逻辑测试 5 组（我） |
| 03 | 03-day-countdown | 倒数日 | ✅ 双端编译过 + 逻辑测试 5 组（我写，代理静默死亡后重做） |
| 04 | 04-decide-wheel | 决定转盘 | ✅ 双端编译过 + 逻辑测试 5 组（我） |
| 05 | 05-star-fortune | 星座运势 | ✅ 双端编译过 + 逻辑测试 6 组（agent） |
| 06 | 06-name-craft | 宝宝起名器 | ✅ 双端编译过 + 逻辑测试 7 组（我） |
| 07 | 07-math-sprint | 口算练习 | ✅ 双端编译过 + 逻辑测试 7 组（我） |
| 08 | 08-health-calc | 健康计算器 | ✅ 双端编译过 + 逻辑测试 6 组（我） |
| 09 | 09-one-line-diary | 一句话日记 | ✅ 双端编译过 + 逻辑测试 7 组（agent） |
| 10 | 10-flow-todo | 番茄钟待办 | ✅ 双端编译过 + 逻辑测试 5 组（我） |

合计：逻辑测试 58 组断言全绿；build:h5 10/10；build:mp-weixin 10/10。

## 踩坑记录（后续复用必读）
1. 脚手架必须拷 vite.config.js（含 @dcloudio/vite-plugin-uni），否则 vite 裸跑不识别 .vue
2. 纯逻辑文件用 .mjs + ESM export（named + default）；严禁 module.exports 守卫写法——vite ESM 构建导不出具名函数
3. node_modules 用软链共享主项目依赖：`ln -sfn /www/wwwroot/ceshixcx/node_modules <项目>/node_modules`，编译验证可行
4. node/npm 在 /home/muqing/.nvm/versions/node/v22.22.1/bin，部分 shell 不自动加载 PATH，先 export
5. 后台代理可能被配额静默杀死（无通知无产出），派发后要 ls 验证产出，必要时自己重做

## 各项目规格要点

### 01 habit-pulse 习惯打卡器（agent）
3页 tab：今日打卡(index) / 习惯管理(habits) / 统计(stats)。habits[{id,name,color,icon,created}]; checkins{'2026-10-04':{habitId:1}}; 连击streak计算+30天热力图；新增/删除/编辑习惯（名称+emoji+颜色）；stats页每习惯连续天数/完成率+总打卡数。变现：看完激励视频解锁「深色主题+数据导出文本」。logic：todayKey()/streak()/completionRate() 可 node 测。

### 02 coin-ledger 轻记账（我）
3页 tab：记一笔(index：金额数字键盘+分类9宫格emoji+备注+今日列表) / 统计(stats：月切换+分类条形占比+收支柱状) / 设置(about：数据导出/清空)。records[{id,amount±,cat,note,date}]；logic：monthSummary(records,y,m)→{income,expense,balance,byCat} 可 node 测。变现：解锁「多账本+导出CSV文本+无限分类」。

### 03 day-countdown 倒数日（agent）
2-3页：首页事件卡列表(倒数/已过天数,按最近排序)+新增编辑页(名称/日期/emoji/重复类型)。logic：daysBetween(target,now)整数天、卡片区分「还有N天/已N天/就是今天」。变现：解锁「高级卡片主题+订阅消息提醒占位」。

### 04 decide-wheel 决定转盘（我）
单页+设置弹层。预置转盘：今天吃什么(12项)/谁买单/周末去哪；自定义转盘(增删选项存本地)；CSS 转盘 conic-gradient 8-12扇区+旋转动画(ease-out 累计角度)，结果弹窗。logic：weightedPick?（均匀 pickIndex(n)）+ buildWheel(items)→颜色数组 可 node 测。变现：激励视频解锁「自定义转盘数量上限+历史记录」。

### 05 star-fortune 星座运势日历（agent）
2页：今日运势(12星座选择+当日综合/爱情/事业/财运星级+幸运色数字，确定性伪随机 seed=date+sign，标注「仅供娱乐」) + 月历视图(每日运势指数热力)。logic：seedRandom(dateStr,sign)确定性、fortuneOf()输出0-5星 可 node 测（同输入同输出断言）。变现：解锁「月度运势+克制作土味情话彩蛋」。

### 06 name-craft 宝宝起名器（我）
2页：生成页(输入姓氏+性别+出生年份可选) + 收藏页。词库 utils/bank.js 内置120+寓意汉字(字/拼音/寓意/五行标签)；logic：generateNames(surname,gender,seed)→组合双字名+去拗口(声调全同过滤)+评分(笔画简单度/常见度/谐音初筛)，node 断言：生成数量、无空、评分范围。变现：免费看前8个，解锁全部+寓意详解+收藏无限。页面标注「起名仅供娱乐参考」。

### 07 math-sprint 口算练习（我）
3页：首页(选年级1-3+题型加减/乘除/混合+开始) / 练习页(倒计时60s逐题作答+对错反馈+结算) / 错题本+历史。logic：genQuestion(grade,type)→{text,answer}，范围校验(1年级20内加减、2年级100内+乘法口诀、3年级千内+除法整除)，node 断言500题全部整除/范围正确。变现：解锁「3年级+乘除混合+导出练习卷文本」。

### 08 health-calc 健康计算器（我）
2页：计算器列表页(BMI/BMR/体脂围度法/每日饮水/理想体重，点开输入卡) + 历史记录页。logic：bmi(h,w)/bmr(h,w,age,sex)/bodyFat(腰围,体重,sex)/waterWl(w)/idealWeight(h) 全部公式可 node 测（已知值断言）。变现：解锁「历史记录+全部计算器」。

### 09 one-line-diary 一句话日记（agent）
3页：今日一页(每天一句话+心情emoji5选+自动带日期) / 时间轴(按月分组列表+搜索) / 年度回顾(总字数/天数/心情分布/随机回顾一条)。变现：解锁「主题+导出全文文本+心情统计图」。logic：monthGroup(entries)/searchEntries() 可 node 测。

### 10 flow-todo 番茄钟待办（我）
3页 tab：待办(清单+勾选+新增) / 专注(番茄钟25/5，页面内倒计时+关联待办+今日番茄数) / 统计(今日/本周完成数+专注时长)。logic：pomodoro分段时间机 tick(state)纯函数+todayStats 可 node 测。变现：解锁「专注音效占位+长任务+主题」。
