Files
gitlab-instance-0a899031_di…/ANALYSIS_REPORT.md
eric 37d0883ce9 ''
2026-03-12 19:50:25 -05:00

77 lines
2.9 KiB
Markdown
Raw Permalink 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.
# 项目分析报告
## 一、项目架构概览
| 项目 | 端口 | 支付 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 会 refetchcourse 页面需轮询支付状态。
### Bug 3: cnomadcna 首页「加入游牧中国」流程不完整
**需求:**
1. 检查 users 是否存在
2. 校验 VIP 状态
3. 老用户:弹窗密码校验,可修改密码,无 VIP 进入支付
4. 新用户:直接进入支付
5. 支付失败users 新增记录但无 VIP
6. 支付成功:解锁 VIP
**当前问题:**
- check-user 只返回 exists未返回 vip
- 老用户有 VIP 时仍会弹窗要求支付
- JoinModal 未区分「有 VIP 直接进入」逻辑
**修复:** 扩展 check-user 返回 vipHeroSection/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()}` 假 IDsolan 未正确关联真实用户。
**修复:** 未登录时返回 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