export const COMMISSION_STATUSES = [ "NEW", "REVIEWING", "ACCEPTED", "REJECTED", "INPROGRESS", "COMPLETED", "SPAM", ] as const; export type CommissionStatus = (typeof COMMISSION_STATUSES)[number]; function isCommissionStatus(value: string): value is CommissionStatus { return (COMMISSION_STATUSES as readonly string[]).includes(value); } export const BOARD_COLUMNS = { intake: { title: "Intake", statuses: ["NEW", "REVIEWING", "ACCEPTED"] as const, // when you drop into this column, we normalize to one canonical status: // NEW should usually be system-created; for manual moves, REVIEWING is safer. canonicalStatus: "REVIEWING" as const, }, inProgress: { title: "In Progress", statuses: ["INPROGRESS"] as const, canonicalStatus: "INPROGRESS" as const, }, completed: { title: "Completed", statuses: ["COMPLETED"] as const, canonicalStatus: "COMPLETED" as const, }, } as const; const INTAKE_STATUSES = new Set(BOARD_COLUMNS.intake.statuses); const IN_PROGRESS_STATUSES = new Set(BOARD_COLUMNS.inProgress.statuses); const COMPLETED_STATUSES = new Set(BOARD_COLUMNS.completed.statuses); export type BoardColumnId = keyof typeof BOARD_COLUMNS; export function columnIdForStatus(status: string): BoardColumnId | null { if (!isCommissionStatus(status)) return null; if (INTAKE_STATUSES.has(status)) return "intake"; if (IN_PROGRESS_STATUSES.has(status)) return "inProgress"; if (COMPLETED_STATUSES.has(status)) return "completed"; return null; } export function canonicalStatusForColumn(col: BoardColumnId): CommissionStatus { return BOARD_COLUMNS[col].canonicalStatus; }