# واحد پول = تومان در سایت عمومی (نمایش ÷۱۰ / ورودی ×۱۰) — API ریال می‌ماند ## پروژه `nobat724_front` (سایت عمومی). **cross-repo:** پرامپت همتا (ادمین): `clinicpro/.claude/prompt/currency-toman-display-admin.md`. API بک‌اند (`clinicpro`) واحدش **ریال** است و تغییر نمی‌کند؛ فیلدهای `*_rials` ریال برمی‌گردانند. ## زمینه واحد نمایشِ سایت باید **تومان** باشد، اما API همهٔ مبالغ را **ریال** می‌دهد و می‌گیرد (`appointment_fee_rials`، `amount_rials`، …) و ارسال به درگاه هم ریال است (بک‌اند مدیریت می‌کند). پس فقط باید در **UI** مقدار ریال ÷۱۰ و با «تومان» نشان داده شود، و اگر جایی مبلغ از کاربر گرفته می‌شود ×۱۰ به ریال تبدیل شود. الان ناهماهنگ است: بعضی جاها عددِ `*_rials` خام با برچسب «ریال» نمایش داده می‌شود (`paying`, transactions, payment result, dashboard balance) و یک‌جا (`app/dashboard/page.js`) دستی `/10` شده. باید یکدست شود. ## مشکل / هدف همهٔ مبالغِ نمایشی در سایت به **تومان** (÷۱۰ از مقدار ریالِ API) با برچسب «تومان» نشان داده شوند؛ منطق پرداخت/ارسال به درگاه (سمت بک‌اند، ریال) دست نخورد. ## فایل‌های مرتبط | فایل | نقش | |------|-----| | `nobat724_front/lib/money.js` | **جدید** — helper تبدیل/فرمت مرکزی | | `nobat724_front/components/appointment/paying/index.js` | مبلغ نوبت + دکمهٔ پرداخت (ریال→تومان) | | `nobat724_front/components/dashboard/userAccount/sidebars/transactions/Card.js` | مبلغ تراکنش | | `nobat724_front/components/dashboard/userAccount/sidebars/transactions/List.js` | مبلغ تراکنش | | `nobat724_front/components/dashboard/userAccount/Head.js` | برچسب/موجودی | | `nobat724_front/app/payment/[uuid]/page.js` | مبلغ نتیجهٔ پرداخت | | `nobat724_front/app/dashboard/page.js` | جمع تراکنش‌ها (حذف `/10` دستی، استفاده از helper) | > با `grep -rn "ریال\|amount_rials\|_rials\|toLocaleString" components app` بقیهٔ نقاط مبلغ را هم پیدا و یکدست کن. ## وضعیت فعلی ### `components/appointment/paying/index.js` ```js setFeeRials(Number(res?.data?.appointment_fee_rials) || 0); // ... const rials = feeRials != null ? feeRials.toLocaleString("fa-IR") : "—"; // ... {rials} ریال // ... {testMode ? "پرداخت آزمایشی" : `پرداخت ${rials} ریال`} ``` مقدارِ ریالِ خام را با «ریال» نشان می‌دهد (باید تومان). ### `app/dashboard/page.js` (تبدیل دستی ناهماهنگ) ```js const totalTransactions = Math.round(totalRials / 10); // ریال → تومان ``` ### `app/payment/[uuid]/page.js` ```js {formatAmount(payment.amount_rials)} ریال ``` ## وظایف ### ۱. helper مرکزی `lib/money.js` ```js export const RIAL_PER_TOMAN = 10; export const rialToToman = (rial) => Math.round((Number(rial) || 0) / RIAL_PER_TOMAN); export const tomanToRial = (toman) => Math.round((Number(toman) || 0) * RIAL_PER_TOMAN); // فرمت فارسیِ مبلغِ تومان از مقدار ریالِ API export const formatToman = (rial) => rialToToman(rial).toLocaleString("fa-IR"); ``` ### ۲. `paying/index.js` - نمایش مبلغ: `const toman = feeRials != null ? formatToman(feeRials) : "—";` - جای «ریال» → «تومان»؛ دکمه: `پرداخت ${toman} تومان`. - `feeRials` را همچنان از `appointment_fee_rials` بگیر (ریال)؛ فقط نمایش تبدیل شود. **مبلغی که برای شروع پرداخت به بک‌اند/درگاه می‌رود تغییر نکند** (بک‌اند ریال می‌فرستد). ### ۳. تراکنش‌ها و موجودی داشبورد - `transactions/Card.js` و `List.js`: `Number(data.amount_rials)` خام + «ریال» → `formatToman(data.amount_rials)` + «تومان». - `userAccount/Head.js`: موجودی/برچسب «ریال» → تومان (اگر عددی خام کنارش هست با `formatToman`). - `app/dashboard/page.js`: به‌جای `Math.round(totalRials/10)` از `rialToToman(totalRials)` استفاده کن (همان نتیجه، یکدست). ### ۴. صفحهٔ نتیجهٔ پرداخت - `app/payment/[uuid]/page.js`: `{formatAmount(payment.amount_rials)} ریال` → `{formatToman(payment.amount_rials)} تومان` (یا `formatAmount` را با `rialToToman` هماهنگ کن؛ اگر `formatAmount` جای دیگری هم استفاده می‌شود، دوباره‌تبدیل نشود). ### ۵. جستجوی باقی‌ماندهٔ «ریال» `grep -rn "ریال" components app` → هر مبلغِ خام ریال را `formatToman` + «تومان» کن. برچسب‌های ثابت «ریال» به «تومان». ## نکات مهم - **API/درگاه ریال می‌ماند:** هیچ فراخوانی `services/response.js` و هیچ مقدارِ ارسالی به بک‌اند تغییر نمی‌کند؛ فقط نمایش. مبلغ پرداخت را بک‌اند (ریال) مدیریت می‌کند. - **ورودی پول (اگر هست):** اگر جایی کاربر مبلغ وارد می‌کند که به API می‌رود، با `tomanToRial` به ریال تبدیل کن (در این سایت معمولاً ورودی پول نیست؛ بیشتر نمایش است). - **double-convert نکن:** جایی که قبلاً `/10` شده (dashboard/page.js) را با helper جایگزین کن، نه اضافه. - **RTL/فونت/Jalali** مثل قبل؛ فقط عدد و برچسب واحد عوض می‌شود. - تست: `npm run lint` و `npm run build` بدون خطا؛ سپس چشمی صفحهٔ پرداخت نوبت، داشبورد تراکنش‌ها، و نتیجهٔ پرداخت — اعداد باید ۱۰ برابر کوچک‌تر و با «تومان» باشند.