Оновлення продукту

Release Notes — 26 квітня 2026

Bartłomiej Głowacki · CAIO, керівник напряму AI та R&D
Release Notes — 26 квітня 2026

19 днів тому ми випустили великий реліз із діагностичним модулем і аналізом просодії. Відтоді команда внесла ще 295 змін — і вони не дрібні. У цьому релізі ви можете записати разову (ad-hoc) сесію ще до приходу пацієнта, ваші нотатки зливаються з роботою AI та транскрипцією поруч у трьох колонках, публічний профіль терапевта повертається на повну силу, а мобільний застосунок отримав темну тему. Під капотом ми пройшли етап посилення безпеки за SOC 2 / HIPAA, DDD-аудит і повну псевдонімізацію даних пацієнтів на боці AI.

💚 Дякуємо команді, яка провела цей реліз — звітами, тестами, кодом і терпінням:

  • Bohdan — разові (ad-hoc) сесії, ліміти пакетів і пільговий період, DDD-аудит, інвойси KSeF, десятки виправлень (SCRUM-756, 815, 1267, 1268, 1276, 1280-1290, 1293, 1309-1316, 1353-1357, 1366, 1388, 1391, 1392)
  • Bartek — тристороннє злиття, 9 окремих CBT-аналізів, когнітивні викривлення, лічильник сесій пакета (SCRUM-1266, 1320, 1338, 1368-1375, 1385, 1386)
  • Ewa Cylwik / Ewa — Beck PDF, друга сесія AITS для того самого пацієнта, темна тема та порожній стан на мобільному, багатомовна розсилка, кольори інтерфейсу, унікальність email пацієнта (SCRUM-883, 898, 902, 1089, 1094, 1297, 1304, 1307, 1319)
  • Joanna — повторюваний календар, приховування Zoom, своєчасне скасування, самоспостереження замість оцінки якості сесії (SCRUM-789, 874, 918, 919, 1005)
  • А також Bartlomiej за когнітивні викривлення та лічильник сесій, який став основою нової моделі підписки

1. ⚡ Разові (ad-hoc) сесії — запис ще до приходу пацієнта

Якщо вам колись доводилося швидко вмикати диктофон — тому що пацієнт прийшов без попередження, тому що це разова консультація, тому що це зустріч з людиною, якої ще немає у ваших записах — новий модуль ad-hoc сесій повністю знімає цю проблему.

  • Кнопка швидкого запису (Quick Record Button) у веб-панелі, у PWA на телефоні та в застосунку MAUI — один клік запускає запис ще до того, як ви заповните дані пацієнта
  • AdHoc Inbox — окремий лоток для непризначених записів, поки ви не вирішите, куди їх віднести
  • AssignPatientModal — призначте запис наявному пацієнту або створіть нового прямо з цього лотка
  • Resume / Re-enter room — завершіть запис сесії, розпочатої раніше
  • Зберігання “сиріт” + автозавершення — сесії, не призначені протягом X днів, автоматично закриваються, щоб лоток залишався охайним
  • Відео “Почати без пацієнта” — у кімнаті LiveKit можна почати сесію, не конфліктуючи з наявним пацієнтом; ad-hoc-запис потім потрапляє до лотка

Розділ прихований за кодом PromptyAI в налаштуваннях — за замовчуванням вимкнений, для користувачів, які спершу хочуть побачити решту. Спроєктовано та реалізовано Bohdan.

2. 📊 Ліміти пакетів і пільговий період — прозора підписка

Підписки пройшли повний перегляд. Старі плани Starter/Standard деактивовані, їх замінили Start / Practice / Pro — розраховані під реальний обсяг сесій на місяць.

  • Лічильник сесій на дашборді — видно, скільки сесій ви використали цього місяця і скільки залишилось у пакеті
  • Листи про ліміт — автоматичні сповіщення при 80% і 100% використання
  • Пропозиція апгрейду — при досягненні ліміту ви отримуєте м’яку пропозицію змінити план замість жорсткого блокування
  • Ціни зі Stripe + знижки — ціна, яку ви бачите в застосунку, надходить безпосередньо зі Stripe із застосованими активними знижками (код бета-тестера не спливає)
  • Скасування підписки в застосунку — скасування прямо в застосунку, без листа до підтримки
  • 14-денний пільговий період — якщо платіж не пройшов, ви отримуєте 14 днів доступу лише до власного акаунта (без перегляду даних пацієнтів), з листами на T+0 і T+13. Реальна втрата даних настає лише за два тижні
  • Банер підписки — зрозуміле повідомлення вгорі застосунку, без порожньої смуги між меню та алертом
  • Симулятор ліміту сесій — у панелі PromptyAI є тестовий режим, де видно, як застосунок поводиться за повністю використаного пакета

