Actualizări de produs

Note de lansare - 26 aprilie 2026

Bartłomiej Głowacki · CAIO, șef AI și C&D
Note de lansare - 26 aprilie 2026

Acum 19 zile am lansat o lansare mare cu modulul de diagnostic și analiza prozodiei. De atunci echipa a mai împins încă 295 de modificări - și nu sunt mici. În această lansare puteți înregistra o ședință ad-hoc înainte ca pacientul să sosească, notițele dumneavoastră se îmbină cu munca AI și transcrierea, unele lângă altele, în trei coloane, profilul public al terapeutului revine în forță deplină, iar aplicația mobilă are acum o temă întunecată. Sub capotă am trecut printr-o trecere de întărire SOC 2 / HIPAA, un audit DDD și pseudonimizarea completă a datelor pacientului pe partea de AI.

💚 Mulțumiri echipei care a condus această lansare - prin rapoarte, teste, cod și răbdare:

  • Bohdan - ședințe ad-hoc, limite de pachet și perioadă de grație, audit DDD, facturi KSeF, zeci de corecții (SCRUM-756, 815, 1267, 1268, 1276, 1280-1290, 1293, 1309-1316, 1353-1357, 1366, 1388, 1391, 1392)
  • Bartek - îmbinare pe 3 căi, 9 analize CBT separate, distorsiuni cognitive, contor de ședințe din pachet (SCRUM-1266, 1320, 1338, 1368-1375, 1385, 1386)
  • Ewa Cylwik / Ewa - PDF Beck, a doua ședință AITS pentru același pacient, temă întunecată mobilă și stare goală, mailing multilingv, culori UI, unicitatea emailului pacientului (SCRUM-883, 898, 902, 1089, 1094, 1297, 1304, 1307, 1319)
  • Joanna - calendar recurent, ascunderea Zoom, anulare la timp, auto-reflecție în locul evaluării calității ședinței (SCRUM-789, 874, 918, 919, 1005)
  • Plus Bartlomiej pentru distorsiunile cognitive și contorul de ședințe, care a devenit fundația noului model de abonament

1. ⚡ Ședințe ad-hoc - înregistrați înainte ca pacientul să sosească

Dacă a trebuit vreodată să porniți rapid un reportofon - pentru că un pacient a intrat neanunțat, pentru că e o consultație unică, pentru că e o întâlnire cu cineva care nu se află încă în evidențele dumneavoastră - noul modul de ședință ad-hoc rezolvă complet această problemă.

  • Buton de Înregistrare Rapidă în tabloul de bord web, în PWA pe telefon și în aplicația MAUI - un singur clic pornește înregistrarea înainte chiar să completați datele pacientului
  • AdHoc Inbox - un tavă dedicată pentru înregistrările neatribuite, până decideți unde merg
  • AssignPatientModal - atribuiți înregistrarea unui pacient existent sau creați unul nou direct din tavă
  • Resume / Reintrare în cameră - finalizați înregistrarea unei ședințe începute mai devreme
  • Retenția orfanilor + auto-completare - ședințele neatribuite timp de X zile se închid automat pentru ca tava să rămână ordonată
  • Video “Start fără pacient” - în camera LiveKit puteți începe o ședință fără a intra în coliziune cu un pacient existent; sesiunea AdHoc ajunge apoi în tavă

Secțiunea este ascunsă în spatele codului PromptyAI din Setări - dezactivată implicit, pentru utilizatorii care vor să vadă mai întâi restul. Proiectată și livrată de Bohdan.

2. 📊 Limite de pachet și perioadă de grație - abonament transparent

Abonamentele au primit o revizuire completă. Vechile planuri Starter/Standard sunt dezactivate, înlocuite de Start / Practice / Pro - dimensionate pentru volumul real de ședințe pe lună.

  • Contor de ședințe pe tabloul de bord - vedeți câte ședințe ați folosit luna aceasta și câte rămân în pachet
  • Emailuri de limită - notificări automate la 80% și 100% din utilizare
  • Prompt de upgrade - când atingeți limita, primiți o sugestie blândă de schimbare a planului în loc de un blocaj dur
  • Prețuri din Stripe + reduceri - prețul pe care îl vedeți în aplicație vine direct din Stripe, cu reducerile active aplicate (codul de beta tester nu expiră)
  • Anulare nativă a abonamentului - anulați direct din aplicație, fără să trebuiască să trimiteți un email suportului
  • Perioadă de grație de 14 zile - dacă o plată eșuează, primiți 14 zile cu acces doar la propriul cont (fără previzualizarea pacienților), cu emailuri la T+0 și T+13. Pierderea reală a datelor survine abia după două săptămâni
  • Banner de abonament - mesaj curat în partea de sus a aplicației, fără bară goală între meniu și alertă
  • Simulator de limită de ședințe - în panoul PromptyAI există un mod de test în care puteți vedea cum se comportă aplicația când pachetul este plin

