feat(mcp): queue long-running calculations

This commit is contained in:
2026-10-29 18:25:15 +08:00
parent 2865811f1b
commit 63af998045
32 changed files with 1588 additions and 72 deletions
+23
View File
@@ -0,0 +1,23 @@
-- Apply independently to each project's business database.
CREATE SCHEMA IF NOT EXISTS workbench;
CREATE TABLE IF NOT EXISTS workbench.calculation_jobs (
job_id uuid PRIMARY KEY,
project_id uuid NOT NULL,
owner_user_id uuid NOT NULL,
request_key text NOT NULL,
tool text NOT NULL,
parameters jsonb NOT NULL,
binding jsonb NOT NULL,
timeout_seconds integer NOT NULL CHECK (timeout_seconds BETWEEN 1 AND 86400),
status text NOT NULL DEFAULT 'queued' CHECK (status IN
('queued','running','cancel_requested','succeeded','failed','cancelled','timed_out','interrupted')),
result jsonb,
error jsonb,
lease_generation bigint NOT NULL DEFAULT 0,
lease_owner text,
lease_expires_at timestamptz,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
updated_at timestamptz NOT NULL DEFAULT clock_timestamp(),
UNIQUE(project_id,owner_user_id,request_key)
);
CREATE INDEX IF NOT EXISTS calculation_jobs_queue ON workbench.calculation_jobs(project_id,status,created_at);