Σημειώσεις Έκδοσης — 26 Απριλίου 2026
Πριν 19 μέρες κυκλοφορήσαμε μια μεγάλη έκδοση με την ενότητα διάγνωσης και την ανάλυση προσωδίας. Από τότε η ομάδα προώθησε ακόμα 295 αλλαγές — και δεν είναι μικρές. Σε αυτή την έκδοση μπορείτε να καταγράψετε μια ad-hoc συνεδρία πριν καν φτάσει ο ασθενής, οι σημειώσεις σας συγχωνεύονται με την εργασία AI και την απομαγνητοφώνηση δίπλα-δίπλα σε τρεις στήλες, το δημόσιο προφίλ θεραπευτή επιστρέφει σε πλήρη ισχύ, και η εφαρμογή κινητού έχει πλέον σκοτεινό θέμα. Στο παρασκήνιο περάσαμε από ένα πέρασμα ενίσχυσης SOC 2 / HIPAA, έναν έλεγχο DDD, και πλήρη ψευδωνυμοποίηση δεδομένων ασθενών στην πλευρά της AI.
💚 Ευχαριστούμε την ομάδα που οδήγησε αυτή την έκδοση — μέσω αναφορών, δοκιμών, κώδικα, και υπομονής:
- Bohdan — ad-hoc συνεδρίες, όρια πακέτου και περίοδος χάριτος, έλεγχος DDD, τιμολόγια KSeF, δεκάδες διορθώσεις (SCRUM-756, 815, 1267, 1268, 1276, 1280-1290, 1293, 1309-1316, 1353-1357, 1366, 1388, 1391, 1392)
- Bartek — τριπλή συγχώνευση, 9 ξεχωριστές αναλύσεις CBT, γνωσιακές διαστρεβλώσεις, μετρητής συνεδριών πακέτου (SCRUM-1266, 1320, 1338, 1368-1375, 1385, 1386)
- Ewa Cylwik / Ewa — PDF Beck, δεύτερη συνεδρία AITS για τον ίδιο ασθενή, σκοτεινό θέμα κινητού και κενή κατάσταση, πολύγλωσση αλληλογραφία, χρώματα διεπαφής, μοναδικότητα email ασθενούς (SCRUM-883, 898, 902, 1089, 1094, 1297, 1304, 1307, 1319)
- Joanna — επαναλαμβανόμενο ημερολόγιο, απόκρυψη Zoom, έγκαιρη ακύρωση, αυτοστοχασμός αντί για αξιολόγηση ποιότητας συνεδρίας (SCRUM-789, 874, 918, 919, 1005)
- Επιπλέον Bartlomiej για τις γνωσιακές διαστρεβλώσεις και τον μετρητή συνεδριών, που έγινε το θεμέλιο του νέου μοντέλου συνδρομής
1. ⚡ Ad-hoc συνεδρίες — καταγράψτε πριν φτάσει ο ασθενής
Αν χρειάστηκε ποτέ να ανοίξετε γρήγορα μια εγγραφή — επειδή ένας ασθενής εμφανίστηκε απροειδοποίητα, επειδή είναι μια εφάπαξ συμβουλευτική, επειδή είναι μια συνάντηση με κάποιον που δεν είναι ακόμα στα αρχεία σας — η νέα ενότητα ad-hoc συνεδρίας λύνει ολόκληρο αυτό το πρόβλημα.
- Κουμπί Γρήγορης Εγγραφής στο web dashboard, στο PWA στο κινητό, και στην εφαρμογή MAUI — ένα κλικ ξεκινά την εγγραφή πριν καν συμπληρώσετε τα δεδομένα του ασθενούς
- AdHoc Inbox — ένας ειδικός δίσκος για μη ανατεθειμένες εγγραφές μέχρι να αποφασίσετε πού πηγαίνουν
- AssignPatientModal — αναθέστε την εγγραφή σε έναν υπάρχοντα ασθενή ή δημιουργήστε έναν νέο απευθείας από το inbox
- Συνέχιση / Επανείσοδος στο δωμάτιο — ολοκληρώστε την εγγραφή μιας συνεδρίας που ξεκινήσατε νωρίτερα
- Διατήρηση ορφανών + αυτόματη ολοκλήρωση — οι μη ανατεθειμένες συνεδρίες για X ημέρες κλείνουν αυτόματα ώστε το inbox να παραμένει τακτοποιημένο
- Βίντεο «Έναρξη χωρίς ασθενή» — στο δωμάτιο LiveKit μπορείτε να ξεκινήσετε μια συνεδρία χωρίς σύγκρουση με έναν υπάρχοντα ασθενή· η Ad-Hoc καταλήγει στη συνέχεια στο inbox
Η ενότητα είναι κλειδωμένη πίσω από τον κωδικό PromptyAI στις Ρυθμίσεις — απενεργοποιημένη από προεπιλογή, για χρήστες που θέλουν να δουν πρώτα τα υπόλοιπα. Σχεδιάστηκε και υλοποιήθηκε από τον Bohdan.
2. 📊 Όρια πακέτου και περίοδος χάριτος — διαφανής συνδρομή
Οι συνδρομές πέρασαν από πλήρη ανασχεδίαση. Τα παλιά πλάνα Starter/Standard απενεργοποιήθηκαν, αντικαταστάθηκαν από τα Start / Practice / Pro — προσαρμοσμένα στον πραγματικό όγκο συνεδριών ανά μήνα.
- Μετρητής συνεδριών στο dashboard — δείτε πόσες συνεδρίες έχετε χρησιμοποιήσει αυτόν τον μήνα και πόσες απομένουν στο πακέτο σας
- Emails ορίου — αυτόματες ειδοποιήσεις στο 80% και 100% της χρήσης
- Προτροπή αναβάθμισης — όταν φτάσετε το όριο, λαμβάνετε μια ήπια πρόταση αλλαγής πλάνου αντί για σκληρό αποκλεισμό
- Τιμολόγηση από το Stripe + εκπτώσεις — η τιμή που βλέπετε στην εφαρμογή προέρχεται απευθείας από το Stripe με ενεργές εκπτώσεις εφαρμοσμένες (ο κωδικός beta tester δεν λήγει)
- Εγγενής ακύρωση συνδρομής — ακυρώστε απευθείας στην εφαρμογή, δεν χρειάζεται email στην υποστήριξη
- Περίοδος χάριτος 14 ημερών — αν μια πληρωμή αποτύχει, έχετε 14 ημέρες με πρόσβαση μόνο στον δικό σας λογαριασμό (χωρίς προεπισκοπήσεις ασθενών), με emails T+0 και T+13. Πραγματική απώλεια δεδομένων γίνεται μόνο μετά από δύο εβδομάδες
- Banner συνδρομής — καθαρό μήνυμα στην κορυφή της εφαρμογής χωρίς κενή μπάρα μεταξύ του μενού και της ειδοποίησης
- Προσομοιωτής ορίου συνεδριών — στο πάνελ PromptyAI υπάρχει μια λειτουργία δοκιμής όπου μπορείτε να δείτε πώς συμπεριφέρεται η εφαρμογή σε ένα πλήρες πακέτο
Κοινή εργασία των Bartlomiej (μετρητής και όρια, SCRUM-1266) και Bohdan (συνδρομή, χάρη, προτροπή αναβάθμισης — SCRUM-756, SCRUM-1366, SCRUM-1391, SCRUM-1392).
3. 📝 Τριπλή συγχώνευση για σημειώσεις — θεραπευτής, AI και απομαγνητοφώνηση σε μία προβολή
Αυτή είναι μία από τις μεγαλύτερες αρχιτεκτονικές αλλαγές στο παρασκήνιο, αλλά η επίδραση στην καθημερινή εργασία είναι εξαιρετικά ορατή: κάθε πεδίο σημειώσεων (Σημειώσεις, Περίληψη Συνεδρίας, ενότητες εννοιολόγησης) πλέον θυμάται ξεχωριστά τι έγραψε ο θεραπευτής, τι δημιούργησε η AI, και τι προήλθε από το δικτάφωνο / την απομαγνητοφώνηση.
- Σημειώσεις τριπλής όψης — η προβολή σημειώσεων εμφανίζει τρεις πηγές δίπλα-δίπλα: το κείμενό σας, τις προτάσεις AI, και την αυτόματη απομαγνητοφώνηση, και εσείς επιλέγετε τι θα κρατήσετε
- Περίληψη Συνεδρίας διπλής όψης + συγχώνευση JSON — στην περίληψη συνεδρίας συγχωνεύετε τη δουλειά σας με την ανάλυση AI σε ένα ενιαίο συνεκτικό έγγραφο
- Διαχωριστικό χρονικής σήμανσης — όταν επεξεργάζεστε χειροκίνητα ένα πεδίο AI, το σύστημα αφήνει ένα ορατό ίχνος για το πότε και ποιανού είναι αυτό το απόσπασμα
- Δείκτης [AI] από την πρώτη δημιουργία — τα πεδία σας δεν αναμιγνύονται με τα παραγόμενα
- SourceBadge — έγχρωμο χάπι με εικονίδιο που δείχνει από πού προέρχεται ένα απόσπασμα, αντί για κείμενο ΚΕΦΑΛΑΙΩΝ
- Αντικατάσταση ενότητας AI αντί για προσθήκη — όταν ζητάτε επαναδημιουργία της περίληψης, η AI αντικαθιστά την ενότητα αντί να στοιβάζει ένα ακόμα αντίγραφο από κάτω
Σχεδιάστηκε και υλοποιήθηκε από τον Bartek (SCRUM-1320, SCRUM-1368-1375). Στο παρασκήνιο: πλήρες i18n σε 8 γλώσσες και νέα πλαίσια DDD.
4. 🔍 Αναλύσεις CBT — 9 ξεχωριστές αναφορές κατ’ αίτηση
Η παλιά μονολιθική «δημιουργία ανάλυσης CBT» χωρίστηκε σε 9 ξεχωριστά στοιχεία που ο θεραπευτής εκτελεί όταν πραγματικά τα χρειάζεται. Λιγότερη αναμονή, περισσότερος έλεγχος.
- 9 ανεξάρτητες αναλύσεις — η καθεμία δημιουργείται ξεχωριστά, κατ’ αίτηση
- Γρανάζι επεξεργασίας prompt — κάντε κλικ στο γρανάζι δίπλα σε κάθε ανάλυση για να δείτε/τροποποιήσετε το prompt που θα χρησιμοποιήσει η AI
- Ενότητα ΑΝΑΛΥΣΕΙΣ CBT πίσω από τον κωδικό PromptyAI — ενότητα διαθέσιμη μετά την εισαγωγή του κωδικού στις Ρυθμίσεις, για χρήστες που δοκιμάζουν νέα χαρακτηριστικά
Οι γνωσιακές διαστρεβλώσεις απέκτησαν τη δική τους προβολή (αναφέρθηκε από τον Bartlomiej, SCRUM-1385):
- Προβολή δεδομένων αντί για αναφορά AI — βλέπετε συγκεκριμένες παραθέσεις από την απομαγνητοφώνηση με ετικέτες AI, όχι μια αφήγηση που δημιουργήθηκε από αυτές
- Όλες οι παραθέσεις μετά την επέκταση — χωρίς φίλτρο εύρους ημερομηνιών, η επέκταση αποκαλύπτει τα πάντα
- Διαθέσιμο στο κύριο μενού — κάτω από την Εννοιολόγηση v2
Το παλιό prompt COGNITIVE_DISTORTIONS_INVENTORY αφαιρέθηκε (SCRUM-1386).
5. 🌐 Δημόσιο προφίλ θεραπευτή — πλήρης ανανέωση με συρτάρια επεξεργασίας
Το δημόσιο προφίλ κάτω από το brand aitherapy.support έχει ανασχεδιαστεί πλήρως.
- 3 νέα συρτάρια επεξεργασίας — βιογραφικό, εξειδικεύσεις, στοιχεία επικοινωνίας επεξεργάζονται σε κομψά πλαϊνά πάνελ
- Λειτουργία επεξεργασίας ιδιοκτήτη — όταν βλέπετε το δικό σας δημόσιο προφίλ ενώ είστε συνδεδεμένοι, τα κουμπιά επεξεργασίας είναι άμεσα διαθέσιμα
- Χρόνια εμπειρίας — νέο πεδίο
YearsOfExperienceορατό στο δημόσιο προφίλ - Επανασχεδιασμός χρωμάτων — παλέτα σε αποχρώσεις sage/lavender κάτω από το brand aitherapy.support
- Η ενότητα «Το απόρρητό σας» αφαιρέθηκε — ήταν περιττή· ο ΓΚΠΔ βρίσκεται στο footer
- Εικονίδια Lucide — μοντέρνα, καθαρή τυπογραφία εικονιδίων
Στο παρασκήνιο, προστέθηκε ένα δημόσιο endpoint GET /api/public/therapists — επιστρέφοντας θεραπευτές με ενεργά δημόσια προφίλ. Θεμέλιο για έναν κατάλογο θεραπευτών.
6. 🎥 Συνεδρίες βίντεο — PiP, εναλλαγή καμερών, διορθωμένο θόλωμα φόντου
Το βίντεο έλαβε ένα σύνολο διορθώσεων που θα παρατηρήσει κάθε θεραπευτής που διεξάγει συνεδρίες μέσω της εφαρμογής.
- PiP / ελαχιστοποίηση — ελαχιστοποιήστε το δωμάτιο βίντεο σε ένα αιωρούμενο mini-player και ελέγξτε σημειώσεις σε άλλη καρτέλα χωρίς να διακόψετε τη σύνδεση. Το μικρόφωνο και η κάμερα συνεχίζουν να λειτουργούν
- Εναλλαγή καμερών — αλλάξτε ποιος βρίσκεται στην κύρια προβολή και ποιος στο mini με ένα κλικ
- Επαναφορά PiP — επιστρέφοντας από την ελαχιστοποίηση, παρακάμπτετε τον προθάλαμο (PreJoinLobby) και μπαίνετε απευθείας στη συνομιλία
- Ήχος ανά συμμετέχοντα για διάκριση ομιλητών — η απομαγνητοφώνηση διαχωρίζει τους ομιλητές ακόμα και σε PiP
- Διορθωμένο θόλωμα φόντου — το CSP εμπόδιζε το MediaPipe WASM· το θόλωμα λειτουργεί πλέον με ένα κλικ
- Πιο καθαρή διεπαφή συνεδρίας AITS — ο βοηθός AI εξαφανίστηκε από τη γραμμή εργαλείων, λιγότερος οπτικός θόρυβος
- Επικάλυψη PiP με δυνατότητα κλικ — αφαιρώντας το
pointerEvents:noneκαι τοoverflow:hidden, τα κουμπιά PiP ανταποκρίνονται σε κλικ - Κουμπί «Συμμετοχή στη συνεδρία» — ήταν κρυμμένο από μια παράκαμψη CSS, τώρα είναι ορατό
- Stale closure στο handleMaximize — διορθώθηκε· η μεγιστοποίηση PiP δεν πετάει πλέον σφάλμα
7. 📐 Εννοιολόγηση Beck v2 και ABC — PDF, εναλλαγή έκδοσης, επεξεργασία prompt
- PDF Beck και ABC v2 — διορθωμένη μορφοποίηση και αυτόματη συμπερίληψη στα υλικά συνεδρίας (αναφέρθηκε από την Ewa, SCRUM-1297)
- PDF Beck — ενότητες μόνο με περίγραμμα, έγχρωμες εξειδικεύσεις, καθαρά αρχικά, βέλος SVG μεταξύ ενοτήτων
- Εναλλαγή ABC v1/v2 στην Εννοιολόγηση v2 — επιλέξτε ποια έκδοση ABC θα εμφανιστεί
- Γρανάζι επεξεργασίας prompt στο ABC v2 — τροποποιήστε το prompt AI στην καρτέλα ABC v2
- Εξαγωγή PDF για αναλύσεις AI και ABC ανά συνεδρία — μεμονωμένες αναλύσεις εξάγονται ξεχωριστά
- Πληθυντικοποίηση ετικετών ABC σε 8 γλώσσες — ο πίνακας εννοιολόγησης έχει σωστές μορφές πληθυντικού
- Διόρθωση κενών στηλών ABC — το backend επιστρέφει σωστά ονόματα ιδιοτήτων πληθυντικού
8. 🧾 Τιμολόγια και KSeF — επιλογή πληρωμής + μηχανή καταστάσεων
Το σύστημα τιμολόγησης αναδιαμορφώθηκε για συμμόρφωση με το KSeF (πολωνικό εθνικό σύστημα ηλεκτρονικής τιμολόγησης).
- Τιμολόγιο από επιλεγμένες πληρωμές — επιλέξτε πληρωμές και το σύστημα δημιουργεί ένα ενιαίο τιμολόγιο από αυτές (στιγμιότυπο + Payment FK)
- Σημείο εισόδου «Έκδοση τιμολογίου» στην οικονομική προβολή του θεραπευτή — γρήγορη πρόσβαση από το dashboard
- Αφαίρεση στοιχείου στο παράθυρο έκδοσης τιμολογίου — διορθώστε λάθη επί τόπου
- Διαχωρισμός KSeF dev/prod — το sandbox και η παραγωγή λειτουργούν με ξεχωριστά διαπιστευτήρια
- Μηχανή καταστάσεων τιμολογίου (SCRUM-1357 Bohdan) — Πρόχειρο → Εκδόθηκε → Στάλθηκε → Ακυρώθηκε, με περιορισμό βάσης δεδομένων σε παράνομες μεταβάσεις
- AE KsefToken — το token KSeF κρυπτογραφημένο με Always Encrypted
Κοινή εργασία του Bohdan (SCRUM-1357, SCRUM-1388).
9. 📅 Ημερολόγιο, επαναλαμβανόμενες συνεδρίες, και τοποθεσίες
Το εβδομαδιαίο και επαναλαμβανόμενο ημερολόγιο έλαβε δεκάδες μικρές αλλά ορατές βελτιώσεις — οι περισσότερες αναφέρθηκαν από την Joanna και την Ewa.
- Συνεδρίες από τις 22:00 — ήταν αόρατες στο εβδομαδιαίο πλέγμα, τώρα εμφανίζονται μέχρι το τέλος της ημέρας
- Όλες οι ώρες στο πλέγμα επαναλαμβανόμενης θέσης (SCRUM-874, Joanna)
- Έγκαιρα ακυρωμένη συνεδρία — δεν εμφανίζεται ως «Απλήρωτη» (SCRUM-918, Joanna)
- Ετικέτα επανάληψης δίπλα στην επαναλαμβανόμενη θέση (SCRUM-919, Joanna) — βλέπετε «εβδομαδιαία», «δεκαπενθήμερη» δίπλα σε κάθε επαναλαμβανόμενη συνεδρία
- Απόκρυψη της ενσωμάτωσης Zoom από τη διεπαφή (SCRUM-789, Joanna) — το Zoom δεν υποστηρίζεται πλέον ως κανάλι βίντεο
- Αναδυόμενο συνεδρίας στο ημερολόγιο — δεν κρύβεται πλέον εκτός οθόνης
- TherapistAvailability — αυτόματη αποθήκευση σε κάθε αλλαγή (debounce 800 ms), δεν χρειάζεται κουμπί αποθήκευσης
- AddSessionModal — επιλογή «δημιουργία συνεδρίας εκτός ωρών διαθεσιμότητας» — εξαιρέσεις μπορούν να επιβάλουν μια θέση
- Κατάσταση «Δεν εμφανίστηκε» (NoShow=5) — νέα κατάσταση, δυνατή να οριστεί ακόμα και από ολοκληρωμένη ή ακυρωμένη συνεδρία
- RecurringSessionsCalendar — πλακίδια περίληψης πάνω από το υπόμνημα και το πλέγμα
Οι τοποθεσίες θεραπευτή απέκτησαν κανάλια διαδικτυακής συνάντησης ανά τοποθεσία:
- Λειτουργία δια ζώσης — πεδία διεύθυνσης και πόλης για τοποθεσίες δια ζώσης
- Διακόπτης δια ζώσης/διαδικτυακά αντί για πλαίσιο ελέγχου — σαφέστερη επιλογή λειτουργίας
- Κανάλι διαδικτυακά ανά τοποθεσία — διαφορετικές τοποθεσίες μπορούν να έχουν διαφορετικά κανάλια (AITS, Google Meet, εξωτερικός σύνδεσμος), αυτόματα διαδιδόμενα στις συνεδρίες
- Μόνιμα δωμάτια συνάντησης ανά ασθενή — κάθε ασθενής έχει έναν μόνιμο σύνδεσμο δωματίου AITS και έναν ξεχωριστό εξωτερικό σύνδεσμο ορατό στις ρυθμίσεις ασθενούς
- Διαγραφή τοποθεσίας — διορθώθηκε (εξαφανιζόταν από τη βάση δεδομένων αλλά παρέμενε στη λίστα της διεπαφής)
Και τέλος τύπος συνάντησης σε επαναλαμβανόμενες συνεδρίες — διορθωμένη διάδοση του MeetingType και του MeetingLink από τη διαμόρφωση της επαναλαμβανόμενης σειράς σε κάθε παραγόμενη συνεδρία και στα emails υπενθύμισης (SCRUM-902, Ewa).
10. 📱 Εφαρμογή κινητού — σκοτεινό θέμα, AdHoc Inbox, στίλβωση
Το κινητό μετακινήθηκε στην έκδοση 1.5.0 (build 18) με πλήθος αλλαγών ορατών στον χρήστη και μερικές πινελιές υπογραφής App Store / Play Store.
- Σκοτεινό θέμα — πλήρης σκοτεινή λειτουργία με ευανάγνωστες κεφαλίδες ομάδων (SCRUM-1089, Ewa + SCRUM-815)
- Ρυθμιζόμενες υπενθυμίσεις — επιλέξτε πότε θέλετε ειδοποίηση συνεδρίας
- Υπενθύμιση κινητού 15 λεπτά — υπενθύμιση 15 λεπτών πριν τη συνεδρία + προειδοποίηση όταν οι ειδοποιήσεις συστήματος είναι απενεργοποιημένες (SCRUM-815, Bohdan)
- Κενή κατάσταση για τη λίστα συνεδριών — αντί για κενή οθόνη, μια πλουσιότερη ένταξη (SCRUM-1094, Ewa)
- Banner αυτόματης ανανέωσης — όταν η εφαρμογή εντοπίζει μια ενημέρωση, εμφανίζει ένα ελκυστικό banner ανανέωσης
- AdHoc Inbox + AssignPatient + γρήγορη εκκίνηση στο MAUI (SCRUM-1289, Bohdan)
- Γρήγορη εκκίνηση PWA κινητού για ad-hoc συνεδρίες (SCRUM-1286, Bohdan)
- Responsive web view για κινητό — η επιφάνεια εργασίας παραμένει αμετάβλητη, στο κινητό η διάταξη προσαρμόζεται στη στενή οθόνη
- Χειριστής deep-link στο iOS — χρησιμοποιεί BindingContext, εγγραφή URL scheme
- iOS NSLocation purpose strings — διόρθωση του ITMS-90683 (το App Store απέρριψε το build χωρίς αυτά)
- Android AAB — ρητό βήμα jarsigner
- Υλικά App Store Connect και Google Play — πλήρες πακέτο συν έλεγχος WCAG 2.2
11. 🔐 Ασφάλεια: SOC 2 / HIPAA, MFA, πλήρης ψευδωνυμοποίηση AI
Στο παρασκήνιο κάτω από το επίπεδο προϊόντος πραγματοποιήσαμε ένα πλήρες πέρασμα ενίσχυσης SOC 2 και HIPAA συν έναν έλεγχο DDD με πέντε συγκεκριμένες παραδόσεις.
- Επανεπαλήθευση MFA για κρίσιμες λειτουργίες — για ευαίσθητες ενέργειες (αλλαγή κωδικού πρόσβασης, εξαγωγή δεδομένων) επιβεβαιώνετε ξανά με MFA
- Εφεδρικοί κωδικοί για MFA — κωδικοί έκτακτης ανάγκης αν χάσετε το τηλέφωνό σας
- IAnonymizedLlmGateway (SCRUM-1353, Bohdan) — όλες οι κλήσεις μοντέλου AI περνούν πλέον μέσα από μια πύλη ψευδωνυμοποίησης. Ονόματα, ημερομηνίες, τοποθεσίες αντικαθίστανται με ψευδώνυμα πριν φύγουν από την εφαρμογή· η AI λαμβάνει μόνο την ανωνυμοποιημένη έκδοση
- Ψευδωνυμοποίηση ειδοποιήσεων email/SMS (SCRUM-1354) — τα πρότυπα μηνυμάτων επίσης δεν διαρρέουν δεδομένα ασθενούς κατά την αποστολή
- Tokens OAuth Google/Zoom κρυπτογραφημένα με Always Encrypted (SCRUM-1355) — τα tokens πρόσβασης ενσωμάτωσης είναι κρυπτογραφημένα σε επίπεδο στήλης
- Σημαία Patient.PendingConsent (SCRUM-1356) — οι ασθενείς χωρίς ενεργή συναίνεση λαμβάνουν μια ροή επιβολής + badge frontend
- Μηχανή καταστάσεων τιμολογίου (SCRUM-1357) — οι καταστάσεις τιμολογίου είναι αμετάβλητες σε μη έγκυρες κατευθύνσεις, επιβαλλόμενες σε επίπεδο βάσης δεδομένων
- Αμεταβλητότητα ελέγχου + στιγμιότυπο χρήστη σε 3 πίνακες ελέγχου — το ημερολόγιο ενεργειών δεν μπορεί να τροποποιηθεί εκ των υστέρων
- DeanonymizationAuditLog — κάθε χρήση δεδομένων ασθενούς μετά την αποανωνυμοποίηση καταγράφεται μαζί με το στιγμιότυπο email + εμφανιζόμενου ονόματος του χρήστη που την πραγματοποίησε
- Αφαίρεση σκληρά κωδικοποιημένων μυστικών — όλα τα κλειδιά και οι κωδικοί πρόσβασης από το appsettings.json μεταφέρθηκαν στο Azure Key Vault
- Always Encrypted για όλα τα δεδομένα κειμένου χρήστη (ADR-0018) — αρχιτεκτονική κατεύθυνση εγκεκριμένη· περισσότεροι πίνακες θα μεταναστεύσουν στην επόμενη έκδοση
- Ανάλυση κενών συμμόρφωσης ISO/IEC — 95 κενά σε 9 πρότυπα χαρτογραφημένα, με σχέδιο αποκατάστασης
Υποστηρίζεται από έναν πλήρη έλεγχο DDD (Συνεδρίες 1-8, Φάσεις 1-6) — αναδιάρθρωση πλαισίου τομέα, τεκμηρίωση αρχιτεκτονικής, ADRs, mermaid + δοκιμές, playbooks, ενσωμάτωση Confluence.
12. 👤 Portal ασθενούς — αναλύσεις στους Στόχους, υλικά, καλύτερη προεπισκόπηση
- Εννοιολόγηση Beck στην καρτέλα «Στόχοι» του ασθενούς — όταν δημοσιεύετε την εννοιολόγηση, ο ασθενής τη βλέπει στο portal του
- Δημοσίευση αναλύσεων στο portal ασθενούς + προτιμήσεις ειδοποιήσεων (SCRUM-1338, Bartlomiej) — ελέγξτε τι και πότε λαμβάνει ο ασθενής
- Προεπισκόπηση PDF στο portal —
iframeαντί γιαembed, το CSP επιτρέπειblob:(τα PDF φορτώνουν) - Προεπισκόπηση portal ασθενούς από την προβολή του θεραπευτή — δείτε τι βλέπει ο ασθενής (chrome σε wrapper, dashboard 1:1)
- Υλικά συνεδρίας στο Azure Blob Storage — SessionMaterial ως blob, όχι πλέον τοπικό σύστημα αρχείων
- Ενότητα συναίνεσης / εγγράφων + πηγή εγγραφής στις ρυθμίσεις ασθενούς
- Καθολική μοναδικότητα email ασθενούς (SCRUM-898) — ένας δεύτερος ασθενής με το ίδιο email λαμβάνει 409 και το παράθυρο κλείνει (SCRUM-898, Ewa)
- Seeder προτύπων ειδοποιήσεων για SK, CA, RU, UK, LT (SCRUM-883, Joanna) — πλήρης πολύγλωσση αλληλογραφία
- Επαναφορά resolver στην προεπιλογή πλατφόρμας — όταν ένας θεραπευτής δεν έχει παρακάμψει το πρότυπο, στέλνεται το προεπιλεγμένο πολύγλωσσο (SCRUM-883)
13. 🎙️ Απομαγνητοφώνηση — αξιόπιστη εγγραφή, προσθήκη, πραγματικός χρόνος με διάκριση ομιλητών
- Προσθήκη σε υπάρχουσα απομαγνητοφώνηση — συνεχίστε την εγγραφή στην ίδια συνεδρία· τα τμήματα προστίθενται (η πρόθεση επιβιώνει από ανανέωση σελίδας)
- Ήχος ανά συμμετέχοντα για διάκριση ομιλητών — η απομαγνητοφώνηση βίντεο διαχωρίζει τους ομιλητές σε ανεξάρτητα κανάλια
- Η απομαγνητοφώνηση επιβιώνει από PiP — η ελαχιστοποίηση του δωματίου δεν διακόπτει την εγγραφή
- Γλώσσα απομαγνητοφώνησης από τις ρυθμίσεις συνεδρίας — το STT χρησιμοποιεί τη γλώσσα που έχετε ορίσει για τον ασθενή
- Αυτόματη ανανέωση για απομαγνητοφώνηση σε εστίαση / αλλαγή ορατότητας / επιστροφή από βίντεο
- Επιβεβαίωση κατά τη διακοπή εγγραφής < 2δ — προστασία από κενό WAV λόγω λανθασμένου κλικ
- Badge «Αποστολή» στη λίστα συνεδριών — βλέπετε πότε μια εγγραφή βρίσκεται σε μεταφόρτωση
- Πραγματικός χρόνος με διάκριση ομιλητών σε συνεδρία βίντεο — δεν ξεκινούσε πριν· τώρα λειτουργεί
- Εφεδρικό OPFS + 48 kbps Opus — η εγγραφή αποθηκεύεται επίσης τοπικά στο OPFS ως εφεδρικό, ενοποιημένες παράμετροι ήχου
- Απευθείας μεταφόρτωση ήχου SAS (SCRUM-1276, Bohdan) — ο ήχος πηγαίνει απευθείας στο Azure μέσω URL SAS, παρακάμπτοντας το backend
- m4a εγγενές στο Azure Speech — το m4a διαχειρίζεται εγγενώς, χωρίς μετατροπή
- Ανίχνευση μορφής με magic bytes (SCRUM-1311, Bohdan) — όταν Content-Type=
application/octet-stream, η μορφή ανιχνεύεται από το περιεχόμενο του αρχείου - Hub χωρίς κείμενο DB — το SignalR realtime hub δεν αποθηκεύει πλέον κείμενο στη βάση δεδομένων· το finishPending χρησιμοποιεί multipart POST όπως το MAUI
- Διόρθωση SignalR 1006 — αφαιρέθηκε το skipNegotiation ώστε το Azure SignalR να λειτουργεί + ρύθμιση keep-alive
- Δείκτης [AI] από την πρώτη δημιουργία + αξιόπιστη αναζήτηση δείκτη
14. 💬 Ειδοποιήσεις, ρυθμίσεις ασθενούς, μικρά UX
- NotificationTemplatesAdmin — διακόπτης HTML/Text στον επεξεργαστή email
- NotificationSettings — η προεπισκόπηση email αποδίδει HTML με εναλλακτική λύση
- PromptEditModal — ανασχεδιασμένο: καρτέλες, επιλογέας μοντέλου, απαιτούμενα ονόματα εκδόσεων
- Επαναφορά σημαίας Hide_dev_ui κατά την αποσύνδεση — οι σημαίες προγραμματιστή δεν παραμένουν μεταξύ συνεδριών
- Δοκιμαστικός ασθενής Ann Fauler — αγγλικό 1:1 της πολωνικής Anna Pełnialska για επιδείξεις μόνο σε αγγλικά
- Διακόπτης λειτουργίας παρουσίασης dev UI — γρήγορη εναλλαγή σε λειτουργία παρουσίασης
- Αναφορά σφάλματος — συνημμένα Jira + ετικέτα αναφέροντος + κεντραρισμένο κουμπί «Υποβολή»
- Διορθωμένος βρόχος ανανέωσης auth — ματαίωση αιτημάτων και επιστροφή στη σύνδεση σε 401
- Banner «Ο διακομιστής ξεκινά» — σε ψυχρή εκκίνηση (scale-to-zero) εμφανίζουμε μια ειδοποίηση αντί για κενή σελίδα
- Κλίμακα αξιολόγησης συνεδρίας — αυτοστοχασμός αντί για αξιολόγηση ποιότητας + αποποίηση ευθύνης (SCRUM-1005, Joanna)
- Το χρώμα του κουμπιού «Ελαχιστοποίηση» άλλαξε σε βιολετί κοβαλτίου (SCRUM-1307, Ewa)
- Το χρώμα της ετικέτας «Απομαγνητοφώνηση» από κόκκινο σε πράσινο (SCRUM-1304, Ewa)
- «Εγγραφή τώρα» → «Εγγραφή Ad-Hoc συνεδρίας» — πιο ακριβές όνομα κουμπιού
- Sandbox με πράσινη κορδέλα στην πάνω αριστερή γωνία + πρόθεμα
[SANDBOX]στον τίτλο — για την αποφυγή σύγχυσης περιβάλλοντος, συν μια επαναλήψιμη κλωνοποίηση PROD → Sandbox (Azure IaC + scripts)
✅ Λίστα Ελέγχου QA — Τι να επαληθεύσετε μετά τη διανομή
| Χαρακτηριστικό | Επαλήθευση |
|---|---|
| Ad-hoc συνεδρία — Γρήγορη Εγγραφή | Κάντε κλικ στο Γρήγορη Εγγραφή στο dashboard ή PWA — η εγγραφή ξεκινά αμέσως, η συνεδρία καταλήγει στο AdHoc Inbox |
| AssignPatient στο AdHoc Inbox | Ανοίξτε μια ad-hoc εγγραφή — μπορείτε να την αναθέσετε σε υπάρχοντα ασθενή ή να δημιουργήσετε νέο |
| Όριο πακέτου | Το dashboard εμφανίζει τον μετρητή συνεδριών για τον τρέχοντα μήνα και πόσες απομένουν στο πακέτο |
| Περίοδος χάριτος μετά από αποτυχημένη πληρωμή | Προσομοιωτής συνδρομής στο PromptyAI — εξαναγκάστε μια αποτυχημένη πληρωμή, λαμβάνετε πρόσβαση μόνο στον λογαριασμό για 14 ημέρες |
| Τριπλή συγχώνευση σημειώσεων | Στις λεπτομέρειες συνεδρίας, το πεδίο Σημειώσεις εμφανίζει τρεις πηγές δίπλα-δίπλα (θεραπευτής / AI / απομαγνητοφώνηση)· μπορείτε να επιλέξετε τι θα κρατήσετε |
| 9 αναλύσεις CBT | Η καρτέλα αναλύσεων CBT εμφανίζει 9 ξεχωριστά στοιχεία· καθένα δημιουργείται κατ’ αίτηση· καθένα έχει γρανάζι επεξεργασίας prompt |
| Δημόσιο προφίλ — συρτάρια | Ανοίξτε το δικό σας δημόσιο προφίλ ενώ είστε συνδεδεμένοι — τα συρτάρια επεξεργασίας βιογραφικού, εξειδίκευσης, επικοινωνίας είναι ορατά |
| Βίντεο PiP | Κατά τη διάρκεια μιας συνεδρίας βίντεο κάντε κλικ στην ελαχιστοποίηση — το παράθυρο συμπτύσσεται σε mini-player, το μικρόφωνο συνεχίζει να λειτουργεί, επιστρέφετε χωρίς προθάλαμο |
| Θόλωμα φόντου | Στον προθάλαμο βίντεο ενεργοποιήστε το θόλωμα φόντου — λειτουργεί αμέσως, χωρίς σφάλματα CSP |
| PDF εννοιολόγησης Beck | Δημιουργήστε το PDF εννοιολόγησης — εμφανίζεται επίσης στα υλικά συνεδρίας |
| Εναλλαγή ABC v1/v2 | Στην εννοιολόγηση v2 μπορείτε να εναλλάξετε την πηγή ABC μεταξύ έκδοσης 1 και 2 |
| Τιμολόγιο από επιλεγμένες πληρωμές | Επιλέξτε μερικές πληρωμές και κάντε κλικ στο «Έκδοση τιμολογίου» — παράγεται ένα ενιαίο τιμολόγιο από το στιγμιότυπο |
| Επαναλαμβανόμενη συνεδρία με Google Meet | Η δεύτερη και τρίτη συνεδρία στη σειρά έχουν σωστά ορισμένο το Google Meet και το email περιέχει τον σωστό σύνδεσμο |
| Συνεδρίες από τις 22:00 | Το εβδομαδιαίο ημερολόγιο εμφανίζει συνεδρίες προγραμματισμένες στις 22:00 και αργότερα |
| Κατάσταση «Δεν εμφανίστηκε» | Σε μια ολοκληρωμένη / ακυρωμένη συνεδρία μπορείτε να αλλάξετε την κατάσταση σε «Δεν εμφανίστηκε» |
| Σκοτεινό θέμα κινητού | Στην εφαρμογή κινητού αλλάξτε σε σκοτεινό θέμα — οι κεφαλίδες ομάδων είναι ευανάγνωστες |
| AdHoc Inbox σε κινητό | Το κινητό εμφανίζει το ad-hoc inbox και επιτρέπει την ανάθεση ασθενούς |
| Επανεπαλήθευση MFA | Κατά την αλλαγή κωδικού πρόσβασης, η εφαρμογή ζητά ξανά MFA |
| Ψευδωνυμοποίηση AI | Στα logs βλέπετε δεδομένα ασθενούς να πηγαίνουν στην AI ως ψευδώνυμα |
| Υλικά συνεδρίας ως blob | Μεταφορτώστε ένα αρχείο στα υλικά συνεδρίας — καταλήγει στο Azure Blob Storage, όχι στον τοπικό δίσκο |
| Καθολική μοναδικότητα email ασθενούς | Προσθέστε έναν δεύτερο ασθενή με το ίδιο email — λαμβάνετε 409 και το παράθυρο κλείνει |
| Banner «Ο διακομιστής ξεκινά» | Μετά από μεγαλύτερη περίοδο αδράνειας, η είσοδος στην εφαρμογή εμφανίζει το banner αντί για κενή σελίδα |
🛠️ Τι διορθώσαμε — τα ψιλά γράμματα
Επιπλέον στα μεγάλα χαρακτηριστικά, επιλύθηκαν ~80 αναφορές από δοκιμαστές και χρήστες. Επισημάνσεις:
- Η επικάλυψη PiP δεν είχε δυνατότητα κλικ — διορθώθηκε
- Stale closure στο handleMaximize — η μεγιστοποίηση PiP δεν πετάει πλέον σφάλμα
- Το PiP διατηρεί τη σύνδεση — προηγουμένως το
room.disconnect()ενεργοποιούνταν κατά τη μετάβαση πλήρους οθόνης↔PiP - Το κουμπί «Συμμετοχή στη συνεδρία» ήταν κρυμμένο από μια παράκαμψη CSS — αποκαλύφθηκε
- Δεύτερη συνεδρία AITS για τον ίδιο ασθενή (SCRUM-1319, Ewa) — αφαίρεση UNIQUE INDEX στο
Session.VideoInviteToken - Η αρίθμηση συνεδρίας στην εννοιολόγηση παραλείπει τις ακυρωμένες (SCRUM-1267, Bohdan)
- Πρόσβαση Null-safe Payment στο GetSessionDetailsAsync (SCRUM-1268, Bohdan)
- Σύγκρουση δοκιμαστικής συνεδρίας της Anna Pełnialska με τον Jan στις 14:00 — διορθώθηκε στο seeder
- Επιβράδυνση dashboard — null-safe mapping στο GetTodaySessionsAsync και GetSessionDetailsAsync
- Αυτόματη ανανέωση μετά το τέλος εγγραφής από μικρόφωνο — λειτουργεί
- Εφεδρική λύση batch δεν αντικαθιστά κείμενο από προηγούμενες εγγραφές ούτε μπλοκάρει τη διεπαφή με κατάσταση Επεξεργασία
- Γλώσσα απομαγνητοφώνησης από τις ρυθμίσεις συνεδρίας — το STT σέβεται την προτίμηση του ασθενούς
- CSP — επιτρέποντας
*.clarity.ms,blob:στο connect-src, analytics στο script-src - Βρόχος ανανέωσης auth — ματαίωση αιτημάτων μετά από 401 και επιστροφή στη σύνδεση
- CSP MediaPipe WASM — το θόλωμα φόντου λειτουργεί
- Κορδέλα DEV/SANDBOX επίσης στο Azure FQDN, όχι μόνο στον προσαρμοσμένο τομέα
- Ψευδές toast «Αποτυχία απομαγνητοφώνησης» κατά την είσοδο στη συνεδρία — αφαιρέθηκε
- Toast αντί για κόκκινο banner σε αποτυχημένη απομαγνητοφώνηση + αφαιρέθηκε το κουμπί «Επαναδειγματοληψία»
- Πραγματικός χρόνος με διάκριση ομιλητών σε συνεδρία βίντεο — ξεκινά σωστά
- AI streaming — AbortController ανά χειριστή αντί για κοινόχρηστο (
BodyStreamBuffer was aborted) - Nginx non-root + Azure Container Apps — πολλαπλές επαναλήψεις για να λειτουργήσει
- Κατανεμημένο κλείδωμα (sp_getapplock) — οι μεταναστεύσεις εκκίνησης δεν συγκρούονται πλέον σε παράλληλες αναπτύξεις
- DbUpdateConcurrencyException στο batch transcription poller (SCRUM-1313, Bohdan)
- BlobNotFound ως αναμενόμενη κατάσταση (SCRUM-1314, Bohdan)
- Μη-JSON payloads στο Stripe webhook (scanners / bots) — χειρίζονται σιωπηλά (SCRUM-1315, Bohdan)
- Ανίχνευση μορφής ήχου με magic bytes (SCRUM-1311, Bohdan)
- Ανθεκτική μεταφόρτωση ήχου + αμυντικό Content-Type (SCRUM-1293, Bohdan)
- Μετανάστευση FK ActiveEmbeddingModelId → ON DELETE NO ACTION
- Ανάπτυξη dev client — το CACHE_BUST=
github.shaαναγκάζει την επανακατασκευή του frontend
Αυτή είναι η μεγαλύτερη, πιο πυκνή έκδοση αυτής της άνοιξης. Αν ένα χαρακτηριστικό σας φαίνεται οικείο — είναι γιατί ήταν το αίτημά σας ή το ticket σας. Ευχαριστούμε για κάθε αναφορά και κάθε screenshot.
Άρθρο που ετοιμάστηκε από την ομάδα του Therapy Support