Close decision assistant H19 F20 G19 D21

This commit is contained in:
Codex
2026-05-13 12:07:01 +08:00
parent 3c5ccbdf3e
commit b19d3bcb78
5 changed files with 598 additions and 22 deletions
@@ -218,6 +218,12 @@ class OperatorWorkspaceServiceTests(unittest.TestCase):
self.assertIn("recovery_action_shortcuts", summary["review_entrypoints"]["template_reuse_metrics"]["template_feedback_aggregation"])
self.assertIn("recovery_action_shortcut_count", summary["review_entrypoints"]["template_reuse_metrics"]["template_feedback_aggregation"])
self.assertIn("next_recovery_action_shortcut", summary["review_entrypoints"]["template_reuse_metrics"]["template_feedback_aggregation"])
self.assertIn("template_audit_lane_recommendations", summary["review_entrypoints"]["template_reuse_metrics"]["template_feedback_aggregation"])
self.assertIn("template_audit_lane_recommendation_count", summary["review_entrypoints"]["template_reuse_metrics"]["template_feedback_aggregation"])
self.assertIn("shortcut_outcome_telemetry", summary["review_entrypoints"]["template_reuse_metrics"]["template_feedback_aggregation"])
self.assertIn("shortcut_outcome_telemetry_count", summary["review_entrypoints"]["template_reuse_metrics"]["template_feedback_aggregation"])
self.assertIn("shortcut_outcome_status_counts", summary["review_entrypoints"]["template_reuse_metrics"]["template_feedback_aggregation"])
self.assertIn("next_shortcut_outcome_prompt", summary["review_entrypoints"]["template_reuse_metrics"]["template_feedback_aggregation"])
self.assertEqual(summary["review_entrypoints"]["note_templates"][0]["reuse_count"], 1)
self.assertEqual(summary["review_entrypoints"]["note_templates"][0]["reuse_status"], "saved_reuse")
self.assertEqual(summary["review_entrypoints"]["note_templates"][0]["outcome_status"], "useful_signal")
@@ -239,6 +245,9 @@ class OperatorWorkspaceServiceTests(unittest.TestCase):
self.assertIn("recovery_action_shortcuts", summary["review_entrypoints"]["note_templates"][0])
self.assertIn("audit_lane_group", summary["review_entrypoints"]["note_templates"][0])
self.assertIn("audit_lane_rank", summary["review_entrypoints"]["note_templates"][0])
self.assertIn("audit_lane_recommendation", summary["review_entrypoints"]["note_templates"][0])
self.assertIn("shortcut_outcome_telemetry", summary["review_entrypoints"]["note_templates"][0])
self.assertIn("shortcut_outcome_telemetry_count", summary["review_entrypoints"]["note_templates"][0])
self.assertIn("guardrail_audit_filter", summary["review_entrypoints"]["note_templates"][0])
self.assertIn("guardrail_audit_filter_reason", summary["review_entrypoints"]["note_templates"][0])
self.assertIn("guardrail_audit_filtered_trail", summary["review_entrypoints"]["note_templates"][0])
@@ -284,6 +293,11 @@ class OperatorWorkspaceServiceTests(unittest.TestCase):
self.assertIn("proof_sla_backlog_count", summary["digest_surface"]["history_summary"])
self.assertIn("freshness_debt_summary", summary["digest_surface"]["history_summary"])
self.assertIn("next_freshness_debt_prompt", summary["digest_surface"]["history_summary"])
self.assertIn("freshness_debt_trend_counts", summary["digest_surface"]["history_summary"])
self.assertIn("sla_recovery_recommendations", summary["digest_surface"]["history_summary"])
self.assertIn("sla_recovery_recommendation_count", summary["digest_surface"]["history_summary"])
self.assertIn("next_sla_recovery_recommendation", summary["digest_surface"]["history_summary"])
self.assertIn("next_sla_recovery_prompt", summary["digest_surface"]["history_summary"])
self.assertIn("refresh_prompts", summary["digest_surface"]["history_summary"])
self.assertIn("digest_history_groups", summary)
self.assertIn("group_status", summary["digest_history_groups"][0])
@@ -315,6 +329,8 @@ class OperatorWorkspaceServiceTests(unittest.TestCase):
self.assertIn("proof_sla_backlog_route", summary["digest_history_groups"][0])
self.assertIn("proof_sla_backlog_priority", summary["digest_history_groups"][0])
self.assertIn("freshness_debt_score", summary["digest_history_groups"][0])
self.assertIn("freshness_debt_trend", summary["digest_history_groups"][0])
self.assertIn("sla_recovery_recommendation", summary["digest_history_groups"][0])
self.assertIn("repeated_stale_proof_suppression", summary["digest_history_groups"][0])
self.assertIn("refresh_confirmation_trail", summary["digest_history_groups"][0])
self.assertIn("latest_confirmation_trail_item", summary["digest_history_groups"][0])
@@ -374,6 +390,11 @@ class OperatorWorkspaceServiceTests(unittest.TestCase):
self.assertIn("promotion_evidence_queue_count", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("promotion_backlog_trend_status", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("promotion_backlog_trend_handoff", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("promotion_evidence_aging_status", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("promotion_evidence_aging_prompt", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("promotion_evidence_aging_queue", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("promotion_backlog_comparison_status", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("promotion_backlog_comparison_summary", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("demotion_history", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("demotion_history_count", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("sample_threshold", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
@@ -430,6 +451,10 @@ class OperatorWorkspaceServiceTests(unittest.TestCase):
self.assertIn("cleanup_action_ready_count", summary["scan_handoff_summary"])
self.assertIn("next_cleanup_action_label", summary["scan_handoff_summary"])
self.assertIn("next_cleanup_action_prompt", summary["scan_handoff_summary"])
self.assertIn("cleanup_execution_log", summary["scan_handoff_summary"])
self.assertIn("cleanup_execution_log_count", summary["scan_handoff_summary"])
self.assertIn("grouped_resume_handoff_summary", summary["scan_handoff_summary"])
self.assertIn("next_cleanup_execution_prompt", summary["scan_handoff_summary"])
self.assertIn("handoff_cleanup_recommendation", summary["scan_handoff_summary"])
self.assertTrue(summary["scan_handoff_summary"]["snooze_options"])
self.assertIn("snooze_seconds", summary["scan_handoff_summary"]["handoff_markers"][0])
@@ -451,6 +476,8 @@ class OperatorWorkspaceServiceTests(unittest.TestCase):
self.assertIn("cleanup_action_readiness_reason", summary["scan_handoff_summary"]["handoff_markers"][0])
self.assertIn("resume_backlog_group", summary["scan_handoff_summary"]["handoff_markers"][0])
self.assertIn("resume_backlog_priority", summary["scan_handoff_summary"]["handoff_markers"][0])
self.assertIn("cleanup_execution_log", summary["scan_handoff_summary"]["handoff_markers"][0])
self.assertIn("cleanup_execution_log_count", summary["scan_handoff_summary"]["handoff_markers"][0])
self.assertTrue(summary["external_context_summary"]["operator_questions"])
self.assertTrue(summary["external_context_summary"]["source_cards"])
self.assertEqual(summary["external_context_summary"]["exchange_status"]["status"], "active")