Muncă comună a lui Bartlomiej (contor și limite, SCRUM-1266) și Bohdan (abonament, grație, prompt de upgrade - SCRUM-756, SCRUM-1366, SCRUM-1391, SCRUM-1392).

3. 📝 Îmbinare pe 3 căi pentru notițe - terapeut, AI și transcriere într-o singură vizualizare

Aceasta este una dintre cele mai mari schimbări arhitecturale sub capotă, dar efectul asupra muncii zilnice este foarte vizibil: fiecare câmp de notițe (Notes, SessionSummary, secțiunile de conceptualizare) își amintește acum separat ce a scris terapeutul, ce a generat AI și ce a venit din dictafon / transcriere.

  • Notes 3-way - vizualizarea notițelor arată trei surse una lângă alta: textul dumneavoastră, sugestiile AI și transcrierea automată, iar dumneavoastră alegeți ce păstrați
  • SessionSummary 2-way + îmbinare JSON - în rezumatul ședinței îmbinați propria muncă cu analiza AI într-un singur document coerent
  • Separator de marcă temporală - când editați manual un câmp AI, sistemul lasă o urmă vizibilă a momentului și a cui este fragmentul respectiv
  • Marcaj [AI] de la prima generare - câmpurile dumneavoastră nu se amestecă cu cele generate
  • SourceBadge - o pastilă colorată cu o iconiță care arată de unde provine un fragment, în locul textului cu MAJUSCULE
  • Înlocuirea secțiunii AI în loc de adăugare - când cereți regenerarea rezumatului, AI înlocuiește secțiunea în loc să adauge o altă copie dedesubt

Proiectat și livrat de Bartek (SCRUM-1320, SCRUM-1368-1375). Sub capotă: i18n complet în 8 limbi și noi contexte DDD.

4. 🔍 Analize CBT - 9 rapoarte separate la cerere

Vechea “generare a analizei CBT” monolitică a fost împărțită în 9 elemente separate pe care terapeutul le rulează atunci când are cu adevărat nevoie. Mai puțină așteptare, mai mult control.

  • 9 analize independente - fiecare generată separat, la cerere
  • Roata dințată de editare a promptului - dați clic pe roata dințată de lângă fiecare analiză pentru a vedea/modifica promptul pe care îl va folosi AI
  • Secțiunea ANALIZE CBT în spatele codului PromptyAI - secțiune disponibilă după introducerea codului în Setări, pentru utilizatorii care testează funcționalități noi

Distorsiunile cognitive au primit propria vizualizare (raportată de Bartlomiej, SCRUM-1385):

  • Vizualizare de date în loc de raport AI - vedeți citate concrete din transcriere, etichetate de AI, nu o narațiune generată din ele
  • Toate citatele după expandare - fără filtru de interval de date, expandarea dezvăluie totul
  • Disponibil în meniul principal - sub Conceptualizare v2

Vechiul prompt COGNITIVE_DISTORTIONS_INVENTORY a fost eliminat (SCRUM-1386).

5. 🌐 Profilul public al terapeutului - revizuire completă cu panouri de editare

Profilul public de sub brandul aitherapy.support a fost complet reconstruit.

  • 3 panouri noi de editare - biografia, specializările, datele de contact sunt editate în panouri laterale elegante
  • Mod de editare pentru proprietar - când vă vizualizați propriul profil în timp ce sunteți autentificat, butoanele de editare sunt la îndemână
  • Ani de experiență - noul câmp YearsOfExperience vizibil pe profilul public
  • Rebranding de culoare - paleta salvie/lavandă sub brandul aitherapy.support
  • Secțiunea “Confidențialitatea dumneavoastră” eliminată - era redundantă; GDPR se află în subsol
  • Iconițe Lucide - o tipografie de iconițe modernă, curată

