diff --git a/docs/superpowers/plans/2026-04-19-puro-ai-landing-auth.md b/docs/superpowers/plans/2026-04-19-puro-ai-landing-auth.md new file mode 100644 index 00000000..265d2a14 --- /dev/null +++ b/docs/superpowers/plans/2026-04-19-puro-ai-landing-auth.md @@ -0,0 +1,1746 @@ +# PURO AI · Landing + Auth + Docs Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** 在 `ai.puro.im` 上线 PURO AI 品牌化的 Landing、Login、Register、Docs 四个页面,落地 `puro.css` 作为全站新设计系统,保持所有后台页面和现有 Auth 逻辑不变。 + +**Architecture:** 复用 Claude Design 产出的 `docs/design-drafts/v2/` 静态 HTML,翻译成 Vue 3 SFC 组件,CSS 通过全局引入 `puro.css`(含 tokens + primitives),路由改造让 `/` 根据登录态动态展示 Landing 或 Dashboard。所有 hardcoded 中文通过 vue-i18n 的 `zh.ts` 集中管理。 + +**Tech Stack:** Vue 3.4+ (Composition API, TypeScript), Vue Router 4, vue-i18n, Pinia, Tailwind CSS(保留 legacy primary 色板不动),Vite 5, pnpm 10, vitest(router 用)。 + +**Spec:** `docs/superpowers/specs/2026-04-19-puro-ai-landing-auth-design.md`(第 3/4/4.5/6 节为本计划权威依据) + +**Branch:** `feat/design-landing-auth`(已创建 · 当前 HEAD `3a16b3ec`) + +--- + +## 文件结构 + +``` +frontend/ +├── index.html ← MODIFY 加 Google Fonts preconnect + link +├── src/ +│ ├── assets/ +│ │ └── puro.css ← NEW 复制 docs/design-drafts/v2/puro.css +│ ├── main.ts ← MODIFY import './assets/puro.css' +│ ├── router/ +│ │ └── index.ts ← MODIFY `/` auth-aware + `/docs` public +│ ├── views/ +│ │ ├── landing/ +│ │ │ └── LandingView.vue ← NEW 6 sections, dashboard mockup 静态 +│ │ ├── docs/ +│ │ │ └── DocsView.vue ← NEW 6 subsections, curl/codex/claude-code 示例 +│ │ └── auth/ +│ │ ├── LoginView.vue ← MODIFY 套新 narrative slot + 小幅改文案 +│ │ └── RegisterView.vue ← MODIFY 同上 +│ ├── components/ +│ │ └── layout/ +│ │ └── AuthLayout.vue ← MODIFY 加 `narrative` 命名 slot(条件渲染) +│ └── i18n/ +│ └── locales/ +│ └── zh.ts ← MODIFY 新增 `landing.*` / `docs.*` / 扩 `auth.*` +└── tailwind.config.js ← MODIFY extend color 加 puro.* 家族(给 Vue 用) +``` + +**不动的文件**:所有 `views/admin/**`、`views/user/**`、`views/setup/**`、`App.vue`、`AppHeader/AppLayout/AppSidebar.vue`、backend 全部。 + +**设计决策**: +- `puro.css` 里已有的 primitives class(`.btn-primary`, `.card`, `.input` 等)直接用 class 引用,**不抽 Vue 组件**(减少 scope 膨胀) +- Tailwind 现有 `primary`(teal #14b8a6)**不改**——admin 页还用。新加 `puro.cyan` / `puro.purple` / `puro.amber` 等命名空间,新页面用 `text-puro-cyan` 类 +- i18n 只补 `zh.ts`(本期默认中文);`en.ts` 键留空或复用 `zh` 值 + +--- + +## Task 1: 引入 puro.css 设计系统 + Google Fonts + +**Files:** +- Create: `frontend/src/assets/puro.css` +- Modify: `frontend/src/main.ts:7` +- Modify: `frontend/index.html` + +- [ ] **Step 1: 复制 puro.css 到 assets** + +```bash +cp /Users/mini/Work/dev/sub2api/docs/design-drafts/v2/puro.css \ + /Users/mini/Work/dev/sub2api/frontend/src/assets/puro.css +``` + +- [ ] **Step 2: 在 main.ts 里 import(紧接 style.css)** + +Modify `frontend/src/main.ts`,把第 7 行: + +```ts +import './style.css' +``` + +改为: + +```ts +import './style.css' +import './assets/puro.css' +``` + +- [ ] **Step 3: 在 index.html `
` 里加 Google Fonts preconnect + link** + +Modify `frontend/index.html`,在 `` 里(`
+ Claude Pro · ChatGPT Plus · Codex · Gemini 订阅
+ 聚合成统一 API,零改动接入 OpenAI / Anthropic SDK
+
无需申请官方 API key,也无需切换账号
+不再为每个 provider 申请 API key、配置 base_url。统一 sk- 走 Claude / GPT / Gemini,按 model 自动路由到对应账号池。
支持多账号自动调度与 failover。某个上游触发限流 / 冷却时,流量切到下一个健康账号,token 刷新全自动。
+每条请求的 tokens、费用、上游账号、延迟全可视化。模型分布饼图 + 趋势曲线 + Top 排行。
+5 分钟开始用 PURO AI
+``` + +- [ ] **Step 4: 把 LoginView 的 narrative ` +``` + +- [ ] **Step 2: 在 router/index.ts 注册 `/docs` public route** + +插入(在 `/home` 附近的 Public Routes 区): + +```ts + { + path: '/docs', + name: 'Docs', + component: () => import('@/views/docs/DocsView.vue'), + meta: { + requiresAuth: false, + title: 'PURO AI · 文档' + } + }, +``` + +- [ ] **Step 3: 验证** + +Run: +```bash +cd /Users/mini/Work/dev/sub2api/frontend && pnpm run dev +``` + +http://localhost:5173/docs + +Expected: +- 顶部 sticky nav(⬢ PURO AI / 首页 / Codex / Claude Code / curl / 登录) +- Hero:"快速接入 PURO AI" +- 6 个 numbered sections +- 代码块深色高亮 + +点 Nav 里的 "Codex" / "Claude Code" / "curl" 锚点会跳到对应段。 + +停掉 dev server。 + +- [ ] **Step 4: 提交** + +```bash +cd /Users/mini/Work/dev/sub2api +git add frontend/src/views/docs/DocsView.vue frontend/src/router/index.ts +git commit -m "feat(docs): public DocsView with Codex/Claude Code/curl quickstart + +Public route /docs, no auth required. Six sections: get key, codex CLI +config, claude code settings, curl smoke test, supported models, feedback. + +Co-Authored-By: Claude Opus 4.7 (1M context){{ t('auth.puroLoginSub') }}
+``` + +RegisterView 同理用 `auth.puroRegisterTitle` / `auth.puroRegisterSub`。 + +- [ ] **Step 4: 验证 zh.ts 没语法错误** + +Run: +```bash +cd /Users/mini/Work/dev/sub2api/frontend && pnpm run type-check 2>&1 | tail -5 +``` +Expected: 无 TypeScript 错误。 + +- [ ] **Step 5: dev server 确认 heading 显示正确** + +```bash +cd /Users/mini/Work/dev/sub2api/frontend && pnpm run dev +``` + +http://localhost:5173/login → heading "登录" +http://localhost:5173/register → heading "创建账户" + +停掉 dev server。 + +- [ ] **Step 6: 提交** + +```bash +cd /Users/mini/Work/dev/sub2api +git add frontend/src/i18n/locales/zh.ts frontend/src/views/auth/LoginView.vue frontend/src/views/auth/RegisterView.vue +git commit -m "chore(i18n): consolidate PURO auth heading keys into zh.ts + +Landing and Docs text remain hardcoded Chinese this cycle (see spec §6 +Note 5). Only Login/Register heading strings are moved into i18n. + +Co-Authored-By: Claude Opus 4.7 (1M context)