Hamza4100 commited on
Commit
9a1f8ce
·
verified ·
1 Parent(s): 9d737e7

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +18 -15
src/streamlit_app.py CHANGED
@@ -428,6 +428,7 @@ def upload_and_poll_files(api_key: str, uploaded_files: list):
428
  """
429
  Upload PDFs to backend and poll until processed.
430
  After processing, files disappear from uploader.
 
431
  """
432
  if "processed_files" not in st.session_state:
433
  st.session_state.processed_files = []
@@ -452,17 +453,18 @@ def upload_and_poll_files(api_key: str, uploaded_files: list):
452
 
453
  data = result.get("data") or {}
454
  job_id = data.get("document_id") or data.get("job_id")
455
- status = data.get("status")
456
 
457
- # Poll for processing status
458
- if status == "processing" and job_id:
459
  poll_text = st.empty()
460
  poll_progress = st.progress(0)
461
  max_poll_seconds = 600
462
  poll_interval = 2
463
  elapsed = 0
 
464
 
465
- while elapsed < max_poll_seconds:
466
  try:
467
  resp = requests.get(
468
  f"{API_BASE_URL}/upload-status/{job_id}",
@@ -473,16 +475,17 @@ def upload_and_poll_files(api_key: str, uploaded_files: list):
473
  if resp.status_code == 200:
474
  job = resp.json()
475
  final_status = job.get("status")
476
- display_name = job.get("username") or job.get("user_id")
477
- if final_status != "processing":
478
- if final_status == "success":
479
- res = job.get("result", {})
480
- st.success(f"✅ {file.name} processed for {display_name}: {res.get('filename', file.name)}")
481
- else:
482
- st.error(f"❌ {file.name} failed for {display_name}: {job.get('error', 'unknown error')}")
483
- break
484
- else:
485
  poll_text.text(f"Processing {file.name} for {display_name}... elapsed {elapsed}s")
 
 
 
 
 
 
 
486
  else:
487
  poll_text.text(f"Waiting for processing... (status {resp.status_code})")
488
 
@@ -493,10 +496,10 @@ def upload_and_poll_files(api_key: str, uploaded_files: list):
493
  elapsed += poll_interval
494
  poll_progress.progress(min(1.0, elapsed / max_poll_seconds))
495
 
496
- if elapsed >= max_poll_seconds:
497
  st.error(f"❌ {file.name}: Processing timed out after {max_poll_seconds}s")
498
 
499
- elif status == "success":
500
  st.success(f"✅ {file.name} uploaded and processed successfully")
501
  else:
502
  st.info(f"ℹ️ {file.name}: {data}")
 
428
  """
429
  Upload PDFs to backend and poll until processed.
430
  After processing, files disappear from uploader.
431
+ Compatible with HF backend response.
432
  """
433
  if "processed_files" not in st.session_state:
434
  st.session_state.processed_files = []
 
453
 
454
  data = result.get("data") or {}
455
  job_id = data.get("document_id") or data.get("job_id")
456
+ initial_status = data.get("status")
457
 
458
+ # If backend returns "processing", poll until finished
459
+ if initial_status in ["processing", "success"] and job_id:
460
  poll_text = st.empty()
461
  poll_progress = st.progress(0)
462
  max_poll_seconds = 600
463
  poll_interval = 2
464
  elapsed = 0
465
+ final_status = initial_status
466
 
467
+ while elapsed < max_poll_seconds and final_status == "processing":
468
  try:
469
  resp = requests.get(
470
  f"{API_BASE_URL}/upload-status/{job_id}",
 
475
  if resp.status_code == 200:
476
  job = resp.json()
477
  final_status = job.get("status")
478
+ display_name = job.get("username") or job.get("user_id") or "You"
479
+
480
+ if final_status == "processing":
 
 
 
 
 
 
481
  poll_text.text(f"Processing {file.name} for {display_name}... elapsed {elapsed}s")
482
+ elif final_status == "success":
483
+ res = job.get("result", {})
484
+ st.success(f"✅ {file.name} processed for {display_name}: {res.get('filename', file.name)}")
485
+ elif final_status == "failed":
486
+ st.error(f"❌ {file.name} failed for {display_name}: {job.get('error', 'unknown error')}")
487
+ else:
488
+ st.info(f"ℹ️ {file.name} has unknown status: {final_status}")
489
  else:
490
  poll_text.text(f"Waiting for processing... (status {resp.status_code})")
491
 
 
496
  elapsed += poll_interval
497
  poll_progress.progress(min(1.0, elapsed / max_poll_seconds))
498
 
499
+ if final_status == "processing":
500
  st.error(f"❌ {file.name}: Processing timed out after {max_poll_seconds}s")
501
 
502
+ elif initial_status == "success":
503
  st.success(f"✅ {file.name} uploaded and processed successfully")
504
  else:
505
  st.info(f"ℹ️ {file.name}: {data}")