This commit is contained in:
eric
2026-03-11 10:26:40 -05:00
parent 4c041d939a
commit 8cbc092437
71 changed files with 13541 additions and 92 deletions

80
README_KNOWLEDGE.md Normal file
View File

@@ -0,0 +1,80 @@
# 知识付费平台说明
## Markdown 内容结构
内容统一放在 `public/markdown/` 目录,支持**文件引用**和**字符串**两种方式:
```
public/markdown/
├── README.md # 说明
├── course/ # 课程配套文章
│ ├── 1/1.md, 2.md, 3.md
│ └── 2/1.md, 2.md
└── ebook/ # 电子书章节
├── 1/1.md, 2.md, 3.md
└── 2/1.md, 2.md
```
**引用格式**(数据库 `article_markdown` / `content` 字段):
- `@file:course/1/1` → 加载 `course/1/1.md`
- `@file:ebook/2/3` → 加载 `ebook/2/3.md`
- 直接写 Markdown 字符串 → 内联渲染
**配置**`src/markdown/config.js` 中维护 `MARKDOWN` 映射,新增章节时在此添加。
## 功能概览
- **首页(游客模式)**:无需登录即可浏览电子书专栏和课程专栏
- **电子书**:支持 Markdown 内容免费章节可读VIP 章节需开通
- **课程**:视频支持本地文件或 CDN 链接,免费试看 + VIP 全看
- **VIP**:月卡/年卡/终身卡,开通后可解锁全部内容
- **暗黑模式**:右上角灯泡切换
## Supabase 数据表
在 Supabase SQL Editor 中执行 `supabase/migrations/001_knowledge_tables.sql` 创建表结构。
### 表说明
| 表名 | 说明 |
|------|------|
| wxgzh_ebooks | 电子书专栏 |
| wxgzh_ebook_chapters | 电子书章节content 存 Markdown |
| wxgzh_courses | 课程专栏 |
| wxgzh_course_chapters | 课程章节video_url 支持 /path 或 https:// |
| wxgzh_vip_users | VIP 用户user_id, expire_at |
### 添加 VIP 用户
```sql
INSERT INTO wxgzh_vip_users (user_id, expire_at)
VALUES ('用户UUID', '2026-12-31 23:59:59+00');
```
## 视频 URL 格式
- **CDN**`https://your-cdn.com/video.mp4`
- **本地**`/videos/lesson1.mp4`(放在 `public/videos/` 下)
## 支付接入
已接入 payjsapi 后端,支持 **PC / 手机浏览器 / 微信内** 三种场景,**zpay / xorpay** 两种渠道。
### 场景与渠道
| 场景 | 渠道 | 行为 |
|------|------|------|
| PC 浏览器 | zpay | 展示微信扫码二维码,轮询支付状态 |
| 手机浏览器 | zpay | 新窗口打开支付页 |
| 微信内 | xorpay默认 | 当前页表单提交,收银台支付 |
### 配置
- **wxH5**:在 `.env` 中设置 `VITE_PAYMENT_API_URL`payjsapi 地址,默认 `http://127.0.0.1:8700`
- **payjsapi**:需为 wxH5 配置 `SUPABASE_URL``SUPABASE_SERVICE_KEY`,支付成功后同步 Supabase `wxgzh_vip_users`
### 支付流程
1. 用户登录后点击「开通 VIP」→ 选择套餐 → 发起支付
2. 返回地址 `/paid`,轮询订单状态,成功后刷新 VIP 状态
3. payjsapi 异步通知写入 PocketBase + Supabase