feat: add backlog status and update task stats

- Introduced 'backlog' status in TaskStatus type and STATUS_CONFIG for better task categorization.
- Updated TaskStats interface to include backlog count.
- Enhanced getTaskStats method to fetch backlog statistics and display in Header component.
- Added backlog stat card in Header for improved visibility of task status.
This commit is contained in:
Julien Froidefond
2025-09-15 16:40:15 +02:00
parent 49ab6f0ea4
commit addd57cd50
4 changed files with 22 additions and 3 deletions

View File

@@ -90,6 +90,13 @@ export function Header({ title, subtitle, stats, syncing = false }: HeaderProps)
color="yellow"
/>
)}
{stats.backlog > 0 && (
<StatCard
label="BACKLOG"
value={String(stats.backlog).padStart(2, '0')}
color="gray"
/>
)}
{stats.todo > 0 && (
<StatCard
label="QUEUE"

View File

@@ -9,6 +9,13 @@ export interface StatusConfig {
}
export const STATUS_CONFIG: Record<TaskStatus, StatusConfig> = {
backlog: {
key: 'backlog',
label: 'Backlog',
icon: '📋',
color: 'gray',
order: 0
},
todo: {
key: 'todo',
label: 'À faire',

View File

@@ -1,6 +1,6 @@
// Types de base pour les tâches
// Note: TaskStatus et TaskPriority sont maintenant gérés par la configuration centralisée dans lib/status-config.ts
export type TaskStatus = 'todo' | 'in_progress' | 'done' | 'cancelled' | 'freeze' | 'archived';
export type TaskStatus = 'backlog' | 'todo' | 'in_progress' | 'done' | 'cancelled' | 'freeze' | 'archived';
export type TaskPriority = 'low' | 'medium' | 'high' | 'urgent';
export type TaskSource = 'reminders' | 'jira' | 'manual';
@@ -10,6 +10,7 @@ export interface TaskStats {
completed: number;
inProgress: number;
todo: number;
backlog: number;
cancelled: number;
freeze: number;
archived: number;

View File

@@ -189,13 +189,15 @@ export class TasksService {
* Récupère les statistiques des tâches
*/
async getTaskStats() {
const [total, completed, inProgress, todo, cancelled, freeze] = await Promise.all([
const [total, completed, inProgress, todo, backlog, cancelled, freeze, archived] = await Promise.all([
prisma.task.count(),
prisma.task.count({ where: { status: 'done' } }),
prisma.task.count({ where: { status: 'in_progress' } }),
prisma.task.count({ where: { status: 'todo' } }),
prisma.task.count({ where: { status: 'backlog' } }),
prisma.task.count({ where: { status: 'cancelled' } }),
prisma.task.count({ where: { status: 'freeze' } })
prisma.task.count({ where: { status: 'freeze' } }),
prisma.task.count({ where: { status: 'archived' } })
]);
return {
@@ -203,8 +205,10 @@ export class TasksService {
completed,
inProgress,
todo,
backlog,
cancelled,
freeze,
archived,
completionRate: total > 0 ? Math.round((completed / total) * 100) : 0
};
}