feat: add unknown status and priority, change todo status to open

This commit is contained in:
2026-07-18 07:48:11 +05:00
parent 526a001d06
commit 148ed75841
28 changed files with 162 additions and 111 deletions
+6 -4
View File
@@ -1,4 +1,6 @@
import { Task } from "@/model/task";
import { TaskPriority } from "@/model/taskPriority";
import { TaskStatus } from "@/model/taskStatus";
import { describe, expect, it } from "vitest";
import { parseTaskFile, serializeTask } from "./markdown";
@@ -8,8 +10,8 @@ const fullTask: Task = {
id: "550e8400-e29b-41d4-a716-446655440000",
title: "Пофиксить баг логина",
description: "Ошибка валидации токена",
status: "in-progress",
priority: "high",
status: TaskStatus.IN_PROGRESS,
priority: TaskPriority.HIGH,
tags: ["bug", "frontend"],
assignee: "ivanov",
created: "2026-07-12T10:00:00.000Z",
@@ -45,8 +47,8 @@ describe("markdown", () => {
expect(task.id).toBe("abc");
expect(task.title).toBe("Minimal");
expect(task.description).toBe("");
expect(task.status).toBe("todo");
expect(task.priority).toBe("medium");
expect(task.status).toBe(TaskStatus.UNKNOWN);
expect(task.priority).toBe(TaskPriority.UNKNOWN);
expect(task.tags).toEqual([]);
expect(task.assignee).toBe("");
expect(task.created).toMatch(ISO_RE);
+12 -4
View File
@@ -10,6 +10,16 @@ function toISO(value: unknown): string {
return new Date().toISOString();
}
function normalizeTaskStatus(value: unknown): TaskStatus {
if (isTaskStatus(value)) return value;
return TaskStatus.UNKNOWN;
}
function normalizeTaskPriority(value: unknown): TaskPriority {
if (isTaskPriority(value)) return value;
return TaskPriority.UNKNOWN;
}
export function parseTaskFile(content: string): Task {
const parsed = fm<Record<string, unknown>>(content);
const data = parsed.attributes;
@@ -17,10 +27,8 @@ export function parseTaskFile(content: string): Task {
id: data.id as string,
title: data.title as string,
description: parsed.body.trim(),
status: isTaskStatus(data.status) ? data.status : TaskStatus.TODO,
priority: isTaskPriority(data.priority)
? data.priority
: TaskPriority.MEDIUM,
status: normalizeTaskStatus(data.status),
priority: normalizeTaskPriority(data.priority),
tags: (data.tags as string[]) ?? [],
assignee: (data.assignee as string) ?? "",
created: toISO(data.created),