Files
xiaobaifupan/static/index.html
T

1379 lines
87 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">
<title>小白复盘</title>
<link rel="stylesheet" href="/styles.css">
</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">
<svg class="brand-logo" viewBox="0 0 36 36" role="img">
<rect width="36" height="36" rx="7" fill="currentColor"/>
<path d="M12 11.5h13v15H11.5v-11h13M12 19h12.5M16 7.5l3 3.2 4.5-4.2" fill="none" stroke="#fff" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M19 10.7l4.5-4.2" fill="none" stroke="#E96B70" stroke-width="2.4" stroke-linecap="round"/>
</svg>
</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>
<header class="app-header">
<div class="brand-block">
<div class="brand-mark" aria-hidden="true">
<svg class="brand-logo" viewBox="0 0 36 36" role="img">
<rect width="36" height="36" rx="7" fill="currentColor"/>
<path d="M12 11.5h13v15H11.5v-11h13M12 19h12.5M16 7.5l3 3.2 4.5-4.2" fill="none" stroke="#fff" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M19 10.7l4.5-4.2" fill="none" stroke="#E96B70" stroke-width="2.4" stroke-linecap="round"/>
</svg>
</div>
<div>
<h1>小白复盘</h1>
</div>
</div>
<div class="market-tape" 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="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" aria-label="复盘模块">
<div class="nav-brand" aria-hidden="true"><span>工作台</span></div>
<div class="nav-group market-nav-group">
<div class="nav-group-label">市场复盘</div>
<button class="module-tab market-sub-tab" type="button" data-view="sentimentCycleView" title="情绪周期"><i data-lucide="activity"></i><span>情绪周期</span></button>
<button class="module-tab active 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="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="dragonView">龙虎榜</option>
</select>
<i data-lucide="chevron-down" aria-hidden="true"></i>
</label>
<section class="overview-strip" aria-label="当日复盘指标">
<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>
</section>
<section id="limitPool" class="workspace-view active-view">
<div class="section-toolbar">
<div class="section-title-group">
<h2>涨停股票池</h2>
<span id="resultCount" class="count-badge">0 只</span>
</div>
<div class="toolbar-controls">
<div class="segmented" role="group" aria-label="连板筛选">
<button type="button" class="segment active" data-filter="all">全部</button>
<button type="button" class="segment" data-filter="1">首板</button>
<button type="button" class="segment" data-filter="2">2板</button>
<button type="button" class="segment" data-filter="3">3板+</button>
</div>
<label class="search-field">
<span class="visually-hidden">搜索股票</span>
<input id="stockSearch" type="search" placeholder="代码、名称、题材">
</label>
<button id="exportButton" class="button" type="button">导出 CSV</button>
</div>
</div>
<div class="main-grid">
<div class="table-frame">
<table class="data-table" id="limitTable">
<thead>
<tr>
<th class="row-number">#</th>
<th data-sort="code">代码</th>
<th data-sort="name">股票名称</th>
<th class="number" data-sort="streak">连板</th>
<th class="number" data-sort="change">涨幅</th>
<th class="number" data-sort="price">价格</th>
<th data-sort="sector">所属板块</th>
<th class="reason-column">涨停原因</th>
<th data-sort="first_time">首封</th>
<th data-sort="last_time">最后封板</th>
<th class="number" data-sort="open_times">开板</th>
<th class="number" data-sort="turnover_rate">换手率</th>
<th class="number" data-sort="amount_billion">成交额</th>
<th class="number" data-sort="seal_amount_million">封单额</th>
</tr>
</thead>
<tbody id="limitTableBody"></tbody>
</table>
<div id="emptyState" class="empty-state" hidden>没有符合条件的股票</div>
</div>
<aside class="insight-rail" aria-label="连板与板块概况">
<section class="rail-section">
<div class="rail-heading">
<h3>连板高度</h3>
<span id="maxHeight">--</span>
</div>
<div id="ladderMini" class="ladder-mini"></div>
</section>
<section class="rail-section">
<div class="rail-heading">
<h3>热点板块</h3>
<button class="text-button" type="button" data-open-view="rotationView">查看轮动</button>
</div>
<div id="sectorMini" class="sector-mini"></div>
</section>
</aside>
</div>
</section>
<section id="brokenView" class="workspace-view">
<div class="section-toolbar">
<div class="section-title-group">
<h2>炸板股票池</h2>
<span id="brokenCount" class="count-badge warning-badge">0 只</span>
<span class="section-subtitle">触及涨停后未能封住</span>
</div>
<button id="brokenExportButton" class="button" type="button">导出 CSV</button>
</div>
<div class="table-frame phase-table-frame">
<table class="data-table">
<thead><tr>
<th>#</th><th>代码</th><th>股票名称</th><th class="number">涨幅</th>
<th class="number">价格</th><th>所属板块</th><th class="reason-column">炸板原因</th>
<th>首次触板</th><th>最后触板</th><th class="number">开板</th>
<th class="number">换手率</th><th class="number">成交额</th>
</tr></thead>
<tbody id="brokenTableBody"></tbody>
</table>
</div>
</section>
<section id="downView" class="workspace-view">
<div class="section-toolbar">
<div class="section-title-group">
<h2>跌停股票池</h2>
<span id="downCount" class="count-badge down-badge">0 只</span>
<span class="section-subtitle">观察退潮、高位风险与亏钱效应</span>
</div>
<button id="downExportButton" class="button" type="button">导出 CSV</button>
</div>
<div class="table-frame phase-table-frame">
<table class="data-table">
<thead><tr>
<th>#</th><th>代码</th><th>股票名称</th><th class="number">跌幅</th>
<th class="number">价格</th><th>所属板块</th><th class="reason-column">风险线索</th>
<th class="number">连续跌停</th><th class="number">换手率</th><th class="number">成交额</th>
</tr></thead>
<tbody id="downTableBody"></tbody>
</table>
</div>
</section>
<section id="yesterdayView" class="workspace-view">
<div class="section-toolbar">
<div class="section-title-group">
<h2>昨日涨停表现</h2>
<span id="yesterdayCount" class="count-badge">0 只</span>
<span id="previousTradeDate" class="section-subtitle">--</span>
</div>
<button id="yesterdayExportButton" class="button" type="button">导出 CSV</button>
</div>
<div class="table-frame phase-table-frame">
<table class="data-table">
<thead><tr>
<th>#</th><th>代码</th><th>股票名称</th><th class="number">昨日高度</th>
<th class="number">今日涨幅</th><th>今日结果</th><th class="number">当前高度</th>
<th>所属板块</th><th class="reason-column">涨停逻辑</th>
</tr></thead>
<tbody id="yesterdayTableBody"></tbody>
</table>
</div>
</section>
<section id="performanceView" class="workspace-view">
<div class="section-toolbar">
<div class="section-title-group">
<h2>涨停晋级表现</h2>
<span class="section-subtitle">按昨日连板高度统计今日反馈</span>
</div>
</div>
<div id="performanceCards" class="performance-cards"></div>
<section class="market-breadth-panel" aria-labelledby="marketBreadthTitle">
<div class="workspace-heading">
<div><h3 id="marketBreadthTitle">市场宽度</h3><span id="breadthSummary">--</span></div>
<strong id="breadthRatio">--</strong>
</div>
<div class="breadth-distribution" 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="breadth-metrics">
<div><span>上涨</span><strong id="breadthUpCount" class="up">--</strong></div>
<div><span>平盘</span><strong id="breadthFlatCount">--</strong></div>
<div><span>下跌</span><strong id="breadthDownCount" class="down">--</strong></div>
<div><span>涨跌比</span><strong id="breadthAdvanceDecline">--</strong></div>
<div><span>宽度差</span><strong id="breadthDifference">--</strong></div>
</div>
</section>
<div class="table-frame performance-table-frame">
<table class="data-table">
<thead><tr>
<th>昨日梯队</th><th class="number">股票数</th><th class="number">晋级数</th>
<th class="number">晋级率</th><th class="number">收红率</th><th class="number">平均涨幅</th>
</tr></thead>
<tbody id="performanceTableBody"></tbody>
</table>
</div>
</section>
<section id="sentimentCycleView" class="workspace-view">
<div class="section-toolbar sentiment-cycle-toolbar">
<div class="section-title-group">
<h2>情绪周期</h2>
<span id="sentimentHistoryDateRange" class="section-subtitle">--</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>
<section class="sentiment-cycle-summary" aria-label="最新情绪状态">
<div class="sentiment-cycle-current">
<div id="sentimentCycleScoreMarker" class="sentiment-cycle-score-marker"><strong id="sentimentCycleScore">--</strong><span>/ 100</span></div>
<div><span class="metric-label">最新交易日</span><h3 id="sentimentCycleLabel">--</h3><small id="sentimentCycleDate">--</small></div>
</div>
<div class="sentiment-cycle-state"><span>周期阶段</span><strong id="sentimentCyclePhase">--</strong><small id="sentimentCycleDirection">--</small></div>
<div class="sentiment-cycle-state"><span>昨日涨停反馈</span><strong id="sentimentPreviousPositive">--</strong><small id="sentimentPreviousAverage">--</small></div>
<div class="sentiment-cycle-state"><span>统计样本</span><strong id="sentimentHistoryDays">--</strong><small id="sentimentNormalization">--</small></div>
</section>
<div class="sentiment-cycle-analysis">
<section class="sentiment-trend-panel">
<div class="workspace-heading"><h3>温度走势</h3><span>0—100</span></div>
<div class="sentiment-chart-shell"><canvas id="sentimentTrendChart" aria-label="市场情绪温度走势图"></canvas></div>
</section>
<section class="sentiment-components-panel">
<div class="workspace-heading"><h3>评分构成</h3><span>最新交易日</span></div>
<div id="sentimentComponentList" class="sentiment-component-list"></div>
</section>
</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 sentiment-history-frame">
<table class="data-table 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>温度</th><th>阶段</th><th>方向</th>
<th>涨停</th><th>首板</th><th>二板</th><th>三板+</th><th>高度</th>
<th>炸板</th><th>跌停</th><th>昨涨停</th><th>昨红盘</th><th>红盘率</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">
<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="section-toolbar heaven-toolbar">
<div class="section-title-group">
<h2><span class="heaven-title-seal" aria-hidden="true"></span>问天</h2>
<span id="heavenDataDate" class="section-subtitle">--</span>
</div>
</div>
<div class="heaven-tabs" role="tablist" aria-label="问天模块">
<button class="heaven-tab active" type="button" data-heaven-panel="trend">观势</button>
<button class="heaven-tab" type="button" data-heaven-panel="fortune">观气</button>
<button class="heaven-tab" type="button" data-heaven-panel="heart">观心</button>
</div>
<p class="heaven-proverb">遇事不决可问春风,春风不语即随本心</p>
<div id="heavenNotice" class="inline-notice" hidden></div>
<section id="heavenTrendPanel" class="heaven-panel active-heaven-panel">
<div class="heaven-controls">
<div class="heaven-stock-query">
<label class="form-field"><span>股票代码或名称</span><input id="heavenStockInput" type="text" inputmode="text" maxlength="30" placeholder="例如 600000 或 浦发银行"></label>
<div id="heavenStockIdentity" class="heaven-stock-identity" aria-live="polite" hidden>
<span>当前标的</span>
<strong id="heavenStockName">--</strong>
<small id="heavenStockSector">--</small>
</div>
</div>
<div class="heaven-trend-actions">
<button id="loadHeavenSelectionButton" class="button" type="button">载入</button>
<button id="historyTrendButton" class="button" type="button"><i data-lucide="history"></i><span>历史记录</span></button>
<button id="interpretTrendButton" class="button primary" type="button" disabled>解势</button>
</div>
</div>
<div id="heavenTrendEmpty" class="heaven-trend-empty" role="status">请输入股票代码或股票名称</div>
<div class="heaven-trend-layout" 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 id="heavenIndexStrip" class="heaven-index-strip"></div>
<details class="trend-evidence-panel">
<summary>三才取象之据<i data-lucide="chevron-down" aria-hidden="true"></i></summary>
<div id="heavenTrendEvidence" class="trend-evidence-body"></div>
</details>
</section>
</div>
<section id="heavenCalibrationPanel" class="heaven-calibration-panel" aria-labelledby="heavenCalibrationTitle" hidden>
<div 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>
</div>
</div>
<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>
</section>
</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">--</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"><i data-lucide="history"></i><span>历史记录</span></button>
<button id="interpretFortuneButton" class="button primary" type="button">解运</button>
</div>
</div>
<div class="qi-hero">
<section class="human-field-panel qi-climate-panel">
<canvas id="qiFieldCanvas" aria-hidden="true"></canvas>
<div class="qi-climate-center">
<span class="qi-section-mark">壹 · 天</span>
<div class="qi-climate-heading">
<div><span>今日气候</span><h3 id="qiClimateKeyword">--</h3></div>
<strong id="qiClimateTone">--</strong>
</div>
<p id="humanFieldSummary" class="human-field-summary">--</p>
</div>
</section>
<section class="five-phase-panel">
<div class="workspace-heading"><h3>五行流转</h3><span>强弱 · 心性 · 流向</span></div>
<div id="fivePhaseBalance" class="five-phase-balance"></div>
</section>
</div>
<section class="qi-framework-panel">
<div class="workspace-heading"><h3>三层气机</h3><span id="qiFrameworkPrinciple">--</span></div>
<div id="qiFrameworkLayers" class="qi-framework-layers"></div>
</section>
<section class="qi-instincts-panel">
<div class="human-field-grid">
<div><span><i data-lucide="heart-pulse"></i>容易生起</span><strong id="humanEmotionList">--</strong></div>
<div><span><i data-lucide="scan-eye"></i>判断偏差</span><strong id="humanBiasList">--</strong></div>
<div><span><i data-lucide="mouse-pointer-click"></i>操作惯性</span><strong id="humanOperation">--</strong></div>
<div><span><i data-lucide="shield-check"></i>风险与制衡</span><strong id="humanBalanceActions">--</strong></div>
</div>
</section>
<section class="personal-fortune-panel">
<div class="workspace-heading"><h3>个人影响</h3><span>日主、十神喜恶、五行喜忌与当日作用</span></div>
<div id="personalProfileEmpty" class="personal-profile-empty">
<span>当前账号尚未设置个人命理资料</span>
<button id="openPersonalSettingsButton" class="button" type="button">前往设置</button>
</div>
<div id="personalFortuneResult" class="personal-fortune-result" hidden></div>
</section>
<section class="qi-use-panel">
<div class="workspace-heading"><div><span>叁 · 用</span><h3 id="phaseSectorTitle">五行行业归属</h3></div><span id="phaseSectorContext">传统取象 · 手动归类优先</span></div>
<div id="qiUseMap" class="qi-use-map">
<div id="qiUseSources" class="qi-use-sources" aria-label="五行气场来源"></div>
<svg id="qiUseConnections" class="qi-use-connections" aria-hidden="true"></svg>
<div id="phaseSectorList" class="phase-sector-list qi-sector-groups" aria-label="五行行业归类"></div>
</div>
</section>
<details class="phase-sector-panel qi-evidence-panel">
<summary class="qi-evidence-summary">
<div><span>次要信息</span><h3>历法细目与归类管理</h3></div>
<span>展开查看推演依据</span>
<i data-lucide="chevron-down" aria-hidden="true"></i>
</summary>
<div class="qi-evidence-body">
<section class="qi-detail-section">
<div class="workspace-heading"><h3>历法细目</h3><span>中运、司天、在泉与节气定位</span></div>
<div id="fortuneMetrics" class="fortune-metrics"></div>
</section>
<details id="sectorPhaseManager" class="sector-phase-manager">
<summary class="sector-phase-manager-heading"><strong>管理手动归类</strong><span>精确名称优先</span><i data-lucide="chevron-down" aria-hidden="true"></i></summary>
<div class="sector-phase-manager-body">
<form id="sectorPhaseForm" class="sector-phase-form">
<input id="sectorPhaseName" type="text" maxlength="50" placeholder="行业或题材名称" aria-label="行业或题材名称" required>
<select id="sectorPhaseElement" aria-label="五行归类"><option value="木"></option><option value="火"></option><option value="土"></option><option value="金"></option><option value="水"></option></select>
<button class="button" type="submit">保存归类</button>
</form>
<div id="sectorPhaseOverrides" class="sector-phase-overrides"></div>
</div>
</details>
</div>
</details>
<p id="fortuneNotice" class="heaven-footnote"></p>
</section>
<section id="heavenHeartPanel" class="heaven-panel">
<canvas id="heartDustCanvas" class="heart-dust-canvas" aria-hidden="true"></canvas>
<div id="heartLamp" class="heart-lamp" aria-hidden="true"></div>
<div class="heart-toolbar-controls">
<button id="historyHeartButton" class="heart-history-button" type="button" aria-label="查看观心历史记录" title="历史记录">
<i data-lucide="history"></i><span>历史记录</span>
</button>
<button id="heartSoundToggle" class="heart-sound-toggle" type="button" aria-pressed="false" aria-label="开启观心声音" title="声音">
<i data-lucide="volume-x"></i><span>静音</span>
</button>
</div>
<div id="heartRitualCurtain" class="heart-ritual-curtain" aria-hidden="true">
<i class="heart-daybreak-dark"></i><strong>观 心</strong><span>心静,而后问</span>
</div>
<div id="heartIntro" class="heart-stage active-heart-stage">
<div id="heartWhispers" class="heart-whispers" aria-hidden="true"></div>
<div class="heart-stage-inner">
<span class="heart-stage-index heart-rise" data-heart-delay="0">观心 · 一</span>
<h3 class="heart-rise" 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" 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><i data-lucide="arrow-left"></i><span>返回</span></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">放松片刻,准备呼吸</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><i data-lucide="arrow-left"></i><span>返回</span></button>
<div class="heart-casting-layout">
<section class="heart-hexagram-shell">
<div class="workspace-heading"><h3>从初爻起</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"></span><span class="heart-coin-face back"></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"></span><span class="heart-coin-face back"></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"></span><span class="heart-coin-face back"></span></div><i class="heart-coin-ring"></i></div>
</div>
<h3 id="castingPrompt">心中默念所问之事,然后掷出初爻</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><i data-lucide="arrow-left"></i><span>返回</span></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>先不解卦</h3>
<p id="heartFirstThoughtPrompt">看见卦象与爻辞后,心里升起的第一念是什么?</p>
<p>不要修饰,也不必记录。只需看见它。</p>
<button id="interpretHeartButton" class="button primary" type="button">我已察念,开始解卦</button>
</section>
</div>
<div id="heartLineTexts" class="heart-line-texts" aria-label="六爻爻辞,悬停、点击或聚焦查看"></div>
</div>
<div id="heartInterpretationStage" class="heart-stage">
<div class="heart-interpretation-heading">
<div><span class="heart-stage-index">观心 · 五</span><h3 id="heartReadTitle">解卦</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">一念既察,卦只是镜。</p>
</div>
<p class="heaven-footnote heart-footnote">观心用于观察念头与执着,不用于替代交易计划或预测涨跌。</p>
</section>
</section>
<section id="ladderView" class="workspace-view">
<div class="section-toolbar">
<div class="section-title-group">
<h2>市场天梯</h2>
<span class="section-subtitle">按连续涨停高度观察空间板和梯队完整度</span>
</div>
</div>
<div id="ladderBoard" class="ladder-board"></div>
</section>
<section id="screenerView" class="workspace-view 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="section-toolbar">
<div class="section-title-group">
<h2>智能选股</h2>
<span id="screenerDateLabel" class="section-subtitle">--</span>
</div>
<div class="toolbar-controls">
<button id="factorSyncButton" class="button" type="button">同步因子数据</button>
<button id="screenerRunButton" class="button primary" type="button">执行选股</button>
<button id="refreshTrackingButton" class="button" type="button"><i data-lucide="refresh-cw"></i>刷新跟踪</button>
<button id="screenerExportButton" class="button" type="button">导出 CSV</button>
</div>
</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">
<div class="screener-task-strip" aria-live="polite">
<div><i data-lucide="database"></i><span>因子</span><strong id="factorTaskStatus">等待检查</strong></div>
<div><i data-lucide="cpu"></i><span>编译</span><strong id="compilerStatus">本地模板编译</strong></div>
<div><i data-lucide="list-checks"></i><span>选股</span><strong id="screenerRunStatus">等待执行</strong></div>
<div><i data-lucide="chart-no-axes-combined"></i><span>回测</span><strong id="backtestTaskStatus">随选股执行</strong></div>
</div>
<section class="regime-panel">
<div class="regime-summary">
<span class="metric-label">自动识别阶段</span>
<strong id="regimeLabel">--</strong>
<span id="regimeConfidence">置信度 --</span>
</div>
<div id="regimeSelector" class="regime-selector" role="group" aria-label="选择市场阶段"></div>
<div class="regime-evidence">
<strong id="regimeReason">--</strong>
<div id="regimeEvidenceList"></div>
</div>
<div class="factor-data-status">
<span class="metric-label">因子数据</span>
<strong id="factorDateCount">0 日</strong>
<span id="factorDateRange">尚未同步</span>
</div>
</section>
<div class="screener-layout">
<aside class="strategy-sidebar">
<div class="workspace-heading"><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="activeStrategyHeading">--</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">
<button id="compileStrategyButton" class="button" type="button">生成公式</button>
<button id="saveStrategyButton" class="button" type="button">保存策略</button>
<button id="deleteStrategyButton" class="button danger-button" type="button" hidden>删除策略</button>
<label class="checkbox-control"><input id="runBacktestToggle" type="checkbox" checked>滚动回测</label>
</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>
<section id="backtestPanel" class="backtest-panel" hidden>
<div class="workspace-heading"><h3>历史条件验证</h3><span id="backtestDefinition">--</span></div>
<div id="backtestMetrics" class="dragon-summary"></div>
</section>
</div>
<div class="screener-results-view">
<div class="section-toolbar result-toolbar">
<div class="section-title-group"><h2>候选结果</h2><span id="screenerResultCount" class="count-badge">0 只</span></div>
<span id="screenerDisclaimer" class="section-subtitle">历史统计不代表未来收益</span>
</div>
<div class="table-frame screener-result-frame">
<table class="data-table">
<thead><tr>
<th>排名</th><th>代码</th><th>股票名称</th><th>板块</th><th class="number">综合分</th>
<th class="number">历史估计</th><th class="number">当日涨幅</th><th class="number">5日涨幅</th>
<th class="number">量比</th><th class="number">板块强度</th><th>主要贡献</th><th>风险</th><th>操作</th>
</tr></thead>
<tbody id="screenerTableBody"></tbody>
</table>
<div id="screenerEmpty" class="empty-state">尚未执行选股</div>
</div>
</div>
<section class="strategy-tracking-panel" aria-labelledby="strategyTrackingTitle">
<div class="section-toolbar result-toolbar">
<div class="section-title-group"><h2 id="strategyTrackingTitle">策略持续跟踪</h2><span id="trackingBatchCount" class="count-badge">0 批</span></div>
<span class="section-subtitle">以入选价为基准,跟踪后续五个交易日</span>
</div>
<div id="trackingSummary" class="tracking-summary"></div>
<div class="table-frame tracking-table-frame">
<table class="data-table tracking-table">
<thead><tr><th>入选日</th><th>策略</th><th>股票</th><th class="number">入选价</th><th class="number">T+1 开</th><th class="number">T+1 收</th><th class="number">T+3</th><th class="number">T+5</th><th class="number">最大涨幅</th><th class="number">最大回撤</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 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="section-toolbar">
<div class="section-title-group">
<h2>问师</h2>
<span id="mentorDataDate" class="section-subtitle">--</span>
</div>
<button id="clearMentorChatButton" class="button" type="button" disabled>清空对话</button>
</div>
<div id="mentorNotice" class="inline-notice" hidden></div>
<div class="mentor-layout">
<aside class="mentor-sidebar">
<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 mentor-directory-heading">
<div><h3>思维模型</h3><span id="mentorCount">0 位</span></div>
<div class="mentor-directory-actions">
<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>
<div class="mentor-evidence-filters" 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>
<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">
<header class="mentor-chat-header">
<div class="mentor-active-profile">
<span class="metric-label">当前问师</span>
<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>
</header>
<div id="mentorMessages" class="mentor-messages" aria-live="polite"></div>
<div id="mentorQuickPrompts" class="mentor-quick-prompts">
<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">
<label class="visually-hidden" for="mentorQuestion">向当前思维模型提问</label>
<textarea id="mentorQuestion" maxlength="2000" placeholder="输入市场、板块、个股代码或交易问题"></textarea>
<button id="sendMentorQuestion" class="button primary" type="submit">发送</button>
</form>
<p class="mentor-disclaimer">基于公开资料提炼的思维模型模拟,不代表本人观点,不构成投资建议。</p>
</section>
</div>
</section>
<section id="rotationView" class="workspace-view">
<div class="section-toolbar">
<div class="section-title-group">
<h2>板块轮动</h2>
<span id="rotationHistoryRange" class="section-subtitle">最近 9 个交易日 · 由近到远</span>
</div>
<div class="toolbar-controls">
<button id="rotationExportButton" class="button" type="button">导出 CSV</button>
</div>
</div>
<section class="rotation-history-panel">
<div class="rotation-history-heading">
<div><h3>热点轨迹</h3><span id="rotationSelectionHint">左近右远 · 点击板块查看连续性</span></div>
<button id="clearRotationSelection" class="text-button" type="button" hidden>清除高亮</button>
</div>
<div id="rotationHistory" class="rotation-history"><div class="empty-state">正在读取轮动历史</div></div>
</section>
<div class="section-toolbar rotation-detail-toolbar">
<div class="section-title-group"><h2>当日轮动明细</h2><span class="section-subtitle">趋势、强度与涨停梯队</span></div>
</div>
<div class="table-frame phase-table-frame">
<table class="data-table rotation-table">
<thead><tr>
<th class="number">排名</th><th>板块</th><th>趋势</th><th class="number">今日涨停</th>
<th class="number">昨日涨停</th><th class="number">变化</th><th>强度分布</th>
<th class="number">最高板</th><th class="number">平均涨幅</th><th>领涨股</th><th class="number">涨停股成交额</th>
</tr></thead>
<tbody id="rotationTableBody"></tbody>
</table>
</div>
</section>
<section id="dragonView" class="workspace-view">
<div class="section-toolbar">
<div class="section-title-group">
<h2>游资龙虎榜</h2>
<span id="dragonDateLabel" class="section-subtitle">--</span>
</div>
<div class="toolbar-controls">
<button id="dragonRefreshButton" class="button" type="button">刷新龙虎榜</button>
<button id="dragonExportButton" class="button" type="button">导出 CSV</button>
</div>
</div>
<div id="dragonSummary" class="dragon-summary"></div>
<div class="dragon-filterbar">
<label class="search-field dragon-search-field">
<input id="dragonSearch" type="search" placeholder="搜索游资、席位或股票" autocomplete="off">
</label>
<div class="segmented dragon-segments" role="group" aria-label="龙虎榜筛选">
<button type="button" class="dragon-filter active" data-dragon-filter="all">全部游资</button>
<button type="button" class="dragon-filter" data-dragon-filter="buy">净买入</button>
<button type="button" class="dragon-filter" data-dragon-filter="sell">净卖出</button>
<button id="dragonUnclassifiedFilter" type="button" class="dragon-filter" data-dragon-filter="unclassified">待归类</button>
</div>
</div>
<section class="dragon-card-stage">
<div class="dragon-stage-heading"><h3>活跃游资</h3><span>点击卡牌查看当日操作</span></div>
<div id="dragonTraderList" class="dragon-trader-list"></div>
</section>
<section id="dragonTraderDetail" class="dragon-trader-detail"><div class="empty-state dragon-empty">选择一位游资查看操作明细</div></section>
<details id="dragonUnclassifiedSection" class="unclassified-section">
<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>
</section>
<section id="reviewWorkspaceView" class="workspace-view">
<div class="section-toolbar">
<div class="section-title-group">
<h2>我的复盘</h2>
<span class="section-subtitle">自选跟踪、复盘记录与明日计划</span>
</div>
</div>
<div class="review-workspace">
<section class="workspace-section watchlist-section">
<div class="workspace-heading">
<h3>自选跟踪</h3>
<span id="watchlistCount">0 只</span>
</div>
<div class="table-frame workspace-table-frame">
<table class="data-table">
<thead><tr><th>标记</th><th>代码</th><th>股票名称</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 journal-section">
<div class="workspace-heading">
<h3>每日复盘</h3>
<input id="journalDate" class="date-input" type="date" aria-label="复盘日期">
</div>
<form id="journalForm" class="journal-form">
<label class="form-field"><span>今日复盘</span><textarea id="journalContent" maxlength="5000" placeholder="记录市场主线、情绪周期和交易得失"></textarea></label>
<label class="form-field"><span>明日计划</span><textarea id="journalPlan" maxlength="2000" placeholder="记录观察方向、触发条件和风险点"></textarea></label>
<div class="dialog-actions"><button class="button primary" type="submit">保存复盘</button></div>
</form>
</section>
<section class="workspace-section trade-journal-section">
<div class="workspace-heading trade-log-heading">
<div><h3>交易日志记录</h3><span id="tradeLogCount">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 trade-log-table-frame">
<table class="data-table trade-log-table">
<thead><tr><th>日期</th><th>股票</th><th>动作</th><th class="number">价格</th><th class="number">数量</th><th class="number">仓位</th><th class="number">盈亏</th><th>情绪 / 标签</th><th>交易逻辑</th><th>执行复核</th><th>操作</th></tr></thead>
<tbody id="tradeLogTableBody"></tbody>
</table>
<div id="tradeLogEmpty" class="empty-state">暂无手工交易记录</div>
</div>
</section>
<section class="workspace-section notes-history-section">
<div class="workspace-heading"><h3>最近记录</h3><span id="notesCount">0 条</span></div>
<div id="notesHistory" class="notes-history"><div class="empty-state">暂无复盘记录</div></div>
</section>
</div>
</section>
</main>
<footer class="status-bar">
<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="heavenReadingDialog" class="settings-dialog heaven-reading-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 active" type="button" role="tab" aria-selected="true" data-preview-chart="intraday">分时</button>
<button class="stock-preview-tab" type="button" role="tab" aria-selected="false" 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>日 K 与成交量</h3>
<span id="entityDetailDate">--</span>
</div>
<canvas id="entityDetailChart" class="price-chart" width="680" height="300" aria-label="日 K 线与成交量图"></canvas>
</section>
<section class="detail-section">
<h3>交易数据</h3>
<dl id="entityDetailMetrics" class="detail-grid"></dl>
</section>
</dialog>
<dialog id="stockDialog" class="stock-dialog">
<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>日 K 与成交量</h3>
<span id="chartSource">--</span>
</div>
<canvas id="priceChart" class="price-chart" width="680" height="300" aria-label="股票日K线图"></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">
<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">
<div class="dialog-header">
<div><span class="dialog-eyebrow">管理员</span><h2>系统配置</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="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="/heaven-loading.js" defer></script>
<script src="/app.js" defer></script>
</body>
</html>