Spaces:
Sleeping
Sleeping
| # sdlc_feedback.py | |
| import streamlit as st | |
| class SDLCUI: | |
| def render(self): | |
| if "state" not in st.session_state: | |
| st.session_state.state = {"current_step": "user_input"} | |
| state = st.session_state.state | |
| st.markdown(f"**Current Step:** {state['current_step'].replace('_', ' ').title()}") | |
| step_method = getattr(self, f"render_{state['current_step']}", None) | |
| if step_method: | |
| step_method(state) | |
| else: | |
| st.error(f"Unknown step: {state['current_step']}") | |
| def render_requirements(self, state): | |
| st.markdown("### Requirements Input") | |
| requirements = st.text_area("Enter your requirements:", height=200) | |
| if st.button("Submit Requirements"): | |
| state["requirements"] = requirements | |
| state["current_step"] = "generate_user_stories" | |
| st.session_state.state["current_step"] = "generate_user_stories" | |
| def render_generate_user_stories(self, state): | |
| st.markdown("### Generated User Stories") | |
| if st.session_state.state['user_stories']!='': | |
| with st.expander("View User Stories"): | |
| st.markdown(st.session_state.state['user_stories']) | |
| if st.button("Continue to Product Owner Review"): | |
| state["current_step"] = "product_owner_review" | |
| st.session_state.state["current_step"] = "product_owner_review" | |
| # st.rerun() | |
| def render_product_owner_review(self, state): | |
| st.markdown("### Product Owner Review") | |
| with st.expander("View Current User Stories"): | |
| st.markdown(state.get("user_stories", "")) | |
| st.markdown("### Review Actions") | |
| feedback = st.text_area("Feedback:", height=150, key='Feedback') | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| if st.button("π Approve Design Phase", key="approve_design"): | |
| state["decision"] = "approved" | |
| state["current_step"] = "create_design_docs" | |
| st.session_state.user_decision = "approve" | |
| st.session_state.graph_stage = "resumed" | |
| st.rerun() | |
| with col2: | |
| if st.button("π§ Request Revisions", key="request_revisions"): | |
| state["decision"] = "feedback" | |
| state["po_feedback"] = feedback | |
| state["current_step"] = "revise_user_stories" | |
| st.rerun() | |
| def render_create_design_docs(self, state): | |
| st.markdown("### Design Documents") | |
| with st.expander("View Design Documents"): | |
| st.markdown(state.get("design_docs", "")) | |
| if st.button("Proceed to Design Review"): | |
| state["current_step"] = "design_review" | |
| st.rerun() | |
| def render_design_review(self, state): | |
| st.markdown("### Design Review") | |
| with st.expander("View Design Documents"): | |
| st.markdown(state.get("design_docs", "")) | |
| st.markdown("### Review Actions") | |
| feedback = st.text_area("Design Feedback:", height=150, key="design_feedback") | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| if st.button("π Approve Implementation", key="approve_implementation"): | |
| state["decision"] = "approved" | |
| state["current_step"] = "generate_code" | |
| st.session_state.user_decision = "approve" | |
| st.session_state.graph_stage = "resumed" | |
| st.rerun() | |
| with col2: | |
| if st.button("π§ Request Design Changes", key="request_design_changes"): | |
| state["decision"] = "feedback" | |
| state["design_feedback"] = feedback | |
| state["current_step"] = "create_design_docs" | |
| st.rerun() | |
| def render_generate_code(self, state): | |
| st.markdown("### Generated Code") | |
| with st.expander("View Code Implementation"): | |
| st.code(state.get("code", ""), language='python') | |
| if st.button("Proceed to Code Review"): | |
| state["current_step"] = "code_review" | |
| st.rerun() | |
| def render_code_review(self, state): | |
| st.markdown("### Code Review") | |
| with st.expander("View Current Code"): | |
| st.code(state.get("code", ""), language='python') | |
| st.markdown("### Review Actions") | |
| feedback = st.text_area("Code Feedback:", height=150, key="code_feedback") | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| if st.button("π Approve for Security Review", key="approve_security"): | |
| state["decision"] = "approved" | |
| state["current_step"] = "security_review" | |
| st.session_state.user_decision = "approve" | |
| st.session_state.graph_stage = "resumed" | |
| st.rerun() | |
| with col2: | |
| if st.button("π§ Request Code Fixes", key="request_code_fixes"): | |
| state["decision"] = "feedback" | |
| state["review_feedback"] = feedback | |
| state["current_step"] = "fix_code_after_code_review" | |
| st.rerun() | |
| def render_security_review(self, state): | |
| st.markdown("### Security Review") | |
| with st.expander("View Code for Security Audit"): | |
| st.code(state.get("code", ""), language='python') | |
| st.markdown("### Security Findings") | |
| feedback = st.text_area("Security Feedback:", height=150, key="security_feedback") | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| if st.button("π Approve for Testing", key="approve_testing"): | |
| state["decision"] = "approved" | |
| state["current_step"] = "write_test_cases" | |
| st.session_state.user_decision = "approve" | |
| st.session_state.graph_stage = "resumed" | |
| st.rerun() | |
| with col2: | |
| if st.button("π§ Request Security Fixes", key="request_security_fixes"): | |
| state["decision"] = "feedback" | |
| state["security_feedback"] = feedback | |
| state["current_step"] = "fix_code_after_security" | |
| st.rerun() | |
| def render_write_test_cases(self, state): | |
| st.markdown("### Test Cases") | |
| with st.expander("View Test Cases"): | |
| st.markdown(state.get("test_cases", "")) | |
| if st.button("Proceed to Test Review"): | |
| state["current_step"] = "test_cases_review" | |
| st.rerun() | |
| def render_test_cases_review(self, state): | |
| st.markdown("### Test Cases Review") | |
| with st.expander("View Current Test Cases"): | |
| st.markdown(state.get("test_cases", "")) | |
| st.markdown("### Review Actions") | |
| feedback = st.text_area("Test Feedback:", height=150, key="test_feedback") | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| if st.button("π Final Approval", key="final_approve"): | |
| state["decision"] = "approved" | |
| state["current_step"] = "end" | |
| st.rerun() | |
| with col2: | |
| if st.button("π§ Improve Test Cases", key="request_test_fixes"): | |
| state["decision"] = "feedback" | |
| state["test_feedback"] = feedback | |
| state["current_step"] = "fix_test_cases" | |
| st.rerun() | |
| def render_end(self, state): | |
| st.success("β SDLC Process Completed Successfully!") | |
| with st.expander("Requirements"): | |
| st.write(state.get("requirements", "")) | |
| with st.expander("User Stories"): | |
| st.write(state.get("user_stories", "")) | |
| with st.expander("Design Documents"): | |
| st.write(state.get("design_docs", "")) | |
| with st.expander("Design Feedback"): | |
| st.write(state.get("design_feedback", "")) | |
| with st.expander("Generated Code"): | |
| st.write(state.get("generate_code", "")) | |
| with st.expander("Test Cases"): | |
| st.write(state.get("test_cases", "")) | |
| with st.expander("PO Feedback"): | |
| st.write(state.get("po_feedback", "")) | |
| with st.expander("Review Feedback"): | |
| st.write(state.get("review_feedback", "")) | |
| with st.expander("Security Feedback"): | |
| st.write(state.get("security_feedback", "")) | |
| with st.expander("Test Feedback"): | |
| st.write(state.get("test_feedback", "")) | |
| with st.expander("Final Artifacts", expanded=True): | |
| st.markdown("### Download Assets") | |
| st.download_button("π₯ Requirements", | |
| data=state.get("requirements", ""), | |
| file_name="requirements.md") | |
| st.download_button("π₯ User Stories", | |
| data=state.get("user_stories", ""), | |
| file_name="user_stories.md") | |
| st.download_button("π₯ Design Documents", | |
| data=state.get("design_docs", ""), | |
| file_name="design_docs.md") | |
| st.download_button("π₯ Generated Code", | |
| data=state.get("code", ""), | |
| file_name="generated_code.md") | |
| st.download_button("π₯ Test Cases", | |
| data=state.get("test_cases", ""), | |
| file_name="test_cases.md") | |
| st.download_button("π₯ Product Owner Feedback", | |
| data=state.get("po_feedback", ""), | |
| file_name="po_feedback.md") | |
| st.download_button("π₯ Design Feedback", | |
| data=state.get("design_feedback", ""), | |
| file_name="design_feedback.md") | |
| st.download_button("π₯ Code Review Feedback", | |
| data=state.get("review_feedback", ""), | |
| file_name="code_review_feedback.md") | |
| st.download_button("π₯ Security Feedback", | |
| data=state.get("security_feedback", ""), | |
| file_name="security_feedback.md") | |
| st.download_button("π₯ Test Cases Feedback", | |
| data=state.get("test_feedback", ""), | |
| file_name="test_feedback.md") | |
| if st.button("π Restart Process"): | |
| st.session_state.clear() | |
| st.rerun() | |