GSMEthesis commited on
Commit
4e020fe
·
verified ·
1 Parent(s): 37f6dbe

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -90
app.py CHANGED
@@ -1195,111 +1195,89 @@ def random_likert_questions():
1195
 
1196
 
1197
  def explanation_questions():
1198
- """سوالات درباره توضیحات قیمت"""
1199
- st.markdown("""
1200
- <style>
1201
- /* تضمین رنگ متن برای تمام سطوح */
1202
- .st-ec, .st-ed, .st-ee, .st-ef, .st-eg, .st-eh, .st-ei, .st-ej {
1203
- color: black !important;
1204
- }
1205
- </style>
1206
- """, unsafe_allow_html=True)
1207
  st.markdown("### 📋 سوالات تکمیلی")
1208
 
1209
- # مقداردهی اولیه متغیرهای session_state اگر وجود ندارند
1210
- if 'trust' not in st.session_state:
1211
- st.session_state.trust = None
1212
- if 'pricing_method' not in st.session_state:
1213
- st.session_state.pricing_method = None
1214
- if 'price_increase' not in st.session_state:
1215
- st.session_state.price_increase = None
1216
- if 'explanation_received' not in st.session_state:
1217
- st.session_state.explanation_received = None
1218
- if 'explanation_type' not in st.session_state:
1219
- st.session_state.explanation_type = None
1220
-
1221
- trust = st.radio(
1222
- "آیا شما به تصمیم گیری هایی که توسط هوش مصنوعی انجام می شود اعتماد دارید؟",
1223
- [
1224
- "بله",
1225
- "خیر",
1226
- "نظری ندارم"
1227
- ],
1228
- index=None,
1229
- key="trust_radio"
1230
- )
1231
-
1232
- pricing_method = None
1233
- if trust is not None:
1234
- pricing_method = st.radio(
1235
- "به نظر شما پلتفرم قیمت را چگونه تعیین می‌کند؟",
1236
- [
1237
  "به صورت دستی توسط تیم پلتفرم",
1238
  "به صورت خودکار توسط هوش مصنوعی و الگوریتم‌ها",
1239
  "ترکیبی از هر دو روش",
1240
  "نظری ندارم"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1241
  ],
1242
- index=None,
1243
- key="pricing_method_radio"
1244
- )
1245
 
1246
- # سوال جدید 2: افزایش قیمت
1247
- price_increase = None
1248
- if pricing_method is not None: # فقط اگر به سوال اول پاسخ داده شده باشد
1249
- price_increase = st.radio(
1250
- "آیا به نظر شما در این سفر افزایش قیمت نسبت به حالت طبیعی وجود داشته است؟",
1251
- ["بله", "خیر", "مطمئن نیستم"],
1252
- index=None,
1253
- key="price_increase_radio"
1254
- )
1255
 
1256
- # سوالات قبلی
1257
- explanation_received = None
1258
- explanation_type = None
1259
- if price_increase is not None: # فقط اگر به سوال دوم پاسخ داده شده باشد
1260
- explanation_received = st.radio(
1261
- "آیا برای قیمت پیشنهادی این سفر، توضیحی به شما ارائه شد؟",
1262
- ["بله", "خیر"],
 
 
 
 
 
 
1263
  index=None,
1264
- key="explanation_received_radio"
1265
  )
1266
-
1267
- # سوال دوم (فقط اگر پاسخ بله باشد)
1268
- if explanation_received == "بله":
1269
- explanation_type = st.radio(
1270
- "اگر توضیحی دریافت کردید، این توضیح بیشتر به کدام مورد شباهت داشت؟",
1271
- [
1272
- "بر اساس عواملی که در قیمت‌گذاری لحاظ شده‌اند",
1273
- "شامل سناریوهای جایگزین که می‌توانستند قیمت متفاوتی ایجاد کنند",
1274
- "توضیحی دریافت نکردم"
1275
- ],
1276
- index=None,
1277
- key="explanation_type_radio"
1278
- )
1279
-
1280
- if st.button("ادامه", type="primary", key="submit_explanation"):
1281
- # استفاده از مقادیر مستقیماً از session_state
1282
  st.session_state.trust = st.session_state.get("trust_radio")
1283
  st.session_state.pricing_method = st.session_state.get("pricing_method_radio")
1284
  st.session_state.price_increase = st.session_state.get("price_increase_radio")
1285
  st.session_state.explanation_received = st.session_state.get("explanation_received_radio")
1286
- st.session_state.explanation_type = st.session_state.get("explanation_type_radio")
1287
-
1288
- # بررسی کامل بودن پاسخ‌ها
1289
- if st.session_state.trust is None:
1290
- st.warning("لطفاً به سوال تکمیلی اول پاسخ دهید")
1291
- elif st.session_state.pricing_method is None:
1292
- st.warning("لطفاً به سوال تکمیلی دوم پاسخ دهید")
1293
- elif st.session_state.price_increase is None:
1294
- st.warning("لطفاً به سوال تکمیلی سوم پاسخ دهید")
1295
- elif st.session_state.explanation_received is None:
1296
- st.warning("لطفاً به سوال تکمیلی چهارم پاسخ دهید")
1297
- elif st.session_state.explanation_received == "بله" and st.session_state.explanation_type is None:
1298
- st.warning("لطفاً به سوال تکمیلی پنجم پاسخ دهید")
1299
- else:
1300
- st.session_state.current_page = "demographic"
1301
- st.rerun()
1302
-
1303
 
