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
8 changes: 4 additions & 4 deletions src/i18n_pack.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,12 @@ const EN_END: &str = "\n };";
/// 是这条阳性对照把 531 报了出来。改动后请以提取器的实际输出校准,再核对是否与 diff 相符。
/// 本轮实测的校准路径就是这条规则:783/531/426 三处**依次**报出 786 → 535 → 429,
/// 每一步都是先让门禁报出真值、再照抄,而不是先写一个自己算的数。
const ZH_KEY_COUNT: usize = 786;
const EN_KEY_COUNT: usize = 786;
const ZH_KEY_COUNT: usize = 785;
const EN_KEY_COUNT: usize = 785;
const STATIC_ATTR_COUNT: usize = 330;
const STATIC_ATTR_DISTINCT: usize = 305;
const T_LITERAL_COUNT: usize = 538;
const T_LITERAL_DISTINCT: usize = 431;
const T_LITERAL_COUNT: usize = 537;
const T_LITERAL_DISTINCT: usize = 430;

/// 切出语言包区段(起点标记 → 终点标记,含起点)。
fn pack_region<'a>(src: &'a str, start_mark: &str, end_mark: &str) -> &'a str {
Expand Down
2 changes: 1 addition & 1 deletion ui/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ python3 -m http.server 8000 --directory ui

1. 仪表盘 Dashboard — 点数余额、本月用量、共享收益、**本月点数变化(近 1 月按类型汇总收支:赠送/过期/收益/消费/充值/提现 + 净变化,取代静态"点数来源"分组)**
2. 模型市场 Marketplace — 模型浏览、**搜索(输入防抖 ~150ms + 关键词 `<mark>` 高亮 + 清空 × 按钮,v1.18 D)**、厂商筛选、排序(按价格/上下文);可用性标注「多 key · 自动故障转移」(该模型配置多个上游 key,架构 v0.2 路由策略);每行「使用 / 消费」入口 → 聊天 Mock 模拟调用(按模型输出参考价扣小数点数,如 -0.38 点,产生消费交易;余额不足时阻断并提示)
3. 共享管理 Sharing — 默认只显示统计 + 我的共享列表(key 脱敏展示,可暂停/恢复/重新上架/彻底删除;列表展示「厂商 · Plan / 模型 · 可用时间段」,如「智谱 · GLM Coding Plan / glm-5.2 · 周一~周五 09:00-18:00」,未设置显示「全天」);点击"+ 添加 / 上架新 key"展开上架表单(**三级联动:厂商 → Plan → 模型**——内置国内已知 Plan 清单(阿里云百炼 / 智谱 / 火山方舟 / Kimi / MiniMax / DeepSeek,每家含「API(按量)」= 按量计价的 key),选 Plan 后显示专属端点提示;**可用时间段为结构化字段**:星期多选 chips + 起止时间(留空 = 全天不限),备注仅纯文本;须填 API Key,平台加密托管;分享者只填声明额度,单价由平台按模型定价自动计算并展示参考价),提交成功或取消后自动收起
3. 共享管理 Sharing — 默认只显示统计 + 我的共享列表(key 脱敏展示,可暂停/恢复/重新上架/彻底删除;列表展示「厂商 · Plan / 模型 · 可用时间段」,如「智谱 · GLM Coding Plan / glm-5.2 · 周一~周五 09:00-18:00」,未设置显示「全天」);点击"+ 添加 / 上架新 key"展开上架表单(**三级联动:厂商 → Plan → 模型**——内置国内已知 Plan 清单(阿里云百炼 / 智谱 / 火山方舟 / Kimi / MiniMax / DeepSeek,每家含「API(按量)」= 按量计价的 key),选 Plan 后显示 Plan 类型(按量 / 订阅);**可用时间段为结构化字段**:星期多选 chips + 起止时间(留空 = 全天不限),备注仅纯文本;须填 API Key,平台加密托管;分享者只填声明额度,单价由平台按模型定价自动计算并展示参考价),提交成功或取消后自动收起
4. 钱包 Wallet — 点数余额、**本月点数变化(近 1 月按类型汇总收支 + 净变化,与仪表盘一致)**、**充值入口(US-4:模拟流程——输入点数 → 余额增加 → topup 交易记录;文案注明"演示,真实支付后续接入";提现仍 disabled)**、**申请加额(US-20:企业成员余额低时申请更多点数 → 提交后等待管理员审批,默认需审批)**;收支明细已去重,统一到【交易记录】(页内提供跳转提示)
5. 交易记录 Transactions — 消费/收益/充值/提现/赠送(gift)唯一明细入口,Tab 筛选 + MRT 风格表格(列排序/列筛选/分页,与 Tab 叠加生效)
6. 设置 Settings — 账户、**API Key 管理(独占整行全宽,表格字段不挤压;完整增删改查:生成带名字、改名、删除需确认「删除后该 key 立即失效」、按名字搜索(防抖+高亮+清空,v1.18 D)、一键复制完整 key——列表脱敏展示 atk_live_****xxxx,复制为完整值;file:// 下 clipboard API 受限时降级为选中+Ctrl/Cmd+C)**、通知、偏好
Expand Down
10 changes: 5 additions & 5 deletions ui/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AITokenPool</title>
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%234ecdc4'/%3E%3Cstop offset='1' stop-color='%232a9d8f'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width='64' height='64' rx='14' fill='url(%23g)'/%3E%3Ctext x='32' y='43' font-family='-apple-system,Segoe UI,Arial,sans-serif' font-size='30' font-weight='800' text-anchor='middle' fill='%23062021'%3EAT%3C/text%3E%3C/svg%3E">
<link rel="stylesheet" href="css/style.css?v=20260912-2">
<link rel="stylesheet" href="css/style.css?v=20260912-3">
</head>
<body>

Expand Down Expand Up @@ -842,9 +842,9 @@ <h3 id="chat-title">使用模型</h3>
</div>
</div>

<script src="js/api.js?v=20260912-2"></script>
<script src="js/data.js?v=20260912-2"></script>
<script src="js/i18n.js?v=20260912-2"></script>
<script src="js/app.js?v=20260912-2"></script>
<script src="js/api.js?v=20260912-3"></script>
<script src="js/data.js?v=20260912-3"></script>
<script src="js/i18n.js?v=20260912-3"></script>
<script src="js/app.js?v=20260912-3"></script>
</body>
</html>
8 changes: 5 additions & 3 deletions ui/js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -390,15 +390,17 @@
}
}

