-- One row per "Start AI pass" click. The app SSHes the home server to launch
-- the identify wrapper script, passing this row's id; the script POSTs back
-- to mark RUNNING and then SUCCEEDED/FAILED. queueDepth is a snapshot of the
-- pending count at click time so the history reads usefully after drain.

CREATE TYPE "AIReviewSessionStatus" AS ENUM ('PENDING', 'RUNNING', 'SUCCEEDED', 'FAILED');

CREATE TABLE "AIReviewSession" (
    "id" TEXT NOT NULL,
    "status" "AIReviewSessionStatus" NOT NULL DEFAULT 'PENDING',
    "queueDepth" INTEGER NOT NULL DEFAULT 0,
    "startedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "runningAt" TIMESTAMP(3),
    "finishedAt" TIMESTAMP(3),
    "errorMessage" TEXT,
    "logTail" TEXT,
    "triggeredById" TEXT,

    CONSTRAINT "AIReviewSession_pkey" PRIMARY KEY ("id")
);

CREATE INDEX "AIReviewSession_status_idx" ON "AIReviewSession"("status");
CREATE INDEX "AIReviewSession_startedAt_idx" ON "AIReviewSession"("startedAt");
