diff --git a/AGENTS.md b/AGENTS.md
index ef12345..3a74d2c 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -576,3 +576,10 @@
- 截图本月 `¥97.07` 是多个历史价格版本混合回放;若按当前最新模型价格强行重算本月全部 Shop token,则为 `¥84.446874500`。
- 如果后续需要“按当前最新价模拟重算历史区间”,应新增模拟分析口径,不能覆盖 Admin 收银金额、真实扣费、余额和流水。
- 核账记录见 `docs/ai/context/20260614-130541-admin-revenue-ranking-pricing-audit_CN.md`。
+
+## 2026-06-16 Account 欠费上限展示移除
+
+- 当前 API key 放行逻辑是余额必须大于 0;余额等于 0 或负数都会返回 `insufficient_balance`。
+- `account_balances.credit_limit_*` 的 10 元字段不参与 API 调用放行,只保留为历史兼容字段。
+- `/shop/account/` 不应展示「欠费上限」,避免用户误解为可以欠费 10 元后才停用。
+- 设计与计划见 `docs/ai/context/20260616-101833-account-remove-credit-limit-display-design-plan_CN.md`。
diff --git a/shop/account/index.html b/shop/account/index.html
index 4691d06..da92f45 100644
--- a/shop/account/index.html
+++ b/shop/account/index.html
@@ -53,7 +53,7 @@
模型总览<
正在读取模型...
-
+
充值
diff --git a/shop/js/account.js b/shop/js/account.js
index 348de70..9968802 100644
--- a/shop/js/account.js
+++ b/shop/js/account.js
@@ -180,8 +180,7 @@ function renderBalanceCards(balance = {}) {
const cards = [
['当前余额', balance.balanceNanos === undefined ? formatCents(balance.balanceCents) : formatNanos(balance.balanceNanos), billingStatusText(balance.status)],
['欠费金额', balance.debtNanos === undefined ? formatCents(balance.debtCents) : formatNanos(balance.debtNanos), balance.debtCents > 0 ? '需补缴' : '无欠费'],
- ['待确认充值', balance.pendingTopupNanos === undefined ? formatCents(balance.pendingTopupCents) : formatNanos(balance.pendingTopupNanos), '确认后入账'],
- ['欠费上限', balance.creditLimitNanos === undefined ? formatCents(balance.creditLimitCents) : formatNanos(balance.creditLimitNanos), balance.creditExceeded ? '已超过' : '默认上限']
+ ['待确认充值', balance.pendingTopupNanos === undefined ? formatCents(balance.pendingTopupCents) : formatNanos(balance.pendingTopupNanos), '确认后入账']
];
return cards.map(([label, value, hint]) => `
diff --git a/shop/shop.js b/shop/shop.js
index 1da4164..0a05028 100644
--- a/shop/shop.js
+++ b/shop/shop.js
@@ -4,7 +4,7 @@
'/shop/js/core.js',
'/shop/js/charts.js',
'/shop/js/auth.js',
- '/shop/js/account.js?v=20260614-account-price-display',
+ '/shop/js/account.js?v=20260616-account-credit-limit-display',
'/shop/js/admin.js',
'/shop/js/legacy-redirects.js'
];
diff --git a/test/shop-frontend.test.js b/test/shop-frontend.test.js
index 82b116f..4a44d4e 100644
--- a/test/shop-frontend.test.js
+++ b/test/shop-frontend.test.js
@@ -8,7 +8,7 @@ const shopModuleScripts = [
'/shop/js/core.js',
'/shop/js/charts.js',
'/shop/js/auth.js',
- '/shop/js/account.js?v=20260614-account-price-display',
+ '/shop/js/account.js?v=20260616-account-credit-limit-display',
'/shop/js/admin.js',
'/shop/js/legacy-redirects.js'
];
@@ -126,6 +126,44 @@ test('Admin 余额和充值表渲染复用账户状态文案函数', () => {
assert.match(topupHtml, /待确认/);
});
+test('Account 余额卡片不展示未参与放行逻辑的欠费上限', () => {
+ const sandbox = {
+ window: {},
+ document: {
+ cookie: '',
+ readyState: 'loading',
+ addEventListener() {}
+ },
+ Intl,
+ URL
+ };
+ sandbox.window.document = sandbox.document;
+
+ for (const file of [
+ 'shop/js/core.js',
+ 'shop/js/charts.js',
+ 'shop/js/account.js'
+ ]) {
+ vm.runInNewContext(readScript(file), sandbox, { filename: file });
+ }
+
+ const html = sandbox.window.YuiShopAccount.renderBalanceCards({
+ balanceNanos: 1000000000,
+ debtNanos: 0,
+ pendingTopupNanos: 0,
+ creditLimitNanos: 10000000000,
+ creditExceeded: false,
+ status: 'available'
+ });
+
+ assert.match(html, /当前余额/);
+ assert.match(html, /欠费金额/);
+ assert.match(html, /待确认充值/);
+ assert.doesNotMatch(html, /欠费上限/);
+ assert.doesNotMatch(html, /默认上限/);
+ assert.doesNotMatch(html, /10\.00/);
+});
+
test('Shop 入口加载页面模块后仍暴露兼容的 YuiShop 初始化函数', async () => {
const elements = new Map();
const sandbox = {