Files

63 lines
4.3 KiB
SQL
Raw Permalink Normal View History

CREATE TABLE IF NOT EXISTS workbench_balances (
tenant_id bigint NOT NULL, user_id varchar(36) NOT NULL,
balance bigint NOT NULL DEFAULT 0, reserved bigint NOT NULL DEFAULT 0 CHECK (reserved >= 0),
updated_at timestamptz NOT NULL DEFAULT now(), PRIMARY KEY (tenant_id,user_id)
);
CREATE TABLE IF NOT EXISTS workbench_transactions (
id varchar(36) PRIMARY KEY, tenant_id bigint NOT NULL, user_id varchar(36) NOT NULL,
delta bigint NOT NULL, kind varchar(32) NOT NULL, reason text NOT NULL DEFAULT '',
actor_id varchar(36) NOT NULL DEFAULT '', idempotency_key varchar(180) NOT NULL,
metadata jsonb NOT NULL DEFAULT '{}', created_at timestamptz NOT NULL DEFAULT now(),
UNIQUE(tenant_id,idempotency_key)
);
CREATE INDEX IF NOT EXISTS wb_transactions_owner ON workbench_transactions(tenant_id,user_id,created_at DESC);
CREATE TABLE IF NOT EXISTS workbench_usage (
id varchar(36) PRIMARY KEY, tenant_id bigint NOT NULL, owner_id varchar(36) NOT NULL,
job_id varchar(64) NOT NULL DEFAULT '', call_id varchar(64) NOT NULL, agent_id varchar(64) NOT NULL DEFAULT '',
model_id varchar(64) NOT NULL DEFAULT '', action varchar(100) NOT NULL DEFAULT '',
input_tokens bigint NOT NULL DEFAULT 0, output_tokens bigint NOT NULL DEFAULT 0,
points bigint NOT NULL DEFAULT 0, status varchar(32) NOT NULL DEFAULT '',
metadata jsonb NOT NULL DEFAULT '{}', created_at timestamptz NOT NULL DEFAULT now(),
UNIQUE(tenant_id,call_id)
);
CREATE INDEX IF NOT EXISTS wb_usage_owner ON workbench_usage(tenant_id,owner_id,created_at DESC);
CREATE TABLE IF NOT EXISTS workbench_balance_holds (
id varchar(36) PRIMARY KEY, tenant_id bigint NOT NULL, user_id varchar(36) NOT NULL,
amount bigint NOT NULL CHECK(amount >= 0), status varchar(20) NOT NULL DEFAULT 'reserved',
expires_at timestamptz NOT NULL, created_at timestamptz NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS wb_holds_expiry ON workbench_balance_holds(status,expires_at);
CREATE TABLE IF NOT EXISTS workbench_consumption (
id varchar(36) PRIMARY KEY, tenant_id bigint NOT NULL, owner_id varchar(36) NOT NULL,
agent_id varchar(64) NOT NULL, kb_id varchar(64) NOT NULL, chunk_id varchar(200) NOT NULL,
knowledge_id varchar(64) NOT NULL DEFAULT '', file_name text NOT NULL DEFAULT '',
category text NOT NULL DEFAULT '', excerpt text NOT NULL DEFAULT '',
resource_id varchar(64) NOT NULL DEFAULT '', segment_id varchar(64) NOT NULL DEFAULT '',
job_id varchar(64) NOT NULL DEFAULT '', status varchar(32) NOT NULL DEFAULT 'open',
banned boolean NOT NULL DEFAULT false, lease_until timestamptz,
created_at timestamptz NOT NULL DEFAULT now(), updated_at timestamptz NOT NULL DEFAULT now(),
UNIQUE(tenant_id,owner_id,agent_id,kb_id,chunk_id)
);
CREATE INDEX IF NOT EXISTS wb_consumption_owner ON workbench_consumption(tenant_id,owner_id,kb_id,status);
CREATE INDEX IF NOT EXISTS wb_consumption_job ON workbench_consumption(job_id,status);
CREATE TABLE IF NOT EXISTS workbench_operation_logs (
id varchar(36) PRIMARY KEY, tenant_id bigint NOT NULL, owner_id varchar(36) NOT NULL DEFAULT '',
owner_name text NOT NULL DEFAULT '', kind varchar(32) NOT NULL, level varchar(20) NOT NULL,
action text NOT NULL DEFAULT '', message text NOT NULL DEFAULT '', resource_id text NOT NULL DEFAULT '',
trace_id varchar(100) NOT NULL DEFAULT '', status integer NOT NULL DEFAULT 0,
metadata jsonb NOT NULL DEFAULT '{}', created_at timestamptz NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS wb_logs_scope ON workbench_operation_logs(tenant_id,kind,created_at DESC);
CREATE TABLE IF NOT EXISTS workbench_pending_memories (
id varchar(36) PRIMARY KEY, tenant_id bigint NOT NULL, owner_id varchar(36) NOT NULL,
agent_id varchar(64) NOT NULL DEFAULT '', content text NOT NULL, source_ref text NOT NULL DEFAULT '',
status varchar(32) NOT NULL DEFAULT 'pending', reviewed_by varchar(36) NOT NULL DEFAULT '',
created_at timestamptz NOT NULL DEFAULT now(), updated_at timestamptz NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS wb_memories_scope ON workbench_pending_memories(tenant_id,owner_id,agent_id,status);
CREATE TABLE IF NOT EXISTS workbench_history (
id varchar(36) PRIMARY KEY, tenant_id bigint NOT NULL, owner_id varchar(36) NOT NULL DEFAULT '',
source_kind varchar(64) NOT NULL, source_id varchar(100) NOT NULL, payload jsonb NOT NULL,
created_at timestamptz NOT NULL DEFAULT now(), UNIQUE(tenant_id,source_kind,source_id)
);