Спільна робота Bartlomiej (лічильник і ліміти, SCRUM-1266) і Bohdan (підписка, пільговий період, пропозиція апгрейду — SCRUM-756, SCRUM-1366, SCRUM-1391, SCRUM-1392).

3. 📝 Тристороннє злиття нотаток — терапевт, AI і транскрипція в одному вигляді

Це одна з найбільших архітектурних змін під капотом, але ефект на щоденну роботу дуже помітний: кожне поле нотаток (Notes, SessionSummary, розділи концептуалізації) тепер окремо запам’ятовує, що написав терапевт, що згенерував AI і що надійшло з диктофона / транскрипції.

  • Notes 3-way — вигляд нотаток показує три джерела поруч: ваш текст, пропозиції AI та автоматичну транскрипцію, а ви обираєте, що залишити
  • SessionSummary 2-way + злиття JSON — у підсумку сесії ви об’єднуєте свою роботу з аналізом AI в єдиний зв’язний документ
  • Розділювач за часом (timestamp) — коли ви вручну редагуєте поле AI, система залишає видимий слід того, коли і чий це фрагмент
  • Мітка [AI] з першої генерації — ваші поля не змішуються зі згенерованими
  • SourceBadge — кольорова плашка з іконкою, що показує джерело фрагмента, замість тексту ВЕЛИКИМИ літерами
  • Заміна розділу AI замість додавання — коли ви запитуєте повторну генерацію підсумку, AI замінює розділ замість того, щоб складати під ним ще одну копію

Спроєктовано та реалізовано Bartek (SCRUM-1320, SCRUM-1368-1375). Під капотом: повна локалізація 8 мовами та нові DDD-контексти.

4. 🔍 CBT-аналізи — 9 окремих звітів за запитом

Стара монолітна функція “згенерувати CBT-аналіз” була поділена на 9 окремих пунктів, які терапевт запускає тоді, коли вони справді потрібні. Менше очікування, більше контролю.

  • 9 незалежних аналізів — кожен генерується окремо, за запитом
  • Шестірня редагування промпту — натисніть на шестірню поруч із кожним аналізом, щоб побачити/змінити промпт, який використовує AI
  • Розділ CBT-АНАЛІЗИ за кодом PromptyAI — розділ доступний після введення коду в налаштуваннях, для користувачів, які тестують нові функції

Когнітивні викривлення отримали власний вигляд (повідомлено Bartlomiej, SCRUM-1385):

  • Подання даних замість звіту AI — ви бачите конкретні цитати з транскрипції, позначені AI, а не згенероване на їх основі оповідання
  • Усі цитати після розгортання — без фільтра за діапазоном дат, розгортання показує все
  • Доступно в головному меню — у розділі Концептуалізація v2

Старий промпт COGNITIVE_DISTORTIONS_INVENTORY видалено (SCRUM-1386).

5. 🌐 Публічний профіль терапевта — повне оновлення з панелями редагування

Публічний профіль під брендом aitherapy.support було повністю перебудовано.

  • 3 нові панелі редагування — біографія, спеціалізації, контактні дані редагуються в елегантних бічних панелях
  • Режим редагування власником — під час перегляду власного профілю в авторизованому стані кнопки редагування завжди під рукою
  • Роки досвіду — нове поле YearsOfExperience, видиме в публічному профілі
  • Ребрендинг кольору — палітра шавлія/лаванда під брендом aitherapy.support
  • Розділ “Ваша конфіденційність” прибрано — він дублював інформацію; GDPR зазначено у футері
  • Іконки Lucide — сучасна, чиста типографіка іконок

