handoff fixes
This commit is contained in:
parent
89ddebdb60
commit
8d5e9712a6
20 changed files with 1056 additions and 141 deletions
|
|
@ -18,6 +18,7 @@ from app.schemas import (
|
|||
HandoffTestRequest,
|
||||
HandoffTestResult,
|
||||
)
|
||||
from app.services.handoff_mirror_policy import is_relay_acknowledgment_message
|
||||
from app.services.human_handoff_service import MESSAGE_SCOPE_HANDOFF
|
||||
from app.services.handoff_evaluator import EMAIL_TYPE_META, HANDOFF_LABELS, evaluate_handoff
|
||||
|
||||
|
|
@ -261,8 +262,15 @@ async def get_handoff_conversation(
|
|||
messages: list[HandoffMessageRead] = []
|
||||
for row in rows:
|
||||
message = row["message"]
|
||||
if is_relay_acknowledgment_message(message):
|
||||
continue
|
||||
sender_address = (message.get("sender") or {}).get("address", "").lower()
|
||||
role = "human" if sender_address == human_email else "agent"
|
||||
if message.get("mirrored_from_external_message_id"):
|
||||
role = "customer"
|
||||
elif sender_address == human_email:
|
||||
role = "human"
|
||||
else:
|
||||
role = "agent"
|
||||
event_at = row.get("event_at") or message.get("received_at") or message.get("sent_at") or message["created_at"]
|
||||
raw_body = message.get("raw_body")
|
||||
new_reply_content = message.get("new_reply_content")
|
||||
|
|
@ -281,6 +289,7 @@ async def get_handoff_conversation(
|
|||
and new_reply_content
|
||||
and raw_body.strip() != new_reply_content.strip()
|
||||
),
|
||||
relay_status=message.get("relay_status") if role == "human" else None,
|
||||
event_at=event_at,
|
||||
)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ from app.schemas import (
|
|||
)
|
||||
from app.services.domain_provisioning import get_domain_by_name
|
||||
from app.services.mail_sender import deliver_email
|
||||
from app.services.message_ids import normalize_message_id
|
||||
from app.services.message_ids import canonical_message_id, message_id_fields
|
||||
from app.services.mime_parser import parse_mime
|
||||
from app.services.raw_mime_storage import get_raw_mime_storage
|
||||
from app.services.reply_recipients import reply_recipients
|
||||
|
|
@ -249,9 +249,8 @@ async def create_email(
|
|||
references=threading_fields.get("references"),
|
||||
)
|
||||
document["status"] = "accepted"
|
||||
normalized_id = normalize_message_id(internet_message_id)
|
||||
document["message_id"] = normalized_id
|
||||
document["internet_message_id"] = normalized_id
|
||||
normalized_id = canonical_message_id(internet_message_id)
|
||||
document.update(message_id_fields(normalized_id))
|
||||
log_smtp_message_sending(
|
||||
generated_message_id=normalized_id,
|
||||
in_reply_to=threading_fields.get("in_reply_to"),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue