feat: add updatedAt field to AchievementCard and related services

- Introduced `updatedAt` property in `AchievementData`, `KeyAccomplishment`, and `Task` interfaces for improved task tracking.
- Updated `AchievementCard` UI to display the last updated date alongside completion date, enhancing user visibility.
- Adjusted `UIShowcaseClient` and `TasksService` to include `updatedAt` values, ensuring consistency across task management components.
This commit is contained in:
Julien Froidefond
2025-09-29 21:42:09 +02:00
parent ec6c51f9ec
commit bff4f394ac
4 changed files with 25 additions and 9 deletions

View File

@@ -67,15 +67,18 @@ export class TasksService {
tags?: string[];
dueDate?: Date;
}): Promise<Task> {
const status = taskData.status || 'todo';
const task = await prisma.task.create({
data: {
title: taskData.title,
description: taskData.description,
status: taskData.status || 'todo',
status: status,
priority: taskData.priority || 'medium',
dueDate: taskData.dueDate,
source: 'manual', // Source manuelle
sourceId: `manual-${Date.now()}` // ID unique
sourceId: `manual-${Date.now()}`, // ID unique
// Si créée directement en done/archived, définir completedAt
completedAt: (status === 'done' || status === 'archived') ? getToday() : null
},
include: {
taskTags: {
@@ -135,12 +138,16 @@ export class TasksService {
updatedAt: getToday()
};
if (updates.status === 'done' && !task.completedAt) {
// Logique pour completedAt : date de résolution définitive
if (updates.status === 'done') {
// Première fois qu'on marque comme done -> définir completedAt
updateData.completedAt = getToday();
} else if (updates.status === 'archived' && !task.completedAt) {
// Première fois qu'on archive -> définir completedAt (archiver = résoudre)
updateData.completedAt = getToday();
} else if (updates.status && updates.status !== 'done' && task.completedAt) {
updateData.completedAt = null;
}
// Si elle était déjà done/archived et qu'on change le statut,
// on garde la completedAt existante (ne jamais l'effacer)
await prisma.task.update({
where: { id: taskId },