Add project Schedule page with interactive Gantt chart

Adds a Schedule tab (Kitsu-style production schedule) under each
project: tasks grouped by type with drag-to-reschedule bars, Day/Week/
Month zoom, manual date-range control, weekend shading, a frozen task
column, and a two-tier month/date axis header. Requires a new
start_date field on Task (start_date was previously missing; only
deadline existed) and shadcn DatePicker inputs replace native date
inputs on the Schedule toolbar and TaskDetailPanel's Start Date/
Deadline fields.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-20 04:10:43 +08:00
parent 981808b901
commit f547d05478
11 changed files with 967 additions and 19 deletions
+5 -1
View File
@@ -11,6 +11,7 @@ export interface Task {
description?: string
task_type: string
status: TaskStatus
start_date?: string
deadline?: string
project_id: number
project_name?: string
@@ -33,6 +34,7 @@ export interface TaskListItem {
name: string
task_type: string
status: TaskStatus
start_date?: string
deadline?: string
project_id: number
project_name: string
@@ -115,6 +117,7 @@ export interface TaskFilters {
status?: string
taskType?: string
departmentRole?: string
limit?: number
}
export interface BulkStatusUpdateRequest {
@@ -143,7 +146,8 @@ class TaskService {
if (filters?.status) params.append('status', filters.status)
if (filters?.taskType) params.append('task_type', filters.taskType)
if (filters?.departmentRole) params.append('department_role', filters.departmentRole)
if (filters?.limit) params.append('limit', filters.limit.toString())
const response = await apiClient.get(`/tasks/?${params}`)
return response.data
}