from app.settings_cache import SettingsCache from app.conversation import get_or_create_user, get_template_rendered from app.fsm import BotState, FSM from app.keyboards.inline import build_main_menu_buttons async def handle_sla_status(bot, user_data: dict, db, max_api): max_user_id = user_data["user_id"] text = user_data.get("text", "").strip() if FSM.get_state(max_user_id) != BotState.FEATURE_SLA_STATUS: FSM.set_state(max_user_id, BotState.FEATURE_SLA_STATUS) await max_api.send_message(max_user_id, "πŸ” **ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° SLA статуса**\n\n" "Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°." ) return if not text: await max_api.send_message(max_user_id, "Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.") return from app.integrations.portal_db import get_object_by_name_or_id, get_sla_for_object, get_last_incident_for_object, get_active_tasks_for_object obj = await get_object_by_name_or_id(db, text) if not obj: await max_api.send_message(max_user_id, "ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½.") FSM.transition(max_user_id, "done") buttons = build_main_menu_buttons() menu_text = await get_template_rendered(db, "main_menu") await max_api.send_message_with_keyboard(max_user_id, menu_text, buttons) return sla = await get_sla_for_object(db, obj.id) if not sla: text = await get_template_rendered(db, "sla_not_found") await max_api.send_message(max_user_id, text) else: level_map = {"start": "Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ", "business": "ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ", "enterprise": "ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ"} last_incident = await get_last_incident_for_object(db, obj.id) open_tasks = await get_active_tasks_for_object(db, obj.id) last_visit = last_incident.created_at.strftime("%d.%m.%Y") if last_incident else "β€”" tasks_count = len(open_tasks) text = await get_template_rendered(db, "sla_found", object_name=obj.name, service_level=level_map.get(sla.service_level, sla.service_level), status=sla.status, price=sla.sla_price_monthly or 0) text += f"\nπŸ“… ПослСдний Π²ΠΈΠ·ΠΈΡ‚: {last_visit}\nπŸ“‹ ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡: {tasks_count}" await max_api.send_message(max_user_id, text, format="markdown") FSM.transition(max_user_id, "done") buttons = build_main_menu_buttons() menu_text = await get_template_rendered(db, "main_menu") await max_api.send_message_with_keyboard(max_user_id, menu_text, buttons)