Spaces:
Sleeping
Sleeping
import streamlit as st | |
from bureaucracy import HRDepartment, FinanceDepartment, BureaucracyAnalyzer | |
from utilities import initialize_session_state | |
def main(): | |
st.title("Bureaucracy Analyzer") | |
initialize_session_state() | |
# Sidebar for department selection | |
st.sidebar.title("Select Department") | |
department_choice = st.sidebar.selectbox( | |
"Choose a department", ["Human Resources", "Finance"] | |
) | |
# Update department if selection changes | |
if ( | |
st.session_state.department is None | |
or st.session_state.department.name != department_choice | |
): | |
if department_choice == "Human Resources": | |
st.session_state.department = HRDepartment() | |
else: | |
st.session_state.department = FinanceDepartment() | |
st.session_state.current_question_index = 0 | |
st.session_state.answers = {} | |
department = st.session_state.department | |
# Display the current question | |
if st.session_state.current_question_index < len(department.questions): | |
st.subheader(f"Question for {department.name} Department:") | |
current_question = department.questions[st.session_state.current_question_index] | |
st.write(current_question) | |
# Use a form to handle the answer submission | |
with st.form(key=f"question_form_{st.session_state.current_question_index}"): | |
user_answer = st.text_area("Your answer:", height=100) | |
submit_button = st.form_submit_button("Next Question") | |
if submit_button: | |
if user_answer: | |
st.session_state.answers[current_question] = user_answer | |
st.session_state.current_question_index += 1 | |
st.rerun() | |
else: | |
st.warning( | |
"Please provide an answer before moving to the next question." | |
) | |
else: | |
st.subheader("Analysis Results") | |
if st.button("Analyze Bureaucracy"): | |
# Transfer answers to the department object | |
for question, answer in st.session_state.answers.items(): | |
department.set_response(question, answer) | |
analyzer = BureaucracyAnalyzer() | |
analysis_placeholder = st.empty() | |
code_placeholder = st.empty() | |
full_response = "" | |
for chunk in analyzer.analyze_stream(department): | |
full_response += chunk.text | |
analysis_placeholder.markdown(full_response) | |
code_placeholder.code(full_response, language="markdown") | |
if st.button("Start Over"): | |
st.session_state.current_question_index = 0 | |
st.session_state.department = None | |
st.session_state.answers = {} | |
st.rerun() | |
if __name__ == "__main__": | |
main() | |