From 69be6293690569f176da9ab5064ed9a43b7a0fc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=87=E8=96=87=E5=AE=89?= Date: Sun, 22 Feb 2026 10:21:01 +0800 Subject: [PATCH] =?UTF-8?q?fix(data=5Fmanagement):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E4=BA=A4=E6=98=93=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在后端 API 的 `query_db_trades` 函数中,将 `reconciled_only` 参数类型从布尔值更改为可选字符串,并在查询逻辑中添加了相应的处理。同时,在前端 `DataManagement` 组件中,初始化 `dbDate` 为当前日期,并优化了参数构建逻辑,以确保在请求时正确传递日期和对账状态。这些改动提升了数据查询的灵活性与准确性。 --- backend/api/routes/data_management.py | 5 +++-- frontend/src/components/DataManagement.jsx | 13 +++++-------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/backend/api/routes/data_management.py b/backend/api/routes/data_management.py index 1a2679c..953b681 100644 --- a/backend/api/routes/data_management.py +++ b/backend/api/routes/data_management.py @@ -78,7 +78,7 @@ async def query_db_trades( end_date: Optional[str] = Query(None), symbol: Optional[str] = Query(None), time_filter: str = Query("created", description="created/entry/exit"), - reconciled_only: bool = Query(False), + reconciled_only: Optional[str] = Query(None), limit: int = Query(500, ge=1, le=2000), ): """ @@ -87,6 +87,7 @@ async def query_db_trades( sd, ed = start_date, end_date if date: sd, ed = date, date + _reconciled = str(reconciled_only or "").lower() in ("true", "1", "yes") start_ts, end_ts = _get_timestamp_range(period or "today", sd, ed) trades = Trade.get_all( start_timestamp=start_ts, @@ -96,7 +97,7 @@ async def query_db_trades( account_id=account_id, time_filter=time_filter, limit=limit, - reconciled_only=reconciled_only, + reconciled_only=_reconciled, include_sync=True, ) out = [] diff --git a/frontend/src/components/DataManagement.jsx b/frontend/src/components/DataManagement.jsx index d4da0b6..4f0d1f8 100644 --- a/frontend/src/components/DataManagement.jsx +++ b/frontend/src/components/DataManagement.jsx @@ -17,7 +17,7 @@ export default function DataManagement() { // DB 交易 const [dbAccountId, setDbAccountId] = useState('') - const [dbDate, setDbDate] = useState('') + const [dbDate, setDbDate] = useState(() => new Date().toISOString().slice(0, 10)) const [dbTimeFilter, setDbTimeFilter] = useState('created') const [dbReconciledOnly, setDbReconciledOnly] = useState(false) const [dbSymbol, setDbSymbol] = useState('') @@ -53,13 +53,10 @@ export default function DataManagement() { setDbError('') setDbResult(null) try { - const params = { - account_id: aid, - date: dbDate || undefined, - time_filter: dbTimeFilter, - reconciled_only: dbReconciledOnly ? 'true' : undefined, - symbol: dbSymbol || undefined, - } + const params = { account_id: aid, time_filter: dbTimeFilter } + if (dbDate) params.date = dbDate + if (dbReconciledOnly) params.reconciled_only = 'true' + if (dbSymbol && dbSymbol.trim()) params.symbol = dbSymbol.trim() const res = await api.getDataManagementDbTrades(params) setDbResult(res) } catch (e) {