2026-08-19 19:36:32 +08:00
|
|
|
|
{% extends "base.html" %}
|
|
|
|
|
|
{% block title %}数据管理{% endblock %}
|
|
|
|
|
|
{% block page_title %}数据管理{% endblock %}
|
|
|
|
|
|
{% block content %}
|
|
|
|
|
|
<div class="grid grid-2">
|
|
|
|
|
|
<div class="card">
|
|
|
|
|
|
<div class="card-title"><span class="bar"></span>数据库统计(SQLite)</div>
|
|
|
|
|
|
<div id="dbBox"><div class="loading">加载中…</div></div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="card">
|
|
|
|
|
|
<div class="card-title"><span class="bar"></span>向量库状态(Chroma + bge 1024维)</div>
|
|
|
|
|
|
<div id="vecBox"><div class="loading">加载中…</div></div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
2026-08-20 00:08:39 +08:00
|
|
|
|
<div class="card mt16">
|
|
|
|
|
|
<div class="card-title"><span class="bar" style="background:#8b5cf6"></span>📧 定时报告(工作日 9:00 盘前 / 交易日 15:30 盘后)</div>
|
|
|
|
|
|
<div class="flex wrap">
|
|
|
|
|
|
<button class="btn btn-primary" onclick="sendReport('premarket')">🌅 手动发送盘前分析</button>
|
|
|
|
|
|
<button class="btn btn-primary" onclick="sendReport('postmarket')">🌇 手动发送盘后总结</button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="mt16" style="color:var(--muted);font-size:12px;line-height:1.8">
|
|
|
|
|
|
自动触发已配置系统 cron:<code>0 9 * * 1-5</code> 盘前 · <code>30 15 * * 1-5</code> 盘后。<br>
|
|
|
|
|
|
每期发送两封形态:<b>简单版</b>(邮件正文速览)+ <b>详细版</b>(HTML 附件)。发送记录见下方表格。
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="card-title mt16" style="font-size:14px"><span class="bar" style="background:#8b5cf6"></span>发送记录</div>
|
|
|
|
|
|
<div style="overflow:auto;max-height:300px">
|
|
|
|
|
|
<table>
|
|
|
|
|
|
<thead><tr><th>时间</th><th>类型</th><th>主题</th><th>状态</th><th>说明</th></tr></thead>
|
|
|
|
|
|
<tbody id="reportLogTb"><tr><td colspan="5" class="empty">暂无记录</td></tr></tbody>
|
|
|
|
|
|
</table>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
2026-08-19 19:36:32 +08:00
|
|
|
|
<div class="card mt16">
|
|
|
|
|
|
<div class="card-title"><span class="bar" style="background:var(--gold)"></span>系统维护</div>
|
|
|
|
|
|
<div class="flex wrap">
|
|
|
|
|
|
<button class="btn btn-primary" onclick="reseed()">♻️ 一键重灌数据(含向量重建)</button>
|
2026-08-19 21:09:16 +08:00
|
|
|
|
<button class="btn" onclick="rebuildBt()">📈 重建量化回测</button>
|
2026-08-19 19:36:32 +08:00
|
|
|
|
<button class="btn" onclick="health()">🔌 依赖连通性检查</button>
|
|
|
|
|
|
<button class="btn" onclick="refreshStats()">🔄 刷新统计</button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="healthBox" class="mt16"></div>
|
|
|
|
|
|
<div class="mt16" style="border-top:1px solid var(--border);padding-top:14px;color:var(--muted);font-size:13px;line-height:2">
|
|
|
|
|
|
<b>当前为模拟数据</b>,用于功能演示与系统验证。接入真实数据后(行情/新闻/机构),修改 <code>config.py</code> 中的 <code>IS_MOCK=False</code>,并替换 <code>seed_data.py</code> 为真实数据源即可,其余分析/检索逻辑无需改动。<br>
|
|
|
|
|
|
技术栈:Python Flask + SQLite + Chroma 向量库 + bge-large-zh 语义检索 + DeepSeek 大模型(RAG 增强研报)。
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
{% endblock %}
|
|
|
|
|
|
{% block scripts %}
|
|
|
|
|
|
<script src="{{ url_for('static', filename='js/admin.js') }}"></script>
|
|
|
|
|
|
{% endblock %}
|