63 lines
4.3 KiB
SQL
63 lines
4.3 KiB
SQL
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)
|
||
|
|
);
|