دکتر تا ساعت ۲۱:۳۶ هستند که من نوبت بگیرم؟ ( دریافت نوبت با موبایلم منجر به ارائه زمان در خارج از ساعت حضور پزشک شده است.)

بیمار از بابت شکش نسبت به حضور دکتر در ساعت ۲۱:۳۶ سوال پرسید که ایا پزشک تا ساعت ۲۱:۳۶ هستند که من نوبت بگیرم ؟‌

مشکل از زبان کاربری دیگر

از انجایی که می دانستم پذیرش پزشک تا ساعت ۲۱ است.

با سیستم خودم همون لحظه چک کردم و دیدم به من ساعت ۲۰:۳۶ پیشنهاد می دهد .

لازم به ذکر است که ساعت گوشی بیمار با ساعت رسمی کشور مطابقت داشت.

با اینکه برای امروز نوبت خالی بود و نوبت میداد به دلیل اینکه ساعتی که در سایت زده یک ساعت دیرتر بود منشی با وجود اینکه نوبت دهی تا ۹ بیشتر نیست و این باگ سیستم هست از پذیرش بیمار سرباز زد و بیمار مجبور شد فردا مراجعه کند.

اگر بیشتر بررسی کرده اید، این باگ را توضیح میدهید

در ابتدای سال جاری، با مشابه این مشکل در دکتراپ مواجه شدیم که علت این بود که داشتیم از دستگاه کاربر ساعت را می گرفتیم.
از بیمار هم که پرسیدم خودتون ساعت گوشیتون رو دستی تنظیم کردید گفت بله حدس زدم که الان هم مشکل همین باشد.

از امیرحسین بیگی پرسیدم :

از گوشی استفاده میکنیم
مشکلش هم همینه، باید time string از بک اند ارسال بشه

@amirhbeigi

1 پسندیده

مشکل از زبان بیمار :‌ دکتر تا ساعت ۲۱:۳۶ هستند که من نوبت بگیرم؟

توضیحات :‌

بیمار از بابت شکش نسبت به حضور دکتر در ساعت ۲۱:۳۶ سوال پرسید که ایا پزشک تا ساعت ۲۱:۳۶ هستند که من نوبت بگیرم ؟‌
از انجایی که می دانستم پذیرش پزشک تا ساعت ۲۱ است.

با سیستم خودم همون لحظه چک کردم و دیدم به من ساعت ۲۰:۳۶ پیشنهاد می دهد .

لازم به ذکر است که ساعت گوشی بیمار با ساعت رسمی کشور مطابقت داشت.

با اینکه برای امروز نوبت خالی بود و نوبت میداد به دلیل اینکه ساعتی که در سایت زده یک ساعت دیرتر بود منشی با وجود اینکه نوبت دهی تا ۹ بیشتر نیست و این باگ سیستم هست از پذیرش بیمار سرباز زد و بیمار مجبور شد فردا مراجعه کند.

راه حل : ارسال timestring از بکند به جای استفاده از زمان دستگاه کاربر

مبلغ پیشنهادی : ۱-۱/۵۰۰ میلیون تومان

تاییدیه اقای قانع :

@freeland_paziresh24

موافق اقدام به حل مسئله هستم.

چند نکته:
چون دیتای بیشتری از pros/cons تصمیم قبلی (استفاده از ساعت device کاربر) ندارم، فکر میکنم پیش از اقدام به کد نویسی، حتما نیاز به simulate حالت دریافت دیتا از بک وب سرویس و عوارض احتمالی آن هست.
عنوان این تاپیک میتواند spcefic تر باشد. چون شما رفتار بیمار را مشاهده کرده اید، میتوانید علاوه بر زبان اون، مسئله را هم در عنوان شفاف کنید.

1 پسندیده

زمان دستگاه کاربر به صورت دستی ست شده است ولی تایم زون هنوز اصلاح نشده است.
میشه که زمان رو به صورت string از بک اند به بیمار فرستاد. کما اینکه قبلا هم توی اولین نوبت خالی انجام شده است.
فقط این موضوع رو مد نظر داشته باشید که، اگر بخواهید کار گلوبال انجام بدهید، باید حواستون به تایم زون کاربر باشه. چون ممکنه کاربر از کشور دیگر درخواست ثبت نوبت داشته باشد و باید نسبت با تایم زون خودش، بهش جواب داد.

