fix(escalation): use User.name not display_name — attribute doesn't exist

User model has 'name', not 'display_name'. Fixed in flowpilot_engine
(escalate notify + pickup briefing) and psa_documentation_service
(engineer name in exported docs).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-21 04:09:54 +00:00
parent 10cf5f45eb
commit 79358be90f
2 changed files with 9 additions and 9 deletions

View File

@@ -537,7 +537,7 @@ async def escalate_session(
# Notify about escalation # Notify about escalation
await notify("session.escalated", session.account_id, { await notify("session.escalated", session.account_id, {
"session_id": str(session_id), "session_id": str(session_id),
"engineer_name": session.user.display_name if session.user else "Unknown", "engineer_name": session.user.name if session.user else "Unknown",
"escalation_reason": request.escalation_reason, "escalation_reason": request.escalation_reason,
"problem_summary": session.problem_summary or "N/A", "problem_summary": session.problem_summary or "N/A",
"link": f"/pilot/{session_id}", "link": f"/pilot/{session_id}",
@@ -590,8 +590,8 @@ async def pickup_session(
# Build a briefing message for the new engineer # Build a briefing message for the new engineer
original_user_name = "the previous engineer" original_user_name = "the previous engineer"
if session.user and hasattr(session.user, 'display_name') and session.user.display_name: if session.user and session.user.name:
original_user_name = session.user.display_name original_user_name = session.user.name
briefing_parts = [ briefing_parts = [
f"## Escalation Briefing", f"## Escalation Briefing",

View File

@@ -66,8 +66,8 @@ def format_resolution_note(session: AISession, include_steps: bool = True) -> st
# Engineer name from relationship if loaded, otherwise user_id # Engineer name from relationship if loaded, otherwise user_id
engineer_name = getattr(session, 'user', None) engineer_name = getattr(session, 'user', None)
if engineer_name and hasattr(engineer_name, 'display_name'): if engineer_name and hasattr(engineer_name, 'name'):
lines.append(f"Engineer: {engineer_name.display_name}") lines.append(f"Engineer: {engineer_name.name}")
lines.extend([ lines.extend([
f"Date: {_format_datetime(session.resolved_at)}", f"Date: {_format_datetime(session.resolved_at)}",
@@ -162,12 +162,12 @@ def format_escalation_note(session: AISession, include_steps: bool = True) -> st
] ]
engineer_name = getattr(session, 'user', None) engineer_name = getattr(session, 'user', None)
if engineer_name and hasattr(engineer_name, 'display_name'): if engineer_name and hasattr(engineer_name, 'name'):
lines.append(f"Escalated by: {engineer_name.display_name}") lines.append(f"Escalated by: {engineer_name.name}")
escalated_to = getattr(session, 'escalated_to', None) escalated_to = getattr(session, 'escalated_to', None)
if escalated_to and hasattr(escalated_to, 'display_name'): if escalated_to and hasattr(escalated_to, 'name'):
lines.append(f"Escalated to: {escalated_to.display_name}") lines.append(f"Escalated to: {escalated_to.name}")
else: else:
lines.append("Escalated to: Unassigned") lines.append("Escalated to: Unassigned")