Remove the mentor immersive rules in shared/shell.css that hid the module nav, header actions, market tape, overview strip and status bar while mentorView was active, which made the page look like an independent site. Mentor now stays inside the canonical 小白复盘 shell and owns its own "问师 + 数据日期" title header inside #mentorView (B-92 content intact). Also fix the shell's latent 1024px overflow: .main min-width 1080 now only applies at >=1280, and the overview strip scrolls internally instead of clipping its right side when it is wider than the content column. Update the contract and e2e baselines to assert the shell stays visible and usable on mentor, page switching leaves no residue, and add a dedicated shell-integration e2e test. Co-authored-by: multica-agent <github@multica.ai>
131 lines
5.3 KiB
JavaScript
131 lines
5.3 KiB
JavaScript
(function exposePageRegistry(global) {
|
|
"use strict";
|
|
|
|
const pages = [
|
|
["sentimentCycleView", "情绪周期", "sentiment", "market", "authenticated", true],
|
|
["limitPool", "涨停池", "pools", "market", "authenticated", false],
|
|
["brokenView", "炸板池", "pools", "market", "authenticated", false],
|
|
["downView", "跌停板", "pools", "market", "authenticated", false],
|
|
["yesterdayView", "昨日涨停", "pools", "market", "authenticated", false],
|
|
["performanceView", "涨停表现", "pools", "market", "authenticated", false],
|
|
["ladderView", "市场天梯", "ladder", "market", "authenticated", false],
|
|
["rotationView", "板块轮动", "rotation", "market", "authenticated", false],
|
|
["auctionView", "集合竞价", "auction", "market", "authenticated", false],
|
|
["themeLibraryView", "题材库", "themes", "market", "authenticated", false],
|
|
["popularityView", "人气热榜", "popularity", "market", "authenticated", false],
|
|
["dragonView", "龙虎榜", "dragon_tiger", "market", "authenticated", false],
|
|
["screenerView", "智能选股", "screener", "intelligence", "member", false],
|
|
["mentorView", "问师", "mentor", "intelligence", "member", false],
|
|
["heavenView", "问天", "heaven", "intelligence", "member", false],
|
|
["reviewWorkspaceView", "我的复盘", "review", "personal", "authenticated", false],
|
|
].map(([id, title, feature, group, access, isDefault]) => Object.freeze({
|
|
id,
|
|
title,
|
|
feature,
|
|
group,
|
|
access,
|
|
default: isDefault,
|
|
desktop_scroll: "page",
|
|
mobile_layout: "dedicated",
|
|
}));
|
|
|
|
const internalPages = [
|
|
Object.freeze({
|
|
id: "screenerTrackingView",
|
|
title: "策略持续跟踪",
|
|
feature: "screener",
|
|
group: "intelligence",
|
|
access: "member",
|
|
internal: true,
|
|
navigation_alias: "screenerView",
|
|
}),
|
|
];
|
|
|
|
const fragments = [
|
|
["pools", "/pages/pools/page.html?v=20260803-1", ["limitPool", "brokenView", "downView", "yesterdayView", "performanceView"]],
|
|
["sentiment", "/pages/sentiment/page.html?v=20260803-1", ["sentimentCycleView"]],
|
|
["heaven", "/pages/heaven/page.html?v=20260803-1", ["heavenView"]],
|
|
["ladder", "/pages/ladder/page.html?v=20260803-1", ["ladderView"]],
|
|
["screener", "/pages/screener/page.html?v=20260804-1", ["screenerView", "screenerTrackingView"]],
|
|
["mentor", "/pages/mentor/page.html?v=20260818-3", ["mentorView"]],
|
|
["rotation", "/pages/rotation/page.html?v=20260803-1", ["rotationView"]],
|
|
["auction", "/pages/auction/page.html?v=20260803-1", ["auctionView"]],
|
|
["themes", "/pages/themes/page.html?v=20260803-1", ["themeLibraryView"]],
|
|
["popularity", "/pages/popularity/page.html?v=20260803-1", ["popularityView"]],
|
|
["dragon_tiger", "/pages/dragon-tiger/page.html?v=20260803-1", ["dragonView"]],
|
|
["review", "/pages/review/page.html?v=20260803-1", ["reviewWorkspaceView"]],
|
|
].map(([feature, url, viewIds]) => Object.freeze({
|
|
feature,
|
|
url,
|
|
viewIds: Object.freeze(viewIds),
|
|
}));
|
|
|
|
const runtimeScripts = [
|
|
"/vendor/lucide.min.js",
|
|
"/shared/ui-core.js",
|
|
"/shared/components.js?v=20260729-1",
|
|
"/pages/runtime.js?v=20260729-1",
|
|
"/pages/sentiment/page.js?v=20260729-1",
|
|
"/pages/pools/page.js?v=20260729-1",
|
|
"/pages/market/breadth.js?v=20260803-1",
|
|
"/pages/market/charts.js?v=20260803-1",
|
|
"/pages/market/entity-detail.js?v=20260803-1",
|
|
"/pages/market/stock-detail.js?v=20260803-1",
|
|
"/pages/market/preview.js?v=20260806-1",
|
|
"/pages/market/search.js?v=20260803-1",
|
|
"/pages/market/bindings.js?v=20260803-1",
|
|
"/pages/ladder/page.js?v=20260729-1",
|
|
"/pages/rotation/page.js?v=20260729-1",
|
|
"/pages/auction/page.js?v=20260729-1",
|
|
"/pages/themes/page.js?v=20260729-1",
|
|
"/pages/popularity/page.js?v=20260729-1",
|
|
"/pages/dragon-tiger/page.js?v=20260806-1",
|
|
"/pages/screener/page.js?v=20260806-1",
|
|
"/pages/mentor/page.js?v=20260818-3",
|
|
"/pages/heaven/page.js?v=20260729-1",
|
|
"/pages/review/page.js?v=20260729-1",
|
|
"/shared/state.js?v=20260729-1",
|
|
"/shared/api.js?v=20260729-1",
|
|
"/shared/shell.js?v=20260806-1",
|
|
"/shared/export.js?v=20260731-1",
|
|
"/pages/heaven/loading-v2.js?v=20260728-2",
|
|
"/shared/context.js?v=20260804-1",
|
|
"/shared/feedback.js?v=20260803-1",
|
|
"/shared/application.js?v=20260803-1",
|
|
"/shared/table.js?v=20260803-1",
|
|
"/shared/theme.js?v=20260803-1",
|
|
"/shared/dashboard.js?v=20260803-1",
|
|
"/shared/session.js?v=20260803-1",
|
|
"/shared/admin.js?v=20260803-1",
|
|
"/app.js?v=20260803-2",
|
|
];
|
|
|
|
const all = [...pages, ...internalPages];
|
|
const byId = new Map(all.map((page) => [page.id, page]));
|
|
const defaultPage = pages.find((page) => page.default);
|
|
const aliases = Object.freeze({ sectorView: "rotationView", breadthView: "limitPool" });
|
|
|
|
global.XiaobaiPages = Object.freeze({
|
|
schemaVersion: 1,
|
|
pages: Object.freeze(pages),
|
|
internalPages: Object.freeze(internalPages),
|
|
all: Object.freeze(all),
|
|
fragments: Object.freeze(fragments),
|
|
runtimeScripts: Object.freeze(runtimeScripts),
|
|
defaultPage,
|
|
aliases,
|
|
resolve(id) {
|
|
return aliases[id] || id;
|
|
},
|
|
get(id) {
|
|
return byId.get(id) || null;
|
|
},
|
|
has(id) {
|
|
return byId.has(id);
|
|
},
|
|
inGroup(id, group) {
|
|
return byId.get(id)?.group === group;
|
|
},
|
|
});
|
|
})(window);
|