增加数据同步功能,支持从 akshare 拉取合约日线并自动计算振幅

This commit is contained in:
2026-07-24 21:41:38 +08:00
parent 1ff2aa17e8
commit a53b0fcc4c
3 changed files with 167 additions and 1 deletions
+15
View File
@@ -3,6 +3,7 @@ from fastapi.responses import HTMLResponse, RedirectResponse
from sqlalchemy.orm import Session
from app.database import get_db
from app.models import Product, Contract
from app.collector import sync_active_contracts, sync_one_contract
router = APIRouter(prefix="/admin", tags=["admin"])
@@ -105,3 +106,17 @@ def delete_product(product_id: int, db: Session = Depends(get_db)):
db.delete(p)
db.commit()
return RedirectResponse("/admin/", status_code=303)
@router.post("/sync")
def sync_all(request: Request):
results = sync_active_contracts()
total = sum(results.values())
print(f"[sync] Synced {total} bars across {len(results)} contracts: {results}")
return RedirectResponse("/admin/?synced=" + str(total), status_code=303)
@router.post("/sync/{contract_code}")
def sync_single(contract_code: str):
count = sync_one_contract(contract_code.upper())
return RedirectResponse(f"/admin/?synced={count}", status_code=303)