Update app.py
Browse files
app.py
CHANGED
@@ -353,6 +353,12 @@ def generate_image_from_prompt(prompt):
|
|
353 |
def safe_state_update(state, updates):
|
354 |
try:
|
355 |
new_state = {**state, **updates}
|
|
|
|
|
|
|
|
|
|
|
|
|
356 |
return new_state
|
357 |
except Exception as e:
|
358 |
print(f"State update error: {e}")
|
@@ -373,12 +379,33 @@ def create_interface():
|
|
373 |
|
374 |
css = """
|
375 |
@media (max-width: 600px) {
|
376 |
-
.container { padding: 10px; }
|
377 |
-
.gradio-row {
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
382 |
}
|
383 |
"""
|
384 |
|
@@ -425,19 +452,17 @@ def create_interface():
|
|
425 |
set_baseline_btn = gr.Button("축원 마치기", variant="primary")
|
426 |
baseline_status = gr.Markdown("")
|
427 |
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
|
440 |
-
# 청신 탭
|
441 |
with gr.TabItem("청신") as tab_listen:
|
442 |
gr.Markdown("## 청신 - 소리로 정화하기")
|
443 |
gr.Markdown("""
|
|
|
353 |
def safe_state_update(state, updates):
|
354 |
try:
|
355 |
new_state = {**state, **updates}
|
356 |
+
# 중요 상태값 검증
|
357 |
+
if "user_name" in updates:
|
358 |
+
new_state["user_name"] = str(updates["user_name"]).strip() or "익명"
|
359 |
+
if "baseline_features" in updates:
|
360 |
+
if updates["baseline_features"] is None:
|
361 |
+
return state # baseline이 None이면 상태 업데이트 하지 않음
|
362 |
return new_state
|
363 |
except Exception as e:
|
364 |
print(f"State update error: {e}")
|
|
|
379 |
|
380 |
css = """
|
381 |
@media (max-width: 600px) {
|
382 |
+
.container { padding: 10px !important; }
|
383 |
+
.gradio-row {
|
384 |
+
flex-direction: column !important;
|
385 |
+
gap: 10px !important;
|
386 |
+
}
|
387 |
+
.gradio-button {
|
388 |
+
width: 100% !important;
|
389 |
+
margin: 5px 0 !important;
|
390 |
+
min-height: 44px !important; /* 모바일 터치 영역 개선 */
|
391 |
+
}
|
392 |
+
.gradio-textbox { width: 100% !important; }
|
393 |
+
.gradio-audio { width: 100% !important; }
|
394 |
+
.gradio-image { width: 100% !important; }
|
395 |
+
#audio-recorder { width: 100% !important; }
|
396 |
+
#result-image { width: 100% !important; }
|
397 |
+
.gradio-dataframe {
|
398 |
+
overflow-x: auto !important;
|
399 |
+
max-width: 100% !important;
|
400 |
+
}
|
401 |
+
}
|
402 |
+
|
403 |
+
/* 전반적인 UI 개선 */
|
404 |
+
.gradio-button {
|
405 |
+
transition: all 0.3s ease;
|
406 |
+
}
|
407 |
+
.gradio-button:active {
|
408 |
+
transform: scale(0.98);
|
409 |
}
|
410 |
"""
|
411 |
|
|
|
452 |
set_baseline_btn = gr.Button("축원 마치기", variant="primary")
|
453 |
baseline_status = gr.Markdown("")
|
454 |
|
455 |
+
# 4단계: 굿판 입장 안내
|
456 |
+
entry_guide_section = gr.Column(visible=False)
|
457 |
+
with entry_guide_section:
|
458 |
+
gr.Markdown("## 굿판으로 입장하기")
|
459 |
+
gr.Markdown("""
|
460 |
+
* 청신 탭으로 이동해 주세요.
|
461 |
+
* 부산광역시 동래구 온천장역에서 시작하면 더욱 깊은 경험을 시작할 수 있습니다.
|
462 |
+
* (본격적인 경험을 시작하기에 앞서 이동을 권장드립니다)
|
463 |
+
""")
|
464 |
+
enter_btn = gr.Button("청신 의식 시작하기", variant="primary")
|
|
|
465 |
|
|
|
466 |
with gr.TabItem("청신") as tab_listen:
|
467 |
gr.Markdown("## 청신 - 소리로 정화하기")
|
468 |
gr.Markdown("""
|