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) {