Cod mort, comentarii depășite și mesaje în română în cod
În repo stau aproximativ 450 de linii de cod pe care nu le importă nimeni: patru fișiere întregi, 13 iconițe și două exporturi. Pe lângă ele, o regulă de business despre stările comenzii e scrisă în două locuri, dar funcționează doar una, iar două comentarii afirmă că randarea pe server nu e făcută — deși e făcută și e live. La final, câteva mesaje de jurnal și nume de teste sunt scrise în română, în cod. Nimic din toate astea nu se vede pe site și nimic nu strică producția; costul e că cine deschide proiectul peste șase luni citește lucruri false și pierde timp pe cod care nu ajunge niciodată pe ecran.
Ce am găsit
Patru fișiere, 13 iconițe și două exporturi pe care nu le importă nimeni
Căutarea de importuri pe tot repo-ul, inclusiv peste graniță din backend/prisma, întoarce zero pentru fiecare:
-
frontend/src/components/PlaceholderMedia.tsx— 51 de linii, zero referințe oriunde -
frontend/src/components/PromoBanner.tsx— 29 de linii; singurele mențiuni sunt îndesign/FIDELITY_GAPS.md(liniile 81, 94, 96, 116), care descrie înlocuirea lui cuSplitFeature; niciun import -
frontend/src/data/products.ts— 125 de linii; simbolurile exportateProductBadgeșiProductTileapar exclusiv în acest fișier -
frontend/src/data/categories.ts— 23 de linii; singura trimitere e un comentariu dinproducts.ts, el însuși mort
În frontend/src/components/icons.tsx (601 linii), 13 componente au o singură apariție în tot repo-ul — propria definiție: CheckoutPackageIcon:80, CheckoutLocationIcon:108, CheckoutDiscountIcon:129, GlobeIcon:263, BagIcon:339, BoxIcon:370, UmbrellaIcon:391, TruckIcon:414, ReturnsIcon:424, ShieldIcon:433, ChatIcon:545, LockIcon:565, PinIcon:575. Sunt aproximativ 222 de linii, adică peste o treime din fișier. Ipoteza unui registru dinamic de iconițe, care ar fi explicat lipsa referințelor, e infirmată: git grep -nE 'icons\[|\* as icons' -- frontend/src întoarce zero rezultate, toate importurile sunt nominale.
Al doilea export mort: ColorInput la frontend/src/components/admin/FormControls.tsx:209, tot cu o singură apariție.
Capcană de reținut înainte de ștergere: frontend/src/data/productTranslations.ts, reviewTranslations.ts, giftGuide.ts și mapa hyperhubTranslations/ arată la fel de neimportate din frontend, dar sunt vii. Le importă backend/prisma/seed.ts, backfill-product-translations.ts și lib/hyperhub-localize.ts prin ../../frontend/src/data/..., iar backend/Dockerfile copiază explicit COPY frontend/src/data /frontend/src/data tocmai din acest motiv. Acele fișiere nu se ating.
Regula de tranziții de stare a comenzii e copiată în frontend, unde nu o citește nimeni
frontend/src/lib/adminTypes.ts:784 definește ALLOWED_ORDER_TRANSITIONS cu tabelul new → ['processing','cancelled'], processing → ['completed','cancelled'], completed → [], cancelled → []. git grep -w ALLOWED_ORDER_TRANSITIONS -- . întoarce exact un fișier și o apariție: propria definiție.
Regula vie e în backend/src/services/order-admin-service.ts:16 (const ALLOWED_TRANSITIONS, neexportat), aplicată la schimbarea stării: dacă tranziția nu e permisă, se aruncă ApiError(400, ..., { code: 'ILLEGAL_TRANSITION' }), iar comportamentul are test.
Detaliul care face constatarea mai clară: comentariul de deasupra constantei din frontend își declară singur rostul — că există ca adminului să nu i se ofere niciodată un buton care oricum eșuează — dar niciun ecran de admin nu o citește. Cele două tabele sunt identice azi; riscul e că mâine cineva schimbă doar copia din frontend, crede că a schimbat regula, și nu se schimbă nimic.
Nouă constante sunt exportate deși sunt folosite doar în fișierul lor
Fiecare are între 2 și 5 folosiri înăuntru și zero în afara propriului fișier:
-
backend/src/lib/schemas.ts:153localizedFaqSchema,:165localizedReviewsSchema,:187localizedFeaturesSchema,:197localizedReviewTopicsSchema,:207localizedReviewHighlightsSchema -
backend/src/lib/localized.ts:6DEFAULT_LOCALE -
backend/src/lib/url-language.ts:15ROOT_LOCALE -
backend/src/services/email-service.ts:118mailTransportFromEnv -
backend/src/services/hyperhub-service.ts:11HYPERHUB_ARTICLES_PER_PAGE
Riscul evident — ca vreun test să le importe direct — nu se aplică: mailTransportFromEnv are 2 apariții, ambele în email-service.ts, iar HYPERHUB_ARTICLES_PER_PAGE are 5, toate în hyperhub-service.ts. Niciun fișier din backend/tests nu apare în rezultate pentru niciuna dintre cele nouă.
Un export spune „asta e parte din interfața fișierului, alții se bazează pe ea". Aici nu se bazează nimeni, iar cine vrea să schimbe una dintre ele trebuie întâi să caute prin tot proiectul, ca să descopere că nu o folosește nimic.
Două comentarii descriu opusul a ce face codul azi
frontend/index.html:19-23 spune despre meta description că e „Static, English-only on purpose" și că descrierile per pagină și per limbă „would need to be written into the document at runtime". În realitate backend/src/services/render-page.ts:163-168 înlocuiește efectiv tag-ul, iar HTML-ul servit pentru /products/hypervolt-3-pro conține deja o descriere românească proprie paginii.
frontend/src/components/Seo.tsx:14-17 spune că Facebook, WhatsApp și Telegram „still show the static tags from index.html" și că „Previews need prerendering — separate work". În realitate render-page.ts scrie deja og:title, og:url, og:type, og:site_name, og:image și og:description pe fiecare pagină, plus twitter:card, verificat în HTML-ul servit de producție.
Ambele descriu o stare care a fost adevărată înainte de introducerea randării pe server. Cine deschide fișierele acum citește că problema e nerezolvată și fie o rezolvă a doua oară, fie nu se atinge de ceva care funcționează.
Jurnale de server și nume de teste scrise în română
Mesaje de jurnal în backend/src/services/email-service.ts:
-
:123console.log('Email dezactivat (SMTP neconfigurat) — comenzile se salvează normal.') -
:352—console.errorcu textul „Email eșuat (${label} → ${message.to})" -
:393—console.errorcu textul „Email eșuat (comanda #${order.number})"
Nume de teste în română — 8 apariții în 7 fișiere: backend/tests/order-emails.test.ts:142 și :212, collection-visibility.test.ts:30, collections-admin.test.ts:37, no-real-email-in-tests.test.ts:9, frontend/src/test/Contact.test.tsx:39, cart.test.tsx:16, orderPdf.test.ts:280.
Comentarii în română scrise în fișierul .env de pe server: deploy/smtp-write.sh:56-57.
Niciunul dintre aceste texte nu e văzut de vizitator — sunt mesaje pe care le citește cine depanează serverul și nume care apar în ieșirea CI. Panoul de admin rămâne în română, e o decizie de produs, nu o scăpare.
De făcut
-
git rmpefrontend/src/components/PlaceholderMedia.tsx,frontend/src/components/PromoBanner.tsx,frontend/src/data/products.tsșifrontend/src/data/categories.ts -
Șterge cele 13 funcții de iconiță moarte din frontend/src/components/icons.tsx -
Șterge ColorInputși interfațaColorInputPropsdinfrontend/src/components/admin/FormControls.tsx -
Șterge constanta ALLOWED_ORDER_TRANSITIONSși blocul ei de comentariu dinfrontend/src/lib/adminTypes.ts; dacă interfața de admin chiar are nevoie să știe ce butoane să afișeze, regula se ia de la API, nu se copiază -
Scoate cuvântul exportde pe cele nouă constante folosite doar local -
Redu comentariul din frontend/index.htmlla ce e încă adevărat — că titlul și descrierea de acolo sunt rezerva folosită dacă randarea pe server pică, comportament descris înbackend/src/routes/render.ts:9-13 -
Scoate din frontend/src/components/Seo.tsxparagraful despre preview-uri și prerendering, păstrând explicația de ce nu se foloseștereact-helmet-async -
Tradu în engleză cele trei mesaje de jurnal din backend/src/services/email-service.ts, cele 8 nume dedescribe/itși cele două comentarii dindeploy/smtp-write.sh
Criteriu de acceptare
- În
frontend/:npx tsc --noEmit -p tsconfig.app.jsonșinpm run linttrec la fel ca înainte,npm run buildreușește. - În
backend/:npm run buildșinpm testtrec — build-ul dovedește că importurile peste graniță dinprisma/n-au fost rupte. -
git grep -w ALLOWED_ORDER_TRANSITIONS -- .întoarce 0 rezultate. - Căutarea de fișiere neimportate nu mai listează cele patru fișiere, iar căutarea de exporturi neutilizate nu mai listează niciuna dintre cele nouă constante.
- Niciun comentariu din
frontend/index.htmlsaufrontend/src/components/Seo.tsxnu mai afirmă că descrierile sunt statice, doar în engleză, sau că preview-urile de link nu funcționează. -
git grep -cE "^\s*(describe|it|test)\('[^']*[ășțîâ]" -- frontend/src backendîntoarce 0. -
git grep -nE 'console\.(log|error)' -- backend/src | grep -E '[ășțîâ]'întoarce 0.