Initial commit
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import AsyncMock
|
||||
|
||||
from opc.core.models import ExecutionCheckpoint, Task
|
||||
from opc.plugins.office_ui.snapshot_builder import (
|
||||
_attach_or_create_checkpoint_card,
|
||||
_build_snapshot_checkpoint_meta,
|
||||
_checkpoint_meta_targets_task,
|
||||
_message_can_host_checkpoint_meta,
|
||||
)
|
||||
from opc.plugins.office_ui.ws_handler import WSHandler
|
||||
|
||||
|
||||
class DeliveryFeedbackCardDedupTests(unittest.IsolatedAsyncioTestCase):
|
||||
async def test_snapshot_delivery_feedback_meta_carries_waiting_task_id(self) -> None:
|
||||
checkpoint = ExecutionCheckpoint(
|
||||
checkpoint_id="cp-delivery",
|
||||
project_id="p1",
|
||||
session_id="delivery-session",
|
||||
task_id="delivery-task",
|
||||
checkpoint_type="company_delivery_feedback",
|
||||
payload={
|
||||
"waiting_task_id": "delivery-task",
|
||||
"work_item_projection_id": "chief_analyst::delivery",
|
||||
"work_item_turn_type": "deliver",
|
||||
"feedback_scope": "final",
|
||||
"prompt": "Please review.",
|
||||
"delivery_package": {"executive_summary": "Ready for review."},
|
||||
"delivery_revision": 4,
|
||||
"owner_directive_revision": 4,
|
||||
"latest_user_directive": "Make the PPT visual.",
|
||||
"waiting_work_item_id": "wi-delivery",
|
||||
"result_content": "Current delivery content.",
|
||||
},
|
||||
)
|
||||
engine = SimpleNamespace(
|
||||
get_latest_pending_checkpoint_for_session=AsyncMock(return_value=checkpoint),
|
||||
)
|
||||
task = Task(id="delivery-task", title="Delivery", project_id="p1", session_id="delivery-session")
|
||||
|
||||
metadata = await _build_snapshot_checkpoint_meta(engine, task)
|
||||
|
||||
assert metadata is not None
|
||||
self.assertEqual(metadata["checkpoint_type"], "company_delivery_feedback")
|
||||
self.assertEqual(metadata["checkpoint_id"], "cp-delivery")
|
||||
self.assertEqual(metadata["waiting_task_id"], "delivery-task")
|
||||
self.assertEqual(metadata["task_id"], "delivery-task")
|
||||
self.assertEqual(metadata["delivery_revision"], 4)
|
||||
self.assertEqual(metadata["owner_directive_revision"], 4)
|
||||
self.assertEqual(metadata["latest_user_directive"], "Make the PPT visual.")
|
||||
self.assertEqual(metadata["waiting_work_item_id"], "wi-delivery")
|
||||
self.assertEqual(metadata["result_content"], "Current delivery content.")
|
||||
self.assertEqual(metadata["summary"], "Ready for review.")
|
||||
self.assertEqual([option["id"] for option in metadata["options"]], ["approve", "ignore", "feedback"])
|
||||
|
||||
def test_ws_delivery_feedback_meta_uses_current_result_payload(self) -> None:
|
||||
checkpoint = ExecutionCheckpoint(
|
||||
checkpoint_id="cp-delivery-current",
|
||||
project_id="p1",
|
||||
session_id="delivery-session",
|
||||
task_id="delivery-task",
|
||||
checkpoint_type="company_delivery_feedback",
|
||||
payload={
|
||||
"waiting_task_id": "delivery-task",
|
||||
"waiting_work_item_id": "wi-delivery",
|
||||
"work_item_projection_id": "chief_analyst::delivery",
|
||||
"work_item_turn_type": "deliver",
|
||||
"feedback_scope": "final",
|
||||
"prompt": "Please review.",
|
||||
"result_content": "This round produced the picture-first PPT.",
|
||||
"delivery_revision": 5,
|
||||
"owner_directive_revision": 5,
|
||||
},
|
||||
)
|
||||
|
||||
metadata = WSHandler._build_delivery_feedback_meta(WSHandler.__new__(WSHandler), checkpoint)
|
||||
|
||||
self.assertEqual(metadata["summary"], "This round produced the picture-first PPT.")
|
||||
self.assertEqual(metadata["delivery_revision"], 5)
|
||||
self.assertEqual(metadata["waiting_work_item_id"], "wi-delivery")
|
||||
self.assertEqual([option["id"] for option in metadata["options"]], ["approve", "ignore", "feedback"])
|
||||
|
||||
def test_snapshot_compensation_creates_card_when_no_assistant_message_exists(self) -> None:
|
||||
messages = [
|
||||
{
|
||||
"message_id": "user-only",
|
||||
"channel_id": "session:delivery-task",
|
||||
"sender": "user",
|
||||
"content": "Please revise.",
|
||||
"metadata": {},
|
||||
},
|
||||
]
|
||||
|
||||
_attach_or_create_checkpoint_card(
|
||||
messages,
|
||||
channel_id="session:delivery-task",
|
||||
checkpoint_meta={
|
||||
"checkpoint_type": "company_delivery_feedback",
|
||||
"checkpoint_id": "cp-delivery-current",
|
||||
"waiting_task_id": "delivery-task",
|
||||
"summary": "Current delivery is ready.",
|
||||
"prompt": "Review the current delivery.",
|
||||
},
|
||||
)
|
||||
|
||||
self.assertEqual(len(messages), 2)
|
||||
self.assertEqual(messages[-1]["message_id"], "checkpoint::cp-delivery-current")
|
||||
self.assertEqual(messages[-1]["metadata"]["checkpoint_id"], "cp-delivery-current")
|
||||
|
||||
def test_delivery_feedback_checkpoint_targets_only_waiting_task(self) -> None:
|
||||
waiting_task = Task(id="delivery-task", title="Delivery", project_id="p1")
|
||||
parent_task = Task(id="root-task", title="Root", project_id="p1")
|
||||
metadata = {
|
||||
"checkpoint_type": "company_delivery_feedback",
|
||||
"checkpoint_id": "cp-delivery",
|
||||
"waiting_task_id": "delivery-task",
|
||||
}
|
||||
|
||||
self.assertTrue(_checkpoint_meta_targets_task(metadata, waiting_task))
|
||||
self.assertFalse(_checkpoint_meta_targets_task(metadata, parent_task))
|
||||
self.assertTrue(WSHandler._checkpoint_metadata_targets_task(metadata, waiting_task))
|
||||
self.assertFalse(WSHandler._checkpoint_metadata_targets_task(metadata, parent_task))
|
||||
|
||||
def test_delivery_feedback_checkpoint_skips_mirrors_and_worker_notifications(self) -> None:
|
||||
metadata = {
|
||||
"checkpoint_type": "company_delivery_feedback",
|
||||
"checkpoint_id": "cp-delivery",
|
||||
"waiting_task_id": "delivery-task",
|
||||
}
|
||||
delivery_message = {
|
||||
"sender": "chief_analyst",
|
||||
"metadata": {"transcript_kind": "child_task_result"},
|
||||
}
|
||||
parent_mirror = {
|
||||
"sender": "chief_analyst",
|
||||
"metadata": {"transcript_kind": "child_result"},
|
||||
}
|
||||
worker_notification = {
|
||||
"sender": "system",
|
||||
"metadata": {"kind": "worker_notification"},
|
||||
}
|
||||
|
||||
self.assertTrue(_message_can_host_checkpoint_meta(delivery_message, metadata))
|
||||
self.assertFalse(_message_can_host_checkpoint_meta(parent_mirror, metadata))
|
||||
self.assertFalse(_message_can_host_checkpoint_meta(worker_notification, metadata))
|
||||
self.assertTrue(WSHandler._message_can_host_checkpoint_metadata(delivery_message, metadata))
|
||||
self.assertFalse(WSHandler._message_can_host_checkpoint_metadata(parent_mirror, metadata))
|
||||
self.assertFalse(WSHandler._message_can_host_checkpoint_metadata(worker_notification, metadata))
|
||||
Reference in New Issue
Block a user