这是一个基于 UniApp 和腾讯云开发(CloudBase)开发的录音打卡小程序,项目最初来源于 CloudBase 官方 uniapp 小程序 demo,现已改造成围绕“录音打卡 / 录音笔记”场景的业务项目。
- 目标:微信小程序为主,主要是验证腾讯CloudBase一些基础能力
- 核心能力:录音打卡、录音上传、录音列表、详情查看、音频播放
- 后端能力:CloudBase 鉴权、云函数、文档型数据库、云存储
src/pages/index/index.vue:今日打卡首页src/pages/recording/recording.vue:录制中src/pages/complete/complete.vue:录制完成src/pages/list/list.vue:我的录音列表src/pages/detail/detail.vue:录音详情src/pages/player/player.vue:音频播放src/pages/profile/profile.vue:个人中心src/pages/login/login.vue:登录页面
createNotebookRecord:创建录音记录updateNotebookUpload:更新上传结果并触发转码getNotebookList:获取当前用户录音列表convertAudioToMp3:处理音频转码
- CloudBase 初始化集中在
src/utils/cloudbase.ts - 前端环境配置通过
.env.local读取,CloudBase Framework 配置通过cloudbaserc.template.json生成本地cloudbaserc.json - 项目保留了原始 CloudBase demo 的工具链、规则文件和约束,但后续文档、提示词、Agent 描述应统一使用“录音打卡小程序”语义,而不是泛化 demo / AI 项目语义
为了便于其他开发者直接复用,本仓库文档与公开配置文件统一使用占位符环境 ID:
- CloudBase 环境 ID:
<your-cloudbase-env-id>
克隆项目后,推荐先复制环境变量模板:
cp .env.example .env.local然后至少需要检查并替换以下位置:
.env.localcloudbaserc.template.json(通常无需直接改)
如果你要接入自己的 CloudBase 环境,请将上述占位符改成你自己的环境 ID。
当前前端默认从 import.meta.env.VITE_CLOUDBASE_ENV_ID 读取环境 ID,因此开源使用时优先修改 .env.local;通常不需要再改 src/utils/cloudbase.ts。
修改完 .env.local 后,再执行:
npm run generate:cloudbaserc这会基于 cloudbaserc.template.json 生成本地使用的 cloudbaserc.json。该文件已加入 .gitignore,不会进入版本管理。
个人信息页中的“云端空间配额”由云函数 getUserProfile 实时统计,统计口径为当前用户目录下的录音与转码产物总占用。该能力依赖云函数环境变量。
在 CloudBase 控制台中进入云函数 getUserProfile,添加以下环境变量:
CLOUDBASE_SECRETID:腾讯云 API 密钥中的SecretIdCLOUDBASE_SECRETKEY:腾讯云 API 密钥中的SecretKeyCLOUDBASE_ENV_ID:CloudBase 环境 ID,例如<your-cloudbase-env-id>
- 打开腾讯云 API 密钥控制台:https://console.cloud.tencent.com/cam/capi
- 在“API 密钥管理”中查看或新建一对密钥
- 复制得到:
SecretIdSecretKey
建议为本项目单独创建一对密钥,不要复用其他生产系统正在使用的密钥。
- 打开 CloudBase 控制台云函数页:
https://tcb.cloud.tencent.com/dev?envId=<your-cloudbase-env-id>#/scf - 进入函数
getUserProfile - 打开“函数配置”或“环境变量”
- 新增并保存:
CLOUDBASE_SECRETIDCLOUDBASE_SECRETKEYCLOUDBASE_ENV_ID
- 重新部署
getUserProfile云函数代码
- 这些密钥只能配置在云函数环境变量中,不能放到前端代码里
- 如果密钥曾在聊天记录、截图或公开仓库中暴露,请立即删除并重建
- 推荐在验证完成后定期轮换密钥
npm install
npm run dev:mp-weixin
npm run build:mp-weixin
npm run type-checkMIT License