feat(disable): 屏蔽视频播放功能(个人主体限制)
- 屏蔽 useFileOperation 中的视频跳转逻辑 - 注释 app.config.js 中的 video-player 路由 - 新增功能屏蔽文档便于后续恢复 原因:个人主体小程序不支持视频服务类目 审核反馈:你的小程序涉及视频服务,属个人主体小程序未开放类目 恢复方法:详见 docs/disabled-features/video-player.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Showing
6 changed files
with
293 additions
and
16 deletions
| ... | @@ -8,6 +8,7 @@ | ... | @@ -8,6 +8,7 @@ |
| 8 | 8 | ||
| 9 | ## 📚 项目文档索引 | 9 | ## 📚 项目文档索引 |
| 10 | 10 | ||
| 11 | +- **[功能屏蔽说明](docs/disabled-features/README.md)** - 因个人主体限制而屏蔽的功能及恢复方法 | ||
| 11 | - **[经验教训总结](docs/lessons-learned.md)** - Taro 项目开发经验、最佳实践和常见陷阱 | 12 | - **[经验教训总结](docs/lessons-learned.md)** - Taro 项目开发经验、最佳实践和常见陷阱 |
| 12 | - **[接口联调日志](docs/api-integration-log.md)** - API 集成状态和联调记录 | 13 | - **[接口联调日志](docs/api-integration-log.md)** - API 集成状态和联调记录 |
| 13 | - **[变更日志](docs/CHANGELOG.md)** - 项目版本更新历史 | 14 | - **[变更日志](docs/CHANGELOG.md)** - 项目版本更新历史 | ... | ... |
docs/disabled-features/README.md
0 → 100644
| 1 | +# 功能屏蔽说明总览 | ||
| 2 | + | ||
| 3 | +> 本目录记录了因**个人主体小程序限制**而屏蔽的功能及其恢复方法。 | ||
| 4 | + | ||
| 5 | +--- | ||
| 6 | + | ||
| 7 | +## 📋 目录 | ||
| 8 | + | ||
| 9 | +- [视频播放功能](./video-player.md) - 个人主体不支持视频服务类目 | ||
| 10 | + | ||
| 11 | +--- | ||
| 12 | + | ||
| 13 | +## 🚫 为什么需要屏蔽功能? | ||
| 14 | + | ||
| 15 | +微信小程序**个人主体**有以下限制: | ||
| 16 | + | ||
| 17 | +| 类别 | 状态 | 说明 | | ||
| 18 | +|------|------|------| | ||
| 19 | +| ❌ 视频服务 | 禁止 | 需要企业主体 | | ||
| 20 | +| ❌ 微信支付 | 禁止 | 需要企业认证 | | ||
| 21 | +| ❌ 直播功能 | 禁止 | 需要企业主体 | | ||
| 22 | +| ❌ 虚拟支付/会员 | 禁止 | 需要企业主体 | | ||
| 23 | +| ❌ 新闻资讯 | 禁止 | 需要前置审批 | | ||
| 24 | +| ❌ 金融类 | 禁止 | 需要特殊资质 | | ||
| 25 | + | ||
| 26 | +本项目因**视频服务**审核未通过,已屏蔽相关功能。 | ||
| 27 | + | ||
| 28 | +--- | ||
| 29 | + | ||
| 30 | +## 🔄 如何恢复功能? | ||
| 31 | + | ||
| 32 | +当小程序升级为**企业主体**后,可以恢复被屏蔽的功能: | ||
| 33 | + | ||
| 34 | +### 恢复流程 | ||
| 35 | + | ||
| 36 | +1. **申请企业主体小程序** | ||
| 37 | + - 注册企业类型小程序 | ||
| 38 | + - 完成微信认证 | ||
| 39 | + - 迁移或重新提交审核 | ||
| 40 | + | ||
| 41 | +2. **按功能文档恢复代码** | ||
| 42 | + - 参考各功能文档中的"恢复方法"章节 | ||
| 43 | + - 取消相关代码的注释 | ||
| 44 | + - 恢复路由配置 | ||
| 45 | + | ||
| 46 | +3. **测试功能** | ||
| 47 | + - 开发环境测试 | ||
| 48 | + - 体验版测试 | ||
| 49 | + - 提交审核 | ||
| 50 | + | ||
| 51 | +### 快速恢复检查清单 | ||
| 52 | + | ||
| 53 | +- [ ] 小程序已升级为企业主体 | ||
| 54 | +- [ ] 微信认证已完成 | ||
| 55 | +- [ ] 相关类目资质已申请 | ||
| 56 | +- [ ] 代码已按文档恢复 | ||
| 57 | +- [ ] 功能测试通过 | ||
| 58 | +- [ ] 重新提交审核 | ||
| 59 | + | ||
| 60 | +--- | ||
| 61 | + | ||
| 62 | +## 📂 当前屏蔽功能 | ||
| 63 | + | ||
| 64 | +| 功能 | 屏蔽日期 | 恢复文档 | 优先级 | | ||
| 65 | +|------|---------|---------|--------| | ||
| 66 | +| 视频播放 | 2026-03-13 | [video-player.md](./video-player.md) | 高 | | ||
| 67 | + | ||
| 68 | +--- | ||
| 69 | + | ||
| 70 | +## 💡 常见问题 | ||
| 71 | + | ||
| 72 | +### Q1: 为什么不直接删除代码? | ||
| 73 | + | ||
| 74 | +**A**: 保留代码便于后续恢复。升级为企业主体后,只需要取消注释即可快速恢复功能,无需重新编写。 | ||
| 75 | + | ||
| 76 | +### Q2: 屏蔽的代码会影响小程序性能吗? | ||
| 77 | + | ||
| 78 | +**A**: 不会。屏蔽的代码只是不会被调用,不会增加包体积或运行时开销。 | ||
| 79 | + | ||
| 80 | +### Q3: 如何升级为企业主体? | ||
| 81 | + | ||
| 82 | +**A**: 需要准备以下材料: | ||
| 83 | +- 营业执照 | ||
| 84 | +- 对公账户信息 | ||
| 85 | +- 企业法定代表人身份证 | ||
| 86 | +- 管理员信息 | ||
| 87 | + | ||
| 88 | +具体流程参考:[微信官方文档](https://developers.weixin.qq.com/miniprogram/product/) | ||
| 89 | + | ||
| 90 | +--- | ||
| 91 | + | ||
| 92 | +## 🔗 相关资源 | ||
| 93 | + | ||
| 94 | +- [微信小程序服务类目](https://developers.weixin.qq.com/minigame/product/material/) | ||
| 95 | +- [小程序注册与审核](https://developers.weixin.qq.com/miniprogram/product/) | ||
| 96 | +- [项目 CLAUDE.md](../../CLAUDE.md) | ||
| 97 | + | ||
| 98 | +--- | ||
| 99 | + | ||
| 100 | +## 📅 变更日志 | ||
| 101 | + | ||
| 102 | +| 日期 | 功能 | 操作 | | ||
| 103 | +|------|------|------| | ||
| 104 | +| 2026-03-13 | 视频播放 | 屏蔽 | |
docs/disabled-features/video-player.md
0 → 100644
| 1 | +# 视频播放功能屏蔽说明 | ||
| 2 | + | ||
| 3 | +> **屏蔽日期**: 2026-03-13 | ||
| 4 | +> **屏蔽原因**: 个人主体小程序不支持视频服务类目 | ||
| 5 | +> **审核反馈**: "你的小程序涉及视频服务,属个人主体小程序未开放类目" | ||
| 6 | + | ||
| 7 | +--- | ||
| 8 | + | ||
| 9 | +## 📋 功能概述 | ||
| 10 | + | ||
| 11 | +**功能名称**: 视频播放器 | ||
| 12 | +**技术实现**: 原生 `video` 组件 + 独立播放页面 | ||
| 13 | +**触发场景**: 用户点击资料库中的视频文件 | ||
| 14 | + | ||
| 15 | +--- | ||
| 16 | + | ||
| 17 | +## 🔍 原实现方式 | ||
| 18 | + | ||
| 19 | +### 1. 视频播放页面 | ||
| 20 | +**文件**: `src/pages/video-player/index.vue` | ||
| 21 | + | ||
| 22 | +- 使用 Taro `video` 组件 | ||
| 23 | +- 支持全屏播放、进度控制、音量控制 | ||
| 24 | +- 支持的格式:MP4、M4V、MOV | ||
| 25 | + | ||
| 26 | +### 2. 跳转逻辑 | ||
| 27 | +**文件**: `src/composables/useFileOperation.js:378-393` | ||
| 28 | + | ||
| 29 | +```javascript | ||
| 30 | +// 原代码(已屏蔽) | ||
| 31 | +if (isVideoFile(item)) { | ||
| 32 | + await Taro.navigateTo({ | ||
| 33 | + url: `/pages/video-player/index?url=${encodeURIComponent(item.downloadUrl)}&title=${encodeURIComponent(item.title || item.fileName)}` | ||
| 34 | + }) | ||
| 35 | + return true | ||
| 36 | +} | ||
| 37 | +``` | ||
| 38 | + | ||
| 39 | +### 3. 路由配置 | ||
| 40 | +**文件**: `src/app.config.js` | ||
| 41 | + | ||
| 42 | +```javascript | ||
| 43 | +// 原配置(已注释) | ||
| 44 | +const pages = [ | ||
| 45 | + // ... | ||
| 46 | + 'pages/video-player/index', | ||
| 47 | + // ... | ||
| 48 | +] | ||
| 49 | +``` | ||
| 50 | + | ||
| 51 | +--- | ||
| 52 | + | ||
| 53 | +## 🚫 屏蔽后的行为 | ||
| 54 | + | ||
| 55 | +### 当前实现 | ||
| 56 | +**文件**: `src/composables/useFileOperation.js:378-394` | ||
| 57 | + | ||
| 58 | +```javascript | ||
| 59 | +if (isVideoFile(item)) { | ||
| 60 | + // 视频文件:已屏蔽跳转功能(个人主体小程序限制) | ||
| 61 | + console.log('[文件操作] 视频文件预览已屏蔽(个人主体限制):', item.fileName) | ||
| 62 | + showToast({ | ||
| 63 | + title: '小程序暂不支持视频预览', | ||
| 64 | + icon: 'none', | ||
| 65 | + duration: 2000 | ||
| 66 | + }) | ||
| 67 | + return false | ||
| 68 | +} | ||
| 69 | +``` | ||
| 70 | + | ||
| 71 | +### 用户体验 | ||
| 72 | +- 点击视频文件时,显示提示:"小程序暂不支持视频预览" | ||
| 73 | +- 不会跳转到播放页面 | ||
| 74 | +- 不会触发视频播放 | ||
| 75 | + | ||
| 76 | +--- | ||
| 77 | + | ||
| 78 | +## ✅ 恢复方法(企业主体) | ||
| 79 | + | ||
| 80 | +当小程序升级为企业主体后,按以下步骤恢复功能: | ||
| 81 | + | ||
| 82 | +### 步骤 1: 恢复路由配置 | ||
| 83 | +**文件**: `src/app.config.js` | ||
| 84 | + | ||
| 85 | +```javascript | ||
| 86 | +const pages = [ | ||
| 87 | + // ... | ||
| 88 | + 'pages/message/index', | ||
| 89 | + 'pages/message-detail/index', | ||
| 90 | + 'pages/video-player/index', // ✅ 取消注释 | ||
| 91 | + 'pages/article-detail/index', | ||
| 92 | +] | ||
| 93 | +``` | ||
| 94 | + | ||
| 95 | +### 步骤 2: 恢复跳转逻辑 | ||
| 96 | +**文件**: `src/composables/useFileOperation.js` | ||
| 97 | + | ||
| 98 | +```javascript | ||
| 99 | +// 判断是否为视频文件(优先使用 extension 字段) | ||
| 100 | +if (isVideoFile(item)) { | ||
| 101 | + // 视频文件:跳转到视频播放页面 | ||
| 102 | + try { | ||
| 103 | + await Taro.navigateTo({ | ||
| 104 | + url: `/pages/video-player/index?url=${encodeURIComponent(item.downloadUrl)}&title=${encodeURIComponent(item.title || item.fileName)}` | ||
| 105 | + }) | ||
| 106 | + return true | ||
| 107 | + } catch (error) { | ||
| 108 | + console.error('[文件操作] 视频打开失败:', error) | ||
| 109 | + showToast({ | ||
| 110 | + title: '视频打开失败', | ||
| 111 | + icon: 'none', | ||
| 112 | + duration: 2000 | ||
| 113 | + }) | ||
| 114 | + return false | ||
| 115 | + } | ||
| 116 | +} | ||
| 117 | +``` | ||
| 118 | + | ||
| 119 | +### 步骤 3: 删除屏蔽提示 | ||
| 120 | +删除 `useFileOperation.js` 中的屏蔽提示代码: | ||
| 121 | +```javascript | ||
| 122 | +// 删除以下内容 | ||
| 123 | +showToast({ | ||
| 124 | + title: '小程序暂不支持视频预览', | ||
| 125 | + icon: 'none', | ||
| 126 | + duration: 2000 | ||
| 127 | +}) | ||
| 128 | +``` | ||
| 129 | + | ||
| 130 | +### 步骤 4: 重新编译 | ||
| 131 | +```bash | ||
| 132 | +pnpm build:weapp | ||
| 133 | +``` | ||
| 134 | + | ||
| 135 | +--- | ||
| 136 | + | ||
| 137 | +## 📝 相关文件清单 | ||
| 138 | + | ||
| 139 | +| 文件 | 状态 | 说明 | | ||
| 140 | +|------|------|------| | ||
| 141 | +| `src/pages/video-player/index.vue` | 保留 | 视频播放页面组件 | | ||
| 142 | +| `src/pages/video-player/index.config.js` | 保留 | 页面配置 | | ||
| 143 | +| `src/composables/useFileOperation.js` | 已修改 | 屏蔽视频跳转逻辑 | | ||
| 144 | +| `src/app.config.js` | 已修改 | 注释路由配置 | | ||
| 145 | + | ||
| 146 | +**注意**: 所有源代码文件均保留,仅修改调用逻辑,便于后续恢复。 | ||
| 147 | + | ||
| 148 | +--- | ||
| 149 | + | ||
| 150 | +## 🔗 相关资源 | ||
| 151 | + | ||
| 152 | +- [微信小程序个人主体限制](https://developers.weixin.qq.com/minigame/product/material/) | ||
| 153 | +- [小程序服务类目](https://developers.weixin.qq.com/minigame/product/material/) | ||
| 154 | +- [恢复总览](./README.md) | ||
| 155 | + | ||
| 156 | +--- | ||
| 157 | + | ||
| 158 | +## 📅 变更日志 | ||
| 159 | + | ||
| 160 | +| 日期 | 操作 | 说明 | | ||
| 161 | +|------|------|------| | ||
| 162 | +| 2026-03-13 | 屏蔽 | 个人主体审核不通过 | | ||
| 163 | +| - | - | 待恢复(升级企业主体后) | |
| ... | @@ -30,7 +30,7 @@ const pages = [ | ... | @@ -30,7 +30,7 @@ const pages = [ |
| 30 | 'pages/help-center/index', | 30 | 'pages/help-center/index', |
| 31 | 'pages/message/index', | 31 | 'pages/message/index', |
| 32 | 'pages/message-detail/index', | 32 | 'pages/message-detail/index', |
| 33 | - 'pages/video-player/index', | 33 | + // 'pages/video-player/index', // [屏蔽] 个人主体小程序不支持视频服务 |
| 34 | 'pages/article-detail/index', | 34 | 'pages/article-detail/index', |
| 35 | 'pages/article-favorites/index', | 35 | 'pages/article-favorites/index', |
| 36 | ] | 36 | ] | ... | ... |
| ... | @@ -375,22 +375,22 @@ export function useFileOperation() { | ... | @@ -375,22 +375,22 @@ export function useFileOperation() { |
| 375 | } | 375 | } |
| 376 | 376 | ||
| 377 | // 判断是否为视频文件(优先使用 extension 字段) | 377 | // 判断是否为视频文件(优先使用 extension 字段) |
| 378 | + // [屏蔽原因] 个人主体小程序不支持视频服务类目 | ||
| 379 | + // [恢复方法] 将下方注释的代码恢复,删除 showToast 提示 | ||
| 380 | + // [相关文档] docs/disabled-features/video-player.md | ||
| 378 | if (isVideoFile(item)) { | 381 | if (isVideoFile(item)) { |
| 379 | - // 视频文件:跳转到视频播放页面 | 382 | + // 视频文件:已屏蔽跳转功能(个人主体小程序限制) |
| 380 | - try { | 383 | + // 原:跳转到视频播放页面 |
| 381 | - await Taro.navigateTo({ | 384 | + // await Taro.navigateTo({ |
| 382 | - url: `/pages/video-player/index?url=${encodeURIComponent(item.downloadUrl)}&title=${encodeURIComponent(item.title || item.fileName)}` | 385 | + // url: `/pages/video-player/index?url=${encodeURIComponent(item.downloadUrl)}&title=${encodeURIComponent(item.title || item.fileName)}` |
| 383 | - }) | 386 | + // }) |
| 384 | - return true | 387 | + console.log('[文件操作] 视频文件预览已屏蔽(个人主体限制):', item.fileName) |
| 385 | - } catch (error) { | 388 | + showToast({ |
| 386 | - console.error('[文件操作] 视频打开失败:', error) | 389 | + title: '小程序暂不支持视频预览', |
| 387 | - showToast({ | 390 | + icon: 'none', |
| 388 | - title: '视频打开失败', | 391 | + duration: 2000 |
| 389 | - icon: 'none', | 392 | + }) |
| 390 | - duration: 2000 | 393 | + return false |
| 391 | - }) | ||
| 392 | - return false | ||
| 393 | - } | ||
| 394 | } | 394 | } |
| 395 | 395 | ||
| 396 | // 非视频文件:下载并打开 | 396 | // 非视频文件:下载并打开 | ... | ... |
-
Please register or login to post a comment