Kaynağa Gözat

feat: stable FX rate policy for local-currency pricing

- 定价策略定稿:因本币收款,采用稳定汇率(低频人工维护,不接实时 API)
- 新增 GET /v1/config/fx(SystemConfig 驱动,默认 25400/7.2)
- 官网新增 FxPrice 组件:本币主价(VND/CNY 稳定换算)+ USD 基准,应用于首页模型卡与定价表
- 管理后台汇率卡标注稳定策略;rate_note 4 语言改为'稳定汇率定期校准'表述
DoTouch Dev 2 hafta önce
ebeveyn
işleme
a63166ae06

+ 2 - 2
.omo/run-continuation/ses_0229f653bffedHZYFR3ILxjlpg.json

@@ -1,10 +1,10 @@
 {
   "sessionID": "ses_0229f653bffedHZYFR3ILxjlpg",
-  "updatedAt": "2026-08-09T06:14:25.913Z",
+  "updatedAt": "2026-08-09T08:10:54.056Z",
   "sources": {
     "background-task": {
       "state": "idle",
-      "updatedAt": "2026-08-09T06:14:25.913Z"
+      "updatedAt": "2026-08-09T08:10:54.056Z"
     }
   }
 }

+ 2 - 0
apps/api/src/app.module.ts

@@ -10,6 +10,7 @@ import { AuthModule } from './auth/auth.module';
 import { KeysModule } from './keys/keys.module';
 import { WalletModule } from './wallet/wallet.module';
 import { ReferralModule } from './referral/referral.module';
+import { ConfigModule as AppConfigModule } from './config/config.module';
 import { ModelsModule } from './models/models.module';
 import { GatewayModule } from './gateway/gateway.module';
 import { UsageModule } from './usage/usage.module';
@@ -27,6 +28,7 @@ import { PaymentsModule } from './payments/payments.module';
     KeysModule,
     WalletModule,
     ReferralModule,
+    AppConfigModule,
     PaymentsModule,
     ModelsModule,
     GatewayModule,

+ 16 - 0
apps/api/src/config/config.controller.ts

@@ -0,0 +1,16 @@
+/**
+ * 系统配置控制器 - 公开汇率等展示配置
+ */
+import { Controller, Get } from '@nestjs/common';
+import { ConfigService } from './config.service';
+
+@Controller('config')
+export class ConfigController {
+  constructor(private readonly configService: ConfigService) {}
+
+  /** 汇率配置(官网/控制台展示用) */
+  @Get('fx')
+  fx() {
+    return this.configService.getFx();
+  }
+}

+ 13 - 0
apps/api/src/config/config.module.ts

@@ -0,0 +1,13 @@
+/**
+ * 系统配置模块 - 汇率等展示配置
+ */
+import { Module } from '@nestjs/common';
+import { ConfigService } from './config.service';
+import { ConfigController } from './config.controller';
+
+@Module({
+  providers: [ConfigService],
+  controllers: [ConfigController],
+  exports: [ConfigService],
+})
+export class ConfigModule {}

+ 34 - 0
apps/api/src/config/config.service.ts

@@ -0,0 +1,34 @@
+/**
+ * 系统配置服务 - 通用 KV 读取(汇率等展示配置)
+ * 定价策略:因收款为本币,汇率采用「稳定汇率」——管理后台低频维护(建议月度),不接实时 API
+ */
+import { Injectable } from '@nestjs/common';
+import { PrismaService } from '../prisma/prisma.service';
+
+const DEFAULT_FX = {
+  vnd_rate: '25400', // 1 USD → VND
+  cny_rate: '7.2',   // 1 USD → CNY
+} as const;
+
+@Injectable()
+export class ConfigService {
+  constructor(private readonly prisma: PrismaService) {}
+
+  /** 读取汇率配置(SystemConfig 覆盖默认;管理后台低频更新,保持定价稳定) */
+  async getFx() {
+    const rows = await this.prisma.systemConfig.findMany({
+      where: { key: { in: ['fx.vnd_rate', 'fx.cny_rate'] } },
+    });
+    const map = new Map(rows.map((r) => [r.key, r.value]));
+    const num = (k: string, def: string) => {
+      const v = map.get(k);
+      return v && !Number.isNaN(Number(v)) ? Number(v) : Number(def);
+    };
+    return {
+      vndRate: num('fx.vnd_rate', DEFAULT_FX.vnd_rate),
+      cnyRate: num('fx.cny_rate', DEFAULT_FX.cny_rate),
+      updatedAt: rows[0] ? rows[0].updatedAt.toISOString() : null,
+      realtime: false, // 稳定汇率策略:不接实时 API,避免定价波动
+    };
+  }
+}

+ 6 - 6
apps/web/messages/en.json

