From 976c99de07e267dfcffc6d831d0bb62fd2ec9cb6 Mon Sep 17 00:00:00 2001 From: claude_dev Date: Thu, 13 Aug 2026 14:17:23 +0800 Subject: [PATCH] =?UTF-8?q?fix(history):=20=E5=88=9B=E5=BB=BA=E6=97=B6?= =?UTF-8?q?=E9=97=B4=20UTC=E2=86=92=E5=8C=97=E4=BA=AC=E6=97=B6=E9=97=B4(+8?= =?UTF-8?q?);=20=E6=A0=87=E7=9A=84=E5=88=97=E5=8A=A0=E5=AE=BD(100=E2=86=92?= =?UTF-8?q?130)=E6=B2=BB=E6=8A=98=E8=A1=8C=20[nas]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/backtest/History.vue | 2 +- sanguo_api/routes.py | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/backtest/History.vue b/frontend/src/views/backtest/History.vue index ee50b61..f457d70 100644 --- a/frontend/src/views/backtest/History.vue +++ b/frontend/src/views/backtest/History.vue @@ -158,7 +158,7 @@ function statusLabel(s: string): string { - + diff --git a/sanguo_api/routes.py b/sanguo_api/routes.py index 26462ce..bf983b7 100644 --- a/sanguo_api/routes.py +++ b/sanguo_api/routes.py @@ -322,6 +322,18 @@ def factor_report(task_id: str, factor: str, token: str = Query(...)): # ===== History + Optimization endpoints (S3) ===== +def _to_bj(ts: str | None) -> str: + """SQLite CURRENT_TIMESTAMP 存的是 UTC → 转北京时间(+8)显示。""" + if not ts: + return "" + try: + from datetime import datetime, timedelta + dt = datetime.strptime(ts, "%Y-%m-%d %H:%M:%S") + return (dt + timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S") + except (ValueError, TypeError): + return ts + + @router.get("/task", dependencies=[Depends(verify_token)]) def list_tasks(type: str | None = None, status: str | None = None): """List tasks: 内存中 running/pending + DB done/failed(历史)。 @@ -377,7 +389,7 @@ def list_tasks(type: str | None = None, status: str | None = None): "symbol": r.symbol, "start": r.start, "end": r.end, - "created_at": r.created_at, + "created_at": _to_bj(r.created_at), }) active.reverse() # 最新提交的 running 在最上