首次上传

This commit is contained in:
dekun
2026-05-16 22:25:48 +08:00
commit 2b8f902548
88 changed files with 16386 additions and 0 deletions
+229
View File
@@ -0,0 +1,229 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>MATRIX · FUNNEL</title>
<link rel="stylesheet" href="/static/style.css?v={{ asset_version }}" />
</head>
<body class="matrix-theme">
<canvas id="matrixRain" class="matrix-rain-canvas" aria-hidden="true"></canvas>
<div class="matrix-vignette" aria-hidden="true"></div>
<div class="matrix-aurora" aria-hidden="true"></div>
<div class="matrix-scanlines" aria-hidden="true"></div>
<div class="matrix-noise" aria-hidden="true"></div>
<div class="matrix-chrome">
<div class="matrix-hud" id="matrixHud">
<div class="matrix-hud-block matrix-hud-live">
<span class="matrix-hud-dot" aria-hidden="true"></span>
<div class="matrix-hud-stack">
<span class="matrix-hud-label">LINK</span>
<span class="matrix-hud-val" id="hudLink">SYNC…</span>
</div>
</div>
<div class="matrix-hud-block">
<span class="matrix-hud-label">CYCLE</span>
<span class="matrix-hud-val" id="hudCycle"></span>
</div>
<div class="matrix-hud-block" title="BTC:近8h×15m 环境(横盘时多空均可推送;否则涨→LONG、跌→SHORT);BTC·辅=日线 regime(仅参考)">
<span class="matrix-hud-label">BTC·辅</span>
<span class="matrix-hud-val" id="hudBtc"></span>
</div>
<div class="matrix-hud-block">
<span class="matrix-hud-label">POOL</span>
<span class="matrix-hud-val" id="hudPool"></span>
</div>
<div class="matrix-hud-block">
<span class="matrix-hud-label">PUSH</span>
<span class="matrix-hud-val" id="hudPush"></span>
</div>
<div class="matrix-hud-block matrix-hud-wide">
<span class="matrix-hud-label">GEMMA</span>
<span class="matrix-hud-val mono" id="hudGemma"></span>
</div>
<div class="matrix-hud-block matrix-hud-wide">
<span class="matrix-hud-label">LAST</span>
<span class="matrix-hud-val mono" id="hudLast"></span>
</div>
</div>
<header class="matrix-header matrix-header-crt">
<div class="matrix-brand">
<div class="matrix-title-wrap">
<div class="matrix-glitch matrix-glitch-xl" data-text="MATRIX // FUNNEL">
<span class="matrix-glitch-layer matrix-glitch-c">MATRIX // FUNNEL</span>
<span class="matrix-glitch-layer matrix-glitch-m">MATRIX // FUNNEL</span>
<span class="matrix-glitch-base">MATRIX // FUNNEL</span>
</div>
<div class="matrix-subdeck">
<span class="matrix-deco">[</span>
<span id="matrixTagline" class="matrix-tagline matrix-tagline-glow">Gate USDT 永续 · 5m 结构 → 日线漏斗 · Gemma 优先链</span>
<span class="matrix-deco">]</span>
</div>
</div>
</div>
<div class="matrix-radar-header" aria-hidden="true" title="战术雷达 · 装饰">
<div class="matrix-radar-hud">
<div class="matrix-radar-h-graticule"></div>
<div class="matrix-radar-h-cross"></div>
<div class="matrix-radar-h-rings"></div>
<div class="matrix-radar-h-sweep"></div>
<div class="matrix-radar-h-sweep matrix-radar-h-sweep-ghost"></div>
<div class="matrix-radar-h-blip"></div>
</div>
<span class="matrix-radar-h-caption">SCAN</span>
</div>
<div class="matrix-header-actions">
<span class="matrix-pill matrix-pill-clock" id="liveClock">--:--:--</span>
<span class="matrix-pill dim">OP ▸ <span id="opUser">{{ username }}</span></span>
<a class="matrix-btn ghost" href="/logout">断开链路</a>
</div>
</header>
<main class="matrix-main matrix-crt-inner">
<section class="matrix-panel matrix-panel-hero matrix-panel-chrome">
<div class="matrix-hero-radar" aria-hidden="true">
<div class="matrix-hero-radar-grid"></div>
<div class="matrix-hero-radar-sweep"></div>
<div class="matrix-hero-radar-sweep matrix-hero-radar-sweep-trail"></div>
<div class="matrix-hero-radar-ring"></div>
</div>
<div class="matrix-panel-head matrix-panel-head-row">
<h2>// GEMMA 漏斗 · 优先矩阵</h2>
<span class="matrix-chip matrix-chip-magenta">LIVE FEED</span>
</div>
<p class="matrix-hint">合成评分 · 成交量 · 日线结构 · 上方空间 · 中间阻力 → 达标企业微信推送</p>
<p id="funnelMeta" class="matrix-hint matrix-dim">// 数据同步中…</p>
<div id="funnelMatrix" class="matrix-grid"></div>
</section>
<section class="matrix-panel matrix-panel-chrome">
<div class="matrix-panel-head matrix-panel-head-row">
<h2>// 每日晨报 · 昨日复盘</h2>
<button type="button" id="runDailyReportBtn" class="matrix-btn ghost">立即生成</button>
</div>
<div class="matrix-form-row">
<label>晨报开关</label>
<input id="dailyReportEnabledInput" type="checkbox" />
<label>北京时间执行</label>
<input id="dailyReportTimeInput" type="time" />
<label>推送企业微信</label>
<input id="dailyReportPushInput" type="checkbox" />
<label>启动即生成</label>
<input id="dailyReportStartupInput" type="checkbox" />
<button type="button" id="saveDailyReportBtn" class="matrix-btn matrix-btn-pulse">保存晨报配置</button>
</div>
<p id="dailyReportSaveMsg" class="matrix-msg"></p>
<p id="dailyReportMeta" class="matrix-hint matrix-dim">// 等待晨报数据…</p>
<div id="dailyReportBox" class="matrix-list"></div>
</section>
<section class="matrix-panel matrix-panel-chrome">
<div class="matrix-panel-head matrix-panel-head-row">
<h2>// 监控黑名单 · base</h2>
<span class="matrix-chip matrix-dim" id="symbolBlocklistCountChip">0 条规则</span>
</div>
<p class="matrix-hint">
Gate USDT 永续左侧 base(每行一个或逗号分隔),如 <code>XAU</code> <code>XAUT</code> <code>XAG</code><code>all_swaps</code>
<code>watchlist</code> 均会在入池后剔除。保存后下一轮扫描生效。
</p>
<textarea
id="symbolBlocklistInput"
class="matrix-input matrix-textarea"
rows="5"
spellcheck="false"
autocomplete="off"
placeholder="XAU&#10;XAUT&#10;XAG"
></textarea>
<div class="matrix-form-row matrix-form-row-tight">
<button type="button" id="saveSymbolBlocklistBtn" class="matrix-btn matrix-btn-pulse">保存黑名单</button>
</div>
<p id="symbolBlocklistSaveMsg" class="matrix-msg"></p>
</section>
<section class="matrix-panel matrix-panel-chrome" id="orderExecutorsPanel">
<div class="matrix-panel-head matrix-panel-head-row">
<h2>// 下单执行器 · 转发链</h2>
<span class="matrix-chip matrix-dim">仅扫描端维护 · 同一信号广播</span>
</div>
<p class="matrix-hint">
企微突破推送成功后,向列表中<strong>已启用</strong>的执行器 POST <code>/v1/signal</code>(方案 A 止盈止损)。
各执行器自行配置 Gate API、盈亏比、移动保本等;<strong>不支持执行器反向注册</strong>
修改 webhook 密钥后请同步到各执行器 <code>security.webhook_secret</code>
</p>
<div class="matrix-form-row matrix-form-row-wrap">
<label>总开关</label>
<input id="oeGlobalEnabled" type="checkbox" />
<label>Webhook 密钥</label>
<input id="oeWebhookSecret" class="matrix-input" type="password" style="min-width:14rem" autocomplete="new-password" />
<label>超时(s)</label>
<input id="oeTimeout" class="matrix-input" type="number" min="3" max="120" step="1" style="width:5rem" />
<button type="button" id="oeSaveGlobalBtn" class="matrix-btn matrix-btn-pulse">保存全局</button>
</div>
<p id="oeGlobalMsg" class="matrix-msg"></p>
<div class="matrix-form-row matrix-form-row-wrap" style="margin-top:12px">
<label>名称</label>
<input id="oeNewName" class="matrix-input" type="text" placeholder="如 account_a" style="width:8rem" />
<label>Base URL</label>
<input id="oeNewUrl" class="matrix-input" type="text" placeholder="http://127.0.0.1:8090" style="min-width:16rem" />
<label>启用</label>
<input id="oeNewEnabled" type="checkbox" checked />
<button type="button" id="oeAddBtn" class="matrix-btn ghost">添加执行器</button>
</div>
<p id="oeAddMsg" class="matrix-msg"></p>
<div id="oeList" class="matrix-list" style="margin-top:12px"></div>
</section>
<section class="matrix-panel matrix-panel-chrome">
<div class="matrix-panel-head"><h2>// 策略寄存器 · 5m</h2></div>
<p class="matrix-hint">横盘 + 5m 收盘上破 + 放量 · 保存后下一轮生效 · 止损缓冲为企微区间A/B共用</p>
<div class="matrix-form-row">
<label>横盘时长(h)</label>
<input id="rangeHoursInput" type="number" step="0.5" min="1" />
<label>横盘振幅上限(%)</label>
<input id="rangeMaxPctInput" type="number" step="0.1" min="0.1" />
<label>放量倍数</label>
<input id="volumeSpikeMultInput" type="number" step="0.1" min="1" />
<label>放量回看根数</label>
<input id="volumeLookbackInput" type="number" step="1" min="5" />
<label>突破缓冲(%)</label>
<input id="breakoutBufferInput" type="number" step="0.01" min="0" />
<label>止损缓冲(%)</label>
<input id="stopBufferPctInput" type="number" step="0.05" min="0" max="10" title="企微文案区间A/B共用:突破K极值与箱体边沿外侧缓冲" />
<label>启用推送时间窗(09:00-23:00)</label>
<input id="pushTimeWindowEnabledInput" type="checkbox" />
<button type="button" id="saveIntradayBtn" class="matrix-btn matrix-btn-pulse">写入寄存器</button>
</div>
<p id="intradaySaveMsg" class="matrix-msg"></p>
</section>
<div class="matrix-two-col">
<section class="matrix-panel matrix-panel-chrome">
<div class="matrix-panel-head"><h2>// 观察层 · WATCH</h2></div>
<div id="watchAlerts" class="matrix-list"></div>
</section>
<section class="matrix-panel matrix-panel-chrome">
<div class="matrix-panel-head"><h2>// 触发层 · TRIGGER</h2></div>
<div id="triggerAlerts" class="matrix-list"></div>
</section>
</div>
<section class="matrix-panel matrix-panel-wide matrix-panel-chrome">
<div class="matrix-panel-head"><h2>// 系统遥测</h2></div>
<div class="matrix-split">
<pre id="status" class="matrix-pre matrix-pre-glow"></pre>
<pre id="config" class="matrix-pre matrix-pre-glow"></pre>
</div>
</section>
<section class="matrix-panel matrix-panel-wide matrix-panel-chrome">
<div class="matrix-panel-head"><h2>// 运行日志</h2></div>
<div id="logs" class="matrix-list matrix-list-logs"></div>
</section>
</main>
</div>
<script src="/static/app.js?v={{ asset_version }}"></script>
</body>
</html>
+30
View File
@@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>MATRIX · 接入</title>
<link rel="stylesheet" href="/static/style.css" />
</head>
<body class="matrix-login">
<div class="matrix-aurora" aria-hidden="true"></div>
<div class="matrix-vignette" aria-hidden="true"></div>
<div class="matrix-scanlines matrix-scanlines-strong" aria-hidden="true"></div>
<div class="matrix-noise" aria-hidden="true"></div>
<div class="matrix-grid-bg" aria-hidden="true"></div>
<div class="matrix-login-card matrix-login-card-chrome">
<div class="matrix-login-badge">SECURE CHANNEL</div>
<div class="matrix-login-glitch" data-text="&gt; AUTHENTICATE">&gt; AUTHENTICATE</div>
<p class="matrix-login-sub">MATRIX // GATE USDT PERP FUNNEL · 未授权区域禁止访问</p>
<form method="post" action="/login" class="matrix-login-form">
<label class="matrix-label">操作员 ID</label>
<input class="matrix-input" type="text" name="username" required autocomplete="username" />
<label class="matrix-label">密钥</label>
<input class="matrix-input" type="password" name="password" required autocomplete="current-password" />
<button type="submit" class="matrix-btn matrix-btn-full matrix-btn-pulse">建立会话</button>
</form>
<div class="matrix-error">{{ error }}</div>
</div>
</body>
</html>