Files
xiaobai-review/static/index.html
T

1891 lines
132 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light dark">
<title>小白复盘</title>
<script>
(() => {
let theme = "light";
try {
theme = localStorage.getItem("xiaobaiTheme") === "dark" ? "dark" : "light";
} catch (_error) {
theme = "light";
}
document.documentElement.dataset.theme = theme;
document.documentElement.style.colorScheme = theme;
})();
</script>
<link rel="stylesheet" href="/shared/tokens.css?v=20260729-1">
<link rel="stylesheet" href="/styles.css">
<link rel="stylesheet" href="/renovation.css?v=20260725-5">
<link rel="stylesheet" href="/redesign-v2.css?v=20260728-1">
<link rel="stylesheet" href="/design-system.css?v=20260728-4">
<link rel="stylesheet" href="/theme.css?v=20260728-2">
<link rel="stylesheet" href="/wentian-v2.css?v=20260728-7">
</head>
<body>
<section id="authGate" class="auth-gate" aria-label="账号登录">
<div class="auth-shell">
<div class="auth-brand">
<div class="brand-mark" aria-hidden="true"><span class="brand-glyph"></span></div>
<div><h1>小白复盘</h1><span>登录后进入你的复盘空间</span></div>
</div>
<div class="auth-tabs" role="tablist">
<button id="authLoginTab" class="auth-tab active" type="button" data-auth-mode="login">登录</button>
<button id="authRegisterTab" class="auth-tab" type="button" data-auth-mode="register">注册</button>
</div>
<form id="authForm" class="auth-form">
<label class="form-field"><span>账号名</span><input id="authUsername" type="text" minlength="3" maxlength="30" autocomplete="username" required></label>
<label class="form-field"><span>密码</span><input id="authPassword" type="password" minlength="8" maxlength="128" autocomplete="current-password" required></label>
<label id="authConfirmField" class="form-field" hidden><span>确认密码</span><input id="authPasswordConfirm" type="password" minlength="8" maxlength="128" autocomplete="new-password"></label>
<p id="authError" class="auth-error" hidden></p>
<button id="authSubmitButton" class="button primary" type="submit">登录</button>
</form>
</div>
</section>
<div class="main">
<header class="app-header topbar">
<div class="market-tape mkt" aria-label="市场概况">
<span class="market-item up">上涨 <strong id="tapeUp">--</strong></span>
<span class="market-item down">下跌 <strong id="tapeDown">--</strong></span>
<span class="market-item">涨停 <strong id="tapeLimit">--</strong></span>
<span class="market-item">成交额 <strong id="tapeAmount">--</strong></span>
</div>
<div class="header-actions">
<div class="header-date-group">
<button id="prevDate" class="icon-button" type="button" title="前一个交易日" aria-label="前一个交易日"><i data-lucide="chevron-left"></i></button>
<input id="tradeDate" class="date-input" type="date" aria-label="交易日期">
<button id="nextDate" class="icon-button" type="button" title="后一个交易日" aria-label="后一个交易日"><i data-lucide="chevron-right"></i></button>
</div>
<button id="globalSearchButton" class="icon-button global-search-button" type="button" title="全局搜索(Ctrl+K" aria-label="全局搜索"><i data-lucide="search"></i></button>
<button id="themeToggle" class="icon-button theme-toggle" type="button" title="切换到夜间模式" aria-label="切换到夜间模式" aria-pressed="false"><i data-lucide="moon"></i></button>
<button id="alertButton" class="icon-button alert-button" type="button" title="提醒中心" aria-label="提醒中心"><i data-lucide="bell"></i><span id="alertBadge" class="alert-badge" hidden>0</span></button>
<button id="assistantButton" class="icon-button assistant-button" type="button" title="复盘助手" aria-label="复盘助手"><i data-lucide="message-circle-more"></i></button>
<button id="headerMenuButton" class="icon-button header-menu-button" type="button" title="打开命令菜单" aria-label="打开命令菜单" aria-expanded="false" aria-controls="headerCommandGroup"><i data-lucide="ellipsis"></i></button>
<div id="headerCommandGroup" class="header-command-group">
<button id="refreshButton" class="button command-button" type="button"><i data-lucide="refresh-cw"></i><span>刷新</span></button>
<button id="syncButton" class="button primary command-button" type="button" hidden><i data-lucide="cloud-download"></i><span>后台刷新</span></button>
<button id="settingsButton" class="button command-button" type="button" hidden><i data-lucide="settings-2"></i><span>系统管理</span></button>
<div class="account-menu-shell">
<div id="accountRoleBadges" class="account-role-badges" aria-label="账号身份">
<span id="accountAdminBadge" class="account-role-badge admin-role-badge" hidden><i data-lucide="shield-check"></i><span>管理员</span></span>
<button id="accountVipBadge" class="account-role-badge vip-role-badge" type="button" title="查看会员状态" hidden><b aria-hidden="true">V</b><span id="accountVipLabel">非会员</span></button>
</div>
<button id="accountButton" class="button account-button command-button" type="button" title="账号菜单" aria-haspopup="menu" aria-expanded="false" aria-controls="accountDropdown"><i data-lucide="circle-user-round"></i><span id="accountName">--</span><i class="account-menu-chevron" data-lucide="chevron-down"></i></button>
<div id="accountDropdown" class="account-dropdown" role="menu" hidden>
<div class="account-dropdown-head"><strong id="accountMenuName">--</strong><span id="accountMenuRole">普通用户</span></div>
<button type="button" role="menuitem" data-account-panel="profile"><i data-lucide="user-round"></i><span>个人资料</span><i data-lucide="chevron-right"></i></button>
<button type="button" role="menuitem" data-account-panel="membership"><i data-lucide="badge-check"></i><span>会员状态</span><i data-lucide="chevron-right"></i></button>
<button type="button" role="menuitem" data-account-panel="password"><i data-lucide="key-round"></i><span>修改密码</span><i data-lucide="chevron-right"></i></button>
<div class="account-dropdown-separator"></div>
<button id="switchAccountMenuButton" type="button" role="menuitem"><i data-lucide="repeat-2"></i><span>切换账号</span></button>
<button id="logoutMenuButton" class="account-menu-danger" type="button" role="menuitem"><i data-lucide="log-out"></i><span>退出</span></button>
</div>
</div>
</div>
</div>
</header>
<nav class="module-nav sidebar" aria-label="复盘模块">
<div class="sidebar-brand brand">
<div class="sidebar-brand-mark logo" aria-hidden="true"></div>
<strong>小白复盘</strong>
</div>
<div class="nav-group market-nav-group">
<div class="nav-group-label">市场复盘</div>
<button class="module-tab market-sub-tab active" type="button" data-view="sentimentCycleView" title="情绪周期"><i data-lucide="activity"></i><span>情绪周期</span></button>
<button class="module-tab mobile-primary-tab" type="button" data-view="limitPool" title="涨停池"><i data-lucide="flame"></i><span class="nav-label-desktop">涨停池</span><span class="nav-label-mobile">行情</span></button>
<button class="module-tab market-sub-tab" type="button" data-view="brokenView" title="炸板池"><i data-lucide="bomb"></i><span>炸板池</span></button>
<button class="module-tab market-sub-tab" type="button" data-view="downView" title="跌停板"><i data-lucide="trending-down"></i><span>跌停板</span></button>
<button class="module-tab market-sub-tab" type="button" data-view="yesterdayView" title="昨日涨停"><i data-lucide="history"></i><span>昨日涨停</span></button>
<button class="module-tab market-sub-tab" type="button" data-view="performanceView" title="涨停表现"><i data-lucide="chart-no-axes-combined"></i><span>涨停表现</span></button>
<button class="module-tab market-sub-tab" type="button" data-view="ladderView" title="市场天梯"><i data-lucide="layers-3"></i><span>市场天梯</span></button>
<button class="module-tab market-sub-tab" type="button" data-view="rotationView" title="板块轮动"><i data-lucide="refresh-cw"></i><span>板块轮动</span></button>
<button class="module-tab market-sub-tab" type="button" data-view="auctionView" title="集合竞价"><i data-lucide="timer-reset"></i><span>集合竞价</span></button>
<button class="module-tab market-sub-tab" type="button" data-view="themeLibraryView" title="题材库"><i data-lucide="library-big"></i><span>题材库</span></button>
<button class="module-tab market-sub-tab" type="button" data-view="popularityView" title="人气热榜"><i data-lucide="chart-no-axes-column-increasing"></i><span>人气热榜</span></button>
<button class="module-tab market-sub-tab" type="button" data-view="dragonView" title="龙虎榜"><i data-lucide="list-tree"></i><span>龙虎榜</span></button>
</div>
<div class="nav-group tool-nav-group">
<div class="nav-group-label">智能工具</div>
<button class="module-tab mobile-primary-tab" type="button" data-view="screenerView" title="智能选股"><i data-lucide="search-check"></i><span>智能选股</span></button>
<button class="module-tab mobile-primary-tab" type="button" data-view="mentorView" title="问师"><i data-lucide="messages-square"></i><span>问师</span></button>
<button class="module-tab mobile-primary-tab" type="button" data-view="heavenView" title="问天"><i data-lucide="sparkles"></i><span>问天</span></button>
</div>
<div class="nav-group personal-nav-group">
<div class="nav-group-label">个人</div>
<button class="module-tab mobile-primary-tab" type="button" data-view="reviewWorkspaceView" title="我的复盘"><i data-lucide="notebook-pen"></i><span class="nav-label-desktop">我的复盘</span><span class="nav-label-mobile">复盘</span></button>
</div>
<button id="sidebarCollapseButton" class="sidebar-collapse-button" type="button" title="收起侧栏" aria-label="收起侧栏" aria-expanded="true"><i data-lucide="panel-left-close"></i><span>收起侧栏</span></button>
</nav>
<main class="app-main">
<label id="mobileMarketSelector" class="mobile-market-selector" hidden>
<span><i data-lucide="layout-dashboard"></i><b>行情视图</b></span>
<select id="mobileMarketViewSelect" aria-label="选择行情视图">
<option value="sentimentCycleView">情绪周期</option>
<option value="limitPool">涨停池</option>
<option value="brokenView">炸板池</option>
<option value="downView">跌停板</option>
<option value="yesterdayView">昨日涨停</option>
<option value="performanceView">涨停表现</option>
<option value="ladderView">市场天梯</option>
<option value="rotationView">板块轮动</option>
<option value="auctionView">集合竞价</option>
<option value="themeLibraryView">题材库</option>
<option value="popularityView">人气热榜</option>
<option value="dragonView">龙虎榜</option>
</select>
<i data-lucide="chevron-down" aria-hidden="true"></i>
</label>
<section class="overview-strip mktstrip" aria-label="当日复盘指标" data-overview-expanded="false">
<div class="row">
<div class="sentiment-block">
<div class="sentiment-gauge" id="sentimentGauge">
<span id="sentimentScore">--</span>
</div>
<div>
<span class="metric-label">市场情绪</span>
<strong id="sentimentText" class="sentiment-text">等待数据</strong>
</div>
</div>
<div class="metric">
<span class="metric-label">涨停</span>
<strong id="limitUpMetric" class="metric-value up">--</strong>
</div>
<div class="metric">
<span class="metric-label">跌停</span>
<strong id="limitDownMetric" class="metric-value down">--</strong>
</div>
<div class="metric">
<span class="metric-label">炸板</span>
<strong id="brokenMetric" class="metric-value warning">--</strong>
</div>
<div class="metric">
<span class="metric-label">封板率</span>
<strong id="sealRateMetric" class="metric-value">--</strong>
</div>
<div class="metric">
<span class="metric-label">两市成交</span>
<strong id="amountMetric" class="metric-value">--</strong>
</div>
<div class="metric metric-wide">
<span class="metric-label">数据日期</span>
<strong id="dataDateMetric" class="metric-value small">--</strong>
</div>
<button id="overviewToggle" class="overview-toggle" type="button" aria-expanded="false" title="展开市场详情">
<span>展开详情</span><i data-lucide="chevron-down" aria-hidden="true"></i>
</button>
</div>
</section>
<section id="limitPool" class="workspace-view page redesigned-pool-view">
<div class="section-toolbar lad-head redesigned-page-head pool-page-head">
<div class="section-title-group">
<h2>涨停池</h2>
<span id="limitPoolSubtitle" class="section-subtitle">0 只 · 数据日期 --</span>
<span id="resultCount" class="visually-hidden">0 只</span>
</div>
<div class="toolbar-controls">
<div class="segmented seg pool-filter-segments" role="group" aria-label="连板筛选">
<button type="button" class="segment active" data-filter="all">全部 <span id="limitAllCount">0</span></button>
<button type="button" class="segment" data-filter="1">首板 <span id="limitFirstCount">0</span></button>
<button type="button" class="segment" data-filter="2">2板 <span id="limitSecondCount">0</span></button>
<button type="button" class="segment" data-filter="3">3板+ <span id="limitThreePlusCount">0</span></button>
</div>
<label class="search search-field pool-search-field">
<span class="visually-hidden">搜索股票</span>
<i data-lucide="search" aria-hidden="true"></i>
<input id="stockSearch" type="search" placeholder="搜索代码 / 名称 / 板块">
</label>
<button id="exportButton" class="button btn" type="button">导出 CSV</button>
</div>
</div>
<div class="main-grid redesigned-pool-grid">
<div class="table-frame card tbl-wrap redesigned-card pool-table-card">
<table class="data-table tbl" id="limitTable">
<thead>
<tr>
<th class="row-number num" aria-label="序号">序号</th>
<th data-sort="name">股票</th>
<th class="number num sortable" data-sort="streak">连板<span class="arr"></span></th>
<th class="number num sortable" data-sort="change">涨幅(%<span class="arr"></span></th>
<th class="number num sortable" data-sort="price">价格(元)<span class="arr"></span></th>
<th data-sort="sector">所属板块</th>
<th class="number num sortable" data-sort="first_time">首封<span class="arr"></span></th>
<th class="number num sortable" data-sort="last_time">最后封板<span class="arr"></span></th>
<th class="number num sortable" data-sort="open_times">开板(次)<span class="arr"></span></th>
<th class="number num sortable" data-sort="turnover_rate">换手率(%<span class="arr"></span></th>
<th class="number num sortable" data-sort="amount_billion">成交额(亿)<span class="arr"></span></th>
<th class="number num sortable" data-sort="seal_amount_million">封单额(万)<span class="arr"></span></th>
<th class="reason-column">涨停原因</th>
</tr>
</thead>
<tbody id="limitTableBody"></tbody>
</table>
<div id="emptyState" class="empty-state" hidden>没有符合条件的股票</div>
</div>
<aside class="insight-rail pool-insight-rail" aria-label="连板与板块概况">
<section class="rail-section card redesigned-card">
<div class="rail-heading card-h redesigned-card-head">
<h3>连板高度</h3>
<span id="maxHeight">--</span>
</div>
<div id="ladderMini" class="ladder-mini pool-side-list"></div>
</section>
<section class="rail-section card redesigned-card">
<div class="rail-heading card-h redesigned-card-head">
<h3>热点板块</h3>
<button class="text-button" type="button" data-open-view="rotationView">查看轮动</button>
</div>
<div id="sectorMini" class="sector-mini pool-hot-list"></div>
</section>
</aside>
</div>
</section>
<section id="brokenView" class="workspace-view page redesigned-broken-view">
<div class="section-toolbar lad-head redesigned-page-head broken-page-head">
<div class="section-title-group">
<h2>炸板池</h2>
<span class="section-subtitle"><b id="brokenCount">0 只</b><span id="brokenMeta"> · 触及涨停后未能封住 · 数据日期 --</span></span>
</div>
<div class="toolbar-controls">
<label class="pool-search-field broken-search-field">
<i data-lucide="search" aria-hidden="true"></i>
<span class="visually-hidden">搜索炸板股票</span>
<input id="brokenSearch" type="search" placeholder="搜索代码/名称/板块" autocomplete="off">
</label>
<button id="brokenExportButton" class="button broken-export-button" type="button">导出 CSV</button>
</div>
</div>
<div class="table-frame card tbl-wrap phase-table-frame broken-table-card">
<table id="brokenTable" class="data-table tbl">
<thead>
<tr>
<th class="row-number num">序号</th>
<th>股票</th>
<th class="number num sortable" data-broken-sort="change">现价涨幅(%<span class="arr"></span></th>
<th class="number num sortable" data-auto-sort="true">距涨停(%<span class="arr"></span></th>
<th class="number num sortable" data-auto-sort="true">价格(元)<span class="arr"></span></th>
<th>所属板块</th>
<th class="number num sortable" data-auto-sort="true">首次触板<span class="arr"></span></th>
<th class="number num sortable" data-broken-sort="open_times">开板(次)<span class="arr"></span></th>
<th class="number num sortable" data-broken-sort="turnover_rate">换手率(%<span class="arr"></span></th>
<th class="number num sortable" data-broken-sort="amount_billion">成交额(亿)<span class="arr"></span></th>
<th class="reason-column">炸板原因</th>
</tr>
</thead>
<tbody id="brokenTableBody"></tbody>
</table>
<div id="brokenEmptyState" class="empty-state" hidden>无匹配标的</div>
</div>
</section>
<section id="downView" class="workspace-view page redesigned-down-view">
<div class="section-toolbar lad-head redesigned-page-head down-page-head">
<div class="section-title-group">
<h2>跌停板</h2>
<span class="section-subtitle"><b id="downCount">0 只</b><span id="downMeta"> · 观察退潮、高位风险与亏钱效应 · 数据日期 --</span></span>
</div>
<div class="toolbar-controls">
<span id="downSectorCluster" class="down-sector-cluster" hidden></span>
<label class="pool-search-field down-search-field">
<i data-lucide="search" aria-hidden="true"></i>
<span class="visually-hidden">搜索跌停股票</span>
<input id="downSearch" type="search" placeholder="搜索代码/名称/板块" autocomplete="off">
</label>
<button id="downExportButton" class="button down-export-button" type="button">导出 CSV</button>
</div>
</div>
<div class="table-frame card tbl-wrap down-table-card">
<table id="downTable" class="data-table tbl">
<thead>
<tr>
<th class="row-number num">序号</th>
<th>股票</th>
<th class="number num sortable" data-down-sort="change">跌幅(%<span class="arr"></span></th>
<th class="number num sortable" data-auto-sort="true">价格(元)<span class="arr"></span></th>
<th>所属板块</th>
<th class="number num sortable" data-down-sort="turnover_rate">换手率(%<span class="arr"></span></th>
<th class="number num sortable" data-down-sort="amount_billion">成交额(亿)<span class="arr"></span></th>
<th class="number num sortable" data-auto-sort="true">连续跌停(天)<span class="arr"></span></th>
<th class="reason-column">风险线索</th>
</tr>
</thead>
<tbody id="downTableBody"></tbody>
</table>
<div id="downEmptyState" class="empty-state" hidden>无匹配标的</div>
</div>
</section>
<section id="yesterdayView" class="workspace-view page redesigned-yesterday-view">
<div class="section-toolbar lad-head redesigned-page-head yesterday-page-head">
<div class="section-title-group">
<h2>昨日涨停表现</h2>
<span class="section-subtitle"><b id="yesterdayCount">0 只</b><span id="yesterdayMeta"> · 昨日 -- → 今日 --</span></span>
</div>
<div class="toolbar-controls">
<label class="pool-search-field yesterday-search-field">
<i data-lucide="search" aria-hidden="true"></i>
<span class="visually-hidden">搜索昨日涨停股票</span>
<input id="yesterdaySearch" type="search" placeholder="搜索代码/名称/板块" autocomplete="off">
</label>
<button id="yesterdayExportButton" class="button yesterday-export-button" type="button">导出 CSV</button>
</div>
</div>
<section class="yesterday-table-card">
<div id="yesterdayResultSummary" class="yesterday-result-summary" role="group" aria-label="昨日涨停结果筛选">
<button class="yesterday-summary-cell active" type="button" data-yesterday-filter="all" aria-pressed="true">
<span class="summary-label">全部</span><strong><b id="yesterdayAllCount">0</b> <small></small></strong><em>点击各格可筛选</em>
</button>
<button class="yesterday-summary-cell" type="button" data-yesterday-filter="advance" aria-pressed="false">
<span class="summary-label"><i class="yesterday-outcome-tag advance">晋级</i></span><strong class="up"><b id="yesterdayAdvanceCount">0</b> <small></small></strong><em id="yesterdayAdvanceRate">晋级率 0.0%</em>
</button>
<button class="yesterday-summary-cell" type="button" data-yesterday-filter="positive" aria-pressed="false">
<span class="summary-label"><i class="yesterday-outcome-tag positive">红盘</i></span><strong class="up"><b id="yesterdayPositiveCount">0</b> <small></small></strong><em id="yesterdayPositiveRate">兑现率 0.0%</em>
</button>
<button class="yesterday-summary-cell" type="button" data-yesterday-filter="fail" aria-pressed="false">
<span class="summary-label"><i class="yesterday-outcome-tag fail">断板</i></span><strong><b id="yesterdayFailCount">0</b> <small></small></strong><em id="yesterdayFailRate">占 0.0%</em>
</button>
<button class="yesterday-summary-cell" type="button" data-yesterday-filter="risk" aria-pressed="false">
<span class="summary-label"><i class="yesterday-outcome-tag broken">炸板</i><span>+</span><i class="yesterday-outcome-tag down">跌停</i></span><strong class="down"><b id="yesterdayRiskCount">0</b> <small></small></strong><em id="yesterdayRiskRate">亏钱效应 0.0%</em>
</button>
</div>
<div class="table-frame card tbl-wrap yesterday-table-scroll">
<table id="yesterdayTable" class="data-table tbl">
<thead>
<tr>
<th class="row-number num">序号</th>
<th>股票</th>
<th class="number num sortable" data-yesterday-sort="prior_streak">昨日高度(板)<span class="arr"></span></th>
<th class="number num sortable" data-yesterday-sort="current_change">今日涨幅(%<span class="arr"></span></th>
<th>今日结果</th>
<th class="number num sortable" data-auto-sort="true">当前高度(板)<span class="arr"></span></th>
<th>所属板块</th>
<th class="reason-column">涨停逻辑</th>
</tr>
</thead>
<tbody id="yesterdayTableBody"></tbody>
</table>
<div id="yesterdayEmptyState" class="empty-state" hidden>当前筛选下无标的</div>
</div>
</section>
</section>
<section id="performanceView" class="workspace-view page redesigned-performance-view">
<div class="section-toolbar lad-head redesigned-page-head performance-page-head">
<div class="section-title-group">
<h2>涨停表现</h2>
<span class="section-subtitle">昨日梯队今日晋级率 + 市场宽度 · <b id="performanceDateRange">--</b></span>
</div>
</div>
<div id="performanceCards" class="performance-cards perf-cards"></div>
<div class="performance-insight-grid">
<section class="performance-panel-card market-breadth-panel card" aria-labelledby="marketBreadthTitle">
<div class="performance-panel-head">
<h3 id="marketBreadthTitle">市场宽度</h3>
<span id="breadthDataTime" class="performance-date-tag">--</span>
</div>
<div class="performance-width-box">
<div class="performance-width-summary">
<span>上涨 <b id="breadthUpCount" class="up">--</b></span>
<span>红盘 <b id="breadthRatio" class="up">--</b></span>
<span>下跌 <b id="breadthDownCount" class="down">--</b></span>
</div>
<div class="performance-width-bar" aria-label="上涨、平盘与下跌家数分布">
<i id="breadthUpBar" class="breadth-up"></i><i id="breadthFlatBar" class="breadth-flat"></i><i id="breadthDownBar" class="breadth-down"></i>
</div>
<div class="performance-width-legend">
<span><i class="up-swatch"></i>上涨 <b id="breadthUpLegend">--</b></span>
<span id="breadthFlatLegendItem"><i class="flat-swatch"></i>平盘 <b id="breadthFlatLegend">--</b></span>
<span><i class="down-swatch"></i>下跌 <b id="breadthDownLegend">--</b></span>
<span id="breadthWarning" class="performance-width-warning">--</span>
</div>
</div>
</section>
<section class="performance-panel-card performance-conclusion-card card" aria-labelledby="performanceConclusionTitle">
<div class="performance-panel-head">
<h3 id="performanceConclusionTitle">今日结论</h3>
<span class="performance-date-tag">自动生成</span>
</div>
<div id="performanceConclusion" class="performance-conclusion"><div class="empty-state">暂无可用结论</div></div>
</section>
</div>
</section>
<section id="sentimentCycleView" class="workspace-view page active-view redesigned-sentiment-view">
<div class="section-toolbar lad-head sentiment-cycle-toolbar redesigned-page-head">
<div class="section-title-group">
<h2>情绪周期</h2>
<span class="section-subtitle">用温度与阶段读懂市场情绪 · <b id="sentimentHistoryDateRange">--</b></span>
</div>
<div class="toolbar-controls">
<div class="segmented sentiment-range-selector" role="group" aria-label="统计交易日范围">
<button class="segment sentiment-range-button" type="button" data-sentiment-range="10">10日</button>
<button class="segment sentiment-range-button active" type="button" data-sentiment-range="20">20日</button>
<button class="segment sentiment-range-button" type="button" data-sentiment-range="60">60日</button>
</div>
<button id="sentimentExportButton" class="button" type="button">导出 CSV</button>
</div>
</div>
<div id="sentimentHistoryNotice" class="inline-notice" hidden></div>
<div class="sentiment-cycle-analysis emo-grid redesigned-emotion-grid">
<div class="sentiment-analysis-main">
<section class="sentiment-trend-panel card redesigned-card">
<div class="workspace-heading card-h redesigned-card-head"><h3>温度走势</h3><span id="sentimentPeriodNote">连续交易日情绪温度与阶段转折</span><span id="sentimentCurrentTag" class="sentiment-current-tag">--</span></div>
<div class="sentiment-chart-legend" aria-hidden="true"><span class="temperature-line">情绪温度</span><span class="retreat-point">退潮 / 冰点</span><span class="repair-point">修复转折</span><span class="temperature-average">五日均线</span></div>
<div class="sentiment-chart-shell">
<canvas id="sentimentTrendChart" aria-label="市场情绪温度走势图"></canvas>
<div id="sentimentChartTooltip" class="sentiment-chart-tooltip" hidden></div>
</div>
</section>
</div>
<aside class="sentiment-analysis-rail">
<section class="sentiment-cycle-summary card redesigned-card" aria-label="最新情绪状态">
<div class="workspace-heading card-h redesigned-card-head"><h3>当前阶段</h3><span class="sentiment-auto-tag">自动识别</span></div>
<div class="sentiment-phase-block">
<div id="sentimentCycleScoreMarker" class="sentiment-current-phase-badge">
<strong id="sentimentCyclePhase">--</strong>
<span id="sentimentPhaseConfidence">置信度 --</span>
</div>
<div class="sentiment-phase-info">
<p>温度 <b id="sentimentCycleScore">--</b>,较前日 <b id="sentimentDayChange">--</b> · <span id="sentimentCycleDirection">--</span> · 封板率 <b id="sentimentSealRate">--</b> · 涨停 <b id="sentimentLimitUp">--</b> / 炸板 <b id="sentimentBroken">--</b></p>
<div id="sentimentPhaseAdvice" class="sentiment-phase-advice">等待市场结构完成判定。</div>
</div>
</div>
<div class="sentiment-feedback-strip">
<span>昨日涨停反馈 <strong id="sentimentPreviousPositive">--</strong><small id="sentimentPreviousAverage">--</small></span>
<span>统计样本 <strong id="sentimentHistoryDays">--</strong><small id="sentimentNormalization">--</small></span>
</div>
<span id="sentimentCycleLabel" hidden>--</span><span id="sentimentCycleDate" hidden>--</span>
</section>
<section class="sentiment-components-panel card redesigned-card">
<div class="workspace-heading card-h redesigned-card-head"><h3>评分构成</h3><span id="sentimentComponentSummary">五维加权</span></div>
<div id="sentimentComponentList" class="sentiment-component-list"></div>
</section>
</aside>
</div>
<div class="section-toolbar sentiment-detail-toolbar">
<div class="section-title-group"><h2>交易日明细</h2><span class="section-subtitle">涨停梯队与昨日反馈</span></div>
</div>
<div class="table-frame card tbl-wrap sentiment-history-frame">
<table class="data-table tbl sentiment-history-table">
<colgroup>
<col class="sentiment-col-date"><col class="sentiment-col-score"><col class="sentiment-col-phase"><col class="sentiment-col-direction">
<col class="sentiment-col-count"><col class="sentiment-col-count"><col class="sentiment-col-count"><col class="sentiment-col-count"><col class="sentiment-col-height">
<col class="sentiment-col-count"><col class="sentiment-col-count">
<col class="sentiment-col-feedback"><col class="sentiment-col-feedback"><col class="sentiment-col-rate">
</colgroup>
<thead>
<tr class="sentiment-history-groups">
<th colspan="4" class="group-state">情绪状态</th>
<th colspan="5" class="group-ladder">涨停结构</th>
<th colspan="2" class="group-risk">风险释放</th>
<th colspan="3" class="group-feedback">昨日反馈</th>
</tr>
<tr class="sentiment-history-columns">
<th>交易日</th><th class="num sortable">温度<span class="arr"></span></th><th>阶段</th><th>方向</th>
<th class="num sortable">涨停(只)<span class="arr"></span></th><th class="num sortable">首板(只)<span class="arr"></span></th><th class="num sortable">二板(只)<span class="arr"></span></th><th class="num sortable">三板+(只)<span class="arr"></span></th><th class="num sortable">高度(板)<span class="arr"></span></th>
<th class="num sortable">炸板(只)<span class="arr"></span></th><th class="num sortable">跌停(只)<span class="arr"></span></th><th class="num sortable">昨涨停(只)<span class="arr"></span></th><th class="num sortable">昨红盘(只)<span class="arr"></span></th><th class="num sortable">红盘率(%<span class="arr"></span></th>
</tr>
</thead>
<tbody id="sentimentHistoryBody"></tbody>
</table>
<div id="sentimentHistoryEmpty" class="empty-state">尚无连续交易日数据</div>
</div>
</section>
<section id="heavenView" class="workspace-view member-feature-view heaven-shell wt">
<div class="member-gate" hidden><div class="member-gate-icon"><i data-lucide="lock-keyhole"></i></div><div><strong>问天仅对会员开放</strong><span>开通会员后可使用观势、观气、观心及平台解读。会员状态可从顶部账号标识进入。</span></div></div>
<header class="wt-head">
<div class="wt-title-line">
<h1 class="wt-serif">问 天</h1>
<span id="heavenDataDate">--</span>
</div>
<div class="verse wt-serif">观天之道 · 执天之行</div>
<nav class="wt-tabs" aria-label="问天模块">
<button class="wt-tab wt-serif on" type="button" data-heaven-panel="trend" aria-current="page">观势<small>三才六爻 · 量化成卦</small></button>
<button class="wt-tab wt-serif" type="button" data-heaven-panel="fortune">观气<small>五运六气 · 日辰生克</small></button>
<button class="wt-tab wt-serif" type="button" data-heaven-panel="heart">观心<small>静心占卜 · 第一念</small></button>
</nav>
</header>
<p class="heaven-proverb wt-serif">遇事不决可问春风,春风不语即随本心</p>
<div id="heavenNotice" class="inline-notice" role="status" hidden></div>
<section id="heavenTrendPanel" class="heaven-panel active-heaven-panel">
<div class="heaven-controls">
<div class="heaven-stock-query">
<label class="form-field" for="heavenStockInput"><span>股票代码或名称</span><input id="heavenStockInput" type="text" inputmode="text" maxlength="30" autocomplete="off" placeholder="例如 600000 或 浦发银行"></label>
<div id="heavenStockIdentity" class="heaven-stock-identity" aria-live="polite" hidden>
<span>当前标的:</span>
<strong id="heavenStockName">--</strong>
<span id="heavenStockTaxonomy">申万二级 ·</span>
<strong id="heavenStockSector">--</strong>
</div>
</div>
<div class="heaven-trend-actions">
<button id="loadHeavenSelectionButton" class="button" type="button">载入</button>
<button id="historyTrendButton" class="button" type="button">历史记录</button>
<button id="interpretTrendButton" class="button primary" type="button" disabled>解势</button>
</div>
</div>
<div class="cast-hint wt-serif">载入,以指数为天、行业为人、个股为地,六爻皆由行情量化而成</div>
<div class="wt-stage">
<div class="stars" id="stars" aria-hidden="true"></div>
<svg class="bagua" id="baguaSvg" width="560" height="560" viewBox="0 0 300 300" aria-hidden="true"></svg>
<div id="heavenTrendEmpty" class="wt-empty" role="status">
<div class="big wt-serif">三才六爻</div>
<p class="wt-serif">指数外显为上爻 · 内核为五爻 · 行业外显为四爻 · 内核为三爻 · 个股外显为二爻 · 内核为初爻<br>六爻皆由行情量化而成 —— 输入标的,点「载入」成卦</p>
</div>
<div class="heaven-trend-layout stage-in" hidden>
<section class="hexagram-board">
<div class="hexagram-heading">
<div><span class="metric-label">三才六爻</span><h3 id="marketHexagramName">--</h3></div>
<div class="hexagram-change"><span>动而之卦</span><strong id="marketTransformedName">--</strong></div>
</div>
<div id="marketHexagramLines" class="hexagram-lines"></div>
<p id="marketHexagramText" class="hexagram-text">--</p>
<p id="marketMovementSummary" class="market-movement-summary">--</p>
</section>
<section class="trend-reading-panel">
<div class="trend-score-line">
<div><span class="metric-label">势值</span><strong id="heavenMomentumScore">--</strong></div>
<span id="heavenMomentumLabel">--</span>
</div>
<div class="trend-score-meter" role="meter" aria-label="势值" aria-valuemin="-100" aria-valuemax="100">
<div class="trend-score-track"><i id="heavenMomentumNeedle"></i></div>
<div class="trend-score-marks"><span>-100 · 势衰</span><span>0</span><span>+100 · 势盛</span></div>
</div>
<div id="threeTalentReadings" class="three-talent-readings"></div>
<div class="heaven-hex-transition" aria-label="本卦与之卦">
<figure class="compact-hex-figure">
<div id="heavenOriginalHexLines" class="compact-hex-lines" aria-hidden="true"></div>
<figcaption><strong>本卦 · <b id="heavenOriginalHexName">--</b></strong><small id="heavenOriginalHexDetail">--</small></figcaption>
</figure>
<div class="compact-hex-change"><i aria-hidden="true"></i><span>动而之卦</span></div>
<figure class="compact-hex-figure">
<div id="heavenChangedHexLines" class="compact-hex-lines" aria-hidden="true"></div>
<figcaption><strong>之卦 · <b id="heavenChangedHexName">--</b></strong><small id="heavenChangedHexDetail">--</small></figcaption>
</figure>
</div>
</section>
</div>
</div>
<details id="heavenCalibrationPanel" class="heaven-calibration-panel" hidden>
<summary class="heaven-calibration-heading">
<div><span class="metric-label">量化数据安全门</span><h3 id="heavenCalibrationTitle">六爻数据校验</h3></div>
<div class="heaven-calibration-summary">
<span><i class="status-dot passed"></i>通过</span>
<span><i class="status-dot failed"></i>未通过</span>
<span><i class="status-dot manual"></i>用户补录</span>
<strong id="heavenCalibrationStatus">等待载入</strong>
<b class="fold-label">展开</b>
</div>
</summary>
<div class="calibration-body">
<p>系统只接收客观行情数据,所有补录仍按原量化公式计算阴阳与动爻。</p>
<form id="heavenCalibrationForm">
<div id="heavenLineChecks" class="heaven-line-checks" aria-live="polite"></div>
<label class="form-field calibration-note-field"><span>补录说明</span><input id="heavenCalibrationNote" type="text" maxlength="200" placeholder="可选:记录数据来源或补录原因"></label>
<div class="dialog-actions heaven-calibration-actions">
<button id="resetHeavenCalibrationButton" class="button" type="button">恢复自动数据</button>
<button id="applyHeavenCalibrationButton" class="button primary" type="submit">重新校验并成卦</button>
</div>
</form>
</div>
</details>
</section>
<section id="heavenFortunePanel" class="heaven-panel">
<div class="fortune-heading">
<div class="fortune-calendar-heading"><span id="fortuneLunarDate" class="metric-label">--</span><h3 id="fortunePillars" class="wt-serif">--</h3></div>
<div class="fortune-heading-actions">
<label class="qi-time-field"><span>观测日期</span><input id="qiObservationDate" type="date"></label>
<button id="historyFortuneButton" class="button" type="button">历史记录</button>
<button id="interpretFortuneButton" class="button primary" type="button" disabled>解运</button>
</div>
</div>
<div class="fortune-stage">
<div class="stars" id="fortuneStars" aria-hidden="true"></div>
<svg class="bagua fortune-bagua" id="fortuneBagua" width="560" height="560" viewBox="0 0 300 300" aria-hidden="true"></svg>
<section class="qi-climate-panel">
<span class="qi-section-mark">壹 · 天</span>
<p class="qi-climate-caption wt-serif">今日气候</p>
<h3 id="qiClimateKeyword" class="wt-serif">气机待察</h3>
<strong id="qiClimateTone" class="wt-serif">--</strong>
<p id="humanFieldSummary" class="human-field-summary">--</p>
</section>
<aside class="fortune-basics">
<section class="qi-framework-panel">
<div class="workspace-heading"><div><span>贰 · 气</span><h3 class="wt-serif">三层气机</h3></div><button class="text-fold-button" type="button" data-fold-target="qiFrameworkLayers">收起</button></div>
<p id="qiFrameworkPrinciple" class="qi-framework-principle">--</p>
<div id="qiFrameworkLayers" class="qi-framework-layers"></div>
</section>
<section class="personal-fortune-panel">
<div class="workspace-heading"><div><span>叁 · 人</span><h3 class="wt-serif">个人合参</h3></div></div>
<div id="personalProfileEmpty" class="personal-profile-empty"><span>当前账号尚未设置个人命理资料</span></div>
<div id="personalFortuneResult" class="personal-fortune-result" hidden></div>
</section>
</aside>
</div>
<details id="fortuneSectorCatalog" class="fortune-sector-catalog">
<summary>
<span><small>五行取象</small><strong class="wt-serif">五行对应行业</strong></span>
<span class="fortune-sector-summary-hint">展开查看全部行业 <i aria-hidden="true"></i></span>
</summary>
<div id="fortuneSectorGroups" class="fortune-sector-groups"></div>
</details>
<p id="fortuneNotice" class="heaven-footnote"></p>
<div class="wentian-legacy-hooks" hidden aria-hidden="true">
<canvas id="qiFieldCanvas"></canvas>
<div id="heavenIndexStrip"></div><div id="heavenTrendEvidence"></div>
<div id="fortuneMetrics"></div><div id="fivePhaseBalance"></div>
<div id="humanEmotionList"></div><div id="humanBiasList"></div><div id="humanOperation"></div><div id="humanBalanceActions"></div>
<div id="phaseSectorTitle"></div><div id="phaseSectorContext"></div>
<div id="qiUseMap"><div id="qiUseSources"></div><svg id="qiUseConnections"></svg><div id="phaseSectorList"></div></div>
<button id="openPersonalSettingsButton" type="button"></button>
<details id="sectorPhaseManager"><summary>归类管理</summary><form id="sectorPhaseForm"><input id="sectorPhaseName"><select id="sectorPhaseElement"><option value="木"></option></select><button type="submit">保存</button></form><div id="sectorPhaseOverrides"></div></details>
</div>
</section>
<section id="heavenHeartPanel" class="heaven-panel">
<div class="heart-journey" aria-label="观心进程">
<span class="active" data-heart-step="intro"><i></i>静心</span><b></b>
<span data-heart-step="breathing"><i></i>呼吸</span><b></b>
<span data-heart-step="casting"><i></i>起卦</span><b></b>
<span data-heart-step="reveal"><i></i>察念</span><b></b>
<span data-heart-step="interpretation"><i></i>解卦</span>
</div>
<div class="heart-stage-shell">
<canvas id="heartDustCanvas" hidden></canvas><div id="heartLamp" hidden></div><div id="heartRitualCurtain" hidden></div><div id="heartLineTexts" hidden></div>
<div class="stars" id="heartStars" aria-hidden="true"></div>
<svg class="bagua heart-bagua" id="heartBagua" width="560" height="560" viewBox="0 0 300 300" aria-hidden="true"></svg>
<div id="heartWhispers" class="heart-whispers" aria-hidden="true"></div>
<div class="heart-toolbar-controls">
<button id="historyHeartButton" class="button" type="button">历史记录</button>
<button id="heartSoundToggle" class="button" type="button" aria-pressed="false">静音</button>
</div>
<div id="heartIntro" class="heart-stage active-heart-stage">
<div class="heart-stage-inner">
<span class="heart-stage-index heart-rise" data-heart-delay="0">观心 · 一</span>
<h3 class="heart-rise wt-serif" data-heart-delay="420">把所问之事留在心里</h3>
<div class="heart-guidance heart-rise" data-heart-delay="900">
<p>只问一事,不必说出来。</p>
<p>心里默念它发生的对象与时间。</p>
<p>不求一个喜欢的答案,只看自己真正担心什么。</p>
</div>
<blockquote class="heart-motto heart-rise wt-serif" data-heart-delay="1500">遇事不决可问春风,春风不语即随本心</blockquote>
<button id="startBreathingButton" class="button primary heart-rise" data-heart-delay="2200" type="button">开始静心</button>
</div>
</div>
<div id="heartBreathing" class="heart-stage">
<button class="button heart-return-button" type="button" data-heart-return>← 返回</button>
<div class="heart-stage-inner breathing-stage">
<span class="heart-stage-index">观心 · 二</span>
<div id="breathingScene" class="breathing-scene" data-phase="prepare">
<div class="heart-breath-ripple" aria-hidden="true"><span></span><span></span><span></span><i></i></div>
<b id="breathingPhase" class="breathing-phase" role="status" aria-live="polite"></b>
</div>
<h3 id="breathingPrompt" class="wt-serif">放松片刻,准备呼吸</h3>
<div class="heart-incense" aria-hidden="true"><i id="heartIncenseEmber"></i></div>
<button id="beginCastingButton" class="button primary" type="button" disabled>静心完成,开始起卦</button>
</div>
</div>
<div id="heartCasting" class="heart-stage">
<button class="button heart-return-button" type="button" data-heart-return>← 返回</button>
<div class="heart-casting-layout">
<section class="heart-hexagram-shell">
<div class="workspace-heading"><h3 class="wt-serif">从初爻起</h3><span id="castingProgress">0 / 6</span></div>
<div id="heartCastingLines" class="hexagram-lines ritual-lines"></div>
</section>
<section class="casting-action-panel">
<span class="heart-stage-index">观心 · 三</span>
<div id="coinResult" class="heart-coins" aria-label="三枚铜钱">
<div class="heart-coin" data-coin-index="0"><div class="heart-coin-inner"><span class="heart-coin-face front" aria-label="字面"><b class="coin-glyph coin-glyph-top"></b><b class="coin-glyph coin-glyph-right"></b><b class="coin-glyph coin-glyph-bottom"></b><b class="coin-glyph coin-glyph-left"></b><i class="coin-hole"></i></span><span class="heart-coin-face back" aria-label="背面"><b class="coin-glyph coin-glyph-top"></b><b class="coin-glyph coin-glyph-bottom"></b><i class="coin-hole"></i></span></div><i class="heart-coin-ring"></i></div>
<div class="heart-coin" data-coin-index="1"><div class="heart-coin-inner"><span class="heart-coin-face front" aria-label="字面"><b class="coin-glyph coin-glyph-top"></b><b class="coin-glyph coin-glyph-right"></b><b class="coin-glyph coin-glyph-bottom"></b><b class="coin-glyph coin-glyph-left"></b><i class="coin-hole"></i></span><span class="heart-coin-face back" aria-label="背面"><b class="coin-glyph coin-glyph-top"></b><b class="coin-glyph coin-glyph-bottom"></b><i class="coin-hole"></i></span></div><i class="heart-coin-ring"></i></div>
<div class="heart-coin" data-coin-index="2"><div class="heart-coin-inner"><span class="heart-coin-face front" aria-label="字面"><b class="coin-glyph coin-glyph-top"></b><b class="coin-glyph coin-glyph-right"></b><b class="coin-glyph coin-glyph-bottom"></b><b class="coin-glyph coin-glyph-left"></b><i class="coin-hole"></i></span><span class="heart-coin-face back" aria-label="背面"><b class="coin-glyph coin-glyph-top"></b><b class="coin-glyph coin-glyph-bottom"></b><i class="coin-hole"></i></span></div><i class="heart-coin-ring"></i></div>
</div>
<h3 id="castingPrompt" class="wt-serif">心中默念所问之事,然后掷出初爻</h3>
<button id="tossCoinsButton" class="heart-cast-button" type="button"><i class="heart-hold-charge" aria-hidden="true"></i><span>按住<br>摇初爻</span></button>
</section>
</div>
</div>
<div id="heartReveal" class="heart-stage">
<button class="button heart-return-button" type="button" data-heart-return>← 返回</button>
<div class="heart-reveal-layout">
<section class="hexagram-board heart-reveal-board">
<div class="hexagram-heading">
<div><span class="metric-label">本卦</span><h3 id="heartHexagramName">--</h3></div>
<div class="hexagram-change"><span>之卦</span><strong id="heartTransformedName">--</strong></div>
</div>
<div id="heartHexagramLines" class="hexagram-lines"></div>
<p id="heartHexagramText" class="hexagram-text">--</p>
</section>
<section class="heart-first-thought">
<span class="heart-stage-index">观心 · 四</span>
<h3 class="wt-serif">先不解卦</h3>
<p id="heartFirstThoughtPrompt">看见卦象与爻辞后,心里升起的第一念是什么?</p>
<p>不要修饰,也不必记录。只需看见它。</p>
<button id="interpretHeartButton" class="button primary" type="button">我已察念,开始解卦</button>
</section>
</div>
</div>
<div id="heartInterpretationStage" class="heart-stage">
<div class="heart-interpretation-heading">
<div><span class="heart-stage-index">观心 · 五</span><h3 id="heartReadTitle" class="wt-serif">解卦</h3><small id="heartReadChange">--</small></div>
<div class="heart-read-actions"><button id="viewHeartReadingButton" class="button primary" type="button">查看解卦</button><button id="restartHeartButton" class="button" type="button">重新观心</button></div>
</div>
<p id="heartReadGuaci" class="heart-read-guaci">--</p>
<div class="heart-read-layout">
<div id="heartReadLines" class="heart-read-lines"></div>
<div id="heartReadTexts" class="heart-read-texts"></div>
</div>
<p class="heart-read-motto wt-serif">一念既察,卦只是镜。</p>
</div>
</div>
<p class="heaven-footnote heart-footnote">观心用于观察念头与执着,不用于替代交易计划或预测涨跌。</p>
</section>
</section>
<section id="ladderView" class="workspace-view page redesigned-ladder-view">
<div class="section-toolbar lad-head redesigned-page-head ladder-page-head">
<div class="section-title-group">
<h2>市场天梯</h2>
<span class="section-subtitle">按连板高度观察空间板与梯队完整度 · <b id="ladderDateRange">--</b></span>
</div>
<div class="ladder-head-actions">
<div id="ladderSortSegment" class="ladder-sort-segment" role="group" aria-label="天梯排序">
<button type="button" class="active" data-ladder-sort="time" aria-pressed="true">按封板时间</button>
<button type="button" data-ladder-sort="open" aria-pressed="false">按开板次数</button>
</div>
<button id="ladderExportButton" class="button" type="button">导出 CSV</button>
</div>
</div>
<div class="market-ladder-workspace lad-grid">
<div id="ladderBoard" class="market-ladder-board"></div>
<aside id="ladderInsights" class="market-ladder-insights" aria-label="天梯结构解读"></aside>
</div>
</section>
<section id="screenerView" class="workspace-view page member-feature-view">
<div class="member-gate" hidden><div class="member-gate-icon"><i data-lucide="lock-keyhole"></i></div><div><strong>智能选股仅对会员开放</strong><span>开通会员后可同步因子、生成公式和执行策略。会员状态可从顶部账号标识进入。</span></div></div>
<div class="screener-page-bar scr-head">
<div class="section-toolbar screener-page-heading">
<div class="section-title-group">
<h2>智能选股</h2>
<span id="screenerDateLabel" class="section-subtitle">--</span>
</div>
</div>
<div class="screener-mode-tabs method" role="tablist" aria-label="智能选股模式">
<button class="active" type="button" role="tab" aria-selected="true" data-screener-mode="smart">阶段选股</button>
<button type="button" role="tab" aria-selected="false" data-screener-mode="curated">策略选股</button>
<button type="button" role="tab" aria-selected="false" data-screener-mode="quant">自定义选股</button>
</div>
<button id="openScreenerTrackingButton" class="button screener-tracking-entry" type="button"><i data-lucide="chart-no-axes-combined"></i>策略跟踪</button>
</div>
<div id="screenerNotice" class="inline-notice" hidden></div>
<div class="screener-mobile-tabs" role="tablist" aria-label="智能选股视图">
<button class="active" type="button" role="tab" aria-selected="true" data-screener-mobile-view="strategy">策略</button>
<button type="button" role="tab" aria-selected="false" data-screener-mobile-view="results">候选</button>
</div>
<div class="screener-strategy-view" data-screener-panel="smart">
<div id="screenerProgress" class="screener-stepper stepper" aria-label="智能选股执行进度" aria-live="polite">
<div class="screener-step step" data-screener-step="regime"><span class="step-marker no">1</span><div><strong class="tt">阶段识别</strong><small class="ds" id="regimeStepStatus">等待识别</small></div></div>
<span class="step-line ln" aria-hidden="true"></span>
<div class="screener-step step" data-screener-step="strategy"><span class="step-marker no">2</span><div><strong class="tt">策略匹配</strong><small class="ds" id="strategyStepStatus">等待匹配</small></div></div>
<span class="step-line ln" aria-hidden="true"></span>
<div class="screener-step step" data-screener-step="run"><span class="step-marker no">3</span><div><strong class="tt">执行选股</strong><small class="ds" id="screenerRunStatus">等待执行</small></div></div>
<span class="step-line ln" aria-hidden="true"></span>
<div class="screener-step step" data-screener-step="result"><span class="step-marker no">4</span><div><strong class="tt">结果与回测</strong><small class="ds" id="backtestTaskStatus">随选股执行</small></div></div>
</div>
<div class="screener-overview-grid ps-grid">
<section class="screener-overview-card screener-regime-card card">
<div class="screener-card-heading card-h"><h3><span>01</span> 当前阶段</h3><span class="screener-soft-label dtag">自动识别已开启</span></div>
<div class="screener-regime-body">
<div class="regime-summary"><strong id="regimeLabel">--</strong><span id="regimeConfidence">置信度 --</span></div>
<div class="regime-reading">
<div class="regime-market-line">
<div id="regimeEvidenceList" class="regime-evidence-line"></div>
</div>
<div id="regimeReason" class="regime-advice">--</div>
<div class="regime-control-line">
<div id="regimeSelector" class="regime-selector" aria-label="系统识别的市场阶段"></div>
<div class="factor-data-status"><span>盘后行情定格后自动更新</span><strong id="factorDateCount">0 日</strong><small id="factorDateRange">等待后台数据</small></div>
</div>
</div>
</div>
</section>
<section class="screener-overview-card screener-strategy-card card">
<div class="screener-card-heading card-h"><h3><span>02</span> 匹配策略</h3><span class="screener-soft-label dtag">自然语言转受控公式</span></div>
<div class="screener-strategy-summary">
<div class="screener-strategy-title"><strong id="activeStrategyHeading">--</strong><span id="activeStrategyRegimes"></span></div>
<p id="activeStrategyDescription">等待匹配当前市场阶段的策略。</p>
<div class="screener-strategy-actions"><span class="screener-auto-note">由系统按当前阶段自动匹配</span></div>
</div>
</section>
</div>
<div class="screener-runbar runbar">
<div class="screener-run-actions">
<button id="screenerExportButton" class="button" type="button">导出 CSV</button>
</div>
<div class="screener-pipeline-status" aria-live="polite">
<span>因子 <strong id="factorTaskStatus">等待检查</strong></span>
<span>编译 <strong id="compilerStatus">本地模板编译</strong></span>
</div>
</div>
<div data-screener-results-slot="smart"></div>
</div>
<div class="curated-screener-panel" data-screener-panel="curated" hidden>
<div class="curated-workspace">
<aside class="curated-library-pane" aria-label="精选策略库">
<div class="curated-library-heading">
<div><span>策略库</span><h3>盘后自动候选池</h3></div><strong id="curatedStrategyCount">29 套</strong>
</div>
<div class="curated-library-controls">
<label class="curated-search"><i data-lucide="search"></i><span class="visually-hidden">搜索策略</span><input id="curatedStrategySearch" type="search" placeholder="搜索策略" autocomplete="off"></label>
<label class="curated-category-select"><span class="visually-hidden">策略分类</span><select id="curatedCategoryFilter" aria-label="策略分类"></select><i data-lucide="chevron-down"></i></label>
<div class="curated-view-toggle" role="group" aria-label="策略排列方式">
<button class="active" type="button" data-curated-view="list" aria-label="列表排列" title="列表排列" aria-pressed="true"><i data-lucide="list"></i></button>
<button type="button" data-curated-view="grid" aria-label="图标排列" title="图标排列" aria-pressed="false"><i data-lucide="layout-grid"></i></button>
</div>
</div>
<div id="curatedSchoolFilters" class="curated-school-filters" aria-label="策略流派"></div>
<div id="curatedStrategyList" class="curated-strategy-list"></div>
</aside>
<section class="curated-detail-pane" aria-labelledby="curatedStrategyName">
<header class="curated-detail-header">
<div><span id="curatedStrategyCategory">精选策略</span><h3 id="curatedStrategyName">选择一套策略</h3><p id="curatedStrategyDescription">查看策略条件、数据状态和适用环境。</p></div>
<div id="curatedStrategyBadges" class="curated-strategy-badges"></div>
</header>
<div class="curated-environment-notes">
<p><strong>适用环境</strong><span id="curatedSuitableEnvironment"></span></p>
<p><strong>失效风险</strong><span id="curatedFailureRisk"></span></p>
</div>
<div class="curated-health-grid" id="curatedHealthMetrics" aria-label="策略运行状态"></div>
<div class="curated-detail-grid">
<section class="curated-condition-section"><div class="mini-section-heading"><h4>准入条件</h4><span id="curatedFilterCount">0 项</span></div><div id="curatedFilterList" class="curated-rule-list"></div></section>
<section class="curated-condition-section"><div class="mini-section-heading"><h4>评分权重</h4><span id="curatedWeightTotal">100%</span></div><div id="curatedScoreList" class="curated-score-list"></div></section>
</div>
<div class="curated-execution-bar">
<div id="curatedDataStatus" class="curated-data-status"><i data-lucide="database"></i><span><strong>检查数据中</strong><small>同步后显示可用状态</small></span></div>
<span class="screener-auto-note">候选池由后台盘后自动更新</span>
</div>
</section>
</div>
<div data-screener-results-slot="curated"></div>
</div>
<div class="quant-screener-panel" data-screener-panel="quant" hidden>
<section class="custom-screener-tools card">
<div><span>自定义能力</span><strong>用自然语言生成公式,或直接编辑受控公式</strong><small>自定义选股仅在点击执行后计算,不影响系统盘后候选池。</small></div>
<div>
<button id="openStrategyDrawerButton" class="button" type="button"><i data-lucide="sparkles"></i>自然语言生成公式</button>
<button id="quantSaveButton" class="button" type="button"><i data-lucide="braces"></i>编辑 / 保存公式</button>
</div>
</section>
<section class="quant-builder-pane">
<header class="quant-panel-heading"><h3>因子与权重</h3><div><button id="addQuantScoreButton" class="button" type="button"><i data-lucide="plus"></i>添加因子</button><button id="quantResetButton" class="button ghost" type="button"><i data-lucide="rotate-ccw"></i>重置</button></div></header>
<div id="quantScoreRows" class="quant-rule-rows"></div>
<div class="quant-weight-status"><span>权重合计</span><div><i id="quantWeightBar"></i></div><strong id="quantWeightTotal">100%</strong></div>
</section>
<div class="quant-right-stack">
<aside class="quant-summary-pane">
<header><h3>过滤条件</h3><button id="addQuantFilterButton" class="button ghost" type="button"><i data-lucide="plus"></i>添加条件</button></header>
<div class="quant-filter-body">
<div class="quant-universe-grid">
<strong>选股范围</strong>
<label class="form-field"><span>上市不少于</span><input id="quantListedDays" type="number" min="0" max="5000" step="30" value="120"><small></small></label>
<label class="form-field"><span>输出</span><input id="quantLimit" type="number" min="1" max="50" value="15"><small></small></label>
<label class="form-field"><span>综合分不低于</span><input id="quantMinScore" type="number" min="0" max="100" step="1" value="50"></label>
<label class="checkbox-control quant-st-toggle"><input id="quantExcludeSt" type="checkbox" checked>剔除 ST / 退市</label>
</div>
<div id="quantFilterRows" class="quant-rule-rows"></div>
<div class="quant-execution-actions">
<button id="quantRunButton" class="button primary" type="button"><i data-lucide="play"></i>执行自定义选股</button>
<label class="checkbox-control"><input id="quantBacktestToggle" type="checkbox" checked>滚动回测</label>
<span>结果按加权总分排序,并生成逐股贡献解释</span>
</div>
<p id="quantValidationMessage" class="quant-validation-message" role="status" aria-live="polite"></p>
</div>
</aside>
</div>
<div class="custom-results-slot" data-screener-results-slot="quant"></div>
</div>
<div class="screener-results-view">
<section id="backtestPanel" class="backtest-panel screener-backtest-strip" hidden>
<i data-lucide="triangle-alert" aria-hidden="true"></i>
<div id="backtestMetrics" class="dragon-summary"></div>
<p id="backtestDefinition">--</p>
</section>
<div class="section-toolbar result-toolbar">
<div class="section-title-group"><h2 id="screenerResultTitle">候选结果</h2><span id="screenerResultCount" class="count-badge">0 只</span><span id="screenerResultSource" class="screener-result-source" hidden></span></div>
<span id="screenerDisclaimer" class="section-subtitle">历史统计不代表未来收益</span>
</div>
<div class="table-frame card tbl-wrap screener-result-frame">
<table class="data-table tbl">
<colgroup class="screener-result-columns"><col><col><col><col><col><col><col><col><col><col><col><col></colgroup>
<thead><tr>
<th class="num">排名</th><th>股票</th><th>板块</th><th class="number num sortable">综合分<span class="arr"></span></th>
<th class="number num sortable">历史估计(%<span class="arr"></span></th><th class="number num sortable">当日涨幅(%<span class="arr"></span></th><th class="number num sortable">5日涨幅(%<span class="arr"></span></th>
<th class="number num sortable">量比<span class="arr"></span></th><th class="number num sortable">板块强度<span class="arr"></span></th><th>主要贡献</th><th>风险</th><th>操作</th>
</tr></thead>
<tbody id="screenerTableBody"></tbody>
</table>
<div id="screenerEmpty" class="empty-state">尚未执行选股</div>
</div>
</div>
<dialog id="strategyDrawer" class="strategy-drawer" aria-labelledby="strategyDrawerTitle">
<div class="strategy-drawer-header"><div><span>自定义选股</span><h2 id="strategyDrawerTitle">自然语言与受控公式</h2></div><button id="closeStrategyDrawerButton" class="icon-button" type="button" aria-label="关闭策略编辑"><i data-lucide="x"></i></button></div>
<div class="strategy-drawer-body">
<aside class="strategy-sidebar">
<div class="workspace-heading card-h"><h3>策略库</h3><span id="strategyCount">0 套</span></div>
<div id="strategyList" class="strategy-list"></div>
</aside>
<div class="strategy-workbench">
<div class="strategy-workbench-heading"><div><span>当前策略</span><h3 id="activeStrategyEditorHeading">--</h3></div><small>自然语言生成受控公式</small></div>
<div class="strategy-meta-fields">
<label class="form-field"><span>策略名称</span><input id="strategyNameInput" type="text" maxlength="60"></label>
<label class="form-field"><span>策略说明</span><input id="strategyDescriptionInput" type="text" maxlength="1000"></label>
</div>
<label class="form-field strategy-prompt-field"><span>自然语言策略</span><textarea id="strategyPrompt" maxlength="3000" placeholder="例如:修复阶段筛选低吸、放量、有主力资金流入的主线前排"></textarea></label>
<div class="strategy-actions">
<label class="checkbox-control"><input id="runBacktestToggle" type="checkbox" checked>滚动回测</label>
<button id="compileStrategyButton" class="button" type="button">生成公式</button>
<button id="saveStrategyButton" class="button primary" type="button">保存策略</button>
<button id="deleteStrategyButton" class="button danger-button" type="button" hidden>删除策略</button>
</div>
<details class="strategy-advanced">
<summary><div><strong>高级公式</strong><span>查看或手动调整受控 DSL</span></div><i data-lucide="chevron-down" aria-hidden="true"></i></summary>
<label class="form-field formula-field"><span>受控公式 DSL</span><textarea id="formulaEditor" spellcheck="false"></textarea></label>
</details>
</div>
</div>
</dialog>
</section>
<section id="screenerTrackingView" class="workspace-view page member-feature-view screener-tracking-view" data-internal-view>
<div class="member-gate" hidden><div class="member-gate-icon"><i data-lucide="lock-keyhole"></i></div><div><strong>策略跟踪仅对会员开放</strong><span>开通会员后可将选股候选加入持续跟踪。</span></div></div>
<header class="tracking-page-header">
<button id="closeScreenerTrackingButton" class="tracking-back-button" type="button" data-member-navigation><i data-lucide="arrow-left"></i>返回智能选股</button>
<div><h2 id="strategyTrackingTitle">策略持续跟踪</h2><p>仅跟踪手动加入的候选,以入选价观察后续五个交易日。</p></div>
<button id="refreshTrackingButton" class="button" type="button"><i data-lucide="refresh-cw"></i>更新跟踪</button>
</header>
<div class="tracking-overview-card">
<div class="tracking-overview-title"><span>跟踪概览</span><strong id="trackingBatchCount">0 批</strong></div>
<div id="trackingSummary" class="tracking-summary"></div>
</div>
<section class="strategy-tracking-panel" aria-labelledby="strategyTrackingTitle">
<div class="section-toolbar result-toolbar">
<div class="section-title-group"><h2>跟踪明细</h2><span class="count-badge">T+5</span></div>
<span class="section-subtitle">收益均以加入跟踪时的入选价为基准</span>
</div>
<div class="table-frame tracking-table-frame">
<table class="data-table tbl tracking-table">
<thead><tr><th>入选日</th><th>策略</th><th>股票</th><th class="number num">入选价(元)</th><th class="number num">T+1 开(%</th><th class="number num">T+1 收(%</th><th class="number num">T+3%</th><th class="number num">T+5%</th><th class="number num">最大涨幅(%</th><th class="number num">最大回撤(%</th><th>状态</th><th>操作</th></tr></thead>
<tbody id="trackingTableBody"></tbody>
</table>
<div id="trackingEmpty" class="empty-state">尚未加入跟踪,请从智能选股候选结果中手动添加。</div>
</div>
</section>
</section>
<section id="mentorView" class="workspace-view page member-feature-view redesigned-mentor-view">
<div class="member-gate" hidden><div class="member-gate-icon"><i data-lucide="lock-keyhole"></i></div><div><strong>问师仅对会员开放</strong><span>开通会员后可使用游资思维模型进行对话。会员状态可从顶部账号标识进入。</span></div></div>
<header class="section-toolbar lad-head mentor-page-header">
<div class="section-title-group mentor-page-title">
<h2>问师</h2>
<span class="section-subtitle">向思维模型请教 · <span id="mentorDataDate">--</span></span>
</div>
<div class="toolbar-controls mentor-page-controls">
<div class="mentor-evidence-filters seg" role="group" aria-label="按素材等级筛选">
<button class="active" type="button" data-mentor-grade="all">全部</button>
<button type="button" data-mentor-grade="A">A级</button>
<button type="button" data-mentor-grade="B">B级</button>
<button type="button" data-mentor-grade="C">C级</button>
</div>
</div>
</header>
<div id="mentorNotice" class="inline-notice" hidden></div>
<div class="mentor-layout mentor-grid">
<aside class="mentor-sidebar mentor-library-card card">
<button id="mentorDirectoryToggle" class="mentor-directory-toggle" type="button" aria-expanded="false" aria-controls="mentorDirectoryContent">
<span><i data-lucide="users-round"></i><span><small>当前思维模型</small><strong id="mobileActiveMentorName">--</strong></span></span>
<i data-lucide="chevron-up"></i>
</button>
<div id="mentorDirectoryBackdrop" class="mentor-directory-backdrop" hidden></div>
<div id="mentorDirectoryContent" class="mentor-directory-content">
<div class="workspace-heading card-h mentor-directory-heading">
<div class="mentor-directory-title"><h3>模型库</h3><span>语料完整度决定回答质量</span></div>
<div class="mentor-directory-actions">
<strong id="mentorCount" class="mentor-count">0 位</strong>
<button id="mentorSortToggle" class="mentor-sort-toggle" type="button" aria-pressed="false" title="整理顺序"><i data-lucide="list-ordered"></i><span>整理</span></button>
<button id="closeMentorDirectory" class="icon-button mentor-directory-close" type="button" aria-label="关闭思维模型目录" title="关闭"><i data-lucide="x"></i></button>
</div>
</div>
<label class="mentor-search-field">
<span class="visually-hidden">搜索思维模型</span>
<i data-lucide="search"></i>
<input id="mentorSearchInput" type="search" maxlength="50" placeholder="搜索姓名、模式或标签" autocomplete="off">
</label>
<p id="mentorSortHint" class="mentor-sort-hint" hidden>拖动卡片,或使用箭头调整顺序</p>
<div id="mentorList" class="mentor-list"></div>
<div id="mentorListEmpty" class="mentor-list-empty" hidden>没有符合条件的思维模型</div>
<p class="mentor-evidence-legend">素材等级反映蒸馏依据,不代表人物能力或收益水平。</p>
</div>
</aside>
<section class="mentor-chat-panel card">
<header class="mentor-chat-header card-h">
<div class="mentor-active-profile">
<div class="mentor-active-title"><h3 id="activeMentorName">--</h3><span id="activeMentorBadges" class="mentor-active-badges"></span></div>
<p id="activeMentorEvidence">--</p>
<div id="activeMentorFocus" class="mentor-active-focus"></div>
</div>
<button id="clearMentorChatButton" class="button ghost mentor-clear-button" type="button" disabled><i data-lucide="trash-2"></i><span>清空对话</span></button>
</header>
<div class="chat-box">
<div id="mentorMessages" class="mentor-messages chat-log" aria-live="polite"></div>
<div id="mentorQuickPrompts" class="mentor-quick-prompts">
<span class="mentor-prompt-label">试着这样问</span>
<button type="button" data-mentor-prompt="怎么看今天的市场环境?">市场环境</button>
<button type="button" data-mentor-prompt="当前的市场主线和情绪周期是什么?">主线与周期</button>
<button type="button" data-mentor-prompt="如果今天是空仓状态,你会怎么制定操作预案?">空仓预案</button>
<button type="button" data-mentor-prompt="现在最需要防范的风险是什么?">风险检查</button>
</div>
<form id="mentorChatForm" class="mentor-chat-form chat-input">
<label class="visually-hidden" for="mentorQuestion">向当前思维模型提问</label>
<textarea id="mentorQuestion" maxlength="2000" placeholder="输入市场、板块、个股代码或交易问题"></textarea>
<button id="sendMentorQuestion" class="button primary" type="submit"><i data-lucide="send-horizontal"></i><span>发送</span></button>
</form>
<p class="mentor-disclaimer">基于公开资料提炼的思维模型模拟,不代表本人观点,不构成投资建议。</p>
</div>
</section>
</div>
</section>
<section id="rotationView" class="workspace-view page redesigned-rotation-view">
<header class="rotation-page-head lad-head">
<div>
<h2>板块轮动</h2>
<p id="rotationHistoryRange">最近 9 个交易日 · 由远到近,右侧为最新交易日</p>
</div>
<div class="rotation-head-actions">
<div id="rotationOrderControl" class="rotation-order-control" role="group" aria-label="轮动日期排序">
<button class="active" type="button" data-rotation-order="oldest">由远到近</button>
<button type="button" data-rotation-order="latest">由近到远</button>
</div>
<button id="rotationExportButton" class="rotation-export-button" type="button">导出 CSV</button>
</div>
</header>
<section class="rotation-trajectory-card card" aria-labelledby="rotationTrajectoryTitle">
<header class="rotation-card-head card-h">
<div>
<h3 id="rotationTrajectoryTitle">热点轨迹</h3>
<span id="rotationSelectionHint">点击任意板块追踪其连续性</span>
</div>
<span class="rotation-top-tag">每日 Top 12 热点</span>
</header>
<div class="rotation-legend" aria-label="板块强度图例">
<span><i class="rotation-swatch strong"></i>强度高(90+</span>
<span><i class="rotation-swatch warm"></i>强度中(7089</span>
<span><i class="rotation-swatch mild"></i>强度低(&lt;70</span>
</div>
<div id="rotationTracker" class="rotation-tracker" hidden></div>
<div id="rotationHistory" class="rotation-history"><div class="empty-state">正在读取轮动历史</div></div>
</section>
<section class="rotation-detail-card card" aria-labelledby="rotationDetailTitle">
<header class="rotation-card-head card-h">
<div>
<h3 id="rotationDetailTitle">板块成分股</h3>
<span>点击上方板块,查看目标交易日有效申万成分与行情</span>
</div>
<span id="rotationDetailMeta" class="rotation-top-tag">--</span>
</header>
<div class="rotation-table-frame tbl-wrap">
<table id="rotationTable" class="data-table tbl rotation-table">
<thead><tr>
<th class="number num">序号</th><th>代码</th><th>股票</th>
<th class="number num" data-auto-sort="true" title="涨跌幅:点击排序">涨跌幅(%</th>
<th class="number num">开盘价(元)</th><th class="number num">收盘价(元)</th>
<th class="number num" data-auto-sort="true" title="成交额:点击排序">成交额(亿)</th><th>行情状态</th>
</tr></thead>
<tbody id="rotationTableBody"></tbody>
</table>
<div id="rotationMembersEmpty" class="empty-state">点击上方任意板块查看成分股</div>
</div>
</section>
</section>
<section id="auctionView" class="workspace-view page redesigned-auction-view">
<header class="auction-page-head-v2 auc-head">
<div class="auction-title-cluster">
<div class="auction-title-line"><h2>集合竞价中心</h2><span id="auctionDateLabel">--</span></div>
<div id="auctionPhaseNotice" class="auction-phase-notice-v2" data-phase="archive" role="status" aria-live="polite">
<span class="auction-phase-marker" aria-hidden="true"></span>
<strong id="auctionPhaseTitle">竞价状态</strong>
<span id="auctionPhaseDetail">正在确认当前竞价阶段</span>
<time id="auctionPhaseTime">--</time>
</div>
</div>
<div class="auction-header-actions-v2">
<button id="auctionRefreshButton" class="auction-refresh-button" type="button" hidden><i data-lucide="refresh-cw"></i>刷新竞价</button>
</div>
</header>
<div class="auction-workspace-v2 auc-grid">
<section class="auction-primary-card card" aria-labelledby="auctionWorkspaceTitle">
<div class="visually-hidden"><h3 id="auctionWorkspaceTitle">重点异动</h3><span id="auctionWorkspaceSubtitle">优先查看市场核心与显著预期差</span></div>
<div class="auction-tabs-v2 tabs" role="tablist" aria-label="竞价数据集">
<button class="active" type="button" role="tab" aria-selected="true" data-auction-dataset="focus">重点异动 <strong id="auctionFocusCount">0</strong></button>
<button type="button" role="tab" aria-selected="false" data-auction-dataset="watchlist">我的自选 <strong id="auctionWatchlistCount">0</strong></button>
<button type="button" role="tab" aria-selected="false" data-auction-dataset="all">全部候选 <strong id="auctionAllCount">0</strong></button>
<button type="button" role="tab" aria-selected="false" data-auction-dataset="onePrice">竞价一字 <strong id="auctionOnePriceCount">0</strong></button>
<div id="auctionSummary" class="auction-summary-v2" aria-live="polite"></div>
</div>
<div id="auctionExpectationFilterbar" class="auction-tools-v2 tbl-tools">
<div id="auctionExpectationControls" class="auction-expectation-v2">
<span>预期筛选</span>
<div class="auction-filter-segments seg" role="group" aria-label="竞价预期差筛选">
<button class="active" type="button" data-auction-filter="all">全部</button>
<button type="button" data-auction-filter="above">超预期</button>
<button type="button" data-auction-filter="matched">符合预期</button>
<button type="button" data-auction-filter="below">低于预期</button>
</div>
</div>
<div class="auction-tool-actions">
<label class="auction-search-v2 search"><i data-lucide="search" aria-hidden="true"></i><span class="visually-hidden">搜索竞价候选</span><input id="auctionSearch" type="search" placeholder="代码、名称或行业"></label>
<button id="auctionExportButton" class="auction-export-button" type="button">导出 CSV</button>
</div>
</div>
<div class="auction-table-frame-v2 tbl-wrap">
<table id="auctionTable" class="data-table tbl auction-table-v2">
<thead><tr id="auctionTableHead"></tr></thead>
<tbody id="auctionTableBody"></tbody>
</table>
<div id="auctionEmpty" class="empty-state" hidden>没有符合条件的竞价候选</div>
</div>
</section>
<aside class="auction-side-v2" aria-label="竞价旁证">
<section class="auction-side-card auction-theme-card card" aria-labelledby="auctionThemeTitle">
<header class="auction-card-head-v2 card-h">
<div><h3 id="auctionThemeTitle">题材承接</h3><span>昨日强势方向</span></div>
<span id="auctionThemeBaseline" class="auction-card-tag">--</span>
</header>
<div id="auctionThemeCarry" class="auction-theme-list-v2"></div>
<div class="auction-new-theme-v2"><strong>今日新线索</strong><div id="auctionNewThemes" class="auction-theme-chips-v2"></div></div>
</section>
<section class="auction-side-card auction-volume-card card" aria-labelledby="auctionAmountTitle">
<header class="auction-card-head-v2 card-h">
<div><h3 id="auctionAmountTitle">竞价成交额对比</h3></div>
<span class="auction-card-tag">近 10 个交易日</span>
</header>
<div class="auction-volume-body">
<div class="auction-volume-summary"><strong id="auctionAmountValue" class="auction-amount-value-v2">--</strong><div id="auctionAmountCompare" class="auction-amount-compare-v2"></div></div>
<div id="auctionAmountTrend" class="auction-amount-trend-v2" aria-label="近十个交易日集合竞价成交额"></div>
</div>
<div class="auction-volume-legend"><span><i></i>历史交易日</span><span><i class="current"></i>当日</span><span><i class="average"></i>5 日均值</span></div>
</section>
</aside>
</div>
</section>
<section id="themeLibraryView" class="workspace-view page redesigned-theme-view">
<header class="theme-page-head-v2 lad-head">
<div class="theme-title-v2">
<div><h2>题材库</h2><span>题材行情与成分股</span></div>
<span id="themeDateLabel" class="theme-date-v2">--</span>
</div>
<div class="theme-head-actions-v2">
<label class="theme-search-v2">
<i data-lucide="search" aria-hidden="true"></i>
<span class="visually-hidden">搜索题材</span>
<input id="themeSearch" type="search" placeholder="搜索题材名称或代码" autocomplete="off">
</label>
<button id="themeRefreshButton" class="button theme-refresh-v2" type="button"><i data-lucide="refresh-cw"></i><span>刷新题材</span></button>
</div>
</header>
<div id="themeSummary" class="theme-summary-v2" aria-live="polite"></div>
<div class="theme-library-workspace-v2 theme-grid">
<aside class="theme-directory-card-v2 card" aria-label="题材列表">
<header class="theme-card-head-v2 card-h">
<div><h3>题材排行</h3><span>按当日热度与行情排列</span></div>
<strong id="themeResultCount">0 个</strong>
</header>
<div class="theme-directory-labels-v2" aria-hidden="true"><span>题材</span><span>当日涨跌</span></div>
<div id="themeDirectory" class="theme-directory-v2"></div>
</aside>
<section class="theme-detail-column-v2" aria-live="polite">
<div id="themeDetailEmpty" class="empty-state theme-detail-empty-v2">选择题材查看行情与成分股</div>
<div id="themeDetailContent" class="theme-detail-stack-v2" hidden>
<section class="theme-market-card-v2 card">
<header class="theme-detail-heading-v2">
<div class="theme-detail-identity-v2">
<span class="theme-detail-kicker-v2">题材行情</span>
<div class="theme-detail-name-line-v2"><h3 id="themeDetailName">--</h3><small id="themeDetailCode">--</small></div>
</div>
<div class="theme-change-v2"><span>当日涨幅</span><strong id="themeDetailChange">--</strong></div>
</header>
<div id="themeDetailMetrics" class="theme-detail-metrics-v2"></div>
</section>
<section class="theme-members-card-v2 card">
<header class="theme-members-heading-v2">
<div><h3>成分股</h3><span>点击股票查看完整行情详情</span></div>
<strong id="themeMemberCount">0 只</strong>
</header>
<div class="theme-members-frame-v2 tbl-wrap">
<table class="data-table tbl theme-members-table-v2"><thead><tr><th class="num">序号</th><th>股票</th><th class="number num sortable">涨跌幅(%<span class="arr"></span></th><th class="number num sortable">收盘价(元)<span class="arr"></span></th><th class="number num sortable">成交额(亿)<span class="arr"></span></th></tr></thead><tbody id="themeMemberTableBody"></tbody></table>
</div>
</section>
</div>
</section>
</div>
</section>
<section id="popularityView" class="workspace-view page redesigned-popularity-view">
<header class="popularity-page-head-v2 lad-head">
<div class="popularity-title-v2">
<h2>人气热榜</h2>
<span>同花顺 × 东方财富双榜</span>
<strong id="popularityDateLabel">--</strong>
<small>涨跌幅为当日行情</small>
</div>
<div class="popularity-head-actions-v2">
<div class="popularity-source-tabs-v2" role="tablist" aria-label="热榜来源">
<button class="active" type="button" role="tab" aria-selected="true" data-popularity-source="combined">双榜综合</button>
<button type="button" role="tab" aria-selected="false" data-popularity-source="ths">同花顺</button>
<button type="button" role="tab" aria-selected="false" data-popularity-source="dc">东方财富</button>
</div>
<button id="popularityRefreshButton" class="button popularity-refresh-v2" type="button" title="刷新热榜"><i data-lucide="refresh-cw"></i><span>刷新</span></button>
</div>
</header>
<div id="popularitySummary" class="popularity-glance-v2 hot3" aria-live="polite"></div>
<section class="popularity-table-card-v2 card">
<header class="popularity-table-head-v2">
<div><h3 id="popularityTableTitle">双榜综合榜</h3><span id="popularityTableNote">按双榜排名综合排序</span></div>
<label class="popularity-search-v2">
<i data-lucide="search" aria-hidden="true"></i>
<span class="visually-hidden">搜索热榜股票</span>
<input id="popularitySearch" type="search" placeholder="搜索代码、名称或概念" autocomplete="off">
</label>
</header>
<div class="popularity-table-frame-v2 tbl-wrap">
<table class="data-table tbl popularity-table-v2"><thead><tr id="popularityTableHead"></tr></thead><tbody id="popularityTableBody"></tbody></table>
<div id="popularityEmpty" class="empty-state" hidden>暂无符合条件的人气数据</div>
</div>
</section>
</section>
<section id="dragonView" class="workspace-view page redesigned-dragon-view">
<header class="dragon-page-head-v2 lad-head">
<div class="dragon-title-v2">
<h2>龙虎榜</h2>
<span>游资动向与席位明细</span>
<strong id="dragonDateLabel">--</strong>
</div>
<div class="dragon-head-actions-v2">
<div class="dragon-view-tabs-v2" role="group" aria-label="龙虎榜视图">
<button id="dragonDailyButton" class="active" type="button" data-dragon-view-mode="daily" aria-pressed="true">每日明细</button>
<button id="dragonProfilesButton" type="button" data-dragon-view-mode="profiles" aria-pressed="false">游资档案</button>
</div>
<button id="dragonRefreshButton" class="button dragon-action-v2" type="button"><i data-lucide="refresh-cw"></i><span>刷新</span></button>
<button id="dragonExportButton" class="button dragon-action-v2" type="button"><i data-lucide="download"></i><span>导出 CSV</span></button>
</div>
</header>
<section id="dragonEmptyState" class="dragon-empty-state-v2" hidden aria-live="polite">
<div class="dragon-empty-symbol-v2" aria-hidden="true"><i data-lucide="list-tree"></i></div>
<h3 id="dragonEmptyTitle">当日暂无龙虎榜明细</h3>
<p id="dragonEmptyDescription">龙虎榜明细通常在交易日盘后陆续披露,可稍后刷新或查看前一交易日。</p>
<div class="dragon-empty-actions-v2">
<button id="dragonPreviousButton" class="button" type="button"><i data-lucide="arrow-left"></i><span>查看前一交易日</span></button>
<button id="dragonEmptyRefreshButton" class="button primary" type="button"><i data-lucide="refresh-cw"></i><span>重新检查</span></button>
</div>
</section>
<div id="dragonDailyContent" class="dragon-daily-content-v2">
<div id="dragonSummary" class="dragon-summary-v2"></div>
<div class="dragon-filterbar-v2">
<div class="dragon-filter-copy-v2"><h3>每日明细</h3><span>按公开席位归集当日游资操作</span></div>
<div class="dragon-filter-actions-v2">
<div class="dragon-segments-v2" role="group" aria-label="龙虎榜筛选">
<button type="button" class="dragon-filter-v2 active" data-dragon-filter="all">全部游资</button>
<button type="button" class="dragon-filter-v2" data-dragon-filter="buy">净买入</button>
<button type="button" class="dragon-filter-v2" data-dragon-filter="sell">净卖出</button>
<button id="dragonUnclassifiedFilter" type="button" class="dragon-filter-v2" data-dragon-filter="unclassified">待归类</button>
</div>
<label class="dragon-search-v2"><i data-lucide="search" aria-hidden="true"></i><span class="visually-hidden">搜索游资龙虎榜</span><input id="dragonSearch" type="search" placeholder="搜索游资、席位或股票" autocomplete="off"></label>
</div>
</div>
<section class="dragon-card-stage dragon-card-stage-v2 card">
<div class="dragon-stage-heading-v2"><div><h3>活跃游资</h3><span>点击卡牌查看当日操作</span></div><small>净买入为红 · 净卖出为绿</small></div>
<div id="dragonTraderList" class="dragon-trader-list"></div>
</section>
<section id="dragonTraderDetail" class="dragon-trader-detail dragon-trader-detail-v2 card"><div class="empty-state dragon-empty">选择一位游资查看操作明细</div></section>
<details id="dragonUnclassifiedSection" class="unclassified-section dragon-unclassified-v2">
<summary class="unclassified-heading">
<div><h3 id="unclassifiedTitle">待归类席位</h3><span>为营业部设置游资名后,同名席位会自动合并</span></div>
<strong id="unclassifiedCount">0 个</strong>
</summary>
<div id="unclassifiedSeatList" class="unclassified-seat-list"></div>
</details>
</div>
<section id="dragonProfilesContent" class="hot-money-profiles-v2" hidden aria-label="游资档案">
<header class="hot-money-profile-toolbar-v2">
<div class="dragon-filter-copy-v2">
<h3>游资名录</h3>
<span>公开收录的游资简介与关联营业部</span>
</div>
<div id="hotMoneyProfileSummary" class="hot-money-profile-summary-v2" aria-label="名录统计"></div>
<label class="dragon-search-v2 hot-money-profile-search-v2">
<i data-lucide="search" aria-hidden="true"></i>
<span class="visually-hidden">搜索游资档案</span>
<input id="hotMoneyProfileSearch" type="search" placeholder="搜索游资、简介或营业部" autocomplete="off">
</label>
</header>
<div class="hot-money-profile-workspace-v2">
<section class="hot-money-profile-directory-v2" aria-label="游资名录列表">
<header class="hot-money-profile-directory-head-v2">
<strong>全部游资</strong>
<span id="hotMoneyProfileResultCount">0 位</span>
</header>
<div id="hotMoneyProfileList" class="hot-money-profile-list-v2" role="listbox" aria-label="选择游资档案"></div>
</section>
<article id="hotMoneyProfileDetail" class="hot-money-profile-detail-v2" aria-live="polite">
<div class="hot-money-profile-empty-v2">
<i data-lucide="contact" aria-hidden="true"></i>
<strong>选择一位游资查看档案</strong>
</div>
</article>
</div>
</section>
</section>
<section id="reviewWorkspaceView" class="workspace-view page redesigned-review-view">
<header class="section-toolbar lad-head review-page-header">
<div class="section-title-group review-page-title">
<h2>我的复盘</h2>
<span class="section-subtitle">复盘日期跟随顶栏日期:<b id="reviewDataDate">--</b> · 自选跟踪、交易记录与明日计划</span>
</div>
<button id="reviewHistoryToggle" class="button review-history-toggle" type="button" aria-expanded="false" aria-controls="reviewHistoryPanel"><i data-lucide="history"></i><span>历史复盘</span></button>
</header>
<div class="review-workspace review-grid">
<div class="review-left-stack">
<section class="workspace-section watchlist-section card">
<div class="workspace-heading card-h review-card-heading">
<div><h3>自选跟踪</h3><span id="watchlistCount" class="review-count-tag">0 只</span></div>
<button id="openWatchlistDialog" class="button review-add-watch" type="button"><i data-lucide="plus"></i><span>添加自选</span></button>
</div>
<div class="table-frame tbl-wrap workspace-table-frame">
<table class="data-table tbl review-watchlist-table">
<thead><tr><th>标记</th><th>股票</th><th>所属板块</th><th class="number num">今日涨幅(%</th><th class="number num">5日涨幅(%</th><th class="number num">竞价关注(分)</th><th>跟踪备注</th><th>操作</th></tr></thead>
<tbody id="watchlistTableBody"></tbody>
</table>
<div id="watchlistEmpty" class="empty-state">从股票详情中添加自选,持续跟踪关键标的</div>
</div>
</section>
<section class="workspace-section trade-journal-section card">
<div class="workspace-heading card-h trade-log-heading review-card-heading">
<div><h3>交易日志</h3><span id="tradeLogCount" class="review-count-tag">0 条</span></div>
<button id="openTradeLogDialog" class="button primary" type="button"><i data-lucide="notebook-pen"></i><span>交易日志</span></button>
</div>
<div id="tradeLogSummary" class="trade-log-summary"></div>
<div class="table-frame tbl-wrap trade-log-table-frame">
<table class="data-table tbl trade-log-table">
<thead><tr><th>日期</th><th>股票</th><th>动作</th><th class="number num">仓位(%</th><th class="number num">盈亏(%</th><th class="number num">盈亏金额(元)</th><th>情绪 / 标签</th><th>交易复核</th><th>操作</th></tr></thead>
<tbody id="tradeLogTableBody"></tbody>
</table>
<div id="tradeLogEmpty" class="empty-state">当前日期暂无交易记录,空仓也值得记录原因</div>
</div>
</section>
</div>
<section class="workspace-section journal-section card">
<div class="workspace-heading card-h review-card-heading">
<h3>每日复盘</h3>
<input id="journalDate" class="date-input" type="date" aria-label="复盘日期">
</div>
<form id="journalForm" class="journal-form">
<label class="form-field journal-summary-field"><span>今日盘面一句话</span><input id="journalSummary" maxlength="500" placeholder="用一句话概括今天最重要的市场特征"></label>
<label class="form-field"><span>今日做对了什么 / 做错了什么</span><textarea id="journalContent" maxlength="5000" placeholder="对照计划与纪律:&#10;· 做对的:&#10;· 做错的:&#10;· 漏掉的信号:"></textarea></label>
<label class="form-field"><span>明日策略</span><textarea id="journalPlan" maxlength="2000" placeholder="记录观察方向、触发条件、计划仓位和风险点"></textarea></label>
<p class="journal-form-hint">不求面面俱到,只记录影响下一次决策的事实。</p>
<div class="dialog-actions"><button class="button primary" type="submit"><i data-lucide="check"></i><span>完成复盘</span></button></div>
</form>
</section>
<section id="reviewHistoryPanel" class="workspace-section notes-history-section card" hidden>
<div class="workspace-heading card-h review-card-heading"><div><h3>最近复盘</h3><span id="notesCount" class="review-count-tag">0 条</span></div><small>按交易日倒序</small></div>
<div id="notesHistory" class="notes-history"><div class="empty-state">暂无复盘记录</div></div>
</section>
</div>
</section>
</main>
</div>
<footer class="status-bar statusbar">
<span id="statusText">准备就绪</span>
<span class="risk-note">股市有风险,投资需谨慎</span>
<span id="updatedAt">--</span>
</footer>
<dialog id="tradeLogDialog" class="settings-dialog trade-log-dialog" aria-labelledby="tradeLogDialogTitle">
<div class="dialog-header">
<div><span class="dialog-eyebrow">我的复盘</span><h2 id="tradeLogDialogTitle">交易日志</h2></div>
<button id="closeTradeLogDialog" class="icon-button" type="button" aria-label="关闭" title="关闭"><i data-lucide="x"></i></button>
</div>
<form id="tradeLogForm" class="trade-log-form">
<div class="trade-log-form-grid">
<label class="form-field"><span>交易日</span><input id="tradeLogDate" type="date" required></label>
<label class="form-field"><span>股票代码</span><input id="tradeLogCode" inputmode="numeric" pattern="[0-9]{6}" maxlength="6" required placeholder="002141"></label>
<label class="form-field"><span>股票名称</span><input id="tradeLogName" maxlength="40" required placeholder="贤丰控股"></label>
<label class="form-field"><span>动作</span><select id="tradeLogAction"><option value="buy">买入</option><option value="sell">卖出</option><option value="add">加仓</option><option value="trim">减仓</option><option value="watch">观察</option></select></label>
<label class="form-field"><span>成交价格</span><input id="tradeLogPrice" type="number" min="0.001" step="0.001" required></label>
<label class="form-field"><span>数量</span><input id="tradeLogQuantity" type="number" min="0" step="100" value="0"></label>
<label class="form-field"><span>仓位 %</span><input id="tradeLogPosition" type="number" min="0" max="100" step="0.1" value="0"></label>
<label class="form-field"><span>盈亏金额(可选)</span><input id="tradeLogPnlAmount" type="number" step="0.01"></label>
<label class="form-field"><span>盈亏 %(可选)</span><input id="tradeLogPnlPct" type="number" step="0.01"></label>
<label class="form-field"><span>当时情绪</span><select id="tradeLogEmotion"><option value="calm">平静</option><option value="confident">笃定</option><option value="hesitant">犹豫</option><option value="anxious">焦虑</option><option value="impulsive">冲动</option></select></label>
<label class="form-field trade-tags-field"><span>标签</span><input id="tradeLogTags" maxlength="160" placeholder="计划内, 追高, 止损"></label>
</div>
<div class="trade-log-text-grid">
<label class="form-field"><span>交易逻辑</span><textarea id="tradeLogThesis" maxlength="2000" placeholder="为什么在这里采取动作"></textarea></label>
<label class="form-field"><span>执行复核</span><textarea id="tradeLogExecution" maxlength="2000" placeholder="是否按计划执行,偏差在哪里"></textarea></label>
</div>
<div class="dialog-actions"><button id="cancelTradeEdit" class="button" type="button">取消</button><button id="saveTradeLog" class="button primary" type="submit">保存交易</button></div>
</form>
</dialog>
<dialog id="watchlistDialog" class="settings-dialog watchlist-dialog" aria-labelledby="watchlistDialogTitle">
<div class="dialog-header">
<div><span class="dialog-eyebrow">自选跟踪</span><h2 id="watchlistDialogTitle">添加自选</h2></div>
<button id="closeWatchlistDialog" class="icon-button" type="button" aria-label="关闭" title="关闭"><i data-lucide="x"></i></button>
</div>
<form id="watchlistForm" class="watchlist-editor-form">
<div id="watchlistSearchField" class="form-field">
<label for="watchlistSearchInput">搜索股票</label>
<div class="watchlist-search-control"><i data-lucide="search"></i><input id="watchlistSearchInput" type="search" autocomplete="off" placeholder="输入股票代码或名称"></div>
<div id="watchlistSearchResults" class="watchlist-search-results" aria-live="polite"></div>
</div>
<div id="watchlistSelection" class="watchlist-selection" hidden>
<span class="watchlist-selection-icon"><i data-lucide="chart-candlestick"></i></span>
<div><strong id="watchlistSelectionName">--</strong><span><b id="watchlistSelectionCode">--</b><i id="watchlistSelectionSector">--</i></span></div>
<button id="changeWatchlistSelection" class="table-action" type="button">重选</button>
</div>
<label class="form-field" for="watchlistRemark"><span>跟踪备注</span><textarea id="watchlistRemark" maxlength="240" placeholder="记录关注逻辑、观察条件或失效信号"></textarea></label>
<div class="dialog-actions"><button id="cancelWatchlistEdit" class="button" type="button">取消</button><button id="saveWatchlist" class="button primary" type="submit" disabled>保存自选</button></div>
</form>
</dialog>
<dialog id="heavenReadingDialog" class="settings-dialog heaven-reading-dialog wentian-v2-dialog" aria-labelledby="heavenReadingDialogTitle">
<div class="dialog-header">
<div><span id="heavenReadingEyebrow" class="dialog-eyebrow">问天 · 观势</span><h2 id="heavenReadingDialogTitle">解读</h2></div>
<button id="closeHeavenReadingDialog" class="icon-button" type="button" aria-label="关闭" title="关闭"><i data-lucide="x"></i></button>
</div>
<div class="heaven-reading-tabs" role="tablist" aria-label="问天解读">
<button class="active" type="button" role="tab" data-heaven-reading-tab="current" aria-selected="true">本次解读</button>
<button type="button" role="tab" data-heaven-reading-tab="history" aria-selected="false">历史记录</button>
</div>
<section id="heavenReadingCurrent" class="heaven-reading-current" role="tabpanel">
<div id="heavenReadingLoading" class="heaven-reading-loading" hidden>
<canvas id="heavenReadingCanvas" aria-hidden="true"></canvas>
</div>
<div id="heavenReadingEmpty" class="empty-state">尚无本次解读</div>
<article id="heavenReadingResult" class="heaven-reading-result" hidden>
<header><div><span id="heavenReadingResultStatus">势已成</span><h3 id="heavenReadingSubject">--</h3></div><time id="heavenReadingCreatedAt">--</time></header>
<p id="heavenReadingSubjectDetail">--</p>
<div id="heavenReadingAnswer" class="heaven-reading-answer"></div>
</article>
<div id="heavenReadingError" class="inline-notice" hidden></div>
</section>
<section id="heavenReadingHistory" class="heaven-reading-history" role="tabpanel" hidden>
<div class="heaven-reading-history-list-wrap">
<div class="heaven-reading-history-heading"><strong id="heavenReadingHistoryTitle">观势记录</strong><span id="heavenReadingHistoryCount">0 条</span></div>
<div id="heavenReadingHistoryList" class="heaven-reading-history-list"></div>
</div>
<article id="heavenReadingHistoryDetail" class="heaven-reading-history-detail">
<div class="empty-state">选择一条记录查看完整解读</div>
</article>
</section>
</dialog>
<div id="stockPreviewBackdrop" class="stock-preview-backdrop" hidden></div>
<aside id="stockPreview" class="stock-preview" aria-label="行情预览" aria-live="polite" hidden>
<header class="stock-preview-header">
<div class="stock-preview-identity">
<span id="stockPreviewCode">--</span>
<strong id="stockPreviewName">正在加载</strong>
<small id="stockPreviewSector">--</small>
</div>
<div class="stock-preview-quote">
<strong id="stockPreviewPrice">--</strong>
<span id="stockPreviewChange">--</span>
</div>
<button id="closeStockPreview" class="icon-button stock-preview-close" type="button" title="关闭预览" aria-label="关闭预览"><i data-lucide="x"></i></button>
</header>
<div class="stock-preview-tabs" role="tablist" aria-label="行情图表">
<button class="stock-preview-tab" type="button" role="tab" aria-selected="false" data-preview-chart="intraday">分时</button>
<button class="stock-preview-tab active" type="button" role="tab" aria-selected="true" data-preview-chart="daily">日K</button>
<span id="stockPreviewDate">--</span>
</div>
<div class="stock-preview-chart-shell">
<canvas id="stockPreviewChart" width="488" height="232" aria-label="行情图" aria-describedby="stockPreviewSummary"></canvas>
<div id="stockPreviewLoading" class="stock-preview-loading">
<span class="spinner" aria-hidden="true"></span>
<span>正在读取行情</span>
</div>
</div>
<p id="stockPreviewSummary" class="stock-preview-summary">等待行情数据</p>
<footer class="stock-preview-footer">
<span id="stockPreviewSource">--</span>
<button id="openStockDetailFromPreview" class="button" type="button"><i data-lucide="maximize-2"></i><span>完整详情</span></button>
</footer>
</aside>
<dialog id="globalSearchDialog" class="global-search-dialog" aria-labelledby="globalSearchTitle">
<div class="global-search-shell">
<h2 id="globalSearchTitle" class="sr-only">全局搜索</h2>
<div class="global-search-head">
<i data-lucide="search" aria-hidden="true"></i>
<label class="sr-only" for="globalSearchInput">搜索股票、板块、题材或指数</label>
<input id="globalSearchInput" type="search" autocomplete="off" spellcheck="false" placeholder="搜索股票、板块、题材或指数" aria-controls="globalSearchResults" aria-autocomplete="list">
<kbd aria-label="快捷键 Ctrl 加 K">Ctrl K</kbd>
<button id="closeGlobalSearch" class="icon-button" type="button" aria-label="关闭搜索" title="关闭搜索"><i data-lucide="x"></i></button>
</div>
<div id="globalSearchResults" class="global-search-results" role="listbox" aria-labelledby="globalSearchTitle" aria-live="polite">
<div class="global-search-empty"><i data-lucide="corner-down-left"></i><p>输入名称或代码开始搜索</p><span>使用方向键选择,回车打开详情</span></div>
</div>
</div>
</dialog>
<dialog id="entityDetailDialog" class="stock-dialog entity-detail-dialog" aria-labelledby="entityDetailName">
<div class="dialog-header">
<div>
<span id="entityDetailCode" class="detail-code">--</span>
<h2 id="entityDetailName">--</h2>
</div>
<button id="closeEntityDetail" class="icon-button" type="button" aria-label="关闭" title="关闭"><i data-lucide="x"></i></button>
</div>
<div class="detail-price-line">
<strong id="entityDetailValue">--</strong>
<span id="entityDetailChange">--</span>
<span id="entityDetailType" class="streak-pill">--</span>
</div>
<section class="stock-chart-section">
<div class="detail-section-heading">
<h3>行情走势</h3>
<div class="chart-heading-controls">
<div class="segmented chart-mode-toggle" role="group" aria-label="详情图表周期">
<button class="segment active" type="button" data-entity-detail-chart="daily" aria-pressed="true">日K</button>
<button class="segment" type="button" data-entity-detail-chart="intraday" aria-pressed="false">分时</button>
</div>
<span id="entityDetailDate">--</span>
</div>
</div>
<canvas id="entityDetailChart" class="price-chart" width="680" height="300" aria-label="行情走势图"></canvas>
</section>
<section class="detail-section">
<h3>交易数据</h3>
<dl id="entityDetailMetrics" class="detail-grid"></dl>
</section>
</dialog>
<dialog id="stockDialog" class="stock-dialog" aria-labelledby="detailName">
<div class="dialog-header">
<div>
<span id="detailCode" class="detail-code">--</span>
<h2 id="detailName">--</h2>
</div>
<div class="dialog-header-actions">
<button id="stockHeavenButton" class="button stock-heaven-button" type="button"><i data-lucide="sparkles"></i><span>观势</span></button>
<button id="stockReminderButton" class="button" type="button"><i data-lucide="bell-plus"></i><span>设提醒</span></button>
<button id="watchStockButton" class="button" type="button">加入自选</button>
<button id="closeStockDialog" class="icon-button" type="button" aria-label="关闭" title="关闭"><i data-lucide="x"></i></button>
</div>
</div>
<div class="detail-price-line">
<strong id="detailPrice">--</strong>
<span id="detailChange">--</span>
<span id="detailStreak" class="streak-pill">--</span>
</div>
<section class="stock-chart-section">
<div class="detail-section-heading">
<h3>行情走势</h3>
<div class="chart-heading-controls">
<div class="segmented chart-mode-toggle" role="group" aria-label="股票图表周期">
<button class="segment active" type="button" data-stock-detail-chart="daily" aria-pressed="true">日K</button>
<button class="segment" type="button" data-stock-detail-chart="intraday" aria-pressed="false">分时</button>
</div>
<span id="chartSource">--</span>
</div>
</div>
<canvas id="priceChart" class="price-chart" width="680" height="300" aria-label="股票行情走势图"></canvas>
</section>
<section class="detail-section moneyflow-section">
<h3>当日资金流</h3>
<dl class="moneyflow-grid">
<div><dt>主力净额</dt><dd id="flowNet">--</dd></div>
<div><dt>大单净额</dt><dd id="flowLarge">--</dd></div>
<div><dt>中单净额</dt><dd id="flowMedium">--</dd></div>
<div><dt>小单净额</dt><dd id="flowSmall">--</dd></div>
</dl>
</section>
<section class="detail-section">
<h3>事件逻辑</h3>
<p id="detailReason">--</p>
<span id="detailSector" class="sector-chip">--</span>
<form id="reasonForm" class="inline-edit-form" hidden>
<input id="reasonInput" type="text" maxlength="200" placeholder="修订事件逻辑">
<button class="button" type="submit">保存修订</button>
</form>
</section>
<section class="detail-section">
<h3>交易数据</h3>
<dl class="detail-grid">
<div><dt>首次触板</dt><dd id="detailFirst">--</dd></div>
<div><dt>最后触板</dt><dd id="detailLast">--</dd></div>
<div><dt>开板次数</dt><dd id="detailOpen">--</dd></div>
<div><dt>换手率</dt><dd id="detailTurnover">--</dd></div>
<div><dt>成交额</dt><dd id="detailAmount">--</dd></div>
<div><dt>封单额</dt><dd id="detailSeal">--</dd></div>
</dl>
</section>
<section class="detail-section">
<h3>个股复盘笔记</h3>
<form id="stockNoteForm" class="journal-form compact-form">
<label class="form-field"><span>复盘内容</span><textarea id="stockNoteContent" maxlength="5000" placeholder="记录交易逻辑与盘面反馈"></textarea></label>
<label class="form-field"><span>明日计划</span><textarea id="stockNotePlan" maxlength="2000" placeholder="记录观察条件和应对计划"></textarea></label>
<div class="dialog-actions"><button class="button primary" type="submit">保存笔记</button></div>
</form>
<div id="stockNotes" class="notes-history compact-notes"></div>
</section>
</dialog>
<dialog id="alertsDialog" class="settings-dialog alerts-dialog" aria-labelledby="alertsDialogTitle">
<div class="dialog-header">
<div><span class="dialog-eyebrow">当前账号</span><h2 id="alertsDialogTitle">提醒中心</h2></div>
<button id="closeAlertsDialog" class="icon-button" type="button" aria-label="关闭" title="关闭"><i data-lucide="x"></i></button>
</div>
<div class="alerts-toolbar">
<div class="segmented" role="group" aria-label="提醒筛选">
<button class="segment active" type="button" data-alert-filter="all">全部</button>
<button class="segment" type="button" data-alert-filter="unread">未读</button>
</div>
<button id="markAllAlertsRead" class="button" type="button">全部已读</button>
</div>
<form id="alertForm" class="settings-section alert-form">
<div class="settings-section-heading"><h3>新建提醒</h3><span>仅站内</span></div>
<div class="alert-form-grid">
<label class="form-field"><span>标题</span><input id="alertTitle" maxlength="80" required placeholder="例如:复核开盘承接"></label>
<label class="form-field"><span>提醒日期</span><input id="alertDate" type="date" required></label>
<label class="form-field"><span>股票代码(可选)</span><input id="alertCode" maxlength="12" inputmode="numeric" placeholder="002141"></label>
</div>
<label class="form-field"><span>提醒内容(可选)</span><textarea id="alertContent" maxlength="500" placeholder="记录触发条件和应对动作"></textarea></label>
<div class="dialog-actions"><button class="button primary" type="submit">保存提醒</button></div>
</form>
<section class="settings-section alert-list-section">
<div class="settings-section-heading"><h3>提醒记录</h3><span id="alertListCount">0 条</span></div>
<div id="alertList" class="alert-list"></div>
</section>
</dialog>
<dialog id="assistantDialog" class="settings-dialog assistant-dialog" aria-labelledby="assistantDialogTitle">
<div class="dialog-header">
<div><span class="dialog-eyebrow">智能复盘</span><h2 id="assistantDialogTitle">复盘助手</h2></div>
<div class="dialog-header-actions">
<button id="clearAssistantMessages" class="button" type="button">清空对话</button>
<button id="closeAssistantDialog" class="icon-button" type="button" aria-label="关闭" title="关闭"><i data-lucide="x"></i></button>
</div>
</div>
<div id="assistantMemberGate" class="member-gate assistant-member-gate" hidden>
<div class="member-gate-icon"><i data-lucide="lock-keyhole"></i></div>
<div><strong>复盘助手仅对会员开放</strong><span>开通会员后可读取市场统计、策略跟踪与个人复盘记录,进行统一复盘分析。</span></div>
</div>
<div id="assistantMemberContent" class="assistant-member-content">
<div id="assistantMessages" class="assistant-messages" aria-live="polite">
<div class="empty-state">可以从市场、策略或自己的交易记录开始复盘</div>
</div>
<div class="assistant-quick-prompts" aria-label="快捷问题">
<button type="button" data-assistant-prompt="结合近十日情绪和今天的数据,当前市场处于什么位置?">市场位置</button>
<button type="button" data-assistant-prompt="总结当前市场主线,并说明证据和可能的失效条件。">市场主线</button>
<button type="button" data-assistant-prompt="结合我的策略跟踪和交易日志,找出最值得修正的一个行为模式。">交易复盘</button>
<button type="button" data-assistant-prompt="为下一个交易日给出条件化观察清单,不给无条件买卖指令。">明日清单</button>
</div>
<form id="assistantForm" class="assistant-form">
<label class="sr-only" for="assistantQuestion">向复盘助手提问</label>
<textarea id="assistantQuestion" maxlength="2000" placeholder="询问市场位置、主线、策略表现或自己的交易模式" required></textarea>
<div class="assistant-form-actions">
<button id="stopAssistant" class="button" type="button" hidden><i data-lucide="square"></i>停止</button>
<button id="sendAssistant" class="button primary" type="submit"><i data-lucide="send"></i>发送</button>
</div>
</form>
<p class="assistant-disclaimer">助手仅用于复盘与条件化计划,不执行交易,不构成投资建议。</p>
</div>
</dialog>
<dialog id="settingsDialog" class="settings-dialog account-settings-dialog" aria-labelledby="accountDialogTitle">
<div class="dialog-header">
<div>
<span class="dialog-eyebrow">当前账号</span>
<h2 id="accountDialogTitle">个人资料</h2>
</div>
<button id="closeSettingsDialog" class="icon-button" type="button" aria-label="关闭" title="关闭"><i data-lucide="x"></i></button>
</div>
<div id="connectionStatus" class="connection-status" aria-live="polite">正在读取账号状态</div>
<section class="settings-section membership-overview account-settings-panel" data-account-panel-content="membership" hidden>
<div class="settings-section-heading"><h3>会员状态</h3><span id="membershipBadge">普通用户</span></div>
<p id="membershipDetail" class="settings-lead">开通会员后可使用智能选股、问师、问天、复盘助手等智能功能。</p>
<p id="membershipQuotaHint" class="form-hint">会员默认每日智能分析额度 -- 次,由管理员统一设置。</p>
<div id="membershipUsage" class="membership-usage">今日智能分析 -- 次</div>
<div class="membership-status-grid">
<div><span>开通状态</span><strong id="membershipStateValue">未开通</strong></div>
<div><span>剩余时长</span><strong id="membershipRemainingValue">--</strong></div>
<div><span>今日智能分析</span><strong id="membershipUsageSummary">--</strong></div>
<div><span>剩余智能分析</span><strong id="membershipRemainingUsage">--</strong></div>
</div>
<div class="membership-comparison" aria-label="会员权益对比">
<div class="membership-comparison-head"><span>功能</span><span>普通用户</span><span>会员用户</span></div>
<div><span>行情、搜索与个股详情</span><b>可用</b><b>可用</b></div>
<div><span>自选股、复盘记录与交易日志</span><b>可用</b><b>可用</b></div>
<div><span>智能选股</span><b class="muted">不可用</b><b class="available">可用</b></div>
<div><span>问师与问天</span><b class="muted">不可用</b><b class="available">可用</b></div>
<div><span>复盘助手</span><b class="muted">不可用</b><b class="available">可用</b></div>
<div><span>每日智能分析额度</span><b class="muted"></b><b class="available">按会员额度使用</b></div>
</div>
<div class="membership-topup-row"><span><i data-lucide="battery-charging"></i>智能分析加油包</span><button id="membershipTopupButton" class="button" type="button" disabled>暂不可用</button></div>
</section>
<section class="settings-section account-birth-section account-settings-panel" data-account-panel-content="profile">
<div class="settings-section-heading"><h3>个人资料</h3><span id="birthProfileStatus">尚未设置</span></div>
<p class="settings-lead privacy-note"><i data-lucide="lock-keyhole"></i><span>出生信息仅对当前账号可见并加密保存,不会向其他用户公开。</span></p>
<form id="accountBirthForm" class="account-birth-form">
<label class="form-field"><span>出生日期</span><input id="accountBirthDate" type="date" min="1900-01-01" max="2100-12-31" required></label>
<label class="form-field"><span>出生时间</span><input id="accountBirthTime" type="time" required></label>
<label class="form-field"><span>性别</span><select id="accountBirthGender"><option value="unspecified">不指定</option><option value="male"></option><option value="female"></option></select></label>
<div class="dialog-actions">
<button id="deleteBirthProfileButton" class="button danger-button" type="button">删除资料</button>
<button class="button primary" type="submit">保存资料</button>
</div>
</form>
<p class="form-hint">原始信息加密保存且不在观气页回显;智能解读只使用排盘后的派生结果。</p>
</section>
<section class="settings-section password-section account-settings-panel" data-account-panel-content="password" hidden>
<div class="settings-section-heading"><h3>修改密码</h3><span>仅当前账号</span></div>
<form id="passwordForm" class="password-form">
<label class="form-field"><span>当前密码</span><input id="currentPassword" type="password" autocomplete="current-password" required></label>
<label class="form-field"><span>新密码</span><input id="newPassword" type="password" minlength="8" maxlength="128" autocomplete="new-password" required></label>
<label class="form-field"><span>确认新密码</span><input id="confirmPassword" type="password" minlength="8" maxlength="128" autocomplete="new-password" required></label>
<div class="dialog-actions"><button class="button primary" type="submit">更新密码</button></div>
</form>
</section>
</dialog>
<dialog id="adminDialog" class="settings-dialog admin-dialog" aria-labelledby="adminDialogTitle">
<div class="dialog-header">
<div><span class="dialog-eyebrow">管理员</span><h2 id="adminDialogTitle">系统配置</h2></div>
<button id="closeAdminDialog" class="icon-button" type="button" aria-label="关闭" title="关闭"><i data-lucide="x"></i></button>
</div>
<div id="adminConnectionStatus" class="connection-status" aria-live="polite">正在读取系统状态</div>
<div class="admin-section-picker">
<label for="adminSectionSelect">管理项目</label>
<select id="adminSectionSelect">
<option value="market">行情管理</option>
<option value="models">模型池</option>
<option value="members">会员管理</option>
</select>
</div>
<div class="admin-panel" data-admin-panel="market">
<form id="systemMarketForm" class="settings-section">
<div class="settings-section-heading"><h3>公共行情</h3><span id="systemDataStatus">待检查</span></div>
<label class="form-field"><span>Tushare Token</span><input id="systemTokenInput" type="password" autocomplete="off" minlength="20" placeholder="留空保留现有 Token"></label>
<label class="form-field"><span>iFinD Refresh Token</span><input id="systemIfindTokenInput" type="password" autocomplete="off" maxlength="2048" placeholder="留空保留现有 Token"></label>
<label class="switch-control"><input id="systemBackgroundRefresh" type="checkbox"><span>启用交易时段后台刷新</span></label>
<p class="form-hint">所有用户读取同一份后台快照,页面不会随后台任务自动重绘。</p>
<div class="dialog-actions admin-inline-actions"><button id="adminRefreshButton" class="button" type="button"><i data-lucide="refresh-cw"></i>立即后台刷新</button><button class="button primary" type="submit">保存行情配置</button></div>
</form>
<section class="settings-section">
<div class="settings-section-heading"><h3>历史数据回补</h3><span>管理员任务</span></div>
<div class="backfill-controls">
<label class="form-field"><span>开始日期</span><input id="backfillStart" type="date"></label>
<label class="form-field"><span>结束日期</span><input id="backfillEnd" type="date"></label>
</div>
<div class="dialog-actions"><button id="backfillButton" class="button" type="button">开始回补</button></div>
</section>
</div>
<div class="admin-panel" data-admin-panel="models" hidden>
<form id="systemModelsForm" class="settings-section">
<div class="settings-section-heading"><h3>平台模型池</h3><span>会员共享</span></div>
<div class="model-role-selectors">
<label class="form-field"><span>主模型</span><select id="platformPrimaryModelSelect"></select></label>
<label class="form-field"><span>辅助模型</span><select id="platformFallbackModelSelect"><option value="">不启用辅助模型</option></select></label>
</div>
<div id="modelPoolList" class="model-pool-list"></div>
<div class="dialog-actions admin-inline-actions"><button id="addPlatformModel" class="button" type="button"><i data-lucide="plus"></i>添加模型</button><button class="button primary" type="submit">保存模型池</button></div>
</form>
</div>
<div class="admin-panel" data-admin-panel="members" hidden>
<form id="membershipSettingsForm" class="settings-section membership-limit-form">
<div class="settings-section-heading"><h3>会员调用额度</h3><span>每日自动重置</span></div>
<label class="form-field compact-number-field"><span>会员每日智能分析上限</span><input id="memberDailyLimit" type="number" min="1" max="1000" value="50"></label>
<div class="dialog-actions"><button class="button primary" type="submit">保存调用额度</button></div>
</form>
<section class="settings-section">
<div class="settings-section-heading"><h3>会员账号</h3><span>手动开通与续期</span></div>
<div id="adminUsersList" class="admin-users-list"></div>
</section>
</div>
</dialog>
<div id="loadingOverlay" class="loading-overlay" hidden>
<div class="loading-box">
<span class="spinner" aria-hidden="true"></span>
<div class="loading-copy">
<strong id="loadingTitle">正在加载复盘数据</strong>
<small id="loadingHint">请稍候</small>
</div>
<div class="loading-progress" aria-hidden="true"><i></i></div>
</div>
</div>
<div id="toast" class="toast" role="status" hidden></div>
<script src="/vendor/lucide.min.js" defer></script>
<script src="/ui-core.js" defer></script>
<script src="/shared/components.js?v=20260729-1" defer></script>
<script src="/pages.config.js?v=20260729-1" defer></script>
<script src="/pages/runtime.js?v=20260729-1" defer></script>
<script src="/pages/sentiment/page.js?v=20260729-1" defer></script>
<script src="/pages/pools/page.js?v=20260729-1" defer></script>
<script src="/pages/ladder/page.js?v=20260729-1" defer></script>
<script src="/pages/rotation/page.js?v=20260729-1" defer></script>
<script src="/pages/auction/page.js?v=20260729-1" defer></script>
<script src="/pages/themes/page.js?v=20260729-1" defer></script>
<script src="/pages/popularity/page.js?v=20260729-1" defer></script>
<script src="/pages/dragon-tiger/page.js?v=20260729-1" defer></script>
<script src="/pages/screener/page.js?v=20260729-1" defer></script>
<script src="/pages/mentor/page.js?v=20260729-1" defer></script>
<script src="/pages/heaven/page.js?v=20260729-1" defer></script>
<script src="/pages/review/page.js?v=20260729-1" defer></script>
<script src="/shared/state.js?v=20260729-1" defer></script>
<script src="/shared/api.js?v=20260729-1" defer></script>
<script src="/shared/shell.js?v=20260729-1" defer></script>
<script src="/heaven-loading-v2.js?v=20260728-2" defer></script>
<script src="/app.js?v=20260729-6" defer></script>
</body>
</html>