135 lines
4.6 KiB
Python
135 lines
4.6 KiB
Python
import streamlit as st
|
|
import os
|
|
import requests
|
|
import json
|
|
|
|
|
|
from styles import apply_styles
|
|
|
|
from streamlit_option_menu import option_menu
|
|
|
|
# Import other pages or modules
|
|
from settings import settings_page, load_settings
|
|
from proposer import proposer_page
|
|
|
|
apply_styles()
|
|
#proposer_page()
|
|
|
|
|
|
# Navigation Menu
|
|
selected = option_menu(
|
|
menu_title="Main Menu",
|
|
options=["Home", "Settings"],
|
|
icons=["house", "gear"],
|
|
menu_icon="cast",
|
|
default_index=0,
|
|
orientation="horizontal",
|
|
)
|
|
|
|
# Render pages based on selection
|
|
if selected == "Home":
|
|
# Home page logic goes here (e.g., OKR generator)
|
|
#from utils import construct_prompt # Example import; replace with actual logic.
|
|
|
|
proposer_page()
|
|
|
|
elif selected == "Settings":
|
|
settings_page()
|
|
|
|
|
|
'''
|
|
|
|
# Streamlit App Layout
|
|
st.title("OKR Generator")
|
|
|
|
# Input Section and Buttons Row
|
|
st.subheader("Enter your idea or goal:")
|
|
user_input = st.text_area(
|
|
"Input your idea here:",
|
|
value=st.session_state.get("user_input", INPUT_TEMPLATE.strip()),
|
|
height=200,
|
|
)
|
|
|
|
col1, col2 = st.columns([1, 1])
|
|
with col1:
|
|
if st.button("Reset All"):
|
|
st.session_state.clear()
|
|
with col2:
|
|
generate_okrs_clicked = st.button("Generate OKRs")
|
|
|
|
if generate_okrs_clicked:
|
|
if not user_input.strip():
|
|
st.warning("Please provide some input before generating OKRs.")
|
|
else:
|
|
with st.spinner("Generating OKRs..."):
|
|
# Construct prompt and call API
|
|
prompt = construct_prompt(prompt_template=PROMPT_TEMPLATE, user_input=user_input)
|
|
response = fetch_okrs(user_prompt=prompt, system_prompt=SYSTEM_PROMPT)
|
|
if response:
|
|
# Extract Objective and Key Results from response
|
|
objective, key_results = extract_llm_response(response)
|
|
st.session_state["objective"] = objective
|
|
st.session_state["key_results"] = key_results
|
|
|
|
# Display Results Only if an OKR Has Been Generated
|
|
if "objective" in st.session_state and "key_results" in st.session_state:
|
|
# Display Objective Field with Responsibles Input Below It
|
|
st.subheader("Proposal Objective:")
|
|
objective_text = st.text_area(
|
|
"Proposal Objective:",
|
|
value=st.session_state.get("objective", ""),
|
|
height=100,
|
|
)
|
|
|
|
responsible_for_objective = st.text_input(
|
|
"Responsibles for Objective (comma-separated):",
|
|
value="",
|
|
placeholder="e.g., Khanh Dinh, John Doe",
|
|
key="responsibles_objective"
|
|
)
|
|
|
|
# Display Key Results with Responsibles Below Each One
|
|
st.subheader("Proposal Key Results:")
|
|
key_result_boxes = []
|
|
responsibles_for_key_results = []
|
|
|
|
for i, kr in enumerate(st.session_state["key_results"], start=1):
|
|
kr_text = st.text_area(f"Key Result {i}:", value=kr, key=f"kr_{i}")
|
|
responsible_for_kr = st.text_input(
|
|
f"Responsibles for Key Result {i} (comma-separated):",
|
|
value="",
|
|
placeholder="e.g., Khanh Dinh",
|
|
key=f"responsibles_kr_{i}"
|
|
)
|
|
|
|
key_result_boxes.append(kr_text)
|
|
responsibles_for_key_results.append(responsible_for_kr)
|
|
|
|
# Finalize Button Center-Aligned
|
|
#finalize_col = st.columns([3, 2, 3])[1]
|
|
#with finalize_col:
|
|
if st.button("Finalize"):
|
|
finalized_objective = objective_text.strip()
|
|
finalized_key_results = [st.session_state[f"kr_{i+1}"].strip() for i in range(len(key_result_boxes))]
|
|
|
|
# Append initials of responsibles to Objective and Key Results
|
|
responsibles_list_objective = [name.strip() for name in responsible_for_objective.split(",") if name.strip()]
|
|
initials_objective = [f"[{''.join([part[0] for part in name.split()]).upper()}]" for name in responsibles_list_objective]
|
|
initials_str_objective = ", ".join(initials_objective)
|
|
|
|
finalized_objective += f" [{initials_str_objective}]"
|
|
|
|
finalized_key_results_with_initials = []
|
|
for i, kr in enumerate(finalized_key_results):
|
|
responsibles_list_kr = [name.strip() for name in responsibles_for_key_results[i].split(",") if name.strip()]
|
|
initials_kr = [f"{''.join([part[0] for part in name.split()]).upper()}" for name in responsibles_list_kr]
|
|
initials_str_kr = ", ".join(initials_kr)
|
|
finalized_key_results_with_initials.append(f"KR{i+1}: [{initials_str_kr}] {kr}")
|
|
|
|
# Display finalized data in non-editable format (full width)
|
|
st.subheader("Finalized Objective:")
|
|
st.write(finalized_objective)
|
|
|
|
st.subheader("Finalized Key Results:")
|
|
for kr in finalized_key_results_with_initials:
|
|
st.write(kr)''' |