CREATE TABLE IF NOT EXISTS workbench_usage_quotas ( id varchar(36) PRIMARY KEY, tenant_id bigint NOT NULL, user_id varchar(36) NOT NULL, period varchar(10) NOT NULL CHECK (period IN ('daily','monthly')), token_limit bigint NOT NULL DEFAULT 0 CHECK (token_limit BETWEEN 0 AND 1000000000000), points_limit bigint NOT NULL DEFAULT 0 CHECK (points_limit BETWEEN 0 AND 1000000000000), storage_limit_bytes bigint NOT NULL DEFAULT 0 CHECK (storage_limit_bytes BETWEEN 0 AND 1000000000000), concurrent_limit integer NOT NULL DEFAULT 0 CHECK (concurrent_limit BETWEEN 0 AND 10000), warning_ratio double precision NOT NULL DEFAULT 0.8 CHECK (warning_ratio BETWEEN 0 AND 1), overage_policy varchar(12) NOT NULL DEFAULT 'warn' CHECK (overage_policy IN ('warn','soft_limit','hard_limit')), enabled boolean NOT NULL DEFAULT true, updated_at timestamptz NOT NULL DEFAULT now(), UNIQUE (tenant_id,user_id,period) ); CREATE INDEX IF NOT EXISTS wb_holds_quota ON workbench_balance_holds(tenant_id,user_id,status,created_at);