diff options
Diffstat (limited to 'Omni/Task')
| -rw-r--r-- | Omni/Task/Core.hs | 14 | ||||
| -rw-r--r-- | Omni/Task/RaceTest.hs | 4 |
2 files changed, 12 insertions, 6 deletions
diff --git a/Omni/Task/Core.hs b/Omni/Task/Core.hs index 07c74fc..92936bb 100644 --- a/Omni/Task/Core.hs +++ b/Omni/Task/Core.hs @@ -35,6 +35,7 @@ data Task = Task taskNamespace :: Maybe Text, -- Optional namespace (e.g., "Omni/Task", "Biz/Cloud") taskStatus :: Status, taskPriority :: Priority, -- Priority level (0-4) + taskComplexity :: Maybe Int, -- Complexity 1-5 for model selection taskDependencies :: [Dependency], -- List of dependencies with types taskDescription :: Text, -- Required description taskComments :: [Comment], -- Timestamped comments for extra context @@ -292,6 +293,7 @@ instance SQL.FromRow Task where <*> SQL.field <*> SQL.field <*> SQL.field + <*> SQL.field -- complexity <*> SQL.field <*> (fromMaybe "" </ SQL.field) -- Handle NULL description from legacy data <*> SQL.field -- comments @@ -307,6 +309,7 @@ instance SQL.ToRow Task where SQL.toField (taskNamespace t), SQL.toField (taskStatus t), SQL.toField (taskPriority t), + SQL.toField (taskComplexity t), SQL.toField (taskDependencies t), SQL.toField (taskDescription t), SQL.toField (taskComments t), @@ -444,6 +447,7 @@ initTaskDb = do \ namespace TEXT, \ \ status TEXT NOT NULL, \ \ priority TEXT NOT NULL, \ + \ complexity INTEGER, \ \ dependencies TEXT NOT NULL, \ \ description TEXT, \ \ comments TEXT NOT NULL DEFAULT '[]', \ @@ -531,6 +535,7 @@ tasksColumns = ("namespace", "TEXT"), ("status", "TEXT"), ("priority", "TEXT"), + ("complexity", "INTEGER"), ("dependencies", "TEXT"), ("description", "TEXT"), ("comments", "TEXT"), @@ -639,13 +644,13 @@ saveTask task = SQL.execute conn "INSERT OR REPLACE INTO tasks \ - \ (id, title, type, parent, namespace, status, priority, dependencies, description, comments, created_at, updated_at) \ - \ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" + \ (id, title, type, parent, namespace, status, priority, complexity, dependencies, description, comments, created_at, updated_at) \ + \ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" task -- Create a new task -createTask :: Text -> TaskType -> Maybe Text -> Maybe Text -> Priority -> [Dependency] -> Text -> IO Task -createTask title taskType parent namespace priority deps description = +createTask :: Text -> TaskType -> Maybe Text -> Maybe Text -> Priority -> Maybe Int -> [Dependency] -> Text -> IO Task +createTask title taskType parent namespace priority complexity deps description = withTaskLock <| do let parent' = fmap normalizeId parent deps' = map normalizeDependency deps @@ -665,6 +670,7 @@ createTask title taskType parent namespace priority deps description = taskNamespace = namespace, taskStatus = Open, taskPriority = priority, + taskComplexity = complexity, taskDependencies = deps', taskDescription = description, taskComments = [], diff --git a/Omni/Task/RaceTest.hs b/Omni/Task/RaceTest.hs index 78410a4..8ab797a 100644 --- a/Omni/Task/RaceTest.hs +++ b/Omni/Task/RaceTest.hs @@ -28,7 +28,7 @@ raceTest = initTaskDb -- Create a parent epic - parent <- createTask "Parent Epic" Epic Nothing Nothing P2 [] "Parent Epic description" + parent <- createTask "Parent Epic" Epic Nothing Nothing P2 Nothing [] "Parent Epic description" let parentId = taskId parent -- Create multiple children concurrently @@ -39,7 +39,7 @@ raceTest = -- Run concurrent creations children <- mapConcurrently - (\i -> createTask ("Child " <> tshow i) WorkTask (Just parentId) Nothing P2 [] ("Child " <> tshow i <> " description")) + (\i -> createTask ("Child " <> tshow i) WorkTask (Just parentId) Nothing P2 Nothing [] ("Child " <> tshow i <> " description")) indices -- Check for duplicates in generated IDs |
