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>
6.4 KiB
6.4 KiB
生日提醒小程序 - 云开发部署检查清单
✅ 部署前检查
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
- 订阅消息授权正常弹出
- 数据能够同步到云端
- 手动执行云函数成功
- 能够收到订阅消息推送
- 提醒日志正常记录
🎉 恭喜部署成功!
你的生日提醒小程序现在具备:
- ✅ 云端数据存储
- ✅ 自动推送提醒
- ✅ 多设备同步
- ✅ 安全可靠
开始使用吧! 🎂
📞 需要帮助?
如果遇到问题:
- 查看《云开发部署指南.md》
- 查看《云开发功能说明.md》
- 查看云开发控制台的错误日志
- 联系技术支持