feat(portfolio): max_pool 字段透传(model+handler+前端,解除30硬编码)
CI/CD / test (push) Successful in 8s
CI/CD / nas-deploy (push) Successful in 21s
CI/CD / nas-verify (push) Successful in 3s

model 加 max_pool 字段(默认30,0=全市场不限);handler 用 req.max_pool 替换硬编码30;
前端加选股池上限 input + onSubmit 透传。下游 submit_portfolio→spec→argv--max-pool
链路异步化时已存在,本次只补入口。全周期验收可传 max_pool=0 对比 docker exec 旁证
This commit is contained in:
2026-08-01 23:20:40 +08:00
parent 7a14d7da82
commit e22c8ee939
3 changed files with 15 additions and 1 deletions
+1
View File
@@ -3,6 +3,7 @@ import { apiClient } from './client'
export interface PortfolioBacktestReq {
pool: string
strategy?: string
max_pool?: number
start_date: string
end_date: string
initial_cash: number
@@ -29,6 +29,7 @@ let pollTimer: ReturnType<typeof setInterval> | null = null
const form = reactive({
pool: 'hs300_subset',
strategy: 'all_weather',
max_pool: 30,
start: '2024-01-01',
end: '2024-02-29',
cash: 1_000_000,
@@ -108,6 +109,7 @@ async function onSubmit(): Promise<void> {
const tid = await postPortfolioBacktest({
pool: form.pool,
strategy: form.strategy,
max_pool: form.max_pool,
start_date: form.start,
end_date: form.end,
initial_cash: form.cash,
@@ -193,6 +195,16 @@ async function onSubmit(): Promise<void> {
</el-select>
<span class="muted form-hint">选择回测策略</span>
</el-form-item>
<el-form-item label="选股池上限">
<el-input-number
v-model="form.max_pool"
:min="0"
:step="10"
:controls="false"
style="width: 220px"
/>
<span class="muted form-hint">0=全市场不限, N=前N只(MVP验证用, 默认30)</span>
</el-form-item>
<el-form-item label="开始日期">
<el-date-picker
v-model="form.start"
+2 -1
View File
@@ -37,6 +37,7 @@ class PortfolioBacktestRequest(BaseModel):
default="all_weather",
description="策略: all_weather/momentum_timing/value_selection/small_cap",
)
max_pool: int = Field(default=30, description="选股池上限: 0=全市场不限, N=前N只(MVP验证用)")
@router.post("/portfolio/backtest", dependencies=[Depends(verify_token)])
@@ -48,7 +49,7 @@ async def run_portfolio_backtest(req: PortfolioBacktestRequest):
cash=req.initial_cash,
benchmark=req.benchmark,
strategy=req.strategy,
max_pool=30,
max_pool=req.max_pool,
provider_config=None,
)
return {"task_id": tid}