Maryam Ilka commited on
Commit
27790d3
·
verified ·
1 Parent(s): 35fb670

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -36
app.py CHANGED
@@ -613,19 +613,17 @@ def map_view():
613
  def random_likert_questions():
614
  """نمایش تصادفی سوالات لیکرت"""
615
  if 'all_questions' not in st.session_state:
616
- # تعریف تمام سوالات با نوع مقیاس
617
- questions = [
618
- # سوالات distributive (7 گزینه‌ای)
619
  {"key": "distributive_1", "question": "قیمتی که به شما ارائه شد، منصفانه است.", "scale": "7point"},
620
  {"key": "distributive_2", "question": "قیمتی که به شما ارائه شد، معقول است.", "scale": "7point"},
621
  {"key": "distributive_3", "question": "قیمتی که به شما ارائه شد، قابل قبول است.", "scale": "7point"},
622
-
623
- # سوالات procedural (7 گزینه‌ای)
624
  {"key": "procedural_1", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم قابل قبول است.", "scale": "7point"},
625
  {"key": "procedural_2", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم منصفانه است.", "scale": "7point"},
626
- {"key": "procedural_3", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم معقول است.", "scale": "7point"},
627
-
628
- # سوالات informational (5 گزینه‌ای)
 
629
  {"key": "informational_1", "question": "پلتفرم به صورت صادقانه دلایل تغییر قیمت (مثل افزایش تقاضا یا شرایط جوی) را توضیح داد.", "scale": "5point"},
630
  {"key": "informational_2", "question": "پلتفرم به طور کامل عوامل مؤثر بر قیمت (مثل ترافیک، تعداد رانندگان) را شرح داد.", "scale": "5point"},
631
  {"key": "informational_3", "question": "دلایل ارائه‌شده برای تغییر قیمت منطقی و قابل قبول بود.", "scale": "5point"},
@@ -633,38 +631,34 @@ def random_likert_questions():
633
  {"key": "informational_5", "question": "توضیحات پلتفرم متناسب با شرایط سفر من (مثل مسیر یا ساعت درخواست) بود.", "scale": "5point"}
634
  ]
635
 
636
- # تقسیم سوالات به دو گروه
637
- st.session_state.distributive_procedural = [q for q in questions if q['key'].startswith(('distributive', 'procedural'))]
638
- st.session_state.informational = [q for q in questions if q['key'].startswith('informational')]
639
 
640
- # تصادفی‌سازی ترتیب سوالات
641
- random.shuffle(st.session_state.distributive_procedural)
642
- random.shuffle(st.session_state.informational)
 
 
 
 
 
 
 
 
 
643
 
644
- st.session_state.current_phase = 'distributive_procedural'
645
- st.session_state.current_question_index = 0
646
-
647
- # انتخاب سوالات جاری بر اساس فاز
648
- current_questions = (
649
- st.session_state.distributive_procedural
650
- if st.session_state.current_phase == 'distributive_procedural'
651
- else st.session_state.informational
652
- )
653
-
654
- if st.session_state.current_question_index < len(current_questions):
655
- q = current_questions[st.session_state.current_question_index]
656
- answer = create_likert_question(q["question"], q["key"], q["scale"])
657
-
658
- if answer:
659
- st.session_state.current_question_index += 1
660
- time.sleep(0.5)
661
  st.rerun()
662
  else:
663
- if st.session_state.current_phase == 'distributive_procedural':
664
- # بعد از اتمام سوالات distributive/procedural، برو به اتنشن چک دوم
665
  st.session_state.current_page = "attention_check2"
666
  else:
667
- # بعد از اتمام سوالات informational، برو به سوالات توضیحات
668
  st.session_state.current_page = "explanation_questions"
669
  st.rerun()
670
 
@@ -700,8 +694,8 @@ def attention_check2():
700
  if answer:
701
  st.session_state.attention_check2 = answer
702
  # تغییر فاز به سوالات informational
703
- st.session_state.current_phase = 'informational'
704
- st.session_state.current_question_index = 0
705
  st.rerun()
706
  else:
707
  st.warning("لطفاً یک گزینه را انتخاب کنید")
 
613
  def random_likert_questions():
614
  """نمایش تصادفی سوالات لیکرت"""
615
  if 'all_questions' not in st.session_state:
616
+ # تعریف تمام سوالات
617
+ dp_questions = [
 
618
  {"key": "distributive_1", "question": "قیمتی که به شما ارائه شد، منصفانه است.", "scale": "7point"},
619
  {"key": "distributive_2", "question": "قیمتی که به شما ارائه شد، معقول است.", "scale": "7point"},
620
  {"key": "distributive_3", "question": "قیمتی که به شما ارائه شد، قابل قبول است.", "scale": "7point"},
 
 
621
  {"key": "procedural_1", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم قابل قبول است.", "scale": "7point"},
622
  {"key": "procedural_2", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم منصفانه است.", "scale": "7point"},
623
+ {"key": "procedural_3", "question": "فرآیند و رویه قیمت‌گذاری پلتفرم معقول است.", "scale": "7point"}
624
+ ]
625
+
626
+ info_questions = [
627
  {"key": "informational_1", "question": "پلتفرم به صورت صادقانه دلایل تغییر قیمت (مثل افزایش تقاضا یا شرایط جوی) را توضیح داد.", "scale": "5point"},
628
  {"key": "informational_2", "question": "پلتفرم به طور کامل عوامل مؤثر بر قیمت (مثل ترافیک، تعداد رانندگان) را شرح داد.", "scale": "5point"},
629
  {"key": "informational_3", "question": "دلایل ارائه‌شده برای تغییر قیمت منطقی و قابل قبول بود.", "scale": "5point"},
 
631
  {"key": "informational_5", "question": "توضیحات پلتفرم متناسب با شرایط سفر من (مثل مسیر یا ساعت درخواست) بود.", "scale": "5point"}
632
  ]
633
 
634
+ # تصادفی‌سازی سوالات
635
+ random.shuffle(dp_questions)
636
+ random.shuffle(info_questions)
637
 
638
+ # ذخیره در session
639
+ st.session_state.dp_questions = dp_questions
640
+ st.session_state.info_questions = info_questions
641
+ st.session_state.current_phase = 'dp' # distributive/procedural phase
642
+ st.session_state.current_q_index = 0
643
+
644
+ # انتخاب سوالات جاری
645
+ current_questions = st.session_state.dp_questions if st.session_state.current_phase == 'dp' else st.session_state.info_questions
646
+
647
+ if st.session_state.current_q_index < len(current_questions):
648
+ q = current_questions[st.session_state.current_q_index]
649
+ selected = create_likert_question(q["question"], q["key"], q["scale"])
650
 
651
+ if selected:
652
+ st.session_state[q["key"]] = selected
653
+ st.session_state.current_q_index += 1
654
+ time.sleep(0.3) # تاخیر کوتاه برای UX بهتر
 
 
 
 
 
 
 
 
 
 
 
 
 
655
  st.rerun()
656
  else:
657
+ if st.session_state.current_phase == 'dp':
658
+ # بعد از اتمام سوالات distributive/procedural
659
  st.session_state.current_page = "attention_check2"
660
  else:
661
+ # بعد از اتمام سوالات informational
662
  st.session_state.current_page = "explanation_questions"
663
  st.rerun()
664
 
 
694
  if answer:
695
  st.session_state.attention_check2 = answer
696
  # تغییر فاز به سوالات informational
697
+ st.session_state.current_phase = 'info'
698
+ st.session_state.current_q_index = 0
699
  st.rerun()
700
  else:
701
  st.warning("لطفاً یک گزینه را انتخاب کنید")