Spaces:
Build error
Build error
import streamlit as st | |
import uuid | |
from datetime import datetime | |
from utils.session_state import reset_state | |
from utils.process_files import process_uploaded_files | |
from utils.document_display import display_based_on_card | |
from llm.document_analyzer import analyze_files | |
import json | |
from utils.logger import setup_logger | |
logger = setup_logger(__name__) | |
def upload_documents(): | |
uploaded_files = st.file_uploader( | |
"Upload Images, PDFs, or ZIP files", | |
type=["png", "jpg", "jpeg", "pdf", "zip"], | |
accept_multiple_files=True, | |
key="file_uploader" | |
) | |
if uploaded_files and st.session_state.get('current_upload') is None: | |
# if uploaded_files: | |
new_upload_id = str(uuid.uuid4())[:8] # Shorter UUID for readability | |
new_upload_id = "_".join([str(datetime.now()), new_upload_id]) | |
reset_state(upload_id=new_upload_id) | |
st.session_state['analyze_clicked'] = False | |
# Process files | |
file_paths, file_groups, temp_dir, application_form, memo = process_uploaded_files( | |
uploaded_files) | |
st.session_state['uploads'][new_upload_id]['file_groups'] = file_groups | |
st.session_state['uploads'][new_upload_id]['temp_dir'] = temp_dir | |
st.session_state['uploads'][new_upload_id]['application_form'] = application_form | |
st.session_state['uploads'][new_upload_id]['memo'] = memo | |
# Get current upload | |
current_upload = st.session_state.get('current_upload') | |
if current_upload: | |
current_data = st.session_state['uploads'][current_upload] | |
file_groups = current_data['file_groups'] | |
temp_dir = current_data['temp_dir'] | |
if file_groups: | |
analyze_clicked = st.button("π Analyze") | |
if analyze_clicked: | |
st.session_state['analyze_clicked'] = True | |
reset_state() # Reset raw & display results only | |
# Analysis step: only when user has clicked Analyze | |
if st.session_state.get('analyze_clicked', False): | |
if current_data['values_raw'] is None: | |
with st.spinner("Analyzing documents..."): | |
analysis_results_groups, json_output_path = analyze_files( | |
file_groups=file_groups, | |
temp_dir=temp_dir, | |
current_upload=current_upload | |
) | |
current_data['values_raw'] = analysis_results_groups | |
if current_data['values_display'] is None: | |
current_data['values_display'] = {} | |
for original_file, extracted_files in file_groups.items(): | |
display_based_on_card( | |
original_file=original_file, | |
analysis_results_for_original_file=current_data['values_raw'][original_file], | |
extracted_files=extracted_files, | |
current_upload=current_upload | |
) | |
st.download_button( | |
label="Download Analysis JSON", | |
data=json.dumps( | |
# current_data['values_raw'], | |
current_data['results_transformed'], | |
indent=4), | |
file_name="analysis_results.json", | |
mime="application/json" | |
) | |