From cdf793608d332210764ede49cc6c5606089cd234 Mon Sep 17 00:00:00 2001 From: fish Date: Thu, 7 May 2026 21:48:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BA=E9=97=B4=E6=89=93=E5=88=86=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E7=94=A8=E6=88=B7=E9=80=89=E6=8B=A9=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=88=A4=E6=96=AD=E4=B8=BB=E5=8A=9B=E5=90=88?= =?UTF-8?q?=E7=BA=A6=EF=BC=8C=E6=94=BE=E5=AE=BD=E5=89=8D=E7=AB=AF=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E9=99=90=E5=88=B6=E6=94=AF=E6=8C=81=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E5=8C=BA=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- tushare/src/api.py | 7 ++++--- web/frontend/src/views/RunView.vue | 3 +-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tushare/src/api.py b/tushare/src/api.py index 3cd5347..2d00e69 100644 --- a/tushare/src/api.py +++ b/tushare/src/api.py @@ -47,7 +47,8 @@ def health(): @app.post("/api/v1/run", response_model=RunResponse) def run_pipeline(req: RunRequest): - ts_code = req.ts_code or contracts.active_contract(req.symbol) + ref_date = datetime.strptime(req.trade_date, "%Y%m%d").date() if req.trade_date else None + ts_code = req.ts_code or contracts.active_contract(req.symbol, ref_date) if not req.ts_code: print(f"[AUTO] {req.symbol} 当月主力 -> {ts_code}") @@ -97,10 +98,10 @@ def run_batch(): @app.post("/api/v1/run/range") def run_range(req: RunRangeRequest): """对指定日期区间内的每一天分别打分。""" - ts_code = contracts.active_contract(req.symbol) + start_dt = datetime.strptime(req.start_date, "%Y%m%d").date() + ts_code = contracts.active_contract(req.symbol, start_dt) # 为确保区间开始日有足够前置数据,拉取时 start_date 前推 60 天 - start_dt = datetime.strptime(req.start_date, "%Y%m%d") fetch_start = (start_dt - timedelta(days=60)).strftime("%Y%m%d") df = fetcher.fetch_contract(ts_code, start_date=fetch_start, end_date=req.end_date) diff --git a/web/frontend/src/views/RunView.vue b/web/frontend/src/views/RunView.vue index 2bee0fc..f1a90ad 100644 --- a/web/frontend/src/views/RunView.vue +++ b/web/frontend/src/views/RunView.vue @@ -67,10 +67,9 @@ function toDate(s: string) { function isDateAllowed(d: Date): boolean { if (!active.value) return true - const min = toDate(active.value.min_date).getTime() const max = toDate(active.value.max_date).getTime() const t = d.getTime() - return t >= min && t <= max + return t <= max } function disabledDate(d: Date) {