Close decision assistant H14 F15 G14 D16

This commit is contained in:
Codex
2026-05-13 09:17:33 +08:00
parent 9d40e2d52b
commit d77dcda753
5 changed files with 369 additions and 16 deletions
@@ -196,12 +196,18 @@ class OperatorWorkspaceServiceTests(unittest.TestCase):
self.assertIn("feedback_tuned_template_id", summary["review_entrypoints"]["template_reuse_metrics"])
self.assertIn("recommendation_tuning_status", summary["review_entrypoints"]["template_reuse_metrics"])
self.assertGreaterEqual(summary["review_entrypoints"]["template_reuse_metrics"]["template_feedback_aggregation"]["useful_feedback_count"], 1)
self.assertIn("feedback_trend_status", summary["review_entrypoints"]["template_reuse_metrics"]["template_feedback_aggregation"])
self.assertIn("negative_feedback_guardrail_count", summary["review_entrypoints"]["template_reuse_metrics"]["template_feedback_aggregation"])
self.assertIn("negative_feedback_guardrail_template_ids", 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")
self.assertTrue(summary["review_entrypoints"]["note_templates"][0]["outcome_evidence"])
self.assertTrue(summary["review_entrypoints"]["note_templates"][0]["feedback_actions"])
self.assertIn("feedback_loop_status", summary["review_entrypoints"]["note_templates"][0])
self.assertIn("feedback_trend_history", summary["review_entrypoints"]["note_templates"][0])
self.assertIn("negative_feedback_guardrail", summary["review_entrypoints"]["note_templates"][0])
self.assertIn("negative_feedback_guardrail_prompt", summary["review_entrypoints"]["note_templates"][0])
self.assertTrue(any(item["template_id"] == "next_review" for item in summary["review_entrypoints"]["note_templates"]))
self.assertTrue(any(item["template_id"] == "queue_follow_up" for item in summary["review_entrypoints"]["note_templates"]))
self.assertTrue(any(item["reuse_hint"] for item in summary["review_entrypoints"]["note_templates"]))
@@ -217,6 +223,10 @@ class OperatorWorkspaceServiceTests(unittest.TestCase):
self.assertIn("freshness_proof_gap_count", summary["digest_surface"]["history_summary"])
self.assertIn("refresh_confirmation_trail_count", summary["digest_surface"]["history_summary"])
self.assertIn("refresh_confirmation_trail", summary["digest_surface"]["history_summary"])
self.assertIn("proof_aging_trend_counts", summary["digest_surface"]["history_summary"])
self.assertIn("stale_proof_escalation_count", summary["digest_surface"]["history_summary"])
self.assertIn("next_stale_proof_kind", summary["digest_surface"]["history_summary"])
self.assertIn("next_stale_proof_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])
@@ -232,6 +242,9 @@ class OperatorWorkspaceServiceTests(unittest.TestCase):
self.assertIn("refresh_confirmation_prompt", summary["digest_history_groups"][0])
self.assertIn("freshness_proof_status", summary["digest_history_groups"][0])
self.assertIn("freshness_proof_detail", summary["digest_history_groups"][0])
self.assertIn("proof_age_trend", summary["digest_history_groups"][0])
self.assertIn("proof_escalation_level", summary["digest_history_groups"][0])
self.assertIn("proof_escalation_prompt", 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])
self.assertTrue(summary["digest_history_preview"])
@@ -267,6 +280,10 @@ class OperatorWorkspaceServiceTests(unittest.TestCase):
self.assertTrue(summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"]["focus_reasons"])
self.assertIn("watchlist_status", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("watchlist_priority", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("watchlist_priority_score", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("promotion_ready", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("promotion_readiness_hint", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertIn("promotion_blockers", 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"])
self.assertIn("sample_gap", summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"])
self.assertTrue(summary["setup_learning_rollup"]["replay_statistics"]["broader_baseline_summary"]["setup_family_trend_delta"]["drift_watchlist_items"])
@@ -295,9 +312,16 @@ class OperatorWorkspaceServiceTests(unittest.TestCase):
self.assertIn("stale_warning_count", summary["scan_handoff_summary"])
self.assertIn("handoff_stale_policy", summary["scan_handoff_summary"])
self.assertIn("cleanup_candidate_count", summary["scan_handoff_summary"])
self.assertIn("overdue_cleanup_count", summary["scan_handoff_summary"])
self.assertIn("next_cleanup_marker", summary["scan_handoff_summary"])
self.assertIn("next_cleanup_prompt", summary["scan_handoff_summary"])
self.assertIn("handoff_lane_groups", 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])
self.assertIn("lane_group", summary["scan_handoff_summary"]["handoff_markers"][0])
self.assertIn("overdue_cleanup_candidate", summary["scan_handoff_summary"]["handoff_markers"][0])
self.assertIn("cleanup_priority", 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")