feat: integrate chatbox research with datasets and backtests

This commit is contained in:
yuxuanhui
2026-09-08 12:43:00 +08:00
parent 43336ad960
commit aef8e1d310
37 changed files with 1421 additions and 42 deletions
+18 -1
View File
@@ -3,6 +3,8 @@
from fastapi import APIRouter, Depends, Query, Request
from ..business import Business
from ..research.contracts import ResearchPreviewInput
from ..research.service import ResearchBuilder
from ..security import require_auth
from .contracts import (
ControlInput,
@@ -75,6 +77,13 @@ async def preview(body: PreviewInput, request: Request):
return await Business(db).backtests.preview(body)
@router.post("/research-previews", status_code=201, response_model=PreviewOutput)
async def research_preview(body: ResearchPreviewInput, request: Request):
"""Prepare typed field bindings for any research producer; never start a simulation."""
async with request.app.state.sessions.begin() as db:
return await ResearchBuilder(db, Business(db).backtests).prepare(body)
@router.get("/previews/{preview_id}", response_model=PreviewOutput)
async def get_preview(
preview_id: str, request: Request, limit: int = Query(25, ge=1, le=100), offset: int = Query(0, ge=0)
@@ -97,9 +106,17 @@ async def runs(
limit: int = Query(25, ge=1, le=100),
offset: int = Query(0, ge=0),
source: str | None = Query(None, max_length=100),
reference: str | None = Query(None, max_length=200),
research_id: str | None = Query(None, max_length=200),
):
async with request.app.state.sessions() as db:
return await Business(db).backtests.runs(limit, offset, source)
return await Business(db).backtests.runs(limit, offset, source, reference, research_id)
@router.get("/sources", response_model=list[str])
async def sources(request: Request):
async with request.app.state.sessions() as db:
return await Business(db).backtests.sources()
@router.get("/runs/{run_id}", response_model=RunOutput)