fix: testStrategy and implementation details not showing up.
This commit is contained in:
@@ -47,47 +47,93 @@ export const useTaskDetails = ({
|
|||||||
|
|
||||||
// Find the current task
|
// Find the current task
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log('🔍 TaskDetailsView: Looking for task:', taskId);
|
|
||||||
console.log('🔍 TaskDetailsView: Available tasks:', tasks);
|
|
||||||
|
|
||||||
const { isSubtask: isSub, parentId, subtaskIndex } = parseTaskId(taskId);
|
const { isSubtask: isSub, parentId, subtaskIndex } = parseTaskId(taskId);
|
||||||
|
|
||||||
if (isSub) {
|
if (isSub) {
|
||||||
const parent = tasks.find((t) => t.id === parentId);
|
const parent = tasks.find((t) => t.id === parentId);
|
||||||
if (parent && parent.subtasks && parent.subtasks[subtaskIndex]) {
|
if (parent && parent.subtasks && parent.subtasks[subtaskIndex]) {
|
||||||
const subtask = parent.subtasks[subtaskIndex];
|
const subtask = parent.subtasks[subtaskIndex];
|
||||||
console.log('✅ TaskDetailsView: Found subtask:', subtask);
|
|
||||||
setCurrentTask(subtask);
|
setCurrentTask(subtask);
|
||||||
setParentTask(parent);
|
setParentTask(parent);
|
||||||
// Use subtask's own details and testStrategy
|
|
||||||
setTaskFileData({
|
|
||||||
details: subtask.details || '',
|
|
||||||
testStrategy: subtask.testStrategy || ''
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
console.error('❌ TaskDetailsView: Subtask not found');
|
|
||||||
setCurrentTask(null);
|
setCurrentTask(null);
|
||||||
setParentTask(null);
|
setParentTask(null);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const task = tasks.find((t) => t.id === taskId);
|
const task = tasks.find((t) => t.id === taskId);
|
||||||
if (task) {
|
if (task) {
|
||||||
console.log('✅ TaskDetailsView: Found task:', task);
|
|
||||||
setCurrentTask(task);
|
setCurrentTask(task);
|
||||||
setParentTask(null);
|
setParentTask(null);
|
||||||
// Use task's own details and testStrategy
|
|
||||||
setTaskFileData({
|
|
||||||
details: task.details || '',
|
|
||||||
testStrategy: task.testStrategy || ''
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
console.error('❌ TaskDetailsView: Task not found');
|
|
||||||
setCurrentTask(null);
|
setCurrentTask(null);
|
||||||
setParentTask(null);
|
setParentTask(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [taskId, tasks]);
|
}, [taskId, tasks]);
|
||||||
|
|
||||||
|
// Fetch full task details including details and testStrategy
|
||||||
|
useEffect(() => {
|
||||||
|
const fetchTaskDetails = async () => {
|
||||||
|
if (!currentTask) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Use the parent task ID for MCP call since get_task returns parent with subtasks
|
||||||
|
const taskIdToFetch =
|
||||||
|
isSubtask && parentTask ? parentTask.id : currentTask.id;
|
||||||
|
|
||||||
|
const result = await sendMessage({
|
||||||
|
type: 'mcpRequest',
|
||||||
|
tool: 'get_task',
|
||||||
|
params: {
|
||||||
|
id: taskIdToFetch
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Parse the MCP response - it comes as content[0].text JSON string
|
||||||
|
let fullTaskData = null;
|
||||||
|
if (result?.data?.content?.[0]?.text) {
|
||||||
|
try {
|
||||||
|
const parsed = JSON.parse(result.data.content[0].text);
|
||||||
|
fullTaskData = parsed.data;
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Failed to parse MCP response:', e);
|
||||||
|
}
|
||||||
|
} else if (result?.data?.data) {
|
||||||
|
// Fallback if response structure is different
|
||||||
|
fullTaskData = result.data.data;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fullTaskData) {
|
||||||
|
if (isSubtask && fullTaskData.subtasks) {
|
||||||
|
// Find the specific subtask
|
||||||
|
const subtaskData = fullTaskData.subtasks.find(
|
||||||
|
(st: any) =>
|
||||||
|
st.id === currentTask.id ||
|
||||||
|
st.id === parseInt(currentTask.id as any)
|
||||||
|
);
|
||||||
|
if (subtaskData) {
|
||||||
|
setTaskFileData({
|
||||||
|
details: subtaskData.details || '',
|
||||||
|
testStrategy: subtaskData.testStrategy || ''
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Use the main task data
|
||||||
|
setTaskFileData({
|
||||||
|
details: fullTaskData.details || '',
|
||||||
|
testStrategy: fullTaskData.testStrategy || ''
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('❌ Failed to fetch task details:', error);
|
||||||
|
setTaskFileDataError('Failed to load task details');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
fetchTaskDetails();
|
||||||
|
}, [currentTask, isSubtask, parentTask, sendMessage]);
|
||||||
|
|
||||||
// Fetch complexity score
|
// Fetch complexity score
|
||||||
const fetchComplexity = useCallback(async () => {
|
const fetchComplexity = useCallback(async () => {
|
||||||
if (!currentTask) return;
|
if (!currentTask) return;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -151,11 +151,6 @@ export const TaskDetailsView: React.FC<TaskDetailsViewProps> = ({
|
|||||||
defaultExpanded={false}
|
defaultExpanded={false}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{(() => {
|
|
||||||
console.log(taskFileData);
|
|
||||||
return null;
|
|
||||||
})()}
|
|
||||||
|
|
||||||
{/* Test Strategy */}
|
{/* Test Strategy */}
|
||||||
<DetailsSection
|
<DetailsSection
|
||||||
title="Test Strategy"
|
title="Test Strategy"
|
||||||
|
|||||||
@@ -375,6 +375,11 @@ export class TaskTransformer {
|
|||||||
undefined,
|
undefined,
|
||||||
`subtask details for parent ${parentTaskId}`
|
`subtask details for parent ${parentTaskId}`
|
||||||
),
|
),
|
||||||
|
testStrategy: this.validateAndNormalizeString(
|
||||||
|
subtask.testStrategy,
|
||||||
|
undefined,
|
||||||
|
`subtask testStrategy for parent ${parentTaskId}`
|
||||||
|
),
|
||||||
dependencies: subtask.dependencies || []
|
dependencies: subtask.dependencies || []
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ export interface TaskMasterTask {
|
|||||||
description?: string;
|
description?: string;
|
||||||
status: string;
|
status: string;
|
||||||
details?: string;
|
details?: string;
|
||||||
|
testStrategy?: string;
|
||||||
dependencies?: Array<number | string>;
|
dependencies?: Array<number | string>;
|
||||||
}>;
|
}>;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user