"백엔드_핵심_로직_구현_프론트엔드_연동_및_도커_배포_최적화_완료"
This commit is contained in:
@@ -3,8 +3,10 @@ from pydantic import BaseModel
|
||||
from typing import Literal
|
||||
|
||||
from app.services.kis_client import kis_client
|
||||
import logging
|
||||
|
||||
router = APIRouter()
|
||||
logger = logging.getLogger("KisAPI")
|
||||
|
||||
class OrderRequest(BaseModel):
|
||||
market: Literal["Domestic", "Overseas"]
|
||||
@@ -13,6 +15,15 @@ class OrderRequest(BaseModel):
|
||||
quantity: int
|
||||
price: float = 0 # 0 for Market Price (if supported)
|
||||
|
||||
class ModifyOrderRequest(BaseModel):
|
||||
market: Literal["Domestic", "Overseas"]
|
||||
order_no: str
|
||||
code: str
|
||||
quantity: int
|
||||
price: float = 0
|
||||
type: str = "00"
|
||||
is_cancel: bool = False # True = Cancel, False = Modify
|
||||
|
||||
@router.get("/price")
|
||||
async def get_current_price(market: Literal["Domestic", "Overseas"], code: str):
|
||||
"""
|
||||
@@ -29,11 +40,22 @@ async def get_balance(market: Literal["Domestic", "Overseas"]):
|
||||
try:
|
||||
data = await kis_client.get_balance(market)
|
||||
return data
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@router.put("/order")
|
||||
async def modify_order(req: ModifyOrderRequest):
|
||||
logger.info(f"Received Modify/Cancel Request: {req}")
|
||||
try:
|
||||
res = await kis_client.modify_order(
|
||||
req.market, req.order_no, req.code, req.quantity, req.price, req.type, req.is_cancel
|
||||
)
|
||||
return res
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@router.post("/order")
|
||||
async def place_order(order: OrderRequest):
|
||||
logger.info(f"Received Order Request: {order}")
|
||||
try:
|
||||
res = await kis_client.place_order(order.market, order.side, order.code, order.quantity, order.price)
|
||||
return res
|
||||
|
||||
Reference in New Issue
Block a user