GSMEthesis commited on
Commit
664848c
·
verified ·
1 Parent(s): 37da5a9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +93 -134
app.py CHANGED
@@ -738,25 +738,28 @@ h3 {
738
  """, unsafe_allow_html=True)
739
 
740
  # ========== توابع اصلی ==========
741
-
742
  def enhanced_likert_scale(question_data):
743
- """لیکرت اسکیل با خط و نقاط - کاملاً واکنش‌گرا"""
744
  question = question_data["question"]
745
  key = question_data["key"]
746
  scale = question_data["scale"]
747
- labels = question_data.get("labels", \["کاملاً مخالفم", "کاملاً موافقم"])
748
 
749
- ```
750
  if key not in st.session_state:
751
- st.session_state[key] = None
752
-
753
  # نمایش سوال
754
  st.markdown(f"<div style='text-align:center; font-weight:bold; margin-bottom:15px;'>{question}</div>",
755
  unsafe_allow_html=True)
756
-
757
  # ایجاد خط و نقاط با HTML/CSS
758
  scale_html = f"""
759
  <style>
 
 
 
 
760
  .likert-line {{
761
  width: 80%;
762
  height: 2px;
@@ -765,43 +768,36 @@ def enhanced_likert_scale(question_data):
765
  position: relative;
766
  display: flex;
767
  justify-content: space-between;
768
- direction: rtl; /* تغییر جهت از راست به چپ */
769
  }}
770
  .likert-dot {{
771
- width: 18px; /* اندازه دکمه‌ها کوچک‌تر شد */
772
- height: 18px; /* اندازه دکمه‌ها کوچک‌تر شد */
773
  border-radius: 50%;
774
  background: white;
775
  border: 2px solid #6a0dad;
776
  position: relative;
777
  top: -9px;
778
- cursor: pointer;
779
- display: flex;
780
- align-items: center;
781
- justify-content: center;
782
  }}
783
- .likert-dot.selected {{
784
  background: #6a0dad;
785
  }}
786
  .likert-labels {{
787
  width: 80%;
788
- margin: 5px auto 20px;
789
  display: flex;
790
  justify-content: space-between;
791
- direction: rtl; /* جهت لیبل‌ها باید از راست به چپ باشد */
792
- }}
793
- .likert-value {{
794
- text-align: center;
795
- margin-top: 10px;
796
- color: #6a0dad;
797
  font-weight: bold;
 
798
  }}
799
- /* مخفی کردن دکمه‌ها با اندازه کوچک */
800
- .likert-button {{
801
- visibility: hidden;
802
- width: 12px;
803
- height: 12px;
804
- margin: 2px; /* فاصله کم بین دکمه‌ها */
805
  }}
806
  @media (max-width: 768px) {{
807
  .likert-line {{
@@ -813,57 +809,42 @@ def enhanced_likert_scale(question_data):
813
  }}
814
  </style>
815
 
816
- <div class='likert-container'>
817
- <div class='likert-labels'>
818
  <span>{labels[1]}</span>
819
  <span>{labels[0]}</span>
820
  </div>
821
- <div class='likert-line'>
822
  """
823
 
824
- # اضافه کردن نقاط
825
- for i in range(scale):
826
- value = scale - i
827
- is_selected = st.session_state.get(key) == value
828
- scale_html += f"<div class='likert-dot {'selected' if is_selected else ''}' onclick='setLikertValue({value})'></div>"
829
-
830
- scale_html += "</div>"
831
-
832
- # نمایش مقدار انتخاب شده
833
- if st.session_state.get(key):
834
- scale_html += f"<div class='likert-value'>پاسخ شما: {st.session_state[key]}</div>"
835
 
836
- scale_html += "</div>"
837
-
838
- # تزریق JavaScript برای مدیریت کلیک
839
- components.html(scale_html + """
840
- <script>
841
- function setLikertValue(value) {
842
- const streamlitDoc = window.parent.document;
843
- const buttons = streamlitDoc.querySelectorAll('button[data-testid="stButton"]'); // جستجوی دکمه‌ها در DOM
844
- buttons.forEach(btn => {
845
- if (btn.textContent.trim() === String(value)) {
846
- btn.click(); // کلیک روی دکمه مورد نظر برای انتخاب مقدار
847
- }
848
- });
849
- }
850
- </script>
851
- """, height=80)
852
-
853
- # دکمه‌های واقعی (مخفی و کوچک)
854
- btn_cols = st.columns(scale)
855
- for i in range(scale):
856
- with btn_cols[i]:
857
- value = scale - i
858
- if st.button(
859
- str(value),
860
- key=f"{key}_btn_{value}",
861
- type="primary" if st.session_state.get(key) == value else "secondary",
862
- help="این دکمه‌ها مخفی هستند" # پیام راهنما
863
- ):
864
- st.session_state[key] = value
865
- st.rerun()
866
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
867
  return st.session_state.get(key)
868
 
869
  def create_ride_map():
@@ -940,46 +921,6 @@ def show_explanation(exp_type):
940
  for item in explanations.get(exp_type, []):
941
  st.markdown(f"<p class='explanation-item'>• {item}</p>", unsafe_allow_html=True)
942
 
943
-
944
-
945
-
946
- def create_likert_question(question, key, scale_type="5point"):
947
- """نمایش سوال لیکرت با اسلایدر نقطه‌ای"""
948
- left_label = "کاملاً مخالفم" if scale_type == "7point" else "کاملاً مخالفم"
949
- right_label = "کاملاً موافقم" if scale_type == "7point" else "کاملاً موافقم"
950
-
951
- st.markdown(f"<p style='font-size:16px; margin-bottom:5px;'>{question}</p>", unsafe_allow_html=True)
952
-
953
- max_value = 7 if scale_type == "7point" else 5
954
-
955
- # اضافه کردن attribute برای انتخاب استایل مناسب
956
- slider_container = st.empty()
957
- with slider_container:
958
- st.markdown(f'<div data-testid="stSlider" data-discrete="{"seven-point" if scale_type=="7point" else "five-point"}">', unsafe_allow_html=True)
959
- value = st.slider(
960
- "",
961
- min_value=1,
962
- max_value=max_value,
963
- value=(max_value+1)//2,
964
- step=1,
965
- key=f"slider_{key}"
966
- )
967
- st.markdown('</div>', unsafe_allow_html=True)
968
-
969
- st.markdown(
970
- f"""
971
- <div class="slider-labels">
972
- <span>{left_label}</span>
973
- <span>{right_label}</span>
974
- </div>
975
- <p style='text-align:center; color:#6a0dad; font-weight:bold;'>
976
- پاسخ شما: {value} ({'کاملاً مخالفم' if value==1 else 'کاملاً موافقم' if value==max_value else 'خنثی' if value==((max_value+1)//2) else 'موافقم' if value>((max_value+1)//2) else 'مخالفم'})
977
- </p>
978
- """,
979
- unsafe_allow_html=True
980
- )
981
- return value
982
-
983
  # ========== توابع مدیریت داده‌ها ==========
984
 
985
  def get_credentials():
@@ -1119,7 +1060,7 @@ def scenario_explanation():
1119
  <p> گوشی‌تان را از کیف درمی‌آورید. چشم‌تان به آیکون جدیدی می‌افتد؛ اپلیکیشنی به نام <strong>رهیار</strong> — نه اسنپ است و نه تپسی، اما خیلی شبیه آن‌هاست. رنگ بنفش جذابی دارد و شعارش توی ذهن‌تان می‌نشیند:
1120
  <br>«همراه سفرهای شما، راهی مطمئن، راهی روشن، رهیار»</p>
1121
  <p>با کنجکاوی اپ را باز می‌کنید. ظاهر ساده و روانی دارد. فعلاً فقط گزینه‌ی «سفر معمولی» فعال است. خبری از امکانات اضافه مثل «سفر دو‌مسیـره»، «توقف در مسیر»، «اکوپلاس» یا «موتورسوار» نیست — اما خب، رهیار تازه‌کار است و قرار است توسعه پیدا کند!.</p>
1122
- <p>مبدأ و مقصد را انتخاب می‌کنید و با قیمت مواجه می‌شوید.</p>
1123
  <p>با کلیک روی «ادامه»، اطلاعات سفر را مشاهده کنید 👇🏻</p>
1124
  </div>
1125
  """, unsafe_allow_html=True)
@@ -1245,7 +1186,7 @@ def random_likert_questions():
1245
  """نمایش سوالات لیکرت با دکمه‌های دایره‌ای"""
1246
  question_groups = [
1247
  {
1248
- "title": "عدالت توزیعی",
1249
  "key": "distributive",
1250
  "questions": [
1251
  {
@@ -1269,14 +1210,14 @@ def random_likert_questions():
1269
  ]
1270
  },
1271
  {
1272
- "title": "سوال توجه",
1273
  "key": "attention_check",
1274
  "questions": [
1275
  {"key": "attention_check2", "question": "تا چه مقدار با دقت به سوالات پاسخ می‌دهید؟", "scale": 7, "labels": ["خیلی کم", "خیلی زیاد"]}
1276
  ]
1277
  },
1278
  {
1279
- "title": "عدالت رویه‌ای",
1280
  "key": "procedural",
1281
  "questions": [
1282
  {"key": "procedural_1", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم قابل قبول است", "scale": 7, "labels": ["کاملاً مخالفم", "کاملاً موافقم"]},
@@ -1285,7 +1226,7 @@ def random_likert_questions():
1285
  ]
1286
  },
1287
  {
1288
- "title": "عدالت اطلاعاتی",
1289
  "key": "informational",
1290
  "questions": [
1291
  {"key": "informational_1", "question": "تا چه حد رهیار دلایل تعیین قیمت را به صورت صادقانه توضیح داد؟", "scale": 7, "labels": ["هیچ", "خیلی زیاد"]},
@@ -1303,7 +1244,20 @@ def random_likert_questions():
1303
 
1304
  current_group = question_groups[st.session_state.current_likert_group]
1305
 
1306
- st.markdown(f"### {current_group['title']}")
 
 
 
 
 
 
 
 
 
 
 
 
 
1307
 
1308
  # نمایش تمام سوالات این گروه
1309
  for question in current_group['questions']:
@@ -1311,18 +1265,23 @@ def random_likert_questions():
1311
  st.session_state.answers[question["key"]] = answer
1312
 
1313
  # دکمه ادامه/اتمام
1314
- button_label = "ادامه به گروه بعدی" if st.session_state.current_likert_group < len(question_groups)-1 else "اتمام پرسشنامه"
1315
 
1316
  if st.button(button_label):
1317
- # بررسی آیا همه سوالات این گروه پاسخ داده شده‌اند
1318
  all_answered = all(
1319
  question["key"] in st.session_state.answers and
1320
  st.session_state.answers[question["key"]] is not None
1321
  for question in current_group['questions']
1322
  )
1323
 
1324
- if not all_answered:
1325
- st.error("لطفاً به تمام سوالات این بخش پاسخ دهید قبل از ادامه")
 
 
 
 
 
1326
  else:
1327
  if st.session_state.current_likert_group < len(question_groups) - 1:
1328
  st.session_state.current_likert_group += 1
@@ -1338,16 +1297,16 @@ def explanation_questions():
1338
  # لیست سوالات به ترتیب نمایش
1339
  questions = [
1340
  {
1341
- "key": "trust",
1342
- "label": "آیا شما به تصمیم‌گیری‌هایی که توسط هوش مصنوعی انجام میشود اعتماد دارید؟",
1343
- "options": ["بله", "خیر", "نظری ندارم"],
1344
  "required": True
1345
  },
1346
  {
1347
  "key": "pricing_method",
1348
- "label": "به نظر شما پلتفرم قیمت را چگونه تعیین می‌کند؟",
1349
  "options": [
1350
- "به صورت دستی توسط تیم پلتفرم",
1351
  "به صورت خودکار توسط هوش مصنوعی و الگوریتم‌ها",
1352
  "ترکیبی از هر دو روش",
1353
  "نظری ندارم"
@@ -1355,9 +1314,9 @@ def explanation_questions():
1355
  "required": True
1356
  },
1357
  {
1358
- "key": "price_increase",
1359
- "label": "آیا به نظر شما در این سفر افزایش قیمت نسبت به حالت طبیعی وجود داشته است؟",
1360
- "options": ["بله", "خیر", "مطمئن نیستم"],
1361
  "required": True
1362
  },
1363
  {
@@ -1370,8 +1329,8 @@ def explanation_questions():
1370
  "key": "explanation_type",
1371
  "label": "اگر توضیحی دریافت کردید، این توضیح بیشتر به کدام مورد شباهت داشت؟",
1372
  "options": [
1373
- ر اساس عواملی که در قیمت‌گذاری لحاظ شده‌اند",
1374
- "شامل سناریوهای جایگزین که می‌توانستند قیمت متفاوتی ایجاد کنند",
1375
  "توضیحی دریافت نکردم"
1376
  ],
1377
  "required": False,
@@ -1426,7 +1385,7 @@ def demographic_form():
1426
  st.markdown("### 📝 اطلاعات دموگرافیک")
1427
  st.markdown("""
1428
  <div>
1429
- <p>لطفاً اطلاعات زیر را صادقانه و به دقت وارد نمایید.</p>
1430
  <p>همانطور که گفته شد،این اطلاعات کاملاً محرمانه نزد محقق خواهد ماند و در جهت اهداف پژوهشی استفاده خواهد شد.</p>
1431
  </div>
1432
  """, unsafe_allow_html=True)
@@ -1518,7 +1477,7 @@ def thank_you_page():
1518
 
1519
  در صورت وجود هرگونه سوال، ابهام یا پیشنهاد می‌توانید با محقق تماس بگیرید:
1520
 
1521
- ایمیل: maryam.ilka2000@gmail.com
1522
  """)
1523
  st.balloons()
1524
 
 
738
  """, unsafe_allow_html=True)
739
 
740
  # ========== توابع اصلی ==========
 
741
  def enhanced_likert_scale(question_data):
742
+ """لیکرت اسکیل با محدوده 0 تا scale و عدم نمایش نقطه برای 0"""
743
  question = question_data["question"]
744
  key = question_data["key"]
745
  scale = question_data["scale"]
746
+ labels = question_data.get("labels", ["کاملاً مخالفم", "کاملاً موافقم"])
747
 
748
+ # مقداردهی اولیه
749
  if key not in st.session_state:
750
+ st.session_state[key] = 0
751
+
752
  # نمایش سوال
753
  st.markdown(f"<div style='text-align:center; font-weight:bold; margin-bottom:15px;'>{question}</div>",
754
  unsafe_allow_html=True)
755
+
756
  # ایجاد خط و نقاط با HTML/CSS
757
  scale_html = f"""
758
  <style>
759
+ @font-face {{
760
+ font-family: 'Vazir';
761
+ src: url('https://cdn.fontcdn.ir/Font/Persian/Vazir/Vazir-Bold.woff2') format('woff2');
762
+ }}
763
  .likert-line {{
764
  width: 80%;
765
  height: 2px;
 
768
  position: relative;
769
  display: flex;
770
  justify-content: space-between;
771
+ direction: rtl;
772
  }}
773
  .likert-dot {{
774
+ width: 18px;
775
+ height: 18px;
776
  border-radius: 50%;
777
  background: white;
778
  border: 2px solid #6a0dad;
779
  position: relative;
780
  top: -9px;
 
 
 
 
781
  }}
782
+ .likert-dot.active {{
783
  background: #6a0dad;
784
  }}
785
  .likert-labels {{
786
  width: 80%;
787
+ margin: 5px auto 15px;
788
  display: flex;
789
  justify-content: space-between;
790
+ direction: rtl;
791
+ font-size: 14px;
792
+ font-family: 'Vazir', sans-serif;
 
 
 
793
  font-weight: bold;
794
+ color: #6a0dad;
795
  }}
796
+ .separator-line {{
797
+ width: 80%;
798
+ height: 2px;
799
+ background: #6a0dad;
800
+ margin: 20px auto;
 
801
  }}
802
  @media (max-width: 768px) {{
803
  .likert-line {{
 
809
  }}
810
  </style>
811
 
812
+ <div>
813
+ <div class="likert-labels">
814
  <span>{labels[1]}</span>
815
  <span>{labels[0]}</span>
816
  </div>
817
+ <div class="likert-line">
818
  """
819
 
820
+ # اضافه کردن نقاط فقط برای مقادیر 1 تا scale
821
+ current_value = st.session_state.get(key, 0)
822
+ for i in range(1, scale+1):
823
+ value = scale-i+1 # مقادیر از 1 تا scale
824
+ active_class = "active" if current_value == value else ""
825
+ scale_html += f"<div class='likert-dot {active_class}'></div>"
 
 
 
 
 
826
 
827
+ scale_html += "</div></div>"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
828
 
829
+ # نمایش کامپوننت HTML
830
+ components.html(scale_html, height=60)
831
+
832
+ # ورودی عددی با محدوده 0 تا scale (0 قابل انتخاب است)
833
+ value = st.number_input(
834
+ "پاسخ شما (0 برای پاسخ ندادن، 1 تا 7 برای پاسخ):",
835
+ min_value=0, # 0 مجاز است
836
+ max_value=scale,
837
+ value=st.session_state.get(key, 0),
838
+ step=1,
839
+ key=f"{key}_input",
840
+ placeholder="0 (پاسخ نداده) یا 1-7",
841
+ format="%d",
842
+ on_change=lambda: st.session_state.update({key: st.session_state[f"{key}_input"]})
843
+ )
844
+
845
+ # خط جداکننده بنفش
846
+ st.markdown('<div class="separator-line"></div>', unsafe_allow_html=True)
847
+
848
  return st.session_state.get(key)
849
 
850
  def create_ride_map():
 
921
  for item in explanations.get(exp_type, []):
922
  st.markdown(f"<p class='explanation-item'>• {item}</p>", unsafe_allow_html=True)
923
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
924
  # ========== توابع مدیریت داده‌ها ==========
925
 
926
  def get_credentials():
 
1060
  <p> گوشی‌تان را از کیف درمی‌آورید. چشم‌تان به آیکون جدیدی می‌افتد؛ اپلیکیشنی به نام <strong>رهیار</strong> — نه اسنپ است و نه تپسی، اما خیلی شبیه آن‌هاست. رنگ بنفش جذابی دارد و شعارش توی ذهن‌تان می‌نشیند:
1061
  <br>«همراه سفرهای شما، راهی مطمئن، راهی روشن، رهیار»</p>
1062
  <p>با کنجکاوی اپ را باز می‌کنید. ظاهر ساده و روانی دارد. فعلاً فقط گزینه‌ی «سفر معمولی» فعال است. خبری از امکانات اضافه مثل «سفر دو‌مسیـره»، «توقف در مسیر»، «اکوپلاس» یا «موتورسوار» نیست — اما خب، رهیار تازه‌کار است و قرار است توسعه پیدا کند!.</p>
1063
+ <p>مبدأ و مقصد را انتخاب می‌کنید و با قیمت <strong>200 هزار تومان</strong> مواجه می‌شوید.</p>
1064
  <p>با کلیک روی «ادامه»، اطلاعات سفر را مشاهده کنید 👇🏻</p>
1065
  </div>
1066
  """, unsafe_allow_html=True)
 
1186
  """نمایش سوالات لیکرت با دکمه‌های دایره‌ای"""
1187
  question_groups = [
1188
  {
1189
+ "title": "سری اول سوالات",
1190
  "key": "distributive",
1191
  "questions": [
1192
  {
 
1210
  ]
1211
  },
1212
  {
1213
+ "title": "سری دوم سوالات",
1214
  "key": "attention_check",
1215
  "questions": [
1216
  {"key": "attention_check2", "question": "تا چه مقدار با دقت به سوالات پاسخ می‌دهید؟", "scale": 7, "labels": ["خیلی کم", "خیلی زیاد"]}
1217
  ]
1218
  },
1219
  {
1220
+ "title": "سری سوم سوالات",
1221
  "key": "procedural",
1222
  "questions": [
1223
  {"key": "procedural_1", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم قابل قبول است", "scale": 7, "labels": ["کاملاً مخالفم", "کاملاً موافقم"]},
 
1226
  ]
1227
  },
1228
  {
1229
+ "title": "سری چهارم سوالات",
1230
  "key": "informational",
1231
  "questions": [
1232
  {"key": "informational_1", "question": "تا چه حد رهیار دلایل تعیین قیمت را به صورت صادقانه توضیح داد؟", "scale": 7, "labels": ["هیچ", "خیلی زیاد"]},
 
1244
 
1245
  current_group = question_groups[st.session_state.current_likert_group]
1246
 
1247
+ st.markdown(f"## {current_group['title']}")
1248
+ st.markdown("""
1249
+ <div class="guide-text" style="display: flex; flex-direction: column; align-items: center; background-color: #f0f2f6; border-radius: 10px; padding: 20px; gap: 15px;">
1250
+ <div style="flex: 1;">
1251
+ <h3>راهنمای پاسخ:</h3>
1252
+ <p>برای پاسخ به سوالات، با با هفت نقطه بین دو سر طیف مواجه خواهید شد.</p>
1253
+ <br>- سمت چپ: کمترین مقدار
1254
+ <br>- سمت راست: بیشترین مقدار
1255
+ </p>
1256
+ <p>زیر طیف جعبه‌ای وجود دارد که مقدار پیش‌فرض آن صفر است. با زدن دکمه مثبت ومنفی کنار جعبه، این عدد را بین یک تا هفت تنظیم کنید تا میزان موافقت خود با جملات یا نزدیکی به دو سر طیف را انتخاب کنید.</p>
1257
+ <p>اگر از پاسخ‌هایتان مطمئن هستید، روی دکمه «ادامه» کلیک کنید.</p>
1258
+ </div>
1259
+ </div>
1260
+ """, unsafe_allow_html=True)
1261
 
1262
  # نمایش تمام سوالات این گروه
1263
  for question in current_group['questions']:
 
1265
  st.session_state.answers[question["key"]] = answer
1266
 
1267
  # دکمه ادامه/اتمام
1268
+ button_label = "ادامه" if st.session_state.current_likert_group < len(question_groups)-1 else "ادامه"
1269
 
1270
  if st.button(button_label):
1271
+ # بررسی آیا همه سوالات این گروه پاسخ داده شده‌اند و هیچ کدام صفر نیستند
1272
  all_answered = all(
1273
  question["key"] in st.session_state.answers and
1274
  st.session_state.answers[question["key"]] is not None
1275
  for question in current_group['questions']
1276
  )
1277
 
1278
+ has_zero = any(
1279
+ st.session_state.answers.get(question["key"]) == 0
1280
+ for question in current_group['questions']
1281
+ )
1282
+
1283
+ if not all_answered or has_zero:
1284
+ st.error("لطفاً به تمام سوالات این بخش پاسخ دهید")
1285
  else:
1286
  if st.session_state.current_likert_group < len(question_groups) - 1:
1287
  st.session_state.current_likert_group += 1
 
1297
  # لیست سوالات به ترتیب نمایش
1298
  questions = [
1299
  {
1300
+ "key": "price_increase",
1301
+ "label": "در سناریوی کیس رهیار، آ��ا به نظر شما قیمت ارائهشده برای مسیر موردنظر، در مقایسه با قیمت‌های معمول برای همان مسیر یا مسیرهای مشابه، افزایش غیرمعمول یا نامتعارفی داشته است یا خیر؟ (با صرف‌نظر از تغییرات قیمتی ناشی از تورم یا نوسانات عمومی قیمت)‌",
1302
+ "options": ["بله", "خیر", "مطمئن نیستم"],
1303
  "required": True
1304
  },
1305
  {
1306
  "key": "pricing_method",
1307
+ "label": "به نظر شما رهیار چگونه قیمت‌های پویا و متغیر را اعمال می‌کند؟",
1308
  "options": [
1309
+ "به صورت دستی توسط تیم رهیار",
1310
  "به صورت خودکار توسط هوش مصنوعی و الگوریتم‌ها",
1311
  "ترکیبی از هر دو روش",
1312
  "نظری ندارم"
 
1314
  "required": True
1315
  },
1316
  {
1317
+ "key": "trust",
1318
+ "label": "در زندگی روزمره ممکن است با تصمیمات هوش مصنوعی مواجه شوید، مانند پیشنهاد مسیر برای اجتناب از ترافیک، ارائه دستور پخت بر اساس مواد غذایی، توصیه پوشش یا نکات ارائه برای جلسات کاری، پیشنهاد سهام برای سرمایه‌گذاری، یا معرفی افراد در برنامه‌های دوستیابی. فارغ از تصمیمات حیاتی (مثل تشخیص پزشکی یا احکام قضایی)، آیا به تصمیم‌گیری‌های هوش مصنوعی در این موارد روزمره اعتماد دارید؟",
1319
+ "options": ["بله", "تا حدودی", "خیر", "نظری ندارم"],
1320
  "required": True
1321
  },
1322
  {
 
1329
  "key": "explanation_type",
1330
  "label": "اگر توضیحی دریافت کردید، این توضیح بیشتر به کدام مورد شباهت داشت؟",
1331
  "options": [
1332
+ "با توجه به عوامل مؤثر در تعیین قیمت و شدت تأثیر آنها",
1333
+ "به من اطلاع دادند که در صورت انتظار و درخواست سفر در شرایط متفاوتِ زمانی دیگر، ممکن است قیمت دیگری دریافت کنم",
1334
  "توضیحی دریافت نکردم"
1335
  ],
1336
  "required": False,
 
1385
  st.markdown("### 📝 اطلاعات دموگرافیک")
1386
  st.markdown("""
1387
  <div>
1388
+ <p>لطفاً اطلاعات زیر را صادقانه وارد نمایید.</p>
1389
  <p>همانطور که گفته شد،این اطلاعات کاملاً محرمانه نزد محقق خواهد ماند و در جهت اهداف پژوهشی استفاده خواهد شد.</p>
1390
  </div>
1391
  """, unsafe_allow_html=True)
 
1477
 
1478
  در صورت وجود هرگونه سوال، ابهام یا پیشنهاد می‌توانید با محقق تماس بگیرید:
1479
 
1480
+ ✉ایمیل: maryam.ilka2000@gmail.com
1481
  """)
1482
  st.balloons()
1483