import streamlit as st from azure.storage.blob import BlobServiceClient from azure.cosmos import CosmosClient, exceptions import os st.set_page_config(layout="wide") st.markdown( """ """, unsafe_allow_html=True, ) col1, col2 = st.columns([2, 1]) col1.title("Interview chatbot evaluations") col2.image("https://www.workgenius.com/wp-content/uploads/2023/03/WorkGenius_navy-1.svg") if "selected_item" not in st.session_state: st.session_state["selected_item"] = None if "top_number" not in st.session_state: st.session_state["top_number"] = 10 endpoint = "https://wg-candidate-data.documents.azure.com:443/" key = os.getenv("CONNECTION_DB") client = CosmosClient(endpoint, key) database = client.get_database_client("ToDoList") container = database.get_container_client("JobData") candidate_container = database.get_container_client("Items") def get_candidates(id, candidate_container): candidate_query = f""" SELECT * FROM c WHERE c.job_description_id = '{id}' """ query_result = list(candidate_container.query_items(query=candidate_query, enable_cross_partition_query=True)) return query_result def get_open_and_closed_candidates(id, nr_of_candidates, candidate_container): candidate_query = f""" SELECT * FROM c WHERE c.job_description_id = '{id}' AND c.interview_conducted = true """ query_result = list(candidate_container.query_items(query=candidate_query, enable_cross_partition_query=True)) return nr_of_candidates-len(query_result),len(query_result) # endpoint = "https://wg-candidate-data.documents.azure.com:443/" # key = os.getenv("CONNECTION_DB") # client = CosmosClient(endpoint, key) # database = client.get_database_client("ToDoList") # container = database.get_container_client("JobData") # candidate_container = database.get_container_client("Items") if not st.session_state["selected_item"]: txt_input_cols = st.columns(3) with txt_input_cols[0]: st.text_input("Search for job titles", key="title_search") query = f""" SELECT TOP {st.session_state["top_number"]} * FROM c WHERE CONTAINS(c.title, '{st.session_state["title_search"]}') ORDER BY c.timestamp DESC """ items = list(container.query_items(query=query, enable_cross_partition_query=True)) with st.container(): col1, col2, col3, col4, col5 = st.columns([2,1,1,1,1]) col1.subheader("Job title") col2.subheader("Applicants") col3.subheader("Open") col4.subheader("Completed") col5.subheader("Overview") for i, item in enumerate(items): cols = st.columns([2,1,1,1,1]) open, closed = get_open_and_closed_candidates(item["id"], item["number_of_applicants"], candidate_container) with st.container(): for j in range(5): with cols[j]: if(j == 0): st.text(item["title"]) elif(j == 1): st.text(item["number_of_applicants"]) elif(j == 2): st.text(open) elif(j == 3): st.text(closed) elif(j == 4): if st.button("Go to overview",use_container_width=True,key="btn_row_"+str(i)): st.session_state["selected_item"] = item st.rerun() if st.button("Load more"): st.session_state["top_number"] = len(items)+10 st.rerun() else: job_detail_cols_title = st.columns([1,1,1]) with job_detail_cols_title[0]: if st.button("Go back to list view"): st.session_state["selected_item"] = None st.session_state["top_number"] = 10 st.rerun() with job_detail_cols_title[1]: st.subheader("Job: " + st.session_state["selected_item"]["title"]) candidate_db_items = get_candidates(st.session_state["selected_item"]["id"], candidate_container) job_detail_cols_content = st.columns([1,5,1]) with job_detail_cols_content[1]: st.subheader("Recruiter Email: " + st.session_state["selected_item"]["evaluation_email"]) if len(st.session_state["selected_item"]["question_one"])>0: st.subheader("First question: " + st.session_state["selected_item"]["question_one"]) if len(st.session_state["selected_item"]["question_two"])>0: st.subheader("Second question: " + st.session_state["selected_item"]["question_two"]) if len(st.session_state["selected_item"]["question_three"])>0: st.subheader("Thrid question: " + st.session_state["selected_item"]["question_three"]) for i, can_item in enumerate(candidate_db_items): st.subheader("Candidate: "+can_item["name"]) if can_item["interview_conducted"]: st.text("The candidate "+can_item["name"]+ " has already completed the interview and this is the AI summary:") st.text(can_item["ai_summary"]) else: st.text("The candidate "+can_item["name"]+ " has not yet completed the interview.") st.text("Link for the interview chatbot:") st.text("https://tensora.ai/workgenius/cv-evaluation2/?job="+can_item["id"])