Files
nobat724_front/.claude/prompt/profile-birthday-send-direction-fix.md
hamedandClaude Opus 4.8 bdf453a3ab feat(dashboard): stepwise Jalali birthday picker + correct send direction
- JalaliDatePicker gains an opt-in `stepwise` mode (year → month → day): the
  year step is a scrollable list from the current Jalali year down to 1332,
  used by the birthday field. Default-off so appointment/panel pickers keep
  the month-grid behavior. Parse incoming Jalali string values safely
  (fixes NaN keys).
- Birthday create path now converts Jalali→Unix on send (changeDateType true),
  matching the update path and the Unix-based backend contract.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 11:42:45 +03:30

3.3 KiB
Raw Permalink Blame History

رفع جهت تبدیل تاریخ تولد هنگام ایجاد پروفایل

پروژه

nobat724_front (سایت عمومی، داشبورد).

Cross-repo: وابسته به پرامپت بک‌اند clinicpro/.claude/prompt/profile-birthday-jalali-persist.md (که birthday را به‌صورت Unix ذخیره/برمی‌گرداند). آن اول اجرا شود.

زمینه

تاریخ تولد در فرم داشبورد به‌صورت رشته‌ی جلالی از JalaliDatePicker می‌آید (information.birthday = "jYYYY/jM/jD"). تابع changeDateType(data, toTimeStamp) در helper/index.js بین جلالی‌رشته و Unix تبدیل می‌کند:

  • toTimeStamp=truemoment(birthday, "jYYYY/jMM/jDD").unix() (جلالی → Unix، برای ارسال)
  • toTimeStamp=falsemoment.unix(birthday).format("jYYYY/jMM/jDD") (Unix → جلالی، برای نمایش)

بک‌اند birthday را به‌صورت Unix می‌پذیرد و برمی‌گرداند. مسیر به‌روزرسانی (patchData) درست changeDateType(usedKays, true) می‌زند. اما مسیر ایجاد (postData) به‌اشتباه changeDateType(information, false) می‌زند — یعنی هنگام ارسال، جهت تبدیل برعکس است و moment.unix(جلالی-رشته) یک مقدار بی‌معنا تولید می‌کند. در نتیجه هنگام ایجاد پروفایل، تاریخ تولد خراب ذخیره می‌شود.

مشکل / هدف

در postData جهت changeDateType باید true باشد (مثل patchData)، تا birthday جلالی به Unix تبدیل و سپس ارسال شود.

فایل‌های مرتبط

فایل نقش
components/dashboard/userAccount/detailUser/information/ButtonSendData.js postData (ایجاد) — جهت اشتباه
helper/index.js changeDateType (مرجع — تغییر نمی‌کند)

وضعیت فعلی (کد واقعی)

const postData = () => {
  request
    .postUserProfile(changeDateType(information, false))   // ❌ باید true باشد (مثل patchData)
    // ...
};

const patchData = () => {
  const usedKays = removeAdditionalKeysDashboard(information);
  request
    .patchUserProfile(changeDateType(usedKays, true), information?.uuid, ...)   // ✅ درست
    // ...
};

وظایف

۱. اصلاح جهت در postData

request.postUserProfile(changeDateType(information, true))
  • فقط falsetrue. بقیه‌ی منطق postData بدون تغییر.

نکات مهم

  • changeDateType و patchData تغییر نمی‌کنند؛ فقط یک آرگومان در postData اصلاح می‌شود.
  • نمایش (load) از قبل با changeDateType(changedData, false) در information/index.js درست است و birthday که حالا بک‌اند به‌صورت Unix می‌دهد را به جلالی تبدیل می‌کند — تغییری لازم ندارد.
  • بعد از تغییر: npm run build بدون خطا؛ تست دستی — ایجاد پروفایل جدید با تاریخ تولد → ذخیره و سپس نمایش درستِ همان تاریخ؛ و به‌روزرسانی هم همچنان درست کار کند.