Актуализации на продукта

Бележки по изданието — 26 април 2026

Bartłomiej Głowacki · CAIO, ръководител на AI и R&D
Бележки по изданието — 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 — 3-странно сливане, 9 отделни CBT анализа, когнитивни изкривявания, брояч на сесиите в пакета (SCRUM-1266, 1320, 1338, 1368-1375, 1385, 1386)
  • Ewa Cylwik / Ewa — Beck PDF, втора AITS сесия за същия пациент, тъмна тема и празно състояние на мобилно, многоезична поща, цветове на UI, уникалност на имейла на пациента (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 дни, се затварят автоматично, за да остане папката подредена
  • Видео „Start without patient” — в 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. 📝 3-странно сливане на бележки — терапевт, AI и транскрипция в един изглед

Това е една от най-големите архитектурни промени под капака, но ефектът върху ежедневната работа е силно видим: всяко поле за бележки (Notes, SessionSummary, секциите на концептуализацията) вече пази отделно какво е написал терапевтът, какво е генерирал AI и какво е дошло от диктофона / транскрипцията.

  • Notes 3-way — изгледът на бележките показва три източника едновременно: вашия текст, предложенията на AI и автоматичната транскрипция, а вие избирате какво да запазите
  • SessionSummary 2-way + JSON сливане — в обобщението на сесията сливате своята работа с анализа на AI в един свързан документ
  • Разделител с времеви печат — когато редактирате ръчно поле на AI, системата оставя видима следа кога и чий е фрагментът
  • Маркер [AI] от първото генериране — вашите полета не се смесват с генерираните
  • SourceBadge — цветно етикетче с икона, показващо откъде идва фрагментът, вместо текст с ГЛАВНИ БУКВИ
  • Замяна на секцията от AI вместо добавяне — когато поискате повторно генериране на обобщението, AI заменя секцията, вместо да натрупва още едно копие отдолу

Проектирано и пуснато от Bartek (SCRUM-1320, SCRUM-1368-1375). Под повърхността: пълна i18n на 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; размазването вече работи с едно кликване
  • По-чист UI на AITS сесията — AI асистентът изчезна от лентата с инструменти, по-малко визуален шум
  • PiP наслагването е кликваемо — премахнати pointerEvents:none и overflow:hidden, бутоните в PiP реагират на кликове
  • Бутонът „Join session” — беше скрит от CSS override, вече се вижда
  • 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 (полската национална система за е-фактуриране).

  • Фактура от избрани плащания — избирате плащания и системата създава единна фактура от тях (моментна снимка + FK към Payment)
  • Точка за влизане „Издай фактура” в изгледа за финанси на терапевта — бърз достъп от таблото
  • Премахване на позиция в прозореца за издаване на фактура — коригирате грешки в движение
  • Разделяне на dev/prod за KSeF — пясъчникът и производствената среда работят с отделни идентификационни данни
  • Машина на състоянията на фактурата (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 от UI (SCRUM-789, Joanna) — Zoom вече не се поддържа като видео канал
  • Изскачащ прозорец на сесията в календара — вече не се скрива извън екрана
  • TherapistAvailability — автоматично запазване при всяка промяна (дебаунс 800 мс), не е нужен бутон за запазване
  • AddSessionModal — опция „създай сесия извън часовете на наличност” — изключенията могат да наложат слот
  • Статус „No-show” (NoShow=5) — нов статус, задаваем дори от завършена или отменена сесия
  • RecurringSessionsCalendar — обобщаващи плочки над легендата и мрежата

Локациите на терапевта получиха канали за онлайн срещи по локация:

  • Режим на място — полета за адрес и град за локации на живо
  • Превключвател на място/онлайн вместо чекбокс — по-ясен избор на режим
  • Онлайн канал по локация — различните локации могат да имат различни канали (AITS, Google Meet, външен линк), автоматично разпространявани към сесиите
  • Постоянни стаи за срещи по пациент — всеки пациент има постоянен линк към AITS стая и отделен външен линк, видим в настройките на пациента
  • Изтриване на локация — поправено (изчезваше от базата данни, но оставаше в списъка на UI)

И накрая типът среща в повтарящите се сесии — поправено разпространение на 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)
  • Празно състояние за списъка със сесии — вместо празен екран, по-богат onboarding (SCRUM-1094, Ewa)
  • Банер за автоматично опресняване — когато приложението открие обновление, показва канещ банер за опресняване
  • AdHoc Inbox + AssignPatient + бърз старт в MAUI (SCRUM-1289, Bohdan)
  • Бърз старт в PWA на мобилно за ad-hoc сесии (SCRUM-1286, Bohdan)
  • Отзивчив уеб изглед за телефон — десктопът е непроменен, на телефон оформлението се адаптира към тесния екран
  • Обработчик на дълбоки връзки (deep-link) в iOS — използва BindingContext, регистрация на URL схема
  • iOS NSLocation текстове за целта — поправка на 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 получава само анонимизираната версия
  • Псевдонимизация на имейл/SMS известията (SCRUM-1354) — шаблоните на съобщенията също не изтичат данни на пациенти при изпращане
  • OAuth токени Google/Zoom, криптирани с Always Encrypted (SCRUM-1355) — токените за достъп на интеграциите са криптирани на ниво колона
  • Флаг Patient.PendingConsent (SCRUM-1356) — пациенти без активно съгласие получават поток за налагане + значка във фронтенда
  • Машина на състоянията на фактурата (SCRUM-1357) — статусите на фактурите са неизменяеми в невалидни посоки, наложено на ниво база данни
  • Неизменяемост на одита + снимка на потребителя в 3 таблици за одит — журналът на действията не може да бъде променен впоследствие
  • DeanonymizationAuditLog — всяко използване на данни на пациент след деанонимизация се записва заедно с моментна снимка на имейла + показваното име на потребителя, извършил го
  • Премахнати твърдо кодирани тайни — всички ключове и пароли от appsettings.json преместени в Azure Key Vault
  • Always Encrypted за всички текстови данни на потребителя (ADR-0018) — архитектурната посока е одобрена; следващи таблици се мигрират в следващото издание
  • Анализ на пропуските спрямо ISO/IEC съответствие — картографирани 95 пропуска в 9 стандарта, с план за отстраняване

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

12. 👤 Портал на пациента — анализи в „Цели”, материали, по-добър преглед

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

13. 🎙️ Транскрипция — надежден запис, добавяне, реално време с диаризация

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

14. 💬 Известия, настройки на пациента, дребни подобрения на UX

  • NotificationTemplatesAdmin — превключвател HTML/Текст в редактора на имейли
  • NotificationSettings — прегледът на имейла рендерира HTML с резервен вариант
  • PromptEditModal — преработен: раздели, избор на модел, задължителни имена на версии
  • Нулиране на флага Hide_dev_ui при изход — флаговете за разработчик не се пренасят между сесиите
  • Тестов пациент Ann Fauler — английски еквивалент 1:1 на полската Anna Pełnialska за демонстрации само на английски
  • Превключвател на режим на представяне в Dev UI — бързо превключване в режим на представяне
  • Доклад за грешка — прикачени файлове в Jira + етикет на докладващия + центриран бутон „Изпрати”
  • Цикъл на опресняване на автентикацията — поправено — прекъсване на заявките и връщане към вход при 401
  • Банер „Сървърът стартира” — при студен старт (scale-to-zero) показваме известие вместо празна страница
  • Скала за оценка на сесията — самооценка вместо оценка на качеството + дисклеймър (SCRUM-1005, Joanna)
  • Цветът на бутона „Минимизирай” — сменен на кобалтово виолетово (SCRUM-1307, Ewa)
  • Цветът на етикета „Транскрипция” — от червено на зелено (SCRUM-1304, Ewa)
  • „Record now” → „Запиши AdHoc сесия” — по-точно име на бутона
  • Пясъчник със зелена лента в горния ляв ъгъл + префикс [SANDBOX] в заглавието — за да се избегне объркване на средите, плюс повторяем клонинг PROD → Sandbox (Azure IaC + скриптове)

✅ Контролен списък за QA — какво да проверите след деплой

ФункцияПроверка
Ad-hoc сесия — Quick RecordНатиснете Quick Record на таблото или в PWA — записът стартира веднага, сесията попада в AdHoc Inbox
AssignPatient в AdHoc InboxОтворете ad-hoc запис — можете да го приписвате на съществуващ пациент или да създадете нов
Лимит на пакетаТаблото показва брояча на сесиите за текущия месец и колко остават в пакета
Гратисен период след неуспешно плащанеСимулатор на абонамента в PromptyAI — форсирайте неуспешно плащане, получавате достъп само до акаунта за 14 дни
3-странно сливане на бележкиВ детайлите на сесията полето 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 и по-късно
Статус „No-show”В завършена / отменена сесия можете да смените статуса на „No-show”
Тъмна тема на мобилноВ мобилното приложение превключете на тъмна тема — заглавията на групите са четими
AdHoc Inbox на мобилноМобилното показва папката за ad-hoc записи и позволява приписване на пациент
Повторна проверка чрез MFAПри смяна на паролата приложението иска отново MFA
Псевдонимизация от AIВ логовете виждате данни на пациенти, изпратени към AI като псевдоними
Материали на сесията като blobКачете файл в материалите на сесията — попада в Azure Blob Storage, не на локален диск
Глобална уникалност на имейла на пациентаДобавете втори пациент със същия имейл — получавате 409 и прозорецът се затваря
Банер „Сървърът стартира”След по-дълъг период на бездействие входът в приложението показва банера вместо празна страница

🛠️ Какво поправихме — дребният шрифт

Освен големите функции, бяха разрешени ~80 доклада от тестери и потребители. Акценти:

  • PiP наслагването не беше кликваемо — поправено
  • Stale closure в handleMaximize — максимизирането от PiP вече не хвърля грешка
  • PiP запазва връзката — преди room.disconnect() се задействаше при прехода на цял екран↔PiP
  • Бутонът „Join session” беше скрит от CSS override — открит
  • Втора AITS сесия за същия пациент (SCRUM-1319, Ewa) — премахнат UNIQUE INDEX върху Session.VideoInviteToken
  • Номерацията на сесиите в концептуализацията прескача отменените (SCRUM-1267, Bohdan)
  • Null-safe достъп до Payment в GetSessionDetailsAsync (SCRUM-1268, Bohdan)
  • Сблъсък на тестова сесия на Anna Pełnialska с Jan в 14:00 — поправено в seeder-а
  • Забавяне на таблото — null-safe мапиране в GetTodaySessionsAsync и GetSessionDetailsAsync
  • Автоматично опресняване след приключване на записа от микрофона — работи
  • Резервен batch вариант не презаписва текст от предишни записи и не блокира UI със статус Processing
  • Език на транскрипцията от настройките на сесията — STT спазва предпочитанието на пациента
  • CSP — позволен *.clarity.ms, blob: в connect-src, аналитика в script-src
  • Цикъл на опресняване на автентикацията — прекъсване на заявките след 401 и връщане към вход
  • CSP MediaPipe WASM — размазването на фона работи
  • Лента DEV/SANDBOX и на Azure FQDN, не само на персонализирания домейн
  • Фалшив toast „Transcription failed” при влизане в сесия — премахнат
  • Toast вместо червен банер при неуспешна транскрипция + премахнат бутон „Resample”
  • Реално време с диаризация във видео сесия — стартира правилно
  • AI streaming — AbortController за всеки обработчик поотделно вместо общ (BodyStreamBuffer was aborted)
  • Nginx non-root + Azure Container Apps — множество итерации, за да заработи
  • Разпределена ключалка (sp_getapplock) — миграциите при стартиране вече не се конфликтуват при паралелни деплойове
  • DbUpdateConcurrencyException в batch пулъра за транскрипция (SCRUM-1313, Bohdan)
  • BlobNotFound като очаквано състояние (SCRUM-1314, Bohdan)
  • Не-JSON payload-и на Stripe webhook (скенери / ботове) — обработвани тихо (SCRUM-1315, Bohdan)
  • Откриване на аудио формат по магически байтове (SCRUM-1311, Bohdan)
  • Устойчиво качване на аудио + защитен Content-Type (SCRUM-1293, Bohdan)
  • Миграция на FK ActiveEmbeddingModelId → ON DELETE NO ACTION
  • Dev деплой на клиента — CACHE_BUST=github.sha налага пресъздаване на фронтенда

Това е най-голямото и най-плътното издание на тази пролет. Ако някоя функция ви се струва позната — това е, защото е била ваша молба или ваш тикет. Благодарим за всеки доклад и всеки скрийншот.

Статията е подготвена от екипа на Therapy Support

Therapy Support · Започнете още днес

Върнете си времето за себе си
и за вашите пациенти

Терапевт по КПТ ли сте?
Вижте как платформата подкрепя ежедневната ви работа.
Обобщения от сесии, които подреждат клиничния материал. Администрация, която не пречи.