Під капотом додано публічний ендпоінт GET /api/public/therapists — що повертає терапевтів з активними публічними профілями. Основа для майбутнього каталогу терапевтів.

6. 🎥 Відеосесії — PiP, зміна камер, виправлене розмиття фону

Відео отримало набір виправлень, які помітить будь-який терапевт, що проводить сесії через застосунок.

  • PiP / згортання — згорніть кімнату відео в плаваючий міні-плеєр і перевірте нотатки в іншій вкладці без розриву з’єднання. Мікрофон і камера продовжують працювати
  • Зміна камер — перемкніть, хто відображається в головному вікні, а хто в міні-вікні, одним кліком
  • Відновлення з PiP — при поверненні зі згорнутого стану ви пропускаєте лобі (PreJoinLobby) і одразу потрапляєте в розмову
  • Аудіо для кожного учасника окремо для діаризації — транскрипція розділяє тих, хто говорить, навіть у режимі PiP
  • Виправлено розмиття фону — CSP блокував MediaPipe WASM; розмиття тепер працює в один клік
  • Чистіший інтерфейс сесії AITS — AI-асистент зник з панелі інструментів, менше візуального шуму
  • Оверлей PiP клікабельний — прибрано pointerEvents:none і overflow:hidden, кнопки PiP реагують на кліки
  • Кнопка “Приєднатися до сесії” — була прихована перевизначенням CSS, тепер видима
  • Застаріле замикання (stale closure) в handleMaximize — виправлено; розгортання з PiP більше не видає помилку

7. 📐 Концептуалізація Beck v2 та ABC — PDF, перемикач версій, редагування промпту

  • Beck та ABC v2 PDF — виправлено форматування та автоматичне включення в матеріали сесії (повідомлено Ewa, SCRUM-1297)
  • Beck PDF — розділи лише з рамкою, кольорові спеціалізації, охайні ініціали, SVG-стрілка між розділами
  • Перемикач ABC v1/v2 у Концептуалізації v2 — виберіть, яку версію ABC відображати
  • Шестірня редагування промпту в ABC v2 — змініть промпт AI на вкладці ABC v2
  • Експорт у PDF для AI-аналізів і ABC за сесією — окремі аналізи експортуються окремо
  • Плюралізація міток ABC 8 мовами — таблиця концептуалізації тепер має правильні форми множини
  • Виправлено порожні стовпці ABC — бекенд повертає правильні назви властивостей у множині

8. 🧾 Інвойси та KSeF — вибір платежів + скінченний автомат станів

Систему виставлення рахунків перероблено для відповідності KSeF (польській національній системі електронного інвойсингу).

  • Інвойс з вибраних платежів — виберіть платежі, і система створить із них єдиний рахунок (знімок + зовнішній ключ Payment)
  • Точка входу “Виставити рахунок” у фінансовому розділі терапевта — швидкий доступ із дашборда
  • Видалення позиції в модальному вікні виставлення рахунку — виправляйте помилки на льоту
  • Розділення KSeF dev/prod — пісочниця та продакшн працюють на окремих облікових даних
  • Скінченний автомат станів інвойсу (SCRUM-1357, Bohdan) — Чернетка → Виставлений → Надісланий → Скасований, з обмеженням у БД на неприпустимі переходи
  • AE KsefToken — токен KSeF зашифровано через Always Encrypted

Спільна робота Bohdan (SCRUM-1357, SCRUM-1388).

9. 📅 Календар, повторювані сесії та локації

Тижневий і повторюваний календар отримав десятки невеликих, але помітних покращень — більшість із них повідомили Joanna та Ewa.

  • Сесії з 22:00 — були невидимі в тижневій сітці, тепер показуються до кінця дня
  • Усі години в сітці повторюваних слотів (SCRUM-874, Joanna)
  • Своєчасно скасована сесія — не відображається як “Не оплачено” (SCRUM-918, Joanna)
  • Мітка повторення поруч із повторюваним слотом (SCRUM-919, Joanna) — ви бачите “щотижня”, “раз на два тижні” поруч із кожною сесією, що повторюється
  • Приховування інтеграції з Zoom з інтерфейсу (SCRUM-789, Joanna) — Zoom більше не підтримується як відеоканал
  • Спливаюче вікно сесії в календарі — більше не ховається за межами екрана
  • TherapistAvailability — автозбереження при кожній зміні (затримка 800 мс), кнопка збереження не потрібна
  • AddSessionModal — опція “створити сесію поза годинами доступності” — винятки можуть примусово задати слот
  • Статус “Не з’явився” (No-show) (NoShow=5) — новий статус, який можна встановити навіть із завершеної або скасованої сесії
  • RecurringSessionsCalendar — підсумкові плитки над легендою та сіткою

