62 lines
3.2 KiB
Python
62 lines
3.2 KiB
Python
from aiogram.types import InlineKeyboardMarkup
|
|
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
|
|
|
from ..panel.keyboard import AdminPanelCallback, build_admin_back_btn
|
|
|
|
|
|
def build_audit_refresh_kb(source: str = "db") -> InlineKeyboardMarkup:
|
|
"""Клавиатура под сообщением аудита: выбор источника данных."""
|
|
builder = InlineKeyboardBuilder()
|
|
redis_text = "• Redis raw" if source == "redis" else "Redis raw"
|
|
db_text = "• БД вчера" if source == "db" else "БД вчера"
|
|
reset_text = "Сбросить Redis" if source == "redis" else "Сбросить БД"
|
|
builder.button(text=redis_text, callback_data=AdminPanelCallback(action="audit_refresh_redis").pack())
|
|
builder.button(text=db_text, callback_data=AdminPanelCallback(action="audit_refresh_db").pack())
|
|
builder.button(text=reset_text, callback_data=AdminPanelCallback(action=f"audit_reset_ask_{source}").pack())
|
|
builder.button(text="Администратор", callback_data=AdminPanelCallback(action="admin").pack())
|
|
builder.adjust(2, 1, 1)
|
|
return builder.as_markup()
|
|
|
|
|
|
def build_audit_source_kb() -> InlineKeyboardMarkup:
|
|
"""Клавиатура выбора источника аудита при первом открытии."""
|
|
builder = InlineKeyboardBuilder()
|
|
builder.button(text="Redis raw", callback_data=AdminPanelCallback(action="audit_refresh_redis").pack())
|
|
builder.button(text="БД вчера", callback_data=AdminPanelCallback(action="audit_refresh_db").pack())
|
|
builder.button(text="Администратор", callback_data=AdminPanelCallback(action="admin").pack())
|
|
builder.adjust(2, 1)
|
|
return builder.as_markup()
|
|
|
|
|
|
def build_audit_reset_confirm_kb(source: str) -> InlineKeyboardMarkup:
|
|
builder = InlineKeyboardBuilder()
|
|
builder.button(text="Да, сбросить", callback_data=AdminPanelCallback(action=f"audit_reset_do_{source}").pack())
|
|
builder.button(text="Отмена", callback_data=AdminPanelCallback(action=f"audit_refresh_{source}").pack())
|
|
builder.button(text="Администратор", callback_data=AdminPanelCallback(action="admin").pack())
|
|
builder.adjust(1, 1, 1)
|
|
return builder.as_markup()
|
|
|
|
|
|
def build_stats_kb() -> InlineKeyboardMarkup:
|
|
builder = InlineKeyboardBuilder()
|
|
builder.button(text="🔄 Обновить", callback_data=AdminPanelCallback(action="stats").pack())
|
|
builder.button(
|
|
text="📥 Выгрузить пользователей в CSV",
|
|
callback_data=AdminPanelCallback(action="stats_export_users_csv").pack(),
|
|
)
|
|
builder.button(
|
|
text="📥 Выгрузить оплаты в CSV",
|
|
callback_data=AdminPanelCallback(action="stats_export_payments_csv").pack(),
|
|
)
|
|
builder.button(
|
|
text="📥 Выгрузить подписки в CSV",
|
|
callback_data=AdminPanelCallback(action="stats_export_keys_csv").pack(),
|
|
)
|
|
builder.button(
|
|
text="📥 Выгрузить горящих лидов",
|
|
callback_data=AdminPanelCallback(action="stats_export_hot_leads_csv").pack(),
|
|
)
|
|
builder.row(build_admin_back_btn())
|
|
builder.adjust(1)
|
|
return builder.as_markup()
|