AX Agent 탭 내 대화 선택 복귀 회귀 수정

- 같은 탭 안에서 다른 대화를 선택할 때 SaveLastConversations로 발생한 SettingsChanged가 UI 전체 갱신을 다시 태우며 현재 선택을 스트리밍 대화로 덮어쓰던 흐름을 차단함
- ChatStreamingUiPolicy에 스트리밍 대화 우선 노출 정책을 분리하고, 사용자가 명시적으로 선택한 대화가 있으면 탭 복귀 후에도 해당 선택을 유지하도록 SwitchToTabConversation 분기를 조정함
- README.md와 docs/DEVELOPMENT.md에 2026-04-15 22:07 (KST) 기준 회귀 원인과 검증 결과를 반영함

검증 결과
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify_conversation_selection_persist\ -p:IntermediateOutputPath=obj\verify_conversation_selection_persist\ : 경고 0 / 오류 0
- dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter ChatStreamingUiPolicyTests|ChatSessionStateServiceTests -p:OutputPath=bin\verify_conversation_selection_persist_tests\ -p:IntermediateOutputPath=obj\verify_conversation_selection_persist_tests\ : 통과 55
This commit is contained in:
2026-04-15 22:08:28 +09:00
parent 76afb9d5c8
commit b9fffbe2b2
5 changed files with 66 additions and 6 deletions

View File

@@ -1608,3 +1608,11 @@ UI ?遺우쁽????域뱀뮆???귐뗫솯?醫딆춦 ???袁る퓮 ?臾믩씜 ??疫
- 검증:
- `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_live_message_persistence2\\ -p:IntermediateOutputPath=obj\\verify_live_message_persistence2\\` 경고 0 / 오류 0
- `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "ChatStreamingUiPolicyTests|ChatWindowSlashPolicyTests" -p:OutputPath=bin\\verify_live_message_persistence_tests\\ -p:IntermediateOutputPath=obj\\verify_live_message_persistence_tests\\` 통과 69
업데이트: 2026-04-15 22:07 (KST)
- AX Agent 동일 탭 내 대화 선택 회귀를 수정했습니다. 원인은 `src/AxCopilot/Views/ChatWindow.xaml.cs``SaveLastConversations()`가 세션 상태(`LastActiveTab`, `LastConversationIds`)를 저장할 때마다 `SettingsChanged`를 다시 태워 `RefreshFromSavedSettings() -> UpdateTabUI() -> SwitchToTabConversation()`가 연쇄 호출되고, 실행 중 탭에서는 스트리밍 대화를 다시 현재 대화로 강제 복귀시키던 흐름이었습니다.
- `ChatWindow.xaml.cs``_suppressSettingsRefreshForSessionSave`를 추가해 세션 상태 저장으로 발생한 설정 변경 이벤트는 UI 전체 재적용에서 제외했습니다. 이로써 같은 탭 안의 다른 대화를 클릭해도 선택 직후 다시 원래 실행 대화로 튕기지 않습니다.
- `src/AxCopilot/Views/ChatStreamingUiPolicy.cs`에는 `ShouldPreferStreamingConversation(...)` 정책을 추가했습니다. 탭 복귀 시 스트리밍 대화가 있더라도, 사용자가 해당 탭에서 다른 대화를 명시적으로 선택해 기억해둔 상태라면 그 선택을 유지하고 라이브 가이드만 `BackgroundConversation`으로 노출하도록 `SwitchToTabConversation()` 분기를 조정했습니다.
- 테스트: `src/AxCopilot.Tests/Views/ChatStreamingUiPolicyTests.cs`에 스트리밍 대화 우선 노출 정책 회귀 케이스를 추가했습니다.
- 검증:
- `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_conversation_selection_persist\\ -p:IntermediateOutputPath=obj\\verify_conversation_selection_persist\\` 경고 0 / 오류 0
- `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "ChatStreamingUiPolicyTests|ChatSessionStateServiceTests" -p:OutputPath=bin\\verify_conversation_selection_persist_tests\\ -p:IntermediateOutputPath=obj\\verify_conversation_selection_persist_tests\\` 통과 55