hookehuyr

feat(disable): 屏蔽视频播放功能(个人主体限制)

- 屏蔽 useFileOperation 中的视频跳转逻辑
- 注释 app.config.js 中的 video-player 路由
- 新增功能屏蔽文档便于后续恢复

原因:个人主体小程序不支持视频服务类目
审核反馈:你的小程序涉及视频服务,属个人主体小程序未开放类目

恢复方法:详见 docs/disabled-features/video-player.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
...@@ -7607,3 +7607,12 @@ ...@@ -7607,3 +7607,12 @@
7607 7607
7608 **变更摘要**: 7608 **变更摘要**:
7609 - 无详细描述 7609 - 无详细描述
7610 +## 2026-03-13
7611 +
7612 +### 11:49:08 - 完成任务
7613 +
7614 +**影响文件**:
7615 +- `src/components/cards/ArticleCard.vue`
7616 +
7617 +**变更摘要**:
7618 +- 无详细描述
......
...@@ -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)** - 项目版本更新历史
......
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 | 视频播放 | 屏蔽 |
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 // 非视频文件:下载并打开
......