bluenevus commited on
Commit
8b6a59b
·
verified ·
1 Parent(s): b011df6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -14
app.py CHANGED
@@ -45,19 +45,12 @@ def process_document(contents: str, filename: str) -> str:
45
  except Exception as e:
46
  return f"Error processing document: {str(e)}"
47
 
48
- def generate_loe(document: str, is_file: bool = False, filename: str = "") -> Tuple[str, pd.DataFrame]:
49
- if is_file:
50
- document_text = process_document(document, filename)
51
- if document_text.startswith("Unsupported file format") or document_text.startswith("Error processing document"):
52
- return document_text, pd.DataFrame()
53
- else:
54
- document_text = document
55
-
56
  prompt = f"""
57
  Analyze the following document and provide a Level of Effort (LOE) breakdown:
58
 
59
  Document:
60
- {document_text}
61
 
62
  For each section header in the document:
63
  1. Identify the tasks to be completed
@@ -93,6 +86,19 @@ def generate_loe(document: str, is_file: bool = False, filename: str = "") -> Tu
93
  response_text += "\n\nNote: No detailed LOE table could be generated from the AI response."
94
 
95
  return response_text, df
 
 
 
 
 
 
 
 
 
 
 
 
 
96
 
97
  def generate_outline(text: str, instructions: str) -> str:
98
  prompt = f"""
@@ -129,6 +135,9 @@ def generate_pink_team_document(outline: str, instructions: str) -> str:
129
  5. Limit the use of bullet points and write predominantly in paragraph format.
130
  6. Ensure a logical flow of steps taken by MicroHealth for each requirement.
131
  7. Where applicable, describe the labor category or labor categories that perform the task as part of the process
 
 
 
132
 
133
  Generate a comprehensive response that showcases MicroHealth's expertise and approach.
134
  """
@@ -178,7 +187,10 @@ def generate_red_document(document: str, compliance_report: str, instructions: s
178
  5. Limit the use of bullet points and write predominantly in paragraph format.
179
  6. Ensure a logical flow of steps taken by MicroHealth for each requirement.
180
  7. Where applicable, describe the labor category or labor categories that perform the task as part of the process
181
- 8. {instructions}
 
 
 
182
  """
183
  response = model.generate_content(prompt)
184
  return response.text
@@ -690,15 +702,15 @@ def update_loe_output(n_clicks, upload_contents, upload_filename, shred_output):
690
  try:
691
  if triggered_id in ['generate-loe', 'upload-loe']:
692
  if upload_contents:
693
- loe_text, loe_df = generate_loe(upload_contents, is_file=True, filename=upload_filename)
 
 
 
694
  elif shred_output:
695
  loe_text, loe_df = generate_loe(shred_output)
696
  else:
697
  return "Please upload a document or complete the Shred tab first."
698
 
699
- if isinstance(loe_text, str) and loe_text.startswith(("Unsupported file format", "Error processing document")):
700
- return loe_text
701
-
702
  return [
703
  dcc.Markdown(loe_text),
704
  dash_table.DataTable(
 
45
  except Exception as e:
46
  return f"Error processing document: {str(e)}"
47
 
48
+ def generate_loe(document: str, is_file: bool = False) -> Tuple[str, pd.DataFrame]:
 
 
 
 
 
 
 
49
  prompt = f"""
50
  Analyze the following document and provide a Level of Effort (LOE) breakdown:
51
 
52
  Document:
53
+ {document}
54
 
55
  For each section header in the document:
56
  1. Identify the tasks to be completed
 
86
  response_text += "\n\nNote: No detailed LOE table could be generated from the AI response."
87
 
88
  return response_text, df
89
+
90
+ # Convert the table to a pandas DataFrame
91
+ try:
92
+ if not table_text.strip():
93
+ raise pd.errors.EmptyDataError("No table found in the response")
94
+ df = pd.read_csv(StringIO(table_text), sep='|', skipinitialspace=True).dropna(axis=1, how='all')
95
+ df.columns = df.columns.str.strip()
96
+ except pd.errors.EmptyDataError:
97
+ # If no table is found or it's empty, create a default DataFrame
98
+ df = pd.DataFrame(columns=['Task Summary', 'Labor Categories', 'Hours per Labor Category', 'Total Hours'])
99
+ response_text += "\n\nNote: No detailed LOE table could be generated from the AI response."
100
+
101
+ return response_text, df
102
 
103
  def generate_outline(text: str, instructions: str) -> str:
104
  prompt = f"""
 
135
  5. Limit the use of bullet points and write predominantly in paragraph format.
136
  6. Ensure a logical flow of steps taken by MicroHealth for each requirement.
137
  7. Where applicable, describe the labor category or labor categories that perform the task as part of the process
138
+ 8. Analyze the given requirement for MicroHealth and describe the proposed solution, incorporating relevant industry best practices.
139
+ 9. Then, provide a detailed explanation of the implementation process, including a step-by-step workflow and any necessary procedures.
140
+ 10. Conclude by briefly outlining the benefits and measurable outcomes of this approach, citing relevant research to support your claims.
141
 
142
  Generate a comprehensive response that showcases MicroHealth's expertise and approach.
143
  """
 
187
  5. Limit the use of bullet points and write predominantly in paragraph format.
188
  6. Ensure a logical flow of steps taken by MicroHealth for each requirement.
189
  7. Where applicable, describe the labor category or labor categories that perform the task as part of the process
190
+ 8. Analyze the given requirement for MicroHealth and describe the proposed solution, incorporating relevant industry best practices.
191
+ 9. Then, provide a detailed explanation of the implementation process, including a step-by-step workflow and any necessary procedures.
192
+ 10. Conclude by briefly outlining the benefits and measurable outcomes of this approach, citing relevant research to support your claims.
193
+
194
  """
195
  response = model.generate_content(prompt)
196
  return response.text
 
702
  try:
703
  if triggered_id in ['generate-loe', 'upload-loe']:
704
  if upload_contents:
705
+ document = process_document(upload_contents, upload_filename)
706
+ if document.startswith("Unsupported file format") or document.startswith("Error processing document"):
707
+ return document
708
+ loe_text, loe_df = generate_loe(document)
709
  elif shred_output:
710
  loe_text, loe_df = generate_loe(shred_output)
711
  else:
712
  return "Please upload a document or complete the Shred tab first."
713
 
 
 
 
714
  return [
715
  dcc.Markdown(loe_text),
716
  dash_table.DataTable(