Spaces:
Sleeping
Sleeping
Update services/agentic_handlers.py
Browse files- services/agentic_handlers.py +42 -13
services/agentic_handlers.py
CHANGED
|
@@ -49,8 +49,8 @@ class AgenticHandlers:
|
|
| 49 |
|
| 50 |
# Initial "waiting" status updates
|
| 51 |
initial_report_status = "Pipeline AI: In attesa dei dati necessari..."
|
| 52 |
-
initial_okr_choices = []
|
| 53 |
-
|
| 54 |
initial_okr_interactive = False
|
| 55 |
initial_okr_details = "Pipeline AI: In attesa dei dati necessari..."
|
| 56 |
initial_orchestration_results = self.orchestration_raw_results_st.value # Preserve if re-running
|
|
@@ -61,7 +61,9 @@ class AgenticHandlers:
|
|
| 61 |
report_status_md_update = gr.update(value=initial_report_status) if self.report_components.get("agentic_pipeline_status_md") else gr.update()
|
| 62 |
report_display_md_update = gr.update() # No change to report display yet
|
| 63 |
|
| 64 |
-
|
|
|
|
|
|
|
| 65 |
okrs_detail_md_update = gr.update(value=initial_okr_details) if self.okrs_components.get("okr_detail_display_md") else gr.update()
|
| 66 |
|
| 67 |
if not current_token_state_val or not current_token_state_val.get("token"):
|
|
@@ -69,8 +71,8 @@ class AgenticHandlers:
|
|
| 69 |
yield (
|
| 70 |
report_status_md_update, # For agentic_pipeline_status_md
|
| 71 |
report_display_md_update, # For agentic_report_display_md (no change yet)
|
| 72 |
-
okrs_cbg_update,
|
| 73 |
-
okrs_detail_md_update,
|
| 74 |
initial_orchestration_results, # For orchestration_raw_results_st
|
| 75 |
initial_selected_krs, # For selected_key_result_ids_st
|
| 76 |
initial_krs_for_selection # For key_results_for_selection_st
|
|
@@ -84,6 +86,7 @@ class AgenticHandlers:
|
|
| 84 |
if self.okrs_components.get("okr_detail_display_md"): # Also update OKR detail placeholder
|
| 85 |
okrs_detail_md_update = gr.update(value="Dettagli OKR (Sempre) in corso di generazione...")
|
| 86 |
|
|
|
|
| 87 |
yield (
|
| 88 |
report_status_md_update, report_display_md_update, okrs_cbg_update, okrs_detail_md_update,
|
| 89 |
initial_orchestration_results, initial_selected_krs, initial_krs_for_selection
|
|
@@ -96,6 +99,12 @@ class AgenticHandlers:
|
|
| 96 |
report_status_md_update = gr.update(value=error_status)
|
| 97 |
if self.report_components.get("agentic_report_display_md"):
|
| 98 |
report_display_md_update = gr.update(value=error_status) # Update report display too
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 99 |
if self.okrs_components.get("okr_detail_display_md"):
|
| 100 |
okrs_detail_md_update = gr.update(value=error_status) # Update OKR detail too
|
| 101 |
|
|
@@ -137,9 +146,19 @@ class AgenticHandlers:
|
|
| 137 |
krs_for_ui_selection_list = extract_key_results_for_selection(actionable_okrs)
|
| 138 |
krs_for_selection_update_val = krs_for_ui_selection_list # Store for CBG change handler
|
| 139 |
|
| 140 |
-
kr_choices_for_cbg = [(kr['kr_description'], kr['unique_kr_id']) for kr in krs_for_ui_selection_list]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 141 |
if self.okrs_components.get("key_results_cbg"):
|
| 142 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 143 |
|
| 144 |
# Display all OKRs initially (before any KR selection)
|
| 145 |
all_okrs_md_parts = []
|
|
@@ -159,8 +178,11 @@ class AgenticHandlers:
|
|
| 159 |
final_status_text = "Pipeline AI (Sempre): Nessun risultato prodotto."
|
| 160 |
if self.report_components.get("agentic_report_display_md"):
|
| 161 |
report_display_md_update = gr.update(value="Nessun report generato dalla pipeline AI (Sempre).")
|
|
|
|
|
|
|
| 162 |
if self.okrs_components.get("key_results_cbg"):
|
| 163 |
-
okrs_cbg_update = gr.update(
|
|
|
|
| 164 |
if self.okrs_components.get("okr_detail_display_md"):
|
| 165 |
okrs_detail_md_update = gr.update(value="Nessun OKR generato o errore nella pipeline AI (Sempre).")
|
| 166 |
|
|
@@ -179,8 +201,11 @@ class AgenticHandlers:
|
|
| 179 |
report_status_md_update = gr.update(value=error_status_text)
|
| 180 |
if self.report_components.get("agentic_report_display_md"):
|
| 181 |
report_display_md_update = gr.update(value=f"Errore generazione report AI (Sempre): {str(e)}")
|
|
|
|
|
|
|
| 182 |
if self.okrs_components.get("key_results_cbg"):
|
| 183 |
-
okrs_cbg_update = gr.update(
|
|
|
|
| 184 |
if self.okrs_components.get("okr_detail_display_md"):
|
| 185 |
okrs_detail_md_update = gr.update(value=f"Errore generazione OKR AI (Sempre): {str(e)}")
|
| 186 |
|
|
@@ -262,12 +287,17 @@ class AgenticHandlers:
|
|
| 262 |
return
|
| 263 |
|
| 264 |
if self.okrs_components.get("key_results_cbg"):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 265 |
self.okrs_components['key_results_cbg'].change(
|
| 266 |
fn=self.update_okr_display_on_kr_selection,
|
| 267 |
inputs=[
|
| 268 |
-
self.okrs_components['key_results_cbg'], # Current value of checkbox group
|
| 269 |
-
self.orchestration_raw_results_st,
|
| 270 |
-
self.key_results_for_selection_st
|
| 271 |
],
|
| 272 |
outputs=[self.okrs_components['okr_detail_display_md']],
|
| 273 |
api_name="update_okr_display_on_kr_selection"
|
|
@@ -275,4 +305,3 @@ class AgenticHandlers:
|
|
| 275 |
logging.info("Agentic OKR selection handler setup complete.")
|
| 276 |
else:
|
| 277 |
logging.warning("key_results_cbg component not found for agentic OKR handler setup.")
|
| 278 |
-
|
|
|
|
| 49 |
|
| 50 |
# Initial "waiting" status updates
|
| 51 |
initial_report_status = "Pipeline AI: In attesa dei dati necessari..."
|
| 52 |
+
# initial_okr_choices = [] # No longer used directly for okrs_cbg_update if it's Markdown
|
| 53 |
+
initial_okr_value_for_markdown = "" # Assuming this component is Markdown, value should be string
|
| 54 |
initial_okr_interactive = False
|
| 55 |
initial_okr_details = "Pipeline AI: In attesa dei dati necessari..."
|
| 56 |
initial_orchestration_results = self.orchestration_raw_results_st.value # Preserve if re-running
|
|
|
|
| 61 |
report_status_md_update = gr.update(value=initial_report_status) if self.report_components.get("agentic_pipeline_status_md") else gr.update()
|
| 62 |
report_display_md_update = gr.update() # No change to report display yet
|
| 63 |
|
| 64 |
+
# If key_results_cbg is the Markdown component causing the error, its update should not have 'choices'.
|
| 65 |
+
# Its value should be a string.
|
| 66 |
+
okrs_cbg_update = gr.update(value=initial_okr_value_for_markdown, interactive=initial_okr_interactive) if self.okrs_components.get("key_results_cbg") else gr.update()
|
| 67 |
okrs_detail_md_update = gr.update(value=initial_okr_details) if self.okrs_components.get("okr_detail_display_md") else gr.update()
|
| 68 |
|
| 69 |
if not current_token_state_val or not current_token_state_val.get("token"):
|
|
|
|
| 71 |
yield (
|
| 72 |
report_status_md_update, # For agentic_pipeline_status_md
|
| 73 |
report_display_md_update, # For agentic_report_display_md (no change yet)
|
| 74 |
+
okrs_cbg_update, # For key_results_cbg (now updated as if it's Markdown)
|
| 75 |
+
okrs_detail_md_update, # For okr_detail_display_md
|
| 76 |
initial_orchestration_results, # For orchestration_raw_results_st
|
| 77 |
initial_selected_krs, # For selected_key_result_ids_st
|
| 78 |
initial_krs_for_selection # For key_results_for_selection_st
|
|
|
|
| 86 |
if self.okrs_components.get("okr_detail_display_md"): # Also update OKR detail placeholder
|
| 87 |
okrs_detail_md_update = gr.update(value="Dettagli OKR (Sempre) in corso di generazione...")
|
| 88 |
|
| 89 |
+
# okrs_cbg_update remains as initially defined (waiting state, no choices)
|
| 90 |
yield (
|
| 91 |
report_status_md_update, report_display_md_update, okrs_cbg_update, okrs_detail_md_update,
|
| 92 |
initial_orchestration_results, initial_selected_krs, initial_krs_for_selection
|
|
|
|
| 99 |
report_status_md_update = gr.update(value=error_status)
|
| 100 |
if self.report_components.get("agentic_report_display_md"):
|
| 101 |
report_display_md_update = gr.update(value=error_status) # Update report display too
|
| 102 |
+
|
| 103 |
+
# If key_results_cbg is Markdown, update its value to reflect the error.
|
| 104 |
+
# No choices argument here.
|
| 105 |
+
if self.okrs_components.get("key_results_cbg"):
|
| 106 |
+
okrs_cbg_update = gr.update(value=error_status, interactive=False) # Value is string, interactive is False
|
| 107 |
+
|
| 108 |
if self.okrs_components.get("okr_detail_display_md"):
|
| 109 |
okrs_detail_md_update = gr.update(value=error_status) # Update OKR detail too
|
| 110 |
|
|
|
|
| 146 |
krs_for_ui_selection_list = extract_key_results_for_selection(actionable_okrs)
|
| 147 |
krs_for_selection_update_val = krs_for_ui_selection_list # Store for CBG change handler
|
| 148 |
|
| 149 |
+
# kr_choices_for_cbg = [(kr['kr_description'], kr['unique_kr_id']) for kr in krs_for_ui_selection_list] # Original
|
| 150 |
+
# If key_results_cbg is Markdown, we don't set choices.
|
| 151 |
+
# We might set its value to a string representation of these KRs, or leave it to be handled by selection logic.
|
| 152 |
+
# For now, setting value to a generic message or empty if it's Markdown.
|
| 153 |
+
# If it were a CBG, value=[] would be appropriate for selection reset.
|
| 154 |
+
# For Markdown, value should be a string.
|
| 155 |
if self.okrs_components.get("key_results_cbg"):
|
| 156 |
+
# If this component is Markdown, it cannot take choices.
|
| 157 |
+
# Its value should be a string. For now, an empty string or a placeholder.
|
| 158 |
+
# If you want to display the KRs as text, you'd format them here.
|
| 159 |
+
okrs_cbg_update = gr.update(value="Key Results available for selection (display as Markdown)", interactive=True)
|
| 160 |
+
# Example string value if it's Markdown.
|
| 161 |
+
# Or simply value=""
|
| 162 |
|
| 163 |
# Display all OKRs initially (before any KR selection)
|
| 164 |
all_okrs_md_parts = []
|
|
|
|
| 178 |
final_status_text = "Pipeline AI (Sempre): Nessun risultato prodotto."
|
| 179 |
if self.report_components.get("agentic_report_display_md"):
|
| 180 |
report_display_md_update = gr.update(value="Nessun report generato dalla pipeline AI (Sempre).")
|
| 181 |
+
|
| 182 |
+
# If key_results_cbg is Markdown
|
| 183 |
if self.okrs_components.get("key_results_cbg"):
|
| 184 |
+
okrs_cbg_update = gr.update(value="Nessun Key Result (Markdown display)", interactive=False) # String value
|
| 185 |
+
|
| 186 |
if self.okrs_components.get("okr_detail_display_md"):
|
| 187 |
okrs_detail_md_update = gr.update(value="Nessun OKR generato o errore nella pipeline AI (Sempre).")
|
| 188 |
|
|
|
|
| 201 |
report_status_md_update = gr.update(value=error_status_text)
|
| 202 |
if self.report_components.get("agentic_report_display_md"):
|
| 203 |
report_display_md_update = gr.update(value=f"Errore generazione report AI (Sempre): {str(e)}")
|
| 204 |
+
|
| 205 |
+
# If key_results_cbg is Markdown
|
| 206 |
if self.okrs_components.get("key_results_cbg"):
|
| 207 |
+
okrs_cbg_update = gr.update(value=f"Errore Key Results (Markdown): {str(e)}", interactive=False) # String value
|
| 208 |
+
|
| 209 |
if self.okrs_components.get("okr_detail_display_md"):
|
| 210 |
okrs_detail_md_update = gr.update(value=f"Errore generazione OKR AI (Sempre): {str(e)}")
|
| 211 |
|
|
|
|
| 287 |
return
|
| 288 |
|
| 289 |
if self.okrs_components.get("key_results_cbg"):
|
| 290 |
+
# The input 'key_results_cbg' provides the selected IDs.
|
| 291 |
+
# If it's truly a Markdown component now, this .change handler might not behave as expected
|
| 292 |
+
# for selection, as Markdown isn't typically an input component this way.
|
| 293 |
+
# However, the function signature of update_okr_display_on_kr_selection expects selected_kr_unique_ids.
|
| 294 |
+
# This setup might need further review if key_results_cbg is indeed Markdown and meant to be interactive.
|
| 295 |
self.okrs_components['key_results_cbg'].change(
|
| 296 |
fn=self.update_okr_display_on_kr_selection,
|
| 297 |
inputs=[
|
| 298 |
+
self.okrs_components['key_results_cbg'], # Current value of checkbox group (or Markdown if changed)
|
| 299 |
+
self.orchestration_raw_results_st, # State
|
| 300 |
+
self.key_results_for_selection_st # State
|
| 301 |
],
|
| 302 |
outputs=[self.okrs_components['okr_detail_display_md']],
|
| 303 |
api_name="update_okr_display_on_kr_selection"
|
|
|
|
| 305 |
logging.info("Agentic OKR selection handler setup complete.")
|
| 306 |
else:
|
| 307 |
logging.warning("key_results_cbg component not found for agentic OKR handler setup.")
|
|
|