ArmanRV commited on
Commit
9d74976
·
verified ·
1 Parent(s): c2ede28

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -43
app.py CHANGED
@@ -192,7 +192,7 @@ def allow_call(min_interval_sec: float = 2.5) -> Tuple[bool, str]:
192
 
193
 
194
  # =========================
195
- # Model init
196
  # =========================
197
  base_path = "yisol/IDM-VTON"
198
 
@@ -242,7 +242,7 @@ pipe.unet_encoder = UNet_Encoder
242
 
243
 
244
  # =========================
245
- # Inference
246
  # =========================
247
  @spaces.GPU
248
  def start_tryon(
@@ -395,15 +395,6 @@ button[aria-label="Settings"] {display:none !important;}
395
  font-size: 14px;
396
  }
397
 
398
- .feedback-saving {
399
- border: 1px solid #fde68a;
400
- background: #fffbea;
401
- color: #92400e;
402
- border-radius: 12px;
403
- padding: 10px 12px;
404
- font-size: 14px;
405
- }
406
-
407
  .feedback-idle {
408
  border: 1px dashed #d1d5db;
409
  background: #ffffff;
@@ -416,7 +407,7 @@ button[aria-label="Settings"] {display:none !important;}
416
 
417
 
418
  # =========================
419
- # UX example image (stored in repo)
420
  # =========================
421
  UX_EXAMPLE_IMG_PATH = "assets/photo_2026-02-26_14-56-24.jpg"
422
 
@@ -438,13 +429,7 @@ def refresh_catalog(gender: str):
438
  files = list_garments(gender=gender)
439
  items = build_gallery_items(files)
440
  status = f"✅ Каталог: {gender} ({len(files)})" if files else f"⚠️ Каталог пуст: {gender}"
441
- return (
442
- items,
443
- files,
444
- None,
445
- status,
446
- "👕 Выберите одежду ниже",
447
- )
448
 
449
 
450
  def on_gallery_select(files_list: List[str], evt: gr.SelectData):
@@ -564,14 +549,6 @@ def _feedback_idle_html():
564
  """
565
 
566
 
567
- def _feedback_saving_html(action_text: str):
568
- return f"""
569
- <div class="feedback-saving">
570
- {action_text} Сохраняем ваш отзыв...
571
- </div>
572
- """
573
-
574
-
575
  def _feedback_ok_html(action_text: str, has_comment: bool):
576
  comment_text = " и комментарий" if has_comment else ""
577
  return f"""
@@ -585,28 +562,21 @@ def submit_feedback_ui(is_like: bool, garment_name: str, comment: str):
585
  action_text = "«Нравится»" if is_like else "«Не нравится»"
586
 
587
  if not garment_name:
588
- yield (
589
  "⚠️ Сначала выполните примерку и выберите одежду",
590
  _feedback_idle_html(),
591
  gr.update(value=comment),
592
  )
593
- return
594
-
595
- yield (
596
- "💾 Сохраняем ваш отзыв...",
597
- _feedback_saving_html(action_text),
598
- gr.update(value=comment),
599
- )
600
 
601
  try:
602
  save_feedback(is_like=is_like, garment_name=garment_name, comment=comment)
603
- yield (
604
  f"✅ Отзыв сохранён: {action_text}",
605
- _feedback_ok_html(action_text, bool((comment or '').strip())),
606
  gr.update(value=""),
607
  )
608
  except Exception as e:
609
- yield (
610
  f"❌ Ошибка сохранения отзыва: {type(e).__name__}: {str(e)[:200]}",
611
  """
612
  <div class="feedback-idle">
@@ -617,6 +587,14 @@ def submit_feedback_ui(is_like: bool, garment_name: str, comment: str):
617
  )
618
 
619
 
 
 
 
 
 
 
 
 
620
  def tryon_ui(person_pil, selected_filename):
621
  for msg in [
622
  "🧵 Анализируем посадку ткани…",
@@ -696,9 +674,7 @@ def tryon_ui(person_pil, selected_filename):
696
  )
697
 
698
 
699
- # =========================
700
- # Boot
701
- # =========================
702
  ensure_garments_available()
703
  _default_gender = "Женская"
704
  _initial_files = list_garments(gender=_default_gender)
@@ -757,6 +733,7 @@ with gr.Blocks(title="Virtual Try-On Rendez-vous", css=CUSTOM_CSS) as demo:
757
 
758
  with gr.Column(visible=False) as feedback_box:
759
  gr.HTML('<div class="feedback-box">')
 
760
  with gr.Row():
761
  like_btn = gr.Button("👍 Нравится")
762
  dislike_btn = gr.Button("👎 Не нравится")
@@ -791,14 +768,14 @@ with gr.Blocks(title="Virtual Try-On Rendez-vous", css=CUSTOM_CSS) as demo:
791
  )
792
 
793
  like_btn.click(
794
- fn=lambda garment, comment: submit_feedback_ui(True, garment, comment),
795
  inputs=[selected_garment_state, feedback_comment],
796
  outputs=[status, feedback_notice, feedback_comment],
797
  concurrency_limit=1,
798
  )
799
 
800
  dislike_btn.click(
801
- fn=lambda garment, comment: submit_feedback_ui(False, garment, comment),
802
  inputs=[selected_garment_state, feedback_comment],
803
  outputs=[status, feedback_notice, feedback_comment],
804
  concurrency_limit=1,
 
192
 
193
 
194
  # =========================
195
+ # Model init (BASELINE)
196
  # =========================
197
  base_path = "yisol/IDM-VTON"
198
 
 
242
 
243
 
244
  # =========================
245
+ # Inference (BASELINE params)
246
  # =========================
247
  @spaces.GPU
248
  def start_tryon(
 
395
  font-size: 14px;
396
  }
397
 
 
 
 
 
 
 
 
 
 
398
  .feedback-idle {
399
  border: 1px dashed #d1d5db;
400
  background: #ffffff;
 
407
 
408
 
409
  # =========================
410
+ # UX example image
411
  # =========================
412
  UX_EXAMPLE_IMG_PATH = "assets/photo_2026-02-26_14-56-24.jpg"
413
 
 
429
  files = list_garments(gender=gender)
430
  items = build_gallery_items(files)
431
  status = f"✅ Каталог: {gender} ({len(files)})" if files else f"⚠️ Каталог пуст: {gender}"
432
+ return items, files, None, status, "👕 Выберите одежду ниже"
 
 
 
 
 
 
433
 
434
 
435
  def on_gallery_select(files_list: List[str], evt: gr.SelectData):
 
549
  """
550
 
551
 
 
 
 
 
 
 
 
 
552
  def _feedback_ok_html(action_text: str, has_comment: bool):
553
  comment_text = " и комментарий" if has_comment else ""
554
  return f"""
 
562
  action_text = "«Нравится»" if is_like else "«Не нравится»"
563
 
564
  if not garment_name:
565
+ return (
566
  "⚠️ Сначала выполните примерку и выберите одежду",
567
  _feedback_idle_html(),
568
  gr.update(value=comment),
569
  )
 
 
 
 
 
 
 
570
 
571
  try:
572
  save_feedback(is_like=is_like, garment_name=garment_name, comment=comment)
573
+ return (
574
  f"✅ Отзыв сохранён: {action_text}",
575
+ _feedback_ok_html(action_text, bool((comment or "").strip())),
576
  gr.update(value=""),
577
  )
578
  except Exception as e:
579
+ return (
580
  f"❌ Ошибка сохранения отзыва: {type(e).__name__}: {str(e)[:200]}",
581
  """
582
  <div class="feedback-idle">
 
587
  )
588
 
589
 
590
+ def submit_like_feedback(garment_name: str, comment: str):
591
+ return submit_feedback_ui(True, garment_name, comment)
592
+
593
+
594
+ def submit_dislike_feedback(garment_name: str, comment: str):
595
+ return submit_feedback_ui(False, garment_name, comment)
596
+
597
+
598
  def tryon_ui(person_pil, selected_filename):
599
  for msg in [
600
  "🧵 Анализируем посадку ткани…",
 
674
  )
675
 
676
 
677
+ # boot
 
 
678
  ensure_garments_available()
679
  _default_gender = "Женская"
680
  _initial_files = list_garments(gender=_default_gender)
 
733
 
734
  with gr.Column(visible=False) as feedback_box:
735
  gr.HTML('<div class="feedback-box">')
736
+
737
  with gr.Row():
738
  like_btn = gr.Button("👍 Нравится")
739
  dislike_btn = gr.Button("👎 Не нравится")
 
768
  )
769
 
770
  like_btn.click(
771
+ fn=submit_like_feedback,
772
  inputs=[selected_garment_state, feedback_comment],
773
  outputs=[status, feedback_notice, feedback_comment],
774
  concurrency_limit=1,
775
  )
776
 
777
  dislike_btn.click(
778
+ fn=submit_dislike_feedback,
779
  inputs=[selected_garment_state, feedback_comment],
780
  outputs=[status, feedback_notice, feedback_comment],
781
  concurrency_limit=1,