Sub capotă, a fost adăugat un endpoint public GET /api/public/therapists - care returnează terapeuții cu profiluri publice active. Fundație pentru un director de terapeuți.

6. 🎥 Ședințe video - PiP, schimbarea camerelor, blur de fundal reparat

Video a primit un set de corecții pe care orice terapeut care rulează ședințe prin aplicație le va observa.

  • PiP / minimizare - minimizați camera video într-un mini-player plutitor și verificați notițele într-o altă filă fără a întrerupe conexiunea. Microfonul și camera continuă să funcționeze
  • Schimbarea camerelor - schimbați cine se află în vizualizarea principală și cine în mini, cu un singur clic
  • Reluarea PiP - la întoarcerea din minimizare, săriți peste lobby (PreJoinLobby) și intrați direct în conversație
  • Audio per participant pentru diarizare - transcrierea separă vorbitorii chiar și în PiP
  • Blur de fundal reparat - CSP bloca MediaPipe WASM; blurul funcționează acum cu un singur clic
  • UI mai curat pentru ședința AITS - asistentul AI a dispărut din bara de instrumente, mai puțin zgomot vizual
  • Suprapunerea PiP este acum clic-abilă - eliminând pointerEvents:none și overflow:hidden, butoanele PiP răspund la clicuri
  • Butonul “Alătură-te ședinței” - era ascuns de o suprascriere CSS, acum e vizibil
  • Închidere învechită (stale closure) în handleMaximize - reparată; maximizarea PiP nu mai aruncă eroare

7. 📐 Conceptualizarea Beck v2 și ABC - PDF, comutator de versiune, editarea promptului

  • PDF Beck și ABC v2 - formatare reparată și includere automată în materialele ședinței (raportat de Ewa, SCRUM-1297)
  • PDF Beck - secțiuni doar cu chenar, specializări colorate, inițiale curate, săgeată SVG între secțiuni
  • Comutator ABC v1/v2 în Conceptualizare v2 - alegeți ce versiune ABC să afișați
  • Roata dințată de editare a promptului în ABC v2 - modificați promptul AI din fila ABC v2
  • Export PDF pentru analize AI și ABC per ședință - analizele individuale sunt exportate separat
  • Pluralizarea etichetelor ABC în 8 limbi - tabelul de conceptualizare are formele de plural corecte
  • Corectarea coloanelor goale ABC - backend-ul returnează numele corecte ale proprietăților la plural

8. 🧾 Facturi și KSeF - selectarea plăților + mașina de stări

Sistemul de facturare a fost refactorizat pentru conformitate cu KSeF (sistemul național polonez de e-facturare).

  • Factură din plăți selectate - alegeți plățile, iar sistemul creează o singură factură din ele (snapshot + Payment FK)
  • Punct de intrare “Emite factură” în vizualizarea financiară a terapeutului - acces rapid din tabloul de bord
  • Eliminarea elementelor în modalul de emitere a facturii - corectați greșelile din mers
  • Separarea KSeF dev/prod - sandbox-ul și producția lucrează pe acreditări separate
  • Mașina de stări a facturii (SCRUM-1357 Bohdan) - Draft → Emisă → Trimisă → Anulată, cu o constrângere în baza de date pentru tranzițiile ilegale
  • AE KsefToken - token-ul KSeF criptat cu Always Encrypted

Muncă comună a lui Bohdan (SCRUM-1357, SCRUM-1388).

9. 📅 Calendar, ședințe recurente și locații

Calendarul săptămânal și cel recurent au primit zeci de îmbunătățiri mici, dar vizibile - majoritatea raportate de Joanna și Ewa.

  • Ședințele de la 22:00 - erau invizibile pe grila săptămânală, acum se afișează până la sfârșitul zilei
  • Toate orele pe grila slotului recurent (SCRUM-874, Joanna)
  • Ședința anulată la timp - nu se mai afișează ca “Neplătită” (SCRUM-918, Joanna)
  • Eticheta de recurență lângă slotul recurent (SCRUM-919, Joanna) - vedeți “săptămânal”, “bisăptămânal” lângă fiecare ședință care se repetă
  • Ascunderea integrării Zoom din UI (SCRUM-789, Joanna) - Zoom nu mai este suportat ca și canal video
  • Popover-ul de ședință din calendar - nu se mai ascunde în afara ecranului
  • TherapistAvailability - auto-salvare la fiecare modificare (debounce 800 ms), fără nevoie de buton de salvare
  • AddSessionModal - opțiunea “creează ședință în afara orelor de disponibilitate” - excepțiile pot forța un slot
  • Statusul “Neprezentat” (NoShow=5) - un status nou, care se poate seta chiar și dintr-o ședință finalizată sau anulată
  • RecurringSessionsCalendar - plăci de rezumat deasupra legendei și a grilei

