feat: add durable WorldQuant backtests with UI and AI confirmation

This commit is contained in:
yuxuanhui
2026-09-08 10:06:00 +08:00
parent 404a4d8a04
commit a4b93200c5
34 changed files with 4437 additions and 23 deletions
+6 -1
View File
@@ -16,11 +16,12 @@ from sqlalchemy import delete, select, text
from .ai.routes import router as ai_router
from .ai.runtime import AIRuntime
from .alphas import list_statement, sorted_statement
from .backtests.routes import router as backtest_router
from .business import Business, notify_job
from .config import Settings
from .db import create_database
from .jobs import AUTH_KINDS, Runner, create_job
from .models import Account, Admin, Job, JobItem, LoginSession
from .models import Account, Admin, BacktestConfig, Job, JobItem, LoginSession
from .schemas import (
AccountOutput,
AlphaDetail,
@@ -87,6 +88,9 @@ def create_app(settings=None, wq_client=None, ai_model_factory=None):
async def lifespan(app):
async with sessions() as db:
await bootstrap(db, settings)
async with sessions.begin() as db:
if not await db.get(BacktestConfig, 1):
db.add(BacktestConfig(id=1))
await ai_runtime.start()
if settings.enable_runner:
await runner.start()
@@ -380,6 +384,7 @@ def create_app(settings=None, wq_client=None, ai_model_factory=None):
await notify_job(runner, "retry_job", result)
return result
app.include_router(backtest_router)
app.include_router(api)
app.include_router(ai_router(ai_runtime))
return app