"텔레그램_연동_기능_구현_및_설정_스키마_수정"
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -31,7 +31,7 @@ class HoldingSchema(BaseModel):
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
@router.get("/summary", response_model=AccountStatusSchema)
|
||||
@router.get("/balance", response_model=AccountStatusSchema)
|
||||
async def get_account_summary(db: AsyncSession = Depends(get_db)):
|
||||
stmt = select(AccountStatus).where(AccountStatus.id == 1)
|
||||
result = await db.execute(stmt)
|
||||
|
||||
@@ -16,7 +16,19 @@ class SettingsSchema(BaseModel):
|
||||
appKey: str | None = None
|
||||
appSecret: str | None = None
|
||||
accountNumber: str | None = None
|
||||
|
||||
# Integrations
|
||||
useTelegram: bool | None = None
|
||||
telegramToken: str | None = None
|
||||
telegramChatId: str | None = None
|
||||
|
||||
useNaverNews: bool | None = None
|
||||
naverClientId: str | None = None
|
||||
naverClientSecret: str | None = None
|
||||
|
||||
# Configs
|
||||
kisApiDelayMs: int | None = None
|
||||
newsScrapIntervalMin: int | None = None
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -69,7 +81,18 @@ async def update_settings(payload: SettingsSchema, db: AsyncSession = Depends(ge
|
||||
if payload.accountNumber is not None:
|
||||
settings.accountNumber = encrypt_str(payload.accountNumber)
|
||||
|
||||
# Integrations
|
||||
if payload.useTelegram is not None: settings.useTelegram = payload.useTelegram
|
||||
if payload.telegramToken is not None: settings.telegramToken = payload.telegramToken
|
||||
if payload.telegramChatId is not None: settings.telegramChatId = payload.telegramChatId
|
||||
|
||||
if payload.useNaverNews is not None: settings.useNaverNews = payload.useNaverNews
|
||||
if payload.naverClientId is not None: settings.naverClientId = payload.naverClientId
|
||||
if payload.naverClientSecret is not None: settings.naverClientSecret = payload.naverClientSecret
|
||||
|
||||
# Configs
|
||||
if payload.kisApiDelayMs is not None: settings.kisApiDelayMs = payload.kisApiDelayMs
|
||||
if payload.newsScrapIntervalMin is not None: settings.newsScrapIntervalMin = payload.newsScrapIntervalMin
|
||||
|
||||
await db.commit()
|
||||
await db.refresh(settings)
|
||||
|
||||
@@ -57,13 +57,13 @@ async def get_trade_history(limit: int = 100, db: AsyncSession = Depends(get_db)
|
||||
result = await db.execute(stmt)
|
||||
return result.scalars().all()
|
||||
|
||||
@router.get("/reserved-orders", response_model=List[ReservedOrderSchema])
|
||||
@router.get("/", response_model=List[ReservedOrderSchema])
|
||||
async def get_reserved_orders(db: AsyncSession = Depends(get_db)):
|
||||
stmt = select(ReservedOrder)
|
||||
result = await db.execute(stmt)
|
||||
return result.scalars().all()
|
||||
|
||||
@router.post("/reserved-orders")
|
||||
@router.post("/")
|
||||
async def create_reserved_order(req: CreateReservedOrderRequest, db: AsyncSession = Depends(get_db)):
|
||||
import uuid
|
||||
new_id = str(uuid.uuid4())
|
||||
@@ -92,7 +92,7 @@ async def create_reserved_order(req: CreateReservedOrderRequest, db: AsyncSessio
|
||||
await db.commit()
|
||||
return {"id": new_id, "status": "MONITORING"}
|
||||
|
||||
@router.delete("/reserved-orders/{order_id}")
|
||||
@router.delete("/{order_id}")
|
||||
async def delete_reserved_order(order_id: str, db: AsyncSession = Depends(get_db)):
|
||||
from sqlalchemy import delete
|
||||
await db.execute(delete(ReservedOrder).where(ReservedOrder.id == order_id))
|
||||
|
||||
@@ -38,7 +38,7 @@ class UpdateGroupRequest(BaseModel):
|
||||
|
||||
# --- Endpoints ---
|
||||
|
||||
@router.get("/", response_model=List[WatchlistGroupSchema])
|
||||
@router.get("/groups", response_model=List[WatchlistGroupSchema])
|
||||
async def get_watchlists(db: AsyncSession = Depends(get_db)):
|
||||
# Load groups with items (Need relationship setup?
|
||||
# Current models.py WatchlistGroup doesn't have `items` relationship defined explicitly in snippet provided?
|
||||
|
||||
Reference in New Issue
Block a user