در حال حاضر راه حل دیگری به ذهنم نمیرسه و به نظرم پیشنهادتون خوبه و انجام بشه. ولی باید حواسمون به این بدهی های فنی باشه.

1 پسندیده

الان اگر گلوبال پیش ببرم کاربر ایرانی در داخل کشور به مشکل میخورند (چه بسا که در یک شب یک نفر من باهاش برخوردم،‌منشی هم مدعی بود که روزانه ۳-۴ نفر به این صورت هستند و پاسخشون به بیمار هم این هست که باگ سایته)
این مشکل تایم زون هم منطقا هر ۶ ماه ابتدایی سال داریم.
میتونم نظرتونو در این خصوص داشته باشم ؟ @amirjavad_afrugh @h.sadeghynejad

@sar.sadr اقای صدر شما این موضوع رو عید برای دکتراپ توی ککمتر از یک روز پیش بردید
به نظرتون یک برنامه نویس نا آشنا به کد پذیرش۲۴ چقدر زمان میبرد که این کار را بخواهد انجام دهد ؟‌

اقای افروغ کد مربوط به این قسمت ایا اپن سورس شده است؟ اگر اپن سورس نشده است چقدر زمان میبره که اوپن سورس کنیم و در چه زمانی در برنامه مان هست که اوپن سورس کنیم ؟ @amirjavad_afrugh

کد اپن سورس نیست.
برای اپن سورس شدن هم احتمالا از پروژه های جدید شروع کنیم.

اینکه چقدر زمان میگیره از شخصی که به کد آشنا نیست، نمیدونم. احتمالا زمان زیادی میگیره چون باید روی کد کلینیک (زند) این اصلاحیه انجام بشه.

حال که نیازه این قسمت اوپن سورس بشه چطور ؟

فکر میکنین که بیشتر از ۱ روز زمان بگیره؟(باید یک تایم حدودی داشته باشم)

chat gpt :

my suggestion would be to implement a server-side solution that takes into account the time zone of the user’s device and adjusts the displayed time accordingly, rather than relying solely on the time from either the user’s device or the server’s location.

One way to achieve this would be to use a geolocation service to determine the user’s time zone, and then adjust the displayed time accordingly. This approach would work for users both inside and outside of Iran, as it would take into account the user’s actual time zone, rather than relying on either the national time or the server’s location.

A geolocation service is a technology that uses various methods to determine a user’s physical location based on their IP address, Wi-Fi network, GPS coordinates, or other location-based technologies. There are many different geolocation services available, ranging from free services that provide basic location information to more advanced paid services that offer more precise location data.

بابت ابزار اوپن سورس رایگان هم پرسیدم ازش :‌

GeoLite2, IP2Location, FreeGeoIP, Nominatim,OpenCage Geocoder

فکر میکنم ریسکش فقط vpn باشه .

نظرتون چیه ؟

@sar.sadr @amirjavad_afrugh @h.sadeghynejad @ebrahimghane

این مشکل در پروداکت های جا افتاده گلبوال به همین روش حل شده؟ (مثلا در وردپرس یا cal.com یا دیسکورس تایم زون کاربر دریافت و بر اساس آن دیتا جنیریت می شود) شاید بد نباشد cal یا calendly را تست کنید

میتوانید از معماری پیشنهادی تان یک دیاگرام بکشید؟

1 پسندیده

از چت جی پی : در cal.com , calendly این امکان وجود دارد که آنها از خدمات موقعیت جغرافیایی مانند آدرس IP کاربر یا داده‌های GPS برای تعیین منطقه زمانی کاربر و تنظیم زمان نمایش داده شده بر اساس آن استفاده کنند. همچنین ممکن است از کد سمت سرور برای اطمینان از نمایش صحیح زمان برای همه کاربران، صرف نظر از موقعیت مکانی آنها، استفاده کنند.

ایشوهای cal.com

از چت جی پی : Google Calendar از ترکیبی از خدمات منطقه زمانی و موقعیت جغرافیایی استفاده می‌کند تا یک تجربه زمان‌بندی دقیق و راحت را برای کاربران خود فراهم کند

برای cal.com و calendar هم تستی که کردم وقتی وارد شدم هر دو tehran را زده بودند cal.com ۴:۳۰ و calendar 3:30 تهران. با اندروید تست نکردم باید تست کنم.

