// app/tasks/columns.ts // Column definitions for the Kanban. Status โ†’ display config. export type TaskStatus = "backlog" | "ready" | "in_progress" | "blocked" | "done" | "failed"; export type TaskPriority = "low" | "normal" | "high" | "urgent"; export type TaskType = "bizportal_search" | "bizportal_reserve" | "pdf_generate" | "email_send" | "custom"; export const COLUMNS: { id: TaskStatus; title: string; hint: string; accent: string }[] = [ { id: "backlog", title: "Backlog", hint: "Not yet ready", accent: "border-border" }, { id: "ready", title: "Ready", hint: "Agent can pick up", accent: "border-blue-300" }, { id: "in_progress", title: "In Progress", hint: "Agent is working", accent: "border-amber-300" }, { id: "blocked", title: "Blocked", hint: "Needs human input", accent: "border-red-300" }, { id: "done", title: "Done", hint: "Completed", accent: "border-green-300" }, { id: "failed", title: "Failed", hint: "Error โ€” retry or discard", accent: "border-red-400" }, ]; export const PRIORITY_COLORS: Record = { low: "bg-gray-100 text-gray-700 border-gray-200", normal: "bg-blue-50 text-blue-700 border-blue-200", high: "bg-amber-100 text-amber-800 border-amber-300", urgent: "bg-red-100 text-red-800 border-red-300", }; export const TASK_TYPE_META: Record = { bizportal_search: { label: "BizPortal ยท search", icon: "๐Ÿ”", tone: "bg-emerald-50 text-emerald-800 border-emerald-200" }, bizportal_reserve: { label: "BizPortal ยท reserve", icon: "๐Ÿ“", tone: "bg-emerald-50 text-emerald-800 border-emerald-200" }, pdf_generate: { label: "PDF ยท generate", icon: "๐Ÿ“„", tone: "bg-violet-50 text-violet-800 border-violet-200" }, email_send: { label: "Email ยท send", icon: "โœ‰๏ธ", tone: "bg-sky-50 text-sky-800 border-sky-200" }, custom: { label: "Custom", icon: "๐Ÿงฉ", tone: "bg-slate-50 text-slate-800 border-slate-200" }, }; export const TASK_TYPE_LABEL: Record = { bizportal_search: "BizPortal search", bizportal_reserve: "BizPortal name reservation", pdf_generate: "PDF generation", email_send: "Email send", custom: "Custom task", }; export const PRIORITY_LABEL: Record = { low: "Low", normal: "Normal", high: "High", urgent: "Urgent", }; export const STATUS_LABEL: Record = { backlog: "Backlog", ready: "Ready", in_progress: "In Progress", blocked: "Blocked", done: "Done", failed: "Failed", }; // 7 days in done auto-collapse export const DONE_COLLAPSE_DAYS = 7;