같은 탭 대화 전환 중에도 AX Agent 실행이 계속되도록 수정

- 실행 시작 대화를 탭별로 추적해 같은 탭에서 다른 대화로 이동하거나 새 대화를 시작해도 원래 대화에 이벤트와 완료 결과를 저장하도록 정리함
- 탭 복귀 시 진행 중인 대화를 다시 로드하고 백그라운드 실행 저장이 현재 선택 대화 ID를 덮어쓰지 않도록 세션/저장 경로를 보강함
- ChatSessionStateService와 AxAgentExecutionEngine 회귀 테스트를 추가하고 README.md, docs/DEVELOPMENT.md 이력을 갱신함
- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify_conversation_background_resume\ -p:IntermediateOutputPath=obj\verify_conversation_background_resume\ (경고 0, 오류 0)
- 검증: dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter ChatSessionStateServiceTests|AxAgentExecutionEngineTests -p:OutputPath=bin\verify_conversation_background_resume_tests\ -p:IntermediateOutputPath=obj\verify_conversation_background_resume_tests\ (통과 39)
This commit is contained in:
2026-04-15 19:24:40 +09:00
parent 913b42b2f3
commit f173e2a63b
9 changed files with 353 additions and 60 deletions

View File

@@ -1504,3 +1504,10 @@ UI ?遺우쁽????域뱀뮆???귐뗫솯?醫딆춦 ???袁る퓮 ?臾믩씜 ??疫
### 검증
- `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_chat_storage_fix\\ -p:IntermediateOutputPath=obj\\verify_chat_storage_fix\\` 경고 0 / 오류 0
- `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "ChatStorageServiceTests" -p:OutputPath=bin\\verify_chat_storage_fix_tests\\ -p:IntermediateOutputPath=obj\\verify_chat_storage_fix_tests\\` 통과 4
업데이트: 2026-04-15 19:21 (KST)
- AX Agent 실행 대화를 탭별로 추적하도록 정리했습니다. `src/AxCopilot/Views/ChatWindow.xaml.cs`는 실행 시작 시 원래 대화를 따로 보관하고, 같은 탭에서 다른 대화로 이동하거나 새 대화를 시작해도 진행 중인 실행이 끊기지 않도록 탭 복귀 시 해당 대화를 다시 로드합니다.
- `src/AxCopilot/Views/ChatWindow.ConversationListPresentation.cs`는 대화 선택 시 `StopStreamingIfActive()`로 전체 실행을 취소하던 흐름을 제거했습니다. 대신 `src/AxCopilot/Views/ChatWindow.AgentEventProcessor.cs`, `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`, `src/AxCopilot/Services/ChatSessionStateService.cs`가 에이전트 이벤트·실행 요약·완료 메시지를 현재 선택 대화가 아니라 실행이 시작된 원래 대화에 누적하도록 역할을 분리했습니다.
- 숨겨진 백그라운드 실행이 현재 선택 상태를 덮어쓰지 않도록 저장 경로도 보강했습니다. 같은 탭에서 다른 대화를 보고 있는 동안에는 실행 로그를 현재 본문에 렌더하지 않고, 배치 저장 시에도 `RememberConversation(...)`를 현재 선택 대화와 일치할 때만 갱신하도록 조정했습니다.
- 테스트는 `src/AxCopilot.Tests/Services/ChatSessionStateServiceTests.cs`, `src/AxCopilot.Tests/Services/AxAgentExecutionEngineTests.cs`에 같은 탭 백그라운드 실행 귀속 회귀 케이스를 추가했습니다.
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_conversation_background_resume\\ -p:IntermediateOutputPath=obj\\verify_conversation_background_resume\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "ChatSessionStateServiceTests|AxAgentExecutionEngineTests" -p:OutputPath=bin\\verify_conversation_background_resume_tests\\ -p:IntermediateOutputPath=obj\\verify_conversation_background_resume_tests\\` 통과 39