Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -36,15 +36,6 @@ def call_mistral_api(prompt):
|
|
36 |
|
37 |
# Function to analyze a single requirement
|
38 |
def analyze_requirement(requirement):
|
39 |
-
# Define test case expectations
|
40 |
-
expected_outcomes = {
|
41 |
-
"Type": "Functional or Non-Functional",
|
42 |
-
"Stakeholders": "List of stakeholders for the requirement",
|
43 |
-
"Domain": "Classify the domain (e.g., Bank, Healthcare)",
|
44 |
-
"Defects": "List of major defects or 'No defects' if none",
|
45 |
-
"Rewritten": "Concise, defect-free rewritten requirement"
|
46 |
-
}
|
47 |
-
|
48 |
# Detect requirement type
|
49 |
type_prompt = f"Classify the following requirement as Functional or Non-Functional:\n\n{requirement}\n\nType:"
|
50 |
req_type = call_mistral_api(type_prompt)
|
@@ -67,14 +58,13 @@ def analyze_requirement(requirement):
|
|
67 |
# Rewrite requirement
|
68 |
rewritten = rewrite_requirement(requirement, defects)
|
69 |
|
70 |
-
# Return both the result and expected outcome comparison
|
71 |
return {
|
72 |
"Requirement": requirement,
|
73 |
-
"Type":
|
74 |
-
"Stakeholders":
|
75 |
-
"Domain":
|
76 |
-
"Defects":
|
77 |
-
"Rewritten":
|
78 |
}
|
79 |
|
80 |
# Function to rewrite requirement concisely
|
@@ -130,11 +120,11 @@ def generate_pdf_report(results):
|
|
130 |
pdf.set_font("Arial", 'B', 14)
|
131 |
pdf.multi_cell(200, 10, txt=f"Requirement R{i}: {result['Requirement']}", align='L')
|
132 |
pdf.set_font("Arial", size=12)
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
pdf.multi_cell(200, 10, txt="-" * 50, align='L')
|
139 |
pdf.ln(5) # Add some space between requirements
|
140 |
|
@@ -169,8 +159,11 @@ def main():
|
|
169 |
st.subheader("Analysis Results")
|
170 |
for i, result in enumerate(results, start=1):
|
171 |
st.write(f"### Requirement R{i}: {result['Requirement']}")
|
172 |
-
|
173 |
-
|
|
|
|
|
|
|
174 |
st.write("---")
|
175 |
|
176 |
# Generate and download PDF report
|
@@ -185,4 +178,4 @@ def main():
|
|
185 |
|
186 |
# Run the app
|
187 |
if __name__ == "__main__":
|
188 |
-
main()
|
|
|
36 |
|
37 |
# Function to analyze a single requirement
|
38 |
def analyze_requirement(requirement):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
# Detect requirement type
|
40 |
type_prompt = f"Classify the following requirement as Functional or Non-Functional:\n\n{requirement}\n\nType:"
|
41 |
req_type = call_mistral_api(type_prompt)
|
|
|
58 |
# Rewrite requirement
|
59 |
rewritten = rewrite_requirement(requirement, defects)
|
60 |
|
|
|
61 |
return {
|
62 |
"Requirement": requirement,
|
63 |
+
"Type": req_type,
|
64 |
+
"Stakeholders": stakeholders,
|
65 |
+
"Domain": domain,
|
66 |
+
"Defects": defects,
|
67 |
+
"Rewritten": rewritten
|
68 |
}
|
69 |
|
70 |
# Function to rewrite requirement concisely
|
|
|
120 |
pdf.set_font("Arial", 'B', 14)
|
121 |
pdf.multi_cell(200, 10, txt=f"Requirement R{i}: {result['Requirement']}", align='L')
|
122 |
pdf.set_font("Arial", size=12)
|
123 |
+
pdf.multi_cell(200, 10, txt=f"Type: {result['Type']}", align='L')
|
124 |
+
pdf.multi_cell(200, 10, txt=f"Stakeholders: {result['Stakeholders']}", align='L')
|
125 |
+
pdf.multi_cell(200, 10, txt=f"Domain: {result['Domain']}", align='L')
|
126 |
+
pdf.multi_cell(200, 10, txt=f"Defects: {result['Defects']}", align='L')
|
127 |
+
pdf.multi_cell(200, 10, txt=f"Rewritten: {result['Rewritten']}", align='L')
|
128 |
pdf.multi_cell(200, 10, txt="-" * 50, align='L')
|
129 |
pdf.ln(5) # Add some space between requirements
|
130 |
|
|
|
159 |
st.subheader("Analysis Results")
|
160 |
for i, result in enumerate(results, start=1):
|
161 |
st.write(f"### Requirement R{i}: {result['Requirement']}")
|
162 |
+
st.write(f"**Type:** {result['Type']}")
|
163 |
+
st.write(f"**Stakeholders:** {result['Stakeholders']}")
|
164 |
+
st.write(f"**Domain:** {result['Domain']}")
|
165 |
+
st.write(f"**Defects:** {result['Defects']}")
|
166 |
+
st.write(f"**Rewritten:** {result['Rewritten']}")
|
167 |
st.write("---")
|
168 |
|
169 |
# Generate and download PDF report
|
|
|
178 |
|
179 |
# Run the app
|
180 |
if __name__ == "__main__":
|
181 |
+
main()
|