feat(web): 积分中心 - 改为全局弹窗并去掉独立钱包页

顶栏、账户菜单、命令面板、画布余额和 /wallet 回跳都打开同一积分中心弹窗,支付结果不再跳进整页超市。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
ddCat
2026-09-17 23:32:19 +08:00
parent bb2a79d365
commit 87d92fcf8b
15 changed files with 183 additions and 772 deletions

View File

@@ -21,7 +21,7 @@ describe("workspace route loading", () => {
const modules = source("../src/lib/workspace-route-modules.ts");
const navigation = source("../src/components/layout/workspace-sidebar-nav.tsx");
for (const route of ["projects", "canvas", "assets", "wallet", "create"]) {
for (const route of ["projects", "canvas", "assets", "create"]) {
expect(modules).toContain(`${route}: () => import`);
}
expect(modules).toContain('projectDetail: () => import("@/pages/projects/detail")');
@@ -123,15 +123,29 @@ describe("workspace route loading", () => {
});
});
describe("wallet balance summary", () => {
test("uses the workspace surface instead of an inverted primary button surface", () => {
describe("workspace wallet entry", () => {
test("opens the credits modal instead of a dedicated wallet page", () => {
const router = source("../src/router.tsx");
const modules = source("../src/lib/workspace-route-modules.ts");
const host = source("../src/components/layout/workspace-wallet-modal.tsx");
const palette = source("../src/components/layout/workspace-command-palette.tsx");
const canvasTopBar = source("../src/pages/canvas/canvas-project-top-bar.tsx");
const topBar = source("../src/components/layout/workspace-top-bar.tsx");
const css = source("../src/styles/globals.css");
const rule = css.match(/\.credit-balance-card \{[^}]+}/)?.[0] || "";
expect(rule).toContain("background: var(--library-surface)");
expect(rule).toContain("color: var(--foreground)");
expect(rule).not.toContain("--btn-solid-bg");
expect(css.match(/\.wallet-balance-inner \{/g)).toHaveLength(3);
expect(css).not.toContain(".wallet-library-page .wallet-balance-inner { padding-left: 0; }");
expect(router).toContain('path: "/wallet"');
expect(router).toContain("element: <RequireAuth>{null}</RequireAuth>");
expect(router).not.toContain("WalletPage");
expect(router).not.toContain("loadWalletPage");
expect(modules).not.toContain("pages/wallet");
expect(host).toContain("pathname !== \"/wallet\"");
expect(host).toContain("openWorkspaceWallet");
expect(palette).toContain('run: () => openWorkspaceWallet()');
expect(palette).not.toContain('"/wallet"');
expect(canvasTopBar).toContain("openWorkspaceWallet()");
expect(canvasTopBar).not.toContain('to="/wallet"');
expect(topBar).toContain("openWorkspaceWallet()");
expect(css).not.toContain(".wallet-library-page");
expect(css).not.toContain(".wallet-market-page");
});
});