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

2.9 KiB
Raw Permalink Blame History

项目分析报告

一、项目架构概览

项目 端口 支付 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本地默认