+
{/* Colonne Backlog */}
@@ -606,7 +609,7 @@ export default function Tasks() {
{/* Colonne Test */}
-
+
Test ({filteredTasks.filter((task: TaskWithRelations) => task.status === 'testing').length})
@@ -618,8 +621,47 @@ export default function Tasks() {
+ {/* Colonne Bloqué */}
+
+
+
+ Bloqué ({filteredTasks.filter((task: TaskWithRelations) => task.status === 'blocked').length})
+
+
+ {filteredTasks.filter((task: TaskWithRelations) => task.status === 'blocked').map((task: TaskWithRelations) => {
+ return renderKanbanCard(task, canEditTasks);
+ })}
+
+
+
+ {/* Colonne Prêt Déploiement */}
+
+
+
+ Prêt Déploiement ({filteredTasks.filter((task: TaskWithRelations) => task.status === 'ready_to_deploy').length})
+
+
+ {filteredTasks.filter((task: TaskWithRelations) => task.status === 'ready_to_deploy').map((task: TaskWithRelations) => {
+ return renderKanbanCard(task, canEditTasks);
+ })}
+
+
+
+ {/* Colonne Déployé */}
+
+
+
+ Déployé ({filteredTasks.filter((task: TaskWithRelations) => task.status === 'deployed').length})
+
+
+ {filteredTasks.filter((task: TaskWithRelations) => task.status === 'deployed').map((task: TaskWithRelations) => {
+ return renderKanbanCard(task, canEditTasks);
+ })}
+
+
+
{/* Colonne Terminé */}
-
+
Terminé ({filteredTasks.filter((task: TaskWithRelations) => task.status === 'done').length})
@@ -632,7 +674,7 @@ export default function Tasks() {
{/* Colonne Archivé */}
-
+
Archivé ({filteredTasks.filter((task: TaskWithRelations) => task.status === 'archived').length})
@@ -693,7 +735,10 @@ export default function Tasks() {
task.status === 'todo' ? 'À faire' :
task.status === 'in_progress' ? 'En cours' :
task.status === 'review' ? 'Révision' :
- task.status === 'testing' ? 'Test' : task.status}
+ task.status === 'testing' ? 'Test' :
+ task.status === 'blocked' ? 'Bloqué' :
+ task.status === 'ready_to_deploy' ? 'Prêt Déploiement' :
+ task.status === 'deployed' ? 'Déployé' : task.status}
@@ -868,103 +913,7 @@ export default function Tasks() {
-
- {/* Vue Kanban */}
-
-
- {/* Colonne Backlog */}
-
-
-
- Backlog ({filteredTasks.filter((task: TaskWithRelations) => task.status === 'backlog').length})
-
-
- {filteredTasks.filter((task: TaskWithRelations) => task.status === 'backlog').map((task: TaskWithRelations) => {
- return renderKanbanCard(task, canEditTasks);
- })}
-
-
- {/* Colonne À faire */}
-
-
-
- À faire ({filteredTasks.filter((task: TaskWithRelations) => task.status === 'todo').length})
-
-
- {filteredTasks.filter((task: TaskWithRelations) => task.status === 'todo').map((task: TaskWithRelations) => {
- return renderKanbanCard(task, canEditTasks);
- })}
-
-
-
- {/* Colonne En cours */}
-
-
-
- En cours ({filteredTasks.filter((task: TaskWithRelations) => task.status === 'in_progress').length})
-
-
- {filteredTasks.filter((task: TaskWithRelations) => task.status === 'in_progress').map((task: TaskWithRelations) => {
- return renderKanbanCard(task, canEditTasks);
- })}
-
-
-
- {/* Colonne Révision */}
-
-
-
- Révision ({filteredTasks.filter((task: TaskWithRelations) => task.status === 'review').length})
-
-
- {filteredTasks.filter((task: TaskWithRelations) => task.status === 'review').map((task: TaskWithRelations) => {
- return renderKanbanCard(task, canEditTasks);
- })}
-
-
-
- {/* Colonne Test */}
-
-
-
- Test ({filteredTasks.filter((task: TaskWithRelations) => task.status === 'testing').length})
-
-
- {filteredTasks.filter((task: TaskWithRelations) => task.status === 'testing').map((task: TaskWithRelations) => {
- return renderKanbanCard(task, canEditTasks);
- })}
-
-
-
- {/* Colonne Terminé */}
-
-
-
- Terminé ({filteredTasks.filter((task: TaskWithRelations) => task.status === 'done').length})
-
-
- {filteredTasks.filter((task: TaskWithRelations) => task.status === 'done').map((task: TaskWithRelations) => {
- return renderKanbanCard(task, canEditTasks, true);
- })}
-
-
-
- {/* Colonne Archivé */}
-
-
-
- Archivé ({filteredTasks.filter((task: TaskWithRelations) => task.status === 'archived').length})
-
-
- {filteredTasks.filter((task: TaskWithRelations) => task.status === 'archived').map((task: TaskWithRelations) => {
- return renderKanbanCard(task, canEditTasks, true);
- })}
-
-
-
-
-
diff --git a/shared/schema.ts b/shared/schema.ts
index e78fa91..b2b2baf 100644
--- a/shared/schema.ts
+++ b/shared/schema.ts
@@ -245,7 +245,7 @@ export const tasks = pgTable("tasks", {
description: text("description"), // Description de la tâche (optionnel)
dueDate: timestamp("due_date"), // Date d'échéance (optionnel)
priority: varchar("priority").notNull().default("medium"), // low, medium, high
- status: varchar("status").notNull().default("todo"), // backlog, todo, in_progress, review, testing, done, archived
+ status: varchar("status").notNull().default("todo"), // backlog, todo, in_progress, review, testing, blocked, ready_to_deploy, deployed, done, archived
assignedTo: text("assigned_to").notNull(), // Utilisateur responsable (champ libre)
createdBy: varchar("created_by").notNull(), // Utilisateur créateur
groupId: integer("group_id").notNull(), // Magasin/groupe associé