Локації терапевта отримали канали онлайн-зустрічей для кожної локації:

  • Режим на місці (onsite) — поля адреси та міста для очних локацій
  • Перемикач onsite/online замість чекбокса — зрозуміліший вибір режиму
  • Онлайн-канал для кожної локації — різні локації можуть мати різні канали (AITS, Google Meet, зовнішнє посилання), автоматично поширювані на сесії
  • Постійні кімнати зустрічей для кожного пацієнта — у кожного пацієнта є постійне посилання на кімнату AITS та окреме зовнішнє посилання, видиме в налаштуваннях пацієнта
  • Видалення локації — виправлено (зникала з БД, але залишалась у списку інтерфейсу)

І нарешті тип зустрічі в повторюваних сесіях — виправлено поширення MeetingType і MeetingLink з конфігурації повторюваної серії на кожну згенеровану сесію та на листи-нагадування (SCRUM-902, Ewa).

10. 📱 Мобільний застосунок — темна тема, AdHoc Inbox, шліфування

Мобільний застосунок перейшов на версію 1.5.0 (збірка 18) з великою кількістю змін, видимих користувачу, та кількома правками щодо підпису для App Store / Play Store.

  • Темна тема — повний темний режим із читабельними заголовками груп (SCRUM-1089, Ewa + SCRUM-815)
  • Налаштовувані нагадування — виберіть, коли ви хочете отримувати сповіщення про сесію
  • Мобільне нагадування за 15 хвилин — нагадування за 15 хвилин до сесії + попередження, якщо системні сповіщення вимкнено (SCRUM-815, Bohdan)
  • Порожній стан для списку сесій — замість порожнього екрана насиченіший онбординг (SCRUM-1094, Ewa)
  • Банер автооновлення — коли застосунок виявляє оновлення, показується запрошувальний банер оновлення
  • AdHoc Inbox + AssignPatient + швидкий старт у MAUI (SCRUM-1289, Bohdan)
  • Швидкий старт у PWA на телефоні для разових (ad-hoc) сесій (SCRUM-1286, Bohdan)
  • Адаптивний веб-вигляд для телефону — на десктопі без змін, на телефоні макет адаптується під вузький екран
  • Обробник deep-link в iOS — використовує BindingContext, реєстрацію URL-схеми
  • Рядки призначення NSLocation в iOS — виправлення ITMS-90683 (App Store відхиляв збірку без них)
  • Android AAB — явний крок jarsigner
  • Матеріали App Store Connect і Google Play — повний пакет плюс аудит WCAG 2.2

11. 🔐 Безпека: SOC 2 / HIPAA, MFA, повна псевдонімізація для AI

Під продуктовим шаром ми провели повне посилення безпеки за SOC 2 та HIPAA плюс DDD-аудит із п’ятьма конкретними результатами.

  • Повторна перевірка MFA для критичних операцій — для чутливих дій (зміна пароля, експорт даних) потрібне повторне підтвердження через MFA
  • Резервні коди для MFA — коди на випадок екстреної ситуації, якщо ви загубили телефон
  • IAnonymizedLlmGateway (SCRUM-1353, Bohdan) — усі виклики AI-моделей тепер проходять через псевдонімізувальний шлюз. Імена, дати, місця замінюються псевдонімами до того, як покидають застосунок; AI отримує лише анонімізовану версію
  • Псевдонімізація email/SMS-сповіщень (SCRUM-1354) — шаблони повідомлень також не розкривають дані пацієнта при надсиланні
  • OAuth-токени Google/Zoom зашифровано через Always Encrypted (SCRUM-1355) — токени доступу інтеграцій зашифровано на рівні стовпців
  • Прапорець Patient.PendingConsent (SCRUM-1356) — пацієнти без активної згоди потрапляють у потік примусового оформлення + значок на фронтенді
  • Скінченний автомат станів інвойсу (SCRUM-1357) — статуси інвойсу незмінні в неприпустимих напрямках, це забезпечується на рівні БД
  • Незмінність аудиту + знімок користувача у 3 таблицях аудиту — журнал дій не можна змінити постфактум
  • DeanonymizationAuditLog — кожне використання даних пацієнта після деанонімізації логується разом зі знімком email і displayName користувача, який виконав цю дію
  • Видалено захардкоджені секрети — усі ключі та паролі з appsettings.json перенесено до Azure Key Vault
  • Always Encrypted для всіх текстових даних користувача (ADR-0018) — архітектурний напрям затверджено; решта таблиць мігрує в наступному релізі
  • Аналіз прогалин відповідності ISO/IEC — зіставлено 95 прогалин за 9 стандартами з планом усунення

