- 新增 server/:Node + Express + SQLite + node-cron 实现登录、纪念日 CRUD 和定时订阅消息推送 - 新增 .gitea/workflows/deploy.yml:推送即触发群晖 Docker 部署,监听 15002 - utils/api.js:自动按 envVersion 切换本地/线上 BASE_URL - app.js 与 add-anniversary.js 移除 wx.cloud 调用,改走自建后端 - cloudfunctions/ 暂保留以便回滚 - 一并提交此前未入库的首页 / 设置页 / 日历 / 万年历等改造 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,308 @@
|
||||
# 生日提醒小程序 - 云开发部署检查清单
|
||||
|
||||
## ✅ 部署前检查
|
||||
|
||||
### 1. 环境准备
|
||||
- [ ] 已注册微信小程序账号
|
||||
- [ ] 已获取 AppID
|
||||
- [ ] 已开通云开发(环境ID:cloudbase-1gk3x0ia3a6b1f80)
|
||||
- [ ] 已创建订阅消息模板(模板ID:6J7Stt-lu7DKU6jblJ0nZGq_D81z5glnksf7qWfy5Yw)
|
||||
|
||||
### 2. 代码检查
|
||||
- [ ] app.js 已初始化云开发
|
||||
- [ ] app.js 中的环境ID正确
|
||||
- [ ] add-anniversary.js 已添加订阅授权代码
|
||||
- [ ] add-anniversary.js 中的模板ID正确
|
||||
|
||||
---
|
||||
|
||||
## 📤 上传云函数
|
||||
|
||||
### 1. login 云函数
|
||||
```
|
||||
□ 右键点击 cloudfunctions/login
|
||||
□ 选择 "上传并部署:云端安装依赖"
|
||||
□ 等待上传成功
|
||||
□ 在云开发控制台确认已上传
|
||||
```
|
||||
|
||||
### 2. syncAnniversary 云函数
|
||||
```
|
||||
□ 右键点击 cloudfunctions/syncAnniversary
|
||||
□ 选择 "上传并部署:云端安装依赖"
|
||||
□ 等待上传成功
|
||||
□ 在云开发控制台确认已上传
|
||||
```
|
||||
|
||||
### 3. sendReminder 云函数
|
||||
```
|
||||
□ 右键点击 cloudfunctions/sendReminder
|
||||
□ 选择 "上传并部署:云端安装依赖"
|
||||
□ 等待上传成功
|
||||
□ 在云开发控制台确认已上传
|
||||
□ 确认定时触发器已自动创建
|
||||
```
|
||||
|
||||
**验证**:
|
||||
云开发控制台 → 云函数,应该看到3个云函数:
|
||||
- ✅ login
|
||||
- ✅ syncAnniversary
|
||||
- ✅ sendReminder
|
||||
|
||||
---
|
||||
|
||||
## 🗄️ 创建数据库集合
|
||||
|
||||
### 1. anniversaries 集合
|
||||
```
|
||||
□ 进入云开发控制台 → 数据库
|
||||
□ 点击"添加集合"
|
||||
□ 集合名称:anniversaries
|
||||
□ 权限设置:仅创建者可读写
|
||||
□ 点击"确定"
|
||||
```
|
||||
|
||||
### 2. remind_logs 集合
|
||||
```
|
||||
□ 点击"添加集合"
|
||||
□ 集合名称:remind_logs
|
||||
□ 权限设置:仅创建者可读写
|
||||
□ 点击"确定"
|
||||
```
|
||||
|
||||
**验证**:
|
||||
云开发控制台 → 数据库,应该看到2个集合:
|
||||
- ✅ anniversaries
|
||||
- ✅ remind_logs
|
||||
|
||||
---
|
||||
|
||||
## ⏰ 配置定时触发器
|
||||
|
||||
### 检查触发器
|
||||
```
|
||||
□ 进入云开发控制台 → 云函数 → sendReminder
|
||||
□ 点击"触发器"标签
|
||||
□ 确认存在 dailyReminder 触发器
|
||||
□ 确认 Cron 表达式为:0 0 9 * * * *
|
||||
```
|
||||
|
||||
### 如果没有触发器,手动创建
|
||||
```
|
||||
□ 点击"新建触发器"
|
||||
□ 触发器名称:dailyReminder
|
||||
□ 触发周期:自定义
|
||||
□ Cron表达式:0 0 9 * * * *
|
||||
□ 点击"确定"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧪 功能测试
|
||||
|
||||
### 1. 测试 openid 获取
|
||||
```
|
||||
□ 打开小程序
|
||||
□ 查看控制台日志
|
||||
□ 应该看到:"获取openid成功: oABC..."
|
||||
□ 打开"存储" → 查看 Storage
|
||||
□ 应该看到 openid 已保存
|
||||
```
|
||||
|
||||
### 2. 测试订阅消息授权
|
||||
```
|
||||
□ 在真机上打开小程序(必须真机)
|
||||
□ 点击"添加纪念日"
|
||||
□ 填写表单,开启"是否提醒"
|
||||
□ 点击"保存"
|
||||
□ 应该弹出订阅消息授权弹窗
|
||||
□ 点击"允许"
|
||||
□ 应该显示"添加成功"
|
||||
```
|
||||
|
||||
### 3. 测试数据同步
|
||||
```
|
||||
□ 进入云开发控制台 → 数据库 → anniversaries
|
||||
□ 应该看到刚才添加的纪念日记录
|
||||
□ 记录中包含 _openid 字段
|
||||
□ 数据完整无误
|
||||
```
|
||||
|
||||
### 4. 测试云函数
|
||||
```
|
||||
□ 进入云开发控制台 → 云函数 → sendReminder
|
||||
□ 点击"测试"
|
||||
□ 输入参数:{}
|
||||
□ 点击"运行测试"
|
||||
□ 查看返回结果,应该包含:
|
||||
{
|
||||
"success": true,
|
||||
"total": 数字,
|
||||
"successCount": 数字,
|
||||
"failCount": 数字
|
||||
}
|
||||
```
|
||||
|
||||
### 5. 测试订阅消息发送
|
||||
|
||||
**方法1:等待定时触发**
|
||||
```
|
||||
□ 添加一个明天的生日,提前1天提醒
|
||||
□ 等到明天上午9:00
|
||||
□ 应该收到订阅消息推送
|
||||
```
|
||||
|
||||
**方法2:手动触发(推荐)**
|
||||
```
|
||||
□ 添加一个今天的生日
|
||||
□ 手动执行 sendReminder 云函数
|
||||
□ 应该立即收到订阅消息推送
|
||||
```
|
||||
|
||||
**方法3:修改定时器(快速测试)**
|
||||
```
|
||||
□ 临时修改 Cron 为:0 */1 * * * * *
|
||||
□ 等待1分钟
|
||||
□ 应该收到订阅消息推送
|
||||
□ 测试完成后改回:0 0 9 * * * *
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 验证清单
|
||||
|
||||
### 控制台日志验证
|
||||
```
|
||||
□ 看到:"云开发初始化成功"
|
||||
□ 看到:"获取openid成功"
|
||||
□ 看到:"订阅消息授权结果"
|
||||
□ 看到:"云端同步成功"
|
||||
```
|
||||
|
||||
### 数据库验证
|
||||
```
|
||||
□ anniversaries 集合有数据
|
||||
□ 数据包含 _openid 字段
|
||||
□ remindEnabled 为 true
|
||||
□ personName 字段正确
|
||||
```
|
||||
|
||||
### 提醒日志验证
|
||||
```
|
||||
□ remind_logs 集合有记录
|
||||
□ status 为 "success"
|
||||
□ sendDate 为今天
|
||||
□ personName 正确
|
||||
```
|
||||
|
||||
### 订阅消息验证
|
||||
```
|
||||
□ 收到了微信服务通知
|
||||
□ 消息内容正确
|
||||
□ 称呼、日期、提示都显示正确
|
||||
□ 点击消息能跳转到小程序
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🐛 故障排查
|
||||
|
||||
### 问题1:收不到订阅消息
|
||||
|
||||
**检查步骤**:
|
||||
```
|
||||
□ 确认用户已授权订阅
|
||||
□ 确认 openid 已保存
|
||||
□ 查看 sendReminder 云函数日志
|
||||
□ 查看 remind_logs 是否有 failed 记录
|
||||
□ 确认模板ID正确
|
||||
□ 确认云函数权限包含 subscribeMessage.send
|
||||
```
|
||||
|
||||
### 问题2:云函数执行失败
|
||||
|
||||
**检查步骤**:
|
||||
```
|
||||
□ 查看云函数日志,查找错误信息
|
||||
□ 确认依赖已安装(查看 node_modules)
|
||||
□ 确认 config.json 配置正确
|
||||
□ 尝试重新上传云函数
|
||||
```
|
||||
|
||||
### 问题3:数据没有同步到云端
|
||||
|
||||
**检查步骤**:
|
||||
```
|
||||
□ 确认 openid 已获取
|
||||
□ 查看控制台是否有错误
|
||||
□ 确认 syncAnniversary 云函数已上传
|
||||
□ 手动测试 syncAnniversary 云函数
|
||||
```
|
||||
|
||||
### 问题4:定时触发器不工作
|
||||
|
||||
**检查步骤**:
|
||||
```
|
||||
□ 确认触发器已创建
|
||||
□ 确认 Cron 表达式正确
|
||||
□ 查看云函数日志,确认有定时调用记录
|
||||
□ 尝试手动触发云函数验证功能
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 性能监控
|
||||
|
||||
### 每日检查(可选)
|
||||
```
|
||||
□ 查看云函数调用次数
|
||||
□ 查看订阅消息发送成功率
|
||||
□ 查看 remind_logs 记录
|
||||
□ 查看是否有异常日志
|
||||
```
|
||||
|
||||
### 每周检查(可选)
|
||||
```
|
||||
□ 导出数据库备份
|
||||
□ 清理过期的 remind_logs(可选)
|
||||
□ 查看云开发资源使用情况
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ 部署完成确认
|
||||
|
||||
全部完成以下项目即表示部署成功:
|
||||
|
||||
- [ ] 3个云函数全部上传成功
|
||||
- [ ] 2个数据库集合创建成功
|
||||
- [ ] 定时触发器配置成功
|
||||
- [ ] 能够获取用户 openid
|
||||
- [ ] 订阅消息授权正常弹出
|
||||
- [ ] 数据能够同步到云端
|
||||
- [ ] 手动执行云函数成功
|
||||
- [ ] 能够收到订阅消息推送
|
||||
- [ ] 提醒日志正常记录
|
||||
|
||||
---
|
||||
|
||||
## 🎉 恭喜部署成功!
|
||||
|
||||
你的生日提醒小程序现在具备:
|
||||
- ✅ 云端数据存储
|
||||
- ✅ 自动推送提醒
|
||||
- ✅ 多设备同步
|
||||
- ✅ 安全可靠
|
||||
|
||||
**开始使用吧!** 🎂
|
||||
|
||||
---
|
||||
|
||||
## 📞 需要帮助?
|
||||
|
||||
如果遇到问题:
|
||||
1. 查看《云开发部署指南.md》
|
||||
2. 查看《云开发功能说明.md》
|
||||
3. 查看云开发控制台的错误日志
|
||||
4. 联系技术支持
|
||||
|
||||
Reference in New Issue
Block a user