1304
  def demographic_form():
1305
  """فرم اطلاعات دموگرافیک"""
 
1195
 
1196
 
1197
  def explanation_questions():
1198
+ """نمایش سوالات تکمیلی به صورت مرحله‌ای"""
 
 
 
 
 
 
 
 
1199
  st.markdown("### 📋 سوالات تکمیلی")
1200
 
1201
+ # لیست سوالات و کلید آن‌ها
1202
+ questions = [
1203
+ {
1204
+ "key": "trust_radio",
1205
+ "label": "آیا شما به تصمیم گیری هایی که توسط هوش مصنوعی انجام می شود اعتماد دارید؟",
1206
+ "options": ["بله", "خیر", "نظری ندارم"]
1207
+ },
1208
+ {
1209
+ "key": "pricing_method_radio",
1210
+ "label": "به نظر شما پلتفرم قیمت را چگونه تعیین می‌کند؟",
1211
+ "options": [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1212
  "به صورت دستی توسط تیم پلتفرم",
1213
  "به صورت خودکار توسط هوش مصنوعی و الگوریتم‌ها",
1214
  "ترکیبی از هر دو روش",
1215
  "نظری ندارم"
1216
+ ]
1217
+ },
1218
+ {
1219
+ "key": "price_increase_radio",
1220
+ "label": "آیا به نظر شما در این سفر افزایش قیمت نسبت به حالت طبیعی وجود داشته است؟",
1221
+ "options": ["بله", "خیر", "مطمئن نیستم"]
1222
+ },
1223
+ {
1224
+ "key": "explanation_received_radio",
1225
+ "label": "آیا برای قیمت پیشنهادی این سفر، توضیحی به شما ارائه شد؟",
1226
+ "options": ["بله", "خیر"]
1227
+ },
1228
+ {
1229
+ "key": "explanation_type_radio",
1230
+ "label": "اگر توضیحی دریافت کردید، این توضیح بیشتر به کدام مورد شباهت داشت؟",
1231
+ "options": [
1232
+ "بر اساس عواملی که در قیمت‌گذاری لحاظ شده‌اند",
1233
+ "شامل سناریوهای جایگزین که می‌توانستند قیمت متفاوتی ایجاد کنند",
1234
+ "توضیحی دریافت نکردم"
1235
  ],
1236
+ "condition": lambda: st.session_state.get("explanation_received_radio") == "بله"
1237
+ }
1238
+ ]
1239
 
1240
+ # مقدار اولیه مرحله
1241
+ if "explanation_step" not in st.session_state:
1242
+ st.session_state.explanation_step = 0
1243
+
1244
+ current_step = st.session_state.explanation_step
 
 
 
 
1245
 
1246
+ if current_step < len(questions):
1247
+ q = questions[current_step]
1248
+
1249
+ # شرط نمایش (مثلاً سوال ۵ فقط وقتی توضیح دریافت شده)
1250
+ if "condition" in q and not q["condition"]():
1251
+ st.session_state.explanation_step += 1
1252
+ st.rerun()
1253
+ return
1254
+
1255
+ # نمایش سوال فعلی
1256
+ st.radio(
1257
+ q["label"],
1258
+ q["options"],
1259
  index=None,
1260
+ key=q["key"]
1261
  )
1262
+
1263
+ if st.button("ادامه", key=f"continue_{current_step}"):
1264
+ if st.session_state.get(q["key"]) is None:
1265
+ st.warning("لطفاً یک گزینه را انتخاب کنید")
1266
+ else:
1267
+ st.session_state.explanation_step += 1
1268
+ st.rerun()
1269
+ else:
1270
+ # پایان مراحل و رفتن به فرم دموگرافیک
1271
+ # ذخیره نهایی داده‌ها
 
 
 
 
 
 
1272
  st.session_state.trust = st.session_state.get("trust_radio")
1273
  st.session_state.pricing_method = st.session_state.get("pricing_method_radio")
1274
  st.session_state.price_increase = st.session_state.get("price_increase_radio")
1275
  st.session_state.explanation_received = st.session_state.get("explanation_received_radio")
1276
+ st.session_state.explanation_type = (
1277
+ st.session_state.get("explanation_type_radio") if st.session_state.explanation_received == "بله" else "N/A"
1278
+ )
1279
+ st.session_state.current_page = "demographic"
1280
+ st.rerun()
 
 
 
 
 
 
 
 
 
 
 
 
1281
 
1282
  def demographic_form():
1283
  """فرم اطلاعات دموگرافیک"""