交易记录优化:品种合约分离展示、盈亏取整、手续费统计

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-07-26 10:58:33 +08:00
parent 9b08bd8bfd
commit 4724741fdd
3 changed files with 33 additions and 28 deletions
+7 -10
View File
@@ -3,7 +3,7 @@ from fastapi import APIRouter, Depends, Form, Request
from fastapi.responses import HTMLResponse, RedirectResponse
from sqlalchemy.orm import Session
from app.database import get_db
from app.models import Trade, Product, Contract
from app.models import Trade, Contract, Product
router = APIRouter(prefix="/trades", tags=["trades"])
@@ -20,11 +20,6 @@ def get_active_contracts(db: Session) -> list[str]:
return [c[0] for c in contracts]
def get_products(db: Session) -> list[str]:
products = db.query(Product.code).order_by(Product.code).all()
return [p[0] for p in products]
def today_str() -> str:
return date.today().isoformat()
@@ -46,7 +41,6 @@ def trades_page(request: Request, db: Session = Depends(get_db)):
request=request,
active_nav="trades",
contracts=get_active_contracts(db),
products=get_products(db),
directions=DIRECTIONS,
open_trades=open_trades,
closed_trades=closed_trades,
@@ -58,7 +52,6 @@ def trades_page(request: Request, db: Session = Depends(get_db)):
@router.post("/open")
def open_trade(
request: Request,
product_code: str = Form(...),
contract_code: str = Form(...),
direction: str = Form(...),
open_date: str = Form(...),
@@ -66,9 +59,13 @@ def open_trade(
open_fee: float = Form(0.0),
db: Session = Depends(get_db),
):
code = contract_code.upper()
contract = db.query(Contract).filter(Contract.code == code).first()
product_code = contract.product.code if contract else code[:2]
t = Trade(
product_code=product_code.upper(),
contract_code=contract_code.upper(),
product_code=product_code,
contract_code=code,
direction=direction,
open_date=date.fromisoformat(open_date),
open_price=open_price,