Locațiile terapeutului au primit canale de întâlnire online per locație:

  • Mod la fața locului - câmpuri de adresă și oraș pentru locațiile fizice
  • Comutator la fața locului/online în loc de casetă de bifat - alegere mai clară a modului
  • Canal online per locație - locații diferite pot avea canale diferite (AITS, Google Meet, link extern), propagate automat la ședințe
  • Camere de întâlnire permanente per pacient - fiecare pacient are un link permanent de cameră AITS și un link extern separat, vizibil în setările pacientului
  • Ștergerea locației - reparată (dispărea din baza de date, dar rămânea pe lista din UI)

Și, în final, tipul de întâlnire în ședințele recurente - propagarea reparată a MeetingType și MeetingLink din configurarea seriei recurente către fiecare ședință generată și către emailurile de memento (SCRUM-902, Ewa).

10. 📱 Aplicația mobilă - temă întunecată, AdHoc Inbox, șlefuiri

Mobilul a trecut la versiunea 1.5.0 (build 18) cu o mulțime de schimbări vizibile pentru utilizator și câteva atingeri de semnare pentru App Store / Play Store.

  • Temă întunecată - mod întunecat complet, cu antete de grup lizibile (SCRUM-1089, Ewa + SCRUM-815)
  • Mementouri configurabile - alegeți când doriți notificarea de ședință
  • Memento mobil la 15 min - memento cu 15 minute înainte de ședință + avertisment când notificările de sistem sunt dezactivate (SCRUM-815, Bohdan)
  • Stare goală pentru lista de ședințe - în loc de un ecran gol, un onboarding mai bogat (SCRUM-1094, Ewa)
  • Banner de auto-reîmprospătare - când aplicația detectează o actualizare, afișează un banner atrăgător de reîmprospătare
  • AdHoc Inbox + AssignPatient + quick-start în MAUI (SCRUM-1289, Bohdan)
  • Quick-start mobil PWA pentru ședințe ad-hoc (SCRUM-1286, Bohdan)
  • Vizualizare web responsivă pentru telefon - desktopul rămâne neschimbat, pe telefon layout-ul se adaptează la ecranul îngust
  • Handler de deep-link pe iOS - folosește BindingContext, înregistrarea schemei URL
  • Șiruri de scop NSLocation pe iOS - repararea ITMS-90683 (App Store respingea build-ul fără acestea)
  • Android AAB - pas explicit de jarsigner
  • Materiale App Store Connect și Google Play - pachet complet plus audit WCAG 2.2

11. 🔐 Securitate: SOC 2 / HIPAA, MFA, pseudonimizare AI completă

Sub stratul de produs am făcut o trecere completă de întărire SOC 2 și HIPAA, plus un audit DDD cu cinci livrări concrete.

  • Re-verificare MFA pentru operațiuni critice - pentru acțiuni sensibile (schimbarea parolei, exportul de date) reconfirmați cu MFA
  • Coduri de rezervă pentru MFA - coduri de urgență dacă vă pierdeți telefonul
  • IAnonymizedLlmGateway (SCRUM-1353, Bohdan) - toate apelurile către modelele AI trec acum printr-un gateway de pseudonimizare. Numele, datele, locurile sunt înlocuite cu pseudonime înainte de a părăsi aplicația; AI primește doar versiunea anonimizată
  • Pseudonimizarea notificărilor prin email/SMS (SCRUM-1354) - șabloanele de mesaje nu mai scurg datele pacientului la trimitere
  • Token-urile OAuth Google/Zoom criptate cu Always Encrypted (SCRUM-1355) - token-urile de acces pentru integrări sunt criptate la nivel de coloană
  • Steagul Patient.PendingConsent (SCRUM-1356) - pacienții fără consimțământ activ primesc un flux de forțare + insignă în frontend
  • Mașina de stări a facturii (SCRUM-1357) - statusurile facturii sunt imuabile în direcțiile invalide, impuse la nivelul bazei de date
  • Imuabilitatea auditului + snapshot al utilizatorului în 3 tabele de audit - jurnalul de acțiuni nu poate fi modificat ulterior faptei
  • DeanonymizationAuditLog - fiecare utilizare a datelor pacientului după dezanonimizare este înregistrată împreună cu snapshot-ul email + displayName al utilizatorului care a efectuat-o
  • Secretele hardcodate eliminate - toate cheile și parolele din appsettings.json au fost mutate în Azure Key Vault
  • Always Encrypted pentru toate datele text ale utilizatorilor (ADR-0018) - direcție arhitecturală aprobată; alte tabele migrează în lansarea următoare
  • Analiza decalajelor de conformitate ISO/IEC - 95 de decalaje mapate în 9 standarde, cu un plan de remediere

