vision refactor
This commit is contained in:
parent
4cb4cccf5d
commit
4769fa7a97
@ -43,15 +43,13 @@ async function fetchTwentyTasks(): Promise<TwentyTask[]> {
|
|||||||
today.setHours(0, 0, 0, 0);
|
today.setHours(0, 0, 0, 0);
|
||||||
const todayISO = today.toISOString();
|
const todayISO = today.toISOString();
|
||||||
|
|
||||||
// GraphQL query to fetch activities (tasks) that are not completed and due before today
|
// GraphQL query to fetch tasks from Twenty CRM
|
||||||
// Using findManyActivities which is the standard query for Twenty CRM
|
// Twenty CRM uses different query structures - trying tasks query first
|
||||||
// Note: The exact filter syntax may vary based on your Twenty CRM version
|
// If this doesn't work, we may need to use REST API or check the actual schema
|
||||||
// If this doesn't work, try using REST API or adjust the filter syntax
|
|
||||||
const query = `
|
const query = `
|
||||||
query GetOverdueTasks {
|
query GetOverdueTasks {
|
||||||
findManyActivities(
|
tasks(
|
||||||
filter: {
|
where: {
|
||||||
type: { eq: Task }
|
|
||||||
completedAt: { is: NULL }
|
completedAt: { is: NULL }
|
||||||
dueAt: { lt: "${todayISO}" }
|
dueAt: { lt: "${todayISO}" }
|
||||||
}
|
}
|
||||||
@ -64,7 +62,6 @@ async function fetchTwentyTasks(): Promise<TwentyTask[]> {
|
|||||||
body
|
body
|
||||||
dueAt
|
dueAt
|
||||||
completedAt
|
completedAt
|
||||||
type
|
|
||||||
assigneeId
|
assigneeId
|
||||||
assignee {
|
assignee {
|
||||||
id
|
id
|
||||||
@ -121,29 +118,55 @@ async function fetchTwentyTasks(): Promise<TwentyTask[]> {
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!data.data?.findManyActivities?.edges) {
|
// Try different possible response structures
|
||||||
|
// Twenty CRM may use different field names depending on version
|
||||||
|
let activitiesData = null;
|
||||||
|
if (data.data?.tasks?.edges) {
|
||||||
|
activitiesData = data.data.tasks.edges;
|
||||||
|
} else if (data.data?.activities?.edges) {
|
||||||
|
activitiesData = data.data.activities.edges;
|
||||||
|
} else if (data.data?.findManyTasks?.edges) {
|
||||||
|
activitiesData = data.data.findManyTasks.edges;
|
||||||
|
} else if (data.data?.findManyActivities?.edges) {
|
||||||
|
activitiesData = data.data.findManyActivities.edges;
|
||||||
|
} else if (Array.isArray(data.data?.tasks)) {
|
||||||
|
// Direct array response
|
||||||
|
activitiesData = data.data.tasks.map((node: any) => ({ node }));
|
||||||
|
} else if (Array.isArray(data.data?.activities)) {
|
||||||
|
// Direct array response
|
||||||
|
activitiesData = data.data.activities.map((node: any) => ({ node }));
|
||||||
|
} else if (Array.isArray(data.data)) {
|
||||||
|
// Root level array
|
||||||
|
activitiesData = data.data.map((node: any) => ({ node }));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!activitiesData) {
|
||||||
logger.warn('[TWENTY_CRM_TASKS] Unexpected response format from Twenty CRM', {
|
logger.warn('[TWENTY_CRM_TASKS] Unexpected response format from Twenty CRM', {
|
||||||
dataKeys: Object.keys(data.data || {}),
|
dataKeys: Object.keys(data.data || {}),
|
||||||
|
fullData: JSON.stringify(data.data).substring(0, 1000),
|
||||||
});
|
});
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Transform Twenty CRM tasks to match our Task interface
|
// Transform Twenty CRM tasks to match our Task interface
|
||||||
const tasks: TwentyTask[] = data.data.findManyActivities.edges.map((edge: any) => ({
|
const tasks: TwentyTask[] = activitiesData.map((edge: any) => {
|
||||||
id: edge.node.id,
|
const node = edge.node || edge; // Handle both edge.node and direct node
|
||||||
title: edge.node.title || 'Untitled Task',
|
return {
|
||||||
body: edge.node.body || null,
|
id: node.id,
|
||||||
dueAt: edge.node.dueAt || null,
|
title: node.title || 'Untitled Task',
|
||||||
completedAt: edge.node.completedAt || null,
|
body: node.body || null,
|
||||||
type: edge.node.type || 'Task',
|
dueAt: node.dueAt || null,
|
||||||
assigneeId: edge.node.assigneeId || null,
|
completedAt: node.completedAt || null,
|
||||||
assignee: edge.node.assignee ? {
|
type: node.type || 'Task',
|
||||||
id: edge.node.assignee.id,
|
assigneeId: node.assigneeId || null,
|
||||||
firstName: edge.node.assignee.firstName || null,
|
assignee: node.assignee ? {
|
||||||
lastName: edge.node.assignee.lastName || null,
|
id: node.assignee.id,
|
||||||
email: edge.node.assignee.email || null,
|
firstName: node.assignee.firstName || null,
|
||||||
} : null,
|
lastName: node.assignee.lastName || null,
|
||||||
}));
|
email: node.assignee.email || null,
|
||||||
|
} : null,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
logger.debug('[TWENTY_CRM_TASKS] Successfully fetched tasks from Twenty CRM', {
|
logger.debug('[TWENTY_CRM_TASKS] Successfully fetched tasks from Twenty CRM', {
|
||||||
count: tasks.length,
|
count: tasks.length,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user