iisadia commited on
Commit
f9f1fdb
·
verified ·
1 Parent(s): 5315b13

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -23
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": {"Expected": expected_outcomes["Type"], "Actual": req_type},
74
- "Stakeholders": {"Expected": expected_outcomes["Stakeholders"], "Actual": stakeholders},
75
- "Domain": {"Expected": expected_outcomes["Domain"], "Actual": domain},
76
- "Defects": {"Expected": expected_outcomes["Defects"], "Actual": defects},
77
- "Rewritten": {"Expected": expected_outcomes["Rewritten"], "Actual": 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
- # Display expected vs actual results
135
- for key in ["Type", "Stakeholders", "Domain", "Defects", "Rewritten"]:
136
- pdf.multi_cell(200, 10, txt=f"{key}:\nExpected: {result[key]['Expected']}\nActual: {result[key]['Actual']}", align='L')
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
- for key in ["Type", "Stakeholders", "Domain", "Defects", "Rewritten"]:
173
- st.write(f"**{key}:** Expected: {result[key]['Expected']} | Actual: {result[key]['Actual']}")
 
 
 
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()