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(公共版浏览)