diff --git a/app/factory.py b/app/factory.py index ccccfe1..bedad04 100644 --- a/app/factory.py +++ b/app/factory.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- from __future__ import annotations +from typing import Any + from flask import Flask from app.config import Config @@ -8,11 +10,33 @@ from app.db import init_db, seed_if_empty from app.routes import register_routes +def _fmt_price(value: Any, digits: int = 3) -> str: + """价格展示:固定小数位,避免浮点尾巴。""" + if value is None or value == "": + return "—" + try: + return f"{float(value):.{int(digits)}f}" + except (TypeError, ValueError): + return str(value) + + +def _fmt_money(value: Any, digits: int = 2) -> str: + if value is None or value == "": + return "—" + try: + return f"{float(value):.{int(digits)}f}" + except (TypeError, ValueError): + return str(value) + + def create_app() -> Flask: app = Flask(__name__, template_folder="templates", static_folder="static") app.config.from_object(Config) app.secret_key = Config.SECRET_KEY + app.jinja_env.filters["fmt_price"] = _fmt_price + app.jinja_env.filters["fmt_money"] = _fmt_money + init_db() seed_if_empty() register_routes(app) diff --git a/app/routes.py b/app/routes.py index 21dfa3a..7f42ab2 100644 --- a/app/routes.py +++ b/app/routes.py @@ -662,10 +662,10 @@ def register_routes(app: Flask) -> None: ticket = str(data.get("ticket") or "").strip() symbol = (data.get("symbol") or "XAUUSD").upper() side = (data.get("side") or "").lower() - volume = float(data.get("volume") or 0) - open_price = float(data.get("open_price") or 0) + volume = round(float(data.get("volume") or 0), 4) + open_price = round(float(data.get("open_price") or 0), 3) close_price = ( - float(data.get("close_price") or 0) + round(float(data.get("close_price") or 0), 3) if data.get("close_price") is not None else None ) @@ -674,9 +674,23 @@ def register_routes(app: Flask) -> None: if data.get("profit") is None: profit = None else: - profit = float(data.get("profit") or 0) + profit = round(float(data.get("profit") or 0), 2) sl = data.get("sl") tp = data.get("tp") + if sl is not None and sl != "": + try: + sl = round(float(sl), 3) + except (TypeError, ValueError): + sl = None + else: + sl = None + if tp is not None and tp != "": + try: + tp = round(float(tp), 3) + except (TypeError, ValueError): + tp = None + else: + tp = None entry_style = (data.get("entry_style") or "").strip() review_note = (data.get("review_note") or "").strip() snap_json = json.dumps(snapshot, ensure_ascii=False) diff --git a/app/templates/record_detail.html b/app/templates/record_detail.html index 057e4e6..a08a400 100644 --- a/app/templates/record_detail.html +++ b/app/templates/record_detail.html @@ -11,13 +11,13 @@