Spaces:
Running
Running
added PDF format too
Browse files- SDLC.py +0 -0
- app.py +76 -14
- requirements.txt +4 -1
SDLC.py
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
app.py
CHANGED
|
@@ -192,6 +192,23 @@ def initialize_state():
|
|
| 192 |
st.session_state.previous_major_cycle = None # Track the previous cycle to detect changes
|
| 193 |
logger.info("Streamlit session state initialized/reset.")
|
| 194 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 195 |
def update_display(new_content: str):
|
| 196 |
"""Updates the main display area content in the session state."""
|
| 197 |
st.session_state.display_content = new_content
|
|
@@ -410,14 +427,45 @@ with st.sidebar:
|
|
| 410 |
st.header("Downloads")
|
| 411 |
st.caption("Access generated artifacts and code snapshots.")
|
| 412 |
|
| 413 |
-
# Document Downloads
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 414 |
st.markdown("---")
|
| 415 |
-
|
| 416 |
-
|
| 417 |
-
|
| 418 |
-
create_download_button(st.session_state.workflow_state.get("
|
| 419 |
-
create_download_button(st.session_state.workflow_state.get("
|
| 420 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 421 |
|
| 422 |
# UML Diagram Downloads
|
| 423 |
st.markdown("---")
|
|
@@ -784,13 +832,27 @@ with main_col:
|
|
| 784 |
"final_uml_codes": [], "final_code_files": [], "final_code_review": "",
|
| 785 |
"final_security_issues": "", "final_test_code_files": [], "final_quality_analysis": "",
|
| 786 |
"final_deployment_process": "",
|
| 787 |
-
#
|
| 788 |
-
"
|
| 789 |
-
"
|
| 790 |
-
"
|
| 791 |
-
"
|
| 792 |
-
"
|
| 793 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 794 |
}
|
| 795 |
|
| 796 |
# Update the main session state variables
|
|
|
|
| 192 |
st.session_state.previous_major_cycle = None # Track the previous cycle to detect changes
|
| 193 |
logger.info("Streamlit session state initialized/reset.")
|
| 194 |
|
| 195 |
+
# --- ADDED Initialization for MD/PDF Paths ---
|
| 196 |
+
st.session_state.refined_prompt_path = None
|
| 197 |
+
st.session_state.refined_prompt_pdf_path = None
|
| 198 |
+
st.session_state.final_user_story_path = None
|
| 199 |
+
st.session_state.final_user_story_pdf_path = None
|
| 200 |
+
st.session_state.final_product_review_path = None
|
| 201 |
+
st.session_state.final_product_review_pdf_path = None
|
| 202 |
+
st.session_state.final_design_document_path = None
|
| 203 |
+
st.session_state.final_design_document_pdf_path = None
|
| 204 |
+
st.session_state.final_quality_analysis_path = None
|
| 205 |
+
st.session_state.final_quality_analysis_pdf_path = None
|
| 206 |
+
st.session_state.final_deployment_path = None
|
| 207 |
+
st.session_state.final_deployment_pdf_path = None
|
| 208 |
+
# --- END ADDED ---
|
| 209 |
+
|
| 210 |
+
logger.info("Streamlit session state initialized/reset including PDF paths.")
|
| 211 |
+
|
| 212 |
def update_display(new_content: str):
|
| 213 |
"""Updates the main display area content in the session state."""
|
| 214 |
st.session_state.display_content = new_content
|
|
|
|
| 427 |
st.header("Downloads")
|
| 428 |
st.caption("Access generated artifacts and code snapshots.")
|
| 429 |
|
| 430 |
+
# --- MODIFIED: Document Downloads (MD and PDF) ---
|
| 431 |
+
st.markdown("---")
|
| 432 |
+
st.subheader("Documents") # Combined header
|
| 433 |
+
|
| 434 |
+
# Refined Prompt (Appears after Q&A cycle is complete)
|
| 435 |
+
st.markdown("**Requirements Cycle:**") # Header for this artifact
|
| 436 |
+
create_download_button(st.session_state.workflow_state.get("refined_prompt_path"), "Refined Prompt (MD)", "text/markdown", "refined_prompt_md", help_text="The final prompt generated after Q&A.")
|
| 437 |
+
create_download_button(st.session_state.workflow_state.get("refined_prompt_pdf_path"), "Refined Prompt (PDF)", "application/pdf", "refined_prompt_pdf", help_text="PDF version of the refined prompt.")
|
| 438 |
+
st.markdown("---") # Separator
|
| 439 |
+
|
| 440 |
+
# User Story
|
| 441 |
+
st.markdown("**User Story Cycle:**")
|
| 442 |
+
create_download_button(st.session_state.workflow_state.get("final_user_story_path"), "User Story (MD)", "text/markdown", "final_us_md")
|
| 443 |
+
create_download_button(st.session_state.workflow_state.get("final_user_story_pdf_path"), "User Story (PDF)", "application/pdf", "final_us_pdf")
|
| 444 |
st.markdown("---")
|
| 445 |
+
|
| 446 |
+
# Product Review
|
| 447 |
+
st.markdown("**Product Review Cycle:**")
|
| 448 |
+
create_download_button(st.session_state.workflow_state.get("final_product_review_path"), "Product Review (MD)", "text/markdown", "final_pr_md")
|
| 449 |
+
create_download_button(st.session_state.workflow_state.get("final_product_review_pdf_path"), "Product Review (PDF)", "application/pdf", "final_pr_pdf")
|
| 450 |
+
st.markdown("---")
|
| 451 |
+
|
| 452 |
+
# Design Document
|
| 453 |
+
st.markdown("**Design Cycle:**")
|
| 454 |
+
create_download_button(st.session_state.workflow_state.get("final_design_document_path"), "Design Document (MD)", "text/markdown", "final_dd_md")
|
| 455 |
+
create_download_button(st.session_state.workflow_state.get("final_design_document_pdf_path"), "Design Document (PDF)", "application/pdf", "final_dd_pdf")
|
| 456 |
+
st.markdown("---")
|
| 457 |
+
|
| 458 |
+
# QA Report
|
| 459 |
+
st.markdown("**Quality Analysis Cycle:**")
|
| 460 |
+
create_download_button(st.session_state.workflow_state.get("final_quality_analysis_path"), "QA Report (MD)", "text/markdown", "final_qa_md")
|
| 461 |
+
create_download_button(st.session_state.workflow_state.get("final_quality_analysis_pdf_path"), "QA Report (PDF)", "application/pdf", "final_qa_pdf")
|
| 462 |
+
st.markdown("---")
|
| 463 |
+
|
| 464 |
+
# Deployment Plan
|
| 465 |
+
st.markdown("**Deployment Cycle:**")
|
| 466 |
+
create_download_button(st.session_state.workflow_state.get("final_deployment_path"), "Deployment Plan (MD)", "text/markdown", "final_deploy_md")
|
| 467 |
+
create_download_button(st.session_state.workflow_state.get("final_deployment_pdf_path"), "Deployment Plan (PDF)", "application/pdf", "final_deploy_pdf")
|
| 468 |
+
# --- END MODIFIED Document Downloads ---
|
| 469 |
|
| 470 |
# UML Diagram Downloads
|
| 471 |
st.markdown("---")
|
|
|
|
| 832 |
"final_uml_codes": [], "final_code_files": [], "final_code_review": "",
|
| 833 |
"final_security_issues": "", "final_test_code_files": [], "final_quality_analysis": "",
|
| 834 |
"final_deployment_process": "",
|
| 835 |
+
# --- ADDED/MODIFIED: Initialize MD/PDF paths ---
|
| 836 |
+
"refined_prompt_path": None,
|
| 837 |
+
"refined_prompt_pdf_path": None,
|
| 838 |
+
"final_user_story_path": None,
|
| 839 |
+
"final_user_story_pdf_path": None,
|
| 840 |
+
"final_product_review_path": None,
|
| 841 |
+
"final_product_review_pdf_path": None,
|
| 842 |
+
"final_design_document_path": None,
|
| 843 |
+
"final_design_document_pdf_path": None,
|
| 844 |
+
"final_uml_diagram_folder": None,
|
| 845 |
+
"final_uml_png_paths": [],
|
| 846 |
+
"final_review_security_folder": None,
|
| 847 |
+
"review_code_snapshot_folder": None,
|
| 848 |
+
"final_testing_folder": None,
|
| 849 |
+
"testing_passed_code_folder": None,
|
| 850 |
+
"final_quality_analysis_path": None, # MD path
|
| 851 |
+
"final_quality_analysis_pdf_path": None, # PDF path
|
| 852 |
+
"final_code_folder": None,
|
| 853 |
+
"final_deployment_path": None, # MD path
|
| 854 |
+
"final_deployment_pdf_path": None, # PDF path
|
| 855 |
+
# --- END ADDED/MODIFIED ---
|
| 856 |
}
|
| 857 |
|
| 858 |
# Update the main session state variables
|
requirements.txt
CHANGED
|
@@ -32,4 +32,7 @@ typing-extensions
|
|
| 32 |
httpx
|
| 33 |
requests
|
| 34 |
|
| 35 |
-
nest_asyncio
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
httpx
|
| 33 |
requests
|
| 34 |
|
| 35 |
+
nest_asyncio
|
| 36 |
+
|
| 37 |
+
markdown-it-py
|
| 38 |
+
weasyprint
|