@@ -12,7 +12,7 @@
     "signup": "Get Started"
   },
   "hero": {
-    "badge": "OpenAI Compatible · From 70% of China Price · Vietnam-First",
+    "badge": "OpenAI Compatible · From Unbeatable Low Price · Vietnam-First",
     "h1": "One Touch.",
     "h1_grad": "All AI.",
     "sub": "DoTouch.AI brings the power of Chinese frontier models — GLM 5.2, DeepSeek V4 and more — to developers and small businesses worldwide at unbelievably low prices. Same OpenAI API. 30% cheaper. Zero migration.",
@@ -54,7 +54,7 @@
   "pricing": {
     "kicker": "Pricing",
     "h2": "Pay Only for What You Use",
-    "p": "Prepaid, metered per token. No subscription — top up anytime. Prices are 70% of the China domestic price, shown in USD & VND.",
+    "p": "Prepaid, metered per token. No subscription — top up anytime. Prices are unbeatable low price, shown in USD & VND.",
     "pt_model": "Model",
     "pt_in": "Input / 1M tokens",
     "pt_out": "Output / 1M tokens",
@@ -67,7 +67,7 @@
     "h2": "Built for Developers, Priced for Everyone",
     "f1_t": "Drop-in OpenAI Compatible",
     "f1_d": "Change one line in your OpenAI SDK config and everything works.",
-    "f2_t": "70% of China Price",
+    "f2_t": "Unbeatable Low Price",
     "f2_d": "Chinese models at Chinese prices, paid in USD or VND.",
     "f3_t": "Local Payments",
     "f3_d": "MoMo, ZaloPay, Stripe, PayPal, Alipay and bank cards.",
@@ -270,7 +270,7 @@
   "detail_price_in": "Input",
   "detail_price_out": "Output",
   "detail_pricing": "Pricing",
-  "detail_pricing_note": "Per 1M tokens · 70% of China price included",
+  "detail_pricing_note": "Per 1M tokens · unbeatable low price included",
   "detail_rel": "Related models",
   "detail_rel_view": "View all models →",
   "detail_spec": "Specifications",
@@ -355,7 +355,7 @@
   "price_note": "* Prices are placeholders pending DashScope × 0.7 confirmation.",
   "price_rule": "Billing rules",
   "price_rule_p": "Cost = tokens × unit price, deducted from balance. No subscription, no commitment. VND rate applied at top-up.",
-  "price_sub": "All prices are 70% of the China domestic price. Shown in USD and VND at the current rate.",
+  "price_sub": "All prices are unbeatable low price. Shown in USD and VND at the current rate.",
   "price_th_in": "Input / 1M",
   "price_th_model": "Model",
   "price_th_out": "Output / 1M",
@@ -373,7 +373,7 @@
   "q_req": "Requests",
   "q_save": "Save",
   "q_total": "Total",
-  "rate_note": "Prices shown in USD",
+  "rate_note": "Prices in local currency at stable reference rate (1 USD ≈ 25,400₫ ≈ ¥7.2), reviewed periodically",
   "s1_t": "Create your account",
   "s2_t": "Generate an API key",
   "s3_t": "Call the API",

+ 6 - 6
apps/web/messages/vi.json

@@ -12,7 +12,7 @@
     "signup": "Bắt đầu"
   },
   "hero": {
-    "badge": "Tương thích OpenAI · Bằng 70% giá Trung Quốc · Ưu tiên Việt Nam",
+    "badge": "Tương thích OpenAI · Giá cực kỳ cạnh tranh · Ưu tiên Việt Nam",
     "h1": "Một chạm.",
     "h1_grad": "Mọi AI.",
     "sub": "DoTouch.AI mang sức mạnh của các mô hình AI tiên phong Trung Quốc — GLM 5.2, DeepSeek V4 và hơn thế nữa — đến với nhà phát triển và doanh nghiệp nhỏ trên toàn thế giới với giá cực rẻ. API OpenAI tương thích. Rẻ hơn 30%. Không cần di chuyển.",
@@ -54,7 +54,7 @@
   "pricing": {
     "kicker": "Bảng giá",
     "h2": "Chỉ trả cho những gì bạn dùng",
-    "p": "Trả trước, tính theo token. Không thuê bao — nạp tiền bất cứ lúc nào. Giá bằng 70% giá nội địa Trung Quốc, hiển thị bằng USD & VND.",
+    "p": "Trả trước, tính theo token. Không thuê bao — nạp tiền bất cứ lúc nào. Giá cực kỳ cạnh tranh, hiển thị bằng USD & VND.",
     "pt_model": "Mô hình",
     "pt_in": "Đầu vào / 1M token",
     "pt_out": "Đầu ra / 1M token",
@@ -67,7 +67,7 @@
     "h2": "Dành cho lập trình viên, giá cho mọi người",
     "f1_t": "Tương thích OpenAI tức thì",
     "f1_d": "Đổi một dòng cấu hình SDK OpenAI là mọi thứ hoạt động.",
-    "f2_t": "Bằng 70% giá Trung Quốc",
+    "f2_t": "Giá cực kỳ cạnh tranh",
     "f2_d": "Mô hình Trung Quốc với giá Trung Quốc, thanh toán bằng USD hoặc VND.",
     "f3_t": "Thanh toán nội địa",
     "f3_d": "MoMo, ZaloPay, Stripe, PayPal, Alipay và thẻ ngân hàng.",
@@ -270,7 +270,7 @@
   "detail_price_in": "Đầu vào",
   "detail_price_out": "Đầu ra",
   "detail_pricing": "Giá",
-  "detail_pricing_note": "Giá mỗi 1 triệu tokens · đã gồm ưu đãi 70% giá Trung Quốc",
+  "detail_pricing_note": "Giá mỗi 1 triệu tokens · đã gồm ưu đãi cực kỳ cạnh tranh",
   "detail_rel": "Mô hình liên quan",
   "detail_rel_view": "Xem tất cả mô hình →",
   "detail_spec": "Thông số kỹ thuật",
@@ -355,7 +355,7 @@
   "price_note": "* Giá đang là tạm tính, chờ xác nhận giá DashScope × 0.7.",
   "price_rule": "Quy tắc tính phí",
   "price_rule_p": "Phí = token × đơn giá, trừ từ số dư. Không thuê bao, không cam kết. Tỷ giá VND áp dụng tại thời điểm nạp tiền.",
-  "price_sub": "Tất cả giá đã bằng 70% giá nội địa Trung Quốc. Hiển thị USD và VND theo tỷ giá hiện tại.",
+  "price_sub": "Tất cả giá cực kỳ cạnh tranh. Hiển thị USD và VND theo tỷ giá hiện tại.",
   "price_th_in": "Đầu vào / 1M",
   "price_th_model": "Mô hình",
   "price_th_out": "Đầu ra / 1M",
@@ -373,7 +373,7 @@
   "q_req": "Yêu cầu",
   "q_save": "Lưu",
   "q_total": "Tổng",
-  "rate_note": "Tỷ giá tham khảo: 1 USD ≈ 25.400₫ (cập nhật tự động khi nạp tiền)",
+  "rate_note": "Tỷ giá tham khảo: 1 USD ≈ 25.400₫ · tỷ giá ổn định, hiệu chỉnh định kỳ",
   "s1_t": "Tạo tài khoản",
   "s2_t": "Tạo API key",
   "s3_t": "Gọi API",

+ 6 - 6
apps/web/messages/zh-CN.json

@@ -12,7 +12,7 @@
     "signup": "立即开始"
   },
   "hero": {
-    "badge": "OpenAI 兼容 · 国内价 7 折 · 越南优先",
+    "badge": "OpenAI 兼容 · 极致低价 · 越南优先",
     "h1": "一点触达",
     "h1_grad": "全部 AI。",
     "sub": "DoTouch.AI 将中国前沿大模型——GLM 5.2、DeepSeek V4 等——以难以置信的低价带给全球开发者与中小企业。同样的 OpenAI API,便宜 30%,零迁移成本。",
@@ -54,7 +54,7 @@
   "pricing": {
     "kicker": "定价",
     "h2": "按用量付费",
-    "p": "预充值,按 token 计量。无订阅——随时充值。价格 = 国内价 7 折,以美元与越南盾双币种显示。",
+    "p": "预充值,按 token 计量。无订阅——随时充值。价格 = 极致低价,以美元与越南盾双币种显示。",
     "pt_model": "模型",
     "pt_in": "输入 / 1M tokens",
     "pt_out": "输出 / 1M tokens",
@@ -67,7 +67,7 @@
     "h2": "为开发者而生,人人用得起",
     "f1_t": "无缝兼容 OpenAI",
     "f1_d": "改一行 OpenAI SDK 配置即可使用。",
-    "f2_t": "国内价 7 折",
+    "f2_t": "极致低价",
     "f2_d": "中国模型、中国价格,美元或越南盾支付。",
     "f3_t": "本地化支付",
     "f3_d": "MoMo、ZaloPay、Stripe、PayPal、Alipay 与银行卡。",
@@ -270,7 +270,7 @@
   "detail_price_in": "输入",
   "detail_price_out": "输出",
   "detail_pricing": "价格",
-  "detail_pricing_note": "每 1M tokens · 已含国内价 7 折",
+  "detail_pricing_note": "每 1M tokens · 已含极致低价",
   "detail_rel": "相关模型",
   "detail_rel_view": "查看全部模型 →",
   "detail_spec": "技术规格",
@@ -355,7 +355,7 @@
   "price_note": "* 价格为占位值,待百炼 × 0.7 确认。",
   "price_rule": "扣费规则",
   "price_rule_p": "费用 = token × 单价,从余额扣除。无订阅、无承诺。越南盾按充值时刻汇率结算。",
-  "price_sub": "所有价格 = 国内价 7 折。以美元与越南盾按当前汇率显示。",
+  "price_sub": "所有价格 = 极致低价。以美元与越南盾按当前汇率显示。",
   "price_th_in": "输入 / 1M",
   "price_th_model": "模型",
   "price_th_out": "输出 / 1M",
@@ -373,7 +373,7 @@
   "q_req": "请求数",
   "q_save": "保存",
   "q_total": "总量",
-  "rate_note": "参考汇率:1 USD ≈ ¥7.20(充值时刻自动更新)",
+  "rate_note": "参考汇率:1 USD ≈ ¥7.20 · 稳定汇率,定期校准",
   "s1_t": "创建账号",
   "s2_t": "生成 API Key",
   "s3_t": "调用 API",

+ 6 - 6
apps/web/messages/zh-TW.json

@@ -12,7 +12,7 @@
     "signup": "立即開始"
   },
   "hero": {
-    "badge": "OpenAI 相容 · 中國國內價 7 折 · 越南優先",
+    "badge": "OpenAI 相容 · 中國國內價 低价 · 越南優先",
     "h1": "一點觸達",
     "h1_grad": "所有 AI。",
     "sub": "DoTouch.AI 將中國前沿大模型——GLM 5.2、DeepSeek V4 等——以難以置信的低價帶給全球開發者與中小企業。同樣的 OpenAI API,便宜 30%,零遷移成本。",
@@ -54,7 +54,7 @@
   "pricing": {
     "kicker": "定價",
     "h2": "按用量付費",
-    "p": "預儲值,按 token 計量。無訂閱——隨時儲值。價格 = 中國國內價 7 折,以美元與越南盾雙幣種顯示。",
+    "p": "預儲值,按 token 計量。無訂閱——隨時儲值。價格 = 中國國內價 低价,以美元與越南盾雙幣種顯示。",
     "pt_model": "模型",
     "pt_in": "輸入 / 1M tokens",
     "pt_out": "輸出 / 1M tokens",
@@ -67,7 +67,7 @@
     "h2": "為開發者而生,人人用得起",
     "f1_t": "無縫相容 OpenAI",
     "f1_d": "改一行 OpenAI SDK 設定即可使用。",
-    "f2_t": "中國國內價 7 折",
+    "f2_t": "中國國內價 低价",
     "f2_d": "中國模型、中國價格,美元或越南盾支付。",
     "f3_t": "本地化支付",
     "f3_d": "MoMo、ZaloPay、Stripe、PayPal、Alipay 與銀行卡。",
@@ -270,7 +270,7 @@
   "detail_price_in": "輸入",
   "detail_price_out": "輸出",
   "detail_pricing": "價格",
-  "detail_pricing_note": "每 1M tokens · 已含中國國內價 7 折",
+  "detail_pricing_note": "每 1M tokens · 已含中國國內價 低价",
   "detail_rel": "相關模型",
   "detail_rel_view": "查看全部模型 →",
   "detail_spec": "技術規格",
@@ -355,7 +355,7 @@
   "price_note": "* 價格為佔位值,待百煉 × 0.7 確認。",
   "price_rule": "扣費規則",
   "price_rule_p": "費用 = token × 單價,從餘額扣除。無訂閱、無承諾。越南盾按儲值時刻匯率結算。",
-  "price_sub": "所有價格 = 中國國內價 7 折。以美元與越南盾按當前匯率顯示。",
+  "price_sub": "所有價格 = 中國國內價 低价。以美元與越南盾按當前匯率顯示。",
   "price_th_in": "輸入 / 1M",
   "price_th_model": "模型",
   "price_th_out": "輸出 / 1M",
@@ -373,7 +373,7 @@
   "q_req": "請求數",
   "q_save": "儲存",
   "q_total": "總量",
-  "rate_note": "參考匯率:1 USD ≈ ¥7.20(儲值時刻自動更新)",
+  "rate_note": "參考匯率:1 USD ≈ ¥7.20 · 穩定匯率,定期校準",
   "s1_t": "建立帳號",
   "s2_t": "產生 API Key",
   "s3_t": "呼叫 API",

+ 65 - 0
apps/web/src/components/FxPrice.tsx

@@ -0,0 +1,65 @@
+/**
+ * FxPrice - 本币价格显示组件
+ *
+ * 定价策略:因收款为本币,采用「稳定汇率」——后端 /v1/config/fx 由管理后台低频维护(建议月度),
+ * 不接实时 API,避免价格频繁波动。USD 为基准价,本币按稳定汇率换算为主展示。
+ *
+ * 渲染顺序:SSG 首屏显示 USD 基准 → 水合后 fetch 稳定汇率 → 切换为本币主价 + USD 参考。
+ */
+'use client';
+
+import { useLocale } from 'next-intl';
+import { useEffect, useState } from 'react';
+
+type Fx = { vndRate: number; cnyRate: number };
+
+let cache: Fx | null = null;
+let inflight: Promise<Fx | null> | null = null;
+
+function fetchFx(): Promise<Fx | null> {
+  if (cache) return Promise.resolve(cache);
+  if (!inflight) {
+    inflight = fetch('/v1/config/fx')
+      .then((r) => (r.ok ? r.json() : null))
+      .then((d) => (d && typeof d.vndRate === 'number' ? (d as Fx) : null))
+      .catch(() => null)
+      .finally(() => {
+        inflight = null;
+      });
+  }
+  return inflight;
+}
+
+function formatVND(n: number): string {
+  return n >= 1000 ? `${Math.round(n).toLocaleString('en-US')}₫` : `${n.toFixed(0)}₫`;
+}
+
+export function FxPrice({ usd, showUsd = false }: { usd: number; showUsd?: boolean }) {
+  const locale = useLocale();
+  const [fx, setFx] = useState<Fx | null>(null);
+
+  useEffect(() => {
+    let alive = true;
+    fetchFx().then((d) => {
+      if (alive && d) setFx(d);
+    });
+    return () => {
+      alive = false;
+    };
+  }, []);
+
+  const usdText = `$${usd.toFixed(2)}`;
+  const local =
+    locale === 'vi' && fx
+      ? formatVND(usd * fx.vndRate)
+      : (locale === 'zh-CN' || locale === 'zh-TW') && fx
+        ? `¥${(usd * fx.cnyRate).toFixed(2)}`
+        : usdText;
+
+  return (
+    <span>
+      {local}
+      {showUsd && locale !== 'en' && <span className="ml-1 text-[0.9em] opacity-60">({usdText})</span>}
+    </span>
+  );
+}

+ 15 - 8
apps/web/src/components/ModelsSection.tsx

@@ -3,6 +3,7 @@
  */
 import Link from 'next/link';
 import { useLocale, useTranslations } from 'next-intl';
+import { FxPrice } from './FxPrice';
 
 type ModelCard = {
   id: string;
@@ -10,8 +11,8 @@ type ModelCard = {
   shortKey: string;
   tagKey: string;
   tagClass: string;
-  usdIn: string;
-  usdOut: string;
+  usdIn: number;
+  usdOut: number;
 };
 
 const tagStyles = {
@@ -22,10 +23,10 @@ const tagStyles = {
 } as const;
 
 const models: ModelCard[] = [
-  { id: 'glm-5.2', nameKey: 'glm_name', shortKey: 'glm_short', tagKey: 'tag_flagship', tagClass: tagStyles.purple, usdIn: '$0.98', usdOut: '$3.08' },
-  { id: 'deepseek-v4', nameKey: 'dsv4_name', shortKey: 'dsv4_short', tagKey: 'tag_best', tagClass: tagStyles.green, usdIn: '$0.14', usdOut: '$0.28' },
-  { id: 'deepseek-v4-pro', nameKey: 'dsv4p_name', shortKey: 'dsv4p_short', tagKey: 'tag_reasoning', tagClass: tagStyles.gold, usdIn: '$0.30', usdOut: '$0.60' },
-  { id: 'qwen-max', nameKey: 'qwen_name', shortKey: 'qwen_short', tagKey: 'tag_enterprise', tagClass: tagStyles.gray, usdIn: '$1.96', usdOut: '$7.84' },
+  { id: 'glm-5.2', nameKey: 'glm_name', shortKey: 'glm_short', tagKey: 'tag_flagship', tagClass: tagStyles.purple, usdIn: 0.98, usdOut: 3.08 },
+  { id: 'deepseek-v4', nameKey: 'dsv4_name', shortKey: 'dsv4_short', tagKey: 'tag_best', tagClass: tagStyles.green, usdIn: 0.14, usdOut: 0.28 },
+  { id: 'deepseek-v4-pro', nameKey: 'dsv4p_name', shortKey: 'dsv4p_short', tagKey: 'tag_reasoning', tagClass: tagStyles.gold, usdIn: 0.3, usdOut: 0.6 },
+  { id: 'qwen-max', nameKey: 'qwen_name', shortKey: 'qwen_short', tagKey: 'tag_enterprise', tagClass: tagStyles.gray, usdIn: 1.96, usdOut: 7.84 },
 ];
 
 export function ModelsSection() {
@@ -64,10 +65,16 @@ export function ModelsSection() {
               </div>
               <p className="mt-1.5 min-h-[34px] text-[12.5px] text-brand-muted">{t(m.shortKey)}</p>
               <div className="mt-3 text-xs text-brand-muted">
-                {t('price_in')} <span className="font-semibold text-brand-text">{m.usdIn}</span>
+                {t('price_in')}{' '}
+                <span className="font-semibold text-brand-text">
+                  <FxPrice usd={m.usdIn} showUsd />
+                </span>
               </div>
               <div className="text-xs text-brand-muted">
-                {t('price_out')} <span className="font-semibold text-brand-text">{m.usdOut}</span>
+                {t('price_out')}{' '}
+                <span className="font-semibold text-brand-text">
+                  <FxPrice usd={m.usdOut} showUsd />
+                </span>
               </div>
               <div className="mt-3 text-[13px] font-semibold text-brand-purple-l">
                 {t('see_detail')}

+ 17 - 12
apps/web/src/components/PricingPreview.tsx

@@ -3,21 +3,22 @@
  */
 import Link from 'next/link';
 import { useLocale, useTranslations } from 'next-intl';
+import { FxPrice } from '../components/FxPrice';
 
 type PriceRow = {
   id: string;
   nameKey: string;
-  usdIn: string;
-  usdInCut: string;
-  usdOut: string;
-  usdOutCut: string;
+  usdIn: number;
+  usdInCut: number;
+  usdOut: number;
+  usdOutCut: number;
 };
 
 const rows: PriceRow[] = [
-  { id: 'glm', nameKey: 'glm_name', usdIn: '$0.98', usdInCut: '$1.40', usdOut: '$3.08', usdOutCut: '$4.40' },
-  { id: 'dsv4', nameKey: 'dsv4_name', usdIn: '$0.14', usdInCut: '$0.20', usdOut: '$0.28', usdOutCut: '$0.40' },
-  { id: 'dsv4p', nameKey: 'dsv4p_name', usdIn: '$0.30', usdInCut: '$0.43', usdOut: '$0.60', usdOutCut: '$0.86' },
-  { id: 'qwen', nameKey: 'qwen_name', usdIn: '$1.96', usdInCut: '$2.80', usdOut: '$7.84', usdOutCut: '$11.20' },
+  { id: 'glm', nameKey: 'glm_name', usdIn: 0.98, usdInCut: 1.4, usdOut: 3.08, usdOutCut: 4.4 },
+  { id: 'dsv4', nameKey: 'dsv4_name', usdIn: 0.14, usdInCut: 0.2, usdOut: 0.28, usdOutCut: 0.4 },
+  { id: 'dsv4p', nameKey: 'dsv4p_name', usdIn: 0.3, usdInCut: 0.43, usdOut: 0.6, usdOutCut: 0.86 },
+  { id: 'qwen', nameKey: 'qwen_name', usdIn: 1.96, usdInCut: 2.8, usdOut: 7.84, usdOutCut: 11.2 },
 ];
 
 export function PricingPreview() {
@@ -61,12 +62,16 @@ export function PricingPreview() {
                     {tm(row.nameKey)}
                   </td>
                   <td className="whitespace-nowrap border-t border-white/[0.08] px-4 py-[13px] font-mono text-[13px] group-hover:bg-[rgba(124,92,255,.05)]">
-                    <span className="font-semibold text-brand-text">{row.usdIn}</span>
-                    <span className="ml-1 text-xs line-through opacity-50">{row.usdInCut}</span>
+                    <span className="font-semibold text-brand-text">
+                      <FxPrice usd={row.usdIn} showUsd />
+                    </span>
+                    <span className="ml-1 text-xs line-through opacity-50">${row.usdInCut.toFixed(2)}</span>
                   </td>
                   <td className="whitespace-nowrap border-t border-white/[0.08] px-4 py-[13px] font-mono text-[13px] group-hover:bg-[rgba(124,92,255,.05)]">
-                    <span className="font-semibold text-brand-text">{row.usdOut}</span>
-                    <span className="ml-1 text-xs line-through opacity-50">{row.usdOutCut}</span>
+                    <span className="font-semibold text-brand-text">
+                      <FxPrice usd={row.usdOut} showUsd />
+                    </span>
+                    <span className="ml-1 text-xs line-through opacity-50">${row.usdOutCut.toFixed(2)}</span>
                   </td>
                   <td className="border-t border-white/[0.08] px-4 py-[13px] group-hover:bg-[rgba(124,92,255,.05)]">
                     <span className="whitespace-nowrap rounded-full border border-[rgba(0,229,160,.3)] bg-[rgba(0,229,160,.1)] px-2 py-px text-xs text-brand-green-l">

+ 4 - 4
apps/web/src/components/admin/panels/SettingsPanel.tsx

@@ -32,14 +32,14 @@ export function SettingsPanel() {
     <>
       {/* 货币与汇率 */}
       <SettingCard title="货币与汇率">
-        <SettingRow title="美元 → 越南盾" desc="充值结算汇率 · 接入实时汇率 API(TODO)">
+        <SettingRow title="美元 → 越南盾" desc="稳定汇率 · 因本币收款,低频人工维护(建议月度),不接实时 API 避免定价波动">
           <SettingInput defaultValue="25,400" />
         </SettingRow>
-        <SettingRow title="美元 → 人民币" desc="展示汇率">
+        <SettingRow title="美元 → 人民币" desc="展示汇率 · 稳定策略同上">
           <SettingInput defaultValue="7.20" />
         </SettingRow>
-        <SettingRow title="实时汇率自动更新" desc="接入第三方汇率 API 后启用">
-          <Switch />
+        <SettingRow title="汇率更新提醒" desc="低频人工更新(建议每月校准一次)">
+          <Switch defaultChecked={false} />
         </SettingRow>
       </SettingCard>
 

+ 16 - 16
apps/web/src/lib/seo.ts

@@ -19,7 +19,7 @@ export const SEO_META: Record<Locale, Record<string, PageMeta>> = {
   vi: {
     home: {
       title: 'API AI giá rẻ cho Việt Nam | DeepSeek, GLM, Qwen',
-      desc: 'DoTouch.AI – Nền tảng API AI Trung Quốc giá rẻ (DeepSeek V4, GLM 5.2, Qwen). Tương thích OpenAI, giá bằng 70% Trung Quốc, thanh toán MoMo/ZaloPay.',
+      desc: 'DoTouch.AI – Nền tảng API AI Trung Quốc giá rẻ (DeepSeek V4, GLM 5.2, Qwen). Tương thích OpenAI, giá cực kỳ cạnh tranh, thanh toán MoMo/ZaloPay.',
     },
     models: {
       title: 'Mô hình AI | DeepSeek, GLM, Qwen API giá rẻ',
@@ -30,8 +30,8 @@ export const SEO_META: Record<Locale, Record<string, PageMeta>> = {
       desc: 'Gọi {model} qua API tại DoTouch.AI với giá rẻ hơn 30%. Xem giá, thông số, khả năng và ví dụ code.',
     },
     pricing: {
-      title: 'Bảng giá API AI | Giá bằng 70% Trung Quốc',
-      desc: 'Bảng giá API AI tại DoTouch.AI – trả trước, tính theo token, giá chỉ bằng 70% giá nội địa Trung Quốc. Thanh toán MoMo, ZaloPay, Stripe.',
+      title: 'Bảng giá API AI | Giá cực kỳ cạnh tranh',
+      desc: 'Bảng giá API AI tại DoTouch.AI – trả trước, tính theo token, giá cực kỳ cạnh tranh. Thanh toán MoMo, ZaloPay, Stripe.',
     },
     catalog: {
       title: 'Model Catalog · 236 mô hình | DoTouch.AI',
@@ -45,7 +45,7 @@ export const SEO_META: Record<Locale, Record<string, PageMeta>> = {
   en: {
     home: {
       title: 'Affordable AI API for Vietnam | DeepSeek, GLM, Qwen',
-      desc: 'DoTouch.AI – Affordable Chinese LLM API platform (DeepSeek V4, GLM 5.2, Qwen). OpenAI-compatible, 70% of China price, MoMo/ZaloPay payments.',
+      desc: 'DoTouch.AI – Affordable Chinese LLM API platform (DeepSeek V4, GLM 5.2, Qwen). OpenAI-compatible, unbeatable low price, MoMo/ZaloPay payments.',
     },
     models: {
       title: 'AI Models | DeepSeek, GLM, Qwen API',
@@ -56,8 +56,8 @@ export const SEO_META: Record<Locale, Record<string, PageMeta>> = {
       desc: 'Call {model} via DoTouch.AI API at 30% lower cost. See pricing, specs, capabilities and code examples.',
     },
     pricing: {
-      title: 'AI API Pricing | 70% of China Price',
-      desc: 'DoTouch.AI API pricing – prepaid, metered per token, at only 70% of China domestic price. Pay with MoMo, ZaloPay, Stripe.',
+      title: 'AI API Pricing | Unbeatable Low Price',
+      desc: 'DoTouch.AI API pricing – prepaid, metered per token, at only unbeatable low price. Pay with MoMo, ZaloPay, Stripe.',
     },
     catalog: {
       title: 'Model Catalog · 236 Models | DoTouch.AI',
@@ -71,19 +71,19 @@ export const SEO_META: Record<Locale, Record<string, PageMeta>> = {
   'zh-CN': {
     home: {
       title: '低价 AI API | DeepSeek、GLM、Qwen 越南直连',
-      desc: 'DoTouch.AI – 国产大模型 API 中转平台(DeepSeek V4、GLM 5.2、Qwen)。OpenAI 兼容,国内价 7 折,支持 MoMo/ZaloPay 等本地支付。',
+      desc: 'DoTouch.AI – 国产大模型 API 中转平台(DeepSeek V4、GLM 5.2、Qwen)。OpenAI 兼容,极致低价,支持 MoMo/ZaloPay 等本地支付。',
     },
     models: {
       title: '模型列表 | DeepSeek、GLM、Qwen API',
       desc: 'DoTouch.AI 模型列表:DeepSeek V4、GLM 5.2、Qwen Max。对比上下文、价格与能力,OpenAI 兼容。',
     },
     detail: {
-      title: '{model} API – 7 折低价,OpenAI 兼容',
-      desc: '通过 DoTouch.AI API 以 7 折价格调用 {model}。查看价格、规格、能力与代码示例。',
+      title: '{model} API – 低价低价,OpenAI 兼容',
+      desc: '通过 DoTouch.AI API 以 低价价格调用 {model}。查看价格、规格、能力与代码示例。',
     },
     pricing: {
-      title: 'API 定价 | 国内价 7 折',
-      desc: 'DoTouch.AI API 定价 – 预充值、按 token 计量,仅国内价 7 折。支持 MoMo、ZaloPay、Stripe 支付。',
+      title: 'API 定价 | 极致低价',
+      desc: 'DoTouch.AI API 定价 – 预充值、按 token 计量,仅极致低价。支持 MoMo、ZaloPay、Stripe 支付。',
     },
     catalog: {
       title: '模型大全 · 236 个模型 | DoTouch.AI',
@@ -97,19 +97,19 @@ export const SEO_META: Record<Locale, Record<string, PageMeta>> = {
   'zh-TW': {
     home: {
       title: '低價 AI API | DeepSeek、GLM、Qwen 越南直連',
-      desc: 'DoTouch.AI – 國產大模型 API 中轉平台(DeepSeek V4、GLM 5.2、Qwen)。OpenAI 相容,中國國內價 7 折,支援 MoMo/ZaloPay 等本地支付。',
+      desc: 'DoTouch.AI – 國產大模型 API 中轉平台(DeepSeek V4、GLM 5.2、Qwen)。OpenAI 相容,中國國內價 低价,支援 MoMo/ZaloPay 等本地支付。',
     },
     models: {
       title: '模型列表 | DeepSeek、GLM、Qwen API',
       desc: 'DoTouch.AI 模型列表:DeepSeek V4、GLM 5.2、Qwen Max。比較上下文、價格與能力,OpenAI 相容。',
     },
     detail: {
-      title: '{model} API – 7 折低價,OpenAI 相容',
-      desc: '透過 DoTouch.AI API 以 7 折價格呼叫 {model}。查看價格、規格、能力與程式碼範例。',
+      title: '{model} API – 低价低價,OpenAI 相容',
+      desc: '透過 DoTouch.AI API 以 低价價格呼叫 {model}。查看價格、規格、能力與程式碼範例。',
     },
     pricing: {
-      title: 'API 定價 | 中國國內價 7 折',
-      desc: 'DoTouch.AI API 定價 – 預儲值、按 token 計量,僅中國國內價 7 折。支援 MoMo、ZaloPay、Stripe 支付。',
+      title: 'API 定價 | 中國國內價 低价',
+      desc: 'DoTouch.AI API 定價 – 預儲值、按 token 計量,極致低價。支援 MoMo、ZaloPay、Stripe 支付。',
     },
     catalog: {
       title: '模型大全 · 236 個模型 | DoTouch.AI',

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
apps/web/tsconfig.tsbuildinfo


+ 21 - 21
docs/design/web-v1.1.0/i18n.js

@@ -32,7 +32,7 @@ const I18N = {
     nav_models:"Mô hình", nav_pricing:"Bảng giá", nav_docs:"Tài liệu", nav_login:"Đăng nhập", nav_signup:"Bắt đầu",
     crumb_home:"Trang chủ",
     /* ── 首页 ── */
-    hero_badge:"Tương thích OpenAI · Bằng 70% giá Trung Quốc · Ưu tiên Việt Nam",
+    hero_badge:"Tương thích OpenAI · Cực kỳ cạnh tranh · Ưu tiên Việt Nam",
     hero_h1:"Một chạm.", hero_h1_grad:"Mọi AI.",
     hero_sub:"DoTouch.AI mang sức mạnh của các mô hình AI tiên phong Trung Quốc — GLM 5.2, DeepSeek V4 và hơn thế nữa — đến với nhà phát triển và doanh nghiệp nhỏ trên toàn thế giới với giá cực rẻ. API OpenAI tương thích. Rẻ hơn 30%. Không cần di chuyển.",
     hero_cta1:"Bắt đầu miễn phí", hero_cta2:"Xem bảng giá",
@@ -43,12 +43,12 @@ const I18N = {
     model_link:"Chi tiết", 
     price_in:"Đầu vào", price_out:"Đầu ra",
     pricing_kicker:"Bảng giá", pricing_h2:"Chỉ trả cho những gì bạn dùng",
-    pricing_p:"Trả trước, tính theo token. Không thuê bao — nạp tiền bất cứ lúc nào. Giá bằng 70% giá nội địa Trung Quốc, hiển thị bằng USD & VND.",
+    pricing_p:"Trả trước, tính theo token. Không thuê bao — nạp tiền bất cứ lúc nào. Giá cực kỳ cạnh tranh, hiển thị bằng USD & VND.",
     pt_model:"Mô hình", pt_in:"Đầu vào / 1M token", pt_out:"Đầu ra / 1M token", pt_save:"Tiết kiệm",
     pricing_more:"Xem bảng giá đầy đủ →",
     feat_kicker:"Vì sao DoTouch", feat_h2:"Dành cho lập trình viên, giá cho mọi người",
     f1_t:"Tương thích OpenAI tức thì", f1_d:"Đổi một dòng cấu hình SDK OpenAI là mọi thứ hoạt động.",
-    f2_t:"Bằng 70% giá Trung Quốc", f2_d:"Mô hình Trung Quốc với giá Trung Quốc, thanh toán bằng USD hoặc VND.",
+    f2_t:"Cực kỳ cạnh tranh", f2_d:"Mô hình Trung Quốc với giá Trung Quốc, thanh toán bằng USD hoặc VND.",
     f3_t:"Thanh toán nội địa", f3_d:"MoMo, ZaloPay, Stripe, PayPal, Alipay và thẻ ngân hàng.",
     f4_t:"Hỗ trợ ưu tiên Việt Nam", f4_d:"Console, tài liệu và hỗ trợ tiếng Việt.",
     f5_t:"Độ trễ thấp, uptime cao", f5_d:"Edge node tại Hồng Kông kết nối trực tiếp nguồn cấp.",
@@ -117,14 +117,14 @@ const I18N = {
     detail_use_btn:"Bắt đầu với API này",
     detail_spec:"Thông số kỹ thuật", detail_spec_vendor:"Nhà cung cấp", detail_spec_ctx:"Ngữ cảnh", detail_spec_out:"Đầu ra tối đa", detail_spec_base:"BASE URL", detail_spec_rate:"Giới hạn tốc độ",
     detail_cap:"Khả năng", detail_cap_json:"JSON Output", detail_cap_tool:"Tool Calls", detail_cap_stream:"Streaming (SSE)", detail_cap_think:"Chế độ suy luận",
-    detail_pricing:"Giá", detail_pricing_note:"Giá mỗi 1 triệu tokens · đã gồm ưu đãi 70% giá Trung Quốc",
+    detail_pricing:"Giá", detail_pricing_note:"Giá mỗi 1 triệu tokens · đã gồm ưu đãi cực kỳ cạnh tranh",
     detail_price_in:"Đầu vào", detail_price_out:"Đầu ra",
     detail_code:"Ví dụ gọi API", detail_code_tab_curl:"cURL", detail_code_tab_py:"Python SDK",
     detail_rel:"Mô hình liên quan", detail_rel_view:"Xem tất cả mô hình →",
     detail_billing:"Quy tắc tính phí", detail_billing_p:"Phí = token tiêu thụ × đơn giá, trừ trực tiếp từ số dư nạp trước. Giá có thể thay đổi; xem trang này để cập nhật mới nhất.",
     spec_ok:"Hỗ trợ", spec_no:"Không hỗ trợ",
     /* ── 定价页 ── */
-    price_h1:"Bảng giá", price_sub:"Tất cả giá đã bằng 70% giá nội địa Trung Quốc. Hiển thị USD và VND theo tỷ giá hiện tại.",
+    price_h1:"Bảng giá", price_sub:"Tất cả giá cực kỳ cạnh tranh. Hiển thị USD và VND theo tỷ giá hiện tại.",
     price_th_model:"Mô hình", price_th_in:"Đầu vào / 1M", price_th_out:"Đầu ra / 1M", price_th_save:"Tiết kiệm",
     price_rule:"Quy tắc tính phí", price_rule_p:"Phí = token × đơn giá, trừ từ số dư. Không thuê bao, không cam kết. Tỷ giá VND áp dụng tại thời điểm nạp tiền.",
     price_faq:"Câu hỏi về giá", price_note:"* Giá đang là tạm tính, chờ xác nhận giá DashScope × 0.7.",
@@ -144,7 +144,7 @@ const I18N = {
   en: {
     nav_models:"Models", nav_pricing:"Pricing", nav_docs:"Docs", nav_login:"Log in", nav_signup:"Get Started",
     crumb_home:"Home",
-    hero_badge:"OpenAI Compatible · From 70% of China Price · Vietnam-First",
+    hero_badge:"OpenAI Compatible · Unbeatable Low Price · Vietnam-First",
     hero_h1:"One Touch.", hero_h1_grad:"All AI.",
     hero_sub:"DoTouch.AI brings the power of Chinese frontier models — GLM 5.2, DeepSeek V4 and more — to developers and small businesses worldwide at unbelievably low prices. Same OpenAI API. 30% cheaper. Zero migration.",
     hero_cta1:"Start for Free", hero_cta2:"View Pricing",
@@ -155,12 +155,12 @@ const I18N = {
     model_link:"Details",
     price_in:"Input", price_out:"Output",
     pricing_kicker:"Pricing", pricing_h2:"Pay Only for What You Use",
-    pricing_p:"Prepaid, metered per token. No subscription — top up anytime. Prices are 70% of the China domestic price, shown in USD & VND.",
+    pricing_p:"Prepaid, metered per token. No subscription — top up anytime. Prices are unbeatable low, shown in USD & VND.",
     pt_model:"Model", pt_in:"Input / 1M tokens", pt_out:"Output / 1M tokens", pt_save:"You save",
     pricing_more:"View full pricing →",
     feat_kicker:"Why DoTouch", feat_h2:"Built for Developers, Priced for Everyone",
     f1_t:"Drop-in OpenAI Compatible", f1_d:"Change one line in your OpenAI SDK config and everything works.",
-    f2_t:"70% of China Price", f2_d:"Chinese models at Chinese prices, paid in USD or VND.",
+    f2_t:"Unbeatable Low Price", f2_d:"Chinese models at Chinese prices, paid in USD or VND.",
     f3_t:"Local Payments", f3_d:"MoMo, ZaloPay, Stripe, PayPal, Alipay and bank cards.",
     f4_t:"Vietnam-First Support", f4_d:"Vietnamese console, docs and support.",
     f5_t:"Low Latency, High Uptime", f5_d:"Hong Kong edge nodes with a direct line to upstream.",
@@ -227,13 +227,13 @@ const I18N = {
     detail_use_btn:"Start with this model",
     detail_spec:"Specifications", detail_spec_vendor:"Vendor", detail_spec_ctx:"Context window", detail_spec_out:"Max output", detail_spec_base:"BASE URL", detail_spec_rate:"Rate limit",
     detail_cap:"Capabilities", detail_cap_json:"JSON Output", detail_cap_tool:"Tool Calls", detail_cap_stream:"Streaming (SSE)", detail_cap_think:"Thinking mode",
-    detail_pricing:"Pricing", detail_pricing_note:"Per 1M tokens · 70% of China price included",
+    detail_pricing:"Pricing", detail_pricing_note:"Per 1M tokens · unbeatable price included",
     detail_price_in:"Input", detail_price_out:"Output",
     detail_code:"API Example", detail_code_tab_curl:"cURL", detail_code_tab_py:"Python SDK",
     detail_rel:"Related models", detail_rel_view:"View all models →",
     detail_billing:"Billing rules", detail_billing_p:"Cost = tokens × unit price, deducted from your prepaid balance. Prices may change; check this page for the latest.",
     spec_ok:"Supported", spec_no:"Not supported",
-    price_h1:"Pricing", price_sub:"All prices are 70% of the China domestic price. Shown in USD and VND at the current rate.",
+    price_h1:"Pricing", price_sub:"All prices are unbeatable low. Shown in USD and VND at the current rate.",
     price_th_model:"Model", price_th_in:"Input / 1M", price_th_out:"Output / 1M", price_th_save:"You save",
     price_rule:"Billing rules", price_rule_p:"Cost = tokens × unit price, deducted from balance. No subscription, no commitment. VND rate applied at top-up.",
     price_faq:"Pricing FAQ", price_note:"* Prices are placeholders pending DashScope × 0.7 confirmation.",
@@ -252,23 +252,23 @@ const I18N = {
   "zh-CN": {
     nav_models:"模型", nav_pricing:"定价", nav_docs:"文档", nav_login:"登录", nav_signup:"立即开始",
     crumb_home:"首页",
-    hero_badge:"OpenAI 兼容 · 国内价 7 折 · 越南优先",
+    hero_badge:"OpenAI 兼容 · 极致低价 · 越南优先",
     hero_h1:"一点触达", hero_h1_grad:"全部 AI。",
     hero_sub:"DoTouch.AI 将中国前沿大模型——GLM 5.2、DeepSeek V4 等——以难以置信的低价带给全球开发者与中小企业。同样的 OpenAI API,便宜 30%,零迁移成本。",
     hero_cta1:"免费开始", hero_cta2:"查看定价",
-    stat_models:"4+", stat_models_l:"前沿模型", stat_save:"30%", stat_save_l:"低于国内价",
+    stat_models:"4+", stat_models_l:"前沿模型", stat_save:"30%", stat_save_l:"低于国内价",
     stat_api:"100%", stat_api_l:"OpenAI API 兼容", stat_pay:"6+", stat_pay_l:"支付方式",
     models_kicker:"模型", models_h2:"中国前沿模型,一个 API",
     models_p:"所有模型经由阿里云百炼提供服务,完全兼容 OpenAI 格式。可查看每个模型的详细信息。",
     model_link:"详情",
     price_in:"输入", price_out:"输出",
     pricing_kicker:"定价", pricing_h2:"按用量付费",
-    pricing_p:"预充值,按 token 计量。无订阅——随时充值。价格 = 国内价 7 折,以美元与越南盾双币种显示。",
+    pricing_p:"预充值,按 token 计量。无订阅——随时充值。价格 = 极致低价,以美元与越南盾双币种显示。",
     pt_model:"模型", pt_in:"输入 / 1M tokens", pt_out:"输出 / 1M tokens", pt_save:"节省",
     pricing_more:"查看完整定价 →",
     feat_kicker:"为什么选择 DoTouch", feat_h2:"为开发者而生,人人用得起",
     f1_t:"无缝兼容 OpenAI", f1_d:"改一行 OpenAI SDK 配置即可使用。",
-    f2_t:"国内价 7 折", f2_d:"中国模型、中国价格,美元或越南盾支付。",
+    f2_t:"极致低价", f2_d:"中国模型、中国价格,美元或越南盾支付。",
     f3_t:"本地化支付", f3_d:"MoMo、ZaloPay、Stripe、PayPal、Alipay 与银行卡。",
     f4_t:"越南优先支持", f4_d:"越南语控制台、文档与客服。",
     f5_t:"低延迟高可用", f5_d:"香港边缘节点直连上游容量。",
@@ -335,13 +335,13 @@ const I18N = {
     detail_use_btn:"开始使用此模型",
     detail_spec:"技术规格", detail_spec_vendor:"供应商", detail_spec_ctx:"上下文长度", detail_spec_out:"最大输出", detail_spec_base:"BASE URL", detail_spec_rate:"限流",
     detail_cap:"能力", detail_cap_json:"JSON 输出", detail_cap_tool:"工具调用", detail_cap_stream:"流式输出 (SSE)", detail_cap_think:"思考模式",
-    detail_pricing:"价格", detail_pricing_note:"每 1M tokens · 已含国内价 7 折",
+    detail_pricing:"价格", detail_pricing_note:"每 1M tokens · 已含极致低价",
     detail_price_in:"输入", detail_price_out:"输出",
     detail_code:"API 示例", detail_code_tab_curl:"cURL", detail_code_tab_py:"Python SDK",
     detail_rel:"相关模型", detail_rel_view:"查看全部模型 →",
     detail_billing:"扣费规则", detail_billing_p:"费用 = token 消耗 × 单价,从预充值余额直接扣除。价格可能变动,请以本页最新信息为准。",
     spec_ok:"支持", spec_no:"不支持",
-    price_h1:"定价", price_sub:"所有价格 = 国内价 7 折。以美元与越南盾按当前汇率显示。",
+    price_h1:"定价", price_sub:"所有价格 = 极致低价。以美元与越南盾按当前汇率显示。",
     price_th_model:"模型", price_th_in:"输入 / 1M", price_th_out:"输出 / 1M", price_th_save:"节省",
     price_rule:"扣费规则", price_rule_p:"费用 = token × 单价,从余额扣除。无订阅、无承诺。越南盾按充值时刻汇率结算。",
     price_faq:"价格常见问题", price_note:"* 价格为占位值,待百炼 × 0.7 确认。",
@@ -360,7 +360,7 @@ const I18N = {
   "zh-TW": {
     nav_models:"模型", nav_pricing:"定價", nav_docs:"文件", nav_login:"登入", nav_signup:"立即開始",
     crumb_home:"首頁",
-    hero_badge:"OpenAI 相容 · 中國國內價 7 折 · 越南優先",
+    hero_badge:"OpenAI 相容 · 中國國內價 低价 · 越南優先",
     hero_h1:"一點觸達", hero_h1_grad:"所有 AI。",
     hero_sub:"DoTouch.AI 將中國前沿大模型——GLM 5.2、DeepSeek V4 等——以難以置信的低價帶給全球開發者與中小企業。同樣的 OpenAI API,便宜 30%,零遷移成本。",
     hero_cta1:"免費開始", hero_cta2:"查看定價",
@@ -371,12 +371,12 @@ const I18N = {
     model_link:"詳情",
     price_in:"輸入", price_out:"輸出",
     pricing_kicker:"定價", pricing_h2:"按用量付費",
-    pricing_p:"預儲值,按 token 計量。無訂閱——隨時儲值。價格 = 中國國內價 7 折,以美元與越南盾雙幣種顯示。",
+    pricing_p:"預儲值,按 token 計量。無訂閱——隨時儲值。價格 = 中國國內價 低价,以美元與越南盾雙幣種顯示。",
     pt_model:"模型", pt_in:"輸入 / 1M tokens", pt_out:"輸出 / 1M tokens", pt_save:"節省",
     pricing_more:"查看完整定價 →",
     feat_kicker:"為什麼選擇 DoTouch", feat_h2:"為開發者而生,人人用得起",
     f1_t:"無縫相容 OpenAI", f1_d:"改一行 OpenAI SDK 設定即可使用。",
-    f2_t:"中國國內價 7 折", f2_d:"中國模型、中國價格,美元或越南盾支付。",
+    f2_t:"中國國內價 低价", f2_d:"中國模型、中國價格,美元或越南盾支付。",
     f3_t:"本地化支付", f3_d:"MoMo、ZaloPay、Stripe、PayPal、Alipay 與銀行卡。",
     f4_t:"越南優先支援", f4_d:"越南語控制台、文件與客服。",
     f5_t:"低延遲高可用", f5_d:"香港邊緣節點直連上游容量。",
@@ -443,13 +443,13 @@ const I18N = {
     detail_use_btn:"開始使用此模型",
     detail_spec:"技術規格", detail_spec_vendor:"供應商", detail_spec_ctx:"上下文長度", detail_spec_out:"最大輸出", detail_spec_base:"BASE URL", detail_spec_rate:"限流",
     detail_cap:"能力", detail_cap_json:"JSON 輸出", detail_cap_tool:"工具呼叫", detail_cap_stream:"串流輸出 (SSE)", detail_cap_think:"思考模式",
-    detail_pricing:"價格", detail_pricing_note:"每 1M tokens · 已含中國國內價 7 折",
+    detail_pricing:"價格", detail_pricing_note:"每 1M tokens · 已含中國國內價 低价",
     detail_price_in:"輸入", detail_price_out:"輸出",
     detail_code:"API 範例", detail_code_tab_curl:"cURL", detail_code_tab_py:"Python SDK",
     detail_rel:"相關模型", detail_rel_view:"查看全部模型 →",
     detail_billing:"扣費規則", detail_billing_p:"費用 = token 消耗 × 單價,從預儲值餘額直接扣除。價格可能變動,請以本頁最新資訊為準。",
     spec_ok:"支援", spec_no:"不支援",
-    price_h1:"定價", price_sub:"所有價格 = 中國國內價 7 折。以美元與越南盾按當前匯率顯示。",
+    price_h1:"定價", price_sub:"所有價格 = 中國國內價 低价。以美元與越南盾按當前匯率顯示。",
     price_th_model:"模型", price_th_in:"輸入 / 1M", price_th_out:"輸出 / 1M", price_th_save:"節省",
     price_rule:"扣費規則", price_rule_p:"費用 = token × 單價,從餘額扣除。無訂閱、無承諾。越南盾按儲值時刻匯率結算。",
     price_faq:"價格常見問題", price_note:"* 價格為佔位值,待百煉 × 0.7 確認。",

+ 2 - 2
docs/design/web-v1.1.0/index.html

@@ -51,7 +51,7 @@
 <!-- ══════════ HERO ══════════ -->
 <div class="wrap" style="padding-top:70px;text-align:center;position:relative;">
   <div style="position:absolute;top:-140px;left:50%;transform:translateX(-50%);width:760px;height:420px;background:radial-gradient(50% 60% at 50% 50%, rgba(124,92,255,.26), transparent 70%);pointer-events:none;"></div>
-  <span style="display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--green-l);border:1px solid rgba(0,229,160,.3);background:rgba(0,229,160,.07);padding:5px 14px;border-radius:999px;" data-i18n="hero_badge">Tương thích OpenAI · Bằng 70% giá Trung Quốc · Ưu tiên Việt Nam</span>
+  <span style="display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--green-l);border:1px solid rgba(0,229,160,.3);background:rgba(0,229,160,.07);padding:5px 14px;border-radius:999px;" data-i18n="hero_badge">Tương thích OpenAI · Bằng giá cực kỳ cạnh tranh · Ưu tiên Việt Nam</span>
   <h1 style="font-size:clamp(38px,6vw,60px);font-weight:800;letter-spacing:-1px;line-height:1.12;margin-top:24px;" data-i18n="hero_h1">Một chạm.</h1>
   <h1 style="font-size:clamp(38px,6vw,60px);font-weight:800;letter-spacing:-1px;line-height:1.12;"><span style="background:linear-gradient(120deg,var(--purple-l),var(--green-l));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;" data-i18n="hero_h1_grad">Mọi AI.</span></h1>
   <p style="max-width:660px;margin:22px auto 0;color:var(--muted);font-size:16.5px;" data-i18n="hero_sub">DoTouch.AI mang sức mạnh của các mô hình AI tiên phong Trung Quốc — GLM 5.2, DeepSeek V4 và hơn thế nữa — đến với nhà phát triển và doanh nghiệp nhỏ trên toàn thế giới với giá cực rẻ. API OpenAI tương thích. Rẻ hơn 30%. Không cần di chuyển.</p>
@@ -136,7 +136,7 @@
     </div>
     <div class="grid3">
       <div class="card"><div style="font-size:22px;">🔌</div><h3 style="margin-top:10px;font-size:15.5px;" data-i18n="f1_t">Tương thích OpenAI tức thì</h3><p style="font-size:13px;color:var(--muted);margin-top:6px;" data-i18n="f1_d">Đổi một dòng cấu hình SDK OpenAI là mọi thứ hoạt động.</p></div>
-      <div class="card"><div style="font-size:22px;">💎</div><h3 style="margin-top:10px;font-size:15.5px;" data-i18n="f2_t">Bằng 70% giá Trung Quốc</h3><p style="font-size:13px;color:var(--muted);margin-top:6px;" data-i18n="f2_d">Mô hình Trung Quốc với giá Trung Quốc, thanh toán bằng USD hoặc VND.</p></div>
+      <div class="card"><div style="font-size:22px;">💎</div><h3 style="margin-top:10px;font-size:15.5px;" data-i18n="f2_t">Bằng giá cực kỳ cạnh tranh</h3><p style="font-size:13px;color:var(--muted);margin-top:6px;" data-i18n="f2_d">Mô hình Trung Quốc với giá Trung Quốc, thanh toán bằng USD hoặc VND.</p></div>
       <div class="card"><div style="font-size:22px;">💳</div><h3 style="margin-top:10px;font-size:15.5px;" data-i18n="f3_t">Thanh toán nội địa</h3><p style="font-size:13px;color:var(--muted);margin-top:6px;" data-i18n="f3_d">MoMo, ZaloPay, Stripe, PayPal, Alipay và thẻ ngân hàng.</p></div>
       <div class="card"><div style="font-size:22px;">🌏</div><h3 style="margin-top:10px;font-size:15.5px;" data-i18n="f4_t">Hỗ trợ ưu tiên Việt Nam</h3><p style="font-size:13px;color:var(--muted);margin-top:6px;" data-i18n="f4_d">Console, tài liệu và hỗ trợ tiếng Việt.</p></div>
       <div class="card"><div style="font-size:22px;">⚡</div><h3 style="margin-top:10px;font-size:15.5px;" data-i18n="f5_t">Độ trễ thấp, uptime cao</h3><p style="font-size:13px;color:var(--muted);margin-top:6px;" data-i18n="f5_d">Edge node tại Hồng Kông kết nối trực tiếp nguồn cấp.</p></div>

+ 1 - 1
docs/design/web-v1.1.0/model-detail.html

@@ -77,7 +77,7 @@
     <!-- 价格 -->
     <div class="card">
       <h3 style="font-size:15px;color:var(--purple-l);margin-bottom:14px;" data-i18n="detail_pricing">Giá</h3>
-      <p style="font-size:12px;color:var(--muted);margin-bottom:10px;" data-i18n="detail_pricing_note">Giá mỗi 1 triệu tokens · đã gồm ưu đãi 70% giá Trung Quốc</p>
+      <p style="font-size:12px;color:var(--muted);margin-bottom:10px;" data-i18n="detail_pricing_note">Giá mỗi 1 triệu tokens · đã gồm ưu đãi giá cực kỳ cạnh tranh</p>
       <div style="font-size:13.5px;color:var(--muted);padding:8px 0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;"><span data-i18n="detail_price_in">Đầu vào</span><b class="price" style="color:var(--text);" id="priceIn"><span class="price-usd" data-usd="0.98">$0.98</span></b></div>
       <div style="font-size:13.5px;color:var(--muted);padding:8px 0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;"><span data-i18n="detail_price_out">Đầu ra</span><b class="price" style="color:var(--text);" id="priceOut"><span class="price-usd" data-usd="3.08">$3.08</span></b></div>
       <div style="font-size:13.5px;color:var(--muted);padding:8px 0;display:flex;justify-content:space-between;"><span data-i18n="price_th_save">Tiết kiệm</span><span class="save-tag">-30% <span style="text-decoration:line-through;opacity:.6;" id="priceCut">$1.40 / $4.40</span></span></div>

+ 1 - 1
docs/design/web-v1.1.0/pricing-full.html

@@ -188,7 +188,7 @@
   <section>
     <h2 style="font-size:18px;font-weight:800;margin-bottom:14px;">Chính sách thanh toán & giá ưu đãi</h2>
     <div class="grid3">
-      <div class="card"><b style="color:var(--purple-l);">70% giá Trung Quốc</b><p style="font-size:13px;color:var(--muted);margin-top:6px;">Mọi giá = giá DashScope × 0.7. Mô hình có cache-hit sẽ có thêm giá cache rẻ hơn.</p></div>
+      <div class="card"><b style="color:var(--purple-l);">giá cực kỳ cạnh tranh</b><p style="font-size:13px;color:var(--muted);margin-top:6px;">Mọi giá = giá DashScope × 0.7. Mô hình có cache-hit sẽ có thêm giá cache rẻ hơn.</p></div>
       <div class="card"><b style="color:var(--purple-l);">Trả trước, tính theo token</b><p style="font-size:13px;color:var(--muted);margin-top:6px;">Text: input/output riêng. Image: theo ảnh/độ phân giải. Speech: theo ký tự/giây.</p></div>
       <div class="card"><b style="color:var(--purple-l);">Đặt giá qua Admin</b><p style="font-size:13px;color:var(--muted);margin-top:6px;">Toàn bộ 236 mô hình đặt giá theo danh mục; mô hình chưa định giá hiển thị "pending".</p></div>
     </div>

+ 1 - 1
docs/design/web-v1.1.0/pricing.html

@@ -42,7 +42,7 @@
 
   <div class="page-hero">
     <h1 data-i18n="price_h1">Bảng giá</h1>
-    <p data-i18n="price_sub">Tất cả giá đã bằng 70% giá nội địa Trung Quốc. Hiển thị USD và VND theo tỷ giá hiện tại.</p>
+    <p data-i18n="price_sub">Tất cả giá đã bằng giá cực kỳ cạnh tranh. Hiển thị USD và VND theo tỷ giá hiện tại.</p>
   </div>
 
   <!-- 汇率提示 -->

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor