Skip to content

Recenzia scrisă pe fișa de produs ajunge la magazin

Vitalie requested to merge 47_review-form-email into main

Formularul „Scrie o recenzie" nu trimitea nimic nicăieri: apăsai „Trimite" și citeai „Îți mulțumim pentru recenzie!", dar recenzia se pierdea în clipa aceea. O confirmare falsă dată unui client care tocmai cumpărase.

Acum recenzia pleacă efectiv, pe drumul pe care merg deja notificările de comandă: aceeași cutie poștală, același transport, aceeași semnătură. Adresa clientului stă pe Reply-To, deci se poate răspunde direct din inbox. Numele produsului se citește din catalog, nu din ce trimite pagina.

Trimiterea e așteptată, nu lăsată pe fundal. O recenzie nu are rând în baza de date — mailul e singura ei copie. Dacă mailul nu pleacă, răspunsul e 502 și clientul află; nu primește o confirmare pentru ceva ce nu s-a întâmplat. De aceea transportul și-a primit și limite proprii de timp (10 s conexiune, 20 s soclu), sub cele 60 s ale nginx-ului, ca o cutie poștală blocată să nu țină cererea agățată.

Limită de trafic per IP, în aceeași formă ca la comenzi: REVIEW_RATE_LIMIT_MAX, implicit 10 la 15 minute. Un endpoint public care trimite mailuri fără limită e un releu deschis pentru cine îl găsește.

Validare: nota e obligatorie și între 1 și 5; titlu, text, nume și e-mail au lungimi maxime și formatul verificat. Mesajele sunt chei de traducere, deci erorile apar în limba paginii.

Butonul „Adaugă poze" s-a scos: fișierele n-aveau unde ajunge.

O premisă corectată

Varianta aleasă spunea „se publică manual din panou". Panoul nu are ecran de recenzii — nicio pagină, nicio rută de API; am verificat. Ambele texte spun acum adevărul: clientul citește „Am primit recenzia ta. O citim și decidem dacă o publicăm pe pagina produsului", iar mailul către magazin scrie limpede că publicarea trece prin echipa tehnică. Vitalie a confirmat că mergem așa; un modul de recenzii în panou se face separat, când există recenzii de publicat.

Tot din aceeași categorie: indiciul de la câmpul de e-mail promitea un mesaj de confirmare către recenzent, care nu pleca niciodată. Acum spune ce se întâmplă de fapt — adresa se folosește doar pentru a răspunde, și nu apare public.

Verificare rulată

backend/: npm run build curat, npm test — 45 de fișiere, 649 de teste. frontend/: npm run lint, npm run build, npx vitest run — 34 de fișiere, 450 de teste. Toate trec.

no-real-email-in-tests.test.ts e în rularea verde: nimic din ce s-a adăugat nu trimite cu adevărat în teste.

Closes #47 (closed)

Merge request reports