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

58 lines
3.3 KiB
Markdown

# رفع جهت تبدیل تاریخ تولد هنگام ایجاد پروفایل
## پروژه
`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=true``moment(birthday, "jYYYY/jMM/jDD").unix()` (جلالی → Unix، برای **ارسال**)
- `toTimeStamp=false``moment.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` (مرجع — تغییر نمی‌کند) |
## وضعیت فعلی (کد واقعی)
```js
const postData = () => {
request
.postUserProfile(changeDateType(information, false)) // ❌ باید true باشد (مثل patchData)
// ...
};
const patchData = () => {
const usedKays = removeAdditionalKeysDashboard(information);
request
.patchUserProfile(changeDateType(usedKays, true), information?.uuid, ...) // ✅ درست
// ...
};
```
## وظایف
### ۱. اصلاح جهت در `postData`
```js
request.postUserProfile(changeDateType(information, true))
```
- فقط `false``true`. بقیه‌ی منطق `postData` بدون تغییر.
## نکات مهم
- `changeDateType` و `patchData` تغییر نمی‌کنند؛ فقط یک آرگومان در `postData` اصلاح می‌شود.
- نمایش (load) از قبل با `changeDateType(changedData, false)` در `information/index.js` درست است و `birthday` که حالا بک‌اند به‌صورت Unix می‌دهد را به جلالی تبدیل می‌کند — تغییری لازم ندارد.
- بعد از تغییر: `npm run build` بدون خطا؛ تست دستی — ایجاد پروفایل جدید با تاریخ تولد → ذخیره و سپس نمایش درستِ همان تاریخ؛ و به‌روزرسانی هم همچنان درست کار کند.