Note di rilascio — 26 aprile 2026
19 giorni fa abbiamo rilasciato una grande release con il modulo diagnostico e l’analisi della prosodia. Da allora il team ha spinto altre 295 modifiche — e non sono piccole. In questa release puoi registrare una seduta ad-hoc prima ancora che il paziente arrivi, le tue note si fondono con il lavoro dell’AI e la trascrizione fianco a fianco in tre colonne, il profilo pubblico del terapeuta è tornato in piena forza, e l’app mobile ha ora un tema scuro. Sotto il cofano abbiamo affrontato un giro di hardening SOC 2 / HIPAA, un audit DDD, e la piena pseudonimizzazione dei dati dei pazienti sul lato AI.
💚 Grazie al team che ha guidato questa release — con segnalazioni, test, codice e pazienza:
- Bohdan — sedute ad-hoc, limiti di pacchetto e periodo di grazia, audit DDD, fatture KSeF, decine di correzioni (SCRUM-756, 815, 1267, 1268, 1276, 1280-1290, 1293, 1309-1316, 1353-1357, 1366, 1388, 1391, 1392)
- Bartek — merge a 3 vie, 9 analisi CBT separate, distorsioni cognitive, contatore di sedute del pacchetto (SCRUM-1266, 1320, 1338, 1368-1375, 1385, 1386)
- Ewa Cylwik / Ewa — PDF Beck, seconda seduta AITS per lo stesso paziente, tema scuro mobile e stato vuoto, mailing multilingue, colori dell’interfaccia, unicità dell’email del paziente (SCRUM-883, 898, 902, 1089, 1094, 1297, 1304, 1307, 1319)
- Joanna — calendario ricorrente, nascondere Zoom, cancellazione in tempo utile, auto-riflessione invece della valutazione della qualità della seduta (SCRUM-789, 874, 918, 919, 1005)
- Inoltre Bartlomiej per le distorsioni cognitive e il contatore di sedute, diventato la base del nuovo modello di abbonamento
1. ⚡ Sedute ad-hoc — registra prima che il paziente arrivi
Se ti è mai capitato di dover attivare velocemente un registratore — perché un paziente si è presentato senza preavviso, perché è una consulenza una tantum, perché è un incontro con qualcuno non ancora nei tuoi archivi — il nuovo modulo di seduta ad-hoc risolve completamente questo problema.
- Pulsante di registrazione rapida nella dashboard web, nella PWA su telefono e nell’app MAUI — un clic avvia la registrazione ancora prima di compilare i dati del paziente
- Inbox AdHoc — un vassoio dedicato per le registrazioni non assegnate finché non decidi dove metterle
- AssignPatientModal — assegna la registrazione a un paziente esistente o creane uno nuovo direttamente dall’inbox
- Riprendi / Rientra nella sala — completa la registrazione di una seduta iniziata in precedenza
- Conservazione orfana + completamento automatico — le sedute non assegnate per X giorni si chiudono automaticamente in modo che l’inbox resti ordinato
- Video “Avvia senza paziente” — nella sala LiveKit puoi iniziare una seduta senza collidere con un paziente esistente; l’AdHoc finisce nell’inbox in seguito
La sezione è protetta dietro il codice PromptyAI nelle Impostazioni — disattivata per impostazione predefinita, per gli utenti che vogliono prima vedere il resto. Progettata e realizzata da Bohdan.
2. 📊 Limiti di pacchetto e periodo di grazia — abbonamento trasparente
Gli abbonamenti hanno ricevuto una revisione completa. I vecchi piani Starter/Standard sono disattivati, sostituiti da Start / Practice / Pro — dimensionati per il volume reale di sedute mensili.
- Contatore di sedute nella dashboard — vedi quante sedute hai usato questo mese e quante ne rimangono nel tuo pacchetto
- Email sui limiti — notifiche automatiche all’80% e al 100% di utilizzo
- Prompt di upgrade — quando raggiungi il limite, ricevi un gentile suggerimento di cambio piano invece di un blocco totale
- Prezzi da Stripe + sconti — il prezzo che vedi nell’app proviene direttamente da Stripe con gli sconti attivi applicati (il codice betatester non scade)
- Cancellazione nativa dell’abbonamento — cancella direttamente nell’app, senza bisogno di scrivere al supporto
- Periodo di grazia di 14 giorni — se un pagamento fallisce, ottieni 14 giorni con accesso solo al tuo account (nessuna anteprima dei pazienti), con email a T+0 e T+13. La reale perdita di dati scatta solo dopo due settimane
- Banner dell’abbonamento — messaggio pulito in cima all’app senza barra vuota tra il menu e l’avviso
- Simulatore del limite di sedute — nel pannello PromptyAI c’è una modalità di test dove puoi vedere come si comporta l’app con un pacchetto pieno
Lavoro congiunto di Bartlomiej (contatore e limiti, SCRUM-1266) e Bohdan (abbonamento, periodo di grazia, prompt di upgrade — SCRUM-756, SCRUM-1366, SCRUM-1391, SCRUM-1392).
3. 📝 Merge a 3 vie per le note — terapeuta, AI e trascrizione in un’unica vista
Questo è uno dei più grandi cambiamenti architetturali sotto il cofano, ma l’effetto sul lavoro quotidiano è molto visibile: ogni campo di note (Note, Riassunto della seduta, sezioni di concettualizzazione) ora ricorda separatamente cosa ha scritto il terapeuta, cosa ha generato l’AI, e cosa proviene dal dittafono / dalla trascrizione.
- Note a 3 vie — la vista delle note mostra tre fonti fianco a fianco: il tuo testo, i suggerimenti dell’AI e la trascrizione automatica, e scegli cosa mantenere
- Riassunto della seduta a 2 vie + merge JSON — nel riassunto della seduta unisci il tuo lavoro con l’analisi dell’AI in un unico documento coerente
- Separatore temporale — quando modifichi manualmente un campo AI, il sistema lascia una traccia visibile di quando e di chi è quel frammento
- Marcatore [AI] dalla prima generazione — i tuoi campi non si mescolano con quelli generati
- SourceBadge — pillola colorata con un’icona che mostra da dove proviene un frammento, invece del testo in MAIUSCOLO
- Sostituzione della sezione AI invece dell’aggiunta — quando richiedi la rigenerazione del riassunto, l’AI sostituisce la sezione invece di impilare un’altra copia sotto
Progettato e realizzato da Bartek (SCRUM-1320, SCRUM-1368-1375). Sotto il cofano: piena i18n in 8 lingue e nuovi contesti DDD.
4. 🔍 Analisi CBT — 9 report separati su richiesta
Il vecchio “genera analisi CBT” monolitico è stato suddiviso in 9 elementi separati che il terapeuta esegue quando ne ha effettivamente bisogno. Meno attesa, più controllo.
- 9 analisi indipendenti — ciascuna generata separatamente, su richiesta
- Ingranaggio di modifica del prompt — clicca sull’ingranaggio accanto a ogni analisi per vedere/modificare il prompt che l’AI userà
- Sezione ANALISI CBT dietro il codice PromptyAI — sezione disponibile dopo aver inserito il codice nelle Impostazioni, per gli utenti che testano nuove funzionalità
Le distorsioni cognitive hanno ricevuto una vista propria (segnalata da Bartlomiej, SCRUM-1385):
- Vista dei dati invece di un report AI — vedi citazioni concrete dalla trascrizione etichettate dall’AI, non una narrazione generata da esse
- Tutte le citazioni dopo l’espansione — nessun filtro per intervallo di date, l’espansione rivela tutto
- Disponibile nel menu principale — sotto Concettualizzazione v2
Il vecchio prompt COGNITIVE_DISTORTIONS_INVENTORY è stato rimosso (SCRUM-1386).
5. 🌐 Profilo pubblico del terapeuta — revisione completa con pannelli di modifica
Il profilo pubblico sotto il brand aitherapy.support è stato completamente ricostruito.
- 3 nuovi pannelli di modifica — biografia, specializzazioni, dettagli di contatto modificati in eleganti pannelli laterali
- Modalità di modifica del proprietario — quando visualizzi il tuo stesso profilo mentre sei connesso, i pulsanti di modifica sono a portata di mano
- Anni di esperienza — nuovo campo
YearsOfExperiencevisibile sul profilo pubblico - Rebrand dei colori — palette salvia/lavanda sotto il brand aitherapy.support
- Sezione “La tua privacy” rimossa — era ridondante; il GDPR è nel footer
- Icone Lucide — tipografia di icone moderna e pulita
Sotto il cofano, è stato aggiunto un endpoint pubblico GET /api/public/therapists — che restituisce i terapeuti con profili pubblici attivi. Fondamento per una directory di terapeuti.
6. 🎥 Sedute video — PiP, scambio camere, sfocatura dello sfondo corretta
Il video ha ricevuto una serie di correzioni che ogni terapeuta che conduce sedute tramite l’app noterà.
- PiP / minimizza — minimizza la sala video in un mini-player fluttuante e controlla le note in un’altra scheda senza interrompere la connessione. Microfono e camera continuano a funzionare
- Scambia camere — cambia chi è nella vista principale e chi è nella mini con un clic
- Ripresa PiP — tornando dalla minimizzazione, salti la lobby (PreJoinLobby) e vai direttamente alla conversazione
- Audio per partecipante per la diarizzazione — la trascrizione separa i parlanti anche in PiP
- Sfocatura dello sfondo corretta — la CSP bloccava MediaPipe WASM; la sfocatura ora funziona con un clic
- UI della seduta AITS più pulita — l’assistente AI è scomparso dalla barra degli strumenti, meno rumore visivo
- Overlay PiP cliccabile — rimuovendo
pointerEvents:noneeoverflow:hidden, i pulsanti PiP rispondono ai clic - Pulsante “Partecipa alla seduta” — era nascosto da un override CSS, ora è visibile
- Closure obsoleta in handleMaximize — corretta; la massimizzazione PiP non genera più un errore
7. 📐 Concettualizzazione Beck v2 e ABC — PDF, toggle di versione, modifica del prompt
- PDF Beck e ABC v2 — corretta la formattazione e inclusione automatica nei materiali di seduta (segnalato da Ewa, SCRUM-1297)
- PDF Beck — sezioni solo bordo, specializzazioni colorate, iniziali pulite, freccia SVG tra le sezioni
- Toggle ABC v1/v2 in Concettualizzazione v2 — scegli quale versione ABC visualizzare
- Ingranaggio di modifica del prompt in ABC v2 — modifica il prompt AI nella scheda ABC v2
- Esportazione PDF per analisi AI e ABC per seduta — analisi individuali esportate separatamente
- Pluralizzazione delle etichette ABC in 8 lingue — la tabella di concettualizzazione ha le forme plurali corrette
- Correzione delle colonne vuote ABC — il backend restituisce i nomi delle proprietà plurali corretti
8. 🧾 Fatture e KSeF — selezione dei pagamenti + macchina a stati
Il sistema di fatturazione è stato rifattorizzato per la conformità con il KSeF (sistema nazionale polacco di fatturazione elettronica).
- Fattura dai pagamenti selezionati — scegli i pagamenti e il sistema crea un’unica fattura da essi (snapshot + FK del pagamento)
- Punto di ingresso “Emetti fattura” nella vista finanziaria del terapeuta — accesso rapido dalla dashboard
- Rimozione di elementi nel modale di emissione della fattura — correggi errori al volo
- Separazione dev/prod KSeF — sandbox e produzione lavorano su credenziali separate
- Macchina a stati della fattura (SCRUM-1357 Bohdan) — Bozza → Emessa → Inviata → Annullata, con un vincolo del DB sulle transizioni illegali
- AE KsefToken — token KSeF crittografato con Always Encrypted
Lavoro congiunto di Bohdan (SCRUM-1357, SCRUM-1388).
9. 📅 Calendario, sedute ricorrenti e sedi
Il calendario settimanale e ricorrente ha ricevuto decine di miglioramenti piccoli ma visibili — la maggior parte segnalati da Joanna e Ewa.
- Sedute dalle 22:00 — erano invisibili sulla griglia settimanale, ora vengono mostrate fino a fine giornata
- Tutte le ore sulla griglia delle fasce ricorrenti (SCRUM-874, Joanna)
- Seduta cancellata in tempo utile — non appare come “Non pagata” (SCRUM-918, Joanna)
- Etichetta di ricorrenza accanto alla fascia ricorrente (SCRUM-919, Joanna) — vedi “settimanale”, “quindicinale” accanto a ogni seduta ricorrente
- Nascondere l’integrazione Zoom dall’UI (SCRUM-789, Joanna) — Zoom non è più supportato come canale video
- Popover della seduta nel calendario — non si nasconde più fuori schermo
- TherapistAvailability — salvataggio automatico a ogni modifica (debounce 800 ms), nessun pulsante di salvataggio necessario
- AddSessionModal — opzione “crea seduta fuori dagli orari di disponibilità” — le eccezioni possono forzare una fascia
- Stato “No-show” (NoShow=5) — nuovo stato, impostabile anche da sedute completate o cancellate
- RecurringSessionsCalendar — riquadri di riepilogo sopra la legenda e la griglia
Le sedi del terapeuta hanno ricevuto canali di riunione online per sede:
- Modalità in presenza — campi indirizzo e città per le sedi in presenza
- Interruttore in presenza/online invece di una casella di controllo — scelta della modalità più chiara
- Canale online per sede — sedi diverse possono avere canali diversi (AITS, Google Meet, link esterno), propagati automaticamente alle sedute
- Sale di riunione permanenti per paziente — ogni paziente ha un link permanente alla sala AITS e un link esterno separato visibile nelle impostazioni del paziente
- Eliminazione della sede — corretta (scompariva dal DB ma restava nell’elenco dell’UI)
E infine il tipo di riunione nelle sedute ricorrenti — corretta la propagazione di MeetingType e MeetingLink dalla configurazione della serie ricorrente a ogni seduta generata e alle email di promemoria (SCRUM-902, Ewa).
10. 📱 App mobile — tema scuro, Inbox AdHoc, rifinitura
Mobile è passata alla versione 1.5.0 (build 18) con un carico di modifiche visibili all’utente e alcuni ritocchi di firma per App Store / Play Store.
- Tema scuro — modalità scura completa con intestazioni di gruppo leggibili (SCRUM-1089, Ewa + SCRUM-815)
- Promemoria configurabili — scegli quando vuoi la notifica di seduta
- Promemoria mobile a 15 min — promemoria pre-seduta di 15 minuti + avviso quando le notifiche di sistema sono disattivate (SCRUM-815, Bohdan)
- Stato vuoto per l’elenco sedute — invece di uno schermo vuoto, un onboarding più ricco (SCRUM-1094, Ewa)
- Banner di auto-aggiornamento — quando l’app rileva un aggiornamento, mostra un invitante banner di aggiornamento
- Inbox AdHoc + AssignPatient + avvio rapido in MAUI (SCRUM-1289, Bohdan)
- Avvio rapido PWA mobile per sedute ad-hoc (SCRUM-1286, Bohdan)
- Vista web responsive per telefono — desktop invariato, su telefono il layout si adatta allo schermo stretto
- Gestore di deep-link in iOS — usa BindingContext, registrazione dello schema URL
- Stringhe di scopo NSLocation per iOS — correzione di ITMS-90683 (App Store rifiutava la build senza queste)
- Android AAB — passo esplicito di jarsigner
- Materiali App Store Connect e Google Play — pacchetto completo più audit WCAG 2.2
11. 🔐 Sicurezza: SOC 2 / HIPAA, MFA, piena pseudonimizzazione AI
Sotto il livello del prodotto abbiamo condotto un giro completo di hardening SOC 2 e HIPAA più un audit DDD con cinque consegne concrete.
- Ri-verifica MFA per operazioni critiche — per azioni sensibili (cambio password, esportazione dati) confermi di nuovo con MFA
- Codici di backup per MFA — codici di emergenza se perdi il telefono
- IAnonymizedLlmGateway (SCRUM-1353, Bohdan) — tutte le chiamate al modello AI passano ora attraverso un gateway di pseudonimizzazione. Nomi, date, luoghi vengono sostituiti con pseudonimi prima di lasciare l’app; l’AI riceve solo la versione anonimizzata
- Pseudonimizzazione delle notifiche email/SMS (SCRUM-1354) — anche i modelli di messaggio non trapelano dati dei pazienti all’invio
- Token OAuth Google/Zoom crittografati con Always Encrypted (SCRUM-1355) — i token di accesso alle integrazioni sono crittografati a livello di colonna
- Flag Patient.PendingConsent (SCRUM-1356) — i pazienti senza consenso attivo ottengono un flusso di applicazione + badge frontend
- Macchina a stati della fattura (SCRUM-1357) — gli stati della fattura sono immutabili nelle direzioni non valide, applicati a livello di DB
- Immutabilità degli audit + snapshot utente in 3 tabelle di audit — il registro delle azioni non può essere modificato a posteriori
- DeanonymizationAuditLog — ogni uso dei dati del paziente dopo la de-anonimizzazione viene registrato insieme allo snapshot email + nome visualizzato dell’utente che l’ha eseguito
- Segreti hardcoded rimossi — tutte le chiavi e le password da appsettings.json spostate in Azure Key Vault
- Always Encrypted per tutti i dati testuali utente (ADR-0018) — direzione architetturale approvata; altre tabelle migreranno nella prossima release
- Analisi delle lacune di conformità ISO/IEC — 95 lacune in 9 standard mappate, con un piano di rimedio
Supportato da un audit DDD completo (Sessioni 1-8, Fasi 1-6) — ristrutturazione del contesto di dominio, documentazione dell’architettura, ADR, mermaid + test, playbook, integrazione Confluence.
12. 👤 Portale paziente — analisi in Obiettivi, materiali, anteprima migliorata
- Concettualizzazione di Beck nella scheda “Obiettivi” del paziente — quando pubblichi la concettualizzazione, il paziente la vede nel suo portale
- Pubblicazione delle analisi nel portale paziente + preferenze di notifica (SCRUM-1338, Bartlomiej) — controlla cosa e quando il paziente riceve
- Anteprima PDF del portale —
iframeinvece diembed, la CSP consenteblob:(i PDF si caricano) - Anteprima del portale paziente dalla vista del terapeuta — vedi cosa vede il paziente (chrome nel wrapper, dashboard 1:1)
- Materiali di seduta in Azure Blob Storage — SessionMaterial come blob, non più filesystem locale
- Sezione consenso / documenti + origine della registrazione nelle impostazioni del paziente
- Unicità globale dell’email del paziente (SCRUM-898) — un secondo paziente con la stessa email riceve un 409 e il modale si chiude (SCRUM-898, Ewa)
- Seeder di modelli di notifica per SK, CA, RU, UK, LT (SCRUM-883, Joanna) — mailing multilingue completo
- Fallback del resolver al predefinito della piattaforma — quando un terapeuta non ha sovrascritto il modello, viene inviato quello multilingue predefinito (SCRUM-883)
13. 🎙️ Trascrizione — registrazione affidabile, aggiunta, tempo reale con diarizzazione
- Aggiunta a una trascrizione esistente — continua a registrare nella stessa seduta; i segmenti si aggiungono (l’intento sopravvive a un ricaricamento della pagina)
- Audio per partecipante per la diarizzazione — la trascrizione video separa i parlanti su tracce indipendenti
- La trascrizione sopravvive al PiP — minimizzare la sala non interrompe la registrazione
- Lingua di trascrizione dalle impostazioni della seduta — lo STT usa la lingua che hai impostato per il paziente
- Auto-aggiornamento della trascrizione su focus / visibilitychange / ritorno dal video
- Conferma alla fine della registrazione < 2s — protezione contro un WAV vuoto da un clic accidentale
- Badge “Invio” nell’elenco delle sedute — vedi quando una registrazione è in caricamento
- Tempo reale con diarizzazione nella seduta video — non partiva prima; ora funziona
- Backup OPFS + Opus a 48 kbps — la registrazione salva anche localmente su OPFS come fallback, parametri audio unificati
- Caricamento diretto audio SAS (SCRUM-1276, Bohdan) — l’audio va direttamente su Azure tramite URL SAS, bypassando il backend
- m4a nativo per Azure Speech — m4a gestito nativamente, nessuna conversione
- Rilevamento del formato tramite magic bytes (SCRUM-1311, Bohdan) — quando Content-Type=
application/octet-stream, il formato viene rilevato dal contenuto del file - Hub senza testo nel DB — l’hub SignalR in tempo reale non persiste più il testo nel DB; finishPending usa POST multipart come MAUI
- Correzione SignalR 1006 — rimosso skipNegotiation così Azure SignalR funziona + ottimizzazione del keep-alive
- Marcatore [AI] dalla prima generazione + ricerca affidabile del marcatore
14. 💬 Notifiche, impostazioni paziente, piccoli miglioramenti UX
- NotificationTemplatesAdmin — toggle HTML/Testo nell’editor email
- NotificationSettings — l’anteprima email renderizza HTML con fallback
- PromptEditModal — ricostruito: schede, selettore del modello, nomi di versione obbligatori
- Reset del flag Hide_dev_ui al logout — i flag per sviluppatori non persistono tra le sessioni
- Paziente di test Ann Fauler — equivalente inglese 1:1 della polacca Anna Pełnialska per demo solo in inglese
- Toggle della modalità di presentazione UI per sviluppatori — passaggio rapido alla modalità di presentazione
- Segnalazione bug — allegati Jira + etichetta segnalante + pulsante “Invia” centrato
- Loop di auth-refresh corretto — interrompi le richieste e torna al login dopo un 401
- Banner “Il server si sta avviando” — all’avvio a freddo (scale-to-zero) mostriamo un avviso invece di una pagina vuota
- Scala di valutazione della seduta — auto-riflessione invece della valutazione della qualità + disclaimer (SCRUM-1005, Joanna)
- Colore del pulsante “Minimizza” cambiato in viola cobalto (SCRUM-1307, Ewa)
- Colore dell’etichetta “Trascrizione” da rosso a verde (SCRUM-1304, Ewa)
- “Registra ora” → “Registra seduta AdHoc” — nome del pulsante più accurato
- Sandbox con nastro verde nell’angolo in alto a sinistra + prefisso
[SANDBOX]nel titolo — per evitare confusione tra ambienti, oltre a una clonazione ripetibile PROD → Sandbox (IaC Azure e script)
✅ Checklist QA — cosa verificare dopo il deploy
| Funzionalità | Verifica |
|---|---|
| Seduta ad-hoc — Registrazione rapida | Clicca Registrazione rapida sulla dashboard o PWA — la registrazione inizia immediatamente, la seduta finisce nell’Inbox AdHoc |
| AssignPatient nell’Inbox AdHoc | Apri una registrazione ad-hoc — puoi assegnarla a un paziente esistente o crearne uno nuovo |
| Limite di pacchetto | La dashboard mostra il contatore di sedute per il mese corrente e quante ne rimangono nel pacchetto |
| Periodo di grazia dopo un pagamento fallito | Simulatore di abbonamento in PromptyAI — forza un pagamento fallito, ottieni l’accesso solo all’account per 14 giorni |
| Merge a 3 vie delle note | Nei dettagli della seduta, il campo Note mostra tre fonti fianco a fianco (terapeuta / AI / trascrizione); puoi scegliere cosa mantenere |
| 9 analisi CBT | La scheda delle analisi CBT mostra 9 elementi separati; ciascuno generato su richiesta; ciascuno ha un ingranaggio di modifica del prompt |
| Profilo pubblico — pannelli | Apri il tuo stesso profilo pubblico mentre sei connesso — i pannelli di modifica di biografia, specializzazione, contatto sono visibili |
| PiP video | Durante una seduta video clicca minimizza — la finestra si riduce a mini-player, il microfono continua a funzionare, torni senza la lobby |
| Sfocatura dello sfondo | Nella lobby video attiva la sfocatura dello sfondo — funziona immediatamente, nessun errore CSP |
| PDF concettualizzazione Beck | Genera il PDF della concettualizzazione — appare anche nei materiali di seduta |
| Toggle ABC v1/v2 | In concettualizzazione v2 puoi cambiare la fonte ABC tra versione 1 e 2 |
| Fattura da pagamenti selezionati | Seleziona alcuni pagamenti e clicca “Emetti fattura” — viene prodotta un’unica fattura dallo snapshot |
| Seduta ricorrente con Google Meet | La seconda e la terza seduta della serie hanno Google Meet impostato correttamente e l’email contiene il link giusto |
| Sedute dalle 22:00 | Il calendario settimanale mostra le sedute programmate dalle 22:00 in poi |
| Stato “No-show” | In una seduta completata / cancellata puoi cambiare lo stato a “No-show” |
| Tema scuro mobile | Nell’app mobile passa al tema scuro — le intestazioni di gruppo sono leggibili |
| Inbox AdHoc su mobile | Il mobile mostra l’inbox ad-hoc e permette di assegnare un paziente |
| Ri-verifica MFA | Quando cambi la password, l’app chiede di nuovo l’MFA |
| Pseudonimizzazione AI | Nei log vedi i dati del paziente che vanno all’AI come pseudonimi |
| Materiali di seduta come blob | Carica un file nei materiali di seduta — finisce in Azure Blob Storage, non su disco locale |
| Unicità globale dell’email del paziente | Aggiungi un secondo paziente con la stessa email — ottieni un 409 e il modale si chiude |
| Banner “Il server si sta avviando” | Dopo un periodo di inattività più lungo, l’ingresso nell’app mostra il banner invece di una pagina vuota |
🛠️ Cosa abbiamo risolto — in dettaglio
Oltre alle grandi funzionalità, sono state risolte ~80 segnalazioni da tester e utenti. In evidenza:
- Overlay PiP non era cliccabile — corretto
- Closure obsoleta in handleMaximize — la massimizzazione PiP non genera più errori
- PiP mantiene la connessione — in precedenza
room.disconnect()si attivava durante la transizione a schermo intero↔PiP - Pulsante “Partecipa alla seduta” era nascosto da un override CSS — scoperto
- Seconda seduta AITS per lo stesso paziente (SCRUM-1319, Ewa) — rimosso UNIQUE INDEX su
Session.VideoInviteToken - La numerazione delle sedute in concettualizzazione salta le cancellate (SCRUM-1267, Bohdan)
- Accesso null-safe ai Pagamenti in GetSessionDetailsAsync (SCRUM-1268, Bohdan)
- Collisione della seduta di test di Anna Pełnialska con Jan alle 14:00 — corretta nel seeder
- Rallentamento della dashboard — mappatura null-safe in GetTodaySessionsAsync e GetSessionDetailsAsync
- Auto-aggiornamento dopo la fine della registrazione dal microfono — funziona
- Il fallback batch non sovrascrive più il testo delle registrazioni precedenti né blocca l’UI con lo stato Processing
- Lingua di trascrizione dalle impostazioni della seduta — lo STT rispetta la preferenza del paziente
- CSP — consentiti
*.clarity.ms,blob:in connect-src, analytics in script-src - Loop di auth-refresh — interruzione delle richieste dopo un 401 e ritorno al login
- CSP MediaPipe WASM — la sfocatura dello sfondo funziona
- Nastro DEV/SANDBOX anche sul FQDN Azure, non solo sul dominio personalizzato
- Toast falso “Trascrizione fallita” all’ingresso nella seduta — rimosso
- Toast invece del banner rosso su trascrizione fallita + rimosso il pulsante “Resample”
- Tempo reale con diarizzazione nella seduta video — si avvia correttamente
- Streaming AI — AbortController per handler invece che condiviso (
BodyStreamBuffer was aborted) - Nginx non-root e Azure Container Apps — diverse iterazioni per farlo funzionare
- Lock distribuito (sp_getapplock) — le migrazioni all’avvio non vanno più in conflitto sui deploy paralleli
- DbUpdateConcurrencyException nel poller di trascrizione batch (SCRUM-1313, Bohdan)
- BlobNotFound come stato atteso (SCRUM-1314, Bohdan)
- Payload non-JSON del webhook Stripe (scanner / bot) — gestiti silenziosamente (SCRUM-1315, Bohdan)
- Rilevamento del formato audio tramite magic bytes (SCRUM-1311, Bohdan)
- Caricamento audio resiliente + Content-Type difensivo (SCRUM-1293, Bohdan)
- Migrazione FK ActiveEmbeddingModelId → ON DELETE NO ACTION
- Deploy del client dev — CACHE_BUST=
github.shaforza la ricostruzione del frontend
Questa è la release più grande e densa di questa primavera. Se una funzionalità ti sembra familiare — è perché era la tua richiesta o il tuo ticket. Grazie per ogni segnalazione e ogni screenshot.
Articolo preparato dal team di Therapy Support