Бележки по изданието — 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