diff --git a/go-backend/internal/tasks/model.go b/go-backend/internal/tasks/model.go
index 97606cb..0e9bbfd 100644
--- a/go-backend/internal/tasks/model.go
+++ b/go-backend/internal/tasks/model.go
@@ -53,6 +53,7 @@ type CreateInput struct {
type UpdateInput struct {
ID uuid.UUID
OwnerID uuid.UUID
+ TabloID uuid.UUID
Title string
Description string
Status Status
@@ -66,6 +67,29 @@ type ListByTabloInput struct {
TabloID uuid.UUID
}
+type TaskView string
+
+const (
+ TaskViewKanban TaskView = "kanban"
+ TaskViewList TaskView = "list"
+ TaskViewRoadmap TaskView = "roadmap"
+)
+
+type TaskRoadmapMode string
+
+const (
+ TaskRoadmapModeWeek TaskRoadmapMode = "week"
+ TaskRoadmapModeMonth TaskRoadmapMode = "month"
+)
+
+type TaskPageState struct {
+ View TaskView
+ RoadmapMode TaskRoadmapMode
+ TabloIDs []uuid.UUID
+ AssigneeIDs []uuid.UUID
+ Statuses []Status
+}
+
func ParseStatus(raw string) (Status, error) {
switch Status(strings.TrimSpace(raw)) {
case StatusTodo, StatusInProgress, StatusInReview, StatusDone:
@@ -74,3 +98,23 @@ func ParseStatus(raw string) (Status, error) {
return "", ErrInvalidStatus
}
}
+
+func NormalizeTaskView(raw string) TaskView {
+ switch TaskView(strings.TrimSpace(raw)) {
+ case TaskViewList:
+ return TaskViewList
+ case TaskViewRoadmap:
+ return TaskViewRoadmap
+ default:
+ return TaskViewKanban
+ }
+}
+
+func NormalizeTaskRoadmapMode(raw string) TaskRoadmapMode {
+ switch TaskRoadmapMode(strings.TrimSpace(raw)) {
+ case TaskRoadmapModeMonth:
+ return TaskRoadmapModeMonth
+ default:
+ return TaskRoadmapModeWeek
+ }
+}
diff --git a/go-backend/internal/web/handlers/auth_test.go b/go-backend/internal/web/handlers/auth_test.go
index 43f5641..4937207 100644
--- a/go-backend/internal/web/handlers/auth_test.go
+++ b/go-backend/internal/web/handlers/auth_test.go
@@ -150,18 +150,25 @@ func TestTasksPageSidebarShowsRealTablos(t *testing.T) {
}
body := rec.Body.String()
+ projectSection := body
+ if index := strings.Index(body, `id="sidebar-projects-section"`); index >= 0 {
+ projectSection = body[index:]
+ if end := strings.Index(projectSection, `