Files
wx_pbzc/.workbuddy/launch-readiness-review.md
T
lc 187c426243 chore: 上线前优化 — 清理调试日志/启用组件按需注入/补全组件声明
- 移除全项目 34 处调试 console.* 输出
- project.config.json: minified true、uploadWithSourceMap false、启用 lazyCodeLoading(requiredComponents 组件按需注入)
- pages/records/records.json 补全 ui-skeleton 组件声明(此前漏声明,WXML 已使用)
- 删除根目录残留 preview-buttons.html
2026-08-04 14:05:16 +08:00

73 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 平板支撑训练小程序 · 上线前审查报告
日期:2026-08-04 | 审查范围:上线就绪(合规 / 包体 / 性能 / 云函数部署)
## 一、总体结论
代码质量高,主包仅 **540KB**(远低于 2MB 上限),网络请求**全部走云开发 `wx.cloud.*`**(免 request 合法域名白名单配置),隐私合规链路已在上架期验证可行。
**有 1 个上线阻断项(云函数部署)+ 1 个部署前置(tts 环境变量)必须处理**,其余为建议优化项。未发现功能性 bug、无合规硬伤。
---
## 二、🔴 阻断项(上线前必须完成)
### 1. 云函数必须重新部署(最关键)
> 注意:**git 提交 ≠ 云函数部署**。云函数代码要生效,必须在微信开发者工具里「上传并部署」。
| 云函数 | 近期状态 | 动作 |
|---|---|---|
| `leaderboard` | **本次 b52db87 改了 17 行**(含 totalDays / 全榜勋章逻辑) | **必须重新部署**,否则线上排行榜跑旧逻辑 |
| `tts` | 8-03 改(循环训练语音播报) | 需部署 |
| `getOpenid` | 基础服务,排行榜定位 + 云同步依赖 | 确认已部署 |
| `admin-dedupe` | 一次性清理工具(文档注明部署一次后删除) | 可选 |
部署方式:微信开发者工具 → 右键云函数 → **「上传并部署:云端安装依赖」**(项目无本地 node_modules,需云端 `npm install`)。`tts` 依赖 `tencentcloud-sdk-nodejs` 体积较大,云端安装需等待。
### 2. tts 云函数环境变量必须配好(部署前置)
`cloudfunctions/tts/index.js` 从环境变量读取密钥:
```
TTS_SECRET_ID / TTS_SECRET_KEY / TTS_REGION
```
若未配置,语音合成直接失败(循环训练 / 语音播报失效)。
确认路径:云开发控制台 → `tts` 云函数 → 环境变量;并确认腾讯云 **TTS 服务已开通、密钥有效**
---
## 三、🟡 建议项(不阻断,建议上线前做)
1. **清理调试 `console.log`**`utils/cloud.js` 14 处 + `storage.js` / `voice.js` / `app.js` / `leaderboard` 云函数等。上线应移除或降级(减小包体、避免泄露内部状态、减少日志噪声)。微信审核不强制。
2. **`project.config.json` 上线开关**`minified: false``true``uploadWithSourceMap: true``false`。防源码泄露、减小包体(开发者工具上传界面也有独立勾选,会覆盖此项)。
3. **隐私授权自定义弹窗**:代码无 `wx.onNeedPrivacyAuthorize` 处理。当前能跑(微信自动弹系统默认隐私窗,且后台隐私协议已配、已上架运行一月),但建议加自定义弹窗以更合规、体验更佳。**非阻断**。
4. **全局错误上报**:无 `wx.onError` / `onUnhandledRejection` / `onPageNotFound`。建议加全局异常捕获 + 轻量上报(云监控 / 自建),便于线上排查崩溃。
5. **清理残留文件**`cloudfunctions/shared/`(空死目录,重构遗留;`leaderboard` 实际引用 `./data`,不受影响)、根目录 `preview-buttons.html``.claude/` / `.codegraph/`(工具目录)。小程序只打包组成文件,不影响包体,但建议加 `packOptions.ignore` 或删除以免误传。
6. **确认生产 env**`utils/cloud.js` 硬编码 `ENV_ID=cloudbase-d1g56kl2q8f4f7d8a`,确认是生产环境(通常单一 env 即可)。
---
## 四、✅ 已核实合规 / 无风险项
- 主包 540KB << 2MB,无需分包
- 无硬编码 `http://`,全走 `wx.cloud`(免 request 合法域名配置)
- 隐私接口仅 `chooseAvatar`button `open-type`,后台已声明「用户信息」)
- `app.json` 无需 `requiredPrivateInfos``chooseAvatar` 不在此列)
- `sitemap.json` 标准 allow
- `tabBar` custom + `custom-tab-bar` 目录齐全
- 云函数依赖声明齐全(`wx-server-sdk` / `tencentcloud-sdk-nodejs`
- 内容安全风险低(昵称 / 头像均为用户自身数据,无实时 UGC 发布链路)
---
## 五、上线 Checklist
- [ ] 部署 `leaderboard` / `tts` / `getOpenid` 云函数(云端安装依赖)
- [ ] 配好 `tts` 环境变量并验证 TTS 可用
- [ ] 开发者工具「上传」时勾选 **压缩** + **不上传 sourcemap**
- [ ] 体验版真机回归:训练 → 记录 → 排行榜(含空榜 / 1-2 名虚拟台)→ 设置改头像
- [ ] 确认 MP 后台类目(运动健身类)与隐私协议有效
- [ ] 提交审核,准备测试说明(功能无需登录,排行榜可空榜展示)