Stage 05.1 - order draft flow

This commit is contained in:
2026-04-16 21:23:35 +03:00
parent 76fc122955
commit f662ff1901
9 changed files with 185 additions and 2 deletions

View File

@@ -0,0 +1 @@
"""Package marker."""

View File

@@ -0,0 +1,12 @@
from __future__ import annotations
from dataclasses import dataclass
@dataclass(slots=True)
class OrderDraft:
symbol: str
side: str
order_type: str
quantity: str
status: str = "draft"

View File

@@ -0,0 +1,55 @@
from __future__ import annotations
from src.core.config import load_settings
from src.storage.repositories.order_drafts import OrderDraftRepository
from src.trading.journal.service import JournalService
from src.trading.orders.models import OrderDraft
class OrderDraftsService:
def __init__(self) -> None:
self.settings = load_settings()
self.repository = OrderDraftRepository()
self.journal = JournalService()
def create_default_draft(self) -> OrderDraft:
draft = OrderDraft(
symbol=self.settings.default_symbol,
side="BUY",
order_type="MARKET",
quantity="0.001",
status="draft",
)
self._save_draft(draft)
return draft
def _save_draft(self, draft: OrderDraft) -> None:
self.repository.add_draft(
symbol=draft.symbol,
side=draft.side,
order_type=draft.order_type,
quantity=draft.quantity,
status=draft.status,
payload={
"source": "trade_screen",
"mode": "draft_only",
},
)
try:
self.journal.log_info(
"order_draft_saved",
"Черновик ордера сохранён.",
{
"symbol": draft.symbol,
"side": draft.side,
"order_type": draft.order_type,
"quantity": draft.quantity,
"status": draft.status,
},
)
except Exception:
pass
def list_recent_drafts(self, limit: int = 5) -> list[dict[str, str]]:
return self.repository.list_recent_drafts(limit=limit)