În octombrie 2026, testarea fluxului de contracte din PsySign a scos o listă de probleme. Niciuna nu era o prăbușire. Erau lucruri pe care un utilizator le observă în prima zi și pe care testele noastre nu le vedeau.
Ce ne așteptam
Cabinetul încarcă un șablon de contract, alege un client, contractul se completează cu datele cabinetului, clientul semnează online și rezultatul este un PDF. Fiecare pas funcționa separat. Contractul semnat, în schimb, nu arăta ca un contract.
Butonul de PDF dădea un fișier JSON
Butonul „Descarcă PDF” de pe pagina de semnare descărca mai întâi jurnalul de audit, ca fișier JSON, și abia apoi genera PDF-ul. Chrome bloca a doua descărcare, deci cine apăsa butonul primea doar JSON. PDF-ul nici nu conținea jurnalul. Acum butonul face un singur lucru: generează PDF-ul.
Previzualizarea era ilizibilă
Fereastra de previzualizare punea text închis pe fundal închis. Am schimbat elementul de afișare și am păstrat curățarea HTML-ului, care e aceeași ca pe pagina de semnare.
Contractul din listă apărea ca un singur paragraf
Componenta care afișează contractul nu păstra rândurile noi, deci tot textul se lipea într-un paragraf. Acum le păstrează, iar conținutul HTML se afișează ca înainte.
Liniile de semnătură erau ignorate
Șablonul de test avea „Semnătură client: ____” și „Semnătură psiholog: ____”. Aplicația nu le recunoștea drept locuri de semnătură. Acum fiecare etichetă de semnătură urmată de o zonă goală devine câmp, iar etichete ca „Data: ____” rămân neatinse. Când două semnături stăteau pe aceeași linie, aplicația adăuga la sfârșit un al doilea bloc de semnătură, cu liniile originale rămase goale. Am făcut detectorul să citească fiecare segment al liniei separat, folosind aceeași funcție de analiză ca restul codului, nu o a doua.
Eticheta apărea de două ori
Contractul semnat spunea „Semnătura client:”, apoi „Semnătura:”, apoi caseta de semnătură. Funcția de pe server adaugă propria etichetă după cea din șablon. Am corectat afișarea, nu funcția de pe server, ca să nu cerem o nouă publicare, iar corectura se vede și la contractele deja salvate. Se scoate numai o linie „Semnătura:” izolată, direct deasupra casetei, când linia dinaintea ei este deja o etichetă de semnătură. Orice altceva rămâne cum e.
Exportul Word nu semăna cu ecranul
Avea aceeași etichetă dublă și, pentru un loc nesemnat, scria rânduri inventate, PRESTATOR și BENEFICIAR. Caseta reală de semnătură ieșea în Word ca HTML brut, iar numele semnatarului lipsea. Exportul trece acum prin aceeași pregătire ca ecranul și PDF-ul.
Adresa IP de pe pagina de semnare nu apărea niciodată
Pagina de semnare arăta „IP client: Obținere în curs...” fără să se termine. Cerea adresa IP a vizitatorului de la un serviciu extern, dar politica de securitate a site-ului nu permitea acel serviciu, deci browserul bloca fiecare cerere. Căutarea era oricum inutilă: funcția de pe server își ia adresa IP din antetele de rețea ale cererii și ignoră ce trimite pagina. Dacă am fi permis serviciul extern, am fi trimis adresa fiecărui semnatar unei terțe părți fără niciun câștig. Am scos căutarea, iar pagina spune acum că adresa se înregistrează automat la semnare.
O decizie de produs
Dacă un șablon nu are niciun loc de semnătură a clientului, contractul nou primește la sfârșit blocul standard: o linie pentru semnătura clientului și, dacă profilul are un nume, una pentru psiholog. Se aplică doar la creare, nu la editare, iar utilizatorul primește o notă că a fost adăugat.
Ce nu am putut verifica
Pentru exportul Word nu am rulat un Word real. Testele folosesc caseta de semnătură exact așa cum o scrie funcția de pe server, extrasă din codul ei sursă, nu o copie scrisă de mână. Culorile previzualizării, descărcarea unică a PDF-ului și rândurile noi sunt verificate prin teste pe codul sursă, nu într-un browser. Funcția de pe server care scrie eticheta dublă rămâne neschimbată, deci eticheta se curăță la afișare, nu la scriere.
Fluxul de contracte, așa cum arată acum, este prezentat pe pagina principală.
PsySign este construit de BetterQA, companie de testare software din Cluj-Napoca, certificată ISO 27001 și ISO 13485.