feat: Add task completion validation and enhanced notifications

main
brobert (aider) 3 months ago
parent 5a44e73106
commit 6d968b6208

@ -107,12 +107,19 @@ export function handleTaskCommand(body: string, sender: string, groupId: string,
return;
}
completeTask(taskId);
const completedTask = completeTask(taskId, sender);
// Send confirmation privately to the user who completed
sendMessage(sender, `✅ Tarea ${taskId} completada: ${task.description}`);
sendMessage(sender, `✅ Tarea completada:\n` +
`ID: ${completedTask.id}\n` +
`Descripción: ${completedTask.description}\n` +
`Completada el: ${completedTask.completedAt}`);
// Notify the task creator if different from completer
if (task.createdBy && task.createdBy !== sender) {
sendMessage(task.createdBy, `✅ Tarea ${taskId} completada por @${sender.split('@')[0]}: ${task.description}`);
if (completedTask.createdBy && completedTask.createdBy !== sender) {
sendMessage(completedTask.createdBy, `✅ Tarea completada por @${sender.split('@')[0]}:\n` +
`ID: ${completedTask.id}\n` +
`Descripción: ${completedTask.description}\n` +
`Completada el: ${completedTask.completedAt}`);
}
} catch (error) {
console.error('Error completing task:', error);

@ -43,11 +43,29 @@ export function assignTask(taskId: number, assignedTo: string) {
}
// Mark a task as completed
export function completeTask(taskId: number) {
execute(
'UPDATE tasks SET completed = TRUE WHERE id = ?',
export function completeTask(taskId: number, completedBy: string) {
const task = getTaskById(taskId);
if (!task) {
throw new Error('Tarea no encontrada');
}
// Only allow completion if task is assigned to the user or to no one
const currentUser = normalizeUserIdentifier(completedBy);
if (task.assignedTo && task.assignedTo !== currentUser) {
throw new Error('No puedes completar una tarea asignada a otro usuario');
}
const result = execute(
'UPDATE tasks SET completed = TRUE, completed_at = CURRENT_TIMESTAMP WHERE id = ?',
[taskId]
);
if (result.changes === 0) {
throw new Error('No se pudo completar la tarea');
}
// Return updated task with completion info
return getTaskById(taskId);
}
// Get all tasks (for debugging or future use)

Loading…
Cancel
Save