Formularul de recenzie confirmă o trimitere care nu are loc
Formularul „Scrie o recenzie" de pe fișa de produs nu trimite nimic nicăieri. Vizitatorul completează nota, titlul, textul, numele și adresa de e-mail, apasă „Trimite" și primește „Îți mulțumim pentru recenzie!" — dar nimic nu pleacă de pe pagină și nimeni nu vede recenzia niciodată.
Ce am găsit
frontend/src/components/WriteReviewModal.tsx:59-63:
const handleSubmit = (event: FormEvent<HTMLFormElement>) => {
event.preventDefault();
if (rating === 0) return;
setSubmitted(true);
};
Nicio cerere către API. Comentariul din capul fișierului o spune deschis: modalul e clonat după widgetul Yotpo al site-ului real, iar „there's no reviews backend (Yotpo is a real third-party service we don't have credentials for), so «Send» doesn't persist anywhere — same precedent as the footer newsletter form".
Fișierele alese la „Adaugă media" trec printr-un selector nativ real, dar nu se încarcă nicăieri, din același motiv.
De ce contează
Precedentul invocat, formularul de newsletter, promite doar o listă de e-mail. Aici promisiunea e alta: un client care tocmai a cumpărat își scrie părerea, o trimite și i se confirmă că a ajuns. Nu a ajuns. E o confirmare falsă dată unui client real, într-un magazin viu.
Are și o consecință directă asupra #11 (closed): acolo varianta (c) — „rămân doar recenziile reale colectate prin WriteReviewModal" — ar fi însemnat zero recenzii, pentru că formularul nu colectează nimic. A fost aleasă varianta (b) tocmai de aceea.
De făcut
-
Decide varianta: (a) formularul se scoate de pe fișa de produs până există un backend de recenzii; (b) trimite recenzia pe e-mail la sales@hyperice.md, ca formularul de comandă, și se publică manual din panou; (c) se construiește colectarea completă — rută de API, tabel, moderare în panou, afișare. -
Dacă rămâne varianta (b) sau (c): mesajul de confirmare trebuie să spună adevărul — că recenzia a fost trimisă spre verificare, nu că a fost publicată. -
Încărcarea de fișiere: fie se scoate butonul, fie fișierele chiar ajung undeva. Un selector care nu încarcă nimic e aceeași promisiune falsă, la scară mai mică.
Criteriu de acceptare
Pe o fișă de produs de pe live: fie formularul nu mai există, fie o recenzie trimisă prin el ajunge undeva unde poate fi văzută (căsuță de e-mail sau panou de admin), iar textul de confirmare descrie exact ce s-a întâmplat.
Găsit la lucrul pe #11 (closed).