from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup def template_choice_keyboard(templates: list[dict]) -> InlineKeyboardMarkup: buttons = [] for tpl in templates: buttons.append([InlineKeyboardButton( text=tpl["name"], callback_data=f"template:{tpl['id']}", )]) return InlineKeyboardMarkup(inline_keyboard=buttons) def protocol_actions_keyboard(protocol_id: str, app_url: str) -> InlineKeyboardMarkup: return InlineKeyboardMarkup(inline_keyboard=[ [ InlineKeyboardButton(text="📄 DOCX", callback_data=f"export:{protocol_id}:docx"), InlineKeyboardButton(text="📕 PDF", callback_data=f"export:{protocol_id}:pdf"), InlineKeyboardButton(text="📝 MD", callback_data=f"export:{protocol_id}:md"), ], [ InlineKeyboardButton(text="🔄 Перегенерировать", callback_data=f"regen:{protocol_id}"), ], [ InlineKeyboardButton(text="🌐 Открыть в вебе", url=f"{app_url}/protocols/{protocol_id}"), ], ]) def recording_list_keyboard(recordings: list[dict]) -> InlineKeyboardMarkup: buttons = [] for rec in recordings[:10]: status_emoji = {"uploaded": "⏳", "processing": "⚙️", "done": "✅", "error": "❌"} emoji = status_emoji.get(rec["status"], "") buttons.append([InlineKeyboardButton( text=f"{emoji} {rec['title'][:40]}", callback_data=f"rec:{rec['id']}", )]) return InlineKeyboardMarkup(inline_keyboard=buttons)