Susținut de un audit DDD complet (Sesiunile 1-8, Fazele 1-6) - restructurarea contextului de domeniu, documentația arhitecturii, ADR-uri, mermaid + teste, playbook-uri, integrare Confluence.

12. 👤 Portalul pacientului - analize în Obiective, materiale, previzualizare mai bună

  • Conceptualizarea Beck în fila “Obiective” a pacientului - când publicați conceptualizarea, pacientul o vede în portalul său
  • Publicarea analizelor în portalul pacientului + preferințe de notificare (SCRUM-1338, Bartlomiej) - controlați ce și când primește pacientul
  • Previzualizare PDF în portal - iframe în loc de embed, CSP permite blob: (PDF-urile se încarcă)
  • Previzualizarea portalului pacientului din vizualizarea terapeutului - vedeți ce vede pacientul (chrome în wrapper, tablou de bord identic)
  • Materialele de ședință în Azure Blob Storage - SessionMaterial ca blob, fără sistem de fișiere local
  • Secțiunea de consimțământ / documente + sursa înregistrării în setările pacientului
  • Unicitatea globală a emailului pacientului (SCRUM-898) - un al doilea pacient cu același email primește un 409 și modalul se închide (SCRUM-898, Ewa)
  • Seeder de șabloane de notificare pentru SK, CA, RU, UK, LT (SCRUM-883, Joanna) - mailing multilingv complet
  • Fallback al resolver-ului la valoarea implicită a platformei - când un terapeut nu a suprascris șablonul, se trimite cel implicit multilingv (SCRUM-883)

13. 🎙️ Transcriere - înregistrare fiabilă, adăugare, timp real cu diarizare

  • Adăugare la o transcriere existentă - continuați înregistrarea în aceeași ședință; segmentele se adaugă (intenția supraviețuiește unei reîncărcări a paginii)
  • Audio per participant pentru diarizare - transcrierea video separă vorbitorii pe piste independente
  • Transcrierea supraviețuiește PiP-ului - minimizarea camerei nu întrerupe înregistrarea
  • Limba de transcriere din setările ședinței - STT folosește limba pe care ați setat-o pentru pacient
  • Auto-reîmprospătare pentru transcriere la focus / visibilitychange / revenire din video
  • Confirmare la oprirea înregistrării < 2s - protecție împotriva unui WAV gol dintr-un clic accidental
  • Insignă “Se trimite” în lista de ședințe - vedeți când o înregistrare este în curs de încărcare
  • Timp real cu diarizare în ședința video - nu pornea înainte; acum funcționează
  • Backup OPFS + Opus 48 kbps - înregistrarea se salvează și local în OPFS ca rezervă, parametrii audio sunt unificați
  • Încărcare audio directă SAS (SCRUM-1276, Bohdan) - audio-ul merge direct la Azure printr-un URL SAS, ocolind backend-ul
  • m4a nativ pentru Azure Speech - m4a este gestionat nativ, fără conversie
  • Detectarea formatului după magic bytes (SCRUM-1311, Bohdan) - când Content-Type=application/octet-stream, formatul este detectat din conținutul fișierului
  • Hub fără text în baza de date - hub-ul SignalR realtime nu mai persistă text în baza de date; finishPending folosește POST multipart ca în MAUI
  • Corecție SignalR 1006 - eliminarea skipNegotiation pentru ca Azure SignalR să funcționeze + ajustarea keep-alive
  • Marcaj [AI] de la prima generare + căutare fiabilă a marcajului

