交易记录和期权新增编辑功能

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-07-26 13:56:40 +08:00
parent b22123bdfc
commit 8b5fa347cb
4 changed files with 234 additions and 2 deletions
+36
View File
@@ -103,6 +103,42 @@ def close_trade(
return RedirectResponse("/options/", status_code=303)
@router.post("/{trade_id}/edit")
def edit_trade(
request: Request,
trade_id: int,
contract_code: str = Form(...),
option_type: str = Form(...),
direction: str = Form(...),
strike_price: float = Form(...),
open_date: str = Form(...),
open_price: float = Form(...),
open_fee: float = Form(0.0),
close_date: str = Form(""),
close_price: float = Form(None),
close_fee: float = Form(None),
db: Session = Depends(get_db),
):
t = db.query(OptionTrade).filter(OptionTrade.id == trade_id).first()
if t:
code = contract_code.upper()
contract = db.query(Contract).filter(Contract.code == code).first()
t.product_code = contract.product.code if contract else code[:2]
t.contract_code = code
t.option_type = option_type
t.direction = direction
t.strike_price = strike_price
t.open_date = date.fromisoformat(open_date)
t.open_price = open_price
t.open_fee = open_fee
if close_date and close_price is not None:
t.close_date = date.fromisoformat(close_date)
t.close_price = close_price
t.close_fee = close_fee or 0
db.commit()
return RedirectResponse("/options/", status_code=303)
@router.post("/{trade_id}/delete")
def delete_trade(trade_id: int, db: Session = Depends(get_db)):
t = db.query(OptionTrade).filter(OptionTrade.id == trade_id).first()
+32
View File
@@ -108,6 +108,38 @@ def close_trade(
return RedirectResponse("/trades/", status_code=303)
@router.post("/{trade_id}/edit")
def edit_trade(
request: Request,
trade_id: int,
contract_code: str = Form(...),
direction: str = Form(...),
open_date: str = Form(...),
open_price: float = Form(...),
open_fee: float = Form(0.0),
close_date: str = Form(""),
close_price: float = Form(None),
close_fee: float = Form(None),
db: Session = Depends(get_db),
):
t = db.query(Trade).filter(Trade.id == trade_id).first()
if t:
code = contract_code.upper()
contract = db.query(Contract).filter(Contract.code == code).first()
t.product_code = contract.product.code if contract else code[:2]
t.contract_code = code
t.direction = direction
t.open_date = date.fromisoformat(open_date)
t.open_price = open_price
t.open_fee = open_fee
if close_date and close_price is not None:
t.close_date = date.fromisoformat(close_date)
t.close_price = close_price
t.close_fee = close_fee or 0
db.commit()
return RedirectResponse("/trades/", status_code=303)
@router.post("/{trade_id}/delete")
def delete_trade(trade_id: int, db: Session = Depends(get_db)):
t = db.query(Trade).filter(Trade.id == trade_id).first()