AOVIS 部署归档:App 登录认证 + 设备激活
归档日期:2026-04-13
1. 归档目的
这份记录用于保存本次 aovis.app 生产发布的完整发布信息,方便后续排查、回滚和复用 SOP。
本次发布覆盖:
- App 专用登录 token 颁发
- App Magic Link 登录
- 设备激活端点
- entitlement / subscription 基础能力
- 对应的 Prisma schema 和迁移
2. 发布身份
- 仓库:
aovis-direct-store - 分支:
main - 发布提交:
a9acfabb41fa0a26c9fab682882e283641619053 - 远程:
origin/main - 部署目标:
aovis-store-staging-vm - GCP 项目:
aovis-site-1 - GCloud 账号:
[email protected]
3. 变更摘要
本次发布的主要改动包括:
app/api/auth/app-token/route.tsapp/api/auth/app-magic-link/route.tsapp/api/auth/app-magic-link/verify/route.tsapp/api/devices/activate/route.tsapp/app-auth/page.tsxlib/app-token.tslib/app-magic-email.tslib/entitlement.tslib/verify-app-request.tsprisma/schema.prismaprisma/migrations/20260413110000_add_device_and_subscription_fields/migration.sqlpublic/.well-known/apple-app-site-associationpublic/.well-known/assetlinks.jsonscripts/test-entitlement.tsdocs/app-jwt-token-issuance.mddocs/AOVIS_App_登录认证接口规范_v1.0.md
4. 高风险路径说明
本次发布触及以下高风险路径:
app/api/auth/*的新增 App 专用路径app/api/devices/*lib/entitlement.tslib/app-token.tsprisma/public/.well-known/
说明:
- 没有修改现有 Web Auth.js 登录路由
- 没有修改
auth.ts - 没有修改
lib/auth-config.ts - 没有修改 Stripe webhook 或 checkout 路由
- 没有修改
.env.production
5. 发布前检查
本次发布前已经完成:
- 本地类型检查:
npx tsc --noEmit - 本地构建:
npm run build - Prisma 状态检查:
npx prisma migrate status - Entitlement 脚本冒烟测试:
npx tsx scripts/test-entitlement.ts - scope check:
npm run deploy:scope-check - release 预检查:
pnpm release:prod -- --prepare-only
6. VM 部署步骤
实际部署路径:
gcloud compute ssh aovis-store-staging-vm --zone us-west1-c --project aovis-site-1 --command 'cd /opt/aovis/aovis-store-staging && git fetch origin && git pull origin main && npm install && npx prisma generate && npm run build && pm2 restart aovis-store-staging --update-env'
执行结果:
- 成功拉取到发布提交
a9acfabb41fa0a26c9fab682882e283641619053 npm install成功npx prisma generate成功npm run build成功pm2 restart aovis-store-staging --update-env成功
7. 线上验证结果
发布后执行:
npm run deploy:verify
验证结果:
robots.txt通过sitemap.xml通过- 首页
/通过 - 产品页
/products/nexa-prime-4k通过 - 技术页
/technology通过 - 服务页
/services通过 - FAQ 页
/support/faq通过
总计:
7/7 passed0 failed
8. 运行状态
当前结论:
- 发布已完成
- 线上验证已通过
- 工作区已清理干净
- 该发布可作为后续 App 登录、设备激活和 entitlement 接口的基线版本
9. 后续建议
后续如果继续扩展 App 侧能力,建议沿用以下顺序:
- 先在
lib/entitlement.ts/lib/app-token.ts复用现有基础能力 - 再新增对应 API 路由
- 每次发布前都执行
npm run deploy:scope-check - 每次发布后都执行
npm run deploy:verify
10. 备注
本次归档的目标是把“提交 -> VM 部署 -> PM2 重启 -> 线上真值验证”这条链路固定下来,避免以后只看本地构建结果。
AOVIS 部署归档:公共站点无障碍修复
归档日期:2026-04-13
1. 归档目的
本次记录用于保存公共站点 UI / a11y 修复的发布信息,覆盖首页、登录页、支持页和商品相关交互的可访问性改进。
2. 发布身份
- 仓库:
aovis-direct-store - 分支:
main - 发布提交:
d8de94db327ab85ea9eb4c912d2649a7ae712d73 - 远程:
origin/main - 部署目标:
aovis-store-staging-vm - GCP 项目:
aovis-site-1 - GCloud 账号:
[email protected]
3. 变更摘要
本次发布主要改动包括:
components/commerce.tsxapp/page.tsxcomponents/email-signin-form.tsxcomponents/product-selector.tsxcomponents/support-actions.tsxcomponents/product-faq.tsx
核心修复点:
- 公共站点共享壳层增加 skip link
- 搜索浮层补齐 dialog 语义、焦点恢复与 Tab 循环
- 图标入口补充可访问名称
- 首页锚点跳转增加
scroll-margin-top - 邮箱登录表单补齐 label/input 绑定与 autocomplete
- 商品套餐选择器补齐选中状态语义
- FAQ 折叠项补齐 button/answer 关联
- 支持卡图标补齐装饰性语义
4. 发布前检查
本次发布前已经完成:
- 本地构建:
npm run build - release 预检查:
npm run deploy:preflight - scope check:
npm run deploy:scope-check
5. VM 部署步骤
实际部署路径:
gcloud compute ssh aovis-store-staging-vm --zone us-west1-c --project aovis-site-1 --account [email protected] --command 'cd /opt/aovis/aovis-store-staging && git fetch origin && git pull origin main && npm install && npx prisma generate && npm run build && pm2 restart aovis-store-staging --update-env'
执行结果:
- 成功拉取到发布提交
d8de94db327ab85ea9eb4c912d2649a7ae712d73 npm install成功npx prisma generate成功npm run build成功pm2 restart aovis-store-staging --update-env成功
6. 线上验证结果
发布后执行:
npm run deploy:verify
验证结果:
robots.txt通过sitemap.xml通过- 首页
/通过 - 产品页
/products/nexa-prime-4k通过 - 技术页
/technology通过 - 服务页
/services通过 - FAQ 页
/support/faq通过
总计:
7/7 passed0 failed
7. 运行状态
当前结论:
- 发布已完成
- 线上验证已通过
- 该发布已作为公共站点无障碍修复基线归档
8. 备注
本次发布的重点不是视觉重做,而是把公共站点的交互语义补齐,减少键盘和读屏用户的阻力,同时保持现有品牌与页面结构不变。
AOVIS 记录:邮件登录与 App / Web 身份分流确认
归档日期:2026-04-13
1. 记录目的
本段用于记录今天对邮件登录链路的进一步确认,避免后续调优时把 Web 登录、App 登录和未来设备唯一性策略混在一起处理。
2. 已确认的边界
- Web 端邮件登录仍然属于
Auth.js / NextAuth的 Web Session 体系 - App 端邮件登录仍然属于独立的 App Magic Link + App Token 体系
- Web 和 App 共享同一个
User主体,但不共享 token 体系 - 未来设备唯一性、设备授权、设备激活应继续落在 App Token / device 维度上,不应反向改写 Web 登录入口
3. 今天对齐过的文档
4. 今天的实现结论
- Web 邮件登录需要继续避免邮件客户端预览 / 扫描直接消费一次性 token
- 当前的落地页继续作为 Web 侧的过渡确认页,符合 Web / App 分流要求
- 这次调整没有把 Web 登录改造成 App 登录,也没有引入新的设备绑定逻辑
5. 明天继续调优的方向
- 继续看移动端登录页的提示与跳转细节
- 继续检查账户页和订单页在小屏下的可用性
- 如后续需要接入设备唯一性,再沿着 App Token 和设备授权文档推进,不回改 Web Session 主链路