Підкріплено повним DDD-аудитом (сесії 1-8, фази 1-6) — реструктуризація доменних контекстів, документація архітектури, ADR, mermaid-діаграми + тести, посібники, інтеграція з Confluence.

12. 👤 Портал пацієнта — аналізи в розділі “Цілі”, матеріали, кращий попередній перегляд

  • Концептуалізація Beck у вкладці “Цілі” пацієнта — коли ви публікуєте концептуалізацію, пацієнт бачить її у своєму порталі
  • Публікація аналізів у портал пацієнта + налаштування сповіщень (SCRUM-1338, Bartlomiej) — контроль того, що і коли отримує пацієнт
  • Попередній перегляд PDF у порталіiframe замість embed, CSP дозволяє blob: (PDF завантажуються)
  • Попередній перегляд порталу пацієнта з вигляду терапевта — побачити те, що бачить пацієнт (обрамлення в обгортці, дашборд 1:1)
  • Матеріали сесії в Azure Blob Storage — SessionMaterial зберігається як blob, більше немає локальної файлової системи
  • Розділ згод / документів + джерело реєстрації в налаштуваннях пацієнта
  • Глобальна унікальність email пацієнта (SCRUM-898) — другий пацієнт із тим самим email отримує 409 і закриття модального вікна (SCRUM-898, Ewa)
  • Сідер шаблонів сповіщень для SK, CA, RU, UK, LT (SCRUM-883, Joanna) — повна багатомовна розсилка
  • Резолвер із відкатом до значення платформи за замовчуванням — якщо терапевт не перевизначив шаблон, надсилається багатомовний шаблон за замовчуванням (SCRUM-883)

13. 🎙️ Транскрипція — надійний запис, дозапис, реальний час із діаризацією

  • Дозапис до наявної транскрипції — продовжуйте запис у тій самій сесії; сегменти дозаписуються (намір зберігається під час перезавантаження сторінки)
  • Аудіо для кожного учасника окремо для діаризації — відеотранскрипція розділяє тих, хто говорить, на незалежних доріжках
  • Транскрипція переживає PiP — згортання кімнати не переривває запис
  • Мова транскрипції з налаштувань сесії — STT використовує мову, встановлену вами для пацієнта
  • Автооновлення транскрипції при фокусі / зміні видимості / поверненні з відео
  • Підтвердження при зупинці запису < 2с — захист від порожнього WAV через випадковий клік
  • Значок “Надсилається” у списку сесій — видно, коли запис завантажується
  • Реальний час із діаризацією у відеосесії — раніше не запускався; тепер працює
  • Резервне копіювання в OPFS + Opus 48 kbps — запис також зберігається локально в OPFS як резерв, параметри аудіо уніфіковано
  • Пряме завантаження аудіо через SAS (SCRUM-1276, Bohdan) — аудіо йде безпосередньо в Azure через SAS-URL, минаючи бекенд
  • m4a нативно в Azure Speech — m4a обробляється нативно, без конвертації
  • Визначення формату за магічними байтами (SCRUM-1311, Bohdan) — коли Content-Type=application/octet-stream, формат визначається за вмістом файлу
  • Хаб без тексту в БД — realtime-хаб SignalR більше не зберігає текст у БД; finishPending використовує multipart POST, як у MAUI
  • Виправлення SignalR 1006 — прибрано skipNegotiation, щоб Azure SignalR працював + налаштування keep-alive
  • Мітка [AI] з першої генерації + надійний пошук мітки