14. 💬 Notificări, setările pacientului, UX minor

  • NotificationTemplatesAdmin - comutator HTML/Text în editorul de email
  • NotificationSettings - previzualizarea emailului randează HTML cu fallback
  • PromptEditModal - reconstruit: file, selector de model, nume de versiune obligatorii
  • Resetarea steagului Hide_dev_ui la deconectare - steagurile pentru dezvoltatori nu persistă între sesiuni
  • Pacientul de test Ann Fauler - echivalentul englezesc 1:1 al Annei Pełnialska în poloneză, pentru demonstrații doar în EN
  • Comutator pentru modul de prezentare Dev UI - trecere rapidă în modul de prezentare
  • Raport de eroare - atașamente Jira + eticheta raportorului + butonul “Trimite” centrat
  • Buclă de auto-reîmprospătare a autentificării reparată - anulați cererile și reveniți la autentificare la 401
  • Banner “Serverul pornește” - la pornirea la rece (scale-to-zero) afișăm un anunț în loc de o pagină goală
  • Scala de evaluare a ședinței - auto-reflecție în loc de evaluarea calității + disclaimer (SCRUM-1005, Joanna)
  • Culoarea butonului “Minimizare” schimbată în violet cobalt (SCRUM-1307, Ewa)
  • Culoarea etichetei “Transcriere” schimbată din roșu în verde (SCRUM-1304, Ewa)
  • “Înregistrează acum” → “Înregistrează ședință AdHoc” - un nume de buton mai precis
  • Sandbox cu panglică verde în colțul din stânga sus + prefixul [SANDBOX] în titlu - pentru a evita confuzia mediilor, plus o clonare repetabilă PROD → Sandbox (Azure IaC + scripturi)

✅ Listă de verificare QA - ce să verificați după deploy

FuncționalitateVerificați
Ședință ad-hoc - Quick RecordDați clic pe Quick Record în tabloul de bord sau în PWA - înregistrarea pornește imediat, ședința ajunge în AdHoc Inbox
AssignPatient în AdHoc InboxDeschideți o înregistrare ad-hoc - puteți atribui unui pacient existent sau crea unul nou
Limită de pachetTabloul de bord arată contorul de ședințe pentru luna curentă și câte rămân în pachet
Perioadă de grație după plată eșuatăSimulatorul de abonament din PromptyAI - forțați o plată eșuată, primiți acces doar la cont pentru 14 zile
Îmbinare pe 3 căi a notițelorÎn detaliile ședinței, câmpul Notes arată trei surse una lângă alta (terapeut / AI / transcriere); puteți alege ce păstrați
9 analize CBTFila de analize CBT arată 9 elemente separate; fiecare generat la cerere; fiecare are o roată dințată de editare a promptului
Profil public - panouriDeschideți propriul profil public în timp ce sunteți autentificat - panourile de editare pentru biografie, specializare, contact sunt vizibile
PiP videoÎn timpul unei ședințe video dați clic pe minimizare - fereastra se restrânge într-un mini-player, microfonul continuă să funcționeze, reveniți fără lobby
Blur de fundalÎn lobby-ul video activați blurul de fundal - funcționează imediat, fără erori CSP
PDF conceptualizare BeckGenerați PDF-ul de conceptualizare - apare și în materialele ședinței
Comutator ABC v1/v2În conceptualizarea v2 puteți schimba sursa ABC între versiunea 1 și 2
Factură din plăți selectateSelectați câteva plăți și dați clic pe “Emite factură” - o singură factură este produsă din snapshot
Ședință recurentă cu Google MeetA doua și a treia ședință din serie au Google Meet corect setat, iar emailul conține link-ul corect
Ședințe de la 22:00Calendarul săptămânal arată ședințe programate la 22:00 și mai târziu
Statusul “Neprezentat”Într-o ședință finalizată / anulată puteți schimba statusul în “Neprezentat”
Temă întunecată mobilăÎn aplicația mobilă comutați la tema întunecată - antetele de grup sunt lizibile
AdHoc Inbox pe mobilMobilul arată inbox-ul ad-hoc și vă permite să atribuiți un pacient
Re-verificare MFALa schimbarea parolei, aplicația cere din nou MFA
Pseudonimizare AIÎn jurnale vedeți datele pacientului mergând către AI ca pseudonime
Materiale de ședință ca blobÎncărcați un fișier în materialele ședinței - ajunge în Azure Blob Storage, nu pe discul local
Unicitatea globală a emailului pacientuluiAdăugați un al doilea pacient cu același email - primiți un 409 și modalul se închide
Banner “Serverul pornește”După o perioadă mai lungă de inactivitate, intrarea în aplicație arată bannerul în loc de o pagină goală

