fix(FN-2176): honor planning summary overrides for task generation
- Add optional summary payload support to planning create-task and start-breakdown API client calls - Pass edited summary data from PlanningModeModal when creating a task or starting breakdown - Parse and validate summary overrides in planning routes and prioritize override data when present - Add and update dashboard tests to verify override handling and modal call expectations
This commit is contained in:
@@ -877,7 +877,7 @@ describe("PlanningModeModal", () => {
|
||||
fireEvent.click(screen.getByText("Create Task"));
|
||||
|
||||
await waitFor(() => {
|
||||
expect(mockCreateTaskFromPlanning).toHaveBeenCalledWith("session-complete-2", undefined);
|
||||
expect(mockCreateTaskFromPlanning).toHaveBeenCalledWith("session-complete-2", resumedSummary, undefined);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1415,7 +1415,7 @@ describe("PlanningModeModal", () => {
|
||||
fireEvent.click(screen.getByText("Create Task"));
|
||||
|
||||
await waitFor(() => {
|
||||
expect(mockCreateTaskFromPlanning).toHaveBeenCalledWith("session-123", undefined);
|
||||
expect(mockCreateTaskFromPlanning).toHaveBeenCalledWith("session-123", mockSummary, undefined);
|
||||
expect(mockOnTaskCreated).toHaveBeenCalledWith(createdTask);
|
||||
});
|
||||
});
|
||||
@@ -1475,7 +1475,7 @@ describe("PlanningModeModal", () => {
|
||||
fireEvent.click(screen.getByText("Break into Tasks"));
|
||||
|
||||
await waitFor(() => {
|
||||
expect(mockStartPlanningBreakdown).toHaveBeenCalledWith("session-123", undefined);
|
||||
expect(mockStartPlanningBreakdown).toHaveBeenCalledWith("session-123", mockSummary, undefined);
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
|
||||
@@ -686,14 +686,14 @@ export function PlanningModeModal({ isOpen, onClose, onTaskCreated, onTasksCreat
|
||||
setView({ type: "loading" });
|
||||
|
||||
try {
|
||||
const task = await createTaskFromPlanning(view.session.sessionId, projectId);
|
||||
const task = await createTaskFromPlanning(view.session.sessionId, editedSummary ?? undefined, projectId);
|
||||
onTaskCreated(task);
|
||||
handleCancel();
|
||||
} catch (err: any) {
|
||||
setError(err.message || "Failed to create task");
|
||||
setView({ type: "summary", session: view.session, summary: view.summary });
|
||||
}
|
||||
}, [view, onTaskCreated, handleCancel]);
|
||||
}, [editedSummary, view, projectId, onTaskCreated, handleCancel]);
|
||||
|
||||
const handleStartBreakdown = useCallback(async () => {
|
||||
if (view.type !== "summary") return;
|
||||
@@ -702,7 +702,7 @@ export function PlanningModeModal({ isOpen, onClose, onTaskCreated, onTasksCreat
|
||||
setView({ type: "loading" });
|
||||
|
||||
try {
|
||||
const result = await startPlanningBreakdown(view.session.sessionId, projectId);
|
||||
const result = await startPlanningBreakdown(view.session.sessionId, editedSummary ?? undefined, projectId);
|
||||
setLockSessionId(result.sessionId);
|
||||
setView({
|
||||
type: "breakdown",
|
||||
@@ -714,7 +714,7 @@ export function PlanningModeModal({ isOpen, onClose, onTaskCreated, onTasksCreat
|
||||
setError(err.message || "Failed to start breakdown");
|
||||
setView({ type: "summary", session: view.session, summary: view.summary });
|
||||
}
|
||||
}, [view, projectId]);
|
||||
}, [editedSummary, view, projectId]);
|
||||
|
||||
const handleCreateTasksFromBreakdown = useCallback(async () => {
|
||||
if (view.type !== "breakdown") return;
|
||||
|
||||
Reference in New Issue
Block a user