14. 💬 Сповіщення, налаштування пацієнта, дрібні покращення UX

  • NotificationTemplatesAdmin — перемикач HTML/Text у редакторі листів
  • NotificationSettings — попередній перегляд листа відображає HTML із запасним варіантом
  • PromptEditModal — перебудовано: вкладки, вибір моделі, обов’язкові назви версій
  • Скидання прапорця Hide_dev_ui при виході — прапорці розробника не зберігаються між сесіями
  • Тестовий пацієнт Ann Fauler — англомовний аналог польської Anna Pełnialska для демонстрацій лише англійською
  • Перемикач режиму презентації в Dev UI — швидкий перехід у режим презентації
  • Звіт про помилку — вкладення Jira + мітка автора звіту + центрована кнопка “Надіслати”
  • Виправлено цикл оновлення авторизації (auth-refresh loop) — переривання запитів і повернення на сторінку входу при 401
  • Банер “Сервер запускається” — під час холодного старту (scale-to-zero) показується повідомлення замість порожньої сторінки
  • Шкала оцінки сесії — самоспостереження замість оцінки якості + застереження (SCRUM-1005, Joanna)
  • Колір кнопки “Згорнути” змінено на кобальтово-фіолетовий (SCRUM-1307, Ewa)
  • Колір мітки “Транскрипція” змінено з червоного на зелений (SCRUM-1304, Ewa)
  • “Записати зараз” → “Записати разову (AdHoc) сесію” — точніша назва кнопки
  • Пісочниця із зеленою стрічкою у верхньому лівому куті + префікс [SANDBOX] у заголовку — щоб уникнути плутанини середовищ, плюс повторюване клонування PROD → Sandbox (Azure IaC + скрипти)

✅ Чек-лист QA — що перевірити після деплою

ФункціяПеревірка
Разова (ad-hoc) сесія — Quick RecordНатисніть Quick Record на дашборді або в PWA — запис починається одразу, сесія потрапляє в AdHoc Inbox
AssignPatient в AdHoc InboxВідкрийте разовий запис — можна призначити наявному пацієнту або створити нового
Ліміт пакетаДашборд показує лічильник сесій за поточний місяць і скільки залишилось у пакеті
Пільговий період після невдалого платежуСимулятор підписки в PromptyAI — викличте невдалий платіж, ви отримуєте доступ лише до акаунта на 14 днів
Тристороннє злиття нотатокУ деталях сесії поле Notes показує три джерела поруч (терапевт / AI / транскрипція); можна вибрати, що залишити
9 CBT-аналізівВкладка CBT-аналізів показує 9 окремих пунктів; кожен генерується за запитом; у кожного є шестірня редагування промпту
Публічний профіль — панеліВідкрийте свій публічний профіль в авторизованому стані — видно панелі редагування біографії, спеціалізації, контактів
Відео PiPПід час відеосесії натисніть згорнути — вікно згортається в міні-плеєр, мікрофон продовжує працювати, ви повертаєтесь без лобі
Розмиття фонуУ лобі відео увімкніть розмиття фону — працює одразу, без помилок CSP
PDF концептуалізації BeckЗгенеруйте PDF концептуалізації — він також з’являється в матеріалах сесії
Перемикач ABC v1/v2У концептуалізації v2 можна перемкнути джерело ABC між версією 1 і 2
Інвойс з вибраних платежівВиберіть кілька платежів і натисніть “Виставити рахунок” — зі знімка створюється єдиний рахунок
Повторювана сесія з Google MeetДруга та третя сесії серії правильно налаштовані на Google Meet, а лист містить правильне посилання
Сесії з 22:00Тижневий календар показує сесії, заплановані на 22:00 і пізніше
Статус “Не з’явився”У завершеній / скасованій сесії можна змінити статус на “Не з’явився”
Темна тема на мобільномуУ мобільному застосунку перемкніться на темну тему — заголовки груп читабельні
AdHoc Inbox на мобільномуМобільний застосунок показує лоток разових сесій і дозволяє призначити пацієнта
Повторна перевірка MFAПід час зміни пароля застосунок знову запитує MFA
Псевдонімізація для AIУ логах видно, що дані пацієнта передаються в AI у вигляді псевдонімів
Матеріали сесії як blobЗавантажте файл у матеріали сесії — він потрапляє в Azure Blob Storage, а не на локальний диск
Глобальна унікальність email пацієнтаДодайте другого пацієнта з тим самим email — ви отримаєте 409, і модальне вікно закриється
Банер “Сервер запускається”Після тривалого простою вхід у застосунок показує банер замість порожньої сторінки

