From b989c50317bcbe41e6e25c69320a909cb8b9008f Mon Sep 17 00:00:00 2001 From: mini Date: Tue, 21 Apr 2026 01:56:18 +0800 Subject: [PATCH] feat(pricing): add PricingView + calculator with bilingual i18n MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Port Pricing.html verbatim to Vue: hero with preview pill, 4-tier grid, custom-amount slider, PricingCalculator subcomponent, works-everywhere grid, FAQ accordions, final CTA. Full zh/en pricing namespace (~200 keys each). SOON chip on Scale priority feature; zero-log FAQ uses inline parenthetical. Drop $5 bonus line; Enterprise → mailto, Binding/tiers → /register, docs link → /register/docs. Co-Authored-By: Claude Sonnet 4.6 --- .../src/components/puro/PricingCalculator.vue | 117 ++++ frontend/src/i18n/locales/en.ts | 204 +++++++ frontend/src/i18n/locales/zh.ts | 204 +++++++ frontend/src/router/index.ts | 6 + frontend/src/views/landing/LandingView.vue | 3 +- frontend/src/views/pricing/PricingView.vue | 513 ++++++++++++++++++ 6 files changed, 1046 insertions(+), 1 deletion(-) create mode 100644 frontend/src/components/puro/PricingCalculator.vue create mode 100644 frontend/src/views/pricing/PricingView.vue diff --git a/frontend/src/components/puro/PricingCalculator.vue b/frontend/src/components/puro/PricingCalculator.vue new file mode 100644 index 00000000..aa819199 --- /dev/null +++ b/frontend/src/components/puro/PricingCalculator.vue @@ -0,0 +1,117 @@ + + + + + diff --git a/frontend/src/i18n/locales/en.ts b/frontend/src/i18n/locales/en.ts index 7d9bd06f..245c4a18 100644 --- a/frontend/src/i18n/locales/en.ts +++ b/frontend/src/i18n/locales/en.ts @@ -5633,6 +5633,7 @@ export default { landing: { nav: { products: 'Products', + pricing: 'Pricing', docs: 'Docs', login: 'Sign in', signup: 'Free trial →', @@ -5712,6 +5713,209 @@ export default { }, }, + pricing: { + nav: { + products: 'Products', + pricing: 'Pricing', + docs: 'Docs', + login: 'Sign in', + signup: 'Free trial →', + }, + hero: { + kicker: '// pricing · top up · pay as you go · never expires', + previewPill: '// preview · final pricing TBD at launch', + title1: 'Top up once,', + titleAccent: 'works across', + title2: 'all platforms', + sub: 'One credit balance works across Claude / ChatGPT / Gemini pools. We turn your subscription quota into real API credits — {discount} cheaper than official APIs.', + subDiscount: 'up to 70%', + underline: 'Credits never expire · Alipay / WeChat / USDT supported · No hidden fees', + }, + soonChip: 'SOON', + tiers: { + starter: { + flag: 'STARTER', + tierLabel: 'tier · 01', + headline: 'Dip your toes in, get connected', + credit: 'Top up ${creditAmount} → get {creditBonus} credits', + creditAmount: '9.9', + creditBonus: '$12', + discountTag: 'vs. official API · from 5× cheaper', + cta: 'Top up →', + features: { + allModels: 'All models / all pools', + oneKey: 'API key', + rpm60: '60 RPM rate limit', + log7: 'Basic logs (7-day retention)', + noBYOS: 'Bring your own subscription', + noTeam: 'Team / multi-user collaboration', + }, + }, + pro: { + flag: '◆ RECOMMENDED', + tierLabel: 'tier · 02', + headline: 'Power users · Best value', + credit: 'Top up ${creditAmount} → get {creditBonus} credits', + creditAmount: '29.9', + creditBonus: '$45', + discountTag: 'vs. official API · 3–7× cheaper', + cta: 'Buy Pro →', + features: { + allModels: 'All models / all pools', + threeKeys: 'API keys · separate budgets', + rpm120: '120 RPM rate limit', + log30: 'Call logs (30-day retention)', + byos: 'Bring your own subscription (unlimited)', + failover: 'Multi-account failover scheduling', + }, + }, + scale: { + flag: '⚡ LIMITED +100%', + tierLabel: 'tier · 03', + headline: 'Small teams / long-haul projects', + credit: 'Top up ${creditAmount} → get {creditBonus} credits', + creditAmount: '99', + creditBonus: '$198', + discountTag: 'vs. official API · 2–5× cheaper', + cta: 'Top up →', + features: { + proAll: 'All Pro capabilities', + tenKeys: 'API keys · separate budgets', + rpm300: '300 RPM rate limit', + log90: 'Call logs (90-day retention)', + priorityCount: '', + priority: 'Priority-weighted scheduling', + community: 'Slack / Discord community support', + }, + }, + custom: { + flag: 'CUSTOM', + tierLabel: 'tier · 04', + headline: 'Custom amount · top up on demand', + creditPrefix: 'Get approx.', + bonusPrefix: '+', + discountTag: 'Discount tier matched automatically by amount', + cta: 'Custom amount →', + features: { + neverExpire: 'Credits never expire', + proAll: 'All Pro capabilities', + tiered: 'Tiered +21% ~ +100%', + payment: 'Alipay / WeChat / USDT', + preview: 'Drag slider to preview bonus', + }, + }, + }, + custom: { + enterprise: { + title: 'Enterprise · Custom plans', + desc: 'Dedicated subscription pool, SLA, compliance audit, private deployment, invoice billing. Starting at >$500/mo.', + cta: 'Contact us →', + }, + binding: { + title: 'Already subscribed? Connect it.', + desc: 'Have Claude Max / ChatGPT Pro? Register free, bind your subscription, and only pay for PURO routing — {price} per request.', + price: '$0.0008/request', + cta: 'Connect my subscription →', + }, + }, + calc: { + kicker: '// cost estimator', + previewPill: '// estimated · for reference only', + title: 'How much could you save?', + sub: 'Estimate your monthly spend on PURO vs. official APIs based on your usage. Numbers update as you move the sliders.', + reqLabel: 'Daily requests', + tokLabel: 'Avg tokens per request', + mixLabel: 'Claude share', + monthlyTok: 'Monthly token usage', + officialCost: 'Official API cost', + puroCost: 'PURO cost (incl. +50% bonus)', + savings: 'Savings', + recLabel: 'Suggested top-up', + recStarter: '≈ Starter tier covers it', + recPro: '≈ Pro tier · 1 month', + recScale: '≈ Scale tier · 1 month', + }, + works: { + kicker: '// works everywhere', + title: 'One key, every tool', + sub: 'Any tool that supports a custom {baseUrl} or the OpenAI / Anthropic API works with PURO out of the box.', + baseUrl: 'base_url', + tools: { + claudeCode: 'Claude Code', + cursor: 'Cursor', + cline: 'Cline', + rooCode: 'Roo Code', + continueTag: 'Continue', + openaiSdk: 'OpenAI SDK', + anthropicSdk: 'Anthropic SDK', + openWebui: 'Open WebUI', + langchain: 'LangChain', + llamaIndex: 'LlamaIndex', + zed: 'Zed', + more: 'More…', + }, + tags: { + claudeCode: 'ANTHROPIC_BASE_URL', + cursor: 'Custom model', + cline: 'OpenAI compat.', + rooCode: 'OpenAI compat.', + continueTag: 'config.yaml', + openaiSdk: 'Python / Node', + anthropicSdk: 'Native Claude', + openWebui: 'Custom base', + langchain: 'LLM node', + llamaIndex: 'Model router', + zed: 'Assistant', + more: '60+ tools', + }, + }, + faq: { + kicker: '// frequently asked', + title: 'You might be wondering', + noAnswer: "Can't find an answer? {contact} · We usually reply within 2 hours.", + contact: 'Email us ↗', + q1: 'How is PURO different from an API relay or proxy?', + a1: 'A relay just forwards official API requests — the price depends on how much balance you prepay. PURO is different: we let you turn your existing Claude Pro / ChatGPT Plus subscription into an API. The $20/month you\'re already paying no longer has to live in the official chat UI — it feeds Cursor, Claude Code, and any SDK through a unified API. We also offer a pay-per-use official API fallback pool, and you can mix both modes freely.', + q2: 'Will running API calls through my subscription get me banned?', + a2: 'We automatically pace requests per subscription and failover to other pool members if rate limits trigger. In practice, PURO\'s call pattern is less likely to flag risk controls than copy-pasting large conversations in the official client. When you bind multiple subscriptions, each account\'s RPM stays well within safe thresholds. All credentials are AES-256 encrypted, and requests never transit third-party infrastructure.', + q3: 'Do credits expire? Can I get a refund?', + a3Part1: 'Credits never expire.', + a3Part2: "You can save them up and use them months later. Full refund within 7 days of first top-up if no calls were made; after that, 85% of remaining credits are refunded. See our", + a3Link: 'refund policy', + a3Part3: '.', + q4: 'What payment methods are supported?', + a4: 'Domestic (CN): Alipay · WeChat Pay. International: Stripe credit card · USDT (TRC20 / ERC20) · PayPal. Enterprise top-ups support invoice and bank transfer with CNY receipts.', + q5: 'How many subscriptions can one PURO account bind?', + a5StarterLabel: 'Starter tier:', + a5Starter: 'Binding your own subscriptions is not supported', + a5ProLabel: 'Pro tier and above:', + a5Pro: 'Unlimited — you can bind 10 ChatGPT Plus + 3 Claude Pro accounts and schedule them all together', + a5EnterpriseLabel: 'Enterprise:', + a5Enterprise: 'Supports cross-team shared pools with org-level isolation', + q6: 'What happens if a subscription hits its rate limit?', + a6: "PURO's scheduler marks the throttled subscription as cooling and temporarily removes it from the pool. The same request is immediately failed over to another healthy subscription — callers typically experience no interruption. You can see each subscription's current status and remaining quota in the Dashboard.", + q7: 'How precise is billing? What if I go over my limit?', + a7: 'Billed per actual token count × model rate, accurate to 4 decimal places. Each API key can have an independent monthly budget cap — once hit, requests return 402 Payment Required and no further charges accumulate. The same 402 applies when your account balance is exhausted. Dashboard sends 80% / 95% reminder emails.', + q8: 'Will my data be used for training?', + a8Part1: 'No.', + a8Part2: 'All requests are used solely for routing — no content is stored or persisted (only metadata like model, token count, and latency is retained for billing and logs). Pro tier and above can optionally enable "zero-log mode" (planned), where we record nothing, not even request IDs.', + q9: 'Can I self-host PURO?', + a9: 'Enterprise tier supports Docker / K8s private deployment with separate control plane and data plane. Licensed as an annual subscription with upgrades and technical support included.', + a9Link: 'Contact us →', + q10: 'What models are supported? Will new models be added?', + a10: 'Currently covers Claude (Sonnet 4.5 / Opus 4 / Haiku 4.5), ChatGPT (GPT-5 / GPT-5 Codex / GPT-4.1), Gemini (2.5 Pro / 2.5 Flash). When official providers release new models, we typically go live within', + a10Link: 'docs', + a10Part2: '. Full model list available in the docs.', + }, + finalCta: { + kicker: '// ready to start', + title: 'Get your first sk-puro-* key in 5 minutes', + subtitle: 'Connect your first subscription and you\'re ready.', + ctaPrimary: 'Sign up free →', + ctaDocs: 'View docs', + }, + }, + docs: { nav: { products: 'Product', diff --git a/frontend/src/i18n/locales/zh.ts b/frontend/src/i18n/locales/zh.ts index 412f6399..3b413f6b 100644 --- a/frontend/src/i18n/locales/zh.ts +++ b/frontend/src/i18n/locales/zh.ts @@ -5826,6 +5826,7 @@ export default { landing: { nav: { products: '产品', + pricing: '定价', docs: '文档', login: '登录', signup: '免费试用 →', @@ -5905,6 +5906,209 @@ export default { }, }, + pricing: { + nav: { + products: '产品', + pricing: '定价', + docs: '文档', + login: '登录', + signup: '免费试用 →', + }, + hero: { + kicker: '// pricing · 充多少 · 用多少 · 永不过期', + previewPill: '// preview · 最终定价以开售为准', + title1: '一次充值,', + titleAccent: '全平台', + title2: '通用', + sub: '同一份积分可以用在 Claude / ChatGPT / Gemini 任意池上。我们把你的订阅额度变成真正的 API 余额 —— 相比官方 API 便宜 {discount}。', + subDiscount: '至多 70%', + underline: '余额永不过期 · 支持支付宝 / 微信 / USDT · 无隐藏订阅费', + }, + soonChip: 'SOON', + tiers: { + starter: { + flag: 'STARTER', + tierLabel: 'tier · 01', + headline: '先尝尝鲜,跑通接入', + credit: '充 ${creditAmount} → 得 {creditBonus} 积分', + creditAmount: '9.9', + creditBonus: '$12', + discountTag: '相当于官方 API · 0.5 折起', + cta: '充值 →', + features: { + allModels: '可用所有模型 / 所有池', + oneKey: '个 API Key', + rpm60: '60 RPM 速率限制', + log7: '基础日志(7 天保留)', + noBYOS: '自带订阅接入', + noTeam: '团队 / 多人协作', + }, + }, + pro: { + flag: '◆ 推荐', + tierLabel: 'tier · 02', + headline: '个人重度用户 · 最划算', + credit: '充 ${creditAmount} → 得 {creditBonus} 积分', + creditAmount: '29.9', + creditBonus: '$45', + discountTag: '相当于官方 API · 3-7 折', + cta: '立即充值 →', + features: { + allModels: '可用所有模型 / 所有池', + threeKeys: '个 API Key · 独立预算', + rpm120: '120 RPM 速率限制', + log30: '调用日志(30 天保留)', + byos: '自带订阅接入(无限个)', + failover: '多账号 failover 调度', + }, + }, + scale: { + flag: '⚡ 限时 +100%', + tierLabel: 'tier · 03', + headline: '小团队 / 长跑项目', + credit: '充 ${creditAmount} → 得 {creditBonus} 积分', + creditAmount: '99', + creditBonus: '$198', + discountTag: '相当于官方 API · 2-5 折', + cta: '充值 →', + features: { + proAll: '所有 Pro 能力', + tenKeys: '个 API Key · 独立预算', + rpm300: '300 RPM 速率限制', + log90: '调用日志(90 天保留)', + priorityCount: '', + priority: '请求优先级加权调度', + community: 'Slack / Discord 群组支持', + }, + }, + custom: { + flag: 'CUSTOM', + tierLabel: 'tier · 04', + headline: '自定义金额 · 按需充值', + creditPrefix: '得约', + bonusPrefix: '+', + discountTag: '根据金额阶梯自动匹配折扣', + cta: '定制充值 →', + features: { + neverExpire: '积分永不过期', + proAll: 'Pro 全部能力', + tiered: '阶梯 +21% ~ +100%', + payment: '支付宝 / 微信 / USDT', + preview: '拖动滑块预览赠送', + }, + }, + }, + custom: { + enterprise: { + title: 'Enterprise · 企业定制', + desc: '专属订阅池、SLA、合规审计、私有化部署、发票结算。规模 >$500/月起可申请。', + cta: '联系商务 →', + }, + binding: { + title: '已有订阅?直接接入', + desc: '有 Claude Max / ChatGPT Pro?免费注册后绑定,只为 PURO 路由费买单 —— 按次 {price}。', + price: '$0.0008/request', + cta: '接入我的订阅 →', + }, + }, + calc: { + kicker: '// cost estimator', + previewPill: '// estimated · 以实际计费为准', + title: '算算你能省多少?', + sub: '按你的使用场景,对比 PURO 和官方 API 的月度花费差。数字会根据你选的场景自动更新。', + reqLabel: '日均请求数', + tokLabel: '平均每请求 tokens', + mixLabel: 'Claude 占比', + monthlyTok: '月度 tokens 消耗', + officialCost: '官方 API 价格', + puroCost: 'PURO 价格(含 +50% 赠送)', + savings: '节省', + recLabel: '建议充值', + recStarter: '≈ Starter 档够用', + recPro: '≈ Pro 档 1 个月', + recScale: '≈ Scale 档 · 1 个月', + }, + works: { + kicker: '// works everywhere', + title: '一个 key,所有工具通用', + sub: '只要支持自定义 {baseUrl} 或 OpenAI / Anthropic API,都能直接接入 PURO。', + baseUrl: 'base_url', + tools: { + claudeCode: 'Claude Code', + cursor: 'Cursor', + cline: 'Cline', + rooCode: 'Roo Code', + continueTag: 'Continue', + openaiSdk: 'OpenAI SDK', + anthropicSdk: 'Anthropic SDK', + openWebui: 'Open WebUI', + langchain: 'LangChain', + llamaIndex: 'LlamaIndex', + zed: 'Zed', + more: '更多…', + }, + tags: { + claudeCode: 'ANTHROPIC_BASE_URL', + cursor: '自定义模型', + cline: 'OpenAI 兼容', + rooCode: 'OpenAI 兼容', + continueTag: 'config.yaml', + openaiSdk: 'Python / Node', + anthropicSdk: '原生 Claude', + openWebui: '自定义 base', + langchain: 'LLM 节点', + llamaIndex: '模型路由', + zed: 'Assistant', + more: '60+ 工具', + }, + }, + faq: { + kicker: '// frequently asked', + title: '你可能想问的', + noAnswer: '没找到答案?{contact} · 通常 2 小时内回复。', + contact: '发邮件给我们 ↗', + q1: 'PURO 和 API 中转站 / API 代理有什么不同?', + a1: '中转站只是把官方 API 请求转一手,价格取决于你预付多少 balance。PURO 的不同是 —— 我们让你把已有的 Claude Pro / ChatGPT Plus 订阅变成 API。你原本就在付的 $20/月,不再只能在官网聊天里用,而是通过统一 API 喂给 Cursor、Claude Code、任何 SDK。同时我们也提供按量充值的官方 API 备用池,两种模式可以混用。', + q2: '用订阅跑 API 会不会被封号?', + a2: '我们会自动控制每个订阅的请求节奏,并在触发限流时把请求 failover 到池子里的其他订阅。实际上 PURO 的调用模式比你在官方客户端直接复制粘贴大段对话更不容易触发风控。你绑定多个订阅时,单个账号的 RPM 会被压到足够安全的阈值内。另外所有凭证用 AES-256 加密存储,请求链路不经过第三方。', + q3: '积分会过期吗?可以退款吗?', + a3Part1: '积分永不过期。', + a3Part2: '你可以攒着慢慢用 —— 包括几个月都不用。首次充值 7 天内未产生任何调用可全额退款,之后按剩余积分 85% 比例退。详见', + a3Link: '退款政策', + a3Part3: '。', + q4: '支持哪些支付方式?', + a4: '国内:支付宝 · 微信支付。国际:Stripe 信用卡 · USDT (TRC20 / ERC20) · PayPal。企业充值支持 Invoice 对公打款,人民币开票。', + q5: '一个 PURO 账号可以绑定多少个订阅?', + a5StarterLabel: 'Starter 档:', + a5Starter: '不支持绑定自带订阅', + a5ProLabel: 'Pro 档及以上:', + a5Pro: '无限制,你可以把 10 个 ChatGPT Plus + 3 个 Claude Pro 一起绑上去,统一调度', + a5EnterpriseLabel: 'Enterprise:', + a5Enterprise: '支持跨团队共享池,按组织维度隔离', + q6: '如果某个订阅触发限流了会怎样?', + a6: 'PURO 的调度器会把受限的订阅自动标记为 cooling 状态,暂时从池子里摘除。同一请求会立刻被 failover 到池内其他健康订阅上 —— 调用方通常感受不到中断。你可以在 Dashboard 看到每个订阅的当前状态和剩余配额。', + q7: '计费精度?超量会怎么办?', + a7: '按实际 token 数 + 模型单价计费,精度到 4 位小数。每个 API Key 可设置独立月度预算,达到后返回 402 Payment Required,不会继续扣费。账户总余额不足时同样会返回 402,且 Dashboard 有 80% / 95% 两级提醒邮件。', + q8: '数据会被用于训练吗?', + a8Part1: '不会。', + a8Part2: '所有请求仅用于路由转发,不入库、不留存内容(仅保留元数据如模型、token 数、延迟,用于计费和日志)。Pro 档及以上可选开启"零日志模式"(规划中),我们连请求 ID 都不记录。', + q9: '可以私有化部署吗?', + a9: 'Enterprise 档支持 Docker / K8s 私有化部署,控制面和数据面可以分开。授权按年订阅,包含升级和技术支持。', + a9Link: '联系商务 →', + q10: '支持哪些模型?会跟进新模型吗?', + a10: '当前覆盖 Claude(Sonnet 4.5 / Opus 4 / Haiku 4.5)、ChatGPT(GPT-5 / GPT-5 Codex / GPT-4.1)、Gemini(2.5 Pro / 2.5 Flash)。每当官方发布新模型,我们通常在 24 小时内上线。完整模型列表见', + a10Link: '文档', + a10Part2: '。', + }, + finalCta: { + kicker: '// ready to start', + title: '5 分钟,拿到你第一个 sk-puro-* key', + subtitle: '绑定你的第一个订阅即可开始。', + ctaPrimary: '免费注册 →', + ctaDocs: '查看文档', + }, + }, + docs: { nav: { products: '产品', diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index c82e3aba..eec5b81a 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -129,6 +129,12 @@ const routes: RouteRecordRaw[] = [ title: 'PURO AI · 文档' } }, + { + path: '/pricing', + name: 'pricing', + component: () => import('@/views/pricing/PricingView.vue'), + meta: { requiresAuth: false, title: 'Pricing · PURO AI' } + }, // ==================== User Routes ==================== { diff --git a/frontend/src/views/landing/LandingView.vue b/frontend/src/views/landing/LandingView.vue index f40dc691..0a9fdbe5 100644 --- a/frontend/src/views/landing/LandingView.vue +++ b/frontend/src/views/landing/LandingView.vue @@ -14,7 +14,8 @@