File size: 3,398 Bytes
3ae19ce
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import streamlit as st
from src.sdlc.ui.streamlitui.loadui import LoadStreamlitUI
from src.sdlc.LLMS.groqllm import GroqLLM
from src.sdlc.LLMS.openaillm import OpenAILLM
from src.sdlc.ui.streamlitui.display_result import DisplayResultStreamlit
from src.sdlc.ui.uiconfigfile import Config
from src.sdlc.utils.utils import clear_cache_data
from src.sdlc import logger


def load_sdlc_app():
    # Check if session state page exists
    if "page" not in st.session_state:
        st.session_state.page = "home"  # Default page
    if st.session_state.page == "home": 
      # Load UI
      ui = LoadStreamlitUI()
      user_input = ui.load_streamlit_ui()

      # Title
      st.title("๐Ÿ› ๏ธ " + Config().get_page_title()) 
      logger.info("In home page")

      with st.form("sdlc_form"):          
        # User Input for Requirements
        user_requirements = st.text_area("๐Ÿ“Œ Enter your project requirements:")
        if st.form_submit_button("๐Ÿš€ Start SDLC Cycle") :
            try:
                clear_cache_data() #Clear data from previous cycle
                if user_requirements:
                    user_requirements = user_requirements.strip()
                else:
                    st.error("Please enter your project requirements.")
                    return
                # Initialize LLM
                st.session_state.selected_llm=user_input['selected_llm']
                if user_input['selected_llm'] == 'Groq':
                    if not user_input['GROQ_API_KEY']:
                        st.error("Please enter your Groq API key.")
                        return
                    obj_llm_config = GroqLLM(user_controls_input=user_input)
                elif user_input['selected_llm'] == 'OpenAI':
                    if not user_input['OPENAI_API_KEY']:
                        st.error("Please enter your OPEN AI API key.")
                        return
                    obj_llm_config = OpenAILLM(user_controls_input=user_input)
                else:
                    st.error("Invalid LLM selection.")
                    return

                model = obj_llm_config.get_llm_model()
                if not model:
                    st.error("Error: LLM model could not be initialized.")
                    return

                # Store values in session state
                st.session_state.sdlc_started = True
                st.session_state.user_input = user_input
                st.session_state.user_requirements = user_requirements  # Store input

                # Switch to the result page
                st.session_state.page = "sdlc_result"
                logger.info("Submitted user requirements: %s", user_requirements)
                st.rerun()  # Re-run app to navigate

            except Exception as e:
                st.error(f"Error: {e}")
        
    elif st.session_state.page == "sdlc_result": 
        # Add a button to go back
        if st.button("๐Ÿ”™ Restart SDLC Cycle"):
                clear_cache_data()
                st.rerun() 
        
        with st.spinner("Processing SDLC Results..."):         
            # Call the DisplayResultStreamlit class
            logger.info("Inside state page : ")
            DisplayResultStreamlit().display_result_on_ui()