// Plan 提示:按量/订阅 + 专属端点说明(来自 PLANS;登录后为 /api/plans)
// Plan 提示:按量/订阅(来自 PLANS;登录后为 /api/plans)
// 注:曾拼接 ` · {note}`(data.js 的端点说明),但 /api/plans 从不返回 note
//(config [[plans]] 与 Plan 结构体均无该字段)⇒ 登录态(唯一可达路径)恒为 undefined,
// 该后缀永不显示 ⇒ 已移除读点与 i18n 键 `share.plan.note`(同 44a3040 清 keyPrefix 的先例)。
function showPlanHint(planId) {
const el = $("#sf-plan-hint");
if (!el) return;
const plans = Live.plans || D.PLANS;
const pl = plans.find((x) => x.id === planId);
if (!pl) { el.textContent = ""; return; }
el.textContent = (pl.type === "paygo" ? T("share.plan.paygo") : T("share.plan.sub")) +
(pl.note ? T("share.plan.note", { note: pl.note }) : "");
el.textContent = pl.type === "paygo" ? T("share.plan.paygo") : T("share.plan.sub");
}

/* ---------------- 导航 ---------------- */
Expand Down
2 changes: 0 additions & 2 deletions ui/js/i18n.js
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,6 @@
"share.select.model": "选择模型",
"share.plan.paygo": "按量计价的 key",
"share.plan.sub": "订阅 Plan",
"share.plan.note": " · {note}",
"share.price.auto": "{n} 点 / 1M 输出(自动)",
"share.price.default": "按默认价:{n} 点 / 1M 输出(自动)",
"share.priceUnit": "点/1M",
Expand Down Expand Up @@ -1123,7 +1122,6 @@
"share.select.model": "Select model",
"share.plan.paygo": "Pay-as-you-go key",
"share.plan.sub": "Subscription Plan",
"share.plan.note": " · {note}",
"share.price.auto": "{n} pts / 1M output (auto)",
"share.price.default": "Default price: {n} pts / 1M output (auto)",
"share.priceUnit": "pts/1M",
Expand Down
Loading