From 547a4a1dcb68b65803e1142fbd641b2a0118c676 Mon Sep 17 00:00:00 2001 From: dv Date: Thu, 26 Mar 2026 15:19:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=87=D0=B5=D0=B3=D0=BE-=D1=82?= =?UTF-8?q?=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot/handlers/create_ticket.py | 281 ++++++++++++++++++++++++++-------- bot/handlers/menu.py | 33 +++- bot/handlers/start.py | 10 +- bot/handlers/view_tickets.py | 10 +- bot/keyboards.py | 20 +++ bot/states.py | 1 + data/support.db | Bin 2691072 -> 2748416 bytes data/support.db-shm | Bin 32768 -> 32768 bytes data/support.db-wal | Bin 5800992 -> 5800992 bytes database/queries/intradesk.py | 17 ++ external/intradesk_api.py | 12 +- 11 files changed, 298 insertions(+), 86 deletions(-) diff --git a/bot/handlers/create_ticket.py b/bot/handlers/create_ticket.py index 6fc1c9c..a41825c 100644 --- a/bot/handlers/create_ticket.py +++ b/bot/handlers/create_ticket.py @@ -2,13 +2,14 @@ Обработчики создания заявки. Поток: -1. Нажатие "Создать заявку" → переход в waiting_description -2. Первое сообщение с текстом → сохранение описания, переход в collecting_attachments -3. Дополнительные сообщения → накопление вложений -4. Нажатие "Готово" → сохранение заявки в БД, подтверждение +1. "Создать заявку" → waiting_description +2. Первое сообщение → сохранение описания, collecting_attachments +3. Доп. сообщения → накопление вложений +4. "Готово" → предпросмотр + кнопки подтверждения, confirming +5a. "Подтвердить" → сохранение в БД + Intradesk, сообщение с номером, главное меню +5b. "Продолжить редактирование" → обратно в collecting_attachments +5c. "Отменить создание" → очистка состояния, главное меню """ -import asyncio - from maxapi.context import BaseContext from maxapi.dispatcher import Router from maxapi.enums.attachment import AttachmentType @@ -20,19 +21,20 @@ from maxapi.types.attachments.attachment import ( from maxapi.types.updates.message_callback import MessageCallback from maxapi.types.updates.message_created import MessageCreated -from bot.keyboards import done_ticket_kb, main_menu_kb +from bot.handlers.menu import build_main_menu_text +from bot.keyboards import confirm_ticket_kb, done_ticket_kb, main_menu_kb from bot.logging_setup import get_logger from bot.send_helper import bot_send +from bot.states import TicketStates from database.connection import get_db from database.queries.intradesk import get_intradesk_contact_id_for_phone from database.queries.organizations import get_organization -from bot.states import TicketStates - -logger = get_logger("bot.handlers.create_ticket") from database.queries.ticket_attachments import add_attachment from database.queries.tickets import create_ticket, set_intradesk_task_id from external.intradesk_api import create_intradesk_task +logger = get_logger("bot.handlers.create_ticket") + router = Router(router_id="create_ticket") _MEDIA_TYPES = { @@ -53,14 +55,67 @@ def _extract_attachments(event: MessageCreated) -> list[dict]: att_type = getattr(att, "type", None) if att_type not in _MEDIA_TYPES: continue - url = None + url: str | None = None + filename: str | None = None + duration: int | None = None payload = getattr(att, "payload", None) - if isinstance(payload, (PhotoAttachmentPayload, OtherAttachmentPayload)): + if isinstance(payload, PhotoAttachmentPayload): url = payload.url - result.append({"type": str(att_type), "url": url}) + elif isinstance(payload, OtherAttachmentPayload): + url = payload.url + filename = ( + getattr(payload, "filename", None) + or getattr(payload, "name", None) + or getattr(payload, "title", None) + ) + if att_type == AttachmentType.AUDIO: + duration = ( + getattr(payload, "duration", None) + or getattr(payload, "duration_ms", None) + ) + result.append({"type": str(att_type), "url": url, "filename": filename, "duration": duration}) return result +def _att_label(att: dict) -> str: + """Человекочитаемое описание вложения для предпросмотра.""" + t = att.get("type", "") + if AttachmentType.IMAGE.value in t or "PHOTO" in t.upper(): + return "🖼 Фото" + if AttachmentType.VIDEO.value in t: + return "📹 Видео" + if AttachmentType.AUDIO.value in t: + dur = att.get("duration") + if dur: + mins, secs = divmod(int(dur), 60) + return f"🎤 Голосовое ({mins:02d}:{secs:02d})" + return "🎤 Голосовое" + if AttachmentType.FILE.value in t: + fname = att.get("filename") + return f"📎 {fname}" if fname else "📎 Файл" + return "📎 Вложение" + + +def _preview_text(org_name: str | None, description: str, pending_atts: list[dict]) -> str: + """Формирует текст предпросмотра заявки.""" + task_name = org_name or description[:80] + lines = [ + "📋 Предпросмотр заявки:", + "", + f"📄 {task_name}", + "", + description[:500] + ("…" if len(description) > 500 else ""), + ] + if pending_atts: + lines += ["", "📎 Вложения:"] + for att in pending_atts: + lines.append(f" • {_att_label(att)}") + lines += ["", "Всё верно? Подтвердите или вернитесь к редактированию."] + return "\n".join(lines) + + +# ── Шаг 1: начало создания ──────────────────────────────────────────────────── + @router.message_callback(F.callback.payload == "create_ticket") async def cb_create_ticket( event: MessageCallback, context: BaseContext, bot_user: dict @@ -87,6 +142,8 @@ async def cb_create_ticket( ) +# ── Шаг 2: первое сообщение с описанием ────────────────────────────────────── + @router.message_created(states=TicketStates.waiting_description) async def on_ticket_description( event: MessageCreated, context: BaseContext @@ -99,10 +156,7 @@ async def on_ticket_description( text = (body.text or "").strip() if body else "" attachments = _extract_attachments(event) - await context.update_data( - description=text, - pending_attachments=attachments, - ) + await context.update_data(description=text, pending_attachments=attachments) await context.set_state(TicketStates.collecting_attachments) await bot_send( @@ -117,6 +171,8 @@ async def on_ticket_description( ) +# ── Шаг 3: дополнительные вложения/текст ───────────────────────────────────── + @router.message_created(states=TicketStates.collecting_attachments) async def on_ticket_attachment( event: MessageCreated, context: BaseContext @@ -133,10 +189,11 @@ async def on_ticket_attachment( pending = data.get("pending_attachments", []) pending.extend(new_atts) data["pending_attachments"] = pending - await context.set_data(data) +# ── Шаг 4: "Готово" → предпросмотр ─────────────────────────────────────────── + @router.message_callback( F.callback.payload == "done_ticket", states=[TicketStates.waiting_description, TicketStates.collecting_attachments], @@ -162,33 +219,104 @@ async def cb_done_ticket( ) return - ticket_id = await create_ticket( - org_id=bot_user["org_id"], - created_by=bot_user["id"], - description=description, - ) + await event.answer(notification="") pending_atts = data.get("pending_attachments", []) - logger.info( - "✅ ticket created | ticket_id=%s user_id=%s org_id=%s attachments=%s", - ticket_id, bot_user["max_user_id"], bot_user["org_id"], len(pending_atts), + + org = await get_organization(bot_user["org_id"]) + org_name = org["name"] if org else None + + await context.set_state(TicketStates.confirming) + + await bot_send( + event.bot, + chat_id=chat_id, + user_id=bot_user["max_user_id"], + text=_preview_text(org_name, description, pending_atts), + attachments=[confirm_ticket_kb()], ) - for att in pending_atts: - await add_attachment( - ticket_id=ticket_id, - attachment_type=att["type"], - attachment_url=att.get("url"), - ) +# ── Шаг 5б: "Продолжить редактирование" ────────────────────────────────────── + +@router.message_callback( + F.callback.payload == "edit_ticket", + states=TicketStates.confirming, +) +async def cb_edit_ticket( + event: MessageCallback, context: BaseContext, bot_user: dict +) -> None: + await event.answer(notification="") + await context.set_state(TicketStates.collecting_attachments) + + chat_id = event.message.recipient.chat_id if event.message else None + if chat_id is None: + return + + await bot_send( + event.bot, + chat_id=chat_id, + user_id=bot_user["max_user_id"], + text=( + "✏️ Продолжайте добавлять описание или вложения.\n" + "Нажмите «Готово» когда будете готовы." + ), + attachments=[done_ticket_kb()], + ) + + +# ── Шаг 5в: "Отменить создание" ────────────────────────────────────────────── + +@router.message_callback( + F.callback.payload == "cancel_ticket", + states=TicketStates.confirming, +) +async def cb_cancel_ticket( + event: MessageCallback, context: BaseContext, bot_user: dict +) -> None: + await event.answer(notification="Создание отменено") await context.clear() - await event.answer(notification="Заявка создана!") - # ── Отправка в Intradesk ────────────────────────────────────────────────── + chat_id = event.message.recipient.chat_id if event.message else None + if chat_id is None: + return + + await bot_send( + event.bot, + chat_id=chat_id, + user_id=bot_user["max_user_id"], + text=await build_main_menu_text(bot_user), + attachments=[main_menu_kb()], + ) + + +# ── Шаг 5а: "Подтвердить" → создание ───────────────────────────────────────── + +@router.message_callback( + F.callback.payload == "confirm_ticket", + states=TicketStates.confirming, +) +async def cb_confirm_ticket( + event: MessageCallback, context: BaseContext, bot_user: dict +) -> None: + # Защита от двойного нажатия: читаем данные и сбрасываем состояние атомарно. + # Повторный tap уже не пройдёт фильтр states=confirming. + data = await context.get_data() + await context.clear() + + description = (data.get("description") or "").strip() + pending_atts = data.get("pending_attachments", []) + + chat_id = event.message.recipient.chat_id if event.message else None + if chat_id is None: + return + + await event.answer(notification="Отправляем заявку…") + + # ── Данные организации ──────────────────────────────────────────────────── org = await get_organization(bot_user["org_id"]) org_name = org["name"] if org else None intradesk_id: int | None = org.get("intradesk_id") if org else None - # Находим id контактного лица в Intradesk по телефону пользователя contact_person_id: int | None = None if intradesk_id and bot_user.get("phone"): db = get_db() @@ -196,48 +324,75 @@ async def cb_done_ticket( db, intradesk_id, bot_user["phone"] ) - # Ссылки на вложения (Max CDN) — добавятся в описание задачи + # ── Сохраняем локально ──────────────────────────────────────────────────── + ticket_id = await create_ticket( + org_id=bot_user["org_id"], + created_by=bot_user["id"], + description=description, + ) + for att in pending_atts: + await add_attachment( + ticket_id=ticket_id, + attachment_type=att["type"], + attachment_url=att.get("url"), + ) + logger.info( + "✅ ticket created | ticket_id=%s user_id=%s org_id=%s attachments=%s", + ticket_id, bot_user["max_user_id"], bot_user["org_id"], len(pending_atts), + ) + + # ── Отправка в Intradesk (ждём, чтобы получить номер) ──────────────────── + task_name = org_name or description[:150] att_urls = [a["url"] for a in pending_atts if a.get("url")] - async def _create_in_intradesk(): - result = await create_intradesk_task( - name=description[:150], - description=description, - client_intradesk_id=intradesk_id, - contact_person_id=contact_person_id, - attachment_urls=att_urls or None, + intradesk_result = await create_intradesk_task( + name=task_name, + description=description, + client_intradesk_id=intradesk_id, + contact_person_id=contact_person_id, + attachment_urls=att_urls or None, + ) + + intradesk_number: int | None = None + if intradesk_result: + iid = ( + intradesk_result.get("id") or intradesk_result.get("Id") + or intradesk_result.get("ID") ) - if result: - iid = result.get("id") - if iid: - await set_intradesk_task_id(ticket_id, int(iid)) - logger.info("Intradesk task created: id=%s for ticket_id=%s", iid, ticket_id) + intradesk_number = ( + intradesk_result.get("tasknumber") or intradesk_result.get("number") + or intradesk_result.get("Number") or intradesk_result.get("TaskNumber") + ) + if iid: + await set_intradesk_task_id(ticket_id, int(iid)) + logger.info( + "Intradesk task created: id=%s number=%s for ticket_id=%s", + iid, intradesk_number, ticket_id, + ) - asyncio.create_task(_create_in_intradesk()) - - # ── Подтверждение пользователю ──────────────────────────────────────────── - att_count = len(pending_atts) - confirm_text = ( - f"✅ Заявка успешно создана!\n" - f"Описание: {description[:200]}{'…' if len(description) > 200 else ''}" - ) - if att_count: - confirm_text += f"\nВложений: {att_count}" - confirm_text += "\n\nНаши специалисты свяжутся с вами в ближайшее время." + # ── Итоговое сообщение ──────────────────────────────────────────────────── + lines = ["✅ Заявка успешно создана!"] + if intradesk_number: + lines.append(f"Номер заявки: #{intradesk_number}") + lines += ["", f"📄 {task_name}", ""] + lines.append(description[:500] + ("…" if len(description) > 500 else "")) + if pending_atts: + lines += ["", "📎 Вложения:"] + for att in pending_atts: + lines.append(f" • {_att_label(att)}") + lines += ["", "Наши специалисты свяжутся с вами в ближайшее время."] await bot_send( event.bot, chat_id=chat_id, user_id=bot_user["max_user_id"], - text=confirm_text, + text="\n".join(lines), ) - menu_text = f"🏠 {org_name}\nВыберите действие:" if org_name else "🏠 Главное меню\nВыберите действие:" - await bot_send( event.bot, chat_id=chat_id, user_id=bot_user["max_user_id"], - text=menu_text, + text=await build_main_menu_text(bot_user), attachments=[main_menu_kb()], ) diff --git a/bot/handlers/menu.py b/bot/handlers/menu.py index c0af9b0..3489297 100644 --- a/bot/handlers/menu.py +++ b/bot/handlers/menu.py @@ -6,22 +6,43 @@ from maxapi.context import BaseContext from bot.keyboards import main_menu_kb from bot.send_helper import bot_reply +from database.connection import get_db +from database.queries.intradesk import ( + count_active_tasks_for_local_org, + count_tasks_for_local_org, +) from database.queries.organizations import get_organization router = Router(router_id="menu") -async def _main_menu_text(bot_user: dict) -> str: +async def build_main_menu_text(bot_user: dict) -> str: + """Формирует текст главного меню с именем объекта и статистикой заявок.""" org_id = bot_user.get("org_id") + org_name: str | None = None + if org_id: org = await get_organization(org_id) org_name = org["name"] if org else None - else: - org_name = None + lines: list[str] = [] if org_name: - return f"🏠 {org_name}\nВыберите действие:" - return "🏠 Главное меню\nВыберите действие:" + lines.append(f"🏢 {org_name}") + else: + lines.append("🏠 Главное меню") + + if org_id: + db = get_db() + total = await count_tasks_for_local_org(db, org_id) + active = await count_active_tasks_for_local_org(db, org_id) + + if total == 0: + lines.append("Заявок пока нет.") + else: + lines.append(f"Заявок: {total} (активных: {active})") + + lines.append("\nВыберите действие:") + return "\n".join(lines) @router.message_callback(F.callback.payload == "main_menu") @@ -31,7 +52,7 @@ async def cb_main_menu( await context.set_state(None) await event.answer(notification="") - text = await _main_menu_text(bot_user) + text = await build_main_menu_text(bot_user) await bot_reply( event, text=text, diff --git a/bot/handlers/start.py b/bot/handlers/start.py index 09a796b..91aa192 100644 --- a/bot/handlers/start.py +++ b/bot/handlers/start.py @@ -30,7 +30,6 @@ from database.queries.bot_users import ( ) from database.queries.org_users import find_by_phone from database.queries.message_log import log_message -from database.queries.organizations import get_organization router = Router(router_id="start") @@ -224,13 +223,8 @@ async def on_contact_shared( ) await context.set_state(None) - org = await get_organization(org_user["org_id"]) - org_name = org["name"] if org else None - menu_text = ( - f"✅ Вы успешно авторизованы!\n\n🏠 {org_name}\nВыберите действие:" - if org_name - else "✅ Вы успешно авторизованы! Выберите действие:" - ) + from bot.handlers.menu import build_main_menu_text # local import to avoid circular + menu_text = "✅ Вы успешно авторизованы!\n\n" + await build_main_menu_text(bot_user) await bot_send( event.bot, diff --git a/bot/handlers/view_tickets.py b/bot/handlers/view_tickets.py index 6fb12bb..8056411 100644 --- a/bot/handlers/view_tickets.py +++ b/bot/handlers/view_tickets.py @@ -15,7 +15,7 @@ from maxapi.filters import F from maxapi.types.updates.message_callback import MessageCallback from bot.filters import PayloadStartsWith -from bot.keyboards import intradesk_tasks_list_kb, iticket_detail_kb +from bot.keyboards import intradesk_tasks_list_kb, iticket_detail_kb, menu_only_kb from bot.send_helper import bot_reply from database.connection import get_db from database.queries.intradesk import ( @@ -70,11 +70,11 @@ async def cb_view_tickets( ) -> None: await event.answer(notification="") text, tasks, total = await _tasks_page_text(bot_user["org_id"], 0) - kb = intradesk_tasks_list_kb(tasks, page=0, total=total) if tasks else None + kb = intradesk_tasks_list_kb(tasks, page=0, total=total) if tasks else menu_only_kb() await bot_reply( event, text=text, - attachments=[kb] if kb else None, + attachments=[kb], user_id=bot_user["max_user_id"], chat_id=event.message.recipient.chat_id if event.message else None, ) @@ -90,11 +90,11 @@ async def cb_itickets_page( except (IndexError, ValueError): page = 0 text, tasks, total = await _tasks_page_text(bot_user["org_id"], page) - kb = intradesk_tasks_list_kb(tasks, page=page, total=total) if tasks else None + kb = intradesk_tasks_list_kb(tasks, page=page, total=total) if tasks else menu_only_kb() await bot_reply( event, text=text, - attachments=[kb] if kb else None, + attachments=[kb], user_id=bot_user["max_user_id"], chat_id=event.message.recipient.chat_id if event.message else None, ) diff --git a/bot/keyboards.py b/bot/keyboards.py index 185ef6b..f726010 100644 --- a/bot/keyboards.py +++ b/bot/keyboards.py @@ -23,6 +23,26 @@ def contact_request_kb() -> Attachment: ) +def confirm_ticket_kb() -> Attachment: + """Клавиатура подтверждения создания заявки.""" + return ( + InlineKeyboardBuilder() + .row(CallbackButton(text="✅ Подтвердить", payload="confirm_ticket")) + .row(CallbackButton(text="✏️ Продолжить редактирование", payload="edit_ticket")) + .row(CallbackButton(text="❌ Отменить создание", payload="cancel_ticket")) + .as_markup() + ) + + +def menu_only_kb() -> Attachment: + """Клавиатура с единственной кнопкой возврата в главное меню.""" + return ( + InlineKeyboardBuilder() + .row(CallbackButton(text="🏠 Главное меню", payload="main_menu")) + .as_markup() + ) + + def done_ticket_kb() -> Attachment: return ( InlineKeyboardBuilder() diff --git a/bot/states.py b/bot/states.py index 2927df6..a71f9fe 100644 --- a/bot/states.py +++ b/bot/states.py @@ -8,3 +8,4 @@ class AuthStates(StatesGroup): class TicketStates(StatesGroup): waiting_description = State() # Ожидаем первое сообщение с описанием collecting_attachments = State() # Накапливаем доп. файлы/текст + confirming = State() # Предпросмотр — ждём подтверждения diff --git a/data/support.db b/data/support.db index 27402e1bc2930aa8e6befcb4638b4ec7645f43f5..bd842321d7f19619b56790a132ffeece7eb6d03f 100644 GIT binary patch delta 78834 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

)MGk9ISsj_)+O>&Vgn33omy7DyDL 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 delta 28877 zcmZua2YeL8*V(FnP(#%q zEJgzZ*x0*-{%X9ku#hN z3uE66lm64aTQ`~Ec4w6sHF~_t7=H^h{>F!A#ogENX=Th!E-8xP!pzAHUrT;1>9xl7 zl9KDamg0S_VYB4dnk6^V8@~%v80Uu>=NqexTZ~7I<;E4#<{6w(&&WK?+Y_b?o;rE> zq{*`46%Fje<$4)joG@u5EV3H8%&DF-dg$2UQzjcZSsXKN_~gk$Mh+jGJz=ED_)nNY z;?~5<64ZF-kny8u4Vf}}!uZMfnL!;Q03uurGhURqxWu80J!;ibYlwK&VMY{QX6(;< zv*LauB5vb~t9w{fjIlfnvp-(iIDzZfUZxA$_a>;!GNp`DD_p@N zz`ekR1hbDTE}!3n4KqngO8Kg+C{AWl9YxCAS}}Zh3Ab9sA1$oaTKQQClcYCX3{xpu zg(+GYe$fx!J?S`uupx)-X~HVFJ*_TGXZMt=VikKX{#-9yFE{)WW~?yg8DBRl3@AKJ z@j%kcLpH%DS7FnKIaOgpva|n}Tq(_xlP66bKYsN1k$V*XZDmw~{CF{CWsn&jnxHs_ z=_Ji2Gt3}q_9Mfzmu5be87j?+SZ1Cyv&oo3X|_ei3<=GOuWiYc6T)a5$21MCqfa;{ zSDH1JGlQksIyuurnmv#+-KAL<1(Ok)727ut1nk8xcD^o-mX&l9DXvp8Ev+?z_gV2E zOC8pc!DeiqjE?TLxsguAB!+OI7Ajia#VV$q^z3^T#Y1smQ%8~3jLjWHT1VB)n-YAq zhM6GER%)2m((HJ1Z=?iWWnw-GJu3cdTc(=G!}SbngaYwQ5^54oyW6^OW?p!Wu|^iX=%Ws6&7`7h z>5Ofa)u1fiwk=JRY()gqErb~T8o_i4&5AQV=_x`jG1D&fx0&e|f?) z)7;9ul%U$!nD0X~-fd?#OJRggI+)Kx4^dGhQzgx2L@|%4nUgsgn(XM%n50R&c#q7puVxpl+ecF@msfv0tMoj{-JerJ&t)#n$3-8 zDx_I^A5$jHUig?J((Efg(=p^Oy^Fu-s}5@?y36i2)lSqrfp*BT2~1yU@5uxvQ<~LD zWVTAP%Zbc>Y4%|)<{fF4T${=%#Y=aN1Br^6jcY~OeyGD-mf-i*Wll-6rS+I&(yU*7 z=DsxR)qvR?nypG=PKPGw`y?hH%?34O@}=3I4VkIZY{YBKIB9nIH9DzwN@iAvo)s_O z)n8<|eh;RtIDDrOvmgY5qEeW-((L0D+P&|mP?-mHZcGQ?s>aMhX&g~G^Vqz=8X#5fh#C%ai*GYq_&IMd-Kjm_^^%fRD$484d|X2;71er^*&)rYyvf8! zGkG6+R=*EZB0anC%CrCaFds_KHuk0Wo$f20rK!l=kABvoA5$*vdxD=e6g@uG_iQfbRMa(-7VlXmvqVC37v50|8x&%3L zAkAjcKqgswc4{EgT$&jMNkv5}8a#-ZBt83S5N)jZx0q?tvkh<2ihpx3voZ86n8nPM zg=VN=D6?Lg)gQ*JlV<0K(GpD>&TNvNMUP4R`TLh6qo%9WHvKOqR?&}lP%5oS7vp_OZ7l1DjhG?+Nr3) z1Sy}SqInaTSs^UJ9HxQ`&CoYfDBG60r!rJaS~Bc$2&*>prLokK&W%%yp`Hdo4Esp$22OsRzB z{yZsXrJ|MdnW1%SVo12@8C0GyW4_^$VWR$|zLsvD_H*r<8eZd7Z&$~v=BYeg<~i zqhJvep_VX4t)}=ypRcBPDqdQ?OT?;NOWU|&EzQN;J)1=uH$E#C;dia0L!O<0PD;2FeOfiO%K4*4HkiUIS83?^|gc%)r7OY?{ zQmX#t8>S%i3}v5SCQGxMC+Ms^{3H$e&q+FKZ8$|aFG@R22k4#CQo)gm-abR;(?4IC z<(y?kO4NTjOGA$MmXbDD$wX3Si1~>&L&;B4#hi-jUy_QLRP^2@=52|>^H-i_U8XbW zAD3y_M_i%xa_x$Ak4iZU2oC!KDs5{9a7PQTTMk8rbN`}!!g-JO-J|!I)DX^KHNGE*X6WC?QWq)}Wj&z}0@YLIkOX=9 zDV+-5e8!BGo_+I-`9PYDdQMx+`+~Og))(}V(f1{7zkgoR_RIZ`I{o*uM#=^4YBn{Z z=4=V*FT6Bp!zTE8p`IGngXXK*ArdctsM*lnITdx(u%WU#75%AUsnb7G%jQY@u4~zV zG|Sepp&M>0iqx}IBKknjQioti0~@+Oq@of7+grl&+`v-Nzu3rzI$Ehg6MK@f%6ATS zk+g3}Bu(8A#ZuMO$|#m9c$+#|Dx>Um(tIYn*zFR|8!lQCi`*<_&8Kdbs$7>vvs7W; z+QYUo)u?{@)-&nau;D|{*+e!9Rn(I?&=C*YG(;unWe-wPeVNEoRpEqMZ08Ups;EVC z-n=$#!%el>Q0Fie-K)(?6)IX&hoz1WXI(Z|!nv_7{Vcv7n<70MQjezoSv@vWdSa#PO5E6d)}C)ELE%TYRZN>2)HI~#^y^DK5fP# zY1X|t8@e*4qTS8euF^BE1v^@rO>IGIsiFl9X>Q3%834V}l9un&mh`@-uRu0!#fJJG zn0hOgy0GU>asq;$>(jmMT3TccNn{(3#yULALBdTkKdD+7Fv_WvL8)x+_cF zTDo*&L!Fvb^kX+#OU=`1i58~QmcE$Iww9%sPrAjkAz+l4N;9k(tt zq47P~WOSzos|x`IGuV2R5>oonY~=Q1hle21-F~c8f1;(CY?}1!d?wpPn)&*(p%(+G zXh(lKFf0Su>6V&c40yNvHclHhF{WWk1JrX2>p-9W=kTBl1K9o&wk8AFP|qzDl@FxV zoj8b2fS(PbTpQJSi(M>XIrJ9$nKYX=nA#W2VmDAa*glGO=FX$pHza=D8y~0O?BTB0 zunpQhf*FZyV_53!Yd?mz&CM}%_Ub;FIU?4+gRD+<}xF#2H`8%Lf3Y!TZY)_cCsmTHUN3Rl5;3HyPX?A)}C?H$6cVpYw;G!0eF zgey{g72j+h`?*p8gH09eEHdL4e$5u(mwR>9>!aa5|;pxazwi`>hFu!1Lur=J3bFwE| zvMkrh?o&E4$=Yhj#_mzF?Sy?0#w!cx3H8mh+)3E}6tB(AlJKy+=w{SL^Rw&0FXvZM(tNEYI3fHAf=cY%tHtXCM#;qHM; zKby)$5o)}926vrcMf$h7Whm`!PQkC4!@WgO%H;+EFQW=M{GOb6cbDbdCltFy+-;q} zE{aa$TBD{rawjgSm3irw=TU z{|;fcb&32rAm6!M4p}K!B>xMd=iz(uiC}~YAIKL|8L>qEA5hV5m7kP>_gvi}cM^iY zNSS&2kRB`k5puR`#19Oz@Ybx{6|WJO8Hr^>!r)`Xu>$`tdhSADdv~9 zib@t`O^~V4v|I8C1l!$P@`j)q|6lU&7-20~E&q-<6dGbucH}pdDg6wp$k&&n=a1!U z$*zx|$UgwHw|*htAL5~$Qyh|$jQfpTQ4Z=UP$?!8nSmLT;yqB{M>Yk-70*Q}9uRE> zy^1wNG96A`moB)Y!q}Pb)7A;9mV&Q){+!%Sg)0$_yq`? znkYp7Iom=3<_8wi6a&=+$EeN7=d zKEJoZ4o~g;UAmv8{YD<<9TuU`vc@He~-w0)6FnG%` zN;vQNd)Z1g;RNXCC`~$|an~H>6>2?Kd0a!B@4F>R9`y6>a^*-+UXijPcu&*!m4iU6 zkC3uH8R?ez^NyDc#e(!)nv8ava7;W{qvVJhM3XD$!Kt!jmvTHHEK@!NgfI6hpAsnn zv_e@66rOTY`6ZDqSgD*ujD#8%DLe2L7nB~*_06lw_YDHax`os8zP>gtGK}p}7>Op1 zx0v}2ca(i7*{YRJz?$$>d5&NesFic7_F$}@aut+^{5YLzDYen0f^v)3TUEFO3mxQM z)jjZ#XNjugppO%ERZtQIlT;Uh+AqyiIJ||THN2JTCb3X3O@&Vwq0Y!qjRxyYd{b2n z`quSR-667pF0xdQp#;lIH+0&Sq!jOs35BZD^*t^q;FhM zEeC#Q{iK>lsiaE9!D(c=t@;;;>hG#>z6e>jT9pZkAO1vzQ0$~pB+AYLF-!_mTb zP^jAjkz$qlGK{8a)p^7gz?n(?R41TDwKG&V`MYklmVm)SuX-hU$gi)f?n`8Z^(6H| zGSd~*&Rcn{EiqP4bS_D4<@Y43aiYWs`L>PKUjxbTrs|tS>R_6>#=X=}iHG77OY!nk zBgQZ}uQO^B6J_ByK2#lGq4NH1fI3=BkZDG${~{ZJfgCmVNukjCc#?XWcwD%rt8alF zjI-7601sQ{s^6eAm#fZ&NME*GolUJ5sS`oxjn=BaqLfpjHbK&HZC9s?mffXZN9``%j#$lX8KiifP$z}TY#qby80XN zgzDeavjBF|P4yP>>20+g)>_{c4G&7HR`-W2FygWLy-?tmbD9V+YP3%CC!jSN#8J?s z!Idqxo^FXguj1@9Y?n8eW3uU(PEpt?x8NT^C&0z{>iRL6^v=}8sKpGkD9R|$Kkmu z4P3_fieEM0sC?%enh_uae^WCWMv1pHn_={*GQlsyMSm^%*IofZa>aLur?IT`&>d)1lq!8z7YtGqx?QvjdYN7TE7`0xe-A_ir zBJD1sF;06d>@oUzS;7N;*GjDiz`p-Li(3twn6;n~(eeE!gc==zCv|{=% zc&a@`7~=cA(84`nukKfAnX1=Pf!HsN|7dCtl|jE*)HwMYqvyfB^iY zwyq1|C77fW54JSjX@X~EGu>OLS-H;1r?=NZjn7~2sDpk&Fhi#V8pd9_-=KH%tgr3` z6>C{KeD@KQWE-l(H$q`_ez*=QVxAwZ!%-)!`LcEA!6|^X99<;X!Z%$fUXWJJ(!C9( zYOZcQ$ha+E2ma1)TcpbYv&1adb%%U0y;zqAT4Pq}?m}98h;%ksv#inmM(MvqC#G4) zMqPW5Y4{dFg93Mpx9Kjxu8})+?~!6C`zkR4{ z3~sD{p~FR%=)C2ez73q(>3aPR5*I;}{u?+>D;;`V;t18pV5fdHkt68U_XD@e^64u< z4NYq4735(#Qpj19c0{K`eH-Z4*U-QX9DNCF+L@w!mnFKd#QE3jKZ!cNX(1bBgD{tzm|ARb$T^afTAjZf+`gcRp@m!WZi9qo! zhUxKnA;|K4gx(31J!AAAz}k^)eN(a)%+W6fH+^@C-V9(nr|X*o*u9y0HC4gp>cwko z(n7tMj$SU-8^|uMU_{;_en&H10>ignq2C|M_P9{jGtlGFBRwwQ1^*efMqdQ3TcY;@ z{lrcB?}+Pjx`{Fk|Kf@MC5sNvP~a1PyM7P^#l)TZMU-ol>F0yXEIp(jN3B=r?}8*x zzSLXE2+g^sZ;w7*n5g8Pk93*jK3j1@KOMMfeMY}OLf|V{rOyTRE#IT*#-gb=^^yGD z-}Ms-96q_jx}w_^`i}hWTlyoQq8WGfxr8~eOSS$HVF?wL=;!jeFZ46W!@UN`A^>DE zQ~;IJ76X)c|~HY~K$3Et6aLUk@7~mjNpkhP6<-m7X#5 zq&TiLL_(JLT{4Kr;O?uh$W&#(9xIqdf75WA%3allae8uW&U|5*Pm+f~shl&`0*O-O z_{V2tV;hyR5coZ(GbWHVV9I2C6M|ug-FOjHn-*nEhF!DW#<`R;d5spp>-8CNTR{k% zd5OjVfkhvc8P@U}>WU8ld6IDf+yLHbVT3~h*3*m~NiNhC49fd#S28aC=P&4r+MHBc z_{klN2MI~OacAQf)S;bWq#Y{DI2XiOJj^Ioxu-`O9l+k5Y$HA^a5)joF@6e5{8Zy| zkg3~DV`td9Zmw|vkvN!ZOopZA`Nq|dDX%Oxx(M}Pk+B1`OuMf%=7Sk7eQ1oPbXa2S zNM2*19z*m2{`>95Z6HCxF5_g%&Sl1pK;_fD#veh|@9@S;ur~3K5ke0%RAFofr$vwB z#x!6YoiK{6^pmHJxcedGhe~5C$XELZqX7=pw9CdsAfI#9SV)ntGL9gmv<2<+KHWcA zsCvRt+DUv7e)l)yCfL&Qrtu(YVgnb|#;cIk|9oMDriZXz&YAj>f<|aKeY(C8HedUK z_Nd`>+<{%7F+tyzuhN?w6m^pc7dC>&yfmAjtt6p8?0-k*3$F0L(Fs0OL%WY#Ig<{5;JhHrCh9 zGz|h5$~AojW;$J9Y78UIQqx})Gest`0yMvGQUJ;rWWt?GEP`&~2;BS-8jHgVIz#j0 z!D>@GAlG`G3HM+y6tG-k>JBd2ztrRb4+`uuO(zh+GE*Te6$MS$;6g%avEOtEc&spq z7n^Bc3Uu*9l=e^LIDX}E(}w`t^n?l0GvDg8=>Q2ZAX;g91in|zhCgRf^+i*2zS$+y z=R{HfsWRb~zCdu)pQi4>`R8{`&4{GIYLj^Xs{6q7E^v74sc9)t?f1eY7S!P^pwOtp z{~}O;+7v#BI4M^Up0|TzUXft}Pr;n2?q;#uLzP^+~b6~3Qf3+9C5)`4)Bd1qR96cE@wH+%{3-fmHN zIYp`{T+A(RtPGEkk%KY&gYbtyYRua36~sk?CE+o0co$V`bNGI!Pi}1s#}SWJ3XGJ6 z!<$0hwl^F%R0aBr_J@N5@l6kfAEDx(`|9u?;NExbes~VJedeQZ(aYX?D(FOzWX21T&%F_eV2~tvgxDC^uZ+Mi zpF;s)ir57;*nU?;Yf5Hs#C5o9-m4R#rZ`B7P!fCS7JBkZe{~AEEZ+)O!A4CY#5agd znn!#AdRj0euk=!caK;DHQ6M4G%*V8fxJVV3X%XqCra%^&H#TAxct%cy z92BCT8X*ItI%Y>ah13@{Hv*@vkc;F-l&iptjuu9w63+zd6h+7(&4;gxfbvRM*T`f& z!(=^m@2lzxUxBof@jW+2oCovP-5QZa+>pb$X$yZ?88K99zm!GzNiRdcv{T-O^Noaq z#TGYIU|^bZ>TeWP0=-( zBUHrWq8(=3TNQk-ILeH3r7&vkHse%_N5G5M{7PzhWtL`M35r_(y16H?^0c!#iBQrN zbjn+QRX8<=EU>R?Yqs*e(#_Dv0>l~Skwi3Yestc31x*EK(?e(Uy*JF_Cn%`58GE-N z;?I4}ke^HaNoI!68(_xP$2RBl2brT{nc~nVxu!1sj&w^p zh?ikmKsdsBV@mm>mF6}K^4^xc&A*muIZh?@EK3=PeCTb<+rYVhgyk_L8UJWY6UZ$i z##`Q_bevZOH;L zj-IeUbr`I);1W&XHv7Eg4>A(mdK79?Wj?@r2UxeW{8yJO^+6*~uUKAEw5kMJA>OKm z878>bDjpD=%-Vst4E_}qJGfvz4(`Ck_OpfG>A#D+5wotkht$c0Z* ztqa9)l5H^PW^Af$ISFSFB+Zr$YM;^B23-K%!j6HLhlDq$L-RW#W~9T)f8Wg(PuL4) z*r4w%MA8nvB*k4SHU|*ajIlu1zu>95IHV4poaaxc~j6a^MwEYh1{pTm!bui4;D>mqd0{d0A7|>6> zn>IV(=yun(lfVY6Z4dzbg@0`LJ1apebspQ!kPUn7a9P28Fn{pTR~)}F{5wj!c&G(5 zcCo#arMG`Tab&Wqpoe5}+kYcefDf-7e+MHF_^!5He0#W|p1ltRkz~&X{$@0;!QHp1 zeJz;nX$w1@Khx~-P`D+fi`allhCK_!$bQofXEXmrU;9`>1v*dY@53DfLi({jaZI~?mkIoG}k^jx;cj*B%R zy3&`~cTf&iWPcxQRkGUNk4OqTOYFG&BEUD>XqUmL{T6#3$notCdoAJ)!7}>-Xmu_v zw`T#^{eAY`L^OWqLHoxhqTXJo?chj&ywYw2uXbLsU!|C-vcqMWuk+M)n0#HrEpCxl z$TxUwd(QBxKkNqp@yT2E`sDft=&J3zz>52y+B*Y;=7s$)G7=!lIfr=LWMvMVss*vW zQ8m8Rvn|RLT*a=+jb2*?r74$lKg9Zlr9HlVQ)^XgWQ;s7acqwY; zXa%G$v~A8kdB7a*m3h~pp3 zW>c}LP~vz4T<5J)$1k9%e!2FZ49dx~E<>?99VNuFCwDrqqu>w%++~hR5dX>nhl?l( z)+-#L7f=p2Q46eBIt)NP>WbrM3Qv_I749ep+t|`szUY>tHAKb5+Ya2{!WM-6)sBXs zjg}7`V)1bJv7nSKQ$q;HnBNhS|_q6ZT-kHVCPWdNT?2Uiy{L5{3_sYUr=x5 z-}t4{l%|mrz}UB2M8X#bz*1V|En-2G-q5-Ztvz6~@TJ`%ds14-h_sVyjBat?z>CuE zf{m9<02{wPAaXCoNLFNP2bXyj=lVYJLavr$F5)@eo5fHU5lD>hLM0N*__um!y5v9knNIPW5eL1$V3@Z82 zR*F)NM1Cn5vm!DG;uSUtJo|SFt}mu9F{6@l+^G5WRHTg(uQC#jI$c4Xz=N{USd5fB zAAIn1{X*noLRGiW6?pJG9zSc7-wwqr*IW4ae~NqxuDt3>B-{l++N#LO5UcaAN4^cO z=Ks7AiK{ok?%V!|#C;6ml&E(n@)Q{bt0Oyu@IC*H>;NYJ_*o>pMcf;;5?0nJq87ra zjy~!N2yb*o{YeA~dZQi_O$HOAj*}JsY~3jQ31KLflA@~M3Ua4OlvqgaY#!B(QbStQ zO`s?U|i4}rnQTR2spyJhgqCSQVY5Ss%0y^~}0deSak&384z#$); z#(zXl(o*FsY*j_!Z_ET!wLBk*ztpaEJF0>xga7+Zl#<$29n}adllCx5JguHQj{1+R z?RA2y@zIBO(3FsGmjlk+H8=8VI+4Y-}>a?T>M1ienUHuK?e&d%`gZND=E z+LZ_DIPur~l8K!;VEQ?YoHxKTN2fa9p-WX~BT+H0J8=mnD64-bCw^%wj2d-yennx+ zaN@5Yg!Ss)&S5}#U_U2rFA55oHo%F$R1Arb<*bJF=R=)G2o5yJ6rI4|8s(e-NQR7a zBEk~Loa2lDjYUs$+Qmj~%h}F@A^N3UE`IGUkk{oq&jW)u7YZy1U_!5ge_;tLmMF<2=K zLPn}`9wwJd)Z<;}-~54F&Q{dHR_)9L%MSn7i7z37_u3Juulg*{NtR=0(3%eipHhWFu*H^XXe6u#9RoUcS}+!hO}JmFUJS5+>tdbzB1 zxq(xYOSEc~*;PpnMqS~wz}?>j%)Z5KP{Tbg3m;*1^%lS893Saw4w1Io<-(~`U^6Gq zC3=1>ziTs`t``zq_(T$(-mdM!9|GbLSU<_t7(OI#+rkwjdV}>e*L8@5d!1aLfzaE! zx_S^U0V2Z%Z3LKQx$u`D0{--It{ntEnB#)at~uSIuokGN!`*~$Kh-6^$o*la3l|^4 zhC_2)xEmH?DA(1G5aEaAyTq!{zsNNk*0wDbSqK)nR)dw-7rS(DB9?#X!mpJ=)-7?( z0SOAXy1)h@D?4omj zLUCqgNrS0Zk4&QFBuH}}KohT{AosBNFuz1mxNvxW0UeAq-Y)mGY zb@{RL1tJK5a_sMMY57Qc>4o8#U` zo(6N>SY-l%;S1bl0OnrozDzMw)y#z{W z81n<)WSe^=JSg4e?nyKyI)pm`l%KrM-3X$8!eKYKOt8X@d*N8AeC9FtG;+YNeBxTb z_dnx?VklVY9zfW@$_`6FS^b=G{F3k8VwYgQ(NQ zu)h9R_cR!JZn*K^!4yPDx#Rwlf~|IIKzQ3jHv)Z@KXJobcL7^D7Y)n$MV`Q=Elq_! z-OzkHn)oj+RFBD`abHuw+DREb5TbCWI=UOd7&JwTt(|k0=mb)?0(;)*@5rkP{^x|~ zDC*2iil*~GTC|G1KH&YvMDP%0{kj^baZ!+W=eK+ zJ_Vl>Jr$B$U|RHalC*=l(Qx13eG8(8fDkJRqQ3;N%w^HI>4ilE-ixAf*&--^;``C~ zqXt3rJFB8Wp*+7Px($^POQO4ho%?N$P5@>WZH+E~k!5G}Z)5~`%cAc>(fovuPJmsB zhodVgm#T=a09Bv}QO$dQj$LG{ zw6M|S*#_QTZuQ{Xjj*ws!*c@|Z|d?K38COQujeTE=9yRz?v@DTa{Qi80XCtw2YL$n zf=+>x`^N}wXAiVTMZbFR+p~HeI#ncj-T;lgmEvJQ?2%19-vG+gmLi#8ng=UD;HbEh z2jBdK(c-QiT*?UA$?$9h!aI6-u;uX*n)#aN4ODTCm7}s3Iwd-i9&O`q_4kYhrUwl2 ztfQ=x<=G1XUopzF5Fomb^=zkdNRHhR}?1-Jn#iQziqKc z>~zgv=9x)21VtBlDnZgK?|b4wdes`w6~J`oLl30EV2KC6C>A75+U#iv0*>BVV~;*N zJ-E4uMFo^)p09}r`V|R*?-$p@8qZ64cPcvi#BJsO-RF@Jg9B)V2R;homwKb0uqft) zXECwgXD2+kG#BX2KI557bPO9RJ&2U%x`llM*N=H{4bmPrQQO?XsK2`6X+*dPR(Wt< z6gFqx@UW1qhTieu_n~+#SnVkSgMM(|^8&BJLNNWvroaNmF*PpU%ZzoEW94~IA2~-AM zi>{Ih@&kOXSG?&e7I^WGWQF+Kvd{}nT)tw7_gy$;GM9TlCi;e5McxT;ee&*(-o^5X z>%2HgVeIg%r)YP6&1qNbEW7ZBL0=>8&E?1%Ky~7k?=u;60e-X^8(s`clt( zsH)tqVxSEg^v2-V=fcCOu`w=qxY`#Z78xbAV}=8x`g$>Nx(AbD@ZYZxc;B27 z;{!c?*QAEl2Q6Z72Nk0OJ*CAogB;M|^%%%S{Ot}g-GE^0&M{*Ntl;d2zMdw8^N_ru zsO-mh;l)J^C=n24#L$|^iunl8ZXXtdzj_zAcZ`gIMgzd-#PoucGk9tY^dk92Gh#ZD zHC_JnK*f3ChfIN~dc^z~XXQ7|jp z^CJP{a04fZo{#c(Mr$j>4gBu4F=B_jeziZAK}qXk+MqEX$E=VPQxcM3Qw+3A_$#F` z&4H?CXUtEO63awQ@JV}Oeuj{@9g6vtf~bh8`8yh4$Fu~w&z=_X1}kG;xd+BTZxg+f z;kkj*e$*aD^X|l~Cpt{H8*`4*LUl|hl0&${iGfpSc~{S7R58G&;AM|v#B=`CvzU66 zBgSGIg-maX{Q=zaT2!ofmR)qm#!!*yjeS6*3D%0eB>I6PaQYtk-cg%3ku>yV^vAC-t_-R_#SV(oEE5(Yvt~dI`UI6Dw z%8bR=UcrrG2F6~b6q^-`f9)u&ug{L{OReX`PKAUOm=imlityan`>_7sve+j?)L>EU z11Qs;uZqQ=;$nty%`D%-mu1ARk)zgkWU63EEDIi`*%Dg?qkneB!pDWcb6IR#Fl+bn zSO`+x;)uZUKYL*(o?JK>F5&O(i^Yu?L1N8eLFJh5U`1>eoCBl2j*SCn#V?(n^9TCH zJ;pDc&cs5k5Uh;d13`W8hgk7_OzkVNXDQLDVwZwwM}Lg1&+y0Y#wJsSsg7+2SK=No zVz-6X%elB8K!4YCadx7=pegQs;OIkp+yn6U4_tAOG=ko^ntD7wPJI10u1?%i%Dzc) zO$Z*{;)#K;mJh-5cU>xn@8E_d$9)S3n>UFIhf(hqahoW+rNx~Cr@Y!FP7B^qogSwO zF^qr09w#<<;|9giFZi?KXy?v}+dxWI{*&2p2C|#~YHnO33QukvT;od@<;M{Q_;(h? z9R$!fmc%V4Bi%xK;ON8YSctI;CZduS77H(19!EQTQCv1CaK?vmxs)I!aW*p3ukIH( z`ek$B(3Wpk3YCzBZ?`e7oNNk~#mOOD^!ws|2ingL#EpW{*u!zlpqcvL$+#z!iYwzj z1|{vd6!#OrF1s3+O-A63RdId6hC^@0Z3V|P-;IObA3#*cZ6hq8R$s;J=f}T@TSB() zjeh_LpR@5IL$~DdC&6nEY2yDQPj&gJfg{_KaqGNSUQ76P?^k`ijXVpQ;>QumaTF;g z@wKyjL6&b|ix<1qr(N;5Wfn?8-uO~rbWcKjd!h~v8p8#d-niJoZFdfW|9}fJETNE!ggc>Y~FC`E8pO?o+kqv;TDE>L*3Kfd4 z0*LB0@hW1DU`hOQvLxKkucM>o@xSmlH^sx{onKxW&p~*s-Vr~TjDltHUAh;j)iTW*9M)N4~*{mHy&C= z{EWx(Q-R*U&*Ehv8!z$Ddv)V_y-~a`=u>?bWC4|eoDhA%jS89p~?#n;aV#|^d# zvx8srqpy_VKN;xjLjPDV>lM~=e9ys$RC9dL=>`FEeH#Jir-i;&pvQlg__Q!mE%#NE zQLxC@6V#Gf?7Inm)oHD-3=Cf4g9C;)Z1jn)R=L>+Zv=G(a|8U+*;p0n`5u(z^jY}W z?LK&|%*%KApfe1-l=+T;Do!2t)gyFay~5X+WD(ucCV_*;qcE->E7C!&Lr?lv5*q?! zrSBf(n`f7NMFfK`e`Mgm^T~KmyFe=J*?ZOZI)%N;_bzzBx*NW55Hk3OuPtt#?VvJ~e-$i! z6yYz2(EzL84~#61@_$X%gpl*1!JGXqeumqhOV)y3|6Tw)_v9)U8S zZ%cSiNmrJDe`qJ@aOUBJ`IKHNUg5hk0ly^`DrN1(gu7IKw<@6;x;oEqCKN!VExsf2 z47^kec<@ePR?a2PhpKm}J`rxw0Axyxhs{ZrMEojBXvVg;C+?vLc@sCl(ez2JL?~$a zzv?F9U-ycr@h^cB7l04H(<~8wCIYzA5+w$3xhl*;rp-!R3u-UTPK4ACdvX$kgdcrT zLSSXJU8olAC>(iDv-l59PDzwO)A8P%M0n{7n{pGA!0TEpOca~=M+y`1-&zp#Hg$R8 z0!q6@i6uaI=ZA^iC?QG&_CjyJ%M$VLZ3NpC2NPdHk9zgNL`Vuivm!AQtT+5jVlj19 ztV}F}V&KqEiDh8-DOVEnDUYj4#D%D!=)E@*p|aF1%nU5s(-$YWq4~+^+8vFB|Kg9t qRPZq7PU0hKceSWS@!#ot9%jV<;+?(~{t%(&AL=_N<7Bch_5T3Ea=$wO diff --git a/data/support.db-shm b/data/support.db-shm index 79890f8904724401647816d631c66354f737228c..1031b03204388772a562fa20a5eab55436041f95 100644 GIT binary patch literal 32768 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 int: + """Количество незакрытых заявок организации (closed_at IS NULL).""" + async with db.execute( + """ + SELECT COUNT(*) + FROM intradesk_tasks it + JOIN organizations o ON o.intradesk_id = it.client_id + WHERE o.id = ? AND it.closed_at IS NULL + """, + (local_org_id,), + ) as cur: + row = await cur.fetchone() + return row[0] if row else 0 + + async def get_task_for_local_org( db: aiosqlite.Connection, task_id: int, local_org_id: int ) -> dict | None: diff --git a/external/intradesk_api.py b/external/intradesk_api.py index 4962ca0..206a1ee 100644 --- a/external/intradesk_api.py +++ b/external/intradesk_api.py @@ -138,11 +138,15 @@ async def create_intradesk_task( ) return None result = resp.json() - logger.info( - "create_intradesk_task ok: id=%s number=%s", - result.get("id"), - result.get("tasknumber") or result.get("number"), + # API может вернуть как "Number"/"Id" (PascalCase), так и "number"/"id" + task_id = result.get("id") or result.get("Id") or result.get("ID") + task_number = ( + result.get("tasknumber") + or result.get("number") + or result.get("Number") + or result.get("TaskNumber") ) + logger.info("create_intradesk_task ok: id=%s number=%s", task_id, task_number) return result except Exception as exc: logger.exception("create_intradesk_task error: %s", exc)