From 0f726b96d1ce4321049facd7aa37b18d0bc3924c Mon Sep 17 00:00:00 2001 From: argszero Date: Fri, 14 Aug 2026 21:58:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(ui):=20CNY=20point=20anchor=20=E2=80=94=20?= =?UTF-8?q?1pt=20=E2=89=88=201=20RMB,=20fractional=20amounts=20(v1.6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/README.md | 2 +- ui/index.html | 2 +- ui/js/app.js | 2 +- ui/js/data.js | 20 +++++++++++--------- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/ui/README.md b/ui/README.md index 83dd24e..131c715 100644 --- a/ui/README.md +++ b/ui/README.md @@ -53,7 +53,7 @@ ui/ ## 数据说明 -- 点数规则:1 USD = 1000 点;模型价格折算自 `data/models.example.json`(CNY 按 ~7.2 汇率示例折算) +- 点数规则:**1 点 ≈ 1 元人民币(CNY)**;CNY 模型直接 1 元 = 1 点,USD 模型按 ~7.2 汇率折算为人民币点数;消费点数可为小数(金额保留 2 位小数) - 点数机制(v1.4):每日赠送 1 点(当日有效,需当天登录领取,未登录日不发不积累;注册起连续 10 个自然日),钱包显示"今日赠送 +1 · 有效期至今日 · 连续第 N 天 / 共 10 天",先扣有有效期的赠送点数;分享收益与未来充值点数永久有效;公共版当前无充值渠道(充值/提现按钮置灰"暂不支持") - 上架单价不由分享者手填:单价是模型×厂商的客观属性,平台按模型价格表自动计算(参考单价 = 该模型输出价 点数/1M);模型无定价数据时给出"按默认价"兜底,不报错 - 上架需提交 API Key(password 输入):平台加密托管、仅用于代理调用;共享列表只展示脱敏值(如 sk-****1234,前 3 后 4),不展示明文 diff --git a/ui/index.html b/ui/index.html index fec2f91..637d4b7 100644 --- a/ui/index.html +++ b/ui/index.html @@ -173,7 +173,7 @@

钱包 Wallet

点数余额 Points balance

0
-

1 USD = 1000 点 (1 USD = 1,000 points)

+

1 点 ≈ 1 元 (1 point ≈ 1 CNY) · 消费点数可为小数

diff --git a/ui/js/app.js b/ui/js/app.js index a066b7b..b7dec55 100644 --- a/ui/js/app.js +++ b/ui/js/app.js @@ -138,7 +138,7 @@ const recent = txs.slice(0, 5); $("#dash-stats").innerHTML = [ - stat("点数余额 Points", D.fmt(D.USER.balance), "1 USD = 1000 点", "accent"), + stat("点数余额 Points", D.fmt(D.USER.balance), "1 点 ≈ 1 元", "accent"), stat("本月用量 Usage", D.fmt(monthUse) + " 点", "共 " + txs.filter((t) => t.type === "consume").length + " 笔消费"), stat("共享收益 Earnings", "+" + D.fmt(monthEarn) + " 点", D.SHARINGS.filter((s) => s.status === "on").length + " 个 key 上架中"), stat("交易笔数 Trades", txs.length + " 笔", "含充值 / 提现 / 消费 / 收益 / 赠送"), diff --git a/ui/js/data.js b/ui/js/data.js index 0947209..962b5c1 100644 --- a/ui/js/data.js +++ b/ui/js/data.js @@ -1,13 +1,14 @@ /* ============================================================ AITokenPool UI Prototype — 内嵌 mock 数据 - 点数规则:1 USD = 1000 点;CNY 按 ~7.2 CNY/USD 折算(示例) + 点数规则:1 点 ≈ 1 元人民币(CNY);USD 模型按 ~7.2 汇率折算(示例) ============================================================ */ (function () { "use strict"; - const USD = (usd) => Math.round(usd * 1000); - const CNY = (cny) => Math.round((cny / 7.2) * 1000); + // CNY 模型:1 元 = 1 点;USD 模型:按 ~7.2 汇率折算为人民币点数 + const USD = (usd) => Math.round(usd * 7.2); + const CNY = (cny) => Math.round(cny); // 模型价格(来自 data/models.example.json,折算为点数 / 1M tokens) const MODELS = [ @@ -30,7 +31,8 @@ MODELS[2].availability = "available"; // glm MODELS[4].availability = "busy"; // claude 演示"繁忙" - const fmt = (n) => n.toLocaleString("zh-CN"); + // 金额/余额格式化:整数原样(千分位);小数保留 2 位(v1.6 CNY 锚定,消费点数可为小数) + const fmt = (n) => Number.isInteger(n) ? n.toLocaleString("zh-CN") : n.toLocaleString("zh-CN", { minimumFractionDigits: 2, maximumFractionDigits: 2 }); const ctxFmt = (n) => (n >= 1000000 ? (n / 1000000).toFixed(1) + "M" : fmt(n)); window.ATDATA = { @@ -53,7 +55,7 @@ // 交易记录(消费 / 收益 / 充值 / 提现 / 赠送)——唯一明细数据源,钱包页与交易记录页共用此表 TRANSACTIONS: [ { id: 13, time: "08-14 09:00", type: "gift", partner: "—", detail: "赠送 · 每日赠送 第 7 天 / 共 10 天(有效期至今日)", tokens: "—", pts: +1, status: "入账" }, - { id: 1, time: "08-13 20:15", type: "consume", partner: "deepseek-v4-flash", detail: "消费 · 用 shared key", tokens: "1.2M", pts: -320, status: "成功" }, + { id: 1, time: "08-13 20:15", type: "consume", partner: "deepseek-v4-flash", detail: "消费 · 用 shared key", tokens: "0.19M", pts: -0.37, status: "成功" }, { id: 2, time: "08-13 19:02", type: "earn", partner: "glm-5.2", detail: "收益 · 我的 key 被消费", tokens: "860K", pts: +420, status: "入账" }, { id: 3, time: "08-13 17:44", type: "consume", partner: "gpt-5.5-pro", detail: "消费 · 用 shared key", tokens: "45K", pts: -860, status: "成功" }, { id: 4, time: "08-13 15:10", type: "earn", partner: "kimi-k3", detail: "收益 · 我的 key 被消费", tokens: "1.5M", pts: +980, status: "入账" }, @@ -69,10 +71,10 @@ // 我的共享(price = 按模型定价自动计算的输出单价 点数/1M;key 仅脱敏展示) SHARINGS: [ - { id: 1, model: "glm-5.2", quota: 100000, used: 32800, price: 3889, earned: 1790, status: "on", key: "sk-zhipu-9f2c41ab7d22" }, - { id: 2, model: "deepseek-v4-flash", quota: 80000, used: 51200, price: 280, earned: 1240, status: "on", key: "sk-ds-3b88d077aa91" }, - { id: 3, model: "kimi-k3", quota: 50000, used: 800, price: 13889, earned: 60, status: "paused", key: "sk-ms-c31f2e8b4405" }, - { id: 4, model: "minimax-m3", quota: 20000, used: 20000, price: 1200, earned: 480, status: "off", key: "sk-mx-77d2a1c9e356" }, + { id: 1, model: "glm-5.2", quota: 100000, used: 32800, price: 28, earned: 1790, status: "on", key: "sk-zhipu-9f2c41ab7d22" }, + { id: 2, model: "deepseek-v4-flash", quota: 80000, used: 51200, price: 2, earned: 1240, status: "on", key: "sk-ds-3b88d077aa91" }, + { id: 3, model: "kimi-k3", quota: 50000, used: 800, price: 100, earned: 60, status: "paused", key: "sk-ms-c31f2e8b4405" }, + { id: 4, model: "minimax-m3", quota: 20000, used: 20000, price: 9, earned: 480, status: "off", key: "sk-mx-77d2a1c9e356" }, ], // 市场在售 key(公共版浏览)