PackSmith

image-studiopack 分支衍生项目。2026-05-09 业务下线:从 MVP Deployer 删除(DELETE /api/deploy/packsmith?removeFiles=true),PM2 进程 + Caddy 路由 + /opt/mvp-apps/packsmith/ 一并清。pack.mvp.restry.cn 已不可达。本页保留作为踩坑历史档案。

历史阶段:登录走 wx-gateway(注册名 pack),部署在 pack.mvp.restry.cn

关键教训:先看图比,再选库

首页 04-27 一开始照搬 Pinterest 思路用 masonic 瀑布流库,连踩两套 SSR 坑:

  1. ResizeObserver 在 Node 未定义dynamic(..., {ssr:false}) 标准修
  2. filter 重置 data=undefined 时 WeakMap 崩 → 加 key prop 强制重建

修完才反应过来:PackSmith 商品图全是 1:1 正方形,根本没有不等比,瀑布流毫无价值。直接换 CSS Grid,前面所有 hack 全删。

教训冻结在 skill react-masonry-pinterest § 9:图比 1:1 用 CSS Grid,不要硬上瀑布流

反代 redirect 同坑

服务端拼绝对 URL 用 req.url → 反代后取到内部 host → 308 重定向到 localhost:3xxx。修法同 packhorizonpublicBase(req) helper 读 x-forwarded-host/-proto。沉淀 skill nextjs-reverse-proxy-redirect-leak

微信内 vs PC 扫码 openid 双路径整理(04-27)

最初 PackSmith 自己的 WECHAT_APPID(DB settings 那套)跑微信内 OAuth、PC 扫码走 wx-gateway 共享的「造悟者」wx225bf76b06064faa,结果两套 openid 互不认识:同一用户两条路注册产生两个账号。

方案敲定:选方案 1 —— 删 path A,全走「造悟者」扫码,微信内也展示二维码(牺牲微信内”无感”换统一身份)。落地 commit 257920b,12 文件 -491/+35。配套:

  • wx-gateway 的 /wx/oauth/callback 已在调 cgi-bin/user/info 拿 nickname/avatar 入库 WxLoginToken
  • /wx/poll 已把 nickname/avatar 当 extras 拼进 redirect URL —— 但 PackSmith 的 finalize 没消费,于是用户名空白
  • 修法:finalize 多读 nickname/avatar 写入 user,配合 wx-gateway 04-27 的 snsapi_userinfo 一键登录

踩坑:schema 加 WxFinalizeLog 表后没跑 migration,prod 报 relation "public.WxFinalizeLog" does not exist。临时用 deployer /api/execprisma db push 兜底建表 —— 之后还是要补正式 migration。另一个 Failed to find Server Action "0000..." 是客户端缓存老 JS,刷新即消失,非真错。

部署 / 视觉 fix(04-27)

  • zip 打包必须排除 .env* —— 否则覆盖服务器 .env;用 deployer /api/exec 抓服务器 .env 全量回灌 manifest.env 兜底
  • 视觉 6 项整改 commit 落地:删 <span>PACKSMITH AI</span> 水印;拆登录/注册按钮;Hero 两栏 lg:grid-cols-[minmax(0,1fr)_minmax(360px,440px)] + next/image;三 FeatureCard 统一白底;加搜索框(searchQuery state,title/brandName/industry 包含匹配)
  • masonic → CSS Grid 改造效果:首屏从 ~3.4MB 降到 ~500KB

架构总结

用户扫码 →「造悟者」OAuth → /api/wx/finalizeUser + Session + WechatAccount/generate 提任务 → 进程内 Worker(max_global=8 / per_user=3)调 Azure gpt-image-2Generation + GeneratedImage + SSE → /me 充值/邀请/checkin → CreditLedger 记账 → /mgmt-7bx3k 后台。

相关