🛠️ Що ми виправили — дрібний шрифт

Окрім великих функцій, було усунуто ~80 звітів від тестувальників і користувачів. Основні моменти:

  • Оверлей PiP не був клікабельним — виправлено
  • Застаріле замикання в handleMaximize — розгортання з PiP більше не видає помилку
  • PiP зберігає з’єднання — раніше room.disconnect() спрацьовував під час переходу між повноекранним режимом і PiP
  • Кнопка “Приєднатися до сесії” була прихована перевизначенням CSS — розкрито
  • Друга сесія AITS для одного пацієнта (SCRUM-1319, Ewa) — прибрано UNIQUE INDEX на Session.VideoInviteToken
  • Нумерація сесій у концептуалізації пропускає скасовані (SCRUM-1267, Bohdan)
  • Null-safe доступ до Payment у GetSessionDetailsAsync (SCRUM-1268, Bohdan)
  • Колізія тестової сесії Anna Pełnialska з Jan о 14:00 — виправлено в сідері
  • Уповільнення дашборда — null-safe маппінг у GetTodaySessionsAsync та GetSessionDetailsAsync
  • Автооновлення після завершення запису з мікрофона — працює
  • Резервний batch-режим не перезаписує текст із попередніх записів і не блокує інтерфейс статусом Processing
  • Мова транскрипції з налаштувань сесії — STT враховує уподобання пацієнта
  • CSP — дозволено *.clarity.ms, blob: у connect-src, аналітику в script-src
  • Цикл оновлення авторизації — переривання запитів після 401 і повернення на сторінку входу
  • CSP MediaPipe WASM — розмиття фону працює
  • Стрічка DEV/SANDBOX також на Azure FQDN, не лише на кастомному домені
  • Хибний тост “Помилка транскрипції” під час входу в сесію — прибрано
  • Тост замість червоного банера при невдалій транскрипції + прибрано кнопку “Resample”
  • Реальний час із діаризацією у відеосесії — запускається коректно
  • AI-стрімінг — окремий AbortController на кожен обробник замість спільного (BodyStreamBuffer was aborted)
  • Nginx non-root + Azure Container Apps — кілька ітерацій, щоб це запрацювало
  • Розподілене блокування (sp_getapplock) — міграції під час запуску більше не конфліктують при паралельних деплоях
  • DbUpdateConcurrencyException у пулері batch-транскрипції (SCRUM-1313, Bohdan)
  • BlobNotFound як очікуваний стан (SCRUM-1314, Bohdan)
  • Не-JSON payload у вебхуку Stripe (сканери / боти) — обробляються без помилок (SCRUM-1315, Bohdan)
  • Визначення формату аудіо за магічними байтами (SCRUM-1311, Bohdan)
  • Стійке завантаження аудіо + захисний Content-Type (SCRUM-1293, Bohdan)
  • Міграція зовнішнього ключа ActiveEmbeddingModelId → ON DELETE NO ACTION
  • Деплой dev-клієнта — CACHE_BUST=github.sha примусово перезбирає фронтенд

Це найбільший і найнасиченіший реліз цієї весни. Якщо якась функція здається знайомою — це тому, що це був ваш запит або ваш тікет. Дякуємо за кожен звіт і кожен скриншот.

Статтю підготувала команда Therapy Support

Therapy Support · Почніть уже сьогодні

Поверніть час для себе
та своїх пацієнтів

Ви КПТ-терапевт?
Подивіться, як платформа підтримує вашу щоденну роботу.
Підсумки сесій, що організовують клінічний матеріал. Адміністрування, яке не заважає.