From e1309768032d8ac77ac6f270e7ff8f35b0122f9d Mon Sep 17 00:00:00 2001 From: chihlasm Date: Fri, 27 Mar 2026 17:46:07 +0000 Subject: [PATCH] fix: add back_populates to SessionHandoff and SessionResolutionOutput relationships MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SQLAlchemy SAWarning about overlapping relationships was promoted to an error by pytest filterwarnings=error, crashing mapper initialization and causing 500s on every request — cascading to 423+ test failures. Co-Authored-By: Claude Opus 4.6 (1M context) --- backend/app/models/ai_session.py | 2 ++ backend/app/models/session_handoff.py | 2 +- backend/app/models/session_resolution_output.py | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/app/models/ai_session.py b/backend/app/models/ai_session.py index 3cc3f11d..0c10d9db 100644 --- a/backend/app/models/ai_session.py +++ b/backend/app/models/ai_session.py @@ -253,10 +253,12 @@ class AISession(Base): ) handoffs: Mapped[list["SessionHandoff"]] = relationship( "SessionHandoff", + back_populates="session", cascade="all, delete-orphan", order_by="SessionHandoff.created_at", ) resolution_outputs: Mapped[list["SessionResolutionOutput"]] = relationship( "SessionResolutionOutput", + back_populates="session", cascade="all, delete-orphan", ) diff --git a/backend/app/models/session_handoff.py b/backend/app/models/session_handoff.py index fe679353..0fd53128 100644 --- a/backend/app/models/session_handoff.py +++ b/backend/app/models/session_handoff.py @@ -44,7 +44,7 @@ class SessionHandoff(Base): created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=lambda: datetime.now(timezone.utc)) # Relationships - session: Mapped["AISession"] = relationship("AISession", foreign_keys=[session_id]) + session: Mapped["AISession"] = relationship("AISession", foreign_keys=[session_id], back_populates="handoffs") handed_off_by_user: Mapped["User"] = relationship("User", foreign_keys=[handed_off_by]) source_branch: Mapped[Optional["SessionBranch"]] = relationship("SessionBranch", foreign_keys=[source_branch_id]) claimed_by_user: Mapped[Optional["User"]] = relationship("User", foreign_keys=[claimed_by]) diff --git a/backend/app/models/session_resolution_output.py b/backend/app/models/session_resolution_output.py index 83803593..cb56fa42 100644 --- a/backend/app/models/session_resolution_output.py +++ b/backend/app/models/session_resolution_output.py @@ -36,4 +36,4 @@ class SessionResolutionOutput(Base): updated_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), onupdate=lambda: datetime.now(timezone.utc)) # Relationships - session = relationship("AISession", foreign_keys="SessionResolutionOutput.session_id") + session = relationship("AISession", foreign_keys="SessionResolutionOutput.session_id", back_populates="resolution_outputs")