🛠️ Ce am reparat - litere mici

Pe lângă marile funcționalități, au fost rezolvate ~80 de rapoarte de la testeri și utilizatori. Câteva puncte importante:

  • Suprapunerea PiP nu era clic-abilă - reparat
  • Închiderea învechită în handleMaximize - maximizarea PiP nu mai aruncă eroare
  • PiP păstrează conexiunea - anterior room.disconnect() se declanșa la tranziția fullscreen↔PiP
  • Butonul “Alătură-te ședinței” era ascuns de o suprascriere CSS - descoperit
  • A doua ședință AITS pentru același pacient (SCRUM-1319, Ewa) - eliminarea UNIQUE INDEX pe Session.VideoInviteToken
  • Numerotarea ședințelor în conceptualizare omite ședințele anulate (SCRUM-1267, Bohdan)
  • Acces null-safe la Payment în GetSessionDetailsAsync (SCRUM-1268, Bohdan)
  • Coliziunea sesiunii de test a Annei Pełnialska cu Jan la 14:00 - reparată în seeder
  • Încetinirea tabloului de bord - mapare null-safe în GetTodaySessionsAsync și GetSessionDetailsAsync
  • Auto-reîmprospătare după terminarea înregistrării de la microfon - funcționează
  • Fallback-ul batch nu mai suprascrie textul din înregistrările anterioare și nu mai blochează UI-ul cu statusul Processing
  • Limba de transcriere din setările ședinței - STT respectă preferința pacientului
  • CSP - permite *.clarity.ms, blob: în connect-src, analytics în script-src
  • Bucla de auto-reîmprospătare a autentificării - anularea cererilor după 401 și revenirea la autentificare
  • CSP MediaPipe WASM - blurul de fundal funcționează
  • Panglica DEV/SANDBOX și pe FQDN-ul Azure, nu doar pe domeniul personalizat
  • Toast fals “Transcriere eșuată” la intrarea în ședință - eliminat
  • Toast în loc de banner roșu la transcriere eșuată + eliminarea butonului “Reeșantionare”
  • Timp real cu diarizare în ședința video - pornește corect
  • AI streaming - AbortController per handler în loc de unul comun (BodyStreamBuffer was aborted)
  • Nginx non-root + Azure Container Apps - mai multe iterații pentru a funcționa
  • Blocare distribuită (sp_getapplock) - migrațiile de pornire nu mai intră în conflict la deploy-uri paralele
  • DbUpdateConcurrencyException în poller-ul de transcriere batch (SCRUM-1313, Bohdan)
  • BlobNotFound ca stare așteptată (SCRUM-1314, Bohdan)
  • Payload-uri non-JSON ale webhook-ului Stripe (scanere / boți) - gestionate silențios (SCRUM-1315, Bohdan)
  • Detectarea formatului audio după magic bytes (SCRUM-1311, Bohdan)
  • Încărcare audio rezilientă + Content-Type defensiv (SCRUM-1293, Bohdan)
  • Migrarea FK ActiveEmbeddingModelId → ON DELETE NO ACTION
  • Deploy client dev - CACHE_BUST=github.sha forțează reconstrucția frontend-ului

Aceasta este cea mai mare și mai densă lansare a acestei primăveri. Dacă o funcționalitate vi se pare familiară - este pentru că a fost cererea sau ticketul dumneavoastră. Mulțumim pentru fiecare raport și fiecare captură de ecran.

Articol pregătit de echipa Therapy Support

Therapy Support · Începeți chiar astăzi

Recuperați timp pentru dumneavoastră
și pentru Pacienți

Sunteți terapeut TCC?
Vedeți cum vă sprijină platforma în munca de zi cu zi.
Rezumate de ședință care organizează materialul clinic. Administrare care nu vă stă în cale.