Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8da75fad2 |
@@ -1,76 +0,0 @@
|
||||
# 项目分析报告
|
||||
|
||||
## 一、项目架构概览
|
||||
|
||||
| 项目 | 端口 | 支付 API 前缀 | 站点 ID | 本地地址 | 线上地址 |
|
||||
|------|------|---------------|---------|----------|----------|
|
||||
| digital | 3000 | /digital/payh5 | digital | http://192.168.41.222:3000 | digital.hackrobot.cn |
|
||||
| cnomadcna | 3001 | /cnomadcna/payh5 | meetup | http://192.168.41.222:3001 | meetup.hackrobot.cn |
|
||||
| nomadvip | 3002 | /nomadvip/payh5 | vip | http://192.168.41.222:3002 | vip.hackrobot.cn |
|
||||
| payjsapi | 8007 | - | - | http://192.168.41.222:8007 | api.hackrobot.cn |
|
||||
|
||||
## 二、PocketBase 数据表
|
||||
|
||||
- **users**: 用户认证
|
||||
- **payments**: 支付记录
|
||||
- **site_vip**: 站点 VIP 权限 (user_id, site_id, order_id, expires_at)
|
||||
- **sites**: 站点配置
|
||||
- **solan**: 游牧中国申请表单 (需与 users 关联)
|
||||
|
||||
## 三、Bug 分析与修复方案
|
||||
|
||||
### Bug 1: digital 首页登录注册异常
|
||||
|
||||
**可能原因:**
|
||||
- Cookie 未设置 domain,跨子域或本地 IP 访问时可能失效
|
||||
- auth/me 使用 `/api/users/refresh`,需确认 PocketBase 版本兼容
|
||||
- 本地开发时 PAYMENT_API_URL 默认 8700,用户期望 8007
|
||||
|
||||
**修复:**
|
||||
- 统一 Cookie 设置逻辑,生产环境设置 AUTH_COOKIE_DOMAIN
|
||||
- 本地开发不设置 domain
|
||||
- 修正 payjsapi 端口配置
|
||||
|
||||
### Bug 2: digital /course 立即报名流程
|
||||
|
||||
**当前逻辑:** 已实现登录校验→支付→VIP 解锁,CTASection 的 handleEnroll 正确。
|
||||
|
||||
**需确认:** 支付返回后 useAuthAndVip 会 refetch,course 页面需轮询支付状态。
|
||||
|
||||
### Bug 3: cnomadcna 首页「加入游牧中国」流程不完整
|
||||
|
||||
**需求:**
|
||||
1. 检查 users 是否存在
|
||||
2. 校验 VIP 状态
|
||||
3. 老用户:弹窗密码校验,可修改密码,无 VIP 进入支付
|
||||
4. 新用户:直接进入支付
|
||||
5. 支付失败:users 新增记录但无 VIP
|
||||
6. 支付成功:解锁 VIP
|
||||
|
||||
**当前问题:**
|
||||
- check-user 只返回 exists,未返回 vip
|
||||
- 老用户有 VIP 时仍会弹窗要求支付
|
||||
- JoinModal 未区分「有 VIP 直接进入」逻辑
|
||||
|
||||
**修复:** 扩展 check-user 返回 vip,HeroSection/JoinModal 按 vip 分支处理。
|
||||
|
||||
### Bug 4: cnomadcna 支付成功后首页未显示登录
|
||||
|
||||
**原因:** cnomadcna 首页无 Header/Navbar 展示登录态。
|
||||
|
||||
**修复:** 添加 TopBar 或复用 layout 展示 auth 状态,join/paid 完成后调用 pbSaveAuth 同步 localStorage。
|
||||
|
||||
### Bug 5: cnomadcna /join 提交申请
|
||||
|
||||
**需求:** 必须先登录,solan 与 users 关联。
|
||||
|
||||
**当前问题:** api/join 的 getOrCreateUserId 在无 cookie 时返回 `user${Date.now()}` 假 ID,solan 未正确关联真实用户。
|
||||
|
||||
**修复:** 未登录时返回 401,强制登录后再提交;solan.user_id 使用 cookie 中的真实 userId。
|
||||
|
||||
## 四、环境配置
|
||||
|
||||
将创建各项目的 .env.example,本地默认:
|
||||
- PAYMENT_API_URL: http://192.168.41.222:8007
|
||||
- NEXT_PUBLIC_POCKETBASE_URL: https://pocketbase.hackrobot.cn(或本地 PB 地址)
|
||||
- 本地不设置 AUTH_COOKIE_DOMAIN
|
||||
Reference in New Issue
Block a user