3965e542fc
部署到群晖 / deploy (push) Failing after 6m22s
- 新增 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>
309 lines
6.4 KiB
Markdown
309 lines
6.4 KiB
Markdown
# 生日提醒小程序 - 云开发部署检查清单
|
||
|
||
## ✅ 部署前检查
|
||
|
||
### 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. 联系技术支持
|
||
|