decomposition :
مشکل ما : زمان رو میخوایم جوری نشون بدیم که وقتی که گلوبال شدیم، به مشکل نخوریم
مشکل کاربر : استفاده ما از ساعت گوشیش که با تغییرات رسمی اخیر (جلو نکشیدن ساعت ها) هماهنگ نیست

جوری که متوجه شدم تاپیک پیرو مشکل کاربر ایجاد شده پس با همین پیشفرض ادامه میدم
همونطور که میدونید کد پنل و کلینیک زیادی legacy هست و اوپن سورس کردنش کمی پیچیدگی داره اما ما میتونیم از API هایی که کلینیک یا پنل رو توی این جاها استفاده کنیم و ریسپانس رو عوض کنیم
کجاها ؟!

  • N8N
  • API gateway (تست نکردم که این کار رو میکنه اما طبیعیه که انجام بده :expressionless: )
  • یا با این روش که توی این :point_down: تاپیک گفتم بیایم و توی یه کد جدید و اوپن سورس از API پنل یا کلینیک استفاده کنیم و خروجی درست رو به فرانت بفرستیم
    وقتشه اوپن سورس شیم

این رو اضافه کنم که با توجه به اینکه کلینیک خودش کلاینت پنل محسوب میشه میتونیم توی خود کد کلینیک هم این رو اصلاح کنیم ولی توسعه ندادنش میتونه یک قدم رو به بیرون از legacy code فعلیمون باشه

ما باید راه حلی که برای حل مشکل کاربر میدیم جنرال باشد .

راه حل مشکل این کاربر، اینه که خب ما زمان رو از سرور بگیریم (‌البته این مشکل هم specific برای ایران در ۶ ماه اول سال رخ میده)‌ اما جنرال نیست چون وقتی گلوبال بشیم جواب نمیده.

احتمالا راه حل قبلیمون که از دستگاه کاربر بگیریم راه حل خوبی بوده اما این مشکل specific رو پوشش نمیده.

مرسی که در خصوص اوپن سورس کردنه توضیح دادی چون قدم بعدی حل این مشکل هست @amirjavad_afrugh

اما قدم فعلی کشف راه حل جنرال هست.

اینجا توضیحاتی دادم ممنون میشم کمک کنید که بفهمم این راه حل، میتونه حلی برای این مشکل و مشکلات تایم زون باشد یا خیر ؟ @amirjavad_afrugh

من با اینکه ما دیزاینمون گلوبال نبوده ولی تا این کاربر اومده گفته مشکل دارم میخوایم گلوبالش کنیم مخالفم :grin:
و حس میکنم زمانی باید این مورد رو گلوبال دیزاین کنیم که وقتی کسی میاد توی سایت بدونه که وارد یه سایت گلوبال شده، یعنی به طرف اطلاع بدیم که برحسب موقعیت مکانیش یا ip ش داریم بهش زمان ها رو نشون میدیم

در نقد پیام chatgpt

اینجا برای کاربرایی که vpn دارن مشکل میخوریم

اینجا هم نیازه که دسترسی از کاربر بگیریم که بهش زمان نوبت نشون بدیم که بازم حس میکنم فریکشنه و چون گلوبال کامل نشدیم یکم توجیه اش سخته

خب اقای افروغ این شکلی اگر هفته دیگه گلوبال شدیم باید هفته دیگه همین کار رو ایندفعه گلوبال اصلاح و انجام بدیم؟!

چه منافاتی داره که الان گلوبال دیزاین کنیم که پیروش مشکل این کاربر هم حل بشه و هم هر وقت گلوبال شدیم به مشکل نخوریم؟

من موارد بالا رو در نظر گرفتم و مخالفت کردم، راه حلتون رو برای این موانع ارائه بدید تا بتونیم توی فضای شفاف تری راجع بهش صحبت کنیم

بررسی که با خانوم اردانی داشتیم
این قطعه کد جاوااسکریپت میتونه بدون location , ip بفهمه timezone توی سیستم عامل چی تنظیم شده

Intl.DateTimeFormat().resolvedOptions().timeZone

اگر ما tz database مون سمت سرور به روز باشه میتونه timezone رو از دیوایس کاربر بگیره (از سیستم عامل فچ میکنه) ولی اختلاف زمانی رو برحسب همون tz database (که مثلا +3:30 هستیم یا …) تشخیص بده
عملا منطقه زمانی رو از کلاینت میگیریم ولی اختلاف زمانی رو سمت سرور محاسبه میکنیم که مداوما به روز باشه

1 پسندیده

@freeland_paziresh24