Remove contract profile from navigation and retire its routes.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -25,7 +25,6 @@
|
|||||||
| **交易记录与复盘** | `/records` | 资金曲线、CTP 成交同步、复盘上传 |
|
| **交易记录与复盘** | `/records` | 资金曲线、CTP 成交同步、复盘上传 |
|
||||||
| **统计分析** | `/stats` | 汇总指标 + 多维度分项统计 |
|
| **统计分析** | `/stats` | 汇总指标 + 多维度分项统计 |
|
||||||
| **手续费配置** | `/fees` | CTP / 本地费率(可开关) |
|
| **手续费配置** | `/fees` | CTP / 本地费率(可开关) |
|
||||||
| **品种简介** | `/contract` | 合约规格查询(可开关) |
|
|
||||||
| **系统设置** | `/settings` | 交易模式、CTP、计仓、微信、主题 |
|
| **系统设置** | `/settings` | 交易模式、CTP、计仓、微信、主题 |
|
||||||
|
|
||||||
登录后默认进入 **下单监控**;刷新当前页不会跳转,仅访问根路径 `/` 或新登录时进入默认页。
|
登录后默认进入 **下单监控**;刷新当前页不会跳转,仅访问根路径 `/` 或新登录时进入默认页。
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ from fee_specs import (
|
|||||||
purge_non_ctp_fee_rates,
|
purge_non_ctp_fee_rates,
|
||||||
)
|
)
|
||||||
from nav_settings import NAV_TOGGLES, get_nav_items, nav_enabled, save_nav_items
|
from nav_settings import NAV_TOGGLES, get_nav_items, nav_enabled, save_nav_items
|
||||||
from contract_profile import get_contract_profile
|
|
||||||
from stats_engine import STATS_VIEWS, load_stats_cache, refresh_stats_cache
|
from stats_engine import STATS_VIEWS, load_stats_cache, refresh_stats_cache
|
||||||
from kline_store import ensure_kline_tables
|
from kline_store import ensure_kline_tables
|
||||||
from kline_stream import kline_hub, sse_format
|
from kline_stream import kline_hub, sse_format
|
||||||
@@ -1601,40 +1600,14 @@ def api_market_quote():
|
|||||||
|
|
||||||
@app.route("/contract")
|
@app.route("/contract")
|
||||||
@login_required
|
@login_required
|
||||||
@require_nav("contract")
|
|
||||||
def contract_profile_page():
|
def contract_profile_page():
|
||||||
symbol = request.args.get("symbol", "").strip()
|
return redirect(url_for("positions"))
|
||||||
profile = None
|
|
||||||
error = None
|
|
||||||
if symbol:
|
|
||||||
try:
|
|
||||||
profile = get_contract_profile(symbol)
|
|
||||||
if not profile:
|
|
||||||
error = "未查询到该合约简介,请检查合约代码"
|
|
||||||
except Exception as exc:
|
|
||||||
app.logger.warning("contract profile failed: %s", exc)
|
|
||||||
error = f"查询失败:{exc}"
|
|
||||||
return render_template(
|
|
||||||
"contract.html",
|
|
||||||
symbol=symbol,
|
|
||||||
profile=profile,
|
|
||||||
error=error,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/api/contract_profile")
|
@app.route("/api/contract_profile")
|
||||||
@login_required
|
@login_required
|
||||||
def api_contract_profile():
|
def api_contract_profile():
|
||||||
symbol = request.args.get("symbol", "").strip()
|
return jsonify({"error": "品种简介功能已移除"}), 404
|
||||||
if not symbol:
|
|
||||||
return jsonify({"error": "请提供合约代码"}), 400
|
|
||||||
try:
|
|
||||||
profile = get_contract_profile(symbol)
|
|
||||||
except Exception as exc:
|
|
||||||
return jsonify({"error": str(exc)}), 500
|
|
||||||
if not profile:
|
|
||||||
return jsonify({"error": "未查询到合约简介"}), 404
|
|
||||||
return jsonify(profile)
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/fees", methods=["GET", "POST"])
|
@app.route("/fees", methods=["GET", "POST"])
|
||||||
|
|||||||
@@ -27,7 +27,6 @@
|
|||||||
| 交易记录与复盘 | `/records` | 否 |
|
| 交易记录与复盘 | `/records` | 否 |
|
||||||
| 统计分析 | `/stats` | 否 |
|
| 统计分析 | `/stats` | 否 |
|
||||||
| 手续费配置 | `/fees` | 是 |
|
| 手续费配置 | `/fees` | 是 |
|
||||||
| 品种简介 | `/contract` | 是 |
|
|
||||||
| 系统设置 | `/settings` | 否 |
|
| 系统设置 | `/settings` | 否 |
|
||||||
|
|
||||||
关闭项在 **系统设置 → 导航显示** 配置;直接访问 URL 会提示并跳回下单监控。
|
关闭项在 **系统设置 → 导航显示** 配置;直接访问 URL 会提示并跳回下单监控。
|
||||||
@@ -164,15 +163,6 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 品种简介
|
|
||||||
|
|
||||||
**路径**:`/contract`
|
|
||||||
|
|
||||||
- 查询合约规格(东方财富 + 新浪补充)
|
|
||||||
- API:`GET /api/contract_profile?symbol=...`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 系统设置
|
## 系统设置
|
||||||
|
|
||||||
**路径**:`/settings`
|
**路径**:`/settings`
|
||||||
|
|||||||
@@ -29,7 +29,6 @@
|
|||||||
| key | 菜单 |
|
| key | 菜单 |
|
||||||
|-----|------|
|
|-----|------|
|
||||||
| `fees` | 手续费配置 |
|
| `fees` | 手续费配置 |
|
||||||
| `contract` | 品种简介 |
|
|
||||||
| `plans` | 开单计划 |
|
| `plans` | 开单计划 |
|
||||||
| `market` | 行情 K 线 |
|
| `market` | 行情 K 线 |
|
||||||
| `strategy` | 策略交易 |
|
| `strategy` | 策略交易 |
|
||||||
|
|||||||
@@ -12,14 +12,12 @@ from typing import Callable
|
|||||||
# 可在系统设置中开关的导航项
|
# 可在系统设置中开关的导航项
|
||||||
NAV_TOGGLES: dict[str, str] = {
|
NAV_TOGGLES: dict[str, str] = {
|
||||||
"fees": "手续费配置",
|
"fees": "手续费配置",
|
||||||
"contract": "品种简介",
|
|
||||||
"plans": "开单计划",
|
"plans": "开单计划",
|
||||||
"market": "行情K线",
|
"market": "行情K线",
|
||||||
"strategy": "策略交易",
|
"strategy": "策略交易",
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFAULT_NAV: dict[str, bool] = {k: True for k in NAV_TOGGLES}
|
DEFAULT_NAV: dict[str, bool] = {k: True for k in NAV_TOGGLES}
|
||||||
DEFAULT_NAV["contract"] = False
|
|
||||||
|
|
||||||
|
|
||||||
def get_nav_items(get_setting: Callable[[str, str], str]) -> dict[str, bool]:
|
def get_nav_items(get_setting: Callable[[str, str], str]) -> dict[str, bool]:
|
||||||
|
|||||||
@@ -532,7 +532,6 @@
|
|||||||
<a href="{{ url_for('records') }}" class="{% if request.endpoint in ('records', 'trades') %}active{% endif %}">交易记录与复盘</a>
|
<a href="{{ url_for('records') }}" class="{% if request.endpoint in ('records', 'trades') %}active{% endif %}">交易记录与复盘</a>
|
||||||
<a href="{{ url_for('stats') }}" class="{% if request.endpoint == 'stats' %}active{% endif %}">统计分析</a>
|
<a href="{{ url_for('stats') }}" class="{% if request.endpoint == 'stats' %}active{% endif %}">统计分析</a>
|
||||||
{% if nav_items.fees %}<a href="{{ url_for('fees') }}" class="{% if request.endpoint == 'fees' %}active{% endif %}">手续费配置</a>{% endif %}
|
{% if nav_items.fees %}<a href="{{ url_for('fees') }}" class="{% if request.endpoint == 'fees' %}active{% endif %}">手续费配置</a>{% endif %}
|
||||||
{% if nav_items.contract %}<a href="{{ url_for('contract_profile_page') }}" class="{% if request.endpoint == 'contract_profile_page' %}active{% endif %}">品种简介</a>{% endif %}
|
|
||||||
<a href="{{ url_for('settings') }}" class="{% if request.endpoint == 'settings' %}active{% endif %}">系统设置</a>
|
<a href="{{ url_for('settings') }}" class="{% if request.endpoint == 'settings' %}active{% endif %}">系统设置</a>
|
||||||
</nav>
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
|
|||||||
Reference in New Issue
Block a user