bluenevus commited on
Commit
8e99391
·
verified ·
1 Parent(s): 9a27157

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -26
app.py CHANGED
@@ -76,6 +76,7 @@ def generate_pink_team_document(outline: str, instructions: str) -> str:
76
  4. Provide measurable outcomes for the customer.
77
  5. Limit the use of bullet points and write predominantly in paragraph format.
78
  6. Ensure a logical flow of steps taken by MicroHealth for each requirement.
 
79
 
80
  Generate a comprehensive response that showcases MicroHealth's expertise and approach.
81
  """
@@ -122,10 +123,7 @@ def generate_red_document(document: str, compliance_report: str) -> str:
122
  4. Provide measurable outcomes for the customer.
123
  5. Limit the use of bullet points and write predominantly in paragraph format.
124
  6. Ensure a logical flow of steps taken by MicroHealth for each requirement.
125
-
126
- Provide the revised document in a clear, structured format using paragraphs.
127
- Limit the use of bullet points and write predominantly in paragraph format.
128
- Ensure a logical flow of steps taken by MicroHealth for each requirement.
129
  """
130
  response = model.generate_content(prompt)
131
  return response.text
@@ -158,22 +156,25 @@ def generate_loe(document: str, is_file: bool = False) -> Tuple[str, pd.DataFram
158
  Ensure the table is properly formatted with | as column separators and a header row.
159
  """
160
  response = model.generate_content(prompt)
 
161
 
162
  # Extract the table from the response
163
- table_start = response.text.find("| Task Summary |")
164
- table_end = response.text.find("\n\n", table_start)
165
- table_text = response.text[table_start:table_end]
166
 
167
  # Convert the table to a pandas DataFrame
168
  try:
 
 
169
  df = pd.read_csv(StringIO(table_text), sep='|', skipinitialspace=True).dropna(axis=1, how='all')
170
  df.columns = df.columns.str.strip()
171
  except pd.errors.EmptyDataError:
172
  # If no table is found or it's empty, create a default DataFrame
173
  df = pd.DataFrame(columns=['Task Summary', 'Labor Categories', 'Hours per Labor Category', 'Total Hours'])
174
- response.text += "\n\nNote: No detailed LOE table could be generated from the AI response."
175
 
176
- return response.text, df
177
 
178
  # Layout
179
  app.layout = dbc.Container([
@@ -400,23 +401,26 @@ def update_loe_output(n_clicks, upload_contents, shred_output):
400
  if n_clicks is None:
401
  return "Click 'Generate LOE' to begin."
402
 
403
- if upload_contents:
404
- loe_text, loe_df = generate_loe(upload_contents, is_file=True)
405
- elif shred_output:
406
- loe_text, loe_df = generate_loe(shred_output)
407
- else:
408
- return "Please upload a document or complete the Shred tab first."
409
-
410
- return [
411
- dcc.Markdown(loe_text),
412
- dash_table.DataTable(
413
- data=loe_df.to_dict('records'),
414
- columns=[{'name': i, 'id': i} for i in loe_df.columns],
415
- style_table={'overflowX': 'auto'},
416
- style_cell={'textAlign': 'left', 'padding': '5px'},
417
- style_header={'backgroundColor': 'rgb(230, 230, 230)', 'fontWeight': 'bold'}
418
- )
419
- ]
 
 
 
420
 
421
  @app.callback(
422
  Output('red-output', 'children'),
 
76
  4. Provide measurable outcomes for the customer.
77
  5. Limit the use of bullet points and write predominantly in paragraph format.
78
  6. Ensure a logical flow of steps taken by MicroHealth for each requirement.
79
+ 7. Where applicable, describe the labor category or labor categories that perform the task as part of the process
80
 
81
  Generate a comprehensive response that showcases MicroHealth's expertise and approach.
82
  """
 
123
  4. Provide measurable outcomes for the customer.
124
  5. Limit the use of bullet points and write predominantly in paragraph format.
125
  6. Ensure a logical flow of steps taken by MicroHealth for each requirement.
126
+ 7. Where applicable, describe the labor category or labor categories that perform the task as part of the process
 
 
 
127
  """
128
  response = model.generate_content(prompt)
129
  return response.text
 
156
  Ensure the table is properly formatted with | as column separators and a header row.
157
  """
158
  response = model.generate_content(prompt)
159
+ response_text = response.text
160
 
161
  # Extract the table from the response
162
+ table_start = response_text.find("| Task Summary |")
163
+ table_end = response_text.find("\n\n", table_start)
164
+ table_text = response_text[table_start:table_end]
165
 
166
  # Convert the table to a pandas DataFrame
167
  try:
168
+ if not table_text.strip():
169
+ raise pd.errors.EmptyDataError("No table found in the response")
170
  df = pd.read_csv(StringIO(table_text), sep='|', skipinitialspace=True).dropna(axis=1, how='all')
171
  df.columns = df.columns.str.strip()
172
  except pd.errors.EmptyDataError:
173
  # If no table is found or it's empty, create a default DataFrame
174
  df = pd.DataFrame(columns=['Task Summary', 'Labor Categories', 'Hours per Labor Category', 'Total Hours'])
175
+ response_text += "\n\nNote: No detailed LOE table could be generated from the AI response."
176
 
177
+ return response_text, df
178
 
179
  # Layout
180
  app.layout = dbc.Container([
 
401
  if n_clicks is None:
402
  return "Click 'Generate LOE' to begin."
403
 
404
+ try:
405
+ if upload_contents:
406
+ loe_text, loe_df = generate_loe(upload_contents, is_file=True)
407
+ elif shred_output:
408
+ loe_text, loe_df = generate_loe(shred_output)
409
+ else:
410
+ return "Please upload a document or complete the Shred tab first."
411
+
412
+ return [
413
+ dcc.Markdown(loe_text),
414
+ dash_table.DataTable(
415
+ data=loe_df.to_dict('records'),
416
+ columns=[{'name': i, 'id': i} for i in loe_df.columns],
417
+ style_table={'overflowX': 'auto'},
418
+ style_cell={'textAlign': 'left', 'padding': '5px'},
419
+ style_header={'backgroundColor': 'rgb(230, 230, 230)', 'fontWeight': 'bold'}
420
+ )
421
+ ]
422
+ except Exception as e:
423
+ return f"An error occurred: {str(e)}"
424
 
425
  @app.callback(
426
  Output('red-output', 'children'),