AX Agent 계획 카드를 compact transcript 형태로 마감
Some checks failed
Release Gate / gate (push) Has been cancelled

- ChatWindow planning card를 기본 접힘 상태의 요약형 카드로 전환

- 단계 목록은 펼치기/접기에서만 보이게 해 claw-code식 읽기 중심 transcript 흐름으로 정리

- README와 DEVELOPMENT 문서에 2026-04-05 21:36 (KST) 기준 100% 마감 판단과 검증 결과 반영

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
This commit is contained in:
2026-04-05 18:19:11 +09:00
parent 854f190531
commit 3ba7c52980
3 changed files with 53 additions and 4 deletions

View File

@@ -9443,6 +9443,7 @@ public partial class ChatWindow : Window
private StackPanel? _planStepsPanel;
private ProgressBar? _planProgressBar;
private TextBlock? _planProgressText;
private TextBlock? _planToggleText;
/// <summary>작업 계획 카드를 생성합니다 (단계 목록 + 진행률 바).</summary>
private void AddPlanningCard(AgentEvent evt)
@@ -9469,8 +9470,12 @@ public partial class ChatWindow : Window
var sp = new StackPanel();
// 헤더
var header = new StackPanel { Orientation = Orientation.Horizontal, Margin = new Thickness(0, 0, 0, 4) };
header.Children.Add(new TextBlock
var header = new Grid { Margin = new Thickness(0, 0, 0, 4) };
header.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
header.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
var headerLeft = new StackPanel { Orientation = Orientation.Horizontal };
headerLeft.Children.Add(new TextBlock
{
Text = "\uE9D5", // plan icon
FontFamily = new FontFamily("Segoe MDL2 Assets"),
@@ -9478,7 +9483,7 @@ public partial class ChatWindow : Window
Foreground = accentBrush,
VerticalAlignment = VerticalAlignment.Center
});
header.Children.Add(new TextBlock
headerLeft.Children.Add(new TextBlock
{
Text = $"계획 {steps.Count}단계",
FontSize = 9, FontWeight = FontWeights.SemiBold,
@@ -9486,6 +9491,28 @@ public partial class ChatWindow : Window
VerticalAlignment = VerticalAlignment.Center,
Margin = new Thickness(4, 0, 0, 0),
});
header.Children.Add(headerLeft);
var toggleWrap = new Border
{
Background = Brushes.Transparent,
BorderBrush = borderBrush,
BorderThickness = new Thickness(1),
CornerRadius = new CornerRadius(10),
Padding = new Thickness(6, 2, 6, 2),
Cursor = Cursors.Hand,
VerticalAlignment = VerticalAlignment.Center,
};
_planToggleText = new TextBlock
{
Text = steps.Count > 0 ? "펼치기" : "",
FontSize = 8.25,
FontWeight = FontWeights.SemiBold,
Foreground = secondaryText,
};
toggleWrap.Child = _planToggleText;
Grid.SetColumn(toggleWrap, 1);
header.Children.Add(toggleWrap);
sp.Children.Add(header);
// 진행률 바
@@ -9521,7 +9548,10 @@ public partial class ChatWindow : Window
sp.Children.Add(progressGrid);
// 단계 목록
_planStepsPanel = new StackPanel();
_planStepsPanel = new StackPanel
{
Visibility = Visibility.Collapsed,
};
for (int i = 0; i < steps.Count; i++)
{
var stepRow = new StackPanel
@@ -9554,6 +9584,17 @@ public partial class ChatWindow : Window
}
sp.Children.Add(_planStepsPanel);
toggleWrap.MouseLeftButtonUp += (_, _) =>
{
if (_planStepsPanel == null || _planToggleText == null)
return;
var expanded = _planStepsPanel.Visibility == Visibility.Visible;
_planStepsPanel.Visibility = expanded ? Visibility.Collapsed : Visibility.Visible;
_planToggleText.Text = expanded ? "펼치기" : "접기";
toggleWrap.Background = expanded ? Brushes.Transparent : BrushFromHex("#F8FAFC");
};
card.Child = sp;
_planningCard = card;