Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ui/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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),不展示明文
Expand Down
2 changes: 1 addition & 1 deletion ui/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ <h2>钱包 <span class="en">Wallet</span></h2>
<div>
<h3>点数余额 <span class="en">Points balance</span></h3>
<div class="balance-big" id="wallet-balance">0</div>
<p>1 USD = 1000 点 <span class="en">(1 USD = 1,000 points)</span></p>
<p>1 点 ≈ 1 元 <span class="en">(1 point ≈ 1 CNY)</span> · 消费点数可为小数</p>
</div>
<div class="wallet-actions">
<button class="btn btn-primary" id="topup-btn" disabled>充值 <span class="en">Top up</span></button>
Expand Down
2 changes: 1 addition & 1 deletion ui/js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 + " 笔", "含充值 / 提现 / 消费 / 收益 / 赠送"),
Expand Down
20 changes: 11 additions & 9 deletions ui/js/data.js
Original file line number Diff line number Diff line change
@@ -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 = [
Expand All @@ -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 = {
Expand All @@ -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: "入账" },
Expand All @@ -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(公共版浏览)
Expand Down
Loading