Stage 05.3 - order validation, error handling and journal logging
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
# app/src/telegram/handlers/auto.py
|
||||
|
||||
from aiogram import F, Router
|
||||
from aiogram.types import Message
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# app/src/telegram/handlers/home.py
|
||||
|
||||
from aiogram import F, Router
|
||||
from aiogram.types import Message
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
# app/src/telegram/handlers/journal.py
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from aiogram import F, Router
|
||||
from aiogram.types import Message, CallbackQuery
|
||||
from aiogram.types import CallbackQuery, Message
|
||||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||
|
||||
from src.trading.journal.service import JournalService
|
||||
@@ -11,22 +13,25 @@ router = Router(name="journal")
|
||||
|
||||
PAGE_SIZE = 3
|
||||
|
||||
LEVEL_ICONS = {
|
||||
"INFO": "ℹ️",
|
||||
"WARNING": "⚠️",
|
||||
"ERROR": "❌",
|
||||
"CRITICAL": "🚨",
|
||||
}
|
||||
|
||||
|
||||
def build_keyboard(page: int, total_pages: int):
|
||||
kb = InlineKeyboardBuilder()
|
||||
|
||||
# кнопка "в начало"
|
||||
if page > 1:
|
||||
kb.button(text="⏮️", callback_data="journal:1")
|
||||
|
||||
# назад
|
||||
if page > 1:
|
||||
kb.button(text="⬅️", callback_data=f"journal:{page-1}")
|
||||
|
||||
# текущая страница
|
||||
kb.button(text=f"{page}/{total_pages}", callback_data="noop")
|
||||
|
||||
# вперед
|
||||
if page < total_pages:
|
||||
kb.button(text="➡️", callback_data=f"journal:{page+1}")
|
||||
|
||||
@@ -37,17 +42,20 @@ def render(events, page, total_pages):
|
||||
lines = ["<b>📒 Журнал</b>", "", "<b>Последние события</b>", ""]
|
||||
|
||||
for e in events:
|
||||
level = str(e.get("level", "INFO")).upper()
|
||||
icon = LEVEL_ICONS.get(level, "•")
|
||||
|
||||
lines.extend(
|
||||
[
|
||||
f"ℹ️ <b>{e['event_type']}</b>",
|
||||
f"• уровень: {e['level']}",
|
||||
f"{icon} <b>{e['event_type']}</b>",
|
||||
f"• уровень: {level}",
|
||||
f"• время: {e['created_at']}",
|
||||
f"• сообщение: {e['message']}",
|
||||
"",
|
||||
]
|
||||
)
|
||||
|
||||
return "\n".join(lines)
|
||||
return "\n".join(lines).rstrip()
|
||||
|
||||
|
||||
@router.message(F.text == "📒 Журнал")
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# app/src/telegram/handlers/market.py
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from aiogram import F, Router
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# app/src/telegram/handlers/portfolio.py
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from aiogram import F, Router
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# app/src/telegram/handlers/start.py
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from aiogram import F, Router
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# app/src/telegram/handlers/system.py
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from aiogram import F, Router
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# app/src/telegram/menus.py
|
||||
|
||||
MAIN_MENU_TEXT = (
|
||||
"<b>Dzentra Bot</b>\n\n"
|
||||
"Новый каркас проекта успешно создан.\n\n"
|
||||
@@ -25,6 +27,6 @@ SYSTEM_TEXT = (
|
||||
|
||||
MARKET_TEXT = "<b>📈 Рынок</b>\n\nРаздел пока в разработке."
|
||||
PORTFOLIO_TEXT = "<b>💼 Портфель</b>\n\nРаздел пока в разработке."
|
||||
TRADE_TEXT = "<b>⚡ Торговля</b>\n\nРаздел пока в разработке."
|
||||
TRADE_TEXT = "<b>⚡ Торговля</b>\n\nВыберите действие:\n<i>DRAFT режим</i>"
|
||||
AUTO_TEXT = "<b>🤖 Авто</b>\n\nРаздел пока в разработке."
|
||||
JOURNAL_TEXT = "<b>📒 Журнал</b>\n\nРаздел пока в разработке."
|
||||
JOURNAL_TEXT = "<b>📒 Журнал</b>\n\nРаздел пока в разработке."
|
||||
Reference in New Issue
Block a user