From 8a535e3f387f58d736ca44a544e45ac1fe784cc8 Mon Sep 17 00:00:00 2001 From: cyh666666 <2398882793@qq.com> Date: Tue, 3 Feb 2026 17:11:50 +0800 Subject: [PATCH] =?UTF-8?q?consumer=E6=A8=A1=E5=9D=97=E5=AE=8C=E6=88=9090%?= =?UTF-8?q?=EF=BC=8C=E5=89=8D=E7=AB=AF=E5=AE=8C=E6=88=90supabase=E5=AF=B9?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ak/config.uts | 4 + doc_mall/create_mall_subscription_tables.sql | 71 - doc_mall/database/complete_mall_database.sql | 1377 ----------- .../database/create_supabase_auth_users.sql | 0 doc_mall/database/mall_alter_upgrade.sql | 692 ------ doc_mall/database/mall_database_check.sql | 332 --- .../database/mall_fields_only_upgrade.sql | 734 ------ doc_mall/database/mall_migration.sql | 868 ------- doc_mall/database/mall_seo_security.sql | 666 ----- doc_mall/database/mock_data_insert.sql | 1180 --------- doc_mall/database/product_database.sql | 452 ---- doc_mall/database/quick_role_migration.sql | 249 -- doc_mall/database/role_field_cleanup.sql | 207 -- doc_mall/database/role_field_unification.sql | 287 --- .../user_compatibility_implementation.sql | 273 --- doc_mall/database/validation_test.sql | 113 - doc_mall/database/verify_mock_data_fix.sql | 113 - doc_mall/reports/PAYMENT_PAGE_GUIDE.md | 75 + doc_mall/subscription_guard_trigger.sql | 47 - doc_mall/subscription_rls_policies.sql | 119 - .../consumer/Supabase Snippet SQL Query.csv | 487 ---- pages/mall/consumer/address-list.uvue | 2 +- pages/mall/consumer/apply-refund.uvue | 85 +- pages/mall/consumer/cart - 副本.uvue | 810 ------- pages/mall/consumer/cart copy.uvue | 1435 ----------- pages/mall/consumer/cart.uvue | 275 ++- pages/mall/consumer/category - 副本.uvue | 1419 ----------- pages/mall/consumer/category.uvue | 149 +- pages/mall/consumer/categorygood.uvue | 1159 --------- .../category完成分类及商品数据获取.uvue | 1131 --------- pages/mall/consumer/chat.uvue | 34 +- pages/mall/consumer/checkout copy 2.uvue | 1733 ------------- pages/mall/consumer/checkout copy.uvue | 1730 ------------- pages/mall/consumer/checkout.uvue | 250 +- pages/mall/consumer/checkoutgood.uvue | 1733 ------------- pages/mall/consumer/doc/FEATURES_&_PAGES.md | 62 + pages/mall/consumer/doc/MOCK_DATA_GUIDE.md | 44 + pages/mall/consumer/doc/README.md | 62 + .../mall/consumer/doc/SUPABASE_INTEGRATION.md | 121 + pages/mall/consumer/favorites.uvue | 83 +- pages/mall/consumer/footprint.uvue | 121 +- pages/mall/consumer/index.uvue | 299 ++- ...分类、热销药品数据获取.uvue => index医药.uvue} | 126 +- pages/mall/consumer/index药品.uvue | 2158 ----------------- pages/mall/consumer/messages - 副本.uvue | 634 ----- pages/mall/consumer/messages.uvue | 311 +-- pages/mall/consumer/messages医药.uvue | 1277 ++++++++++ pages/mall/consumer/order-detail.uvue | 948 ++++---- pages/mall/consumer/orders.uvue | 66 +- pages/mall/consumer/ordersgood.uvue | 996 -------- pages/mall/consumer/orderss.uvue | 1050 -------- pages/mall/consumer/ordersx.uvue | 1046 -------- pages/mall/consumer/payment.uvue | 182 +- .../mall/consumer/product-detail copy 2.uvue | 1392 ----------- .../mall/consumer/product-detail copy 3.uvue | 1392 ----------- ...oduct-detail copy完成图片数量数据获取.uvue | 1359 ----------- pages/mall/consumer/product-detail.uvue | 539 ++-- pages/mall/consumer/profile - 副本.uvue | 909 ------- pages/mall/consumer/profile.uvue | 120 +- pages/mall/consumer/refund.uvue | 72 +- pages/mall/consumer/review.uvue | 39 +- pages/mall/consumer/search.uvue | 230 +- pages/mall/consumer/settings - 副本.uvue | 702 ------ pages/mall/consumer/settings.uvue | 117 +- .../sql/SUPABASE_CONSUMER_INTEGRATION.md | 231 ++ pages/user/bind-email.uvue | 118 +- pages/user/bind-phone.uvue | 119 +- pages/user/change-password.uvue | 49 +- utils/supabaseService.uts | 1028 ++++++-- 69 files changed, 5020 insertions(+), 33273 deletions(-) delete mode 100644 doc_mall/create_mall_subscription_tables.sql delete mode 100644 doc_mall/database/complete_mall_database.sql delete mode 100644 doc_mall/database/create_supabase_auth_users.sql delete mode 100644 doc_mall/database/mall_alter_upgrade.sql delete mode 100644 doc_mall/database/mall_database_check.sql delete mode 100644 doc_mall/database/mall_fields_only_upgrade.sql delete mode 100644 doc_mall/database/mall_migration.sql delete mode 100644 doc_mall/database/mall_seo_security.sql delete mode 100644 doc_mall/database/mock_data_insert.sql delete mode 100644 doc_mall/database/product_database.sql delete mode 100644 doc_mall/database/quick_role_migration.sql delete mode 100644 doc_mall/database/role_field_cleanup.sql delete mode 100644 doc_mall/database/role_field_unification.sql delete mode 100644 doc_mall/database/user_compatibility_implementation.sql delete mode 100644 doc_mall/database/validation_test.sql delete mode 100644 doc_mall/database/verify_mock_data_fix.sql create mode 100644 doc_mall/reports/PAYMENT_PAGE_GUIDE.md delete mode 100644 doc_mall/subscription_guard_trigger.sql delete mode 100644 doc_mall/subscription_rls_policies.sql delete mode 100644 pages/mall/consumer/Supabase Snippet SQL Query.csv delete mode 100644 pages/mall/consumer/cart - 副本.uvue delete mode 100644 pages/mall/consumer/cart copy.uvue delete mode 100644 pages/mall/consumer/category - 副本.uvue delete mode 100644 pages/mall/consumer/categorygood.uvue delete mode 100644 pages/mall/consumer/category完成分类及商品数据获取.uvue delete mode 100644 pages/mall/consumer/checkout copy 2.uvue delete mode 100644 pages/mall/consumer/checkout copy.uvue delete mode 100644 pages/mall/consumer/checkoutgood.uvue create mode 100644 pages/mall/consumer/doc/FEATURES_&_PAGES.md create mode 100644 pages/mall/consumer/doc/MOCK_DATA_GUIDE.md create mode 100644 pages/mall/consumer/doc/README.md create mode 100644 pages/mall/consumer/doc/SUPABASE_INTEGRATION.md rename pages/mall/consumer/{index - 副本 (4)完成分类、热销药品数据获取.uvue => index医药.uvue} (93%) delete mode 100644 pages/mall/consumer/index药品.uvue delete mode 100644 pages/mall/consumer/messages - 副本.uvue create mode 100644 pages/mall/consumer/messages医药.uvue delete mode 100644 pages/mall/consumer/ordersgood.uvue delete mode 100644 pages/mall/consumer/orderss.uvue delete mode 100644 pages/mall/consumer/ordersx.uvue delete mode 100644 pages/mall/consumer/product-detail copy 2.uvue delete mode 100644 pages/mall/consumer/product-detail copy 3.uvue delete mode 100644 pages/mall/consumer/product-detail copy完成图片数量数据获取.uvue delete mode 100644 pages/mall/consumer/profile - 副本.uvue delete mode 100644 pages/mall/consumer/settings - 副本.uvue create mode 100644 pages/mall/consumer/sql/SUPABASE_CONSUMER_INTEGRATION.md diff --git a/ak/config.uts b/ak/config.uts index 83113b95..3413f86c 100644 --- a/ak/config.uts +++ b/ak/config.uts @@ -2,11 +2,15 @@ // 内网环境 - 本地部署的 Supabase // IP: 192.168.1.62 // Kong HTTP Port: 8000 + +//export const SUPA_URL: string = 'http://localhost:18000' +//export const SUPA_KEY: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlLTEiLCJpYXQiOjE3Njk2NzY0OTgsImV4cCI6MTkyNzM1NjQ5OH0.ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' export const SUPA_URL: string = 'http://192.168.1.61:18000' export const SUPA_KEY: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlLTEiLCJpYXQiOjE3Njk2NzY0OTgsImV4cCI6MTkyNzM1NjQ5OH0.ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' // WebSocket 实时连接(内网使用 ws:// 而非 wss://) export const WS_URL: string = 'ws://192.168.1.61:18000/realtime/v1/websocket' +//export const WS_URL: string = 'ws://localhost:18000/realtime/v1/websocket' // 备用配置(已注释,如需切换可取消注释) // 开发环境 - 其他内网地址 diff --git a/doc_mall/create_mall_subscription_tables.sql b/doc_mall/create_mall_subscription_tables.sql deleted file mode 100644 index 7ab4f104..00000000 --- a/doc_mall/create_mall_subscription_tables.sql +++ /dev/null @@ -1,71 +0,0 @@ --- Mall Software Subscription Tables --- PostgreSQL DDL; adjust schema name as needed (default public) - --- Plans -create table if not exists ml_subscription_plans ( - id uuid primary key default gen_random_uuid(), - plan_code text not null unique, - name text not null, - description text, - features jsonb, - price numeric(12,2) not null, - currency text default 'CNY', - billing_period text not null check (billing_period in ('monthly','yearly')), - trial_days int default 0, - is_active boolean default true, - sort_order int default 0, - created_at timestamptz not null default now(), - updated_at timestamptz not null default now() -); - -create index if not exists idx_ml_subscription_plans_active on ml_subscription_plans(is_active) where is_active = true; -create index if not exists idx_ml_subscription_plans_sort on ml_subscription_plans(sort_order); - --- User Subscriptions -create table if not exists ml_user_subscriptions ( - id uuid primary key default gen_random_uuid(), - user_id uuid not null, - plan_id uuid not null references ml_subscription_plans(id) on delete restrict, - status text not null default 'active' check (status in ('trial','active','past_due','canceled','expired')), - start_date timestamptz not null default now(), - end_date timestamptz, - next_billing_date timestamptz, - auto_renew boolean not null default true, - cancel_at_period_end boolean not null default false, - metadata jsonb, - created_at timestamptz not null default now(), - updated_at timestamptz not null default now() -); - -create index if not exists idx_ml_user_subscriptions_user on ml_user_subscriptions(user_id); -create index if not exists idx_ml_user_subscriptions_plan on ml_user_subscriptions(plan_id); -create index if not exists idx_ml_user_subscriptions_status on ml_user_subscriptions(status); - --- updated_at trigger helper (idempotent) -create or replace function public.set_updated_at() -returns trigger -language plpgsql -as $fn$ -begin - new.updated_at = now(); - return new; -end; -$fn$; - --- Recreate triggers safely -drop trigger if exists trg_ml_subscription_plans_updated on ml_subscription_plans; -create trigger trg_ml_subscription_plans_updated - before update on ml_subscription_plans - for each row execute function public.set_updated_at(); - -drop trigger if exists trg_ml_user_subscriptions_updated on ml_user_subscriptions; -create trigger trg_ml_user_subscriptions_updated - before update on ml_user_subscriptions - for each row execute function public.set_updated_at(); - --- Optional: basic RLS scaffolding (customize policies per project standards) --- alter table ml_user_subscriptions enable row level security; --- create policy rls_ml_user_subscriptions_owner on ml_user_subscriptions --- using (user_id::text = current_setting('app.user_id', true)); - --- Done diff --git a/doc_mall/database/complete_mall_database.sql b/doc_mall/database/complete_mall_database.sql deleted file mode 100644 index ba0a8cf5..00000000 --- a/doc_mall/database/complete_mall_database.sql +++ /dev/null @@ -1,1377 +0,0 @@ --- ===================================================================================== --- 电商商城系统完整数据库设�?(PostgreSQL + Supabase) --- 表名前缀: ml_ (mall) --- 复用�? ak_users (用户主表) --- 包含: 表结构、索引、触发器、RLS策略、视图、函�? --- ===================================================================================== - --- ===================================================================================== --- 1. 基础配置和扩�? --- ===================================================================================== - --- 启用必要的扩�? -CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; -CREATE EXTENSION IF NOT EXISTS "pg_stat_statements"; -CREATE EXTENSION IF NOT EXISTS "btree_gin"; - --- ===================================================================================== --- 2. 用户扩展�? --- ===================================================================================== - --- 商城用户扩展信息�? -CREATE TABLE public.ml_user_profiles ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID UNIQUE NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - status INTEGER DEFAULT 1 NOT NULL, -- 1:正常 2:冻结 3:注销 4:待审核 - real_name VARCHAR(100), -- 真实姓名 - id_card VARCHAR(32), -- 身份证号 - business_license VARCHAR(100), -- 营业执照�? - credit_score INTEGER DEFAULT 100, -- 信用分数 0-1000 - verification_status INTEGER DEFAULT 0, -- 认证状�?0:未认�?1:已认�?2:认证失败 - verification_data JSONB DEFAULT '{}', -- 认证相关数据 - preferences JSONB DEFAULT '{}', -- 用户偏好设置 - emergency_contact VARCHAR(200), -- 紧急联系人 - service_areas JSONB, -- 服务区域(配送员) - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_user_status CHECK (status IN (1,2,3,4)), - CONSTRAINT chk_ml_verification_status CHECK (verification_status IN (0,1,2)), - CONSTRAINT chk_ml_credit_score CHECK (credit_score >= 0 AND credit_score <= 1000) -); - -COMMENT ON TABLE public.ml_user_profiles IS '商城用户扩展信息表'; -COMMENT ON COLUMN public.ml_user_profiles.status IS '用户状态:1正常 2冻结 3注销 4待审核'; - --- 用户地址�? -CREATE TABLE public.ml_user_addresses ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - receiver_name VARCHAR(100) NOT NULL, - receiver_phone VARCHAR(32) NOT NULL, - province VARCHAR(100) NOT NULL, - city VARCHAR(100) NOT NULL, - district VARCHAR(100) NOT NULL, - street VARCHAR(200), - address_detail TEXT NOT NULL, - postal_code VARCHAR(16), - is_default BOOLEAN DEFAULT FALSE, - label VARCHAR(50), -- home/office/school/other - latitude DECIMAL(10,7), - longitude DECIMAL(10,7), - delivery_instructions TEXT, - business_hours VARCHAR(100), - status INTEGER DEFAULT 1, -- 1:正常 2:禁用 - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_address_status CHECK (status IN (1,2)) -); - -COMMENT ON TABLE public.ml_user_addresses IS '用户地址�?; - --- ===================================================================================== --- 3. 商品管理�? --- ===================================================================================== - --- 商品分类�? -CREATE TABLE public.ml_categories ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, -- SEO友好的自增ID - parent_id UUID REFERENCES public.ml_categories(id), - name VARCHAR(200) NOT NULL, - slug VARCHAR(200) UNIQUE, - description TEXT, - icon_url TEXT, - banner_url TEXT, - sort_order INTEGER DEFAULT 0, - level INTEGER DEFAULT 1, - path TEXT[], -- 分类路径 - is_active BOOLEAN DEFAULT TRUE, - seo_title VARCHAR(200), - seo_description VARCHAR(500), - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -COMMENT ON TABLE public.ml_categories IS '商品分类�?; - --- 品牌�? -CREATE TABLE public.ml_brands ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, -- SEO友好的自增ID - name VARCHAR(200) NOT NULL, - logo_url TEXT, - description TEXT, - website VARCHAR(500), - is_active BOOLEAN DEFAULT TRUE, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -COMMENT ON TABLE public.ml_brands IS '品牌�?; - --- 商品�? -CREATE TABLE public.ml_products ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, -- SEO友好的自增ID - merchant_id UUID NOT NULL REFERENCES public.ak_users(id), - category_id UUID NOT NULL REFERENCES public.ml_categories(id), - brand_id UUID REFERENCES public.ml_brands(id), - product_code VARCHAR(100) UNIQUE NOT NULL, - name VARCHAR(500) NOT NULL, - subtitle VARCHAR(1000), - description TEXT, - main_image_url TEXT, - image_urls JSONB DEFAULT '[]', - video_urls JSONB DEFAULT '[]', - - -- 价格信息 - base_price DECIMAL(12,2) NOT NULL CHECK (base_price >= 0), - market_price DECIMAL(12,2), - cost_price DECIMAL(12,2), - - -- 库存信息 - total_stock INTEGER DEFAULT 0 CHECK (total_stock >= 0), - available_stock INTEGER DEFAULT 0 CHECK (available_stock >= 0), - min_order_qty INTEGER DEFAULT 1 CHECK (min_order_qty > 0), - max_order_qty INTEGER, - - -- 基础属�? - weight DECIMAL(10,3), - dimensions JSONB, -- {length, width, height} - - -- 状�? - status INTEGER DEFAULT 1, -- 1:上架 2:下架 3:草稿 4:删除 - is_featured BOOLEAN DEFAULT FALSE, - is_new BOOLEAN DEFAULT FALSE, - is_hot BOOLEAN DEFAULT FALSE, - - -- 统计 - view_count INTEGER DEFAULT 0, - sale_count INTEGER DEFAULT 0, - favorite_count INTEGER DEFAULT 0, - rating_avg DECIMAL(3,2) DEFAULT 0.00 CHECK (rating_avg >= 0 AND rating_avg <= 5), - rating_count INTEGER DEFAULT 0, - - -- SEO - seo_title VARCHAR(200), - seo_description VARCHAR(500), - seo_keywords TEXT[], - slug VARCHAR(200) UNIQUE, - - -- 其他 - tags TEXT[], - attributes JSONB DEFAULT '{}', - - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - published_at TIMESTAMP WITH TIME ZONE, - - CONSTRAINT chk_ml_product_status CHECK (status IN (1,2,3,4)) -); - -COMMENT ON TABLE public.ml_products IS '商品�?; - --- 商品SKU�? -CREATE TABLE public.ml_product_skus ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - product_id UUID NOT NULL REFERENCES public.ml_products(id) ON DELETE CASCADE, - sku_code VARCHAR(100) UNIQUE NOT NULL, - specifications JSONB DEFAULT '{}', -- 规格组合 - price DECIMAL(12,2) NOT NULL CHECK (price >= 0), - market_price DECIMAL(12,2), - cost_price DECIMAL(12,2), - stock INTEGER DEFAULT 0 CHECK (stock >= 0), - warning_stock INTEGER DEFAULT 10, -- 库存预警 - image_url TEXT, - weight DECIMAL(10,3), - status INTEGER DEFAULT 1, -- 1:正常 2:禁用 - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_sku_status CHECK (status IN (1,2)) -); - -COMMENT ON TABLE public.ml_product_skus IS '商品SKU�?; - --- 商品规格�? -CREATE TABLE public.ml_product_specs ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - product_id UUID NOT NULL REFERENCES public.ml_products(id) ON DELETE CASCADE, - spec_name VARCHAR(100) NOT NULL, -- 规格名称:颜色、尺寸等 - spec_values JSONB NOT NULL DEFAULT '[]', -- 规格值数�? - sort_order INTEGER DEFAULT 0, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -COMMENT ON TABLE public.ml_product_specs IS '商品规格�?; - --- ===================================================================================== --- 4. 店铺管理�? --- ===================================================================================== - --- 店铺信息�? -CREATE TABLE public.ml_shops ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, -- SEO友好的自增ID - merchant_id UUID UNIQUE NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - shop_name VARCHAR(200) NOT NULL, - shop_logo TEXT, - shop_banner TEXT, - description TEXT, - business_license VARCHAR(100), - contact_name VARCHAR(100), - contact_phone VARCHAR(32), - contact_email VARCHAR(200), - address JSONB, -- 店铺地址信息 - business_hours JSONB, -- 营业时间 - - -- 状�? - status INTEGER DEFAULT 1, -- 1:正常 2:暂停 3:关闭 - - -- 统计 - product_count INTEGER DEFAULT 0, - order_count INTEGER DEFAULT 0, - rating_avg DECIMAL(3,2) DEFAULT 0.00, - rating_count INTEGER DEFAULT 0, - - -- 认证信息 - verified_at TIMESTAMP WITH TIME ZONE, - - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_shop_status CHECK (status IN (1,2,3)) -); - -COMMENT ON TABLE public.ml_shops IS '店铺信息�?; - --- ===================================================================================== --- 5. 订单管理�? --- ===================================================================================== - --- 订单�? -CREATE TABLE public.ml_orders ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, -- SEO友好的自增ID - order_no VARCHAR(50) UNIQUE NOT NULL, - user_id UUID NOT NULL REFERENCES public.ak_users(id), - merchant_id UUID NOT NULL REFERENCES public.ak_users(id), - - -- 金额信息 - product_amount DECIMAL(12,2) NOT NULL DEFAULT 0, -- 商品金额 - discount_amount DECIMAL(12,2) DEFAULT 0, -- 优惠金额 - shipping_fee DECIMAL(12,2) DEFAULT 0, -- 运费 - total_amount DECIMAL(12,2) NOT NULL, -- 总金�? - paid_amount DECIMAL(12,2) DEFAULT 0, -- 已付金额 - - -- 地址信息 - shipping_address JSONB NOT NULL, -- 收货地址 - - -- 状态信�? - order_status INTEGER DEFAULT 1, -- 1:待付�?2:待发�?3:待收�?4:已完�?5:已取�?6:退款中 7:已退�? - payment_status INTEGER DEFAULT 1, -- 1:未付�?2:已付�?3:部分退�?4:全额退�? - shipping_status INTEGER DEFAULT 1, -- 1:未发�?2:已发�?3:运输�?4:已送达 - - -- 时间信息 - paid_at TIMESTAMP WITH TIME ZONE, - shipped_at TIMESTAMP WITH TIME ZONE, - delivered_at TIMESTAMP WITH TIME ZONE, - completed_at TIMESTAMP WITH TIME ZONE, - - -- 其他信息 - remark TEXT, -- 买家备注 - merchant_memo TEXT, -- 商家备注 - cancel_reason TEXT, -- 取消原因 - - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_order_status CHECK (order_status IN (1,2,3,4,5,6,7)), - CONSTRAINT chk_ml_payment_status CHECK (payment_status IN (1,2,3,4)), - CONSTRAINT chk_ml_shipping_status CHECK (shipping_status IN (1,2,3,4)) -); - -COMMENT ON TABLE public.ml_orders IS '订单�?; - --- 订单商品�? -CREATE TABLE public.ml_order_items ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - order_id UUID NOT NULL REFERENCES public.ml_orders(id) ON DELETE CASCADE, - product_id UUID NOT NULL REFERENCES public.ml_products(id), - sku_id UUID REFERENCES public.ml_product_skus(id), - product_name VARCHAR(500) NOT NULL, - sku_name VARCHAR(500), - specifications JSONB DEFAULT '{}', - image_url TEXT, - price DECIMAL(12,2) NOT NULL, - quantity INTEGER NOT NULL CHECK (quantity > 0), - total_amount DECIMAL(12,2) NOT NULL, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -COMMENT ON TABLE public.ml_order_items IS '订单商品�?; - --- ===================================================================================== --- 6. 购物车表 --- ===================================================================================== - --- 购物车表 -CREATE TABLE public.ml_shopping_cart ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - product_id UUID NOT NULL REFERENCES public.ml_products(id) ON DELETE CASCADE, - sku_id UUID REFERENCES public.ml_product_skus(id) ON DELETE CASCADE, - quantity INTEGER NOT NULL CHECK (quantity > 0), - selected BOOLEAN DEFAULT TRUE, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - UNIQUE(user_id, product_id, sku_id) -); - -COMMENT ON TABLE public.ml_shopping_cart IS '购物车表'; - --- ===================================================================================== --- 7. 营销管理�? --- ===================================================================================== - --- 优惠券模板表 -CREATE TABLE public.ml_coupon_templates ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, -- SEO友好的自增ID - merchant_id UUID REFERENCES public.ak_users(id), -- NULL表示平台�? - name VARCHAR(200) NOT NULL, - description TEXT, - coupon_type INTEGER NOT NULL, -- 1:满减�?2:折扣�?3:免运费券 - discount_type INTEGER NOT NULL, -- 1:固定金额 2:百分�? - discount_value DECIMAL(12,2) NOT NULL, -- 优惠�? - min_order_amount DECIMAL(12,2) DEFAULT 0, -- 最低订单金�? - max_discount_amount DECIMAL(12,2), -- 最大优惠金�? - total_quantity INTEGER, -- 总发放数�? - per_user_limit INTEGER DEFAULT 1, -- 每用户限领数�? - usage_limit INTEGER DEFAULT 1, -- 每张券使用次数限�? - - -- 适用范围 - applicable_products JSONB DEFAULT '[]', -- 适用商品ID数组 - applicable_categories JSONB DEFAULT '[]', -- 适用分类ID数组 - - -- 时间限制 - start_time TIMESTAMP WITH TIME ZONE NOT NULL, - end_time TIMESTAMP WITH TIME ZONE NOT NULL, - - status INTEGER DEFAULT 1, -- 1:正常 2:暂停 3:已结�? - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_coupon_type CHECK (coupon_type IN (1,2,3)), - CONSTRAINT chk_ml_discount_type CHECK (discount_type IN (1,2)), - CONSTRAINT chk_ml_coupon_status CHECK (status IN (1,2,3)) -); - -COMMENT ON TABLE public.ml_coupon_templates IS '优惠券模板表'; - --- 用户优惠券表 -CREATE TABLE public.ml_user_coupons ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - template_id UUID NOT NULL REFERENCES public.ml_coupon_templates(id), - coupon_code VARCHAR(50) UNIQUE NOT NULL, - status INTEGER DEFAULT 1, -- 1:未使�?2:已使�?3:已过�? - used_at TIMESTAMP WITH TIME ZONE, - order_id UUID REFERENCES public.ml_orders(id), - received_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - expire_at TIMESTAMP WITH TIME ZONE NOT NULL, - - CONSTRAINT chk_ml_user_coupon_status CHECK (status IN (1,2,3)) -); - -COMMENT ON TABLE public.ml_user_coupons IS '用户优惠券表'; - --- ===================================================================================== --- 8. 配送管理表 --- ===================================================================================== - --- 配送员信息�? -CREATE TABLE public.ml_delivery_drivers ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID UNIQUE NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - real_name VARCHAR(100) NOT NULL, - id_card VARCHAR(32) NOT NULL, - driver_license VARCHAR(50), - vehicle_type INTEGER, -- 1:电动�?2:摩托�?3:汽车 - vehicle_number VARCHAR(20), - service_areas JSONB DEFAULT '[]', -- 服务区域 - work_status INTEGER DEFAULT 1, -- 1:在线 2:忙碌 3:离线 - current_lat DECIMAL(10,7), - current_lng DECIMAL(10,7), - rating_avg DECIMAL(3,2) DEFAULT 0.00, - rating_count INTEGER DEFAULT 0, - order_count INTEGER DEFAULT 0, - status INTEGER DEFAULT 1, -- 1:正常 2:暂停 3:离职 - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_driver_vehicle_type CHECK (vehicle_type IN (1,2,3)), - CONSTRAINT chk_ml_driver_work_status CHECK (work_status IN (1,2,3)), - CONSTRAINT chk_ml_driver_status CHECK (status IN (1,2,3)) -); - -COMMENT ON TABLE public.ml_delivery_drivers IS '配送员信息�?; - --- 配送任务表 -CREATE TABLE public.ml_delivery_tasks ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - order_id UUID UNIQUE NOT NULL REFERENCES public.ml_orders(id), - driver_id UUID REFERENCES public.ml_delivery_drivers(id), - pickup_address JSONB NOT NULL, -- 取货地址 - delivery_address JSONB NOT NULL, -- 配送地址 - distance DECIMAL(8,2), -- 配送距�?km) - estimated_time INTEGER, -- 预计配送时�?分钟) - delivery_fee DECIMAL(10,2) NOT NULL DEFAULT 0, - - status INTEGER DEFAULT 1, -- 1:待接�?2:已接�?3:取货�?4:配送中 5:已送达 6:配送失�? - - -- 时间记录 - assigned_at TIMESTAMP WITH TIME ZONE, - picked_at TIMESTAMP WITH TIME ZONE, - delivered_at TIMESTAMP WITH TIME ZONE, - - -- 其他信息 - delivery_code VARCHAR(10), -- 取货�? - remark TEXT, - failure_reason TEXT, - - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_delivery_status CHECK (status IN (1,2,3,4,5,6)) -); - -COMMENT ON TABLE public.ml_delivery_tasks IS '配送任务表'; - --- ===================================================================================== --- 9. 评价管理�? --- ===================================================================================== - --- 商品评价�? -CREATE TABLE public.ml_product_reviews ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - order_id UUID NOT NULL REFERENCES public.ml_orders(id), - order_item_id UUID NOT NULL REFERENCES public.ml_order_items(id), - user_id UUID NOT NULL REFERENCES public.ak_users(id), - product_id UUID NOT NULL REFERENCES public.ml_products(id), - merchant_id UUID NOT NULL REFERENCES public.ak_users(id), - - rating INTEGER NOT NULL CHECK (rating >= 1 AND rating <= 5), - content TEXT, - images JSONB DEFAULT '[]', -- 评价图片 - is_anonymous BOOLEAN DEFAULT FALSE, - - -- 商家回复 - merchant_reply TEXT, - merchant_replied_at TIMESTAMP WITH TIME ZONE, - - status INTEGER DEFAULT 1, -- 1:正常 2:已删�?3:已隐�? - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_review_status CHECK (status IN (1,2,3)) -); - -COMMENT ON TABLE public.ml_product_reviews IS '商品评价�?; - --- ===================================================================================== --- 10. 用户行为�? --- ===================================================================================== - --- 用户收藏�? -CREATE TABLE public.ml_user_favorites ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - target_type INTEGER NOT NULL, -- 1:商品 2:店铺 - target_id UUID NOT NULL, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - UNIQUE(user_id, target_type, target_id), - CONSTRAINT chk_ml_favorite_type CHECK (target_type IN (1,2)) -); - -COMMENT ON TABLE public.ml_user_favorites IS '用户收藏�?; - --- 用户浏览历史�? -CREATE TABLE public.ml_browse_history ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - product_id UUID NOT NULL REFERENCES public.ml_products(id) ON DELETE CASCADE, - browse_duration INTEGER DEFAULT 0, -- 浏览时长(�? - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - UNIQUE(user_id, product_id) -); - -COMMENT ON TABLE public.ml_browse_history IS '用户浏览历史�?; - --- 搜索记录�? -CREATE TABLE public.ml_search_history ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID REFERENCES public.ak_users(id) ON DELETE CASCADE, - keyword VARCHAR(200) NOT NULL, - result_count INTEGER DEFAULT 0, - ip_address INET, - user_agent TEXT, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -COMMENT ON TABLE public.ml_search_history IS '搜索记录�?; - --- ===================================================================================== --- 11. 系统配置�? --- ===================================================================================== - --- 系统配置�? -CREATE TABLE public.ml_system_configs ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - config_key VARCHAR(100) UNIQUE NOT NULL, - config_value JSONB, - description TEXT, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -COMMENT ON TABLE public.ml_system_configs IS '系统配置�?; - --- 地区�?如果需要独立的地区管理) -CREATE TABLE public.ml_regions ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - parent_id UUID REFERENCES public.ml_regions(id), - name VARCHAR(100) NOT NULL, - code VARCHAR(20), - level INTEGER NOT NULL, -- 1:省份 2:城市 3:区县 4:街道 - sort_order INTEGER DEFAULT 0, - is_active BOOLEAN DEFAULT TRUE, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -COMMENT ON TABLE public.ml_regions IS '地区�?; - --- ===================================================================================== --- 12. 创建索引 --- ===================================================================================== - --- 用户扩展表索�? -CREATE INDEX idx_ml_user_profiles_user_id ON public.ml_user_profiles(user_id); - -CREATE INDEX idx_ml_user_profiles_status ON public.ml_user_profiles(status); - --- 分类表索引 -CREATE INDEX idx_ml_categories_cid ON public.ml_categories(cid); -CREATE INDEX idx_ml_categories_parent ON public.ml_categories(parent_id); -CREATE INDEX idx_ml_categories_slug ON public.ml_categories(slug); -CREATE INDEX idx_ml_categories_level ON public.ml_categories(level, sort_order); - --- 品牌表索引 -CREATE INDEX idx_ml_brands_cid ON public.ml_brands(cid); -CREATE INDEX idx_ml_brands_name ON public.ml_brands(name); - --- 地址表索�? -CREATE INDEX idx_ml_user_addresses_user_id ON public.ml_user_addresses(user_id); -CREATE INDEX idx_ml_user_addresses_default ON public.ml_user_addresses(user_id, is_default); -CREATE INDEX idx_ml_user_addresses_location ON public.ml_user_addresses(city, district); - --- 商品表索�? -CREATE INDEX idx_ml_products_cid ON public.ml_products(cid); -CREATE INDEX idx_ml_products_merchant ON public.ml_products(merchant_id, status); -CREATE INDEX idx_ml_products_category ON public.ml_products(category_id, status); -CREATE INDEX idx_ml_products_status ON public.ml_products(status, created_at DESC); -CREATE INDEX idx_ml_products_featured ON public.ml_products(is_featured, status); -CREATE INDEX idx_ml_products_price ON public.ml_products(base_price); -CREATE INDEX idx_ml_products_rating ON public.ml_products(rating_avg DESC, rating_count DESC); -CREATE INDEX idx_ml_products_sale_count ON public.ml_products(sale_count DESC); -CREATE INDEX idx_ml_products_tags ON public.ml_products USING GIN(tags); -CREATE INDEX idx_ml_products_slug ON public.ml_products(slug); - --- 店铺表索引 -CREATE INDEX idx_ml_shops_cid ON public.ml_shops(cid); -CREATE INDEX idx_ml_shops_merchant ON public.ml_shops(merchant_id); - --- SKU表索�? -CREATE INDEX idx_ml_product_skus_product ON public.ml_product_skus(product_id); -CREATE INDEX idx_ml_product_skus_code ON public.ml_product_skus(sku_code); - --- 订单表索�? -CREATE INDEX idx_ml_orders_cid ON public.ml_orders(cid); -CREATE INDEX idx_ml_orders_user ON public.ml_orders(user_id, created_at DESC); -CREATE INDEX idx_ml_orders_merchant ON public.ml_orders(merchant_id, created_at DESC); -CREATE INDEX idx_ml_orders_status ON public.ml_orders(order_status, created_at DESC); -CREATE INDEX idx_ml_orders_no ON public.ml_orders(order_no); - --- 订单商品表索�? -CREATE INDEX idx_ml_order_items_order ON public.ml_order_items(order_id); -CREATE INDEX idx_ml_order_items_product ON public.ml_order_items(product_id); - --- 购物车表索引 -CREATE INDEX idx_ml_shopping_cart_user ON public.ml_shopping_cart(user_id); - --- 优惠券模板表索引 -CREATE INDEX idx_ml_coupon_templates_cid ON public.ml_coupon_templates(cid); -CREATE INDEX idx_ml_coupon_templates_merchant ON public.ml_coupon_templates(merchant_id); - --- 优惠券表索引 -CREATE INDEX idx_ml_user_coupons_user ON public.ml_user_coupons(user_id, status); -CREATE INDEX idx_ml_user_coupons_code ON public.ml_user_coupons(coupon_code); - --- 收藏表索�? -CREATE INDEX idx_ml_user_favorites_user ON public.ml_user_favorites(user_id, target_type); -CREATE INDEX idx_ml_user_favorites_target ON public.ml_user_favorites(target_type, target_id); - --- 浏览历史索引 -CREATE INDEX idx_ml_browse_history_user ON public.ml_browse_history(user_id, created_at DESC); -CREATE INDEX idx_ml_browse_history_product ON public.ml_browse_history(product_id); - --- ===================================================================================== --- 13. 触发器函�? --- ===================================================================================== - --- 自动更新 updated_at 字段的函�? -CREATE OR REPLACE FUNCTION public.update_updated_at_column() -RETURNS TRIGGER AS $$ -BEGIN - NEW.updated_at = NOW(); - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - --- 为需要的表创�?updated_at 触发�? -CREATE TRIGGER trigger_ml_user_profiles_updated_at - BEFORE UPDATE ON public.ml_user_profiles - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - -CREATE TRIGGER trigger_ml_user_addresses_updated_at - BEFORE UPDATE ON public.ml_user_addresses - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - -CREATE TRIGGER trigger_ml_products_updated_at - BEFORE UPDATE ON public.ml_products - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - -CREATE TRIGGER trigger_ml_product_skus_updated_at - BEFORE UPDATE ON public.ml_product_skus - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - -CREATE TRIGGER trigger_ml_shops_updated_at - BEFORE UPDATE ON public.ml_shops - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - -CREATE TRIGGER trigger_ml_orders_updated_at - BEFORE UPDATE ON public.ml_orders - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - -CREATE TRIGGER trigger_ml_shopping_cart_updated_at - BEFORE UPDATE ON public.ml_shopping_cart - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - --- 确保每个用户只有一个默认地址的触发器 -CREATE OR REPLACE FUNCTION public.ensure_single_default_address() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.is_default = TRUE THEN - UPDATE public.ml_user_addresses - SET is_default = FALSE - WHERE user_id = NEW.user_id AND id != NEW.id; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE TRIGGER trigger_ml_single_default_address - BEFORE INSERT OR UPDATE ON public.ml_user_addresses - FOR EACH ROW EXECUTE FUNCTION public.ensure_single_default_address(); - --- 商品库存更新触发�? -CREATE OR REPLACE FUNCTION public.update_product_stock() -RETURNS TRIGGER AS $$ -BEGIN - -- 更新商品总库�? - UPDATE public.ml_products - SET - total_stock = ( - SELECT COALESCE(SUM(stock), 0) - FROM public.ml_product_skus - WHERE product_id = NEW.product_id AND status = 1 - ), - available_stock = ( - SELECT COALESCE(SUM(stock), 0) - FROM public.ml_product_skus - WHERE product_id = NEW.product_id AND status = 1 - ) - WHERE id = NEW.product_id; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE TRIGGER trigger_ml_update_product_stock - AFTER INSERT OR UPDATE OR DELETE ON public.ml_product_skus - FOR EACH ROW EXECUTE FUNCTION public.update_product_stock(); - --- 订单状态变更时的处�? -CREATE OR REPLACE FUNCTION public.handle_order_status_change() -RETURNS TRIGGER AS $$ -BEGIN - -- 如果订单状态变为已付款 - IF NEW.order_status = 2 AND OLD.order_status = 1 THEN - NEW.paid_at = NOW(); - END IF; - - -- 如果订单状态变为已发货 - IF NEW.order_status = 3 AND OLD.order_status = 2 THEN - NEW.shipped_at = NOW(); - END IF; - - -- 如果订单状态变为已完成 - IF NEW.order_status = 4 AND OLD.order_status = 3 THEN - NEW.delivered_at = NOW(); - NEW.completed_at = NOW(); - - -- 更新商品销�? - UPDATE public.ml_products - SET sale_count = sale_count + ( - SELECT SUM(quantity) - FROM public.ml_order_items - WHERE order_id = NEW.id - ) - WHERE id IN ( - SELECT product_id - FROM public.ml_order_items - WHERE order_id = NEW.id - ); - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE TRIGGER trigger_ml_order_status_change - BEFORE UPDATE ON public.ml_orders - FOR EACH ROW EXECUTE FUNCTION public.handle_order_status_change(); - --- ===================================================================================== --- 14. 实用函数 --- ===================================================================================== - --- 生成订单号的函数 -CREATE OR REPLACE FUNCTION public.generate_order_no() -RETURNS TEXT AS $$ -DECLARE - order_no TEXT; -BEGIN - order_no := 'ML' || TO_CHAR(NOW(), 'YYYYMMDD') || LPAD(NEXTVAL('ml_order_seq')::TEXT, 6, '0'); - RETURN order_no; -END; -$$ LANGUAGE plpgsql; - --- 创建订单序列 -CREATE SEQUENCE IF NOT EXISTS public.ml_order_seq START 1; - --- 生成优惠券码的函�? -CREATE OR REPLACE FUNCTION public.generate_coupon_code() -RETURNS TEXT AS $$ -DECLARE - code TEXT; - chars TEXT := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - result TEXT := ''; - i INTEGER; -BEGIN - FOR i IN 1..8 LOOP - result := result || substr(chars, (random() * length(chars))::integer + 1, 1); - END LOOP; - RETURN 'CP' || result; -END; -$$ LANGUAGE plpgsql; - --- 获取用户默认地址 -CREATE OR REPLACE FUNCTION public.get_user_default_address(p_user_id UUID) -RETURNS TABLE ( - id UUID, - receiver_name VARCHAR, - receiver_phone VARCHAR, - full_address TEXT, - latitude DECIMAL, - longitude DECIMAL -) AS $$ -BEGIN - RETURN QUERY - SELECT - a.id, - a.receiver_name, - a.receiver_phone, - (a.province || ' ' || a.city || ' ' || a.district || ' ' || a.address_detail) as full_address, - a.latitude, - a.longitude - FROM public.ml_user_addresses a - WHERE a.user_id = p_user_id AND a.is_default = TRUE AND a.status = 1 - LIMIT 1; -END; -$$ LANGUAGE plpgsql; - --- 检查用户是否为认证商家 -CREATE OR REPLACE FUNCTION public.is_verified_merchant(p_user_id UUID) -RETURNS BOOLEAN AS $$ -DECLARE - result BOOLEAN := FALSE; -BEGIN - SELECT (u.role = 'merchant' AND p.verification_status = 1) INTO result - FROM public.ml_user_profiles p - JOIN public.ak_users u ON p.user_id = u.id - WHERE p.user_id = p_user_id; - - RETURN COALESCE(result, FALSE); -END; -$$ LANGUAGE plpgsql; - --- 计算购物车总金�? -CREATE OR REPLACE FUNCTION public.calculate_cart_total(p_user_id UUID) -RETURNS DECIMAL AS $$ -DECLARE - total_amount DECIMAL := 0; -BEGIN - SELECT COALESCE(SUM(s.price * c.quantity), 0) INTO total_amount - FROM public.ml_shopping_cart c - LEFT JOIN public.ml_product_skus s ON c.sku_id = s.id - LEFT JOIN public.ml_products p ON c.product_id = p.id - WHERE c.user_id = p_user_id - AND c.selected = TRUE - AND p.status = 1 - AND (s.id IS NULL OR s.status = 1); - - RETURN total_amount; -END; -$$ LANGUAGE plpgsql; - --- 获取商品可用库存 -CREATE OR REPLACE FUNCTION public.get_product_available_stock(p_product_id UUID, p_sku_id UUID DEFAULT NULL) -RETURNS INTEGER AS $$ -DECLARE - stock_count INTEGER := 0; -BEGIN - IF p_sku_id IS NOT NULL THEN - -- 获取特定SKU库存 - SELECT COALESCE(stock, 0) INTO stock_count - FROM public.ml_product_skus - WHERE id = p_sku_id AND product_id = p_product_id AND status = 1; - ELSE - -- 获取商品总库�? - SELECT COALESCE(available_stock, 0) INTO stock_count - FROM public.ml_products - WHERE id = p_product_id AND status = 1; - END IF; - - RETURN stock_count; -END; -$$ LANGUAGE plpgsql; - --- ===================================================================================== --- 15. 创建视图 --- ===================================================================================== - --- 商城用户完整信息视图 -CREATE OR REPLACE VIEW public.ml_users_view AS -SELECT - u.id, - u.username, - u.email, - u.phone, - u.avatar_url, - u.gender, - u.birthday, - u.bio, - u.created_at as user_created_at, - u.updated_at as user_updated_at, - u.role, - p.status, - p.real_name, - p.credit_score, - p.verification_status, - p.created_at as profile_created_at, - p.updated_at as profile_updated_at, - CASE - WHEN u.role = 'customer' THEN '消费者' - WHEN u.role = 'merchant' THEN '商家' - WHEN u.role = 'delivery' THEN '配送员' - WHEN u.role = 'service' THEN '客服' - WHEN u.role = 'admin' THEN '管理员' - ELSE '未知' - END as role_name -FROM public.ak_users u -LEFT JOIN public.ml_user_profiles p ON u.id = p.user_id; - -COMMENT ON VIEW public.ml_users_view IS '商城用户完整信息视图'; - --- 商品详情视图 -CREATE OR REPLACE VIEW public.ml_products_detail_view AS -SELECT - p.*, - c.cid as category_cid, - c.name as category_name, - c.path as category_path, - b.cid as brand_cid, - b.name as brand_name, - s.cid as shop_cid, - s.shop_name, - u.username as merchant_name, - CASE - WHEN p.status = 1 THEN '上架' - WHEN p.status = 2 THEN '下架' - WHEN p.status = 3 THEN '草稿' - WHEN p.status = 4 THEN '删除' - ELSE '未知' - END as status_name -FROM public.ml_products p -LEFT JOIN public.ml_categories c ON p.category_id = c.id -LEFT JOIN public.ml_brands b ON p.brand_id = b.id -LEFT JOIN public.ml_shops s ON p.merchant_id = s.merchant_id -LEFT JOIN public.ak_users u ON p.merchant_id = u.id; - -COMMENT ON VIEW public.ml_products_detail_view IS '商品详情视图'; - --- 订单详情视图 -CREATE OR REPLACE VIEW public.ml_orders_detail_view AS -SELECT - o.*, - u.username as customer_name, - u.phone as customer_phone, - m.username as merchant_name, - s.shop_name, - CASE - WHEN o.order_status = 1 THEN '待付�? - WHEN o.order_status = 2 THEN '待发�? - WHEN o.order_status = 3 THEN '待收�? - WHEN o.order_status = 4 THEN '已完�? - WHEN o.order_status = 5 THEN '已取�? - WHEN o.order_status = 6 THEN '退款中' - WHEN o.order_status = 7 THEN '已退�? - ELSE '未知' - END as order_status_name, - CASE - WHEN o.payment_status = 1 THEN '未付�? - WHEN o.payment_status = 2 THEN '已付�? - WHEN o.payment_status = 3 THEN '部分退�? - WHEN o.payment_status = 4 THEN '全额退�? - ELSE '未知' - END as payment_status_name -FROM public.ml_orders o -LEFT JOIN public.ak_users u ON o.user_id = u.id -LEFT JOIN public.ak_users m ON o.merchant_id = m.id -LEFT JOIN public.ml_shops s ON o.merchant_id = s.merchant_id; - -COMMENT ON VIEW public.ml_orders_detail_view IS '订单详情视图'; - --- ===================================================================================== --- 16. RLS (Row Level Security) 策略 --- ===================================================================================== - --- 启用 RLS -ALTER TABLE public.ml_user_profiles ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ml_user_addresses ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ml_shopping_cart ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ml_user_favorites ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ml_browse_history ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ml_user_coupons ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ml_orders ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ml_products ENABLE ROW LEVEL SECURITY; - --- 用户只能访问自己的数�? -CREATE POLICY ml_user_profiles_select_policy ON public.ml_user_profiles - FOR SELECT USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_profiles_insert_policy ON public.ml_user_profiles - FOR INSERT WITH CHECK ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_profiles_update_policy ON public.ml_user_profiles - FOR UPDATE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_profiles_delete_policy ON public.ml_user_profiles - FOR DELETE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_addresses_select_policy ON public.ml_user_addresses - FOR SELECT USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_addresses_insert_policy ON public.ml_user_addresses - FOR INSERT WITH CHECK ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_addresses_update_policy ON public.ml_user_addresses - FOR UPDATE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_addresses_delete_policy ON public.ml_user_addresses - FOR DELETE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_shopping_cart_select_policy ON public.ml_shopping_cart - FOR SELECT USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_shopping_cart_insert_policy ON public.ml_shopping_cart - FOR INSERT WITH CHECK ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_shopping_cart_update_policy ON public.ml_shopping_cart - FOR UPDATE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_shopping_cart_delete_policy ON public.ml_shopping_cart - FOR DELETE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_favorites_select_policy ON public.ml_user_favorites - FOR SELECT USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_favorites_insert_policy ON public.ml_user_favorites - FOR INSERT WITH CHECK ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_favorites_update_policy ON public.ml_user_favorites - FOR UPDATE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_favorites_delete_policy ON public.ml_user_favorites - FOR DELETE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_browse_history_select_policy ON public.ml_browse_history - FOR SELECT USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_browse_history_insert_policy ON public.ml_browse_history - FOR INSERT WITH CHECK ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_browse_history_update_policy ON public.ml_browse_history - FOR UPDATE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_browse_history_delete_policy ON public.ml_browse_history - FOR DELETE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_coupons_select_policy ON public.ml_user_coupons - FOR SELECT USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_coupons_insert_policy ON public.ml_user_coupons - FOR INSERT WITH CHECK ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_coupons_update_policy ON public.ml_user_coupons - FOR UPDATE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - -CREATE POLICY ml_user_coupons_delete_policy ON public.ml_user_coupons - FOR DELETE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - --- 订单策略:用户可以查看自己的订单,商家可以查看自己店铺的订单 -CREATE POLICY ml_orders_select_policy ON public.ml_orders - FOR SELECT USING ( - auth.uid() IN ( - SELECT auth_id FROM public.ak_users WHERE id IN (user_id, merchant_id) - ) - ); - -CREATE POLICY ml_orders_insert_policy ON public.ml_orders - FOR INSERT WITH CHECK ( - auth.uid() IN ( - SELECT auth_id FROM public.ak_users WHERE id IN (user_id, merchant_id) - ) - ); - -CREATE POLICY ml_orders_update_policy ON public.ml_orders - FOR UPDATE USING ( - auth.uid() IN ( - SELECT auth_id FROM public.ak_users WHERE id IN (user_id, merchant_id) - ) - ); - -CREATE POLICY ml_orders_delete_policy ON public.ml_orders - FOR DELETE USING ( - auth.uid() IN ( - SELECT auth_id FROM public.ak_users WHERE id IN (user_id, merchant_id) - ) - ); - --- 商品策略:所有人可以查看上架商品,商家只能管理自己的商品 -CREATE POLICY ml_products_select_policy ON public.ml_products - FOR SELECT USING (status = 1); - -CREATE POLICY ml_products_insert_policy ON public.ml_products - FOR INSERT WITH CHECK ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = merchant_id) - ); - -CREATE POLICY ml_products_update_policy ON public.ml_products - FOR UPDATE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = merchant_id) - ); - -CREATE POLICY ml_products_delete_policy ON public.ml_products - FOR DELETE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = merchant_id) - ); - --- ===================================================================================== --- 17. 初始化数�? --- ===================================================================================== - --- 插入系统配置 -INSERT INTO public.ml_system_configs (config_key, config_value, description) VALUES -('shipping_fee', '{"default": 10, "free_threshold": 88}', '配送费配置'), -('platform_commission', '{"rate": 0.05}', '平台佣金配置'), -('coupon_settings', '{"max_per_user": 10}', '优惠券设�?), -('order_auto_confirm_days', '7', '订单自动确认天数'); - --- 插入默认分类 -INSERT INTO public.ml_categories (id, name, slug, level, path) VALUES -(uuid_generate_v4(), '数码电器', 'digital', 1, ARRAY['数码电器']), -(uuid_generate_v4(), '服装鞋帽', 'fashion', 1, ARRAY['服装鞋帽']), -(uuid_generate_v4(), '家居用品', 'home', 1, ARRAY['家居用品']), -(uuid_generate_v4(), '食品饮料', 'food', 1, ARRAY['食品饮料']), -(uuid_generate_v4(), '美妆护肤', 'beauty', 1, ARRAY['美妆护肤']); - --- 为现有 ak_users 用户创建默认商城档案 -INSERT INTO public.ml_user_profiles (user_id, status) -SELECT - id, - 1 -- 默认状态正常 -FROM public.ak_users -WHERE id NOT IN (SELECT user_id FROM public.ml_user_profiles WHERE user_id IS NOT NULL); - --- ===================================================================================== --- 18. 完成提示 --- ===================================================================================== - -DO $$ -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '商城数据库创建完成!'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '已创建表数量: 20+ 张表'; - RAISE NOTICE '已创建索�? 30+ 个索�?; - RAISE NOTICE '已创建触发器: 8 个触发器'; - RAISE NOTICE '已创建函�? 10+ 个函�?; - RAISE NOTICE '已创建视�? 3 个视�?; - RAISE NOTICE '已设置RLS策略: 多个策略'; - RAISE NOTICE '已为现有用户创建默认档案'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '表名前缀: ml_'; - RAISE NOTICE '复用�? ak_users'; - RAISE NOTICE '兼容: Supabase'; - RAISE NOTICE '======================================================='; -END $$; - --- ===================================================================================== --- SEO 优化相关函数 --- ===================================================================================== - --- 根据 cid 获取商品信息 (SEO 友好) -CREATE OR REPLACE FUNCTION public.get_product_by_cid(p_cid INTEGER) -RETURNS TABLE ( - id UUID, - cid INTEGER, - name VARCHAR, - slug VARCHAR, - description TEXT, - main_image_url TEXT, - base_price DECIMAL, - rating_avg DECIMAL, - sale_count INTEGER, - category_name VARCHAR, - brand_name VARCHAR, - shop_name VARCHAR -) AS $$ -BEGIN - RETURN QUERY - SELECT - p.id, - p.cid, - p.name, - p.slug, - p.description, - p.main_image_url, - p.base_price, - p.rating_avg, - p.sale_count, - c.name as category_name, - b.name as brand_name, - s.shop_name - FROM public.ml_products p - LEFT JOIN public.ml_categories c ON p.category_id = c.id - LEFT JOIN public.ml_brands b ON p.brand_id = b.id - LEFT JOIN public.ml_shops s ON p.merchant_id = s.merchant_id - WHERE p.cid = p_cid AND p.status = 1; -END; -$$ LANGUAGE plpgsql; - --- 根据 cid 获取分类信息 (SEO 友好) -CREATE OR REPLACE FUNCTION public.get_category_by_cid(p_cid INTEGER) -RETURNS TABLE ( - id UUID, - cid INTEGER, - name VARCHAR, - slug VARCHAR, - description TEXT, - icon_url TEXT, - path TEXT[] -) AS $$ -BEGIN - RETURN QUERY - SELECT - c.id, - c.cid, - c.name, - c.slug, - c.description, - c.icon_url, - c.path - FROM public.ml_categories c - WHERE c.cid = p_cid AND c.is_active = TRUE; -END; -$$ LANGUAGE plpgsql; - --- 根据 cid 获取品牌信息 (SEO 友好) -CREATE OR REPLACE FUNCTION public.get_brand_by_cid(p_cid INTEGER) -RETURNS TABLE ( - id UUID, - cid INTEGER, - name VARCHAR, - logo_url TEXT, - description TEXT -) AS $$ -BEGIN - RETURN QUERY - SELECT - b.id, - b.cid, - b.name, - b.logo_url, - b.description - FROM public.ml_brands b - WHERE b.cid = p_cid AND b.is_active = TRUE; -END; -$$ LANGUAGE plpgsql; - --- 根据 cid 获取店铺信息 (SEO 友好) -CREATE OR REPLACE FUNCTION public.get_shop_by_cid(p_cid INTEGER) -RETURNS TABLE ( - id UUID, - cid INTEGER, - shop_name VARCHAR, - description TEXT, - shop_logo TEXT, - rating_avg DECIMAL, - product_count INTEGER -) AS $$ -BEGIN - RETURN QUERY - SELECT - s.id, - s.cid, - s.shop_name, - s.description, - s.shop_logo, - s.rating_avg, - s.product_count - FROM public.ml_shops s - WHERE s.cid = p_cid AND s.status = 1; -END; -$$ LANGUAGE plpgsql; - --- 生成 SEO 友好的 URL 路径 -CREATE OR REPLACE FUNCTION public.generate_seo_url( - p_type VARCHAR, -- 'product', 'category', 'brand', 'shop' - p_cid INTEGER, - p_slug VARCHAR DEFAULT NULL -) -RETURNS TEXT AS $$ -DECLARE - url_path TEXT; -BEGIN - CASE p_type - WHEN 'product' THEN - url_path := '/product/' || p_cid; - IF p_slug IS NOT NULL THEN - url_path := url_path || '/' || p_slug; - END IF; - WHEN 'category' THEN - url_path := '/category/' || p_cid; - IF p_slug IS NOT NULL THEN - url_path := url_path || '/' || p_slug; - END IF; - WHEN 'brand' THEN - url_path := '/brand/' || p_cid; - IF p_slug IS NOT NULL THEN - url_path := url_path || '/' || p_slug; - END IF; - WHEN 'shop' THEN - url_path := '/shop/' || p_cid; - IF p_slug IS NOT NULL THEN - url_path := url_path || '/' || p_slug; - END IF; - ELSE - url_path := '/' || p_type || '/' || p_cid; - END CASE; - - RETURN url_path; -END; -$$ LANGUAGE plpgsql; - --- 批量更新 slug 字段(用于现有数据) -CREATE OR REPLACE FUNCTION public.update_seo_slugs() -RETURNS VOID AS $$ -BEGIN - -- 更新商品 slug - UPDATE public.ml_products - SET slug = LOWER(REGEXP_REPLACE(name, '[^a-zA-Z0-9\u4e00-\u9fa5]+', '-', 'g')) - WHERE slug IS NULL OR slug = ''; - - -- 更新分类 slug - UPDATE public.ml_categories - SET slug = LOWER(REGEXP_REPLACE(name, '[^a-zA-Z0-9\u4e00-\u9fa5]+', '-', 'g')) - WHERE slug IS NULL OR slug = ''; - - RAISE NOTICE 'SEO slugs updated successfully'; -END; -$$ LANGUAGE plpgsql; diff --git a/doc_mall/database/create_supabase_auth_users.sql b/doc_mall/database/create_supabase_auth_users.sql deleted file mode 100644 index e69de29b..00000000 diff --git a/doc_mall/database/mall_alter_upgrade.sql b/doc_mall/database/mall_alter_upgrade.sql deleted file mode 100644 index 6b82771f..00000000 --- a/doc_mall/database/mall_alter_upgrade.sql +++ /dev/null @@ -1,692 +0,0 @@ --- ===================================================================================== --- 商城系统增量升级脚本 (ALTER方式) --- 用于在现有数据库基础上添加商城功能 --- 表名前缀: ml_ (mall) --- 复用表: ak_users (用户主表) --- 兼容: PostgreSQL + Supabase --- ===================================================================================== - --- ===================================================================================== --- 1. 启用必要的扩展 --- ===================================================================================== - -CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; -CREATE EXTENSION IF NOT EXISTS "pg_stat_statements"; -CREATE EXTENSION IF NOT EXISTS "btree_gin"; - --- ===================================================================================== --- 2. 检查并创建商城核心表(如果不存在) --- ===================================================================================== - --- 商城用户扩展信息表 -CREATE TABLE IF NOT EXISTS public.ml_user_profiles ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID UNIQUE NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - user_type INTEGER DEFAULT 1 NOT NULL, - status INTEGER DEFAULT 1 NOT NULL, - real_name VARCHAR(100), - id_card VARCHAR(32), - business_license VARCHAR(100), - credit_score INTEGER DEFAULT 100, - verification_status INTEGER DEFAULT 0, - verification_data JSONB DEFAULT '{}', - preferences JSONB DEFAULT '{}', - emergency_contact VARCHAR(200), - service_areas JSONB, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_user_type CHECK (user_type IN (1,2,3,4,5)), - CONSTRAINT chk_ml_user_status CHECK (status IN (1,2,3,4)), - CONSTRAINT chk_ml_verification_status CHECK (verification_status IN (0,1,2)), - CONSTRAINT chk_ml_credit_score CHECK (credit_score >= 0 AND credit_score <= 1000) -); - --- 用户地址表 -CREATE TABLE IF NOT EXISTS public.ml_user_addresses ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - receiver_name VARCHAR(100) NOT NULL, - receiver_phone VARCHAR(32) NOT NULL, - province VARCHAR(100) NOT NULL, - city VARCHAR(100) NOT NULL, - district VARCHAR(100) NOT NULL, - street VARCHAR(200), - address_detail TEXT NOT NULL, - postal_code VARCHAR(16), - is_default BOOLEAN DEFAULT FALSE, - label VARCHAR(50), - latitude DECIMAL(10,7), - longitude DECIMAL(10,7), - delivery_instructions TEXT, - business_hours VARCHAR(100), - status INTEGER DEFAULT 1, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_address_status CHECK (status IN (1,2)) -); - --- 商品分类表 -CREATE TABLE IF NOT EXISTS public.ml_categories ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, - parent_id UUID REFERENCES public.ml_categories(id), - name VARCHAR(200) NOT NULL, - slug VARCHAR(200) UNIQUE, - description TEXT, - icon_url TEXT, - banner_url TEXT, - sort_order INTEGER DEFAULT 0, - level INTEGER DEFAULT 1, - path TEXT[], - is_active BOOLEAN DEFAULT TRUE, - seo_title VARCHAR(200), - seo_description VARCHAR(500), - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - --- 品牌表 -CREATE TABLE IF NOT EXISTS public.ml_brands ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, - name VARCHAR(200) NOT NULL, - logo_url TEXT, - description TEXT, - website VARCHAR(500), - is_active BOOLEAN DEFAULT TRUE, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - --- 商品表 -CREATE TABLE IF NOT EXISTS public.ml_products ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, - merchant_id UUID NOT NULL REFERENCES public.ak_users(id), - category_id UUID NOT NULL REFERENCES public.ml_categories(id), - brand_id UUID REFERENCES public.ml_brands(id), - product_code VARCHAR(100) UNIQUE NOT NULL, - name VARCHAR(500) NOT NULL, - subtitle VARCHAR(1000), - description TEXT, - main_image_url TEXT, - image_urls JSONB DEFAULT '[]', - video_urls JSONB DEFAULT '[]', - base_price DECIMAL(12,2) NOT NULL CHECK (base_price >= 0), - market_price DECIMAL(12,2), - cost_price DECIMAL(12,2), - total_stock INTEGER DEFAULT 0 CHECK (total_stock >= 0), - available_stock INTEGER DEFAULT 0 CHECK (available_stock >= 0), - min_order_qty INTEGER DEFAULT 1 CHECK (min_order_qty > 0), - max_order_qty INTEGER, - weight DECIMAL(10,3), - dimensions JSONB, - status INTEGER DEFAULT 1, - is_featured BOOLEAN DEFAULT FALSE, - is_new BOOLEAN DEFAULT FALSE, - is_hot BOOLEAN DEFAULT FALSE, - view_count INTEGER DEFAULT 0, - sale_count INTEGER DEFAULT 0, - favorite_count INTEGER DEFAULT 0, - rating_avg DECIMAL(3,2) DEFAULT 0.00 CHECK (rating_avg >= 0 AND rating_avg <= 5), - rating_count INTEGER DEFAULT 0, - seo_title VARCHAR(200), - seo_description VARCHAR(500), - seo_keywords TEXT[], - slug VARCHAR(200) UNIQUE, - tags TEXT[], - attributes JSONB DEFAULT '{}', - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - published_at TIMESTAMP WITH TIME ZONE, - - CONSTRAINT chk_ml_product_status CHECK (status IN (1,2,3,4)) -); - --- 商品SKU表 -CREATE TABLE IF NOT EXISTS public.ml_product_skus ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - product_id UUID NOT NULL REFERENCES public.ml_products(id) ON DELETE CASCADE, - sku_code VARCHAR(100) UNIQUE NOT NULL, - specifications JSONB DEFAULT '{}', - price DECIMAL(12,2) NOT NULL CHECK (price >= 0), - market_price DECIMAL(12,2), - cost_price DECIMAL(12,2), - stock INTEGER DEFAULT 0 CHECK (stock >= 0), - warning_stock INTEGER DEFAULT 10, - image_url TEXT, - weight DECIMAL(10,3), - status INTEGER DEFAULT 1, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_sku_status CHECK (status IN (1,2)) -); - --- 店铺信息表 -CREATE TABLE IF NOT EXISTS public.ml_shops ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, - merchant_id UUID UNIQUE NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - shop_name VARCHAR(200) NOT NULL, - shop_logo TEXT, - shop_banner TEXT, - description TEXT, - business_license VARCHAR(100), - contact_name VARCHAR(100), - contact_phone VARCHAR(32), - contact_email VARCHAR(200), - address JSONB, - business_hours JSONB, - status INTEGER DEFAULT 1, - product_count INTEGER DEFAULT 0, - order_count INTEGER DEFAULT 0, - rating_avg DECIMAL(3,2) DEFAULT 0.00, - rating_count INTEGER DEFAULT 0, - verified_at TIMESTAMP WITH TIME ZONE, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_shop_status CHECK (status IN (1,2,3)) -); - --- 订单表 -CREATE TABLE IF NOT EXISTS public.ml_orders ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, - order_no VARCHAR(50) UNIQUE NOT NULL, - user_id UUID NOT NULL REFERENCES public.ak_users(id), - merchant_id UUID NOT NULL REFERENCES public.ak_users(id), - product_amount DECIMAL(12,2) NOT NULL DEFAULT 0, - discount_amount DECIMAL(12,2) DEFAULT 0, - shipping_fee DECIMAL(12,2) DEFAULT 0, - total_amount DECIMAL(12,2) NOT NULL, - paid_amount DECIMAL(12,2) DEFAULT 0, - shipping_address JSONB NOT NULL, - order_status INTEGER DEFAULT 1, - payment_status INTEGER DEFAULT 1, - shipping_status INTEGER DEFAULT 1, - paid_at TIMESTAMP WITH TIME ZONE, - shipped_at TIMESTAMP WITH TIME ZONE, - delivered_at TIMESTAMP WITH TIME ZONE, - completed_at TIMESTAMP WITH TIME ZONE, - remark TEXT, - merchant_memo TEXT, - cancel_reason TEXT, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_order_status CHECK (order_status IN (1,2,3,4,5,6,7)), - CONSTRAINT chk_ml_payment_status CHECK (payment_status IN (1,2,3,4)), - CONSTRAINT chk_ml_shipping_status CHECK (shipping_status IN (1,2,3,4)) -); - --- 购物车表 -CREATE TABLE IF NOT EXISTS public.ml_shopping_cart ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - product_id UUID NOT NULL REFERENCES public.ml_products(id) ON DELETE CASCADE, - sku_id UUID REFERENCES public.ml_product_skus(id) ON DELETE CASCADE, - quantity INTEGER NOT NULL CHECK (quantity > 0), - selected BOOLEAN DEFAULT TRUE, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - UNIQUE(user_id, product_id, sku_id) -); - --- ===================================================================================== --- 3. ALTER 语句:为现有表添加商城相关字段 --- ===================================================================================== - --- 为 ak_users 表添加商城相关字段(如果不存在) -DO $$ -BEGIN - -- 添加商城相关字段 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'mall_status') THEN - ALTER TABLE public.ak_users ADD COLUMN mall_status INTEGER DEFAULT 1; -- 1:正常 2:禁用 - END IF; - - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'mall_type') THEN - ALTER TABLE public.ak_users ADD COLUMN mall_type INTEGER DEFAULT 1; -- 1:消费者 2:商家 - END IF; - - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'last_login_ip') THEN - ALTER TABLE public.ak_users ADD COLUMN last_login_ip INET; - END IF; - - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'total_orders') THEN - ALTER TABLE public.ak_users ADD COLUMN total_orders INTEGER DEFAULT 0; - END IF; - - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'total_spent') THEN - ALTER TABLE public.ak_users ADD COLUMN total_spent DECIMAL(12,2) DEFAULT 0.00; - END IF; - - RAISE NOTICE 'ak_users 表字段添加完成'; -END $$; - --- ===================================================================================== --- 4. 创建索引 --- ===================================================================================== - --- 用户扩展表索引 -CREATE INDEX IF NOT EXISTS idx_ml_user_profiles_user_id ON public.ml_user_profiles(user_id); -CREATE INDEX IF NOT EXISTS idx_ml_user_profiles_type ON public.ml_user_profiles(user_type); -CREATE INDEX IF NOT EXISTS idx_ml_user_profiles_status ON public.ml_user_profiles(status); - --- 分类表索引 -CREATE INDEX IF NOT EXISTS idx_ml_categories_cid ON public.ml_categories(cid); -CREATE INDEX IF NOT EXISTS idx_ml_categories_parent ON public.ml_categories(parent_id); -CREATE INDEX IF NOT EXISTS idx_ml_categories_slug ON public.ml_categories(slug); -CREATE INDEX IF NOT EXISTS idx_ml_categories_level ON public.ml_categories(level, sort_order); - --- 品牌表索引 -CREATE INDEX IF NOT EXISTS idx_ml_brands_cid ON public.ml_brands(cid); -CREATE INDEX IF NOT EXISTS idx_ml_brands_name ON public.ml_brands(name); - --- 地址表索引 -CREATE INDEX IF NOT EXISTS idx_ml_user_addresses_user_id ON public.ml_user_addresses(user_id); -CREATE INDEX IF NOT EXISTS idx_ml_user_addresses_default ON public.ml_user_addresses(user_id, is_default); - --- 商品表索引 -CREATE INDEX IF NOT EXISTS idx_ml_products_cid ON public.ml_products(cid); -CREATE INDEX IF NOT EXISTS idx_ml_products_merchant ON public.ml_products(merchant_id, status); -CREATE INDEX IF NOT EXISTS idx_ml_products_category ON public.ml_products(category_id, status); -CREATE INDEX IF NOT EXISTS idx_ml_products_status ON public.ml_products(status, created_at DESC); -CREATE INDEX IF NOT EXISTS idx_ml_products_featured ON public.ml_products(is_featured, status); -CREATE INDEX IF NOT EXISTS idx_ml_products_price ON public.ml_products(base_price); -CREATE INDEX IF NOT EXISTS idx_ml_products_rating ON public.ml_products(rating_avg DESC, rating_count DESC); -CREATE INDEX IF NOT EXISTS idx_ml_products_tags ON public.ml_products USING GIN(tags); -CREATE INDEX IF NOT EXISTS idx_ml_products_slug ON public.ml_products(slug); - --- 店铺表索引 -CREATE INDEX IF NOT EXISTS idx_ml_shops_cid ON public.ml_shops(cid); -CREATE INDEX IF NOT EXISTS idx_ml_shops_merchant ON public.ml_shops(merchant_id); - --- SKU表索引 -CREATE INDEX IF NOT EXISTS idx_ml_product_skus_product ON public.ml_product_skus(product_id); -CREATE INDEX IF NOT EXISTS idx_ml_product_skus_code ON public.ml_product_skus(sku_code); - --- 订单表索引 -CREATE INDEX IF NOT EXISTS idx_ml_orders_cid ON public.ml_orders(cid); -CREATE INDEX IF NOT EXISTS idx_ml_orders_user ON public.ml_orders(user_id, created_at DESC); -CREATE INDEX IF NOT EXISTS idx_ml_orders_merchant ON public.ml_orders(merchant_id, created_at DESC); -CREATE INDEX IF NOT EXISTS idx_ml_orders_status ON public.ml_orders(order_status, created_at DESC); -CREATE INDEX IF NOT EXISTS idx_ml_orders_no ON public.ml_orders(order_no); - --- 购物车表索引 -CREATE INDEX IF NOT EXISTS idx_ml_shopping_cart_user ON public.ml_shopping_cart(user_id); - --- ak_users 表新增字段索引 -CREATE INDEX IF NOT EXISTS idx_ak_users_mall_status ON public.ak_users(mall_status); -CREATE INDEX IF NOT EXISTS idx_ak_users_mall_type ON public.ak_users(mall_type); -CREATE INDEX IF NOT EXISTS idx_ak_users_total_orders ON public.ak_users(total_orders DESC); - --- ===================================================================================== --- 5. 创建序列(如果不存在) --- ===================================================================================== - -CREATE SEQUENCE IF NOT EXISTS public.ml_order_seq START 1; - --- ===================================================================================== --- 6. 创建或替换触发器函数 --- ===================================================================================== - --- 自动更新 updated_at 字段的函数 -CREATE OR REPLACE FUNCTION public.update_updated_at_column() -RETURNS TRIGGER AS $$ -BEGIN - NEW.updated_at = NOW(); - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - --- 确保每个用户只有一个默认地址的触发器函数 -CREATE OR REPLACE FUNCTION public.ensure_single_default_address() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.is_default = TRUE THEN - UPDATE public.ml_user_addresses - SET is_default = FALSE - WHERE user_id = NEW.user_id AND id != NEW.id; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - --- 商品库存更新触发器函数 -CREATE OR REPLACE FUNCTION public.update_product_stock() -RETURNS TRIGGER AS $$ -BEGIN - -- 更新商品总库存 - UPDATE public.ml_products - SET - total_stock = ( - SELECT COALESCE(SUM(stock), 0) - FROM public.ml_product_skus - WHERE product_id = COALESCE(NEW.product_id, OLD.product_id) AND status = 1 - ), - available_stock = ( - SELECT COALESCE(SUM(stock), 0) - FROM public.ml_product_skus - WHERE product_id = COALESCE(NEW.product_id, OLD.product_id) AND status = 1 - ) - WHERE id = COALESCE(NEW.product_id, OLD.product_id); - - RETURN COALESCE(NEW, OLD); -END; -$$ LANGUAGE plpgsql; - --- 订单状态变更处理函数 -CREATE OR REPLACE FUNCTION public.handle_order_status_change() -RETURNS TRIGGER AS $$ -BEGIN - -- 如果订单状态变为已付款 - IF NEW.order_status = 2 AND OLD.order_status = 1 THEN - NEW.paid_at = NOW(); - END IF; - - -- 如果订单状态变为已发货 - IF NEW.order_status = 3 AND OLD.order_status = 2 THEN - NEW.shipped_at = NOW(); - END IF; - - -- 如果订单状态变为已完成 - IF NEW.order_status = 4 AND OLD.order_status = 3 THEN - NEW.delivered_at = NOW(); - NEW.completed_at = NOW(); - - -- 更新用户统计数据 - UPDATE public.ak_users - SET - total_orders = total_orders + 1, - total_spent = total_spent + NEW.total_amount - WHERE id = NEW.user_id; - - -- 更新商品销量 - UPDATE public.ml_products - SET sale_count = sale_count + ( - SELECT SUM(quantity) - FROM public.ml_order_items - WHERE order_id = NEW.id - ) - WHERE id IN ( - SELECT product_id - FROM public.ml_order_items - WHERE order_id = NEW.id - ); - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - --- ===================================================================================== --- 7. 创建触发器 --- ===================================================================================== - --- 删除可能存在的同名触发器,然后重新创建 -DROP TRIGGER IF EXISTS trigger_ml_user_profiles_updated_at ON public.ml_user_profiles; -CREATE TRIGGER trigger_ml_user_profiles_updated_at - BEFORE UPDATE ON public.ml_user_profiles - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - -DROP TRIGGER IF EXISTS trigger_ml_user_addresses_updated_at ON public.ml_user_addresses; -CREATE TRIGGER trigger_ml_user_addresses_updated_at - BEFORE UPDATE ON public.ml_user_addresses - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - -DROP TRIGGER IF EXISTS trigger_ml_products_updated_at ON public.ml_products; -CREATE TRIGGER trigger_ml_products_updated_at - BEFORE UPDATE ON public.ml_products - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - -DROP TRIGGER IF EXISTS trigger_ml_product_skus_updated_at ON public.ml_product_skus; -CREATE TRIGGER trigger_ml_product_skus_updated_at - BEFORE UPDATE ON public.ml_product_skus - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - -DROP TRIGGER IF EXISTS trigger_ml_shops_updated_at ON public.ml_shops; -CREATE TRIGGER trigger_ml_shops_updated_at - BEFORE UPDATE ON public.ml_shops - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - -DROP TRIGGER IF EXISTS trigger_ml_orders_updated_at ON public.ml_orders; -CREATE TRIGGER trigger_ml_orders_updated_at - BEFORE UPDATE ON public.ml_orders - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - -DROP TRIGGER IF EXISTS trigger_ml_shopping_cart_updated_at ON public.ml_shopping_cart; -CREATE TRIGGER trigger_ml_shopping_cart_updated_at - BEFORE UPDATE ON public.ml_shopping_cart - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - -DROP TRIGGER IF EXISTS trigger_ml_single_default_address ON public.ml_user_addresses; -CREATE TRIGGER trigger_ml_single_default_address - BEFORE INSERT OR UPDATE ON public.ml_user_addresses - FOR EACH ROW EXECUTE FUNCTION public.ensure_single_default_address(); - -DROP TRIGGER IF EXISTS trigger_ml_update_product_stock ON public.ml_product_skus; -CREATE TRIGGER trigger_ml_update_product_stock - AFTER INSERT OR UPDATE OR DELETE ON public.ml_product_skus - FOR EACH ROW EXECUTE FUNCTION public.update_product_stock(); - -DROP TRIGGER IF EXISTS trigger_ml_order_status_change ON public.ml_orders; -CREATE TRIGGER trigger_ml_order_status_change - BEFORE UPDATE ON public.ml_orders - FOR EACH ROW EXECUTE FUNCTION public.handle_order_status_change(); - --- ===================================================================================== --- 8. 创建实用函数 --- ===================================================================================== - --- 生成订单号的函数 -CREATE OR REPLACE FUNCTION public.generate_order_no() -RETURNS TEXT AS $$ -DECLARE - order_no TEXT; -BEGIN - order_no := 'ML' || TO_CHAR(NOW(), 'YYYYMMDD') || LPAD(NEXTVAL('ml_order_seq')::TEXT, 6, '0'); - RETURN order_no; -END; -$$ LANGUAGE plpgsql; - --- 生成优惠券码的函数 -CREATE OR REPLACE FUNCTION public.generate_coupon_code() -RETURNS TEXT AS $$ -DECLARE - code TEXT; - chars TEXT := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - result TEXT := ''; - i INTEGER; -BEGIN - FOR i IN 1..8 LOOP - result := result || substr(chars, (random() * length(chars))::integer + 1, 1); - END LOOP; - RETURN 'CP' || result; -END; -$$ LANGUAGE plpgsql; - --- 检查用户是否为认证商家 -CREATE OR REPLACE FUNCTION public.is_verified_merchant(p_user_id UUID) -RETURNS BOOLEAN AS $$ -DECLARE - result BOOLEAN := FALSE; -BEGIN - SELECT (user_type = 2 AND verification_status = 1) INTO result - FROM public.ml_user_profiles - WHERE user_id = p_user_id; - - RETURN COALESCE(result, FALSE); -END; -$$ LANGUAGE plpgsql; - --- 计算购物车总金额 -CREATE OR REPLACE FUNCTION public.calculate_cart_total(p_user_id UUID) -RETURNS DECIMAL AS $$ -DECLARE - total_amount DECIMAL := 0; -BEGIN - SELECT COALESCE(SUM( - CASE - WHEN c.sku_id IS NOT NULL THEN s.price * c.quantity - ELSE p.base_price * c.quantity - END - ), 0) INTO total_amount - FROM public.ml_shopping_cart c - LEFT JOIN public.ml_product_skus s ON c.sku_id = s.id - LEFT JOIN public.ml_products p ON c.product_id = p.id - WHERE c.user_id = p_user_id - AND c.selected = TRUE - AND p.status = 1 - AND (s.id IS NULL OR s.status = 1); - - RETURN total_amount; -END; -$$ LANGUAGE plpgsql; - --- SEO友好的获取商品信息函数 -CREATE OR REPLACE FUNCTION public.get_product_by_cid(p_cid INTEGER) -RETURNS TABLE ( - id UUID, - cid INTEGER, - name VARCHAR, - slug VARCHAR, - description TEXT, - main_image_url TEXT, - base_price DECIMAL, - rating_avg DECIMAL, - sale_count INTEGER -) AS $$ -BEGIN - RETURN QUERY - SELECT - p.id, - p.cid, - p.name, - p.slug, - p.description, - p.main_image_url, - p.base_price, - p.rating_avg, - p.sale_count - FROM public.ml_products p - WHERE p.cid = p_cid AND p.status = 1; -END; -$$ LANGUAGE plpgsql; - --- ===================================================================================== --- 9. 创建视图 --- ===================================================================================== - --- 商城用户完整信息视图 -CREATE OR REPLACE VIEW public.ml_users_view AS -SELECT - u.id, - u.username, - u.email, - u.phone, - u.avatar_url, - u.gender, - u.birthday, - u.bio, - u.created_at as user_created_at, - u.updated_at as user_updated_at, - u.mall_status, - u.mall_type, - u.total_orders, - u.total_spent, - p.user_type, - p.status, - p.real_name, - p.credit_score, - p.verification_status, - CASE - WHEN p.user_type = 1 THEN '消费者' - WHEN p.user_type = 2 THEN '商家' - WHEN p.user_type = 3 THEN '配送员' - WHEN p.user_type = 4 THEN '客服' - WHEN p.user_type = 5 THEN '管理员' - ELSE '未知' - END as user_type_name -FROM public.ak_users u -LEFT JOIN public.ml_user_profiles p ON u.id = p.user_id; - --- 商品详情视图 -CREATE OR REPLACE VIEW public.ml_products_detail_view AS -SELECT - p.*, - c.cid as category_cid, - c.name as category_name, - c.path as category_path, - b.cid as brand_cid, - b.name as brand_name, - s.cid as shop_cid, - s.shop_name, - u.username as merchant_name, - CASE - WHEN p.status = 1 THEN '上架' - WHEN p.status = 2 THEN '下架' - WHEN p.status = 3 THEN '草稿' - WHEN p.status = 4 THEN '删除' - ELSE '未知' - END as status_name -FROM public.ml_products p -LEFT JOIN public.ml_categories c ON p.category_id = c.id -LEFT JOIN public.ml_brands b ON p.brand_id = b.id -LEFT JOIN public.ml_shops s ON p.merchant_id = s.merchant_id -LEFT JOIN public.ak_users u ON p.merchant_id = u.id; - --- ===================================================================================== --- 10. 初始化基础数据 --- ===================================================================================== - --- 插入默认分类(如果不存在) -INSERT INTO public.ml_categories (id, name, slug, level, path) -SELECT * FROM (VALUES - (uuid_generate_v4(), '数码电器', 'digital', 1, ARRAY['数码电器']), - (uuid_generate_v4(), '服装鞋帽', 'fashion', 1, ARRAY['服装鞋帽']), - (uuid_generate_v4(), '家居用品', 'home', 1, ARRAY['家居用品']), - (uuid_generate_v4(), '食品饮料', 'food', 1, ARRAY['食品饮料']), - (uuid_generate_v4(), '美妆护肤', 'beauty', 1, ARRAY['美妆护肤']) -) AS v(id, name, slug, level, path) -WHERE NOT EXISTS (SELECT 1 FROM public.ml_categories WHERE slug = v.slug); - --- 为现有 ak_users 用户创建默认商城档案(如果不存在) -INSERT INTO public.ml_user_profiles (user_id, user_type, status) -SELECT - id, - 1, -- 默认为消费者 - 1 -- 默认状态正常 -FROM public.ak_users -WHERE id NOT IN (SELECT user_id FROM public.ml_user_profiles WHERE user_id IS NOT NULL); - --- ===================================================================================== --- 11. 完成提示 --- ===================================================================================== - -DO $$ -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '商城系统增量升级完成!'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '✓ 扩展创建完成'; - RAISE NOTICE '✓ 商城表结构创建/检查完成'; - RAISE NOTICE '✓ ak_users 表字段添加完成'; - RAISE NOTICE '✓ 索引创建完成'; - RAISE NOTICE '✓ 触发器创建完成'; - RAISE NOTICE '✓ 实用函数创建完成'; - RAISE NOTICE '✓ 视图创建完成'; - RAISE NOTICE '✓ 基础数据初始化完成'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '使用说明:'; - RAISE NOTICE '1. 此脚本安全执行,不会覆盖现有数据'; - RAISE NOTICE '2. 使用 IF NOT EXISTS 和 IF EXISTS 检查避免重复'; - RAISE NOTICE '3. 为现有用户自动创建商城档案'; - RAISE NOTICE '4. 所有新表前缀: ml_'; - RAISE NOTICE '5. 复用表: ak_users'; - RAISE NOTICE '======================================================='; -END $$; diff --git a/doc_mall/database/mall_database_check.sql b/doc_mall/database/mall_database_check.sql deleted file mode 100644 index a9e0f023..00000000 --- a/doc_mall/database/mall_database_check.sql +++ /dev/null @@ -1,332 +0,0 @@ --- ===================================================================================== --- 商城系统数据库状态检查脚本 --- 分析现有数据库结构,生成个性化ALTER建议 --- ===================================================================================== - --- ===================================================================================== --- 1. 检查现有表结构 --- ===================================================================================== - --- 检查 ak_users 表字段情况 -DO $$ -DECLARE - missing_fields TEXT[] := ARRAY[]::TEXT[]; - existing_fields TEXT[] := ARRAY[]::TEXT[]; - field_name TEXT; - field_names TEXT[] := ARRAY['mall_status', 'mall_type', 'last_login_ip', 'total_orders', 'total_spent', 'user_level', 'points', 'verified_status']; -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '检查 ak_users 表字段状态'; - RAISE NOTICE '======================================================='; - - FOREACH field_name IN ARRAY field_names LOOP - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = field_name) THEN - existing_fields := array_append(existing_fields, field_name); - RAISE NOTICE '✓ 字段已存在: %', field_name; - ELSE - missing_fields := array_append(missing_fields, field_name); - RAISE NOTICE '✗ 字段缺失: %', field_name; - END IF; - END LOOP; - - RAISE NOTICE '-------------------------------------------------------'; - RAISE NOTICE '已存在字段数量: %', array_length(existing_fields, 1); - RAISE NOTICE '缺失字段数量: %', array_length(missing_fields, 1); - - IF array_length(missing_fields, 1) > 0 THEN - RAISE NOTICE '需要添加的字段: %', array_to_string(missing_fields, ', '); - ELSE - RAISE NOTICE 'ak_users 表所有商城字段均已存在'; - END IF; -END $$; - --- 检查商城表存在情况 -DO $$ -DECLARE - table_name TEXT; - table_names TEXT[] := ARRAY['ml_user_profiles', 'ml_user_addresses', 'ml_categories', 'ml_brands', 'ml_products', 'ml_product_skus', 'ml_shops', 'ml_orders', 'ml_shopping_cart']; - existing_tables TEXT[] := ARRAY[]::TEXT[]; - missing_tables TEXT[] := ARRAY[]::TEXT[]; -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '检查商城核心表存在情况'; - RAISE NOTICE '======================================================='; - - FOREACH table_name IN ARRAY table_names LOOP - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = table_name) THEN - existing_tables := array_append(existing_tables, table_name); - RAISE NOTICE '✓ 表已存在: %', table_name; - ELSE - missing_tables := array_append(missing_tables, table_name); - RAISE NOTICE '✗ 表缺失: %', table_name; - END IF; - END LOOP; - - RAISE NOTICE '-------------------------------------------------------'; - RAISE NOTICE '已存在表数量: %', array_length(existing_tables, 1); - RAISE NOTICE '缺失表数量: %', array_length(missing_tables, 1); - - IF array_length(missing_tables, 1) > 0 THEN - RAISE NOTICE '需要创建的表: %', array_to_string(missing_tables, ', '); - ELSE - RAISE NOTICE '所有商城核心表均已存在'; - END IF; -END $$; - --- ===================================================================================== --- 2. 检查现有索引情况 --- ===================================================================================== - --- 检查重要索引存在情况 -DO $$ -DECLARE - index_info RECORD; - missing_indexes TEXT[] := ARRAY[]::TEXT[]; - existing_indexes TEXT[] := ARRAY[]::TEXT[]; -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '检查重要索引存在情况'; - RAISE NOTICE '======================================================='; - - -- 定义重要索引列表 - FOR index_info IN - SELECT * FROM (VALUES - ('idx_ak_users_mall_status', 'ak_users', 'mall_status'), - ('idx_ak_users_mall_type', 'ak_users', 'mall_type'), - ('idx_ak_users_total_orders', 'ak_users', 'total_orders'), - ('idx_ml_products_cid', 'ml_products', 'cid'), - ('idx_ml_products_slug', 'ml_products', 'slug'), - ('idx_ml_categories_cid', 'ml_categories', 'cid'), - ('idx_ml_orders_cid', 'ml_orders', 'cid'), - ('idx_ml_shops_cid', 'ml_shops', 'cid') - ) AS t(index_name, table_name, column_name) - LOOP - -- 检查表是否存在 - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = index_info.table_name) THEN - -- 检查索引是否存在 - IF EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = index_info.index_name) THEN - existing_indexes := array_append(existing_indexes, index_info.index_name); - RAISE NOTICE '✓ 索引已存在: % (表: %)', index_info.index_name, index_info.table_name; - ELSE - missing_indexes := array_append(missing_indexes, index_info.index_name); - RAISE NOTICE '✗ 索引缺失: % (表: %)', index_info.index_name, index_info.table_name; - END IF; - ELSE - RAISE NOTICE '○ 表不存在,跳过索引检查: % (表: %)', index_info.index_name, index_info.table_name; - END IF; - END LOOP; - - RAISE NOTICE '-------------------------------------------------------'; - RAISE NOTICE '已存在索引数量: %', array_length(existing_indexes, 1); - RAISE NOTICE '缺失索引数量: %', array_length(missing_indexes, 1); -END $$; - --- ===================================================================================== --- 3. 检查扩展和函数 --- ===================================================================================== - --- 检查必要的PostgreSQL扩展 -DO $$ -DECLARE - ext_name TEXT; - extensions TEXT[] := ARRAY['uuid-ossp', 'btree_gin']; - existing_ext TEXT[] := ARRAY[]::TEXT[]; - missing_ext TEXT[] := ARRAY[]::TEXT[]; -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '检查PostgreSQL扩展'; - RAISE NOTICE '======================================================='; - - FOREACH ext_name IN ARRAY extensions LOOP - IF EXISTS (SELECT 1 FROM pg_extension WHERE extname = ext_name) THEN - existing_ext := array_append(existing_ext, ext_name); - RAISE NOTICE '✓ 扩展已安装: %', ext_name; - ELSE - missing_ext := array_append(missing_ext, ext_name); - RAISE NOTICE '✗ 扩展缺失: %', ext_name; - END IF; - END LOOP; - - IF array_length(missing_ext, 1) > 0 THEN - RAISE NOTICE '需要安装的扩展: %', array_to_string(missing_ext, ', '); - END IF; -END $$; - --- 检查商城相关函数 -DO $$ -DECLARE - func_name TEXT; - functions TEXT[] := ARRAY['generate_order_no', 'calculate_cart_total', 'update_user_mall_stats']; - existing_funcs TEXT[] := ARRAY[]::TEXT[]; - missing_funcs TEXT[] := ARRAY[]::TEXT[]; -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '检查商城相关函数'; - RAISE NOTICE '======================================================='; - - FOREACH func_name IN ARRAY functions LOOP - IF EXISTS (SELECT 1 FROM pg_proc WHERE proname = func_name) THEN - existing_funcs := array_append(existing_funcs, func_name); - RAISE NOTICE '✓ 函数已存在: %', func_name; - ELSE - missing_funcs := array_append(missing_funcs, func_name); - RAISE NOTICE '✗ 函数缺失: %', func_name; - END IF; - END LOOP; - - IF array_length(missing_funcs, 1) > 0 THEN - RAISE NOTICE '需要创建的函数: %', array_to_string(missing_funcs, ', '); - END IF; -END $$; - --- ===================================================================================== --- 4. 生成个性化建议 --- ===================================================================================== - -DO $$ -DECLARE - ak_users_missing INTEGER := 0; - mall_tables_missing INTEGER := 0; - suggestion TEXT := ''; -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '个性化升级建议'; - RAISE NOTICE '======================================================='; - - -- 统计ak_users缺失字段 - SELECT COUNT(*) INTO ak_users_missing - FROM (VALUES ('mall_status'), ('mall_type'), ('total_orders'), ('total_spent')) AS t(field) - WHERE NOT EXISTS ( - SELECT 1 FROM information_schema.columns - WHERE table_name = 'ak_users' AND column_name = t.field - ); - - -- 统计商城表缺失情况 - SELECT COUNT(*) INTO mall_tables_missing - FROM (VALUES ('ml_products'), ('ml_categories'), ('ml_orders'), ('ml_shops')) AS t(table_name) - WHERE NOT EXISTS ( - SELECT 1 FROM information_schema.tables - WHERE table_name = t.table_name - ); - - -- 生成建议 - IF ak_users_missing > 0 AND mall_tables_missing > 0 THEN - suggestion := '建议使用 mall_alter_upgrade.sql(完整升级脚本)'; - ELSIF ak_users_missing > 0 AND mall_tables_missing = 0 THEN - suggestion := '建议使用 mall_fields_only_upgrade.sql(仅字段升级脚本)'; - ELSIF ak_users_missing = 0 AND mall_tables_missing > 0 THEN - suggestion := '建议使用 mall_migration.sql(表结构创建脚本)'; - ELSE - suggestion := '数据库结构已完整,建议检查数据完整性和权限配置'; - END IF; - - RAISE NOTICE '根据您的数据库状态分析:'; - RAISE NOTICE '• ak_users 表缺失字段数: %', ak_users_missing; - RAISE NOTICE '• 缺失商城核心表数: %', mall_tables_missing; - RAISE NOTICE ''; - RAISE NOTICE '推荐执行方案: %', suggestion; - - -- 详细建议 - RAISE NOTICE ''; - RAISE NOTICE '详细执行步骤:'; - IF ak_users_missing > 0 THEN - RAISE NOTICE '1. 先执行字段升级脚本为ak_users表添加商城字段'; - END IF; - IF mall_tables_missing > 0 THEN - RAISE NOTICE '2. 执行表结构创建脚本建立商城核心表'; - END IF; - RAISE NOTICE '3. 执行SEO和安全策略脚本(mall_seo_security.sql)'; - RAISE NOTICE '4. 根据需要执行模拟数据插入脚本进行测试'; -END $$; - --- ===================================================================================== --- 5. 生成具体的ALTER语句(可选) --- ===================================================================================== - --- 生成ak_users表缺失字段的ALTER语句 -DO $$ -DECLARE - alter_statements TEXT := ''; - field_name TEXT; - field_configs TEXT[] := ARRAY[ - 'mall_status INTEGER DEFAULT 1 CHECK (mall_status IN (1,2))', - 'mall_type INTEGER DEFAULT 1 CHECK (mall_type IN (1,2,3))', - 'total_orders INTEGER DEFAULT 0 CHECK (total_orders >= 0)', - 'total_spent DECIMAL(12,2) DEFAULT 0.00 CHECK (total_spent >= 0)', - 'user_level INTEGER DEFAULT 1 CHECK (user_level >= 1 AND user_level <= 10)', - 'points INTEGER DEFAULT 0 CHECK (points >= 0)', - 'verified_status INTEGER DEFAULT 0 CHECK (verified_status IN (0,1,2))' - ]; - field_names TEXT[] := ARRAY['mall_status', 'mall_type', 'total_orders', 'total_spent', 'user_level', 'points', 'verified_status']; - i INTEGER; -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '生成ak_users表ALTER语句'; - RAISE NOTICE '======================================================='; - - FOR i IN 1..array_length(field_names, 1) LOOP - field_name := field_names[i]; - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = field_name) THEN - alter_statements := alter_statements || format('ALTER TABLE public.ak_users ADD COLUMN %s;' || chr(10), field_configs[i]); - RAISE NOTICE '需要执行: ALTER TABLE public.ak_users ADD COLUMN %;', field_configs[i]; - END IF; - END LOOP; - - IF alter_statements = '' THEN - RAISE NOTICE 'ak_users表无需添加字段'; - ELSE - RAISE NOTICE ''; - RAISE NOTICE '完整ALTER脚本:'; - RAISE NOTICE '%', alter_statements; - END IF; -END $$; - --- ===================================================================================== --- 6. 数据完整性检查 --- ===================================================================================== - -DO $$ -DECLARE - users_count INTEGER; - profiles_count INTEGER; -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '数据完整性检查'; - RAISE NOTICE '======================================================='; - - -- 检查用户表数据 - SELECT COUNT(*) INTO users_count FROM public.ak_users; - RAISE NOTICE 'ak_users 表用户数量: %', users_count; - - -- 检查用户档案表(如果存在) - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ml_user_profiles') THEN - SELECT COUNT(*) INTO profiles_count FROM public.ml_user_profiles; - RAISE NOTICE 'ml_user_profiles 表档案数量: %', profiles_count; - - IF users_count > profiles_count THEN - RAISE NOTICE '注意: 有 % 个用户缺少商城档案,建议执行档案补充脚本', users_count - profiles_count; - END IF; - ELSE - RAISE NOTICE 'ml_user_profiles 表不存在'; - END IF; -END $$; - --- ===================================================================================== --- 完成提示 --- ===================================================================================== - -DO $$ -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '数据库状态检查完成!'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '请根据上述分析结果选择合适的升级脚本:'; - RAISE NOTICE ''; - RAISE NOTICE '• mall_alter_upgrade.sql - 完整升级(表+字段+索引+函数)'; - RAISE NOTICE '• mall_fields_only_upgrade.sql - 仅字段升级(最小化修改)'; - RAISE NOTICE '• mall_migration.sql - 完整建表(全新部署)'; - RAISE NOTICE '• mall_seo_security.sql - SEO优化和安全策略'; - RAISE NOTICE ''; - RAISE NOTICE '建议在生产环境执行前先在测试环境验证!'; - RAISE NOTICE '======================================================='; -END $$; diff --git a/doc_mall/database/mall_fields_only_upgrade.sql b/doc_mall/database/mall_fields_only_upgrade.sql deleted file mode 100644 index efeba845..00000000 --- a/doc_mall/database/mall_fields_only_upgrade.sql +++ /dev/null @@ -1,734 +0,0 @@ --- ===================================================================================== --- 商城系统字段增量添加脚本 (仅字段和索引) --- 适用于已有表结构,仅添加缺失字段和索引的场景 --- ===================================================================================== - --- ===================================================================================== --- 1. 为现有 ak_users 表添加商城字段 --- ===================================================================================== - -DO $$ -BEGIN - -- 商城状态字段 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'mall_status') THEN - ALTER TABLE public.ak_users ADD COLUMN mall_status INTEGER DEFAULT 1; - ALTER TABLE public.ak_users ADD CONSTRAINT chk_ak_users_mall_status CHECK (mall_status IN (1,2)); - RAISE NOTICE '✓ 添加字段: ak_users.mall_status'; - ELSE - RAISE NOTICE '○ 字段已存在: ak_users.mall_status'; - END IF; - - -- 商城用户类型字段 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'mall_type') THEN - ALTER TABLE public.ak_users ADD COLUMN mall_type INTEGER DEFAULT 1; - ALTER TABLE public.ak_users ADD CONSTRAINT chk_ak_users_mall_type CHECK (mall_type IN (1,2,3)); - RAISE NOTICE '✓ 添加字段: ak_users.mall_type'; - ELSE - RAISE NOTICE '○ 字段已存在: ak_users.mall_type'; - END IF; - - -- 最后登录IP字段 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'last_login_ip') THEN - ALTER TABLE public.ak_users ADD COLUMN last_login_ip INET; - RAISE NOTICE '✓ 添加字段: ak_users.last_login_ip'; - ELSE - RAISE NOTICE '○ 字段已存在: ak_users.last_login_ip'; - END IF; - - -- 总订单数字段 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'total_orders') THEN - ALTER TABLE public.ak_users ADD COLUMN total_orders INTEGER DEFAULT 0 CHECK (total_orders >= 0); - RAISE NOTICE '✓ 添加字段: ak_users.total_orders'; - ELSE - RAISE NOTICE '○ 字段已存在: ak_users.total_orders'; - END IF; - - -- 总消费金额字段 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'total_spent') THEN - ALTER TABLE public.ak_users ADD COLUMN total_spent DECIMAL(12,2) DEFAULT 0.00 CHECK (total_spent >= 0); - RAISE NOTICE '✓ 添加字段: ak_users.total_spent'; - ELSE - RAISE NOTICE '○ 字段已存在: ak_users.total_spent'; - END IF; - - -- 用户等级字段 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'user_level') THEN - ALTER TABLE public.ak_users ADD COLUMN user_level INTEGER DEFAULT 1 CHECK (user_level >= 1 AND user_level <= 10); - RAISE NOTICE '✓ 添加字段: ak_users.user_level'; - ELSE - RAISE NOTICE '○ 字段已存在: ak_users.user_level'; - END IF; - - -- 积分字段 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'points') THEN - ALTER TABLE public.ak_users ADD COLUMN points INTEGER DEFAULT 0 CHECK (points >= 0); - RAISE NOTICE '✓ 添加字段: ak_users.points'; - ELSE - RAISE NOTICE '○ 字段已存在: ak_users.points'; - END IF; - - -- 实名认证状态 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'verified_status') THEN - ALTER TABLE public.ak_users ADD COLUMN verified_status INTEGER DEFAULT 0 CHECK (verified_status IN (0,1,2)); - RAISE NOTICE '✓ 添加字段: ak_users.verified_status'; - ELSE - RAISE NOTICE '○ 字段已存在: ak_users.verified_status'; - END IF; - - RAISE NOTICE '>> ak_users 表字段检查完成'; -END $$; - --- ===================================================================================== --- 2. 为现有商城表添加CID字段(SEO优化必需) --- ===================================================================================== - --- 为主要商城表添加cid自增字段 -DO $$ -BEGIN - -- 为 ml_categories 表添加 cid 字段 - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ml_categories') THEN - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_categories' AND column_name = 'cid') THEN - -- 创建序列 - CREATE SEQUENCE IF NOT EXISTS public.ml_categories_cid_seq; - -- 添加cid字段 - ALTER TABLE public.ml_categories ADD COLUMN cid INTEGER UNIQUE DEFAULT nextval('public.ml_categories_cid_seq'); - -- 设置序列所有者 - ALTER SEQUENCE public.ml_categories_cid_seq OWNED BY public.ml_categories.cid; - -- 更新现有记录的cid值 - UPDATE public.ml_categories SET cid = nextval('public.ml_categories_cid_seq') WHERE cid IS NULL; - RAISE NOTICE '✓ 添加字段: ml_categories.cid (自增SEO ID)'; - ELSE - RAISE NOTICE '○ 字段已存在: ml_categories.cid'; - END IF; - END IF; - - -- 为 ml_brands 表添加 cid 字段 - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ml_brands') THEN - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_brands' AND column_name = 'cid') THEN - CREATE SEQUENCE IF NOT EXISTS public.ml_brands_cid_seq; - ALTER TABLE public.ml_brands ADD COLUMN cid INTEGER UNIQUE DEFAULT nextval('public.ml_brands_cid_seq'); - ALTER SEQUENCE public.ml_brands_cid_seq OWNED BY public.ml_brands.cid; - UPDATE public.ml_brands SET cid = nextval('public.ml_brands_cid_seq') WHERE cid IS NULL; - RAISE NOTICE '✓ 添加字段: ml_brands.cid (自增SEO ID)'; - ELSE - RAISE NOTICE '○ 字段已存在: ml_brands.cid'; - END IF; - END IF; - - -- 为 ml_products 表添加 cid 字段 - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ml_products') THEN - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'cid') THEN - CREATE SEQUENCE IF NOT EXISTS public.ml_products_cid_seq; - ALTER TABLE public.ml_products ADD COLUMN cid INTEGER UNIQUE DEFAULT nextval('public.ml_products_cid_seq'); - ALTER SEQUENCE public.ml_products_cid_seq OWNED BY public.ml_products.cid; - UPDATE public.ml_products SET cid = nextval('public.ml_products_cid_seq') WHERE cid IS NULL; - RAISE NOTICE '✓ 添加字段: ml_products.cid (自增SEO ID)'; - ELSE - RAISE NOTICE '○ 字段已存在: ml_products.cid'; - END IF; - END IF; - - -- 为 ml_shops 表添加 cid 字段 - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ml_shops') THEN - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_shops' AND column_name = 'cid') THEN - CREATE SEQUENCE IF NOT EXISTS public.ml_shops_cid_seq; - ALTER TABLE public.ml_shops ADD COLUMN cid INTEGER UNIQUE DEFAULT nextval('public.ml_shops_cid_seq'); - ALTER SEQUENCE public.ml_shops_cid_seq OWNED BY public.ml_shops.cid; - UPDATE public.ml_shops SET cid = nextval('public.ml_shops_cid_seq') WHERE cid IS NULL; - RAISE NOTICE '✓ 添加字段: ml_shops.cid (自增SEO ID)'; - ELSE - RAISE NOTICE '○ 字段已存在: ml_shops.cid'; - END IF; - END IF; - - -- 为 ml_orders 表添加 cid 字段 - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ml_orders') THEN - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_orders' AND column_name = 'cid') THEN - CREATE SEQUENCE IF NOT EXISTS public.ml_orders_cid_seq; - ALTER TABLE public.ml_orders ADD COLUMN cid INTEGER UNIQUE DEFAULT nextval('public.ml_orders_cid_seq'); - ALTER SEQUENCE public.ml_orders_cid_seq OWNED BY public.ml_orders.cid; - UPDATE public.ml_orders SET cid = nextval('public.ml_orders_cid_seq') WHERE cid IS NULL; - RAISE NOTICE '✓ 添加字段: ml_orders.cid (自增SEO ID)'; - ELSE - RAISE NOTICE '○ 字段已存在: ml_orders.cid'; - END IF; - END IF; - - RAISE NOTICE '>> CID 字段添加完成'; -END $$; - --- ===================================================================================== --- 3. 为现有商城表添加其他字段(如果表存在的话) --- ===================================================================================== - --- 为 ml_products 表添加SEO和营销字段 -DO $$ -BEGIN - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ml_products') THEN - -- SEO标题 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'seo_title') THEN - ALTER TABLE public.ml_products ADD COLUMN seo_title VARCHAR(200); - RAISE NOTICE '✓ 添加字段: ml_products.seo_title'; - END IF; - - -- SEO描述 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'seo_description') THEN - ALTER TABLE public.ml_products ADD COLUMN seo_description VARCHAR(500); - RAISE NOTICE '✓ 添加字段: ml_products.seo_description'; - END IF; - - -- SEO关键词 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'seo_keywords') THEN - ALTER TABLE public.ml_products ADD COLUMN seo_keywords TEXT[]; - RAISE NOTICE '✓ 添加字段: ml_products.seo_keywords'; - END IF; - - -- URL slug - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'slug') THEN - ALTER TABLE public.ml_products ADD COLUMN slug VARCHAR(200) UNIQUE; - RAISE NOTICE '✓ 添加字段: ml_products.slug'; - END IF; - - -- 标签 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'tags') THEN - ALTER TABLE public.ml_products ADD COLUMN tags TEXT[]; - RAISE NOTICE '✓ 添加字段: ml_products.tags'; - END IF; - - -- 是否特色商品 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'is_featured') THEN - ALTER TABLE public.ml_products ADD COLUMN is_featured BOOLEAN DEFAULT FALSE; - RAISE NOTICE '✓ 添加字段: ml_products.is_featured'; - END IF; - - -- 是否新品 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'is_new') THEN - ALTER TABLE public.ml_products ADD COLUMN is_new BOOLEAN DEFAULT FALSE; - RAISE NOTICE '✓ 添加字段: ml_products.is_new'; - END IF; - - -- 是否热销 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'is_hot') THEN - ALTER TABLE public.ml_products ADD COLUMN is_hot BOOLEAN DEFAULT FALSE; - RAISE NOTICE '✓ 添加字段: ml_products.is_hot'; - END IF; - - -- 浏览次数 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'view_count') THEN - ALTER TABLE public.ml_products ADD COLUMN view_count INTEGER DEFAULT 0; - RAISE NOTICE '✓ 添加字段: ml_products.view_count'; - END IF; - - -- 销售数量 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'sale_count') THEN - ALTER TABLE public.ml_products ADD COLUMN sale_count INTEGER DEFAULT 0; - RAISE NOTICE '✓ 添加字段: ml_products.sale_count'; - END IF; - - -- 收藏数量 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'favorite_count') THEN - ALTER TABLE public.ml_products ADD COLUMN favorite_count INTEGER DEFAULT 0; - RAISE NOTICE '✓ 添加字段: ml_products.favorite_count'; - END IF; - - RAISE NOTICE '>> ml_products 表字段检查完成'; - ELSE - RAISE NOTICE '○ ml_products 表不存在,跳过字段添加'; - END IF; -END $$; - --- 为 ml_categories 表添加SEO字段 -DO $$ -BEGIN - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ml_categories') THEN - -- SEO标题 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_categories' AND column_name = 'seo_title') THEN - ALTER TABLE public.ml_categories ADD COLUMN seo_title VARCHAR(200); - RAISE NOTICE '✓ 添加字段: ml_categories.seo_title'; - END IF; - - -- SEO描述 - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_categories' AND column_name = 'seo_description') THEN - ALTER TABLE public.ml_categories ADD COLUMN seo_description VARCHAR(500); - RAISE NOTICE '✓ 添加字段: ml_categories.seo_description'; - END IF; - - -- URL slug - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_categories' AND column_name = 'slug') THEN - ALTER TABLE public.ml_categories ADD COLUMN slug VARCHAR(200) UNIQUE; - RAISE NOTICE '✓ 添加字段: ml_categories.slug'; - END IF; - - RAISE NOTICE '>> ml_categories 表字段检查完成'; - ELSE - RAISE NOTICE '○ ml_categories 表不存在,跳过字段添加'; - END IF; -END $$; - --- ===================================================================================== --- 4. 创建CID字段索引(SEO优化必需) --- ===================================================================================== - --- 为CID字段创建索引 -DO $$ -BEGIN - -- ml_categories cid 索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_categories' AND column_name = 'cid') THEN - CREATE INDEX IF NOT EXISTS idx_ml_categories_cid ON public.ml_categories(cid); - RAISE NOTICE '✓ 创建索引: idx_ml_categories_cid'; - END IF; - - -- ml_brands cid 索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_brands' AND column_name = 'cid') THEN - CREATE INDEX IF NOT EXISTS idx_ml_brands_cid ON public.ml_brands(cid); - RAISE NOTICE '✓ 创建索引: idx_ml_brands_cid'; - END IF; - - -- ml_products cid 索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'cid') THEN - CREATE INDEX IF NOT EXISTS idx_ml_products_cid ON public.ml_products(cid); - RAISE NOTICE '✓ 创建索引: idx_ml_products_cid'; - END IF; - - -- ml_shops cid 索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_shops' AND column_name = 'cid') THEN - CREATE INDEX IF NOT EXISTS idx_ml_shops_cid ON public.ml_shops(cid); - RAISE NOTICE '✓ 创建索引: idx_ml_shops_cid'; - END IF; - - -- ml_orders cid 索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_orders' AND column_name = 'cid') THEN - CREATE INDEX IF NOT EXISTS idx_ml_orders_cid ON public.ml_orders(cid); - RAISE NOTICE '✓ 创建索引: idx_ml_orders_cid'; - END IF; - - RAISE NOTICE '>> CID 索引创建完成'; -END $$; - --- ===================================================================================== --- 5. 创建索引(仅在字段存在时创建) --- ===================================================================================== - --- ak_users 表索引 -DO $$ -BEGIN - -- 商城状态索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'mall_status') THEN - CREATE INDEX IF NOT EXISTS idx_ak_users_mall_status ON public.ak_users(mall_status); - RAISE NOTICE '✓ 创建索引: idx_ak_users_mall_status'; - END IF; - - -- 商城类型索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'mall_type') THEN - CREATE INDEX IF NOT EXISTS idx_ak_users_mall_type ON public.ak_users(mall_type); - RAISE NOTICE '✓ 创建索引: idx_ak_users_mall_type'; - END IF; - - -- 订单数量索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'total_orders') THEN - CREATE INDEX IF NOT EXISTS idx_ak_users_total_orders ON public.ak_users(total_orders DESC); - RAISE NOTICE '✓ 创建索引: idx_ak_users_total_orders'; - END IF; - - -- 消费金额索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'total_spent') THEN - CREATE INDEX IF NOT EXISTS idx_ak_users_total_spent ON public.ak_users(total_spent DESC); - RAISE NOTICE '✓ 创建索引: idx_ak_users_total_spent'; - END IF; - - -- 用户等级索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'user_level') THEN - CREATE INDEX IF NOT EXISTS idx_ak_users_level ON public.ak_users(user_level); - RAISE NOTICE '✓ 创建索引: idx_ak_users_level'; - END IF; - - -- 积分索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'points') THEN - CREATE INDEX IF NOT EXISTS idx_ak_users_points ON public.ak_users(points DESC); - RAISE NOTICE '✓ 创建索引: idx_ak_users_points'; - END IF; - - -- 认证状态索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'verified_status') THEN - CREATE INDEX IF NOT EXISTS idx_ak_users_verified ON public.ak_users(verified_status); - RAISE NOTICE '✓ 创建索引: idx_ak_users_verified'; - END IF; - - RAISE NOTICE '>> ak_users 表索引创建完成'; -END $$; - --- ml_products 表索引 -DO $$ -BEGIN - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ml_products') THEN - -- slug 索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'slug') THEN - CREATE INDEX IF NOT EXISTS idx_ml_products_slug ON public.ml_products(slug); - RAISE NOTICE '✓ 创建索引: idx_ml_products_slug'; - END IF; - - -- 特色商品索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'is_featured') THEN - CREATE INDEX IF NOT EXISTS idx_ml_products_featured ON public.ml_products(is_featured, status); - RAISE NOTICE '✓ 创建索引: idx_ml_products_featured'; - END IF; - - -- 标签索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'tags') THEN - CREATE INDEX IF NOT EXISTS idx_ml_products_tags ON public.ml_products USING GIN(tags); - RAISE NOTICE '✓ 创建索引: idx_ml_products_tags (GIN)'; - END IF; - - -- 浏览量索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'view_count') THEN - CREATE INDEX IF NOT EXISTS idx_ml_products_view_count ON public.ml_products(view_count DESC); - RAISE NOTICE '✓ 创建索引: idx_ml_products_view_count'; - END IF; - - -- 销量索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'sale_count') THEN - CREATE INDEX IF NOT EXISTS idx_ml_products_sale_count ON public.ml_products(sale_count DESC); - RAISE NOTICE '✓ 创建索引: idx_ml_products_sale_count'; - END IF; - - RAISE NOTICE '>> ml_products 表索引创建完成'; - ELSE - RAISE NOTICE '○ ml_products 表不存在,跳过索引创建'; - END IF; -END $$; - --- ml_categories 表索引 -DO $$ -BEGIN - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ml_categories') THEN - -- slug 索引 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_categories' AND column_name = 'slug') THEN - CREATE INDEX IF NOT EXISTS idx_ml_categories_slug ON public.ml_categories(slug); - RAISE NOTICE '✓ 创建索引: idx_ml_categories_slug'; - END IF; - - RAISE NOTICE '>> ml_categories 表索引创建完成'; - ELSE - RAISE NOTICE '○ ml_categories 表不存在,跳过索引创建'; - END IF; -END $$; - --- ===================================================================================== --- 6. 创建或更新约束 --- ===================================================================================== - -DO $$ -BEGIN - -- ak_users 表约束检查 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'mall_status') THEN - -- 检查约束是否存在,不存在则添加 - IF NOT EXISTS (SELECT 1 FROM information_schema.check_constraints WHERE constraint_name = 'chk_ak_users_mall_status') THEN - ALTER TABLE public.ak_users ADD CONSTRAINT chk_ak_users_mall_status CHECK (mall_status IN (1,2)); - RAISE NOTICE '✓ 添加约束: chk_ak_users_mall_status'; - END IF; - END IF; - - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'mall_type') THEN - IF NOT EXISTS (SELECT 1 FROM information_schema.check_constraints WHERE constraint_name = 'chk_ak_users_mall_type') THEN - ALTER TABLE public.ak_users ADD CONSTRAINT chk_ak_users_mall_type CHECK (mall_type IN (1,2,3)); - RAISE NOTICE '✓ 添加约束: chk_ak_users_mall_type'; - END IF; - END IF; - - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ak_users' AND column_name = 'verified_status') THEN - IF NOT EXISTS (SELECT 1 FROM information_schema.check_constraints WHERE constraint_name = 'chk_ak_users_verified_status') THEN - ALTER TABLE public.ak_users ADD CONSTRAINT chk_ak_users_verified_status CHECK (verified_status IN (0,1,2)); - RAISE NOTICE '✓ 添加约束: chk_ak_users_verified_status'; - END IF; - END IF; - - RAISE NOTICE '>> 约束检查完成'; -END $$; - --- ===================================================================================== --- 7. 创建SEO相关函数 --- ===================================================================================== - --- 根据 cid 获取商品信息 (SEO 友好) -CREATE OR REPLACE FUNCTION public.get_product_by_cid(p_cid INTEGER) -RETURNS TABLE ( - id UUID, - cid INTEGER, - name VARCHAR, - slug VARCHAR, - description TEXT, - main_image_url TEXT, - base_price DECIMAL, - rating_avg DECIMAL, - sale_count INTEGER -) AS $$ -BEGIN - RETURN QUERY - SELECT - p.id, - p.cid, - p.name, - p.slug, - p.description, - p.main_image_url, - p.base_price, - p.rating_avg, - p.sale_count - FROM public.ml_products p - WHERE p.cid = p_cid AND p.status = 1; -END; -$$ LANGUAGE plpgsql; - --- 根据 cid 获取分类信息 (SEO 友好) -CREATE OR REPLACE FUNCTION public.get_category_by_cid(p_cid INTEGER) -RETURNS TABLE ( - id UUID, - cid INTEGER, - name VARCHAR, - slug VARCHAR, - description TEXT, - icon_url TEXT, - path TEXT[] -) AS $$ -BEGIN - RETURN QUERY - SELECT - c.id, - c.cid, - c.name, - c.slug, - c.description, - c.icon_url, - c.path - FROM public.ml_categories c - WHERE c.cid = p_cid AND c.is_active = TRUE; -END; -$$ LANGUAGE plpgsql; - --- 根据 cid 获取品牌信息 (SEO 友好) -CREATE OR REPLACE FUNCTION public.get_brand_by_cid(p_cid INTEGER) -RETURNS TABLE ( - id UUID, - cid INTEGER, - name VARCHAR, - logo_url TEXT, - description TEXT -) AS $$ -BEGIN - RETURN QUERY - SELECT - b.id, - b.cid, - b.name, - b.logo_url, - b.description - FROM public.ml_brands b - WHERE b.cid = p_cid AND b.is_active = TRUE; -END; -$$ LANGUAGE plpgsql; - --- 根据 cid 获取店铺信息 (SEO 友好) -CREATE OR REPLACE FUNCTION public.get_shop_by_cid(p_cid INTEGER) -RETURNS TABLE ( - id UUID, - cid INTEGER, - shop_name VARCHAR, - description TEXT, - shop_logo TEXT, - rating_avg DECIMAL, - product_count INTEGER -) AS $$ -BEGIN - RETURN QUERY - SELECT - s.id, - s.cid, - s.shop_name, - s.description, - s.shop_logo, - s.rating_avg, - s.product_count - FROM public.ml_shops s - WHERE s.cid = p_cid AND s.status = 1; -END; -$$ LANGUAGE plpgsql; - --- 生成 SEO 友好的 URL 路径 -CREATE OR REPLACE FUNCTION public.generate_seo_url( - p_type VARCHAR, -- 'product', 'category', 'brand', 'shop' - p_cid INTEGER, - p_slug VARCHAR DEFAULT NULL -) -RETURNS TEXT AS $$ -DECLARE - url_path TEXT; -BEGIN - CASE p_type - WHEN 'product' THEN - url_path := '/product/' || p_cid; - IF p_slug IS NOT NULL THEN - url_path := url_path || '/' || p_slug; - END IF; - WHEN 'category' THEN - url_path := '/category/' || p_cid; - IF p_slug IS NOT NULL THEN - url_path := url_path || '/' || p_slug; - END IF; - WHEN 'brand' THEN - url_path := '/brand/' || p_cid; - IF p_slug IS NOT NULL THEN - url_path := url_path || '/' || p_slug; - END IF; - WHEN 'shop' THEN - url_path := '/shop/' || p_cid; - IF p_slug IS NOT NULL THEN - url_path := url_path || '/' || p_slug; - END IF; - ELSE - url_path := '/' || p_type || '/' || p_cid; - END CASE; - - RETURN url_path; -END; -$$ LANGUAGE plpgsql; - --- 批量更新 slug 字段的函数 -CREATE OR REPLACE FUNCTION public.update_seo_slugs() -RETURNS VOID AS $$ -BEGIN - -- 更新商品 slug - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ml_products') THEN - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_products' AND column_name = 'slug') THEN - UPDATE public.ml_products - SET slug = LOWER(REGEXP_REPLACE(TRIM(name), '[^a-zA-Z0-9\u4e00-\u9fa5]+', '-', 'g')) - WHERE slug IS NULL OR slug = ''; - END IF; - END IF; - - -- 更新分类 slug - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ml_categories') THEN - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_categories' AND column_name = 'slug') THEN - UPDATE public.ml_categories - SET slug = LOWER(REGEXP_REPLACE(TRIM(name), '[^a-zA-Z0-9\u4e00-\u9fa5]+', '-', 'g')) - WHERE slug IS NULL OR slug = ''; - END IF; - END IF; - - RAISE NOTICE 'SEO slugs updated successfully'; -END; -$$ LANGUAGE plpgsql; - --- ===================================================================================== --- 8. 创建基础函数(如果不存在) --- ===================================================================================== - --- 更新用户商城统计数据的函数 -CREATE OR REPLACE FUNCTION public.update_user_mall_stats(p_user_id UUID) -RETURNS VOID AS $$ -BEGIN - UPDATE public.ak_users - SET - total_orders = ( - SELECT COUNT(*) - FROM public.ml_orders - WHERE user_id = p_user_id AND order_status = 4 - ), - total_spent = ( - SELECT COALESCE(SUM(total_amount), 0) - FROM public.ml_orders - WHERE user_id = p_user_id AND order_status = 4 - ) - WHERE id = p_user_id; -END; -$$ LANGUAGE plpgsql; - --- 为用户计算等级的函数 -CREATE OR REPLACE FUNCTION public.calculate_user_level(p_total_spent DECIMAL) -RETURNS INTEGER AS $$ -BEGIN - CASE - WHEN p_total_spent >= 100000 THEN RETURN 10; - WHEN p_total_spent >= 50000 THEN RETURN 9; - WHEN p_total_spent >= 20000 THEN RETURN 8; - WHEN p_total_spent >= 10000 THEN RETURN 7; - WHEN p_total_spent >= 5000 THEN RETURN 6; - WHEN p_total_spent >= 2000 THEN RETURN 5; - WHEN p_total_spent >= 1000 THEN RETURN 4; - WHEN p_total_spent >= 500 THEN RETURN 3; - WHEN p_total_spent >= 100 THEN RETURN 2; - ELSE RETURN 1; - END CASE; -END; -$$ LANGUAGE plpgsql; - --- 批量更新用户等级的函数 -CREATE OR REPLACE FUNCTION public.update_all_user_levels() -RETURNS INTEGER AS $$ -DECLARE - affected_rows INTEGER := 0; -BEGIN - UPDATE public.ak_users - SET user_level = public.calculate_user_level(total_spent) - WHERE total_spent > 0; - - GET DIAGNOSTICS affected_rows = ROW_COUNT; - RETURN affected_rows; -END; -$$ LANGUAGE plpgsql; - --- ===================================================================================== --- 9. 完成提示 --- ===================================================================================== - -DO $$ -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '商城系统字段增量添加完成!'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '执行内容:'; - RAISE NOTICE '✓ ak_users 表增加商城相关字段'; - RAISE NOTICE '✓ 商城核心表增加 cid 自增字段 (SEO优化)'; - RAISE NOTICE '✓ 现有商城表增加SEO和营销字段'; - RAISE NOTICE '✓ 创建相应的索引 (包括CID索引)'; - RAISE NOTICE '✓ 添加约束检查'; - RAISE NOTICE '✓ 创建SEO相关函数'; - RAISE NOTICE '✓ 创建实用函数'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '新增字段说明:'; - RAISE NOTICE '• ak_users.mall_status: 商城状态 (1:正常 2:禁用)'; - RAISE NOTICE '• ak_users.mall_type: 用户类型 (1:消费者 2:商家 3:其他)'; - RAISE NOTICE '• ak_users.total_orders: 总订单数'; - RAISE NOTICE '• ak_users.total_spent: 总消费金额'; - RAISE NOTICE '• ak_users.user_level: 用户等级 (1-10)'; - RAISE NOTICE '• ak_users.points: 用户积分'; - RAISE NOTICE '• ak_users.verified_status: 认证状态 (0:未认证 1:已认证 2:认证失败)'; - RAISE NOTICE '-------------------------------------------------------'; - RAISE NOTICE 'CID 字段说明 (SEO优化):'; - RAISE NOTICE '• ml_categories.cid: 分类SEO友好ID'; - RAISE NOTICE '• ml_brands.cid: 品牌SEO友好ID'; - RAISE NOTICE '• ml_products.cid: 商品SEO友好ID'; - RAISE NOTICE '• ml_shops.cid: 店铺SEO友好ID'; - RAISE NOTICE '• ml_orders.cid: 订单SEO友好ID'; - RAISE NOTICE '-------------------------------------------------------'; - RAISE NOTICE 'SEO 函数说明:'; - RAISE NOTICE '• get_product_by_cid(cid): 根据CID获取商品信息'; - RAISE NOTICE '• get_category_by_cid(cid): 根据CID获取分类信息'; - RAISE NOTICE '• get_brand_by_cid(cid): 根据CID获取品牌信息'; - RAISE NOTICE '• get_shop_by_cid(cid): 根据CID获取店铺信息'; - RAISE NOTICE '• generate_seo_url(type, cid, slug): 生成SEO友好URL'; - RAISE NOTICE '• update_seo_slugs(): 批量更新slug字段'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '使用建议:'; - RAISE NOTICE '1. 此脚本可安全重复执行'; - RAISE NOTICE '2. 使用 IF NOT EXISTS 检查避免重复操作'; - RAISE NOTICE '3. 建议在测试环境先执行验证'; - RAISE NOTICE '4. 可根据实际需要注释掉不需要的字段'; - RAISE NOTICE '5. 执行后可调用 update_seo_slugs() 初始化slug字段'; - RAISE NOTICE '======================================================='; - RAISE NOTICE 'SEO URL 示例:'; - RAISE NOTICE '• 商品页面: /product/123/iphone-15-pro'; - RAISE NOTICE '• 分类页面: /category/45/digital-electronics'; - RAISE NOTICE '• 品牌页面: /brand/12/apple'; - RAISE NOTICE '• 店铺页面: /shop/88/official-store'; - RAISE NOTICE '======================================================='; -END $$; diff --git a/doc_mall/database/mall_migration.sql b/doc_mall/database/mall_migration.sql deleted file mode 100644 index 2ccd0bba..00000000 --- a/doc_mall/database/mall_migration.sql +++ /dev/null @@ -1,868 +0,0 @@ --- ===================================================================================== --- 商城系统数据库迁移脚本 (PostgreSQL + Supabase) --- 用途: 在现有数据库基础上添加商城相关表和功能 --- 说明: 复用 ak_users 表,新增 ml_ 前缀的商城表 --- 执行方式: 直接在数据库中执行此脚本 --- ===================================================================================== - --- 检查必要的扩展 -CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; -CREATE EXTENSION IF NOT EXISTS "pg_stat_statements"; -CREATE EXTENSION IF NOT EXISTS "btree_gin"; - --- ===================================================================================== --- 1. 创建商城用户扩展表 --- ===================================================================================== - --- 商城用户档案表 -CREATE TABLE IF NOT EXISTS public.ml_user_profiles ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID UNIQUE NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - user_type INTEGER DEFAULT 1 NOT NULL, -- 1:消费者 2:商家 3:配送员 4:客服 5:管理员 - status INTEGER DEFAULT 1 NOT NULL, -- 1:正常 2:冻结 3:注销 4:待审核 - real_name VARCHAR(100), -- 真实姓名 - id_card VARCHAR(32), -- 身份证号 - business_license VARCHAR(100), -- 营业执照号 - credit_score INTEGER DEFAULT 100, -- 信用分数 0-1000 - verification_status INTEGER DEFAULT 0, -- 认证状态 0:未认证 1:已认证 2:认证失败 - verification_data JSONB DEFAULT '{}', -- 认证相关数据 - preferences JSONB DEFAULT '{}', -- 用户偏好设置 - emergency_contact VARCHAR(200), -- 紧急联系人 - service_areas JSONB, -- 服务区域(配送员) - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_user_type CHECK (user_type IN (1,2,3,4,5)), - CONSTRAINT chk_ml_user_status CHECK (status IN (1,2,3,4)), - CONSTRAINT chk_ml_verification_status CHECK (verification_status IN (0,1,2)), - CONSTRAINT chk_ml_credit_score CHECK (credit_score >= 0 AND credit_score <= 1000) -); - -COMMENT ON TABLE public.ml_user_profiles IS '商城用户扩展信息表'; - --- 用户地址表 -CREATE TABLE IF NOT EXISTS public.ml_user_addresses ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - receiver_name VARCHAR(100) NOT NULL, - receiver_phone VARCHAR(32) NOT NULL, - province VARCHAR(100) NOT NULL, - city VARCHAR(100) NOT NULL, - district VARCHAR(100) NOT NULL, - street VARCHAR(200), - address_detail TEXT NOT NULL, - postal_code VARCHAR(16), - is_default BOOLEAN DEFAULT FALSE, - label VARCHAR(50), -- home/office/school/other - latitude DECIMAL(10,7), - longitude DECIMAL(10,7), - delivery_instructions TEXT, - business_hours VARCHAR(100), - status INTEGER DEFAULT 1, -- 1:正常 2:禁用 - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_address_status CHECK (status IN (1,2)) -); - -COMMENT ON TABLE public.ml_user_addresses IS '用户地址表'; - --- ===================================================================================== --- 2. 创建商品相关表 --- ===================================================================================== - --- 商品分类表 -CREATE TABLE IF NOT EXISTS public.ml_categories ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, -- SEO友好的自增ID - parent_id UUID REFERENCES public.ml_categories(id), - name VARCHAR(200) NOT NULL, - slug VARCHAR(200) UNIQUE, - description TEXT, - icon_url TEXT, - banner_url TEXT, - sort_order INTEGER DEFAULT 0, - level INTEGER DEFAULT 1, - path TEXT[], -- 分类路径 - is_active BOOLEAN DEFAULT TRUE, - seo_title VARCHAR(200), - seo_description VARCHAR(500), - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -COMMENT ON TABLE public.ml_categories IS '商品分类表'; - --- 品牌表 -CREATE TABLE IF NOT EXISTS public.ml_brands ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, -- SEO友好的自增ID - name VARCHAR(200) NOT NULL, - logo_url TEXT, - description TEXT, - website VARCHAR(500), - is_active BOOLEAN DEFAULT TRUE, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -COMMENT ON TABLE public.ml_brands IS '品牌表'; - --- 商品表 -CREATE TABLE IF NOT EXISTS public.ml_products ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, -- SEO友好的自增ID - merchant_id UUID NOT NULL REFERENCES public.ak_users(id), - category_id UUID NOT NULL REFERENCES public.ml_categories(id), - brand_id UUID REFERENCES public.ml_brands(id), - product_code VARCHAR(100) UNIQUE NOT NULL, - name VARCHAR(500) NOT NULL, - subtitle VARCHAR(1000), - description TEXT, - main_image_url TEXT, - image_urls JSONB DEFAULT '[]', - video_urls JSONB DEFAULT '[]', - - -- 价格信息 - base_price DECIMAL(12,2) NOT NULL CHECK (base_price >= 0), - market_price DECIMAL(12,2), - cost_price DECIMAL(12,2), - - -- 库存信息 - total_stock INTEGER DEFAULT 0 CHECK (total_stock >= 0), - available_stock INTEGER DEFAULT 0 CHECK (available_stock >= 0), - min_order_qty INTEGER DEFAULT 1 CHECK (min_order_qty > 0), - max_order_qty INTEGER, - - -- 基础属性 - weight DECIMAL(10,3), - dimensions JSONB, -- {length, width, height} - - -- 状态 - status INTEGER DEFAULT 1, -- 1:上架 2:下架 3:草稿 4:删除 - is_featured BOOLEAN DEFAULT FALSE, - is_new BOOLEAN DEFAULT FALSE, - is_hot BOOLEAN DEFAULT FALSE, - - -- 统计 - view_count INTEGER DEFAULT 0, - sale_count INTEGER DEFAULT 0, - favorite_count INTEGER DEFAULT 0, - rating_avg DECIMAL(3,2) DEFAULT 0.00 CHECK (rating_avg >= 0 AND rating_avg <= 5), - rating_count INTEGER DEFAULT 0, - - -- SEO - seo_title VARCHAR(200), - seo_description VARCHAR(500), - seo_keywords TEXT[], - slug VARCHAR(200) UNIQUE, - - -- 其他 - tags TEXT[], - attributes JSONB DEFAULT '{}', - - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - published_at TIMESTAMP WITH TIME ZONE, - - CONSTRAINT chk_ml_product_status CHECK (status IN (1,2,3,4)) -); - -COMMENT ON TABLE public.ml_products IS '商品表'; - --- 商品SKU表 -CREATE TABLE IF NOT EXISTS public.ml_product_skus ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - product_id UUID NOT NULL REFERENCES public.ml_products(id) ON DELETE CASCADE, - sku_code VARCHAR(100) UNIQUE NOT NULL, - specifications JSONB DEFAULT '{}', -- 规格组合 - price DECIMAL(12,2) NOT NULL CHECK (price >= 0), - market_price DECIMAL(12,2), - cost_price DECIMAL(12,2), - stock INTEGER DEFAULT 0 CHECK (stock >= 0), - warning_stock INTEGER DEFAULT 10, -- 库存预警 - image_url TEXT, - weight DECIMAL(10,3), - status INTEGER DEFAULT 1, -- 1:正常 2:禁用 - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_sku_status CHECK (status IN (1,2)) -); - -COMMENT ON TABLE public.ml_product_skus IS '商品SKU表'; - --- 商品规格表 -CREATE TABLE IF NOT EXISTS public.ml_product_specs ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - product_id UUID NOT NULL REFERENCES public.ml_products(id) ON DELETE CASCADE, - spec_name VARCHAR(100) NOT NULL, -- 规格名称:颜色、尺寸等 - spec_values JSONB NOT NULL DEFAULT '[]', -- 规格值数组 - sort_order INTEGER DEFAULT 0, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -COMMENT ON TABLE public.ml_product_specs IS '商品规格表'; - --- ===================================================================================== --- 3. 创建店铺相关表 --- ===================================================================================== - --- 店铺信息表 -CREATE TABLE IF NOT EXISTS public.ml_shops ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, -- SEO友好的自增ID - merchant_id UUID UNIQUE NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - shop_name VARCHAR(200) NOT NULL, - shop_logo TEXT, - shop_banner TEXT, - description TEXT, - business_license VARCHAR(100), - contact_name VARCHAR(100), - contact_phone VARCHAR(32), - contact_email VARCHAR(200), - address JSONB, -- 店铺地址信息 - business_hours JSONB, -- 营业时间 - - -- 状态 - status INTEGER DEFAULT 1, -- 1:正常 2:暂停 3:关闭 - - -- 统计 - product_count INTEGER DEFAULT 0, - order_count INTEGER DEFAULT 0, - rating_avg DECIMAL(3,2) DEFAULT 0.00, - rating_count INTEGER DEFAULT 0, - - -- 认证信息 - verified_at TIMESTAMP WITH TIME ZONE, - - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_shop_status CHECK (status IN (1,2,3)) -); - -COMMENT ON TABLE public.ml_shops IS '店铺信息表'; - --- ===================================================================================== --- 4. 创建订单相关表 --- ===================================================================================== - --- 订单表 -CREATE TABLE IF NOT EXISTS public.ml_orders ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, -- SEO友好的自增ID - order_no VARCHAR(50) UNIQUE NOT NULL, - user_id UUID NOT NULL REFERENCES public.ak_users(id), - merchant_id UUID NOT NULL REFERENCES public.ak_users(id), - - -- 金额信息 - product_amount DECIMAL(12,2) NOT NULL DEFAULT 0, -- 商品金额 - discount_amount DECIMAL(12,2) DEFAULT 0, -- 优惠金额 - shipping_fee DECIMAL(12,2) DEFAULT 0, -- 运费 - total_amount DECIMAL(12,2) NOT NULL, -- 总金额 - paid_amount DECIMAL(12,2) DEFAULT 0, -- 已付金额 - - -- 地址信息 - shipping_address JSONB NOT NULL, -- 收货地址 - - -- 状态信息 - order_status INTEGER DEFAULT 1, -- 1:待付款 2:待发货 3:待收货 4:已完成 5:已取消 6:退款中 7:已退款 - payment_status INTEGER DEFAULT 1, -- 1:未付款 2:已付款 3:部分退款 4:全额退款 - shipping_status INTEGER DEFAULT 1, -- 1:未发货 2:已发货 3:运输中 4:已送达 - - -- 时间信息 - paid_at TIMESTAMP WITH TIME ZONE, - shipped_at TIMESTAMP WITH TIME ZONE, - delivered_at TIMESTAMP WITH TIME ZONE, - completed_at TIMESTAMP WITH TIME ZONE, - - -- 其他信息 - remark TEXT, -- 买家备注 - merchant_memo TEXT, -- 商家备注 - cancel_reason TEXT, -- 取消原因 - - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_order_status CHECK (order_status IN (1,2,3,4,5,6,7)), - CONSTRAINT chk_ml_payment_status CHECK (payment_status IN (1,2,3,4)), - CONSTRAINT chk_ml_shipping_status CHECK (shipping_status IN (1,2,3,4)) -); - -COMMENT ON TABLE public.ml_orders IS '订单表'; - --- 订单商品表 -CREATE TABLE IF NOT EXISTS public.ml_order_items ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - order_id UUID NOT NULL REFERENCES public.ml_orders(id) ON DELETE CASCADE, - product_id UUID NOT NULL REFERENCES public.ml_products(id), - sku_id UUID REFERENCES public.ml_product_skus(id), - product_name VARCHAR(500) NOT NULL, - sku_name VARCHAR(500), - specifications JSONB DEFAULT '{}', - image_url TEXT, - price DECIMAL(12,2) NOT NULL, - quantity INTEGER NOT NULL CHECK (quantity > 0), - total_amount DECIMAL(12,2) NOT NULL, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -COMMENT ON TABLE public.ml_order_items IS '订单商品表'; - --- ===================================================================================== --- 5. 创建购物车和营销相关表 --- ===================================================================================== - --- 购物车表 -CREATE TABLE IF NOT EXISTS public.ml_shopping_cart ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - product_id UUID NOT NULL REFERENCES public.ml_products(id) ON DELETE CASCADE, - sku_id UUID REFERENCES public.ml_product_skus(id) ON DELETE CASCADE, - quantity INTEGER NOT NULL CHECK (quantity > 0), - selected BOOLEAN DEFAULT TRUE, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - UNIQUE(user_id, product_id, sku_id) -); - -COMMENT ON TABLE public.ml_shopping_cart IS '购物车表'; - --- 优惠券模板表 -CREATE TABLE IF NOT EXISTS public.ml_coupon_templates ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - cid SERIAL UNIQUE NOT NULL, -- SEO友好的自增ID - merchant_id UUID REFERENCES public.ak_users(id), -- NULL表示平台券 - name VARCHAR(200) NOT NULL, - description TEXT, - coupon_type INTEGER NOT NULL, -- 1:满减券 2:折扣券 3:免运费券 - discount_type INTEGER NOT NULL, -- 1:固定金额 2:百分比 - discount_value DECIMAL(12,2) NOT NULL, -- 优惠值 - min_order_amount DECIMAL(12,2) DEFAULT 0, -- 最低订单金额 - max_discount_amount DECIMAL(12,2), -- 最大优惠金额 - total_quantity INTEGER, -- 总发放数量 - per_user_limit INTEGER DEFAULT 1, -- 每用户限领数量 - usage_limit INTEGER DEFAULT 1, -- 每张券使用次数限制 - - -- 适用范围 - applicable_products JSONB DEFAULT '[]', -- 适用商品ID数组 - applicable_categories JSONB DEFAULT '[]', -- 适用分类ID数组 - - -- 时间限制 - start_time TIMESTAMP WITH TIME ZONE NOT NULL, - end_time TIMESTAMP WITH TIME ZONE NOT NULL, - - status INTEGER DEFAULT 1, -- 1:正常 2:暂停 3:已结束 - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_coupon_type CHECK (coupon_type IN (1,2,3)), - CONSTRAINT chk_ml_discount_type CHECK (discount_type IN (1,2)), - CONSTRAINT chk_ml_coupon_status CHECK (status IN (1,2,3)) -); - -COMMENT ON TABLE public.ml_coupon_templates IS '优惠券模板表'; - --- 用户优惠券表 -CREATE TABLE IF NOT EXISTS public.ml_user_coupons ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - template_id UUID NOT NULL REFERENCES public.ml_coupon_templates(id), - coupon_code VARCHAR(50) UNIQUE NOT NULL, - status INTEGER DEFAULT 1, -- 1:未使用 2:已使用 3:已过期 - used_at TIMESTAMP WITH TIME ZONE, - order_id UUID REFERENCES public.ml_orders(id), - received_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - expire_at TIMESTAMP WITH TIME ZONE NOT NULL, - - CONSTRAINT chk_ml_user_coupon_status CHECK (status IN (1,2,3)) -); - -COMMENT ON TABLE public.ml_user_coupons IS '用户优惠券表'; - --- ===================================================================================== --- 6. 创建配送和评价相关表 --- ===================================================================================== - --- 配送员信息表 -CREATE TABLE IF NOT EXISTS public.ml_delivery_drivers ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID UNIQUE NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - real_name VARCHAR(100) NOT NULL, - id_card VARCHAR(32) NOT NULL, - driver_license VARCHAR(50), - vehicle_type INTEGER, -- 1:电动车 2:摩托车 3:汽车 - vehicle_number VARCHAR(20), - service_areas JSONB DEFAULT '[]', -- 服务区域 - work_status INTEGER DEFAULT 1, -- 1:在线 2:忙碌 3:离线 - current_lat DECIMAL(10,7), - current_lng DECIMAL(10,7), - rating_avg DECIMAL(3,2) DEFAULT 0.00, - rating_count INTEGER DEFAULT 0, - order_count INTEGER DEFAULT 0, - status INTEGER DEFAULT 1, -- 1:正常 2:暂停 3:离职 - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_driver_vehicle_type CHECK (vehicle_type IN (1,2,3)), - CONSTRAINT chk_ml_driver_work_status CHECK (work_status IN (1,2,3)), - CONSTRAINT chk_ml_driver_status CHECK (status IN (1,2,3)) -); - -COMMENT ON TABLE public.ml_delivery_drivers IS '配送员信息表'; - --- 配送任务表 -CREATE TABLE IF NOT EXISTS public.ml_delivery_tasks ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - order_id UUID UNIQUE NOT NULL REFERENCES public.ml_orders(id), - driver_id UUID REFERENCES public.ml_delivery_drivers(id), - pickup_address JSONB NOT NULL, -- 取货地址 - delivery_address JSONB NOT NULL, -- 配送地址 - distance DECIMAL(8,2), -- 配送距离(km) - estimated_time INTEGER, -- 预计配送时间(分钟) - delivery_fee DECIMAL(10,2) NOT NULL DEFAULT 0, - - status INTEGER DEFAULT 1, -- 1:待接单 2:已接单 3:取货中 4:配送中 5:已送达 6:配送失败 - - -- 时间记录 - assigned_at TIMESTAMP WITH TIME ZONE, - picked_at TIMESTAMP WITH TIME ZONE, - delivered_at TIMESTAMP WITH TIME ZONE, - - -- 其他信息 - delivery_code VARCHAR(10), -- 取货码 - remark TEXT, - failure_reason TEXT, - - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_delivery_status CHECK (status IN (1,2,3,4,5,6)) -); - -COMMENT ON TABLE public.ml_delivery_tasks IS '配送任务表'; - --- 商品评价表 -CREATE TABLE IF NOT EXISTS public.ml_product_reviews ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - order_id UUID NOT NULL REFERENCES public.ml_orders(id), - order_item_id UUID NOT NULL REFERENCES public.ml_order_items(id), - user_id UUID NOT NULL REFERENCES public.ak_users(id), - product_id UUID NOT NULL REFERENCES public.ml_products(id), - merchant_id UUID NOT NULL REFERENCES public.ak_users(id), - - rating INTEGER NOT NULL CHECK (rating >= 1 AND rating <= 5), - content TEXT, - images JSONB DEFAULT '[]', -- 评价图片 - is_anonymous BOOLEAN DEFAULT FALSE, - - -- 商家回复 - merchant_reply TEXT, - merchant_replied_at TIMESTAMP WITH TIME ZONE, - - status INTEGER DEFAULT 1, -- 1:正常 2:已删除 3:已隐藏 - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - CONSTRAINT chk_ml_review_status CHECK (status IN (1,2,3)) -); - -COMMENT ON TABLE public.ml_product_reviews IS '商品评价表'; - --- ===================================================================================== --- 7. 创建用户行为和系统配置表 --- ===================================================================================== - --- 用户收藏表 -CREATE TABLE IF NOT EXISTS public.ml_user_favorites ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - target_type INTEGER NOT NULL, -- 1:商品 2:店铺 - target_id UUID NOT NULL, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - UNIQUE(user_id, target_type, target_id), - CONSTRAINT chk_ml_favorite_type CHECK (target_type IN (1,2)) -); - -COMMENT ON TABLE public.ml_user_favorites IS '用户收藏表'; - --- 用户浏览历史表 -CREATE TABLE IF NOT EXISTS public.ml_browse_history ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE, - product_id UUID NOT NULL REFERENCES public.ml_products(id) ON DELETE CASCADE, - browse_duration INTEGER DEFAULT 0, -- 浏览时长(秒) - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - UNIQUE(user_id, product_id) -); - -COMMENT ON TABLE public.ml_browse_history IS '用户浏览历史表'; - --- 搜索记录表 -CREATE TABLE IF NOT EXISTS public.ml_search_history ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id UUID REFERENCES public.ak_users(id) ON DELETE CASCADE, - keyword VARCHAR(200) NOT NULL, - result_count INTEGER DEFAULT 0, - ip_address INET, - user_agent TEXT, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -COMMENT ON TABLE public.ml_search_history IS '搜索记录表'; - --- 系统配置表 -CREATE TABLE IF NOT EXISTS public.ml_system_configs ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - config_key VARCHAR(100) UNIQUE NOT NULL, - config_value JSONB, - description TEXT, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -COMMENT ON TABLE public.ml_system_configs IS '系统配置表'; - --- 地区表 -CREATE TABLE IF NOT EXISTS public.ml_regions ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - parent_id UUID REFERENCES public.ml_regions(id), - name VARCHAR(100) NOT NULL, - code VARCHAR(20), - level INTEGER NOT NULL, -- 1:省份 2:城市 3:区县 4:街道 - sort_order INTEGER DEFAULT 0, - is_active BOOLEAN DEFAULT TRUE, - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - -COMMENT ON TABLE public.ml_regions IS '地区表'; - --- ===================================================================================== --- 8. 创建索引 --- ===================================================================================== - --- 用户扩展表索引 -CREATE INDEX IF NOT EXISTS idx_ml_user_profiles_user_id ON public.ml_user_profiles(user_id); -CREATE INDEX IF NOT EXISTS idx_ml_user_profiles_type ON public.ml_user_profiles(user_type); -CREATE INDEX IF NOT EXISTS idx_ml_user_profiles_status ON public.ml_user_profiles(status); - --- 分类表索引 -CREATE INDEX IF NOT EXISTS idx_ml_categories_cid ON public.ml_categories(cid); -CREATE INDEX IF NOT EXISTS idx_ml_categories_parent ON public.ml_categories(parent_id); -CREATE INDEX IF NOT EXISTS idx_ml_categories_slug ON public.ml_categories(slug); -CREATE INDEX IF NOT EXISTS idx_ml_categories_level ON public.ml_categories(level, sort_order); - --- 品牌表索引 -CREATE INDEX IF NOT EXISTS idx_ml_brands_cid ON public.ml_brands(cid); -CREATE INDEX IF NOT EXISTS idx_ml_brands_name ON public.ml_brands(name); - --- 地址表索引 -CREATE INDEX IF NOT EXISTS idx_ml_user_addresses_user_id ON public.ml_user_addresses(user_id); -CREATE INDEX IF NOT EXISTS idx_ml_user_addresses_default ON public.ml_user_addresses(user_id, is_default); -CREATE INDEX IF NOT EXISTS idx_ml_user_addresses_location ON public.ml_user_addresses(city, district); - --- 商品表索引 -CREATE INDEX IF NOT EXISTS idx_ml_products_cid ON public.ml_products(cid); -CREATE INDEX IF NOT EXISTS idx_ml_products_merchant ON public.ml_products(merchant_id, status); -CREATE INDEX IF NOT EXISTS idx_ml_products_category ON public.ml_products(category_id, status); -CREATE INDEX IF NOT EXISTS idx_ml_products_status ON public.ml_products(status, created_at DESC); -CREATE INDEX IF NOT EXISTS idx_ml_products_featured ON public.ml_products(is_featured, status); -CREATE INDEX IF NOT EXISTS idx_ml_products_price ON public.ml_products(base_price); -CREATE INDEX IF NOT EXISTS idx_ml_products_rating ON public.ml_products(rating_avg DESC, rating_count DESC); -CREATE INDEX IF NOT EXISTS idx_ml_products_sale_count ON public.ml_products(sale_count DESC); -CREATE INDEX IF NOT EXISTS idx_ml_products_tags ON public.ml_products USING GIN(tags); -CREATE INDEX IF NOT EXISTS idx_ml_products_slug ON public.ml_products(slug); - --- 店铺表索引 -CREATE INDEX IF NOT EXISTS idx_ml_shops_cid ON public.ml_shops(cid); -CREATE INDEX IF NOT EXISTS idx_ml_shops_merchant ON public.ml_shops(merchant_id); - --- SKU表索引 -CREATE INDEX IF NOT EXISTS idx_ml_product_skus_product ON public.ml_product_skus(product_id); -CREATE INDEX IF NOT EXISTS idx_ml_product_skus_code ON public.ml_product_skus(sku_code); - --- 订单表索引 -CREATE INDEX IF NOT EXISTS idx_ml_orders_cid ON public.ml_orders(cid); -CREATE INDEX IF NOT EXISTS idx_ml_orders_user ON public.ml_orders(user_id, created_at DESC); -CREATE INDEX IF NOT EXISTS idx_ml_orders_merchant ON public.ml_orders(merchant_id, created_at DESC); -CREATE INDEX IF NOT EXISTS idx_ml_orders_status ON public.ml_orders(order_status, created_at DESC); -CREATE INDEX IF NOT EXISTS idx_ml_orders_no ON public.ml_orders(order_no); - --- 订单商品表索引 -CREATE INDEX IF NOT EXISTS idx_ml_order_items_order ON public.ml_order_items(order_id); -CREATE INDEX IF NOT EXISTS idx_ml_order_items_product ON public.ml_order_items(product_id); - --- 购物车表索引 -CREATE INDEX IF NOT EXISTS idx_ml_shopping_cart_user ON public.ml_shopping_cart(user_id); - --- 优惠券模板表索引 -CREATE INDEX IF NOT EXISTS idx_ml_coupon_templates_cid ON public.ml_coupon_templates(cid); -CREATE INDEX IF NOT EXISTS idx_ml_coupon_templates_merchant ON public.ml_coupon_templates(merchant_id); - --- 优惠券表索引 -CREATE INDEX IF NOT EXISTS idx_ml_user_coupons_user ON public.ml_user_coupons(user_id, status); -CREATE INDEX IF NOT EXISTS idx_ml_user_coupons_code ON public.ml_user_coupons(coupon_code); - --- 收藏表索引 -CREATE INDEX IF NOT EXISTS idx_ml_user_favorites_user ON public.ml_user_favorites(user_id, target_type); -CREATE INDEX IF NOT EXISTS idx_ml_user_favorites_target ON public.ml_user_favorites(target_type, target_id); - --- 浏览历史索引 -CREATE INDEX IF NOT EXISTS idx_ml_browse_history_user ON public.ml_browse_history(user_id, created_at DESC); -CREATE INDEX IF NOT EXISTS idx_ml_browse_history_product ON public.ml_browse_history(product_id); - --- ===================================================================================== --- 9. 创建触发器函数 --- ===================================================================================== - --- 自动更新 updated_at 字段的函数 -CREATE OR REPLACE FUNCTION public.update_updated_at_column() -RETURNS TRIGGER AS $$ -BEGIN - NEW.updated_at = NOW(); - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - --- 创建触发器 (使用 DO 块避免重复创建错误) -DO $$ -BEGIN - -- 用户档案更新触发器 - IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'trigger_ml_user_profiles_updated_at') THEN - CREATE TRIGGER trigger_ml_user_profiles_updated_at - BEFORE UPDATE ON public.ml_user_profiles - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - END IF; - - -- 用户地址更新触发器 - IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'trigger_ml_user_addresses_updated_at') THEN - CREATE TRIGGER trigger_ml_user_addresses_updated_at - BEFORE UPDATE ON public.ml_user_addresses - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - END IF; - - -- 商品更新触发器 - IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'trigger_ml_products_updated_at') THEN - CREATE TRIGGER trigger_ml_products_updated_at - BEFORE UPDATE ON public.ml_products - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - END IF; - - -- SKU更新触发器 - IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'trigger_ml_product_skus_updated_at') THEN - CREATE TRIGGER trigger_ml_product_skus_updated_at - BEFORE UPDATE ON public.ml_product_skus - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - END IF; - - -- 店铺更新触发器 - IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'trigger_ml_shops_updated_at') THEN - CREATE TRIGGER trigger_ml_shops_updated_at - BEFORE UPDATE ON public.ml_shops - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - END IF; - - -- 订单更新触发器 - IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'trigger_ml_orders_updated_at') THEN - CREATE TRIGGER trigger_ml_orders_updated_at - BEFORE UPDATE ON public.ml_orders - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - END IF; - - -- 购物车更新触发器 - IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'trigger_ml_shopping_cart_updated_at') THEN - CREATE TRIGGER trigger_ml_shopping_cart_updated_at - BEFORE UPDATE ON public.ml_shopping_cart - FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column(); - END IF; -END $$; - --- 确保每个用户只有一个默认地址的触发器 -CREATE OR REPLACE FUNCTION public.ensure_single_default_address() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.is_default = TRUE THEN - UPDATE public.ml_user_addresses - SET is_default = FALSE - WHERE user_id = NEW.user_id AND id != NEW.id; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'trigger_ml_single_default_address') THEN - CREATE TRIGGER trigger_ml_single_default_address - BEFORE INSERT OR UPDATE ON public.ml_user_addresses - FOR EACH ROW EXECUTE FUNCTION public.ensure_single_default_address(); - END IF; -END $$; - --- ===================================================================================== --- 10. 创建实用函数 --- ===================================================================================== - --- 创建订单序列 -CREATE SEQUENCE IF NOT EXISTS public.ml_order_seq START 1; - --- 生成订单号的函数 -CREATE OR REPLACE FUNCTION public.generate_order_no() -RETURNS TEXT AS $$ -DECLARE - order_no TEXT; -BEGIN - order_no := 'ML' || TO_CHAR(NOW(), 'YYYYMMDD') || LPAD(NEXTVAL('ml_order_seq')::TEXT, 6, '0'); - RETURN order_no; -END; -$$ LANGUAGE plpgsql; - --- 生成优惠券码的函数 -CREATE OR REPLACE FUNCTION public.generate_coupon_code() -RETURNS TEXT AS $$ -DECLARE - code TEXT; - chars TEXT := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - result TEXT := ''; - i INTEGER; -BEGIN - FOR i IN 1..8 LOOP - result := result || substr(chars, (random() * length(chars))::integer + 1, 1); - END LOOP; - RETURN 'CP' || result; -END; -$$ LANGUAGE plpgsql; - --- 获取用户默认地址 -CREATE OR REPLACE FUNCTION public.get_user_default_address(p_user_id UUID) -RETURNS TABLE ( - id UUID, - receiver_name VARCHAR, - receiver_phone VARCHAR, - full_address TEXT, - latitude DECIMAL, - longitude DECIMAL -) AS $$ -BEGIN - RETURN QUERY - SELECT - a.id, - a.receiver_name, - a.receiver_phone, - (a.province || ' ' || a.city || ' ' || a.district || ' ' || a.address_detail) as full_address, - a.latitude, - a.longitude - FROM public.ml_user_addresses a - WHERE a.user_id = p_user_id AND a.is_default = TRUE AND a.status = 1 - LIMIT 1; -END; -$$ LANGUAGE plpgsql; - --- 检查用户是否为认证商家 -CREATE OR REPLACE FUNCTION public.is_verified_merchant(p_user_id UUID) -RETURNS BOOLEAN AS $$ -DECLARE - result BOOLEAN := FALSE; -BEGIN - SELECT (user_type = 2 AND verification_status = 1) INTO result - FROM public.ml_user_profiles - WHERE user_id = p_user_id; - - RETURN COALESCE(result, FALSE); -END; -$$ LANGUAGE plpgsql; - --- ===================================================================================== --- 11. 创建基础视图 --- ===================================================================================== - --- 商城用户完整信息视图 -CREATE OR REPLACE VIEW public.ml_users_view AS -SELECT - u.id, - u.username, - u.email, - u.phone, - u.avatar_url, - u.gender, - u.birthday, - u.bio, - u.created_at as user_created_at, - u.updated_at as user_updated_at, - p.user_type, - p.status, - p.real_name, - p.credit_score, - p.verification_status, - p.created_at as profile_created_at, - p.updated_at as profile_updated_at, - CASE - WHEN p.user_type = 1 THEN '消费者' - WHEN p.user_type = 2 THEN '商家' - WHEN p.user_type = 3 THEN '配送员' - WHEN p.user_type = 4 THEN '客服' - WHEN p.user_type = 5 THEN '管理员' - ELSE '未知' - END as user_type_name -FROM public.ak_users u -LEFT JOIN public.ml_user_profiles p ON u.id = p.user_id; - -COMMENT ON VIEW public.ml_users_view IS '商城用户完整信息视图'; - --- ===================================================================================== --- 12. 插入初始配置数据 --- ===================================================================================== - --- 插入系统配置 -INSERT INTO public.ml_system_configs (config_key, config_value, description) VALUES -('shipping_fee', '{"default": 10, "free_threshold": 88}', '配送费配置'), -('platform_commission', '{"rate": 0.05}', '平台佣金配置'), -('coupon_settings', '{"max_per_user": 10}', '优惠券设置'), -('order_auto_confirm_days', '7', '订单自动确认天数') -ON CONFLICT (config_key) DO NOTHING; - --- 插入默认分类 -INSERT INTO public.ml_categories (id, name, slug, level, path) VALUES -(uuid_generate_v4(), '数码电器', 'digital', 1, ARRAY['数码电器']), -(uuid_generate_v4(), '服装鞋帽', 'fashion', 1, ARRAY['服装鞋帽']), -(uuid_generate_v4(), '家居用品', 'home', 1, ARRAY['家居用品']), -(uuid_generate_v4(), '食品饮料', 'food', 1, ARRAY['食品饮料']), -(uuid_generate_v4(), '美妆护肤', 'beauty', 1, ARRAY['美妆护肤']) -ON CONFLICT (slug) DO NOTHING; - --- 为现有 ak_users 用户创建默认商城档案 (如果不存在) -INSERT INTO public.ml_user_profiles (user_id, user_type, status) -SELECT - id, - 1, -- 默认为消费者 - 1 -- 默认状态正常 -FROM public.ak_users -WHERE id NOT IN (SELECT user_id FROM public.ml_user_profiles WHERE user_id IS NOT NULL); - --- ===================================================================================== --- 13. 完成提示 --- ===================================================================================== - -DO $$ -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '商城数据库迁移完成!'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '已创建表数量: 17 张商城表'; - RAISE NOTICE '已创建索引: 30+ 个索引'; - RAISE NOTICE '已创建触发器: 8 个触发器'; - RAISE NOTICE '已创建函数: 6 个函数'; - RAISE NOTICE '已创建视图: 1 个视图'; - RAISE NOTICE '已插入基础配置和分类数据'; - RAISE NOTICE '已为现有用户创建默认商城档案'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '表名前缀: ml_'; - RAISE NOTICE '复用表: ak_users'; - RAISE NOTICE '兼容: Supabase'; - RAISE NOTICE '======================================================='; -END $$; diff --git a/doc_mall/database/mall_seo_security.sql b/doc_mall/database/mall_seo_security.sql deleted file mode 100644 index 39eaedeb..00000000 --- a/doc_mall/database/mall_seo_security.sql +++ /dev/null @@ -1,666 +0,0 @@ --- ===================================================================================== --- 商城系统 SEO 优化和安全策略脚本 --- 用途: 为商城系统添加 SEO 优化函数和 RLS 安全策略 --- 前置条件: 需要先执行 mall_migration.sql --- ===================================================================================== - --- ===================================================================================== --- 1. SEO 优化相关函数 --- ===================================================================================== - --- 根据 cid 获取商品信息 (SEO 友好) -CREATE OR REPLACE FUNCTION public.get_product_by_cid(p_cid INTEGER) -RETURNS TABLE ( - id UUID, - cid INTEGER, - name VARCHAR, - slug VARCHAR, - description TEXT, - main_image_url TEXT, - base_price DECIMAL, - rating_avg DECIMAL, - sale_count INTEGER, - category_name VARCHAR, - brand_name VARCHAR, - shop_name VARCHAR -) AS $$ -BEGIN - RETURN QUERY - SELECT - p.id, - p.cid, - p.name, - p.slug, - p.description, - p.main_image_url, - p.base_price, - p.rating_avg, - p.sale_count, - c.name as category_name, - b.name as brand_name, - s.shop_name - FROM public.ml_products p - LEFT JOIN public.ml_categories c ON p.category_id = c.id - LEFT JOIN public.ml_brands b ON p.brand_id = b.id - LEFT JOIN public.ml_shops s ON p.merchant_id = s.merchant_id - WHERE p.cid = p_cid AND p.status = 1; -END; -$$ LANGUAGE plpgsql; - --- 根据 cid 获取分类信息 (SEO 友好) -CREATE OR REPLACE FUNCTION public.get_category_by_cid(p_cid INTEGER) -RETURNS TABLE ( - id UUID, - cid INTEGER, - name VARCHAR, - slug VARCHAR, - description TEXT, - icon_url TEXT, - path TEXT[] -) AS $$ -BEGIN - RETURN QUERY - SELECT - c.id, - c.cid, - c.name, - c.slug, - c.description, - c.icon_url, - c.path - FROM public.ml_categories c - WHERE c.cid = p_cid AND c.is_active = TRUE; -END; -$$ LANGUAGE plpgsql; - --- 根据 cid 获取品牌信息 (SEO 友好) -CREATE OR REPLACE FUNCTION public.get_brand_by_cid(p_cid INTEGER) -RETURNS TABLE ( - id UUID, - cid INTEGER, - name VARCHAR, - logo_url TEXT, - description TEXT -) AS $$ -BEGIN - RETURN QUERY - SELECT - b.id, - b.cid, - b.name, - b.logo_url, - b.description - FROM public.ml_brands b - WHERE b.cid = p_cid AND b.is_active = TRUE; -END; -$$ LANGUAGE plpgsql; - --- 根据 cid 获取店铺信息 (SEO 友好) -CREATE OR REPLACE FUNCTION public.get_shop_by_cid(p_cid INTEGER) -RETURNS TABLE ( - id UUID, - cid INTEGER, - shop_name VARCHAR, - description TEXT, - shop_logo TEXT, - rating_avg DECIMAL, - product_count INTEGER -) AS $$ -BEGIN - RETURN QUERY - SELECT - s.id, - s.cid, - s.shop_name, - s.description, - s.shop_logo, - s.rating_avg, - s.product_count - FROM public.ml_shops s - WHERE s.cid = p_cid AND s.status = 1; -END; -$$ LANGUAGE plpgsql; - --- 生成 SEO 友好的 URL 路径 -CREATE OR REPLACE FUNCTION public.generate_seo_url( - p_type VARCHAR, -- 'product', 'category', 'brand', 'shop' - p_cid INTEGER, - p_slug VARCHAR DEFAULT NULL -) -RETURNS TEXT AS $$ -DECLARE - url_path TEXT; -BEGIN - CASE p_type - WHEN 'product' THEN - url_path := '/product/' || p_cid; - IF p_slug IS NOT NULL THEN - url_path := url_path || '/' || p_slug; - END IF; - WHEN 'category' THEN - url_path := '/category/' || p_cid; - IF p_slug IS NOT NULL THEN - url_path := url_path || '/' || p_slug; - END IF; - WHEN 'brand' THEN - url_path := '/brand/' || p_cid; - IF p_slug IS NOT NULL THEN - url_path := url_path || '/' || p_slug; - END IF; - WHEN 'shop' THEN - url_path := '/shop/' || p_cid; - IF p_slug IS NOT NULL THEN - url_path := url_path || '/' || p_slug; - END IF; - ELSE - url_path := '/' || p_type || '/' || p_cid; - END CASE; - - RETURN url_path; -END; -$$ LANGUAGE plpgsql; - --- 批量更新 slug 字段(用于现有数据) -CREATE OR REPLACE FUNCTION public.update_seo_slugs() -RETURNS VOID AS $$ -BEGIN - -- 更新商品 slug - UPDATE public.ml_products - SET slug = LOWER(REGEXP_REPLACE(name, '[^a-zA-Z0-9\u4e00-\u9fa5]+', '-', 'g')) - WHERE slug IS NULL OR slug = ''; - - -- 更新分类 slug - UPDATE public.ml_categories - SET slug = LOWER(REGEXP_REPLACE(name, '[^a-zA-Z0-9\u4e00-\u9fa5]+', '-', 'g')) - WHERE slug IS NULL OR slug = ''; - - RAISE NOTICE 'SEO slugs updated successfully'; -END; -$$ LANGUAGE plpgsql; - --- ===================================================================================== --- 2. 商业逻辑函数 --- ===================================================================================== - --- 计算购物车总金额 -CREATE OR REPLACE FUNCTION public.calculate_cart_total(p_user_id UUID) -RETURNS DECIMAL AS $$ -DECLARE - total_amount DECIMAL := 0; -BEGIN - SELECT COALESCE(SUM( - CASE - WHEN s.id IS NOT NULL THEN s.price * c.quantity - ELSE p.base_price * c.quantity - END - ), 0) INTO total_amount - FROM public.ml_shopping_cart c - LEFT JOIN public.ml_product_skus s ON c.sku_id = s.id - LEFT JOIN public.ml_products p ON c.product_id = p.id - WHERE c.user_id = p_user_id - AND c.selected = TRUE - AND p.status = 1 - AND (s.id IS NULL OR s.status = 1); - - RETURN total_amount; -END; -$$ LANGUAGE plpgsql; - --- 获取商品可用库存 -CREATE OR REPLACE FUNCTION public.get_product_available_stock(p_product_id UUID, p_sku_id UUID DEFAULT NULL) -RETURNS INTEGER AS $$ -DECLARE - stock_count INTEGER := 0; -BEGIN - IF p_sku_id IS NOT NULL THEN - -- 获取特定SKU库存 - SELECT COALESCE(stock, 0) INTO stock_count - FROM public.ml_product_skus - WHERE id = p_sku_id AND product_id = p_product_id AND status = 1; - ELSE - -- 获取商品总库存 - SELECT COALESCE(available_stock, 0) INTO stock_count - FROM public.ml_products - WHERE id = p_product_id AND status = 1; - END IF; - - RETURN stock_count; -END; -$$ LANGUAGE plpgsql; - --- 商品库存更新触发器函数 -CREATE OR REPLACE FUNCTION public.update_product_stock() -RETURNS TRIGGER AS $$ -BEGIN - -- 更新商品总库存 - IF TG_OP = 'DELETE' THEN - UPDATE public.ml_products - SET - total_stock = ( - SELECT COALESCE(SUM(stock), 0) - FROM public.ml_product_skus - WHERE product_id = OLD.product_id AND status = 1 - ), - available_stock = ( - SELECT COALESCE(SUM(stock), 0) - FROM public.ml_product_skus - WHERE product_id = OLD.product_id AND status = 1 - ) - WHERE id = OLD.product_id; - RETURN OLD; - ELSE - UPDATE public.ml_products - SET - total_stock = ( - SELECT COALESCE(SUM(stock), 0) - FROM public.ml_product_skus - WHERE product_id = NEW.product_id AND status = 1 - ), - available_stock = ( - SELECT COALESCE(SUM(stock), 0) - FROM public.ml_product_skus - WHERE product_id = NEW.product_id AND status = 1 - ) - WHERE id = NEW.product_id; - RETURN NEW; - END IF; -END; -$$ LANGUAGE plpgsql; - --- 订单状态变更时的处理 -CREATE OR REPLACE FUNCTION public.handle_order_status_change() -RETURNS TRIGGER AS $$ -BEGIN - -- 如果订单状态变为已付款 - IF NEW.order_status = 2 AND (OLD.order_status IS NULL OR OLD.order_status = 1) THEN - NEW.paid_at = NOW(); - END IF; - - -- 如果订单状态变为已发货 - IF NEW.order_status = 3 AND OLD.order_status = 2 THEN - NEW.shipped_at = NOW(); - END IF; - - -- 如果订单状态变为已完成 - IF NEW.order_status = 4 AND OLD.order_status = 3 THEN - NEW.delivered_at = NOW(); - NEW.completed_at = NOW(); - - -- 更新商品销量 - UPDATE public.ml_products - SET sale_count = sale_count + ( - SELECT SUM(quantity) - FROM public.ml_order_items - WHERE order_id = NEW.id - ) - WHERE id IN ( - SELECT product_id - FROM public.ml_order_items - WHERE order_id = NEW.id - ); - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - --- 创建库存更新触发器 -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'trigger_ml_update_product_stock') THEN - CREATE TRIGGER trigger_ml_update_product_stock - AFTER INSERT OR UPDATE OR DELETE ON public.ml_product_skus - FOR EACH ROW EXECUTE FUNCTION public.update_product_stock(); - END IF; -END $$; - --- 创建订单状态变更触发器 -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'trigger_ml_order_status_change') THEN - CREATE TRIGGER trigger_ml_order_status_change - BEFORE UPDATE ON public.ml_orders - FOR EACH ROW EXECUTE FUNCTION public.handle_order_status_change(); - END IF; -END $$; - --- ===================================================================================== --- 3. 创建详细视图 --- ===================================================================================== - --- 商品详情视图 -CREATE OR REPLACE VIEW public.ml_products_detail_view AS -SELECT - p.*, - c.cid as category_cid, - c.name as category_name, - c.path as category_path, - b.cid as brand_cid, - b.name as brand_name, - s.cid as shop_cid, - s.shop_name, - u.username as merchant_name, - CASE - WHEN p.status = 1 THEN '上架' - WHEN p.status = 2 THEN '下架' - WHEN p.status = 3 THEN '草稿' - WHEN p.status = 4 THEN '删除' - ELSE '未知' - END as status_name -FROM public.ml_products p -LEFT JOIN public.ml_categories c ON p.category_id = c.id -LEFT JOIN public.ml_brands b ON p.brand_id = b.id -LEFT JOIN public.ml_shops s ON p.merchant_id = s.merchant_id -LEFT JOIN public.ak_users u ON p.merchant_id = u.id; - -COMMENT ON VIEW public.ml_products_detail_view IS '商品详情视图'; - --- 订单详情视图 -CREATE OR REPLACE VIEW public.ml_orders_detail_view AS -SELECT - o.*, - u.username as customer_name, - u.phone as customer_phone, - m.username as merchant_name, - s.shop_name, - CASE - WHEN o.order_status = 1 THEN '待付款' - WHEN o.order_status = 2 THEN '待发货' - WHEN o.order_status = 3 THEN '待收货' - WHEN o.order_status = 4 THEN '已完成' - WHEN o.order_status = 5 THEN '已取消' - WHEN o.order_status = 6 THEN '退款中' - WHEN o.order_status = 7 THEN '已退款' - ELSE '未知' - END as order_status_name, - CASE - WHEN o.payment_status = 1 THEN '未付款' - WHEN o.payment_status = 2 THEN '已付款' - WHEN o.payment_status = 3 THEN '部分退款' - WHEN o.payment_status = 4 THEN '全额退款' - ELSE '未知' - END as payment_status_name -FROM public.ml_orders o -LEFT JOIN public.ak_users u ON o.user_id = u.id -LEFT JOIN public.ak_users m ON o.merchant_id = m.id -LEFT JOIN public.ml_shops s ON o.merchant_id = s.merchant_id; - -COMMENT ON VIEW public.ml_orders_detail_view IS '订单详情视图'; - --- ===================================================================================== --- 4. RLS (Row Level Security) 策略 --- ===================================================================================== - --- 启用 RLS -ALTER TABLE public.ml_user_profiles ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ml_user_addresses ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ml_shopping_cart ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ml_user_favorites ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ml_browse_history ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ml_user_coupons ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ml_orders ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ml_products ENABLE ROW LEVEL SECURITY; - --- 用户档案策略:用户只能访问自己的数据 -DO $$ -BEGIN - -- 删除可能存在的策略 - DROP POLICY IF EXISTS ml_user_profiles_select_policy ON public.ml_user_profiles; - DROP POLICY IF EXISTS ml_user_profiles_insert_policy ON public.ml_user_profiles; - DROP POLICY IF EXISTS ml_user_profiles_update_policy ON public.ml_user_profiles; - DROP POLICY IF EXISTS ml_user_profiles_delete_policy ON public.ml_user_profiles; - - -- 创建新策略 - CREATE POLICY ml_user_profiles_select_policy ON public.ml_user_profiles - FOR SELECT USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_user_profiles_insert_policy ON public.ml_user_profiles - FOR INSERT WITH CHECK ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_user_profiles_update_policy ON public.ml_user_profiles - FOR UPDATE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_user_profiles_delete_policy ON public.ml_user_profiles - FOR DELETE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); -END $$; - --- 用户地址策略 -DO $$ -BEGIN - DROP POLICY IF EXISTS ml_user_addresses_select_policy ON public.ml_user_addresses; - DROP POLICY IF EXISTS ml_user_addresses_insert_policy ON public.ml_user_addresses; - DROP POLICY IF EXISTS ml_user_addresses_update_policy ON public.ml_user_addresses; - DROP POLICY IF EXISTS ml_user_addresses_delete_policy ON public.ml_user_addresses; - - CREATE POLICY ml_user_addresses_select_policy ON public.ml_user_addresses - FOR SELECT USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_user_addresses_insert_policy ON public.ml_user_addresses - FOR INSERT WITH CHECK ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_user_addresses_update_policy ON public.ml_user_addresses - FOR UPDATE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_user_addresses_delete_policy ON public.ml_user_addresses - FOR DELETE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); -END $$; - --- 购物车策略 -DO $$ -BEGIN - DROP POLICY IF EXISTS ml_shopping_cart_select_policy ON public.ml_shopping_cart; - DROP POLICY IF EXISTS ml_shopping_cart_insert_policy ON public.ml_shopping_cart; - DROP POLICY IF EXISTS ml_shopping_cart_update_policy ON public.ml_shopping_cart; - DROP POLICY IF EXISTS ml_shopping_cart_delete_policy ON public.ml_shopping_cart; - - CREATE POLICY ml_shopping_cart_select_policy ON public.ml_shopping_cart - FOR SELECT USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_shopping_cart_insert_policy ON public.ml_shopping_cart - FOR INSERT WITH CHECK ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_shopping_cart_update_policy ON public.ml_shopping_cart - FOR UPDATE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_shopping_cart_delete_policy ON public.ml_shopping_cart - FOR DELETE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); -END $$; - --- 订单策略:用户可以查看自己的订单,商家可以查看自己店铺的订单 -DO $$ -BEGIN - DROP POLICY IF EXISTS ml_orders_select_policy ON public.ml_orders; - DROP POLICY IF EXISTS ml_orders_insert_policy ON public.ml_orders; - DROP POLICY IF EXISTS ml_orders_update_policy ON public.ml_orders; - DROP POLICY IF EXISTS ml_orders_delete_policy ON public.ml_orders; - - CREATE POLICY ml_orders_select_policy ON public.ml_orders - FOR SELECT USING ( - auth.uid() IN ( - SELECT auth_id FROM public.ak_users WHERE id IN (user_id, merchant_id) - ) - ); - - CREATE POLICY ml_orders_insert_policy ON public.ml_orders - FOR INSERT WITH CHECK ( - auth.uid() IN ( - SELECT auth_id FROM public.ak_users WHERE id IN (user_id, merchant_id) - ) - ); - - CREATE POLICY ml_orders_update_policy ON public.ml_orders - FOR UPDATE USING ( - auth.uid() IN ( - SELECT auth_id FROM public.ak_users WHERE id IN (user_id, merchant_id) - ) - ); - - CREATE POLICY ml_orders_delete_policy ON public.ml_orders - FOR DELETE USING ( - auth.uid() IN ( - SELECT auth_id FROM public.ak_users WHERE id IN (user_id, merchant_id) - ) - ); -END $$; - --- 商品策略:所有人可以查看上架商品,商家只能管理自己的商品 -DO $$ -BEGIN - DROP POLICY IF EXISTS ml_products_select_policy ON public.ml_products; - DROP POLICY IF EXISTS ml_products_insert_policy ON public.ml_products; - DROP POLICY IF EXISTS ml_products_update_policy ON public.ml_products; - DROP POLICY IF EXISTS ml_products_delete_policy ON public.ml_products; - - CREATE POLICY ml_products_select_policy ON public.ml_products - FOR SELECT USING (status = 1); - - CREATE POLICY ml_products_insert_policy ON public.ml_products - FOR INSERT WITH CHECK ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = merchant_id) - ); - - CREATE POLICY ml_products_update_policy ON public.ml_products - FOR UPDATE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = merchant_id) - ); - - CREATE POLICY ml_products_delete_policy ON public.ml_products - FOR DELETE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = merchant_id) - ); -END $$; - --- 收藏策略 -DO $$ -BEGIN - DROP POLICY IF EXISTS ml_user_favorites_select_policy ON public.ml_user_favorites; - DROP POLICY IF EXISTS ml_user_favorites_insert_policy ON public.ml_user_favorites; - DROP POLICY IF EXISTS ml_user_favorites_update_policy ON public.ml_user_favorites; - DROP POLICY IF EXISTS ml_user_favorites_delete_policy ON public.ml_user_favorites; - - CREATE POLICY ml_user_favorites_select_policy ON public.ml_user_favorites - FOR SELECT USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_user_favorites_insert_policy ON public.ml_user_favorites - FOR INSERT WITH CHECK ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_user_favorites_update_policy ON public.ml_user_favorites - FOR UPDATE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_user_favorites_delete_policy ON public.ml_user_favorites - FOR DELETE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); -END $$; - --- 浏览历史策略 -DO $$ -BEGIN - DROP POLICY IF EXISTS ml_browse_history_select_policy ON public.ml_browse_history; - DROP POLICY IF EXISTS ml_browse_history_insert_policy ON public.ml_browse_history; - DROP POLICY IF EXISTS ml_browse_history_update_policy ON public.ml_browse_history; - DROP POLICY IF EXISTS ml_browse_history_delete_policy ON public.ml_browse_history; - - CREATE POLICY ml_browse_history_select_policy ON public.ml_browse_history - FOR SELECT USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_browse_history_insert_policy ON public.ml_browse_history - FOR INSERT WITH CHECK ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_browse_history_update_policy ON public.ml_browse_history - FOR UPDATE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_browse_history_delete_policy ON public.ml_browse_history - FOR DELETE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); -END $$; - --- 优惠券策略 -DO $$ -BEGIN - DROP POLICY IF EXISTS ml_user_coupons_select_policy ON public.ml_user_coupons; - DROP POLICY IF EXISTS ml_user_coupons_insert_policy ON public.ml_user_coupons; - DROP POLICY IF EXISTS ml_user_coupons_update_policy ON public.ml_user_coupons; - DROP POLICY IF EXISTS ml_user_coupons_delete_policy ON public.ml_user_coupons; - - CREATE POLICY ml_user_coupons_select_policy ON public.ml_user_coupons - FOR SELECT USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_user_coupons_insert_policy ON public.ml_user_coupons - FOR INSERT WITH CHECK ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_user_coupons_update_policy ON public.ml_user_coupons - FOR UPDATE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); - - CREATE POLICY ml_user_coupons_delete_policy ON public.ml_user_coupons - FOR DELETE USING ( - auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id) - ); -END $$; - --- ===================================================================================== --- 5. 完成提示 --- ===================================================================================== - -DO $$ -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE 'SEO 优化和安全策略配置完成!'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '已创建 SEO 函数: 6 个'; - RAISE NOTICE '已创建业务函数: 4 个'; - RAISE NOTICE '已创建详细视图: 2 个'; - RAISE NOTICE '已配置 RLS 策略: 8 个表'; - RAISE NOTICE '已创建库存和订单触发器'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '功能说明:'; - RAISE NOTICE '- SEO 友好的 URL 生成'; - RAISE NOTICE '- CID 基础的数据查询'; - RAISE NOTICE '- 自动库存管理'; - RAISE NOTICE '- 订单状态自动更新'; - RAISE NOTICE '- 用户数据安全隔离'; - RAISE NOTICE '======================================================='; -END $$; diff --git a/doc_mall/database/mock_data_insert.sql b/doc_mall/database/mock_data_insert.sql deleted file mode 100644 index d1d4b775..00000000 --- a/doc_mall/database/mock_data_insert.sql +++ /dev/null @@ -1,1180 +0,0 @@ --- ===================================================================================== --- 商城系统模拟数据插入脚本 --- 依赖: complete_mall_database.sql (必须先执行主数据库脚本) --- 重要: 需要先在 Supabase Auth 中创建测试用户,建议使用 create_supabase_auth_users.js --- 用途: 为商城系统生成测试数据,便于开发和测试 --- ===================================================================================== - --- ===================================================================================== --- 0. 检查 Supabase Auth 用户环境 --- ===================================================================================== - --- 检查是否为 Supabase 环境 -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.schemata WHERE schema_name = 'auth') THEN - RAISE WARNING '当前环境不是 Supabase,将使用虚拟 auth_id'; - RAISE WARNING '如果是 Supabase 环境,请先使用以下方式创建测试用户:'; - RAISE WARNING '1. 执行 create_supabase_auth_users.js 脚本'; - RAISE WARNING '2. 或在 Supabase Dashboard 中手动创建用户'; - ELSE - RAISE NOTICE '检测到 Supabase 环境,将尝试关联真实 auth 用户'; - - -- 检查是否有测试用户 - IF EXISTS (SELECT 1 FROM auth.users WHERE email LIKE '%@mall.com') THEN - RAISE NOTICE '发现测试用户,将使用真实 auth_id'; - ELSE - RAISE WARNING '未发现测试用户,建议先执行 create_supabase_auth_users.js'; - RAISE WARNING '或手动在 Supabase Dashboard 创建以下测试用户:'; - RAISE WARNING '- admin@mall.com'; - RAISE WARNING '- merchant1@mall.com'; - RAISE WARNING '- merchant2@mall.com'; - RAISE WARNING '- customer1@mall.com'; - RAISE WARNING '- customer2@mall.com'; - RAISE WARNING '- customer3@mall.com'; - RAISE WARNING '- driver1@mall.com'; - RAISE WARNING '- driver2@mall.com'; - END IF; - END IF; -END $$; - --- ===================================================================================== --- 1. 清理现有测试数据 (可选,谨慎使用) --- ===================================================================================== - --- TRUNCATE TABLE public.ml_product_reviews CASCADE; --- TRUNCATE TABLE public.ml_order_items CASCADE; --- TRUNCATE TABLE public.ml_orders CASCADE; --- TRUNCATE TABLE public.ml_shopping_cart CASCADE; --- TRUNCATE TABLE public.ml_user_coupons CASCADE; --- TRUNCATE TABLE public.ml_coupon_templates CASCADE; --- TRUNCATE TABLE public.ml_product_skus CASCADE; --- TRUNCATE TABLE public.ml_products CASCADE; --- TRUNCATE TABLE public.ml_shops CASCADE; --- TRUNCATE TABLE public.ml_brands CASCADE; --- TRUNCATE TABLE public.ml_categories CASCADE; --- TRUNCATE TABLE public.ml_user_addresses CASCADE; --- TRUNCATE TABLE public.ml_user_profiles CASCADE; - --- ===================================================================================== --- 2. Supabase Auth 用户创建 + ak_users 数据 --- ===================================================================================== - --- 重要提示:在 Supabase 环境中,建议通过以下方式创建测试用户: --- --- 方法一:使用 Supabase Dashboard 手动创建用户 --- 1. 进入 Supabase Dashboard -> Authentication -> Users --- 2. 点击 "Add user" 创建以下测试用户: --- - admin@mall.com (密码: Test123456!) --- - merchant1@mall.com (密码: Test123456!) --- - merchant2@mall.com (密码: Test123456!) --- - customer1@mall.com (密码: Test123456!) --- - customer2@mall.com (密码: Test123456!) --- - customer3@mall.com (密码: Test123456!) --- - driver1@mall.com (密码: Test123456!) --- - driver2@mall.com (密码: Test123456!) --- --- 方法二:使用 Supabase Admin API (需要在服务端执行) --- --- 方法三:如果在本地开发环境,可以尝试直接插入 auth.users 表(仅限开发) - --- 检查是否为 Supabase 环境 -DO $$ -DECLARE - is_supabase BOOLEAN := FALSE; - auth_user_rec RECORD; - test_emails TEXT[] := ARRAY[ - 'admin@mall.com', - 'merchant1@mall.com', - 'merchant2@mall.com', - 'customer1@mall.com', - 'customer2@mall.com', - 'customer3@mall.com', - 'driver1@mall.com', - 'driver2@mall.com' - ]; - email_addr TEXT; -BEGIN - -- 检查是否存在 auth schema (Supabase 特征) - SELECT EXISTS ( - SELECT 1 FROM information_schema.schemata WHERE schema_name = 'auth' - ) INTO is_supabase; - - IF is_supabase THEN - RAISE NOTICE '检测到 Supabase 环境,检查 auth.users 表中的测试用户...'; - - -- 检查测试用户是否存在 - FOREACH email_addr IN ARRAY test_emails LOOP - SELECT id, email INTO auth_user_rec - FROM auth.users - WHERE email = email_addr - LIMIT 1; - - IF FOUND THEN - RAISE NOTICE '✓ Auth用户已存在: % (ID: %)', auth_user_rec.email, auth_user_rec.id; - ELSE - RAISE NOTICE '✗ Auth用户不存在: %', email_addr; - RAISE NOTICE '请在 Supabase Dashboard 中创建此用户或使用 Admin API'; - END IF; - END LOOP; - - RAISE NOTICE '============================================'; - RAISE NOTICE '如果有缺失的用户,请按以下步骤操作:'; - RAISE NOTICE '1. 登录 Supabase Dashboard'; - RAISE NOTICE '2. 进入 Authentication -> Users'; - RAISE NOTICE '3. 点击 "Add user" 创建缺失的用户'; - RAISE NOTICE '4. 邮箱格式: user@mall.com, 密码: Test123456!'; - RAISE NOTICE '5. 重新执行此脚本'; - RAISE NOTICE '============================================'; - ELSE - RAISE NOTICE '非 Supabase 环境,将创建虚拟 auth_id...'; - END IF; -END $$; - --- ===================================================================================== --- 1. 插入用户数据 (ak_users) - 关联 Supabase Auth 用户 --- ===================================================================================== - --- 临时函数:获取或创建 auth_id -CREATE OR REPLACE FUNCTION get_or_create_auth_id(user_email TEXT) -RETURNS UUID AS $$ -DECLARE - auth_user_id UUID; -BEGIN - -- 尝试从 auth.users 获取真实用户ID - IF EXISTS (SELECT 1 FROM information_schema.schemata WHERE schema_name = 'auth') THEN - SELECT id INTO auth_user_id FROM auth.users WHERE email = user_email LIMIT 1; - - IF auth_user_id IS NOT NULL THEN - RETURN auth_user_id; - ELSE - RAISE WARNING '用户 % 在 auth.users 中不存在,使用虚拟UUID', user_email; - END IF; - END IF; - - -- 生成确定性虚拟UUID (基于邮箱) - RETURN uuid_generate_v5(uuid_ns_dns(), user_email); -END; -$$ LANGUAGE plpgsql; - --- 插入系统管理员 -INSERT INTO ak_users (auth_id, username, role, email, phone, avatar_url, status, registration_source, created_at, updated_at) -SELECT - get_or_create_auth_id('admin@mall.com'), - '系统管理员', - 'admin', - 'admin@mall.com', - '13800138000', - 'https://example.com/avatars/admin.jpg', - 'active', - 'web', - NOW() - INTERVAL '365 days', - NOW() -WHERE NOT EXISTS (SELECT 1 FROM ak_users WHERE email = 'admin@mall.com'); - --- 插入商家用户 -INSERT INTO ak_users (auth_id, username, role, email, phone, avatar_url, status, registration_source, created_at, updated_at) -SELECT - get_or_create_auth_id('merchant1@mall.com'), - '数码专营店', - 'merchant', - 'merchant1@mall.com', - '13800138001', - 'https://example.com/avatars/merchant1.jpg', - 'active', - 'web', - NOW() - INTERVAL '300 days', - NOW() -WHERE NOT EXISTS (SELECT 1 FROM ak_users WHERE email = 'merchant1@mall.com'); - -INSERT INTO ak_users (auth_id, username, role, email, phone, avatar_url, status, registration_source, created_at, updated_at) -SELECT - get_or_create_auth_id('merchant2@mall.com'), - '时尚服饰店', - 'merchant', - 'merchant2@mall.com', - '13800138002', - 'https://example.com/avatars/merchant2.jpg', - 'active', - 'web', - NOW() - INTERVAL '200 days', - NOW() -WHERE NOT EXISTS (SELECT 1 FROM ak_users WHERE email = 'merchant2@mall.com'); - --- 插入普通用户 -INSERT INTO ak_users (auth_id, username, role, email, phone, avatar_url, status, registration_source, created_at, updated_at) -SELECT - get_or_create_auth_id('customer1@mall.com'), - '张小明', - 'customer', - 'customer1@mall.com', - '13800138101', - 'https://example.com/avatars/customer1.jpg', - 'active', - 'mobile', - NOW() - INTERVAL '180 days', - NOW() -WHERE NOT EXISTS (SELECT 1 FROM ak_users WHERE email = 'customer1@mall.com'); - -INSERT INTO ak_users (auth_id, username, role, email, phone, avatar_url, status, registration_source, created_at, updated_at) -SELECT - get_or_create_auth_id('customer2@mall.com'), - '李小红', - 'customer', - 'customer2@mall.com', - '13800138102', - 'https://example.com/avatars/customer2.jpg', - 'active', - 'mobile', - NOW() - INTERVAL '120 days', - NOW() -WHERE NOT EXISTS (SELECT 1 FROM ak_users WHERE email = 'customer2@mall.com'); - -INSERT INTO ak_users (auth_id, username, role, email, phone, avatar_url, status, registration_source, created_at, updated_at) -SELECT - get_or_create_auth_id('customer3@mall.com'), - '王小华', - 'customer', - 'customer3@mall.com', - '13800138103', - 'https://example.com/avatars/customer3.jpg', - 'active', - 'web', - NOW() - INTERVAL '90 days', - NOW() -WHERE NOT EXISTS (SELECT 1 FROM ak_users WHERE email = 'customer3@mall.com'); - --- 插入配送员 -INSERT INTO ak_users (auth_id, username, role, email, phone, avatar_url, status, registration_source, created_at, updated_at) -SELECT - get_or_create_auth_id('driver1@mall.com'), - '快递小哥1', - 'delivery', - 'driver1@mall.com', - '13800138201', - 'https://example.com/avatars/driver1.jpg', - 'active', - 'mobile', - NOW() - INTERVAL '150 days', - NOW() -WHERE NOT EXISTS (SELECT 1 FROM ak_users WHERE email = 'driver1@mall.com'); - -INSERT INTO ak_users (auth_id, username, role, email, phone, avatar_url, status, registration_source, created_at, updated_at) -SELECT - get_or_create_auth_id('driver2@mall.com'), - '快递小哥2', - 'delivery', - 'driver2@mall.com', - '13800138202', - 'https://example.com/avatars/driver2.jpg', - 'active', - 'mobile', - NOW() - INTERVAL '100 days', - NOW() -WHERE NOT EXISTS (SELECT 1 FROM ak_users WHERE email = 'driver2@mall.com'); - --- 清理临时函数 -DROP FUNCTION get_or_create_auth_id(TEXT); - --- ===================================================================================== --- 2. 获取用户ID (用于后续插入) --- ===================================================================================== -DO $$ -DECLARE - admin_id UUID; - merchant1_id UUID; - merchant2_id UUID; - customer1_id UUID; - customer2_id UUID; - customer3_id UUID; - driver1_id UUID; - driver2_id UUID; -BEGIN - -- 获取用户ID(使用email字段) - SELECT id INTO admin_id FROM ak_users WHERE email = 'admin@mall.com'; - SELECT id INTO merchant1_id FROM ak_users WHERE email = 'merchant1@mall.com'; - SELECT id INTO merchant2_id FROM ak_users WHERE email = 'merchant2@mall.com'; - SELECT id INTO customer1_id FROM ak_users WHERE email = 'customer1@mall.com'; - SELECT id INTO customer2_id FROM ak_users WHERE email = 'customer2@mall.com'; - SELECT id INTO customer3_id FROM ak_users WHERE email = 'customer3@mall.com'; - SELECT id INTO driver1_id FROM ak_users WHERE email = 'driver1@mall.com'; - SELECT id INTO driver2_id FROM ak_users WHERE email = 'driver2@mall.com'; - - -- 创建临时表存储ID - CREATE TEMP TABLE IF NOT EXISTS temp_user_ids ( - role VARCHAR(20), - user_id UUID - ); - - INSERT INTO temp_user_ids VALUES - ('admin', admin_id), - ('merchant1', merchant1_id), - ('merchant2', merchant2_id), - ('customer1', customer1_id), - ('customer2', customer2_id), - ('customer3', customer3_id), - ('driver1', driver1_id), - ('driver2', driver2_id); -END $$; - --- ===================================================================================== --- 3. 用户档案数据 --- ===================================================================================== - --- 插入用户档案 -INSERT INTO public.ml_user_profiles (user_id, status, real_name, credit_score, verification_status, verification_data, preferences) -SELECT - t.user_id, - 1, -- 正常状态 - CASE - WHEN t.role = 'admin' THEN '系统管理员' - WHEN t.role = 'merchant1' THEN '张三丰' - WHEN t.role = 'merchant2' THEN '李四海' - WHEN t.role = 'customer1' THEN '王小明' - WHEN t.role = 'customer2' THEN '刘小红' - WHEN t.role = 'customer3' THEN '陈小华' - WHEN t.role = 'driver1' THEN '赵配送' - WHEN t.role = 'driver2' THEN '钱师傅' - END, - CASE - WHEN t.role = 'admin' THEN 1000 - WHEN t.role IN ('merchant1', 'merchant2') THEN 950 - WHEN t.role IN ('driver1', 'driver2') THEN 900 - ELSE 850 - END, - CASE - WHEN t.role IN ('admin', 'merchant1', 'merchant2') THEN 1 -- 已认证 - ELSE 0 -- 未认证 - END, - '{}', -- 认证数据 - '{"language": "zh-CN", "currency": "CNY", "notifications": true}' -- 偏好设置 -FROM temp_user_ids t -ON CONFLICT (user_id) DO UPDATE SET - real_name = EXCLUDED.real_name, - credit_score = EXCLUDED.credit_score, - verification_status = EXCLUDED.verification_status; - --- ===================================================================================== --- 4. 用户地址数据 --- ===================================================================================== - --- 插入用户地址 -INSERT INTO public.ml_user_addresses (user_id, receiver_name, receiver_phone, province, city, district, address_detail, is_default, label, latitude, longitude) -SELECT - t.user_id, - CASE - WHEN t.role = 'customer1' THEN '王小明' - WHEN t.role = 'customer2' THEN '刘小红' - WHEN t.role = 'customer3' THEN '陈小华' - WHEN t.role = 'merchant1' THEN '张三丰' - WHEN t.role = 'merchant2' THEN '李四海' - END, - CASE - WHEN t.role = 'customer1' THEN '13800138003' - WHEN t.role = 'customer2' THEN '13800138004' - WHEN t.role = 'customer3' THEN '13800138005' - WHEN t.role = 'merchant1' THEN '13800138001' - WHEN t.role = 'merchant2' THEN '13800138002' - END, - '北京市', - '朝阳区', - '望京街道', - CASE - WHEN t.role = 'customer1' THEN '望京SOHO T1座 1201室' - WHEN t.role = 'customer2' THEN '国贸大厦 A座 2301室' - WHEN t.role = 'customer3' THEN '三里屯太古里 B1-023' - WHEN t.role = 'merchant1' THEN '中关村创业大街 8号楼' - WHEN t.role = 'merchant2' THEN '亦庄经济开发区 科创园' - END, - TRUE, -- 默认地址 - 'home', - 39.9942 + (random() - 0.5) * 0.01, -- 北京纬度附近 - 116.3258 + (random() - 0.5) * 0.01 -- 北京经度附近 -FROM temp_user_ids t -WHERE t.role IN ('customer1', 'customer2', 'customer3', 'merchant1', 'merchant2'); - --- 为部分用户添加第二个地址 -INSERT INTO public.ml_user_addresses (user_id, receiver_name, receiver_phone, province, city, district, address_detail, is_default, label, latitude, longitude) -SELECT - t.user_id, - '公司收货', - '010-12345678', - '北京市', - '海淀区', - '中关村街道', - '中关村大街1号 科技大厦', - FALSE, - 'office', - 39.9042, - 116.3958 -FROM temp_user_ids t -WHERE t.role IN ('customer1', 'customer2'); - --- ===================================================================================== --- 5. 商品分类数据 --- ===================================================================================== - --- 删除默认分类,插入更详细的分类 -DELETE FROM public.ml_categories; - --- 一级分类 -INSERT INTO public.ml_categories (id, name, slug, level, path, sort_order, icon_url, description) VALUES -(uuid_generate_v4(), '数码电器', 'digital', 1, ARRAY['数码电器'], 1, 'icon-digital', '手机、电脑、家电等数码产品'), -(uuid_generate_v4(), '服装鞋帽', 'fashion', 1, ARRAY['服装鞋帽'], 2, 'icon-fashion', '男装、女装、鞋子、配饰'), -(uuid_generate_v4(), '家居用品', 'home', 1, ARRAY['家居用品'], 3, 'icon-home', '家具、装饰、生活用品'), -(uuid_generate_v4(), '食品饮料', 'food', 1, ARRAY['食品饮料'], 4, 'icon-food', '新鲜食材、零食、饮品'), -(uuid_generate_v4(), '美妆护肤', 'beauty', 1, ARRAY['美妆护肤'], 5, 'icon-beauty', '化妆品、护肤品、个人护理'), -(uuid_generate_v4(), '运动户外', 'sports', 1, ARRAY['运动户外'], 6, 'icon-sports', '运动器材、户外装备、健身用品'), -(uuid_generate_v4(), '图书文娱', 'books', 1, ARRAY['图书文娱'], 7, 'icon-books', '图书、音像、文具、玩具'), -(uuid_generate_v4(), '母婴用品', 'baby', 1, ARRAY['母婴用品'], 8, 'icon-baby', '婴儿用品、孕妇用品、儿童玩具'); - --- 获取一级分类ID并创建二级分类 -DO $$ -DECLARE - digital_id UUID; - fashion_id UUID; - home_id UUID; - food_id UUID; -BEGIN - -- 获取一级分类ID - SELECT id INTO digital_id FROM public.ml_categories WHERE slug = 'digital'; - SELECT id INTO fashion_id FROM public.ml_categories WHERE slug = 'fashion'; - SELECT id INTO home_id FROM public.ml_categories WHERE slug = 'home'; - SELECT id INTO food_id FROM public.ml_categories WHERE slug = 'food'; - - -- 数码电器二级分类 - INSERT INTO public.ml_categories (parent_id, name, slug, level, path, sort_order) VALUES - (digital_id, '手机通讯', 'mobile', 2, ARRAY['数码电器', '手机通讯'], 1), - (digital_id, '电脑办公', 'computer', 2, ARRAY['数码电器', '电脑办公'], 2), - (digital_id, '家用电器', 'appliance', 2, ARRAY['数码电器', '家用电器'], 3), - (digital_id, '数码配件', 'accessories', 2, ARRAY['数码电器', '数码配件'], 4); - - -- 服装鞋帽二级分类 - INSERT INTO public.ml_categories (parent_id, name, slug, level, path, sort_order) VALUES - (fashion_id, '男装', 'mens-wear', 2, ARRAY['服装鞋帽', '男装'], 1), - (fashion_id, '女装', 'womens-wear', 2, ARRAY['服装鞋帽', '女装'], 2), - (fashion_id, '男鞋', 'mens-shoes', 2, ARRAY['服装鞋帽', '男鞋'], 3), - (fashion_id, '女鞋', 'womens-shoes', 2, ARRAY['服装鞋帽', '女鞋'], 4); - - -- 家居用品二级分类 - INSERT INTO public.ml_categories (parent_id, name, slug, level, path, sort_order) VALUES - (home_id, '家具', 'furniture', 2, ARRAY['家居用品', '家具'], 1), - (home_id, '家装', 'decoration', 2, ARRAY['家居用品', '家装'], 2), - (home_id, '厨具', 'kitchen', 2, ARRAY['家居用品', '厨具'], 3), - (home_id, '生活用品', 'daily', 2, ARRAY['家居用品', '生活用品'], 4); - - -- 食品饮料二级分类 - INSERT INTO public.ml_categories (parent_id, name, slug, level, path, sort_order) VALUES - (food_id, '新鲜水果', 'fruits', 2, ARRAY['食品饮料', '新鲜水果'], 1), - (food_id, '肉禽蛋类', 'meat', 2, ARRAY['食品饮料', '肉禽蛋类'], 2), - (food_id, '零食坚果', 'snacks', 2, ARRAY['食品饮料', '零食坚果'], 3), - (food_id, '酒水饮料', 'drinks', 2, ARRAY['食品饮料', '酒水饮料'], 4); -END $$; - --- ===================================================================================== --- 6. 品牌数据 --- ===================================================================================== - -INSERT INTO public.ml_brands (name, logo_url, description, website) VALUES -('苹果', 'https://cdn.jsdelivr.net/gh/devicons/devicon/icons/apple/apple-original.svg', '创新科技品牌', 'https://www.apple.com'), -('华为', 'https://logo.clearbit.com/huawei.com', '全球领先的信息与通信技术解决方案供应商', 'https://www.huawei.com'), -('小米', 'https://logo.clearbit.com/mi.com', '专注于智能硬件和电子产品', 'https://www.mi.com'), -('三星', 'https://logo.clearbit.com/samsung.com', '全球知名电子产品制造商', 'https://www.samsung.com'), -('耐克', 'https://logo.clearbit.com/nike.com', '全球著名体育用品品牌', 'https://www.nike.com'), -('阿迪达斯', 'https://logo.clearbit.com/adidas.com', '德国运动用品制造商', 'https://www.adidas.com'), -('优衣库', 'https://logo.clearbit.com/uniqlo.com', '日本休闲服饰品牌', 'https://www.uniqlo.com'), -('宜家', 'https://logo.clearbit.com/ikea.com', '瑞典家居用品零售商', 'https://www.ikea.com'), -('美的', 'https://logo.clearbit.com/midea.com', '中国家电制造商', 'https://www.midea.com'), -('海尔', 'https://logo.clearbit.com/haier.com', '全球知名家电品牌', 'https://www.haier.com'); - --- ===================================================================================== --- 7. 店铺数据 --- ===================================================================================== - --- 获取商家用户ID并创建店铺 -INSERT INTO public.ml_shops (merchant_id, shop_name, shop_logo, shop_banner, description, business_license, contact_name, contact_phone, contact_email, address, business_hours, status, verified_at) -SELECT - t.user_id, - CASE - WHEN t.role = 'merchant1' THEN '张三丰数码专营店' - WHEN t.role = 'merchant2' THEN '李四海时尚小铺' - END, - CASE - WHEN t.role = 'merchant1' THEN 'https://api.dicebear.com/7.x/shapes/svg?seed=shop1' - WHEN t.role = 'merchant2' THEN 'https://api.dicebear.com/7.x/shapes/svg?seed=shop2' - END, - CASE - WHEN t.role = 'merchant1' THEN 'https://picsum.photos/800/200?random=1' - WHEN t.role = 'merchant2' THEN 'https://picsum.photos/800/200?random=2' - END, - CASE - WHEN t.role = 'merchant1' THEN '专业销售各类数码产品,品质保证,服务至上' - WHEN t.role = 'merchant2' THEN '时尚潮流服饰,让您成为街头最亮的星' - END, - CASE - WHEN t.role = 'merchant1' THEN '91110000MA0001234A' - WHEN t.role = 'merchant2' THEN '91110000MA0005678B' - END, - CASE - WHEN t.role = 'merchant1' THEN '张三丰' - WHEN t.role = 'merchant2' THEN '李四海' - END, - CASE - WHEN t.role = 'merchant1' THEN '13800138001' - WHEN t.role = 'merchant2' THEN '13800138002' - END, - CASE - WHEN t.role = 'merchant1' THEN 'merchant1@mall.com' - WHEN t.role = 'merchant2' THEN 'merchant2@mall.com' - END, - '{"province": "北京市", "city": "朝阳区", "district": "望京街道", "detail": "望京商业中心"}', - '{"monday": "09:00-21:00", "tuesday": "09:00-21:00", "wednesday": "09:00-21:00", "thursday": "09:00-21:00", "friday": "09:00-21:00", "saturday": "09:00-22:00", "sunday": "10:00-20:00"}', - 1, -- 正常状态 - NOW() - INTERVAL '30 days' -- 30天前认证 -FROM temp_user_ids t -WHERE t.role IN ('merchant1', 'merchant2'); - --- ===================================================================================== --- 8. 商品数据 --- ===================================================================================== - --- 获取分类和品牌ID -DO $$ -DECLARE - mobile_cat_id UUID; - computer_cat_id UUID; - mens_wear_cat_id UUID; - womens_wear_cat_id UUID; - furniture_cat_id UUID; - fruits_cat_id UUID; - - apple_brand_id UUID; - huawei_brand_id UUID; - xiaomi_brand_id UUID; - nike_brand_id UUID; - uniqlo_brand_id UUID; - ikea_brand_id UUID; - - merchant1_id UUID; - merchant2_id UUID; -BEGIN - -- 获取分类ID - SELECT id INTO mobile_cat_id FROM public.ml_categories WHERE slug = 'mobile'; - SELECT id INTO computer_cat_id FROM public.ml_categories WHERE slug = 'computer'; - SELECT id INTO mens_wear_cat_id FROM public.ml_categories WHERE slug = 'mens-wear'; - SELECT id INTO womens_wear_cat_id FROM public.ml_categories WHERE slug = 'womens-wear'; - SELECT id INTO furniture_cat_id FROM public.ml_categories WHERE slug = 'furniture'; - SELECT id INTO fruits_cat_id FROM public.ml_categories WHERE slug = 'fruits'; - - -- 获取品牌ID - SELECT id INTO apple_brand_id FROM public.ml_brands WHERE name = '苹果'; - SELECT id INTO huawei_brand_id FROM public.ml_brands WHERE name = '华为'; - SELECT id INTO xiaomi_brand_id FROM public.ml_brands WHERE name = '小米'; - SELECT id INTO nike_brand_id FROM public.ml_brands WHERE name = '耐克'; - SELECT id INTO uniqlo_brand_id FROM public.ml_brands WHERE name = '优衣库'; - SELECT id INTO ikea_brand_id FROM public.ml_brands WHERE name = '宜家'; - - -- 获取商家ID - SELECT user_id INTO merchant1_id FROM temp_user_ids WHERE role = 'merchant1'; - SELECT user_id INTO merchant2_id FROM temp_user_ids WHERE role = 'merchant2'; - - -- 插入商品数据 - 商家1的数码产品 - INSERT INTO public.ml_products ( - merchant_id, category_id, brand_id, product_code, name, subtitle, description, - main_image_url, image_urls, base_price, market_price, total_stock, available_stock, - weight, status, is_featured, is_new, is_hot, tags, slug - ) VALUES - -- iPhone 15 Pro - (merchant1_id, mobile_cat_id, apple_brand_id, 'IP15P-001', - 'iPhone 15 Pro 256GB 深空黑色', - 'A17 Pro芯片,钛金属设计,专业级摄像头系统', - '全新iPhone 15 Pro采用航空级钛金属设计,搭载A17 Pro芯片,配备专业级摄像头系统,支持5G网络。48MP主摄像头,2倍变焦,4K视频录制。', - 'https://picsum.photos/600/600?random=10', - '["https://picsum.photos/600/600?random=11", "https://picsum.photos/600/600?random=12", "https://picsum.photos/600/600?random=13"]', - 8999.00, 9999.00, 50, 45, 0.187, 1, true, true, true, - ARRAY['手机', '苹果', 'iPhone', '5G', '新品'], 'iphone-15-pro-256gb-black'), - - -- 华为 Mate 60 Pro - (merchant1_id, mobile_cat_id, huawei_brand_id, 'HW-M60P-001', - '华为 Mate 60 Pro 512GB 雅川青', - '卫星通话,昆仑玻璃,超聚光夜拍', - '华为Mate 60 Pro支持卫星通话功能,采用昆仑玻璃,配备超聚光夜拍摄像头,5000万像素主摄,支持100倍数字变焦。', - 'https://picsum.photos/600/600?random=20', - '["https://picsum.photos/600/600?random=21", "https://picsum.photos/600/600?random=22"]', - 6999.00, 7999.00, 30, 28, 0.225, 1, true, false, true, - ARRAY['手机', '华为', 'Mate', '卫星通话'], 'huawei-mate-60-pro-512gb'), - - -- 小米笔记本 - (merchant1_id, computer_cat_id, xiaomi_brand_id, 'XM-NB-001', - '小米笔记本 Pro 14 增强版', - '2.8K OLED屏幕,12代酷睿处理器', - '14英寸2.8K OLED全面屏,120Hz刷新率,第12代Intel Core处理器,16GB内存,512GB固态硬盘,雷电4接口。', - 'https://picsum.photos/600/600?random=30', - '["https://picsum.photos/600/600?random=31", "https://picsum.photos/600/600?random=32"]', - 5999.00, 6999.00, 20, 18, 1.4, 1, false, true, false, - ARRAY['笔记本', '小米', 'OLED', '办公'], 'xiaomi-notebook-pro-14'); - - -- 插入商品数据 - 商家2的时尚产品 - INSERT INTO public.ml_products ( - merchant_id, category_id, brand_id, product_code, name, subtitle, description, - main_image_url, image_urls, base_price, market_price, total_stock, available_stock, - weight, status, is_featured, is_new, is_hot, tags, slug - ) VALUES - -- 耐克运动鞋 - (merchant2_id, mens_wear_cat_id, nike_brand_id, 'NK-AIR-001', - 'Nike Air Max 270 男士运动鞋', - '全掌气垫,舒适透气,时尚百搭', - 'Nike Air Max 270采用全新的Air Max气垫设计,提供卓越的缓震效果。透气网面鞋身,轻量化设计,适合日常运动和休闲穿着。', - 'https://picsum.photos/600/600?random=40', - '["https://picsum.photos/600/600?random=41", "https://picsum.photos/600/600?random=42"]', - 899.00, 1099.00, 100, 95, 0.8, 1, true, false, true, - ARRAY['运动鞋', '耐克', '气垫', '男鞋'], 'nike-air-max-270-mens'), - - -- 优衣库T恤 - (merchant2_id, mens_wear_cat_id, uniqlo_brand_id, 'UQ-TEE-001', - 'UNIQLO 优质棉圆领T恤(短袖)', - '100%纯棉,柔软舒适,多色可选', - '采用100%精选纯棉制作,触感柔软,吸汗透气。简约设计,多种颜色可选,是日常穿搭的必备单品。', - 'https://picsum.photos/600/600?random=50', - '["https://picsum.photos/600/600?random=51", "https://picsum.photos/600/600?random=52"]', - 59.00, 79.00, 200, 180, 0.2, 1, false, false, false, - ARRAY['T恤', '优衣库', '纯棉', '基础款'], 'uniqlo-cotton-tshirt'), - - -- 女装连衣裙 - (merchant2_id, womens_wear_cat_id, uniqlo_brand_id, 'UQ-DRESS-001', - 'UNIQLO 女装雪纺连衣裙', - '轻盈雪纺面料,优雅飘逸,职场通勤', - '采用轻盈雪纺面料,版型优雅,适合职场通勤和日常聚会。A字版型修饰身形,多种花色可选。', - 'https://picsum.photos/600/600?random=60', - '["https://picsum.photos/600/600?random=61", "https://picsum.photos/600/600?random=62"]', - 299.00, 399.00, 80, 75, 0.3, 1, true, true, false, - ARRAY['连衣裙', '优衣库', '雪纺', '女装'], 'uniqlo-chiffon-dress'); -END $$; - --- ===================================================================================== --- 9. 商品SKU数据 --- ===================================================================================== - --- 为iPhone添加SKU -INSERT INTO public.ml_product_skus (product_id, sku_code, specifications, price, market_price, stock, image_url) -SELECT - p.id, - 'IP15P-' || color.code || '-' || storage.code, - jsonb_build_object('颜色', color.name, '存储容量', storage.name), - p.base_price + storage.price_diff, - p.market_price + storage.price_diff, - 15, - 'https://picsum.photos/400/400?random=' || (10 + color.id) -FROM public.ml_products p -CROSS JOIN (VALUES - (1, 'BLK', '深空黑色', 0), - (2, 'WHT', '白色钛金属', 0), - (3, 'BLU', '蓝色钛金属', 0) -) AS color(id, code, name, price_diff) -CROSS JOIN (VALUES - (1, '128G', '128GB', -1000), - (2, '256G', '256GB', 0), - (3, '512G', '512GB', 1500) -) AS storage(id, code, name, price_diff) -WHERE p.product_code = 'IP15P-001'; - --- 为运动鞋添加SKU -INSERT INTO public.ml_product_skus (product_id, sku_code, specifications, price, market_price, stock, image_url) -SELECT - p.id, - 'NK-AIR-' || color.code || '-' || size.code, - jsonb_build_object('颜色', color.name, '尺码', size.name), - p.base_price, - p.market_price, - 10, - 'https://picsum.photos/400/400?random=' || (40 + color.id) -FROM public.ml_products p -CROSS JOIN (VALUES - (1, 'BLK', '黑色'), - (2, 'WHT', '白色'), - (3, 'RED', '红色') -) AS color(id, code, name) -CROSS JOIN (VALUES - (1, '40', '40码'), - (2, '41', '41码'), - (3, '42', '42码'), - (4, '43', '43码'), - (5, '44', '44码') -) AS size(id, code, name) -WHERE p.product_code = 'NK-AIR-001'; - --- 为T恤添加SKU -INSERT INTO public.ml_product_skus (product_id, sku_code, specifications, price, market_price, stock, image_url) -SELECT - p.id, - 'UQ-TEE-' || color.code || '-' || size.code, - jsonb_build_object('颜色', color.name, '尺码', size.name), - p.base_price, - p.market_price, - 25, - 'https://picsum.photos/400/400?random=' || (50 + color.id) -FROM public.ml_products p -CROSS JOIN (VALUES - (1, 'WHT', '白色'), - (2, 'BLK', '黑色'), - (3, 'GRY', '灰色'), - (4, 'NVY', '深蓝色') -) AS color(id, code, name) -CROSS JOIN (VALUES - (1, 'S', 'S'), - (2, 'M', 'M'), - (3, 'L', 'L'), - (4, 'XL', 'XL') -) AS size(id, code, name) -WHERE p.product_code = 'UQ-TEE-001'; - --- ===================================================================================== --- 10. 购物车数据 --- ===================================================================================== - --- 为消费者添加购物车数据 -INSERT INTO public.ml_shopping_cart (user_id, product_id, sku_id, quantity, selected) -SELECT - customer.user_id, - p.id, - s.id, - CASE - WHEN customer.role = 'customer1' THEN 1 - WHEN customer.role = 'customer2' THEN 2 - ELSE 1 - END, - true -FROM temp_user_ids customer -CROSS JOIN public.ml_products p -LEFT JOIN public.ml_product_skus s ON p.id = s.product_id -WHERE customer.role IN ('customer1', 'customer2', 'customer3') - AND p.status = 1 - AND (s.id IS NULL OR s.status = 1) - AND random() < 0.3 -- 30%的概率添加到购物车 -LIMIT 15; - --- ===================================================================================== --- 11. 优惠券数据 --- ===================================================================================== - --- 创建优惠券模板 -INSERT INTO public.ml_coupon_templates ( - merchant_id, name, description, coupon_type, discount_type, discount_value, - min_order_amount, max_discount_amount, total_quantity, per_user_limit, - start_time, end_time, status -) VALUES --- 平台券 -(NULL, '新用户专享券', '新用户注册即送50元无门槛券', 1, 1, 50.00, 0, 50.00, 1000, 1, - NOW() - INTERVAL '1 day', NOW() + INTERVAL '30 days', 1), -(NULL, '满200减30', '全平台满200元减30元', 1, 1, 30.00, 200.00, 30.00, 500, 3, - NOW() - INTERVAL '1 day', NOW() + INTERVAL '15 days', 1), -(NULL, '9折优惠券', '全平台9折优惠,最高减100元', 2, 2, 0.9, 100.00, 100.00, 200, 1, - NOW() - INTERVAL '1 day', NOW() + INTERVAL '7 days', 1), - --- 商家券 -((SELECT user_id FROM temp_user_ids WHERE role = 'merchant1'), - '数码专营店满1000减100', '店铺满1000元减100元', 1, 1, 100.00, 1000.00, 100.00, 100, 2, - NOW() - INTERVAL '1 day', NOW() + INTERVAL '20 days', 1), -((SELECT user_id FROM temp_user_ids WHERE role = 'merchant2'), - '时尚小铺免运费券', '店铺订单免运费', 3, 1, 15.00, 0, 15.00, 50, 1, - NOW() - INTERVAL '1 day', NOW() + INTERVAL '10 days', 1); - --- 为用户发放优惠券 -INSERT INTO public.ml_user_coupons (user_id, template_id, coupon_code, status, expire_at) -SELECT - customer.user_id, - t.id, - public.generate_coupon_code(), - 1, -- 未使用 - t.end_time -FROM temp_user_ids customer -CROSS JOIN public.ml_coupon_templates t -WHERE customer.role IN ('customer1', 'customer2', 'customer3') - AND t.status = 1 - AND random() < 0.6; -- 60%的概率获得优惠券 - --- ===================================================================================== --- 12. 订单数据 --- ===================================================================================== - --- 生成订单数据 -DO $$ -DECLARE - customer_rec RECORD; - selected_merchant_id UUID; - product_rec RECORD; - order_id UUID; - order_no TEXT; - total_amount DECIMAL; -BEGIN - -- 为每个客户生成2-4个订单 - FOR customer_rec IN - SELECT user_id, role FROM temp_user_ids WHERE role LIKE 'customer%' - LOOP - FOR i IN 1..FLOOR(2 + random() * 3)::INTEGER LOOP - -- 生成订单号 - order_no := public.generate_order_no(); - - -- 随机选择商家 - SELECT user_id INTO selected_merchant_id FROM temp_user_ids - WHERE role LIKE 'merchant%' - ORDER BY random() LIMIT 1; - - -- 计算订单总金额(这里简化,实际应该根据商品计算) - total_amount := 100 + random() * 2000; - - -- 创建订单 - INSERT INTO public.ml_orders ( - id, order_no, user_id, merchant_id, product_amount, shipping_fee, total_amount, - shipping_address, order_status, payment_status, shipping_status, - paid_at, shipped_at, delivered_at, - remark, created_at - ) VALUES ( - uuid_generate_v4(), order_no, customer_rec.user_id, selected_merchant_id, - total_amount - 10, 10.00, total_amount, - jsonb_build_object( - 'receiver_name', '收货人姓名', - 'receiver_phone', '13800138000', - 'province', '北京市', - 'city', '朝阳区', - 'district', '望京街道', - 'address_detail', '望京SOHO T1座 1201室' - ), - CASE - WHEN random() < 0.6 THEN 4 -- 已完成 - WHEN random() < 0.8 THEN 3 -- 待收货 - WHEN random() < 0.9 THEN 2 -- 待发货 - ELSE 1 -- 待付款 - END, - CASE - WHEN random() < 0.8 THEN 2 -- 已付款 - ELSE 1 -- 未付款 - END, - CASE - WHEN random() < 0.7 THEN 4 -- 已送达 - WHEN random() < 0.85 THEN 3 -- 运输中 - WHEN random() < 0.9 THEN 2 -- 已发货 - ELSE 1 -- 未发货 - END, - CASE WHEN random() < 0.8 THEN NOW() - INTERVAL '1 day' * FLOOR(random() * 10) END, - CASE WHEN random() < 0.7 THEN NOW() - INTERVAL '1 day' * FLOOR(random() * 8) END, - CASE WHEN random() < 0.6 THEN NOW() - INTERVAL '1 day' * FLOOR(random() * 5) END, - '请尽快发货,谢谢!', - NOW() - INTERVAL '1 day' * FLOOR(random() * 30) - ) RETURNING id INTO order_id; - - -- 为订单添加商品 - FOR product_rec IN - SELECT - p.id as product_id, - s.id as sku_id, - p.name, - COALESCE(s.price, p.base_price) as price, -- 使用SKU价格,如果没有则使用基础价格 - COALESCE(s.image_url, p.main_image_url) as image_url -- 使用SKU图片,如果没有则使用主图 - FROM public.ml_products p - LEFT JOIN public.ml_product_skus s ON p.id = s.product_id - WHERE p.merchant_id = selected_merchant_id - AND p.status = 1 - AND (s.id IS NULL OR s.status = 1) - ORDER BY random() - LIMIT FLOOR(1 + random() * 3)::INTEGER - LOOP - DECLARE - item_quantity INTEGER; - item_price DECIMAL; - BEGIN - item_quantity := FLOOR(1 + random() * 2)::INTEGER; - item_price := product_rec.price; - - INSERT INTO public.ml_order_items ( - order_id, product_id, sku_id, product_name, - price, quantity, total_amount, image_url - ) VALUES ( - order_id, product_rec.product_id, product_rec.sku_id, product_rec.name, - item_price, item_quantity, - item_price * item_quantity, - product_rec.image_url - ); - END; - END LOOP; - END LOOP; - END LOOP; -END $$; - --- ===================================================================================== --- 13. 商品评价数据 --- ===================================================================================== - --- 为已完成的订单生成评价 -INSERT INTO public.ml_product_reviews ( - order_id, order_item_id, user_id, product_id, merchant_id, - rating, content, images, is_anonymous, status, created_at -) -SELECT - o.id, - oi.id, - o.user_id, - oi.product_id, - o.merchant_id, - FLOOR(3 + random() * 3)::INTEGER, -- 3-5星评价 - CASE - WHEN random() < 0.3 THEN '商品质量很好,物流很快,推荐购买!' - WHEN random() < 0.6 THEN '包装完好,商品和描述一致,满意的购物体验。' - WHEN random() < 0.8 THEN '性价比不错,会再次购买的。' - ELSE '商品不错,快递也很快,好评!' - END, - CASE - WHEN random() < 0.3 THEN '["https://picsum.photos/300/300?random=' || FLOOR(random() * 100)::INTEGER || '"]' - ELSE '[]' - END::JSONB, - random() < 0.1, -- 10%匿名评价 - 1, -- 正常状态 - o.delivered_at + INTERVAL '1 day' * FLOOR(random() * 10) -FROM public.ml_orders o -JOIN public.ml_order_items oi ON o.id = oi.order_id -WHERE o.order_status = 4 -- 已完成的订单 - AND o.delivered_at IS NOT NULL - AND random() < 0.7; -- 70%的概率有评价 - --- ===================================================================================== --- 14. 用户行为数据 --- ===================================================================================== - --- 用户收藏数据 -INSERT INTO public.ml_user_favorites (user_id, target_type, target_id) -SELECT - customer.user_id, - 1, -- 商品收藏 - p.id -FROM temp_user_ids customer -CROSS JOIN public.ml_products p -WHERE customer.role LIKE 'customer%' - AND p.status = 1 - AND random() < 0.2 -- 20%的概率收藏 -ON CONFLICT (user_id, target_type, target_id) DO NOTHING; - --- 店铺收藏 -INSERT INTO public.ml_user_favorites (user_id, target_type, target_id) -SELECT - customer.user_id, - 2, -- 店铺收藏 - s.merchant_id -FROM temp_user_ids customer -CROSS JOIN public.ml_shops s -WHERE customer.role LIKE 'customer%' - AND random() < 0.3 -- 30%的概率收藏店铺 -ON CONFLICT (user_id, target_type, target_id) DO NOTHING; - --- 浏览历史数据 -INSERT INTO public.ml_browse_history (user_id, product_id, browse_duration, created_at, updated_at) -SELECT - customer.user_id, - p.id, - FLOOR(10 + random() * 300)::INTEGER, -- 10-300秒浏览时长 - NOW() - INTERVAL '1 day' * FLOOR(random() * 30), -- 30天内的浏览记录 - NOW() - INTERVAL '1 day' * FLOOR(random() * 30) -FROM temp_user_ids customer -CROSS JOIN public.ml_products p -WHERE customer.role LIKE 'customer%' - AND p.status = 1 - AND random() < 0.4 -- 40%的概率有浏览记录 -ON CONFLICT (user_id, product_id) DO UPDATE SET - browse_duration = EXCLUDED.browse_duration, - updated_at = EXCLUDED.updated_at; - --- 搜索历史数据 -INSERT INTO public.ml_search_history (user_id, keyword, result_count, created_at) -SELECT - customer.user_id, - keyword.word, - FLOOR(1 + random() * 50)::INTEGER, -- 1-50个结果 - NOW() - INTERVAL '1 day' * FLOOR(random() * 30) -FROM temp_user_ids customer -CROSS JOIN (VALUES - ('iPhone'), ('华为手机'), ('笔记本电脑'), ('运动鞋'), - ('T恤'), ('连衣裙'), ('耳机'), ('充电器'), ('数据线'), ('手机壳') -) AS keyword(word) -WHERE customer.role LIKE 'customer%' - AND random() < 0.3; -- 30%的概率有搜索记录 - --- ===================================================================================== --- 15. 配送数据 --- ===================================================================================== - --- 配送员信息 -INSERT INTO public.ml_delivery_drivers ( - user_id, real_name, id_card, driver_license, vehicle_type, vehicle_number, - service_areas, work_status, current_lat, current_lng, status -) -SELECT - t.user_id, - CASE - WHEN t.role = 'driver1' THEN '赵配送' - WHEN t.role = 'driver2' THEN '钱师傅' - END, - CASE - WHEN t.role = 'driver1' THEN '110101199001011234' - WHEN t.role = 'driver2' THEN '110101199002022345' - END, - CASE - WHEN t.role = 'driver1' THEN 'D110101199001011234' - WHEN t.role = 'driver2' THEN 'D110101199002022345' - END, - 1, -- 电动车 - CASE - WHEN t.role = 'driver1' THEN '京A12345' - WHEN t.role = 'driver2' THEN '京A67890' - END, - '["朝阳区", "海淀区", "东城区"]'::JSONB, - 1, -- 在线 - 39.9042 + (random() - 0.5) * 0.01, - 116.4074 + (random() - 0.5) * 0.01, - 1 -- 正常状态 -FROM temp_user_ids t -WHERE t.role LIKE 'driver%'; - --- 配送任务(为部分已发货订单创建配送任务) -INSERT INTO public.ml_delivery_tasks ( - order_id, driver_id, pickup_address, delivery_address, - distance, estimated_time, delivery_fee, status, - assigned_at, picked_at, delivered_at, delivery_code -) -SELECT DISTINCT ON (o.id) -- 确保每个订单只有一个配送任务 - o.id, - d.id, - jsonb_build_object( - 'name', '商家仓库', - 'phone', '010-12345678', - 'address', '北京市朝阳区望京商业中心' - ), - o.shipping_address, - ROUND((5 + random() * 15)::NUMERIC, 2), -- 5-20公里 - FLOOR(20 + random() * 40)::INTEGER, -- 20-60分钟 - CASE - WHEN (o.shipping_address->>'district') = '朝阳区' THEN 8.00 - ELSE 12.00 - END, - CASE - WHEN o.order_status >= 4 THEN 5 -- 已送达 - WHEN o.order_status >= 3 THEN 4 -- 配送中 - WHEN o.shipping_status >= 2 THEN 2 -- 已接单 - ELSE 1 -- 待接单 - END, - o.shipped_at, - CASE WHEN o.order_status >= 3 THEN o.shipped_at + INTERVAL '30 minutes' END, - CASE WHEN o.order_status >= 4 THEN o.delivered_at END, - LPAD(FLOOR(random() * 10000)::TEXT, 4, '0') -- 4位取货码 -FROM public.ml_orders o -CROSS JOIN public.ml_delivery_drivers d -WHERE o.shipping_status >= 2 -- 已发货的订单 - AND random() < 0.8 -- 80%的概率有配送任务 - AND NOT EXISTS ( -- 确保订单尚未有配送任务 - SELECT 1 FROM public.ml_delivery_tasks dt WHERE dt.order_id = o.id - ) -ORDER BY o.id, random() -- 每个订单随机选择一个配送员 -LIMIT 50; -- 限制配送任务数量,避免过多数据 - --- ===================================================================================== --- 16. 更新统计数据 --- ===================================================================================== - --- 更新商品统计数据 -UPDATE public.ml_products SET - view_count = FLOOR(100 + random() * 9900)::INTEGER, - sale_count = ( - SELECT COALESCE(SUM(oi.quantity), 0) - FROM public.ml_order_items oi - JOIN public.ml_orders o ON oi.order_id = o.id - WHERE oi.product_id = ml_products.id - AND o.order_status = 4 - ), - favorite_count = ( - SELECT COUNT(*) - FROM public.ml_user_favorites f - WHERE f.target_type = 1 - AND f.target_id = ml_products.id - ), - rating_avg = ( - SELECT COALESCE(AVG(rating), 0) - FROM public.ml_product_reviews r - WHERE r.product_id = ml_products.id - AND r.status = 1 - ), - rating_count = ( - SELECT COUNT(*) - FROM public.ml_product_reviews r - WHERE r.product_id = ml_products.id - AND r.status = 1 - ); - --- 更新店铺统计数据 -UPDATE public.ml_shops SET - product_count = ( - SELECT COUNT(*) - FROM public.ml_products p - WHERE p.merchant_id = ml_shops.merchant_id - AND p.status = 1 - ), - order_count = ( - SELECT COUNT(*) - FROM public.ml_orders o - WHERE o.merchant_id = ml_shops.merchant_id - AND o.order_status = 4 - ), - rating_avg = ( - SELECT COALESCE(AVG(r.rating), 0) - FROM public.ml_product_reviews r - WHERE r.merchant_id = ml_shops.merchant_id - AND r.status = 1 - ), - rating_count = ( - SELECT COUNT(*) - FROM public.ml_product_reviews r - WHERE r.merchant_id = ml_shops.merchant_id - AND r.status = 1 - ); - --- 更新配送员统计数据 -UPDATE public.ml_delivery_drivers SET - order_count = ( - SELECT COUNT(*) - FROM public.ml_delivery_tasks dt - WHERE dt.driver_id = ml_delivery_drivers.id - AND dt.status = 5 - ), - rating_avg = 4.5 + random() * 0.5, -- 4.5-5.0星评价 - rating_count = FLOOR(10 + random() * 90)::INTEGER; -- 10-100个评价 - --- ===================================================================================== --- 17. 清理临时数据 --- ===================================================================================== - -DROP TABLE IF EXISTS temp_user_ids; - --- ===================================================================================== --- 18. 完成提示 --- ===================================================================================== - -DO $$ -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '商城系统模拟数据插入完成!'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '已创建数据概况:'; - RAISE NOTICE '- 测试用户: 8个 (管理员1个, 商家2个, 消费者3个, 配送员2个)'; - RAISE NOTICE '- 用户地址: 7个'; - RAISE NOTICE '- 商品分类: 多级分类体系'; - RAISE NOTICE '- 品牌: 10个知名品牌'; - RAISE NOTICE '- 店铺: 2个商家店铺'; - RAISE NOTICE '- 商品: 6个商品 + 多规格SKU'; - RAISE NOTICE '- 购物车: 随机购物车数据'; - RAISE NOTICE '- 优惠券: 5个优惠券模板 + 用户优惠券'; - RAISE NOTICE '- 订单: 多个测试订单 + 订单商品'; - RAISE NOTICE '- 商品评价: 基于完成订单的评价'; - RAISE NOTICE '- 用户行为: 收藏、浏览、搜索记录'; - RAISE NOTICE '- 配送数据: 配送员 + 配送任务'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '数据状态: 包含各种业务场景的测试数据'; - RAISE NOTICE '建议: 可根据实际需要调整数据量和内容'; - RAISE NOTICE '======================================================='; -END $$; diff --git a/doc_mall/database/product_database.sql b/doc_mall/database/product_database.sql deleted file mode 100644 index 5c13e095..00000000 --- a/doc_mall/database/product_database.sql +++ /dev/null @@ -1,452 +0,0 @@ --- =================================================================== --- 电商商城商品管理数据库设计 --- 基于PostgreSQL,兼容现有ak_contents资讯系统 --- =================================================================== - --- =================================================================== --- 1. 商品核心表 --- =================================================================== - --- 商品基础信息表 -CREATE TABLE IF NOT EXISTS public.mall_products ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - product_code VARCHAR(50) UNIQUE NOT NULL, -- 商品编码 - name VARCHAR(500) NOT NULL, -- 商品名称 - subtitle VARCHAR(1000), -- 副标题/卖点 - description TEXT, -- 商品描述 - - -- 商家信息 - merchant_id UUID NOT NULL REFERENCES public.ak_users(id), - brand_id UUID REFERENCES public.mall_brands(id), - - -- 分类信息 - category_id UUID NOT NULL REFERENCES public.mall_categories(id), - category_path TEXT[], -- 分类路径,便于查询 - - -- 基础属性 - weight DECIMAL(10,3), -- 重量(kg) - dimensions JSONB, -- 尺寸信息 {长,宽,高} - - -- 价格信息 - base_price DECIMAL(12,2) NOT NULL, -- 基础价格 - market_price DECIMAL(12,2), -- 市场价 - cost_price DECIMAL(12,2), -- 成本价 - - -- 库存信息 - stock_quantity INTEGER DEFAULT 0, -- 总库存 - available_quantity INTEGER DEFAULT 0, -- 可用库存 - reserved_quantity INTEGER DEFAULT 0, -- 预留库存 - min_order_quantity INTEGER DEFAULT 1, -- 最小起订量 - max_order_quantity INTEGER, -- 最大限购量 - - -- 状态信息 - status VARCHAR(20) DEFAULT 'draft', -- 状态:draft/active/inactive/deleted - is_featured BOOLEAN DEFAULT false, -- 是否精选 - is_new BOOLEAN DEFAULT false, -- 是否新品 - is_hot BOOLEAN DEFAULT false, -- 是否热卖 - is_on_sale BOOLEAN DEFAULT false, -- 是否促销 - - -- 多媒体 - main_image_url TEXT, -- 主图 - image_urls TEXT[], -- 图片URL数组 - video_urls TEXT[], -- 视频URL数组 - - -- SEO相关 - seo_title VARCHAR(200), -- SEO标题 - seo_description VARCHAR(500), -- SEO描述 - seo_keywords TEXT[], -- SEO关键词 - slug VARCHAR(200) UNIQUE, -- URL友好标识 - - -- 销售统计 - view_count INTEGER DEFAULT 0, -- 浏览次数 - sale_count INTEGER DEFAULT 0, -- 销售数量 - favorite_count INTEGER DEFAULT 0, -- 收藏次数 - rating_average DECIMAL(3,2) DEFAULT 0, -- 平均评分 - rating_count INTEGER DEFAULT 0, -- 评分次数 - - -- 时间信息 - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - published_at TIMESTAMP WITH TIME ZONE, -- 上架时间 - sale_start_at TIMESTAMP WITH TIME ZONE, -- 开售时间 - sale_end_at TIMESTAMP WITH TIME ZONE, -- 停售时间 - - -- 额外信息 - tags TEXT[], -- 标签 - attributes JSONB DEFAULT '{}', -- 自定义属性 - notes TEXT, -- 内部备注 - - -- 约束 - CONSTRAINT chk_price_positive CHECK (base_price >= 0), - CONSTRAINT chk_stock_non_negative CHECK (stock_quantity >= 0), - CONSTRAINT chk_available_stock CHECK (available_quantity >= 0), - CONSTRAINT chk_reserved_stock CHECK (reserved_quantity >= 0), - CONSTRAINT chk_rating_range CHECK (rating_average >= 0 AND rating_average <= 5) -); - --- 商品表索引 -CREATE INDEX IF NOT EXISTS idx_mall_products_merchant ON public.mall_products(merchant_id, status); -CREATE INDEX IF NOT EXISTS idx_mall_products_category ON public.mall_products(category_id, status); -CREATE INDEX IF NOT EXISTS idx_mall_products_status ON public.mall_products(status, published_at DESC); -CREATE INDEX IF NOT EXISTS idx_mall_products_featured ON public.mall_products(is_featured, published_at DESC); -CREATE INDEX IF NOT EXISTS idx_mall_products_price ON public.mall_products(base_price, status); -CREATE INDEX IF NOT EXISTS idx_mall_products_sale_count ON public.mall_products(sale_count DESC); -CREATE INDEX IF NOT EXISTS idx_mall_products_rating ON public.mall_products(rating_average DESC, rating_count DESC); -CREATE INDEX IF NOT EXISTS idx_mall_products_code ON public.mall_products(product_code); -CREATE INDEX IF NOT EXISTS idx_mall_products_slug ON public.mall_products(slug); -CREATE INDEX IF NOT EXISTS idx_mall_products_tags ON public.mall_products USING GIN(tags); -CREATE INDEX IF NOT EXISTS idx_mall_products_category_path ON public.mall_products USING GIN(category_path); - -COMMENT ON TABLE public.mall_products IS '商品基础信息表'; - --- =================================================================== --- 2. 商品SKU表 --- =================================================================== - --- 商品SKU表 -CREATE TABLE IF NOT EXISTS public.mall_product_skus ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - product_id UUID NOT NULL REFERENCES public.mall_products(id) ON DELETE CASCADE, - sku_code VARCHAR(100) UNIQUE NOT NULL, -- SKU编码 - - -- 规格信息 - specification_values JSONB NOT NULL DEFAULT '{}', -- 规格值 {"颜色":"红色","尺寸":"L"} - specification_text VARCHAR(500), -- 规格描述文本 - - -- 价格库存 - price DECIMAL(12,2) NOT NULL, -- SKU价格 - cost_price DECIMAL(12,2), -- SKU成本价 - stock_quantity INTEGER DEFAULT 0, -- SKU库存 - available_quantity INTEGER DEFAULT 0, -- SKU可用库存 - reserved_quantity INTEGER DEFAULT 0, -- SKU预留库存 - - -- SKU属性 - weight DECIMAL(10,3), -- SKU重量 - barcode VARCHAR(50), -- 条形码 - image_url TEXT, -- SKU图片 - - -- 状态 - is_active BOOLEAN DEFAULT true, -- 是否启用 - is_default BOOLEAN DEFAULT false, -- 是否默认SKU - - -- 销售统计 - sale_count INTEGER DEFAULT 0, -- 销售数量 - - -- 时间 - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - -- 约束 - CONSTRAINT chk_sku_price_positive CHECK (price >= 0), - CONSTRAINT chk_sku_stock_non_negative CHECK (stock_quantity >= 0) -); - --- SKU表索引 -CREATE INDEX IF NOT EXISTS idx_mall_product_skus_product ON public.mall_product_skus(product_id, is_active); -CREATE INDEX IF NOT EXISTS idx_mall_product_skus_code ON public.mall_product_skus(sku_code); -CREATE INDEX IF NOT EXISTS idx_mall_product_skus_barcode ON public.mall_product_skus(barcode); -CREATE INDEX IF NOT EXISTS idx_mall_product_skus_default ON public.mall_product_skus(product_id, is_default); -CREATE INDEX IF NOT EXISTS idx_mall_product_skus_spec ON public.mall_product_skus USING GIN(specification_values); - -COMMENT ON TABLE public.mall_product_skus IS '商品SKU表'; - --- =================================================================== --- 3. 商品分类表 --- =================================================================== - --- 商品分类表 -CREATE TABLE IF NOT EXISTS public.mall_categories ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - name VARCHAR(200) NOT NULL, -- 分类名称 - slug VARCHAR(200) UNIQUE, -- URL友好标识 - description TEXT, -- 分类描述 - - -- 层级关系 - parent_id UUID REFERENCES public.mall_categories(id), - level INTEGER DEFAULT 0, -- 层级:0=顶级 - path TEXT, -- 路径:/1/2/3 - sort_order INTEGER DEFAULT 0, -- 排序 - - -- 显示信息 - icon_url TEXT, -- 分类图标 - banner_url TEXT, -- 分类横幅 - - -- 状态 - is_active BOOLEAN DEFAULT true, -- 是否启用 - is_featured BOOLEAN DEFAULT false, -- 是否精选 - - -- 统计 - product_count INTEGER DEFAULT 0, -- 商品数量 - - -- SEO - seo_title VARCHAR(200), - seo_description VARCHAR(500), - seo_keywords TEXT[], - - -- 时间 - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - -- 自定义属性 - attributes JSONB DEFAULT '{}' -); - --- 分类表索引 -CREATE INDEX IF NOT EXISTS idx_mall_categories_parent ON public.mall_categories(parent_id, sort_order); -CREATE INDEX IF NOT EXISTS idx_mall_categories_level ON public.mall_categories(level, sort_order); -CREATE INDEX IF NOT EXISTS idx_mall_categories_active ON public.mall_categories(is_active, sort_order); -CREATE INDEX IF NOT EXISTS idx_mall_categories_featured ON public.mall_categories(is_featured, sort_order); -CREATE INDEX IF NOT EXISTS idx_mall_categories_slug ON public.mall_categories(slug); - -COMMENT ON TABLE public.mall_categories IS '商品分类表'; - --- =================================================================== --- 4. 商品品牌表 --- =================================================================== - --- 商品品牌表 -CREATE TABLE IF NOT EXISTS public.mall_brands ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - name VARCHAR(200) NOT NULL UNIQUE, -- 品牌名称 - english_name VARCHAR(200), -- 英文名称 - slug VARCHAR(200) UNIQUE, -- URL友好标识 - description TEXT, -- 品牌描述 - - -- 品牌信息 - logo_url TEXT, -- 品牌Logo - banner_url TEXT, -- 品牌横幅 - website_url TEXT, -- 官网地址 - origin_country VARCHAR(100), -- 品牌原产国 - founded_year INTEGER, -- 创立年份 - - -- 状态 - is_active BOOLEAN DEFAULT true, -- 是否启用 - is_featured BOOLEAN DEFAULT false, -- 是否精选 - - -- 统计 - product_count INTEGER DEFAULT 0, -- 商品数量 - - -- SEO - seo_title VARCHAR(200), - seo_description VARCHAR(500), - seo_keywords TEXT[], - - -- 时间 - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - -- 排序 - sort_order INTEGER DEFAULT 0 -); - --- 品牌表索引 -CREATE INDEX IF NOT EXISTS idx_mall_brands_active ON public.mall_brands(is_active, sort_order); -CREATE INDEX IF NOT EXISTS idx_mall_brands_featured ON public.mall_brands(is_featured, sort_order); -CREATE INDEX IF NOT EXISTS idx_mall_brands_slug ON public.mall_brands(slug); - -COMMENT ON TABLE public.mall_brands IS '商品品牌表'; - --- =================================================================== --- 5. 商品规格相关表 --- =================================================================== - --- 规格名表(如:颜色、尺寸、款式等) -CREATE TABLE IF NOT EXISTS public.mall_specifications ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - name VARCHAR(100) NOT NULL, -- 规格名称:颜色、尺寸等 - slug VARCHAR(100) UNIQUE, -- URL友好标识 - type VARCHAR(50) DEFAULT 'select', -- 类型:select/input/color/image - sort_order INTEGER DEFAULT 0, -- 排序 - is_required BOOLEAN DEFAULT false, -- 是否必选 - is_active BOOLEAN DEFAULT true, -- 是否启用 - - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - --- 规格值表(如:红色、蓝色、L、XL等) -CREATE TABLE IF NOT EXISTS public.mall_specification_values ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - specification_id UUID NOT NULL REFERENCES public.mall_specifications(id) ON DELETE CASCADE, - value VARCHAR(200) NOT NULL, -- 规格值:红色、L等 - color_code VARCHAR(20), -- 颜色代码(仅颜色规格) - image_url TEXT, -- 规格值图片 - sort_order INTEGER DEFAULT 0, -- 排序 - is_active BOOLEAN DEFAULT true, -- 是否启用 - - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - UNIQUE(specification_id, value) -); - --- 商品规格关联表 -CREATE TABLE IF NOT EXISTS public.mall_product_specifications ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - product_id UUID NOT NULL REFERENCES public.mall_products(id) ON DELETE CASCADE, - specification_id UUID NOT NULL REFERENCES public.mall_specifications(id) ON DELETE CASCADE, - is_required BOOLEAN DEFAULT false, -- 该商品的该规格是否必选 - sort_order INTEGER DEFAULT 0, -- 在该商品中的排序 - - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - UNIQUE(product_id, specification_id) -); - --- 索引 -CREATE INDEX IF NOT EXISTS idx_mall_specifications_active ON public.mall_specifications(is_active, sort_order); -CREATE INDEX IF NOT EXISTS idx_mall_specification_values_spec ON public.mall_specification_values(specification_id, is_active, sort_order); -CREATE INDEX IF NOT EXISTS idx_mall_product_specifications_product ON public.mall_product_specifications(product_id, sort_order); - --- =================================================================== --- 6. 商品详情相关表 --- =================================================================== - --- 商品详情内容表(富文本、图文混排) -CREATE TABLE IF NOT EXISTS public.mall_product_details ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - product_id UUID NOT NULL REFERENCES public.mall_products(id) ON DELETE CASCADE, - - -- 详情内容 - detail_type VARCHAR(50) DEFAULT 'rich_text', -- 类型:rich_text/markdown/html - content TEXT, -- 详情内容 - images TEXT[], -- 详情图片 - - -- 显示控制 - section_title VARCHAR(200), -- 区块标题 - sort_order INTEGER DEFAULT 0, -- 排序 - is_active BOOLEAN DEFAULT true, -- 是否显示 - - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() -); - --- 商品参数表 -CREATE TABLE IF NOT EXISTS public.mall_product_attributes ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), - product_id UUID NOT NULL REFERENCES public.mall_products(id) ON DELETE CASCADE, - - -- 参数信息 - attribute_name VARCHAR(200) NOT NULL, -- 参数名称 - attribute_value TEXT NOT NULL, -- 参数值 - attribute_group VARCHAR(100), -- 参数分组 - - -- 显示控制 - sort_order INTEGER DEFAULT 0, -- 排序 - is_key_attribute BOOLEAN DEFAULT false, -- 是否关键参数 - - created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), - - UNIQUE(product_id, attribute_name) -); - --- 索引 -CREATE INDEX IF NOT EXISTS idx_mall_product_details_product ON public.mall_product_details(product_id, sort_order); -CREATE INDEX IF NOT EXISTS idx_mall_product_attributes_product ON public.mall_product_attributes(product_id, attribute_group, sort_order); - --- =================================================================== --- 7. 视图和函数 --- =================================================================== - --- 商品列表视图(包含完整信息) -CREATE OR REPLACE VIEW public.vw_mall_products_full AS -SELECT - p.*, - c.name as category_name, - c.path as category_full_path, - b.name as brand_name, - b.logo_url as brand_logo_url, - - -- SKU汇总信息 - (SELECT MIN(price) FROM public.mall_product_skus WHERE product_id = p.id AND is_active = true) as min_price, - (SELECT MAX(price) FROM public.mall_product_skus WHERE product_id = p.id AND is_active = true) as max_price, - (SELECT SUM(stock_quantity) FROM public.mall_product_skus WHERE product_id = p.id AND is_active = true) as total_stock, - - -- 默认SKU信息 - default_sku.id as default_sku_id, - default_sku.sku_code as default_sku_code, - default_sku.price as default_price, - default_sku.stock_quantity as default_stock - -FROM public.mall_products p -LEFT JOIN public.mall_categories c ON p.category_id = c.id -LEFT JOIN public.mall_brands b ON p.brand_id = b.id -LEFT JOIN public.mall_product_skus default_sku ON p.id = default_sku.product_id AND default_sku.is_default = true -WHERE p.status != 'deleted'; - -COMMENT ON VIEW public.vw_mall_products_full IS '商品完整信息视图'; - --- =================================================================== --- 8. 触发器(维护统计数据) --- =================================================================== - --- 更新商品SKU统计的触发器函数 -CREATE OR REPLACE FUNCTION public.update_product_sku_stats() -RETURNS TRIGGER AS $$ -BEGIN - -- 更新商品的库存统计 - UPDATE public.mall_products - SET - stock_quantity = ( - SELECT COALESCE(SUM(stock_quantity), 0) - FROM public.mall_product_skus - WHERE product_id = COALESCE(NEW.product_id, OLD.product_id) AND is_active = true - ), - available_quantity = ( - SELECT COALESCE(SUM(available_quantity), 0) - FROM public.mall_product_skus - WHERE product_id = COALESCE(NEW.product_id, OLD.product_id) AND is_active = true - ), - updated_at = NOW() - WHERE id = COALESCE(NEW.product_id, OLD.product_id); - - RETURN COALESCE(NEW, OLD); -END; -$$ LANGUAGE plpgsql; - --- 创建触发器 -DO $$ -BEGIN - DROP TRIGGER IF EXISTS trigger_update_product_sku_stats ON public.mall_product_skus; - CREATE TRIGGER trigger_update_product_sku_stats - AFTER INSERT OR UPDATE OR DELETE ON public.mall_product_skus - FOR EACH ROW EXECUTE FUNCTION public.update_product_sku_stats(); -END -$$; - --- =================================================================== --- 9. 初始化数据 --- =================================================================== - --- 插入基础商品分类 -INSERT INTO public.mall_categories (name, slug, level, sort_order) VALUES -('服装鞋包', 'fashion', 0, 1), -('数码家电', 'electronics', 0, 2), -('食品生鲜', 'food', 0, 3), -('家居日用', 'home', 0, 4), -('美妆护肤', 'beauty', 0, 5), -('运动户外', 'sports', 0, 6), -('图书文娱', 'books', 0, 7), -('医药保健', 'health', 0, 8) -ON CONFLICT (slug) DO NOTHING; - --- 插入基础规格 -INSERT INTO public.mall_specifications (name, slug, type, sort_order) VALUES -('颜色', 'color', 'color', 1), -('尺寸', 'size', 'select', 2), -('款式', 'style', 'select', 3), -('容量', 'capacity', 'select', 4), -('材质', 'material', 'select', 5) -ON CONFLICT (slug) DO NOTHING; - --- 输出完成信息 -DO $$ -BEGIN - RAISE NOTICE '商品管理数据库结构创建完成!'; - RAISE NOTICE '已创建以下核心表:'; - RAISE NOTICE '- mall_products: 商品基础信息'; - RAISE NOTICE '- mall_product_skus: 商品SKU'; - RAISE NOTICE '- mall_categories: 商品分类'; - RAISE NOTICE '- mall_brands: 商品品牌'; - RAISE NOTICE '- mall_specifications: 商品规格'; - RAISE NOTICE '可以开始添加商品数据了!'; -END -$$; diff --git a/doc_mall/database/quick_role_migration.sql b/doc_mall/database/quick_role_migration.sql deleted file mode 100644 index 0cc8284a..00000000 --- a/doc_mall/database/quick_role_migration.sql +++ /dev/null @@ -1,249 +0,0 @@ --- ==================================================================== --- 角色字段统一说明 --- ==================================================================== --- 注意:角色信息统一存储在 ak_users.role 字段中 --- ml_user_profiles 表不再包含 role 字段,避免数据重复 --- 本脚本主要用于清理可能存在的重复字段和更新相关函数 --- ==================================================================== - -\echo '检查角色字段统一状态...' - -BEGIN; - --- ==================================================================== --- 1. 安全检查 --- ==================================================================== - --- 检查表是否存在 -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ml_user_profiles') THEN - RAISE EXCEPTION '表 ml_user_profiles 不存在,请先运行完整数据库创建脚本'; - END IF; -END $$; - --- 检查是否已经有 role 字段 -DO $$ -BEGIN - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'ml_user_profiles' AND column_name = 'role') THEN - RAISE NOTICE '检测到 role 字段已存在,跳过字段创建'; - ELSE - RAISE NOTICE '开始添加 role 字段'; - -- 添加 role 字段 - ALTER TABLE public.ml_user_profiles - ADD COLUMN role TEXT DEFAULT 'customer'; - END IF; -END $$; - --- ==================================================================== --- 2. 数据迁移 --- ==================================================================== - --- 迁移现有 user_type 数据到 role 字段 -UPDATE public.ml_user_profiles -SET role = CASE - WHEN user_type = 1 THEN 'customer' -- 消费者 - WHEN user_type = 2 THEN 'merchant' -- 商家 - WHEN user_type = 3 THEN 'delivery' -- 配送员 - WHEN user_type = 4 THEN 'service' -- 客服 - WHEN user_type = 5 THEN 'admin' -- 管理员 - ELSE 'customer' -END -WHERE role = 'customer' OR role IS NULL; - --- 设置非空约束 -ALTER TABLE public.ml_user_profiles -ALTER COLUMN role SET NOT NULL; - --- ==================================================================== --- 3. 约束和索引更新 --- ==================================================================== - --- 添加新的约束 -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.check_constraints WHERE constraint_name = 'chk_ml_user_role') THEN - ALTER TABLE public.ml_user_profiles - ADD CONSTRAINT chk_ml_user_role - CHECK (role IN ('customer', 'merchant', 'delivery', 'service', 'admin')); - RAISE NOTICE '已添加 role 字段约束'; - END IF; -END $$; - --- 创建新索引 -DROP INDEX IF EXISTS idx_ml_user_profiles_role; -CREATE INDEX idx_ml_user_profiles_role ON public.ml_user_profiles(role); - --- ==================================================================== --- 4. 同步 ak_users 表的 role 字段 --- ==================================================================== - --- 同步 ak_users.role 字段 -UPDATE public.ak_users -SET role = p.role, - updated_at = CURRENT_TIMESTAMP -FROM public.ml_user_profiles p -WHERE ak_users.id = p.user_id -AND (ak_users.role != p.role OR ak_users.role IS NULL); - --- ==================================================================== --- 5. 更新函数和视图 --- ==================================================================== - --- 更新商家验证函数 -CREATE OR REPLACE FUNCTION public.is_verified_merchant(user_uuid UUID) -RETURNS BOOLEAN -LANGUAGE plpgsql -SECURITY DEFINER -AS $$ -DECLARE - result BOOLEAN := FALSE; -BEGIN - SELECT (role = 'merchant' AND verification_status = 1) INTO result - FROM public.ml_user_profiles - WHERE user_id = user_uuid; - - RETURN COALESCE(result, FALSE); -END; -$$; - --- 更新用户信息视图 -CREATE OR REPLACE VIEW public.ml_users_view AS -SELECT - u.id, - u.email, - u.username, - u.phone, - u.avatar_url, - u.status as user_status, - u.gender, - u.birthday, - u.bio, - u.created_at as user_created_at, - u.updated_at as user_updated_at, - p.role, - p.status, - p.real_name, - p.credit_score, - p.verification_status, - p.created_at as profile_created_at, - p.updated_at as profile_updated_at, - CASE - WHEN p.role = 'customer' THEN '消费者' - WHEN p.role = 'merchant' THEN '商家' - WHEN p.role = 'delivery' THEN '配送员' - WHEN p.role = 'service' THEN '客服' - WHEN p.role = 'admin' THEN '管理员' - ELSE '未知' - END as role_name -FROM public.ak_users u -LEFT JOIN public.ml_user_profiles p ON u.id = p.user_id; - --- ==================================================================== --- 6. 更新字段注释 --- ==================================================================== - -COMMENT ON COLUMN public.ml_user_profiles.role IS '用户角色:customer消费者, merchant商家, delivery配送员, service客服, admin管理员'; - --- ==================================================================== --- 7. 验证迁移结果 --- ==================================================================== - -DO $$ -DECLARE - total_users INTEGER; - migrated_users INTEGER; - role_stats RECORD; -BEGIN - -- 统计总用户数 - SELECT COUNT(*) INTO total_users FROM public.ml_user_profiles; - - -- 统计已迁移用户数 - SELECT COUNT(*) INTO migrated_users - FROM public.ml_user_profiles - WHERE role IN ('customer', 'merchant', 'delivery', 'service', 'admin'); - - RAISE NOTICE '迁移完成:总用户 %, 已迁移 %', total_users, migrated_users; - - -- 显示角色分布 - RAISE NOTICE '角色分布统计:'; - FOR role_stats IN - SELECT role, COUNT(*) as count - FROM public.ml_user_profiles - GROUP BY role - ORDER BY count DESC - LOOP - RAISE NOTICE ' %: % 用户', role_stats.role, role_stats.count; - END LOOP; -END $$; - -COMMIT; - -\echo '角色字段迁移完成!' - --- ==================================================================== --- 8. 可选:清理旧字段(请谨慎执行) --- ==================================================================== - -/* --- 警告:以下操作将永久删除 user_type 字段,请确保迁移成功后再执行 - -BEGIN; - --- 删除旧约束 -ALTER TABLE public.ml_user_profiles DROP CONSTRAINT IF EXISTS chk_ml_user_type; - --- 删除旧索引 -DROP INDEX IF EXISTS idx_ml_user_profiles_type; - --- 删除旧字段 -ALTER TABLE public.ml_user_profiles DROP COLUMN IF EXISTS user_type; - -COMMIT; - -\echo '旧 user_type 字段清理完成'; -*/ - --- ==================================================================== --- 9. 回滚脚本(如需回滚,请执行以下命令) --- ==================================================================== - -/* --- 回滚到 user_type 字段(仅在必要时执行) - -BEGIN; - --- 重新添加 user_type 字段 -ALTER TABLE public.ml_user_profiles -ADD COLUMN user_type INTEGER DEFAULT 1; - --- 从 role 字段恢复数据 -UPDATE public.ml_user_profiles -SET user_type = CASE - WHEN role = 'customer' THEN 1 - WHEN role = 'merchant' THEN 2 - WHEN role = 'delivery' THEN 3 - WHEN role = 'service' THEN 4 - WHEN role = 'admin' THEN 5 - ELSE 1 -END; - --- 设置非空约束 -ALTER TABLE public.ml_user_profiles -ALTER COLUMN user_type SET NOT NULL; - --- 重新添加约束 -ALTER TABLE public.ml_user_profiles -ADD CONSTRAINT chk_ml_user_type CHECK (user_type IN (1,2,3,4,5)); - --- 重新创建索引 -CREATE INDEX idx_ml_user_profiles_type ON public.ml_user_profiles(user_type); - --- 删除 role 字段 -ALTER TABLE public.ml_user_profiles DROP CONSTRAINT IF EXISTS chk_ml_user_role; -ALTER TABLE public.ml_user_profiles DROP COLUMN IF EXISTS role; - -COMMIT; - -\echo '已回滚到 user_type 字段'; -*/ diff --git a/doc_mall/database/role_field_cleanup.sql b/doc_mall/database/role_field_cleanup.sql deleted file mode 100644 index 6af83afb..00000000 --- a/doc_mall/database/role_field_cleanup.sql +++ /dev/null @@ -1,207 +0,0 @@ --- ==================================================================== --- 角色字段清理脚本 - Role Field Cleanup --- ==================================================================== --- 目的:确保角色信息只存储在 ak_users.role 字段中 --- 清理 ml_user_profiles 表中可能存在的重复 role 字段 --- 兼容性:Supabase + PostgreSQL 14+ --- ==================================================================== - -\echo '开始角色字段清理...' - -BEGIN; - --- ==================================================================== --- 1. 检查并清理 ml_user_profiles 中的 role 字段 --- ==================================================================== - --- 检查是否存在重复的 role 字段 -DO $$ -BEGIN - IF EXISTS (SELECT 1 FROM information_schema.columns - WHERE table_name = 'ml_user_profiles' - AND column_name = 'role') THEN - - RAISE NOTICE '发现 ml_user_profiles 表中存在 role 字段,开始清理...'; - - -- 如果 ak_users.role 字段为空,从 ml_user_profiles.role 迁移数据 - UPDATE public.ak_users - SET role = COALESCE(ak_users.role, p.role), - updated_at = CURRENT_TIMESTAMP - FROM public.ml_user_profiles p - WHERE ak_users.id = p.user_id - AND (ak_users.role IS NULL OR ak_users.role = ''); - - -- 删除相关约束 - ALTER TABLE public.ml_user_profiles DROP CONSTRAINT IF EXISTS chk_ml_user_role; - - -- 删除相关索引 - DROP INDEX IF EXISTS idx_ml_user_profiles_role; - - -- 删除 role 字段 - ALTER TABLE public.ml_user_profiles DROP COLUMN IF EXISTS role; - - RAISE NOTICE '已删除 ml_user_profiles 表中的 role 字段'; - ELSE - RAISE NOTICE 'ml_user_profiles 表中不存在 role 字段,无需清理'; - END IF; -END $$; - --- ==================================================================== --- 2. 更新相关函数 --- ==================================================================== - --- 更新商家验证函数 -CREATE OR REPLACE FUNCTION public.is_verified_merchant(user_uuid UUID) -RETURNS BOOLEAN -LANGUAGE plpgsql -SECURITY DEFINER -AS $$ -DECLARE - result BOOLEAN := FALSE; -BEGIN - SELECT (u.role = 'merchant' AND p.verification_status = 1) INTO result - FROM public.ml_user_profiles p - JOIN public.ak_users u ON p.user_id = u.id - WHERE p.user_id = user_uuid; - - RETURN COALESCE(result, FALSE); -END; -$$; - --- 获取用户角色函数 -CREATE OR REPLACE FUNCTION public.get_user_role(user_uuid UUID) -RETURNS TEXT -LANGUAGE plpgsql -SECURITY DEFINER -AS $$ -DECLARE - user_role TEXT; -BEGIN - SELECT role INTO user_role - FROM public.ak_users - WHERE id = user_uuid; - - RETURN COALESCE(user_role, 'customer'); -END; -$$; - --- 检查用户权限函数 -CREATE OR REPLACE FUNCTION public.check_user_permission(user_uuid UUID, required_roles TEXT[]) -RETURNS BOOLEAN -LANGUAGE plpgsql -SECURITY DEFINER -AS $$ -DECLARE - user_role TEXT; -BEGIN - SELECT role INTO user_role - FROM public.ak_users - WHERE id = user_uuid; - - RETURN user_role = ANY(required_roles); -END; -$$; - --- ==================================================================== --- 3. 更新视图 --- ==================================================================== - --- 更新用户信息视图 -CREATE OR REPLACE VIEW public.ml_users_view AS -SELECT - u.id, - u.email, - u.username, - u.phone, - u.avatar_url, - u.status as user_status, - u.gender, - u.birthday, - u.bio, - u.created_at as user_created_at, - u.updated_at as user_updated_at, - u.role, - p.status, - p.real_name, - p.credit_score, - p.verification_status, - p.created_at as profile_created_at, - p.updated_at as profile_updated_at, - CASE - WHEN u.role = 'customer' THEN '消费者' - WHEN u.role = 'merchant' THEN '商家' - WHEN u.role = 'delivery' THEN '配送员' - WHEN u.role = 'service' THEN '客服' - WHEN u.role = 'admin' THEN '管理员' - ELSE '未知' - END as role_name -FROM public.ak_users u -LEFT JOIN public.ml_user_profiles p ON u.id = p.user_id; - --- 创建角色统计视图 -CREATE OR REPLACE VIEW public.vw_role_statistics AS -SELECT - role, - COUNT(*) as user_count, - COUNT(*) * 100.0 / SUM(COUNT(*)) OVER() as percentage -FROM public.ak_users -WHERE role IS NOT NULL -GROUP BY role -ORDER BY user_count DESC; - --- ==================================================================== --- 4. 确保数据一致性 --- ==================================================================== - --- 确保所有用户都有角色 -UPDATE public.ak_users -SET role = 'customer' -WHERE role IS NULL OR role = ''; - --- 确保角色字段有约束 -DO $$ -BEGIN - -- 检查约束是否存在 - IF NOT EXISTS (SELECT 1 FROM information_schema.check_constraints - WHERE constraint_name = 'chk_ak_users_role') THEN - ALTER TABLE public.ak_users - ADD CONSTRAINT chk_ak_users_role - CHECK (role IN ('customer', 'merchant', 'delivery', 'service', 'admin')); - RAISE NOTICE '已添加 ak_users.role 字段约束'; - END IF; -END $$; - --- 创建角色字段索引(如果不存在) -CREATE INDEX IF NOT EXISTS idx_ak_users_role ON public.ak_users(role); - -COMMIT; - -\echo '角色字段清理完成!' - --- ==================================================================== --- 验证结果 --- ==================================================================== - --- 检查角色分布 -SELECT '角色分布统计:' as info; -SELECT * FROM public.vw_role_statistics; - --- 检查是否还有重复字段 -SELECT '字段检查:' as info; -SELECT - CASE - WHEN EXISTS (SELECT 1 FROM information_schema.columns - WHERE table_name = 'ml_user_profiles' - AND column_name = 'role') - THEN '❌ ml_user_profiles.role 字段仍然存在' - ELSE '✅ ml_user_profiles.role 字段已清理' - END as ml_user_profiles_check, - CASE - WHEN EXISTS (SELECT 1 FROM information_schema.columns - WHERE table_name = 'ak_users' - AND column_name = 'role') - THEN '✅ ak_users.role 字段存在' - ELSE '❌ ak_users.role 字段不存在' - END as ak_users_check; - -SELECT '角色字段统一完成!角色信息统一存储在 ak_users.role 字段中。' as result; diff --git a/doc_mall/database/role_field_unification.sql b/doc_mall/database/role_field_unification.sql deleted file mode 100644 index fd2115a2..00000000 --- a/doc_mall/database/role_field_unification.sql +++ /dev/null @@ -1,287 +0,0 @@ --- ==================================================================== --- 角色字段统一升级脚本 - Role Field Unification Upgrade --- ==================================================================== --- 目的:将所有表的 user_type (INTEGER) 字段统一为 role (TEXT) 字段 --- 兼容性:Supabase + PostgreSQL 14+ --- 执行顺序:在现有数据库基础上执行 --- ==================================================================== - -BEGIN; - --- ==================================================================== --- 1. 统一 ml_user_profiles 表的角色字段 --- ==================================================================== - --- 1.1 添加新的 role 字段 -ALTER TABLE public.ml_user_profiles -ADD COLUMN IF NOT EXISTS role TEXT DEFAULT 'customer'; - --- 1.2 将现有 user_type 数据迁移到 role 字段 -UPDATE public.ml_user_profiles -SET role = CASE - WHEN user_type = 1 THEN 'customer' -- 消费者 - WHEN user_type = 2 THEN 'merchant' -- 商家 - WHEN user_type = 3 THEN 'delivery' -- 配送员 - WHEN user_type = 4 THEN 'service' -- 客服 - WHEN user_type = 5 THEN 'admin' -- 管理员 - ELSE 'customer' -END -WHERE role IS NULL OR role = 'customer'; - --- 1.3 设置 role 字段约束 -ALTER TABLE public.ml_user_profiles -ALTER COLUMN role SET NOT NULL; - -ALTER TABLE public.ml_user_profiles -ADD CONSTRAINT IF NOT EXISTS chk_ml_user_role -CHECK (role IN ('customer', 'merchant', 'delivery', 'service', 'admin')); - --- 1.4 更新索引 -DROP INDEX IF EXISTS idx_ml_user_profiles_type; -CREATE INDEX IF NOT EXISTS idx_ml_user_profiles_role ON public.ml_user_profiles(role); - --- 1.5 删除旧的 user_type 字段和约束(可选,建议在测试确认后执行) --- ALTER TABLE public.ml_user_profiles DROP CONSTRAINT IF EXISTS chk_ml_user_type; --- ALTER TABLE public.ml_user_profiles DROP COLUMN IF EXISTS user_type; - --- ==================================================================== --- 2. 更新相关函数中的字段引用 --- ==================================================================== - --- 2.1 更新商家验证函数 -CREATE OR REPLACE FUNCTION public.is_verified_merchant(user_uuid UUID) -RETURNS BOOLEAN -LANGUAGE plpgsql -SECURITY DEFINER -AS $$ -DECLARE - result BOOLEAN := FALSE; -BEGIN - SELECT (role = 'merchant' AND verification_status = 1) INTO result - FROM public.ml_user_profiles - WHERE user_id = user_uuid; - - RETURN COALESCE(result, FALSE); -END; -$$; - --- 2.2 更新用户信息视图 -CREATE OR REPLACE VIEW public.vw_user_info AS -SELECT - u.id as user_id, - u.email, - u.username, - u.role as user_role, - u.status as user_status, - u.created_at as user_created_at, - p.cid as profile_cid, - p.role as profile_role, - p.status as profile_status, - p.real_name, - p.avatar_url, - p.phone, - p.credit_score, - p.verification_status, - p.created_at as profile_created_at, - CASE - WHEN p.role = 'customer' THEN '消费者' - WHEN p.role = 'merchant' THEN '商家' - WHEN p.role = 'delivery' THEN '配送员' - WHEN p.role = 'service' THEN '客服' - WHEN p.role = 'admin' THEN '管理员' - ELSE '未知' - END as role_name -FROM public.ak_users u -LEFT JOIN public.ml_user_profiles p ON u.id = p.user_id; - --- ==================================================================== --- 3. 更新 RLS 策略中的角色检查 --- ==================================================================== - --- 3.1 更新商品相关策略 -DROP POLICY IF EXISTS "商家管理自己的商品" ON public.ml_products; -CREATE POLICY "商家管理自己的商品" -ON public.ml_products -FOR ALL -TO authenticated -USING ( - merchant_id = auth.uid() - OR EXISTS ( - SELECT 1 FROM public.ml_user_profiles p - WHERE p.user_id = auth.uid() - AND p.role IN ('admin', 'service') - ) -); - --- 3.2 更新订单相关策略 -DROP POLICY IF EXISTS "配送员查看分配的订单" ON public.ml_orders; -CREATE POLICY "配送员查看分配的订单" -ON public.ml_orders -FOR SELECT -TO authenticated -USING ( - delivery_id = auth.uid() - OR EXISTS ( - SELECT 1 FROM public.ml_user_profiles p - WHERE p.user_id = auth.uid() - AND p.role IN ('admin', 'service') - ) -); - --- 3.3 更新用户资料策略 -DROP POLICY IF EXISTS "用户管理自己的资料" ON public.ml_user_profiles; -CREATE POLICY "用户管理自己的资料" -ON public.ml_user_profiles -FOR ALL -TO authenticated -USING ( - user_id = auth.uid() - OR EXISTS ( - SELECT 1 FROM public.ml_user_profiles p - WHERE p.user_id = auth.uid() - AND p.role IN ('admin', 'service') - ) -); - --- ==================================================================== --- 4. 更新字段注释 --- ==================================================================== - -COMMENT ON COLUMN public.ml_user_profiles.role IS '用户角色:customer消费者, merchant商家, delivery配送员, service客服, admin管理员'; - --- ==================================================================== --- 5. 创建角色辅助函数 --- ==================================================================== - --- 5.1 获取用户角色函数 -CREATE OR REPLACE FUNCTION public.get_user_role(user_uuid UUID) -RETURNS TEXT -LANGUAGE plpgsql -SECURITY DEFINER -AS $$ -DECLARE - user_role TEXT; -BEGIN - SELECT role INTO user_role - FROM public.ml_user_profiles - WHERE user_id = user_uuid; - - RETURN COALESCE(user_role, 'customer'); -END; -$$; - --- 5.2 检查用户权限函数 -CREATE OR REPLACE FUNCTION public.check_user_permission(user_uuid UUID, required_roles TEXT[]) -RETURNS BOOLEAN -LANGUAGE plpgsql -SECURITY DEFINER -AS $$ -DECLARE - user_role TEXT; -BEGIN - SELECT role INTO user_role - FROM public.ml_user_profiles - WHERE user_id = user_uuid; - - RETURN user_role = ANY(required_roles); -END; -$$; - --- 5.3 角色升级函数(将用户提升为商家等) -CREATE OR REPLACE FUNCTION public.upgrade_user_role(user_uuid UUID, new_role TEXT) -RETURNS BOOLEAN -LANGUAGE plpgsql -SECURITY DEFINER -AS $$ -BEGIN - -- 检查新角色是否有效 - IF new_role NOT IN ('customer', 'merchant', 'delivery', 'service', 'admin') THEN - RAISE EXCEPTION '无效的角色类型: %', new_role; - END IF; - - -- 更新用户角色 - UPDATE public.ml_user_profiles - SET role = new_role, - updated_at = CURRENT_TIMESTAMP - WHERE user_id = user_uuid; - - -- 同步更新 ak_users 表的 role 字段 - UPDATE public.ak_users - SET role = new_role, - updated_at = CURRENT_TIMESTAMP - WHERE id = user_uuid; - - RETURN FOUND; -END; -$$; - --- ==================================================================== --- 6. 数据一致性检查 --- ==================================================================== - --- 6.1 检查角色字段一致性 -DO $$ -DECLARE - inconsistent_count INTEGER; -BEGIN - SELECT COUNT(*) INTO inconsistent_count - FROM public.ak_users u - JOIN public.ml_user_profiles p ON u.id = p.user_id - WHERE u.role != p.role; - - IF inconsistent_count > 0 THEN - RAISE NOTICE '发现 % 条记录的角色字段不一致,正在同步...', inconsistent_count; - - -- 以 ml_user_profiles.role 为准同步到 ak_users.role - UPDATE public.ak_users - SET role = p.role, - updated_at = CURRENT_TIMESTAMP - FROM public.ml_user_profiles p - WHERE ak_users.id = p.user_id - AND ak_users.role != p.role; - - RAISE NOTICE '角色字段同步完成'; - ELSE - RAISE NOTICE '角色字段一致性检查通过'; - END IF; -END; -$$; - --- ==================================================================== --- 7. 创建角色统计视图 --- ==================================================================== - -CREATE OR REPLACE VIEW public.vw_role_statistics AS -SELECT - role, - COUNT(*) as user_count, - COUNT(*) * 100.0 / SUM(COUNT(*)) OVER() as percentage -FROM public.ml_user_profiles -GROUP BY role -ORDER BY user_count DESC; - -COMMIT; - --- ==================================================================== --- 执行验证 --- ==================================================================== - --- 检查角色分布 -SELECT '角色分布统计:' as info; -SELECT * FROM public.vw_role_statistics; - --- 检查索引 -SELECT '索引检查:' as info; -SELECT indexname, indexdef -FROM pg_indexes -WHERE tablename = 'ml_user_profiles' -AND indexname LIKE '%role%'; - --- 检查约束 -SELECT '约束检查:' as info; -SELECT conname, pg_get_constraintdef(oid) as definition -FROM pg_constraint -WHERE conrelid = 'public.ml_user_profiles'::regclass -AND conname LIKE '%role%'; - -SELECT '角色字段统一升级完成!' as result; diff --git a/doc_mall/database/user_compatibility_implementation.sql b/doc_mall/database/user_compatibility_implementation.sql deleted file mode 100644 index 688b7c7c..00000000 --- a/doc_mall/database/user_compatibility_implementation.sql +++ /dev/null @@ -1,273 +0,0 @@ --- 商城系统用户兼容性实施方案 --- 基于混合方案:复用 ak_users 主表 + 商城扩展表 - --- 1. 商城用户扩展表 -CREATE TABLE public.mall_user_profiles ( - id uuid PRIMARY KEY DEFAULT gen_random_uuid(), - user_id uuid UNIQUE REFERENCES public.ak_users(id) ON DELETE CASCADE, - user_type INTEGER DEFAULT 1, -- 1:消费者 2:商家 3:配送员 4:客服 5:管理员 - status INTEGER DEFAULT 1, -- 1:正常 2:冻结 3:注销 4:待审核 - real_name VARCHAR(64), -- 真实姓名(商家认证、配送员必填) - id_card VARCHAR(32), -- 身份证号(商家认证、配送员必填) - credit_score INTEGER DEFAULT 100, -- 信用分数 0-1000 - mall_role VARCHAR(32) DEFAULT 'consumer', -- 商城角色标识 - verification_status INTEGER DEFAULT 0, -- 认证状态 0:未认证 1:已认证 2:认证失败 - verification_data JSONB, -- 认证相关数据 - business_license VARCHAR(128), -- 营业执照号(商家) - shop_category VARCHAR(64), -- 店铺类别(商家) - service_areas JSONB, -- 服务区域(配送员) - emergency_contact VARCHAR(128), -- 紧急联系人(配送员) - preferences JSONB, -- 用户偏好设置 - created_at TIMESTAMP WITH TIME ZONE DEFAULT now(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT now() -); - -COMMENT ON TABLE public.mall_user_profiles IS '商城用户扩展信息表'; -COMMENT ON COLUMN public.mall_user_profiles.user_id IS '关联ak_users表的用户ID'; -COMMENT ON COLUMN public.mall_user_profiles.user_type IS '用户类型:1消费者 2商家 3配送员 4客服 5管理员'; -COMMENT ON COLUMN public.mall_user_profiles.status IS '用户状态:1正常 2冻结 3注销 4待审核'; -COMMENT ON COLUMN public.mall_user_profiles.credit_score IS '信用分数,影响交易权限'; -COMMENT ON COLUMN public.mall_user_profiles.verification_status IS '认证状态:0未认证 1已认证 2认证失败'; - --- 创建索引 -CREATE INDEX idx_mall_user_profiles_user_id ON public.mall_user_profiles(user_id); -CREATE INDEX idx_mall_user_profiles_user_type ON public.mall_user_profiles(user_type); -CREATE INDEX idx_mall_user_profiles_status ON public.mall_user_profiles(status); -CREATE INDEX idx_mall_user_profiles_mall_role ON public.mall_user_profiles(mall_role); - --- 2. 用户地址表 -CREATE TABLE public.ak_user_addresses ( - id uuid PRIMARY KEY DEFAULT gen_random_uuid(), - user_id uuid REFERENCES public.ak_users(id) ON DELETE CASCADE, - receiver_name VARCHAR(64) NOT NULL, -- 收货人姓名 - receiver_phone VARCHAR(32) NOT NULL, -- 收货人手机 - province VARCHAR(64) NOT NULL, -- 省份 - city VARCHAR(64) NOT NULL, -- 城市 - district VARCHAR(64) NOT NULL, -- 区县 - address_detail TEXT NOT NULL, -- 详细地址 - postal_code VARCHAR(16), -- 邮编 - is_default BOOLEAN DEFAULT false, -- 是否默认地址 - label VARCHAR(32), -- 地址标签:home/office/school/other - coordinates POINT, -- 经纬度坐标,用于配送距离计算 - delivery_instructions TEXT, -- 配送说明 - business_hours VARCHAR(128), -- 可配送时间(如:9:00-18:00) - status INTEGER DEFAULT 1, -- 地址状态:1正常 2禁用 - created_at TIMESTAMP WITH TIME ZONE DEFAULT now(), - updated_at TIMESTAMP WITH TIME ZONE DEFAULT now() -); - -COMMENT ON TABLE public.ak_user_addresses IS '用户地址表'; -COMMENT ON COLUMN public.ak_user_addresses.coordinates IS '经纬度坐标,格式:POINT(longitude latitude)'; -COMMENT ON COLUMN public.ak_user_addresses.label IS '地址标签:home家 office公司 school学校 other其他'; - --- 创建索引 -CREATE INDEX idx_user_addresses_user_id ON public.ak_user_addresses(user_id); -CREATE INDEX idx_user_addresses_city ON public.ak_user_addresses(city); -CREATE INDEX idx_user_addresses_district ON public.ak_user_addresses(district); -CREATE INDEX idx_user_addresses_is_default ON public.ak_user_addresses(is_default); - --- 创建地理位置索引(用于附近配送查询) -CREATE INDEX idx_user_addresses_coordinates ON public.ak_user_addresses USING GIST(coordinates); - --- 3. 用户收藏表 -CREATE TABLE public.mall_user_favorites ( - id uuid PRIMARY KEY DEFAULT gen_random_uuid(), - user_id uuid REFERENCES public.ak_users(id) ON DELETE CASCADE, - target_type VARCHAR(32) NOT NULL, -- 收藏类型:product/shop - target_id uuid NOT NULL, -- 目标ID - created_at TIMESTAMP WITH TIME ZONE DEFAULT now() -); - -COMMENT ON TABLE public.mall_user_favorites IS '用户收藏表'; -COMMENT ON COLUMN public.mall_user_favorites.target_type IS '收藏类型:product商品 shop店铺'; - --- 创建索引和唯一约束 -CREATE INDEX idx_mall_user_favorites_user_id ON public.mall_user_favorites(user_id); -CREATE INDEX idx_mall_user_favorites_target ON public.mall_user_favorites(target_type, target_id); -CREATE UNIQUE INDEX idx_mall_user_favorites_unique ON public.mall_user_favorites(user_id, target_type, target_id); - --- 4. 用户搜索历史表 -CREATE TABLE public.mall_user_search_history ( - id uuid PRIMARY KEY DEFAULT gen_random_uuid(), - user_id uuid REFERENCES public.ak_users(id) ON DELETE CASCADE, - keyword VARCHAR(256) NOT NULL, -- 搜索关键词 - search_count INTEGER DEFAULT 1, -- 搜索次数 - last_search_at TIMESTAMP WITH TIME ZONE DEFAULT now(), - created_at TIMESTAMP WITH TIME ZONE DEFAULT now() -); - -COMMENT ON TABLE public.mall_user_search_history IS '用户搜索历史表'; - --- 创建索引 -CREATE INDEX idx_mall_search_history_user_id ON public.mall_user_search_history(user_id); -CREATE INDEX idx_mall_search_history_keyword ON public.mall_user_search_history(keyword); -CREATE UNIQUE INDEX idx_mall_search_history_unique ON public.mall_user_search_history(user_id, keyword); - --- 5. 用户浏览历史表 -CREATE TABLE public.mall_user_browse_history ( - id uuid PRIMARY KEY DEFAULT gen_random_uuid(), - user_id uuid REFERENCES public.ak_users(id) ON DELETE CASCADE, - product_id uuid NOT NULL, -- 浏览的商品ID - browse_count INTEGER DEFAULT 1, -- 浏览次数 - browse_duration INTEGER DEFAULT 0, -- 浏览时长(秒) - last_browse_at TIMESTAMP WITH TIME ZONE DEFAULT now(), - created_at TIMESTAMP WITH TIME ZONE DEFAULT now() -); - -COMMENT ON TABLE public.mall_user_browse_history IS '用户浏览历史表'; - --- 创建索引 -CREATE INDEX idx_mall_browse_history_user_id ON public.mall_user_browse_history(user_id); -CREATE INDEX idx_mall_browse_history_product_id ON public.mall_user_browse_history(product_id); -CREATE INDEX idx_mall_browse_history_last_browse ON public.mall_user_browse_history(last_browse_at); -CREATE UNIQUE INDEX idx_mall_browse_history_unique ON public.mall_user_browse_history(user_id, product_id); - --- 6. 触发器:确保每个用户只有一个默认地址 -CREATE OR REPLACE FUNCTION ensure_single_default_address() -RETURNS TRIGGER AS $$ -BEGIN - -- 如果新插入/更新的地址设为默认 - IF NEW.is_default = true THEN - -- 将该用户的其他地址的默认状态设为false - UPDATE public.ak_user_addresses - SET is_default = false - WHERE user_id = NEW.user_id AND id != NEW.id; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - --- 创建触发器 -CREATE TRIGGER trigger_ensure_single_default_address - BEFORE INSERT OR UPDATE ON public.ak_user_addresses - FOR EACH ROW - EXECUTE FUNCTION ensure_single_default_address(); - --- 7. 触发器:自动更新 updated_at 字段 -CREATE OR REPLACE FUNCTION update_updated_at_column() -RETURNS TRIGGER AS $$ -BEGIN - NEW.updated_at = now(); - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - --- 为相关表创建更新时间触发器 -CREATE TRIGGER trigger_mall_user_profiles_updated_at - BEFORE UPDATE ON public.mall_user_profiles - FOR EACH ROW - EXECUTE FUNCTION update_updated_at_column(); - -CREATE TRIGGER trigger_user_addresses_updated_at - BEFORE UPDATE ON public.ak_user_addresses - FOR EACH ROW - EXECUTE FUNCTION update_updated_at_column(); - --- 8. 数据迁移:为现有 ak_users 用户创建默认商城档案 -INSERT INTO public.mall_user_profiles (user_id, user_type, status, mall_role) -SELECT - id, - 1, -- 默认为消费者 - 1, -- 默认状态正常 - 'consumer' -- 默认角色消费者 -FROM public.ak_users -WHERE id NOT IN (SELECT user_id FROM public.mall_user_profiles WHERE user_id IS NOT NULL); - --- 9. 创建视图:商城用户完整信息视图 -CREATE VIEW public.mall_users_view AS -SELECT - u.id, - u.username, - u.email, - u.phone, - u.avatar_url, - u.gender, - u.birthday, - u.bio, - u.created_at as user_created_at, - u.updated_at as user_updated_at, - mp.user_type, - mp.status, - mp.real_name, - mp.credit_score, - mp.mall_role, - mp.verification_status, - mp.created_at as profile_created_at, - mp.updated_at as profile_updated_at -FROM public.ak_users u -INNER JOIN public.mall_user_profiles mp ON u.id = mp.user_id; - -COMMENT ON VIEW public.mall_users_view IS '商城用户完整信息视图'; - --- 10. 权限设置(根据实际需要调整) --- 创建商城相关的RLS策略 -ALTER TABLE public.mall_user_profiles ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.ak_user_addresses ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.mall_user_favorites ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.mall_user_search_history ENABLE ROW LEVEL SECURITY; -ALTER TABLE public.mall_user_browse_history ENABLE ROW LEVEL SECURITY; - --- 用户只能访问自己的数据 -CREATE POLICY mall_user_profiles_policy ON public.mall_user_profiles - FOR ALL USING (auth.uid()::text = (SELECT auth_id::text FROM public.ak_users WHERE id = user_id)); - -CREATE POLICY user_addresses_policy ON public.ak_user_addresses - FOR ALL USING (auth.uid()::text = (SELECT auth_id::text FROM public.ak_users WHERE id = user_id)); - -CREATE POLICY mall_user_favorites_policy ON public.mall_user_favorites - FOR ALL USING (auth.uid()::text = (SELECT auth_id::text FROM public.ak_users WHERE id = user_id)); - -CREATE POLICY mall_user_search_history_policy ON public.mall_user_search_history - FOR ALL USING (auth.uid()::text = (SELECT auth_id::text FROM public.ak_users WHERE id = user_id)); - -CREATE POLICY mall_user_browse_history_policy ON public.mall_user_browse_history - FOR ALL USING (auth.uid()::text = (SELECT auth_id::text FROM public.ak_users WHERE id = user_id)); - --- 11. 示例查询函数 --- 获取用户默认地址 -CREATE OR REPLACE FUNCTION get_user_default_address(p_user_id uuid) -RETURNS TABLE ( - id uuid, - receiver_name varchar, - receiver_phone varchar, - full_address text, - coordinates point -) AS $$ -BEGIN - RETURN QUERY - SELECT - a.id, - a.receiver_name, - a.receiver_phone, - (a.province || a.city || a.district || a.address_detail) as full_address, - a.coordinates - FROM public.ak_user_addresses a - WHERE a.user_id = p_user_id AND a.is_default = true AND a.status = 1 - LIMIT 1; -END; -$$ LANGUAGE plpgsql; - --- 检查用户是否为商城认证商家 -CREATE OR REPLACE FUNCTION is_verified_merchant(p_user_id uuid) -RETURNS boolean AS $$ -DECLARE - result boolean := false; -BEGIN - SELECT (user_type = 2 AND verification_status = 1) INTO result - FROM public.mall_user_profiles - WHERE user_id = p_user_id; - - RETURN COALESCE(result, false); -END; -$$ LANGUAGE plpgsql; - --- 12. 完成提示 -DO $$ -BEGIN - RAISE NOTICE '商城用户兼容性方案部署完成!'; - RAISE NOTICE '已创建表:mall_user_profiles, ak_user_addresses, mall_user_favorites, mall_user_search_history, mall_user_browse_history'; - RAISE NOTICE '已创建视图:mall_users_view'; - RAISE NOTICE '已设置触发器和RLS策略'; - RAISE NOTICE '已为现有用户创建默认商城档案'; -END $$; diff --git a/doc_mall/database/validation_test.sql b/doc_mall/database/validation_test.sql deleted file mode 100644 index d9681f59..00000000 --- a/doc_mall/database/validation_test.sql +++ /dev/null @@ -1,113 +0,0 @@ --- 商城数据库脚本验证测试 --- 这个脚本用于验证数据库创建和模拟数据插入是否正常工作 - --- 1. 检查必要的扩展是否可用 -DO $$ -BEGIN - -- 检查 uuid-ossp 扩展 - IF NOT EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'uuid-ossp') THEN - RAISE NOTICE 'uuid-ossp 扩展未安装,请先执行: CREATE EXTENSION IF NOT EXISTS "uuid-ossp";'; - ELSE - RAISE NOTICE 'uuid-ossp 扩展已安装 ✓'; - END IF; - - -- 检查 pgcrypto 扩展 - IF NOT EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'pgcrypto') THEN - RAISE NOTICE 'pgcrypto 扩展未安装,请先执行: CREATE EXTENSION IF NOT EXISTS "pgcrypto";'; - ELSE - RAISE NOTICE 'pgcrypto 扩展已安装 ✓'; - END IF; -END $$; - --- 2. 检查 ak_users 表是否存在 -DO $$ -BEGIN - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'ak_users') THEN - RAISE NOTICE 'ak_users 表已存在 ✓'; - - -- 检查 ak_users 表结构 - IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'ak_users' AND column_name = 'auth_id' AND data_type = 'uuid') THEN - RAISE NOTICE 'ak_users.auth_id 字段类型正确 (uuid) ✓'; - ELSE - RAISE NOTICE 'ak_users.auth_id 字段类型可能不正确,应为 uuid 类型'; - END IF; - ELSE - RAISE NOTICE 'ak_users 表不存在,需要先创建或从现有系统迁移'; - END IF; -END $$; - --- 3. 语法验证 - 测试典型的 RLS 策略语法 -DO $$ -BEGIN - RAISE NOTICE '开始验证 RLS 策略语法...'; - - -- 测试 UUID 比较语法 - BEGIN - -- 这个查询应该能正常解析 - PERFORM 1 WHERE '00000000-0000-0000-0000-000000000000'::uuid = '00000000-0000-0000-0000-000000000000'::uuid; - RAISE NOTICE 'UUID 比较语法正确 ✓'; - EXCEPTION WHEN OTHERS THEN - RAISE NOTICE 'UUID 比较语法错误: %', SQLERRM; - END; - - RAISE NOTICE 'RLS 策略语法验证完成 ✓'; -END $$; - --- 4. 检查商城表是否已存在 -DO $$ -DECLARE - table_count INTEGER; - mall_tables TEXT[] := ARRAY[ - 'ml_user_profiles', 'ml_user_addresses', 'ml_shopping_cart', - 'ml_merchants', 'ml_categories', 'ml_products', 'ml_product_images', - 'ml_product_variants', 'ml_inventory', 'ml_orders', 'ml_order_items', - 'ml_reviews', 'ml_user_behavior', 'ml_promotions', 'ml_coupons', - 'ml_user_coupons', 'ml_delivery_info', 'ml_system_config' - ]; - tbl TEXT; -BEGIN - table_count := 0; - - FOREACH tbl IN ARRAY mall_tables - LOOP - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' AND table_name = tbl) THEN - table_count := table_count + 1; - END IF; - END LOOP; - - RAISE NOTICE '商城表检查: %/% 个表已存在', table_count, array_length(mall_tables, 1); - - IF table_count = 0 THEN - RAISE NOTICE '商城表尚未创建,可以执行 complete_mall_database.sql'; - ELSIF table_count = array_length(mall_tables, 1) THEN - RAISE NOTICE '所有商城表已存在 ✓'; - ELSE - RAISE NOTICE '部分商城表已存在,建议检查现有表结构'; - END IF; -END $$; - --- 5. 模拟数据检查 -DO $$ -DECLARE - user_count INTEGER; - profile_count INTEGER; - product_count INTEGER; -BEGIN - -- 检查用户数据 - SELECT COUNT(*) INTO user_count FROM public.ak_users WHERE username IN ('admin', 'merchant1', 'merchant2', 'customer1', 'customer2', 'customer3', 'driver1', 'driver2'); - RAISE NOTICE '测试用户数量: %', user_count; - - -- 检查商城相关数据(如果表存在) - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'ml_user_profiles') THEN - SELECT COUNT(*) INTO profile_count FROM public.ml_user_profiles; - RAISE NOTICE '用户档案数量: %', profile_count; - END IF; - - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'ml_products') THEN - SELECT COUNT(*) INTO product_count FROM public.ml_products; - RAISE NOTICE '商品数量: %', product_count; - END IF; -END $$; - --- 验证完成 -SELECT '数据库验证测试完成' AS status; diff --git a/doc_mall/database/verify_mock_data_fix.sql b/doc_mall/database/verify_mock_data_fix.sql deleted file mode 100644 index fdfb11e8..00000000 --- a/doc_mall/database/verify_mock_data_fix.sql +++ /dev/null @@ -1,113 +0,0 @@ --- =================================================================-- 验证7:检查临时表是否已清理 -SELECT - '临时表清理检查' as check_type, - CASE - WHEN EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'temp_user_ids') - THEN '临时表仍存在' - ELSE '临时表已清理' - END as cleanup_status; - --- 验证8:检查配送任务分配逻辑 -SELECT - '配送任务分配检查' as check_type, - COUNT(DISTINCT dt.driver_id) as assigned_drivers, - COUNT(*) as total_tasks, - ROUND(AVG(tasks_per_driver.task_count), 2) as avg_tasks_per_driver -FROM public.ml_delivery_tasks dt -CROSS JOIN ( - SELECT driver_id, COUNT(*) as task_count - FROM public.ml_delivery_tasks - GROUP BY driver_id -) as tasks_per_driver;============ --- mock_data_insert.sql 修复验证脚本 --- 用途: 验证修复后的模拟数据插入脚本是否能正常执行 --- ===================================================================================== - --- 验证1:检查商品价格数据完整性 -SELECT - '商品价格检查' as check_type, - COUNT(*) as total_products, - COUNT(CASE WHEN base_price IS NULL THEN 1 END) as null_base_price_count, - COUNT(CASE WHEN base_price > 0 THEN 1 END) as valid_price_count -FROM public.ml_products; - --- 验证2:检查SKU价格数据完整性 -SELECT - 'SKU价格检查' as check_type, - COUNT(*) as total_skus, - COUNT(CASE WHEN price IS NULL THEN 1 END) as null_price_count, - COUNT(CASE WHEN price > 0 THEN 1 END) as valid_price_count -FROM public.ml_product_skus; - --- 验证3:测试商品-SKU价格查询逻辑 -SELECT - '价格查询逻辑测试' as check_type, - p.name as product_name, - p.base_price, - s.price as sku_price, - COALESCE(s.price, p.base_price) as final_price, - CASE - WHEN s.price IS NOT NULL THEN 'SKU价格' - ELSE '基础价格' - END as price_source -FROM public.ml_products p -LEFT JOIN public.ml_product_skus s ON p.id = s.product_id -ORDER BY p.name, s.sku_code -LIMIT 10; - --- 验证4:检查订单商品价格是否存在NULL值 -SELECT - '订单商品价格检查' as check_type, - COUNT(*) as total_order_items, - COUNT(CASE WHEN price IS NULL THEN 1 END) as null_price_count, - COUNT(CASE WHEN price > 0 THEN 1 END) as valid_price_count, - MIN(price) as min_price, - MAX(price) as max_price -FROM public.ml_order_items; - --- 验证5:检查订单关联的商家ID是否正确 -SELECT - '订单商家关联检查' as check_type, - COUNT(DISTINCT o.merchant_id) as unique_merchants, - COUNT(*) as total_orders, - COUNT(CASE WHEN u.role = 'merchant' THEN 1 END) as valid_merchant_orders -FROM public.ml_orders o -LEFT JOIN public.ak_users u ON o.merchant_id = u.id; - --- 验证6:检查配送任务唯一性 -SELECT - '配送任务唯一性检查' as check_type, - COUNT(*) as total_delivery_tasks, - COUNT(DISTINCT order_id) as unique_orders, - COUNT(*) - COUNT(DISTINCT order_id) as duplicate_order_count, - CASE - WHEN COUNT(*) = COUNT(DISTINCT order_id) THEN '✓ 无重复订单' - ELSE '✗ 存在重复订单配送任务' - END as uniqueness_status -FROM public.ml_delivery_tasks; - --- 验证7:检查临时表是否已清理 -SELECT - '临时表清理检查' as check_type, - CASE - WHEN EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'temp_user_ids') - THEN '临时表仍存在' - ELSE '临时表已清理' - END as cleanup_status; - --- 输出总体验证结果 -DO $$ -BEGIN - RAISE NOTICE '======================================================='; - RAISE NOTICE '模拟数据插入脚本修复验证完成'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '请检查以上查询结果:'; - RAISE NOTICE '1. 商品和SKU价格应无NULL值'; - RAISE NOTICE '2. 订单商品价格应无NULL值'; - RAISE NOTICE '3. 订单应正确关联到商家用户'; - RAISE NOTICE '4. 配送任务应无重复订单'; - RAISE NOTICE '5. 临时表应已清理'; - RAISE NOTICE '======================================================='; - RAISE NOTICE '如所有检查通过,说明修复有效'; - RAISE NOTICE '======================================================='; -END $$; diff --git a/doc_mall/reports/PAYMENT_PAGE_GUIDE.md b/doc_mall/reports/PAYMENT_PAGE_GUIDE.md new file mode 100644 index 00000000..709e4fd0 --- /dev/null +++ b/doc_mall/reports/PAYMENT_PAGE_GUIDE.md @@ -0,0 +1,75 @@ +# Payment Page Documentation + +**File Path:** `pages/mall/consumer/payment.uvue` + +## 1. Overview +The Payment Page is the final step in the checkout process. It presents the user with the order total, allows selection of a payment method, and processes the transaction. It is fully integrated with the Supabase backend to ensure order status consistency. + +## 2. Page Parameters (`onLoad`) + +The page expects the following parameters when navigating to it: + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `orderId` | String | **Yes** | The UUID of the order created in the previous step. | +| `amount` | Number | No | The total amount to pay. Defaults to fetching from DB if omitted. | +| `productAmount` | Number | No | Subtotal for products (for display). | +| `deliveryFee` | Number | No | Shipping cost (for display). | +| `discountAmount` | Number | No | Any discounts applied (for display). | + +## 3. Data Integration (Supabase) + +The page uses `supabaseService.uts` to interact with the database. + +### 3.1 Loading Order Information +- **Method:** `supabaseService.getOrderDetail(orderId)` +- **Behavior:** Fetches `ml_orders` data. +- **Failover:** If DB load fails, falls back to `options.amount` or generates a mock Order No. + +### 3.2 Loading User Balance +- **Method:** `supabaseService.getUserBalance()` +- **Behavior:** Fetches the current user's wallet balance to determine if "Balance Payment" is viable. + +### 3.3 Processing Payment +- **Method:** `supabaseService.payOrder(orderId, method, amount)` +- **Updates Performed:** + - Sets `order_status` to `2` (Pending Delivery / Paid). + - Sets `payment_status` to `1` (Success). + - Sets `payment_method` (e.g., 'wechat', 'balance'). + - Sets `payment_time`. + +## 4. Key Features + +### 4.1 Payment Methods +Supported methods (configured in `loadPaymentMethods`): +1. **WeChat Pay** (Simulated SDK) +2. **Alipay** (Simulated SDK) +3. **Balance Payment** + - Checks if `userBalance >= amount`. + - Requires 6-digit password input. + - Password verification is currently simulated. +4. **Bank Card** (Simulated) + +### 4.2 User Interaction +- **Password Input:** A custom 6-digit dot display and numeric keypad overlay appear when "Balance Payment" is selected. +- **Interception:** `onBackPress` is intercepted to warn the user that cancelling will save the order as "Pending Payment". + +## 5. State Management + +- **Success Flow:** + 1. `confirmPayment` validates inputs (balance, password). + 2. Calls `payOrder` API. + 3. Updates local storage `orders` cache (backup). + 4. Emits `orderUpdated` global event (for Profile page refresh). + 5. Redirects to `/pages/mall/consumer/payment-success`. + +- **Cancellation Flow:** + 1. User attempts to go back. + 2. Modal prompts for confirmation. + 3. On confirm, acts as "Pending Payment" (Status remains `1`). + 4. Returns to previous page. + +## 6. Future Improvements (TODO) +- **Real Payment SDK:** Integrate actual `uni.requestPayment` for WeChat/Alipay. +- **Server-Side Verification:** Move password verification to a Supabase Edge Function instead of frontend simulation. +- **Inventory Lock:** Ensure inventory is deducted atomically on the server side (currently simulated or implicit). diff --git a/doc_mall/subscription_guard_trigger.sql b/doc_mall/subscription_guard_trigger.sql deleted file mode 100644 index 5464d863..00000000 --- a/doc_mall/subscription_guard_trigger.sql +++ /dev/null @@ -1,47 +0,0 @@ --- Optional guard to restrict non-admin updates on ml_user_subscriptions --- Purpose: Allow normal users to toggle auto_renew and cancel_at_period_end only. --- Admins can update any fields. --- Dependencies: public.is_admin() from subscription_rls_policies.sql - -begin; - --- Create or replace the guard function -create or replace function public.enforce_user_sub_update() -returns trigger -language plpgsql -as $$ -begin - -- Admin can change anything - if public.is_admin() then - return new; - end if; - - -- Owner can only toggle limited fields - if new.user_id = auth.uid() then - -- Revert disallowed fields to old values - new.status := old.status; - new.plan_id := old.plan_id; - new.start_date := old.start_date; - new.end_date := old.end_date; - new.next_billing_date := old.next_billing_date; - new.metadata := old.metadata; - -- Allow: auto_renew, cancel_at_period_end (and updated_at will be set by trigger) - return new; - end if; - - -- Neither admin nor owner - raise exception 'Forbidden (not owner)'; -end; -$$; - --- Recreate trigger (idempotent) -drop trigger if exists trg_enforce_user_sub_update on public.ml_user_subscriptions; -create trigger trg_enforce_user_sub_update - before update on public.ml_user_subscriptions - for each row execute function public.enforce_user_sub_update(); - -commit; - --- Usage: --- 1) Ensure subscription tables and RLS policies are created (see create_mall_subscription_tables.sql, subscription_rls_policies.sql) --- 2) Run this script to enforce column-level restrictions for non-admins \ No newline at end of file diff --git a/doc_mall/subscription_rls_policies.sql b/doc_mall/subscription_rls_policies.sql deleted file mode 100644 index 535d4c33..00000000 --- a/doc_mall/subscription_rls_policies.sql +++ /dev/null @@ -1,119 +0,0 @@ --- Subscription RLS and permissions --- Purpose: Ensure admins can read/write ml_user_subscriptions and ml_subscription_plans; --- consumers can only access their own subscriptions; everyone can read active plans. --- Notes: --- - Designed for Supabase (auth.uid(), auth.jwt()). --- - Adjust table/column names if they differ in your DB. - --- 1) Helper: identify admin users --- Prefer JWT app_metadata.role = 'admin' if you set it; fallback to ak_users.user_type = 5 --- (5 corresponds to ADMIN per MALL_USER_TYPE). -create or replace function public.is_admin() -returns boolean -language sql -stable -as $$ - select coalesce( - -- Check custom claim from JWT: { app_metadata: { role: 'admin' } } - ((auth.jwt() -> 'app_metadata' ->> 'role') = 'admin') - -- Fallback: ak_users.user_type = 5 (cast to text for compatibility), match user by id as text - or exists ( - select 1 from public.ak_users u - where u.id::text = auth.uid()::text - and u.user_type::text = '5' - ) - , false); -$$; - -comment on function public.is_admin is 'Returns true if current JWT/app user is admin by claim or ak_users.user_type=5.'; - --- 2) Enable RLS on subscription tables -alter table if exists public.ml_subscription_plans enable row level security; -alter table if exists public.ml_user_subscriptions enable row level security; - -grant select on table public.ml_subscription_plans to anon, authenticated; -grant select, insert, update, delete on table public.ml_subscription_plans to authenticated; -- limited by RLS -grant select, insert, update, delete on table public.ml_user_subscriptions to authenticated; -- limited by RLS - --- 4) Policies for ml_subscription_plans --- 4.1 Everyone can read active plans -drop policy if exists ml_plans_select_active on public.ml_subscription_plans; -create policy ml_plans_select_active -on public.ml_subscription_plans -for select -to anon, authenticated -using (is_active = true); - --- 4.2 Admin can do anything -drop policy if exists ml_plans_admin_all on public.ml_subscription_plans; -create policy ml_plans_admin_all -on public.ml_subscription_plans -for all -to authenticated -using (public.is_admin()) -with check (public.is_admin()); - --- 5) Policies for ml_user_subscriptions --- 5.1 Users can see their own subscriptions -drop policy if exists ml_user_subs_select_own on public.ml_user_subscriptions; -create policy ml_user_subs_select_own -on public.ml_user_subscriptions -for select -to authenticated -using (user_id = auth.uid()); - --- 5.2 Users can create their own subscriptions (checkout) -drop policy if exists ml_user_subs_insert_own on public.ml_user_subscriptions; -create policy ml_user_subs_insert_own -on public.ml_user_subscriptions -for insert -to authenticated -with check (user_id = auth.uid()); - --- 5.3 Users may update their own records (e.g., auto_renew, cancel_at_period_end) --- NOTE: This allows updating any columns; for stricter control, add a BEFORE UPDATE trigger --- that restricts column changes for non-admins. -drop policy if exists ml_user_subs_update_own on public.ml_user_subscriptions; -create policy ml_user_subs_update_own -on public.ml_user_subscriptions -for update -to authenticated -using (user_id = auth.uid()) -with check (user_id = auth.uid()); - --- 5.4 Admin can do anything on user subscriptions -drop policy if exists ml_user_subs_admin_all on public.ml_user_subscriptions; -create policy ml_user_subs_admin_all -on public.ml_user_subscriptions -for all -to authenticated -using (public.is_admin()) -with check (public.is_admin()); - --- 6) Optional: Trigger to limit non-admin updates to specific fields --- Uncomment if you want to enforce column-level restrictions --- create or replace function public.enforce_user_sub_update() --- returns trigger language plpgsql as $$ --- begin --- if public.is_admin() then --- return new; -- admins can change anything --- end if; --- -- Only allow toggling auto_renew and cancel_at_period_end for owners --- if new.user_id = auth.uid() then --- new.status := old.status; --- new.plan_id := old.plan_id; --- new.start_date := old.start_date; --- new.end_date := old.end_date; --- new.next_billing_date := old.next_billing_date; --- -- allow: auto_renew, cancel_at_period_end --- return new; --- end if; --- raise exception 'Forbidden'; --- end $$; --- drop trigger if exists trg_enforce_user_sub_update on public.ml_user_subscriptions; --- create trigger trg_enforce_user_sub_update --- before update on public.ml_user_subscriptions --- for each row execute function public.enforce_user_sub_update(); - --- 7) Safety: ensure no rows are exposed to non-auth users except active plans via select policy above. --- Admins authenticate as normal users with admin claim or ak_users.user_type=5. diff --git a/pages/mall/consumer/Supabase Snippet SQL Query.csv b/pages/mall/consumer/Supabase Snippet SQL Query.csv deleted file mode 100644 index 134f8361..00000000 --- a/pages/mall/consumer/Supabase Snippet SQL Query.csv +++ /dev/null @@ -1,487 +0,0 @@ -table_name,columns,table_comment -act_app_appdef,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""version_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""resource_name_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""description_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10}]",null -act_app_databasechangelog,"[{""column_name"":""id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""author"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""filename"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""dateexecuted"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""orderexecuted"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""exectype"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""md5sum"",""data_type"":""character varying"",""character_maximum_length"":35,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""comments"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""tag"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""liquibase"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""contexts"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""labels"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""deployment_id"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14}]",null -act_app_databasechangeloglock,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""locked"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""lockgranted"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""lockedby"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -act_app_deployment,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""deploy_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":6}]",null -act_app_deployment_resource,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""resource_bytes_"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -act_cmmn_casedef,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""version_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""resource_name_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""description_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""has_graphical_notation_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""dgrm_resource_name_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""has_start_form_key_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13}]",null -act_cmmn_databasechangelog,"[{""column_name"":""id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""author"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""filename"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""dateexecuted"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""orderexecuted"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""exectype"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""md5sum"",""data_type"":""character varying"",""character_maximum_length"":35,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""comments"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""tag"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""liquibase"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""contexts"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""labels"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""deployment_id"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14}]",null -act_cmmn_databasechangeloglock,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""locked"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""lockgranted"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""lockedby"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -act_cmmn_deployment,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""deploy_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""parent_deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7}]",null -act_cmmn_deployment_resource,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""resource_bytes_"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""generated_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5}]",null -act_cmmn_hi_case_inst,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""business_key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""parent_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""case_def_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""state_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""start_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""end_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""start_user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""callback_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""callback_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":13},{""column_name"":""reference_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""reference_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""last_reactivation_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""last_reactivation_user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""business_status_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18}]",null -act_cmmn_hi_mil_inst,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""time_stamp_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""case_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""case_def_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""element_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8}]",null -act_cmmn_hi_plan_item_inst,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""state_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""case_def_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""case_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""stage_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""is_stage_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""element_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""item_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""item_definition_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""last_available_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""last_enabled_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""last_disabled_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""last_started_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""last_suspended_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""completed_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""occurred_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""terminated_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""exit_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""ended_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""last_updated_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""start_user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""reference_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""reference_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":27},{""column_name"":""entry_criterion_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":28},{""column_name"":""exit_criterion_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":29},{""column_name"":""show_in_overview_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30},{""column_name"":""extra_value_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":31},{""column_name"":""derived_case_def_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":32},{""column_name"":""last_unavailable_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":33}]",null -act_cmmn_ru_case_inst,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""business_key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""parent_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""case_def_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""state_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""start_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""start_user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""callback_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""callback_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""lock_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""is_completeable_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""reference_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""reference_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""lock_owner_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""last_reactivation_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""last_reactivation_user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""business_status_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20}]",null -act_cmmn_ru_mil_inst,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""time_stamp_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""case_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""case_def_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""element_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7}]",null -act_cmmn_ru_plan_item_inst,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""case_def_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""case_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""stage_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""is_stage_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""element_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""state_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""start_user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""reference_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""reference_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":14},{""column_name"":""item_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""item_definition_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""is_completeable_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""is_count_enabled_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""var_count_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""sentry_part_inst_count_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""last_available_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""last_enabled_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""last_disabled_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""last_started_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""last_suspended_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""completed_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""occurred_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":27},{""column_name"":""terminated_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":28},{""column_name"":""exit_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":29},{""column_name"":""ended_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30},{""column_name"":""entry_criterion_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":31},{""column_name"":""exit_criterion_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":32},{""column_name"":""extra_value_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":33},{""column_name"":""derived_case_def_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":34},{""column_name"":""last_unavailable_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":35}]",null -act_cmmn_ru_sentry_part_inst,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""case_def_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""case_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""plan_item_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""on_part_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""if_part_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""time_stamp_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8}]",null -act_co_content_item,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""mime_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""task_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""content_store_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""content_store_name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""field_"",""data_type"":""character varying"",""character_maximum_length"":400,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""content_available_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":9},{""column_name"":""created_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""created_by_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""last_modified_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""last_modified_by_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""content_size_"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17}]",null -act_co_databasechangelog,"[{""column_name"":""id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""author"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""filename"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""dateexecuted"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""orderexecuted"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""exectype"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""md5sum"",""data_type"":""character varying"",""character_maximum_length"":35,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""comments"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""tag"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""liquibase"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""contexts"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""labels"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""deployment_id"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14}]",null -act_co_databasechangeloglock,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""locked"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""lockgranted"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""lockedby"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -act_dmn_databasechangelog,"[{""column_name"":""id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""author"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""filename"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""dateexecuted"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""orderexecuted"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""exectype"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""md5sum"",""data_type"":""character varying"",""character_maximum_length"":35,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""comments"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""tag"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""liquibase"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""contexts"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""labels"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""deployment_id"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14}]",null -act_dmn_databasechangeloglock,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""locked"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""lockgranted"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""lockedby"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -act_dmn_decision,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""version_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""resource_name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""description_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""decision_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11}]",null -act_dmn_deployment,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""deploy_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""parent_deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6}]",null -act_dmn_deployment_resource,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""resource_bytes_"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -act_dmn_hi_decision_execution,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""decision_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""start_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""end_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""instance_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""activity_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""failed_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":9},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""execution_json_"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12}]",null -act_evt_log,"[{""column_name"":""log_nr_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('act_evt_log_log_nr__seq'::regclass)"",""ordinal_position"":1},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""task_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""time_stamp_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""data_"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""lock_owner_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""lock_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""is_processed_"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":12}]",null -act_fo_databasechangelog,"[{""column_name"":""id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""author"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""filename"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""dateexecuted"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""orderexecuted"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""exectype"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""md5sum"",""data_type"":""character varying"",""character_maximum_length"":35,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""comments"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""tag"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""liquibase"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""contexts"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""labels"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""deployment_id"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14}]",null -act_fo_databasechangeloglock,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""locked"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""lockgranted"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""lockedby"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -act_fo_form_definition,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""version_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""resource_name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""description_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10}]",null -act_fo_form_deployment,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""deploy_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""parent_deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6}]",null -act_fo_form_instance,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""form_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""task_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""submitted_date_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""submitted_by_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""form_values_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12}]",null -act_fo_form_resource,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""resource_bytes_"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -act_ge_bytearray,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""bytes_"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""generated_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6}]",null -act_ge_property,"[{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""value_"",""data_type"":""character varying"",""character_maximum_length"":300,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3}]",null -act_hi_actinst,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":2},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""act_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""task_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""call_proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""act_name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""act_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""assignee_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""start_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""end_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""transaction_order_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""duration_"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""delete_reason_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":17}]",null -act_hi_attachment,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""description_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""task_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""url_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""content_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11}]",null -act_hi_comment,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""task_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""action_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""message_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""full_msg_"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9}]",null -act_hi_detail,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""task_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""act_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""var_type_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""bytearray_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""double_"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""long_"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""text_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""text2_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15}]",null -act_hi_entitylink,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""link_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""parent_element_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""ref_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""ref_scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""ref_scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""root_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""root_scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""hierarchy_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14}]",null -act_hi_identitylink,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""group_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""task_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11}]",null -act_hi_procinst,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":2},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""business_key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""start_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""end_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""duration_"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""start_user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""start_act_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""end_act_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""super_process_instance_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""delete_reason_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":14},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""callback_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""callback_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""reference_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""reference_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""propagated_stage_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""business_status_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21}]",null -act_hi_taskinst,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":2},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""task_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""task_def_key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""propagated_stage_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""parent_task_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""description_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""owner_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""assignee_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""start_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":18},{""column_name"":""claim_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""end_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""duration_"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""delete_reason_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""priority_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""due_date_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""form_key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":27},{""column_name"":""last_updated_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":28}]",null -act_hi_tsk_log,"[{""column_name"":""id_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('act_hi_tsk_log_id__seq'::regclass)"",""ordinal_position"":1},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""task_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""time_stamp_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""data_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":14}]",null -act_hi_varinst,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":2},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""task_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""var_type_"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""bytearray_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""double_"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""long_"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""text_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""text2_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""last_updated_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17}]",null -act_id_bytearray,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""bytes_"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -act_id_group,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -act_id_info,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""value_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""password_"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""parent_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8}]",null -act_id_membership,"[{""column_name"":""user_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""group_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2}]",null -act_id_priv,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2}]",null -act_id_priv_mapping,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""priv_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""group_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -act_id_property,"[{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""value_"",""data_type"":""character varying"",""character_maximum_length"":300,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3}]",null -act_id_token,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""token_value_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""token_date_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""ip_address_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""user_agent_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""token_data_"",""data_type"":""character varying"",""character_maximum_length"":2000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8}]",null -act_id_user,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""first_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""last_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""display_name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""email_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""pwd_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""picture_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9}]",null -act_procdef_info,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""info_json_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -act_re_deployment,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":5},{""column_name"":""deploy_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""derived_from_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""derived_from_root_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""parent_deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""engine_version_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10}]",null -act_re_model,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""last_update_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""version_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""meta_info_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""editor_source_value_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""editor_source_extra_value_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":13}]",null -act_re_model_damap,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6},{""column_name"":""last_update_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""version_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""meta_info_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""editor_source_value_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""editor_source_extra_value_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":13},{""column_name"":""srcfields"",""data_type"":""json"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""mapfields"",""data_type"":""json"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""destfields"",""data_type"":""json"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""description_"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""hintfields"",""data_type"":""json"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18}]",null -act_re_procdef,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""version_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""resource_name_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""dgrm_resource_name_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""description_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""has_start_form_key_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""has_graphical_notation_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""suspension_state_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":14},{""column_name"":""derived_from_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""derived_from_root_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""derived_version_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":17},{""column_name"":""engine_version_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18}]",null -act_ru_actinst,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":2},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""act_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""task_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""call_proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""act_name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""act_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""assignee_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""start_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""end_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""duration_"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""transaction_order_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""delete_reason_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":17}]",null -act_ru_deadletter_job,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""exclusive_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""process_instance_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""element_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""element_name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""correlation_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""exception_stack_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""exception_msg_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""duedate_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""repeat_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""handler_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""handler_cfg_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""custom_values_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":24}]",null -act_ru_entitylink,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""link_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""parent_element_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""ref_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""ref_scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""ref_scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""root_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""root_scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""hierarchy_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15}]",null -act_ru_event_subscr,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""event_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""event_name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""activity_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""configuration_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""created_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""lock_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""lock_owner_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":17}]",null -act_ru_execution,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""business_key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""parent_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""super_exec_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""root_proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""act_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""is_active_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""is_concurrent_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""is_scope_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""is_event_scope_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""is_mi_root_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""suspension_state_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""cached_ent_state_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":17},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""start_act_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""start_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""start_user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""lock_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""lock_owner_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""is_count_enabled_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""evt_subscr_count_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""task_count_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""job_count_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":27},{""column_name"":""timer_job_count_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":28},{""column_name"":""susp_job_count_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":29},{""column_name"":""deadletter_job_count_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30},{""column_name"":""external_worker_job_count_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":31},{""column_name"":""var_count_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":32},{""column_name"":""id_link_count_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":33},{""column_name"":""callback_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":34},{""column_name"":""callback_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":35},{""column_name"":""reference_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":36},{""column_name"":""reference_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":37},{""column_name"":""propagated_stage_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":38},{""column_name"":""business_status_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":39}]",null -act_ru_external_job,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""lock_exp_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""lock_owner_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""exclusive_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""process_instance_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""element_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""element_name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""correlation_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""retries_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""exception_stack_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""exception_msg_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""duedate_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""repeat_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""handler_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""handler_cfg_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""custom_values_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":27}]",null -act_ru_history_job,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""lock_exp_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""lock_owner_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""retries_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""exception_stack_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""exception_msg_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""handler_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""handler_cfg_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""custom_values_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""adv_handler_cfg_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":14}]",null -act_ru_identitylink,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""group_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""user_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""task_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12}]",null -act_ru_job,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""lock_exp_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""lock_owner_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""exclusive_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""process_instance_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""element_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""element_name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""correlation_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""retries_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""exception_stack_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""exception_msg_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""duedate_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""repeat_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""handler_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""handler_cfg_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""custom_values_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":27}]",null -act_ru_suspended_job,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""exclusive_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""process_instance_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""element_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""element_name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""correlation_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""retries_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""exception_stack_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""exception_msg_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""duedate_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""repeat_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""handler_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""handler_cfg_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""custom_values_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":25}]",null -act_ru_task,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""task_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""propagated_stage_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""parent_task_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""description_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""task_def_key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""owner_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""assignee_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""delegation_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""priority_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""due_date_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""suspension_state_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":24},{""column_name"":""form_key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""claim_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""is_count_enabled_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":27},{""column_name"":""var_count_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":28},{""column_name"":""id_link_count_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":29},{""column_name"":""sub_task_count_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30}]",null -act_ru_timer_job,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""lock_exp_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""lock_owner_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""exclusive_"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""process_instance_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""proc_def_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""element_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""element_name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""scope_definition_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""correlation_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""retries_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""exception_stack_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""exception_msg_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""duedate_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""repeat_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""handler_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""handler_cfg_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""custom_values_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":27}]",null -act_ru_variable,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""execution_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""proc_inst_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""task_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""bytearray_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""double_"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""long_"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""text_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""text2_"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15}]",null -ak_achievements,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""category"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'general'::character varying"",""ordinal_position"":4},{""column_name"":""difficulty"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'easy'::character varying"",""ordinal_position"":5},{""column_name"":""points"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""10"",""ordinal_position"":6},{""column_name"":""icon"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'🏆'::character varying"",""ordinal_position"":7},{""column_name"":""requirements"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":9},{""column_name"":""sort_order"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12}]",成就定义表 -ak_ai_evaluations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""submission_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""evaluation_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""ai_model"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""confidence_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""evaluation_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""suggested_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""feedback_text"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""improvement_suggestions"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""risk_indicators"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""processed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12}]",AI评估结果表 -ak_ai_reports,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""record_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""report_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""content"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6},{""column_name"":""analysis_data"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7}]",AI评估报告表 -ak_ai_tags,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""tag_name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""confidence_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""tag_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'topic'::character varying"",""ordinal_position"":5},{""column_name"":""ai_provider"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""language"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",AI生成的标签表 -ak_ai_training_suggestions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""suggestion_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""priority"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'medium'::character varying"",""ordinal_position"":4},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""data_source"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""confidence_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""action_required"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":9},{""column_name"":""acknowledged"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":10},{""column_name"":""acknowledged_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""acknowledged_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""expires_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":14}]",AI训练建议表 -ak_ai_translation_logs,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""source_language"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""target_language"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""ai_provider"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""model_version"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""tokens_used"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""cost_usd"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""processing_time_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""error_message"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""retry_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":12},{""column_name"":""success"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":13},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":14}]",AI翻译日志表 -ak_ai_usage_stats,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""service_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""ai_provider"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""model_name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""tokens_used"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""requests_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":7},{""column_name"":""cost_usd"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""processing_time_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""success_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""error_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""date_bucket"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":13}]",AI服务使用统计表 -ak_app_translations,"[{""column_name"":""key"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""text"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""language_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5}]",应用翻译表(前端界面文本) -ak_area,"[{""column_name"":""id"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""pid"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""deep"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""pinyin_prefix"",""data_type"":""character varying"",""character_maximum_length"":8,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""pinyin"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""ext_id"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""ext_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8}]",null -ak_assignment_stats,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""assignment_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""total_students"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""submitted_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""reviewed_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""avg_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""last_updated"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7}]",作业统计表 -ak_assignment_submissions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""assignment_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""student_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""submit_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4},{""column_name"":""content_md"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""attachment_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""feedback"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'submitted'::character varying"",""ordinal_position"":9},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10},{""column_name"":""device_data_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""video_analysis_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""ai_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""manual_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""final_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""review_status"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":16},{""column_name"":""reviewed_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""reviewed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""ai_feedback_approved"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":19},{""column_name"":""submission_data"",""data_type"":""json"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""submission_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""teacher_feedback"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22}]",作业提交表 -ak_assignment_types,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""default_duration_days"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""7"",""ordinal_position"":4},{""column_name"":""requires_device"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":5},{""column_name"":""requires_video"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":6},{""column_name"":""scoring_criteria"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""ai_evaluation_enabled"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":8},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":9},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10}]",运动作业类型定义表 -ak_assignment_workflow,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""assignment_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""action"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""actor_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""previous_status"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""new_status"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""comments"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""metadata"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9}]",作业审批工作流记录表 -ak_assignments,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""teacher_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""class_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""due_date"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8},{""column_name"":""assignment_type_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""target_metrics"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""ai_grading_enabled"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":11},{""column_name"":""auto_approval"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":12},{""column_name"":""workflow_status"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'draft'::character varying"",""ordinal_position"":13},{""column_name"":""approval_required"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":14},{""column_name"":""approved_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""approved_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""project_name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":18},{""column_name"":""start_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""end_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""school_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""gen_random_uuid()"",""ordinal_position"":21},{""column_name"":""requirements"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22}]",作业表 -ak_biometric_data,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""device_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""data_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""value"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""unit"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""measured_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""extra"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8}]",体征监测数据表 -ak_class_schedules,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""teacher_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""school_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""class_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""subject"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""day_of_week"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""start_time"",""data_type"":""time without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""end_time"",""data_type"":""time without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""location"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11}]",课程安排表 -ak_classes,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""grade_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4}]",班级表 -ak_cms_articles,"[{""column_name"":""_id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('ak_cms_articles__id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""title"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""content"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""excerpt"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""article_status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""view_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""like_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""is_sticky"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":10},{""column_name"":""is_essence"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":11},{""column_name"":""comment_status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""comment_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":13},{""column_name"":""last_comment_user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""thumbnail"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""publish_date"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":16},{""column_name"":""publish_ip"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""last_modify_date"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":18},{""column_name"":""last_modify_ip"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""preview_secret"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""preview_expired"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""created_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":22},{""column_name"":""updated_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":23}]",null -ak_cms_categories,"[{""column_name"":""_id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('ak_cms_categories__id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""icon"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""sort"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""article_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""create_date"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7}]",null -ak_cms_unlock_record,"[{""column_name"":""_id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('ak_cms_unlock_record__id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""unique_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""unique_type"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""trans_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""content_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""create_date"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":6}]",null -ak_comment_likes,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""comment_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4}]",null -ak_comment_moderation_queue,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""comment_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""reason"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""priority_level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""assigned_to"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":6},{""column_name"":""ai_risk_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""ai_recommendations"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9},{""column_name"":""assigned_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""completed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11}]",评论审核队列表 -ak_comment_reactions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""comment_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""reaction_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":""'like'::character varying"",""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5}]",评论反应表(点赞、踩等) -ak_comment_reports,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""comment_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""reporter_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""report_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""report_reason"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":6},{""column_name"":""reviewed_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""reviewed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""review_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""action_taken"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11}]",评论举报表 -ak_comments,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""target_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""target_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""parent_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""author_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""author_name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""author_avatar"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""content_html"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":10},{""column_name"":""like_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""dislike_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":12},{""column_name"":""reply_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":13},{""column_name"":""level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""thread_path"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""is_pinned"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":16},{""column_name"":""is_author_reply"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":17},{""column_name"":""quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.5"",""ordinal_position"":18},{""column_name"":""sentiment_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""language_detected"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""ip_address"",""data_type"":""inet"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""user_agent"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""device_info"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""moderation_flags"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""ai_analysis"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":26},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":27},{""column_name"":""deleted_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":28}]",评论表 -ak_content_analysis,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""sentiment_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""sentiment_label"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""readability_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""credibility_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""toxicity_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""keywords"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""entities"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""topics"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""summary"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""key_phrases"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""ai_provider"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""model_version"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""processing_time_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""ai_processed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":17}]",内容分析结果表 -ak_content_categories,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""name_key"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""parent_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""ai_keywords"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""confidence_threshold"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.8"",""ordinal_position"":6},{""column_name"":""sort_order"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10}]",内容分类表 -ak_content_category_translations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""category_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""language_code"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5}]",内容分类多语言名称表 -ak_content_comments,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""user_name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""parent_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""reply_to_user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""reply_to_user_name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""like_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""reply_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":11},{""column_name"":""is_pinned"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":12},{""column_name"":""ip_address"",""data_type"":""inet"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""user_agent"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":16}]",null -ak_content_favorites,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""target_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""target_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""folder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""tags"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""is_public"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10}]",内容收藏表 -ak_content_quality_history,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""quality_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""ai_provider"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""model_version"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""assessment_criteria"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""reviewer_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10}]",内容质量评估历史表 -ak_content_shares,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""target_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""target_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""share_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":""'forward'::character varying"",""ordinal_position"":5},{""column_name"":""share_platform"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""share_content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""share_title"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""original_author_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""parent_share_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""share_level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""reach_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":12},{""column_name"":""click_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":13},{""column_name"":""like_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""comment_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":15},{""column_name"":""reshare_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":16},{""column_name"":""is_deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":17},{""column_name"":""deleted_reason"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""ip_address"",""data_type"":""inet"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""user_agent"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""device_info"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""geo_location"",""data_type"":""point"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":23},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":24},{""column_name"":""deleted_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25}]",内容转发分享表 -ak_content_sources,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""config"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""language_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""category"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""quality_weight"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1.0"",""ordinal_position"":8},{""column_name"":""crawl_frequency"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""3600"",""ordinal_position"":9},{""column_name"":""last_crawled_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":11},{""column_name"":""ai_quality_threshold"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.6"",""ordinal_position"":12},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":13},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":14}]",内容源配置表 -ak_content_statistics,"[{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""view_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":2},{""column_name"":""like_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":3},{""column_name"":""favorite_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""share_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":5},{""column_name"":""comment_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""danmu_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""play_completion_rate"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""average_play_duration"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""download_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11}]",null -ak_content_translations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""language_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""title"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""summary"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""translation_method"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'ai'::character varying"",""ordinal_position"":7},{""column_name"":""ai_provider"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""ai_confidence"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""human_verified"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":11},{""column_name"":""human_verified_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""human_verified_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""tokens_used"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""processing_time_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":16},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":17},{""column_name"":""ai_timeused"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'0'::bigint"",""ordinal_position"":18}]",内容翻译表 -ak_contents,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""raw_content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""title"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""summary"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""author"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""source_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""original_language"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""category_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""tags"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""keywords"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""entities"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""sentiment_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""readability_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""credibility_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""view_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":17},{""column_name"":""like_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":18},{""column_name"":""share_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":19},{""column_name"":""comment_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":20},{""column_name"":""published_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""featured_until"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'published'::character varying"",""ordinal_position"":23},{""column_name"":""ai_processed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":25},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":26},{""column_name"":""favorite_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":27},{""column_name"":""is_featured"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":28},{""column_name"":""content_type"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":29},{""column_name"":""video_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30},{""column_name"":""video_duration"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":31},{""column_name"":""video_poster"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":32},{""column_name"":""video_width"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":33},{""column_name"":""video_height"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":34},{""column_name"":""video_size"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":35},{""column_name"":""video_format"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":36},{""column_name"":""video_quality"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":37},{""column_name"":""audio_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":38},{""column_name"":""audio_duration"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":39},{""column_name"":""audio_size"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":40},{""column_name"":""audio_format"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":41},{""column_name"":""audio_bitrate"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":42},{""column_name"":""audio_sample_rate"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":43},{""column_name"":""audio_cover"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":44},{""column_name"":""image_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":45},{""column_name"":""image_width"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":46},{""column_name"":""image_height"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":47},{""column_name"":""image_size"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":48},{""column_name"":""image_format"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":49},{""column_name"":""image_quality"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":50},{""column_name"":""image_alt_text"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":51},{""column_name"":""images"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":52},{""column_name"":""allow_danmu"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":53},{""column_name"":""allow_download"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":54},{""column_name"":""media_metadata"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":55},{""column_name"":""cid"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('ak_contents_cid_seq'::regclass)"",""ordinal_position"":56},{""column_name"":""need_retranslate"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":57},{""column_name"":""tenent"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":58},{""column_name"":""generation_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":59},{""column_name"":""generation_status"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'generated'::character varying"",""ordinal_position"":60},{""column_name"":""need_regenerate"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":61},{""column_name"":""is_reviewed"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":62},{""column_name"":""review_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":63}]",处理后的内容表 -ak_cost_limits,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""limit_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""limit_scope"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""scope_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""limit_amount"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""current_usage"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""period_start"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""period_end"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":9},{""column_name"":""alert_threshold"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.8"",""ordinal_position"":10},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12}]",成本控制限额表 -ak_danmu_reports,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""danmu_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""reporter_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""report_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""report_reason"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7}]",null -ak_data_quality_logs,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""table_name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""record_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""quality_check_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""issue_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""severity"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'medium'::character varying"",""ordinal_position"":6},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""metadata"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""resolved"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":9},{""column_name"":""resolved_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""resolved_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12}]",数据质量监控表 -ak_database_versions,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('ak_database_versions_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""version"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""applied_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4}]",null -ak_device_events,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""device_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""event_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""event_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4},{""column_name"":""data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5}]",设备事件日志表 -ak_devices,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""device_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""device_name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""device_mac"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""bind_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":7},{""column_name"":""extra"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""watch_id"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9}]",设备表 -ak_favorite_folders,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""icon"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""color"",""data_type"":""character varying"",""character_maximum_length"":7,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""display_order"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""is_default"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":8},{""column_name"":""is_public"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":9},{""column_name"":""item_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12}]",收藏夹表 -ak_favorite_shares,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""folder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""shared_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""share_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'link'::character varying"",""ordinal_position"":4},{""column_name"":""share_code"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""access_password"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""expire_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""view_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""clone_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":10},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12}]",收藏夹分享表 -ak_global_config,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""config_key"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""config_type"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""'string'::character varying"",""ordinal_position"":3},{""column_name"":""config_category"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""'general'::character varying"",""ordinal_position"":4},{""column_name"":""default_value"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""is_translatable"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":6},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":7},{""column_name"":""sort_order"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10},{""column_name"":""default_key"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""need_retranslate"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":12},{""column_name"":""tenent"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":13}]",全局配置主表 -ak_global_config_translations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""config_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""language_code"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""translated_value"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":5},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""translated_key"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""ai_timeused"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9}]",全局配置翻译表 -ak_goal_progress_history,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""goal_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""old_value"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""new_value"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""change_amount"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""change_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""recorded_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",目标进度历史记录表 -ak_grades,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""school_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4}]",年级表 -ak_image_tags,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""tag_name"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""tag_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'user'::character varying"",""ordinal_position"":4},{""column_name"":""confidence"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6}]",null -ak_image_view_records,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""view_duration"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""zoom_level"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1.0"",""ordinal_position"":5},{""column_name"":""device_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""screen_resolution"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",null -ak_info,"[{""column_name"":""zid"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('ak_info_zid_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""ztid"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":2},{""column_name"":""cid"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":3},{""column_name"":""classid"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":5},{""column_name"":""newstime"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""mid"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""isgood"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""changetime"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""onclick"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""scnum"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""unzannum"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":12},{""column_name"":""zannum"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13},{""column_name"":""plnum"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""totaldown"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15},{""column_name"":""newspath"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":16},{""column_name"":""filename"",""data_type"":""character varying"",""character_maximum_length"":36,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":17},{""column_name"":""userid"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":18},{""column_name"":""username"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":19},{""column_name"":""firsttitle"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":20},{""column_name"":""ispic"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":21},{""column_name"":""istop"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":22},{""column_name"":""isqf"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":23},{""column_name"":""ismember"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":24},{""column_name"":""isurl"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":25},{""column_name"":""truetime"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":26},{""column_name"":""lastdotime"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":27},{""column_name"":""havehtml"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":28},{""column_name"":""groupid"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":29},{""column_name"":""userfen"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":30},{""column_name"":""titlefont"",""data_type"":""character varying"",""character_maximum_length"":14,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":31},{""column_name"":""titleurl"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":32}]",null -ak_interactions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""target_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""target_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""interaction_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",互动记录表 -ak_languages,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""native_name"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":5},{""column_name"":""is_default"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""ai_translation_enabled"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":8},{""column_name"":""translation_quality_threshold"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.8"",""ordinal_position"":9},{""column_name"":""ai_provider_priority"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{\""baidu\"": 3, \""google\"": 2, \""openai\"": 1}'::jsonb"",""ordinal_position"":10},{""column_name"":""cultural_adaptation_rules"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""sort_order"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":12}]",支持的语言表 -ak_learning_analytics,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""class_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""analysis_period_start"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""analysis_period_end"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""total_assignments"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""completed_assignments"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""avg_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""improvement_rate"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""attendance_rate"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""effort_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""skill_progression"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""health_indicators"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""risk_factors"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""recommendations"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":16},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":17}]",学习分析表 -ak_media_library,"[{""column_name"":""_id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('ak_media_library__id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""src"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""cover"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""alt"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""original_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""fileType"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""create_date"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9},{""column_name"":""duration"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""size"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""width"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""height"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""resolution"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""uploadUser"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""originalName"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16}]",null -ak_message_group_members,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""group_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""role"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'member'::character varying"",""ordinal_position"":4},{""column_name"":""permissions"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":5},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":6},{""column_name"":""nickname"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""is_muted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":8},{""column_name"":""muted_until"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""muted_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""mute_reason"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""last_read_message_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""last_read_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""unread_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""notification_enabled"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":15},{""column_name"":""mention_only"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":16},{""column_name"":""message_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":17},{""column_name"":""join_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":18},{""column_name"":""joined_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":19},{""column_name"":""left_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":21},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":22}]",群组成员表 -ak_message_groups,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""group_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'normal'::character varying"",""ordinal_position"":4},{""column_name"":""owner_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""avatar_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":7},{""column_name"":""is_public"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":8},{""column_name"":""member_limit"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""500"",""ordinal_position"":9},{""column_name"":""message_limit_per_day"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1000"",""ordinal_position"":10},{""column_name"":""file_size_limit_mb"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""100"",""ordinal_position"":11},{""column_name"":""settings"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":12},{""column_name"":""permissions"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":13},{""column_name"":""auto_archive_days"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""30"",""ordinal_position"":14},{""column_name"":""auto_delete_days"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""90"",""ordinal_position"":15},{""column_name"":""related_class_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""related_school_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":18},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":19}]",消息群组表 -ak_message_recipients,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""message_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""recipient_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""recipient_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""recipient_name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":6},{""column_name"":""delivery_method"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""sent_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""delivered_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""read_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""replied_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""delivery_attempts"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":12},{""column_name"":""last_attempt_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""failure_reason"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""device_token"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""is_starred"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":16},{""column_name"":""is_archived"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":17},{""column_name"":""is_deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":18},{""column_name"":""deleted_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""read_duration_sec"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""interaction_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":22},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":23}]",消息接收记录表 -ak_message_stats,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""date_bucket"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""hour_bucket"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""message_type_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""sender_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""total_sent"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""total_delivered"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""total_read"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""total_replied"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""total_failed"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""avg_delivery_time_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""avg_read_time_sec"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""avg_response_time_sec"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""device_online_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""device_offline_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":15},{""column_name"":""device_error_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":16},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":17},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":18}]",消息统计表 -ak_message_templates,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""category"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'general'::character varying"",""ordinal_position"":5},{""column_name"":""message_type_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""title_template"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""content_template"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""variables"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":9},{""column_name"":""required_variables"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":11},{""column_name"":""is_system"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":12},{""column_name"":""language"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":""'zh-CN'::character varying"",""ordinal_position"":13},{""column_name"":""default_priority"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""default_push"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":15},{""column_name"":""default_email"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":16},{""column_name"":""usage_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":17},{""column_name"":""last_used_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":20},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":21}]",消息模板表 -ak_message_types,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""icon"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""color"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""priority"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""is_system"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":8},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":9},{""column_name"":""auto_read_timeout"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""retention_days"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""30"",""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":13}]",消息类型定义表 -ak_messages,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""message_type_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""sender_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""sender_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""sender_name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""receiver_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":""'user'::character varying"",""ordinal_position"":6},{""column_name"":""receiver_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""content_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'text'::character varying"",""ordinal_position"":10},{""column_name"":""attachments"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""media_urls"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""metadata"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""device_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""location_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""priority"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":16},{""column_name"":""expires_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""is_broadcast"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":18},{""column_name"":""is_urgent"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":19},{""column_name"":""conversation_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""parent_message_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""thread_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":22},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'sent'::character varying"",""ordinal_position"":23},{""column_name"":""total_recipients"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":24},{""column_name"":""delivered_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":25},{""column_name"":""read_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":26},{""column_name"":""reply_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":27},{""column_name"":""delivery_options"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":28},{""column_name"":""push_notification"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":29},{""column_name"":""email_notification"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":30},{""column_name"":""sms_notification"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":31},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":32},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":33},{""column_name"":""scheduled_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":34},{""column_name"":""delivered_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":35},{""column_name"":""is_deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":36}]",消息主表 -ak_notifications,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'unread'::character varying"",""ordinal_position"":5},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6},{""column_name"":""type"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""is_read"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9}]",消息/通知表 -ak_permissions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""resource_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""action"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""is_system"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",权限定义表 -ak_personalized_recommendations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""recommendation_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""recommendation_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""reason"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""priority"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":8},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":9},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10},{""column_name"":""viewed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""applied_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12}]",个性化推荐记录表 -ak_point_rules,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""rule_name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""event_code"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""points"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""limit_per_day"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9}]",积分规则表 -ak_point_transactions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""transaction_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""points"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""reference_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7}]",积分交易记录表 -ak_raw_contents,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""source_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""external_id"",""data_type"":""character varying"",""character_maximum_length"":256,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""title"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""summary"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""author"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""source_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""published_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""language_detected"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""language_confidence"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""content_hash"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""raw_metadata"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""processing_status"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":14},{""column_name"":""quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""duplicate_of"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":17},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":18}]",原始内容表 -ak_recommendations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""algorithm_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""reason"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""position"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""shown_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""clicked_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""feedback_score"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""feedback_reason"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12}]",推荐记录表 -ak_region_translations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""record_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""language_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""region_name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6}]",区域名称翻译表 -ak_regions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""parent_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'''''active''''::character varying'::character varying"",""ordinal_position"":6}]",地区表 -ak_review_queue,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""translation_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""review_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""priority"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""5"",""ordinal_position"":5},{""column_name"":""reason"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""ai_confidence"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""requested_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""assigned_to"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":10},{""column_name"":""review_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""review_result"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""completed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":14},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15}]",人工审核队列表 -ak_role_permissions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""role_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""permission_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4}]",角色-权限关联表 -ak_roles,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""is_system"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":5},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6}]",角色定义表 -ak_school_translations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""record_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""language_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""school_name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""school_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7}]",学校名称翻译表 -ak_schools,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""region_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5}]",学校表 -ak_search_hot,"[{""column_name"":""_id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('ak_search_hot__id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""create_date"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -ak_search_log,"[{""column_name"":""_id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('ak_search_log__id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""device_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""platform"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""ip"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""create_date"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7}]",null -ak_share_analytics,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""target_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""target_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""date_recorded"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_DATE"",""ordinal_position"":4},{""column_name"":""platform"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""share_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""unique_sharers"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""total_reach"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""total_clicks"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""avg_share_level"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""viral_coefficient"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":13}]",分享统计分析表 -ak_slides,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('ak_slides_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":2},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""slides"",""data_type"":""json"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":5},{""column_name"":""created_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""NULL::timestamp without time zone"",""ordinal_position"":6},{""column_name"":""updated_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""NULL::timestamp without time zone"",""ordinal_position"":7}]",null -ak_sport_report_shares,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""report_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""shared_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""shared_to"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""share_type"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'link'::character varying"",""ordinal_position"":5},{""column_name"":""share_token"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""expired_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8}]",运动报告分享记录表 -ak_sport_reports,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""content_md"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""cover_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""visibility"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'private'::character varying"",""ordinal_position"":6},{""column_name"":""visible_until"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""allow_comment"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10},{""column_name"":""school_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""class_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""gen_random_uuid()"",""ordinal_position"":12},{""column_name"":""semester"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""report_type"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""content"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16}]",运动报告表 -ak_sport_types,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""icon_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""category"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""difficulty_level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":6},{""column_name"":""calorie_rate"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9}]",运动项目/类型表 -ak_student_achievements,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""student_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""achievement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""unlocked_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4},{""column_name"":""progress_current"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":5},{""column_name"":""progress_target"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":6},{""column_name"":""is_featured"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",学生成就记录表 -ak_teacher_roles,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""school_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""class_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""role"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'teacher'::character varying"",""ordinal_position"":5},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6}]",老师权限管理表 -ak_teaching_resources,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""teacher_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""content_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""tags"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""is_public"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10}]",教学资源表 -ak_topic_content_translations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""topic_content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""language_code"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""editor_note"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""translation_method"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'ai'::character varying"",""ordinal_position"":5},{""column_name"":""ai_provider"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""human_verified"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":8},{""column_name"":""human_verified_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""human_verified_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12}]",专题内容关联多语言翻译表 -ak_topic_contents,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""topic_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""display_order"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""editor_note"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""is_featured"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":6},{""column_name"":""added_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""added_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9}]",专题内容关联表 -ak_topic_subscriptions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""topic_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""notification_enabled"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":4},{""column_name"":""subscribed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""last_notified_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6}]",专题订阅表 -ak_topic_translations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""topic_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""language_code"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""meta_description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""meta_keywords"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""translation_method"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'ai'::character varying"",""ordinal_position"":8},{""column_name"":""ai_provider"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""ai_confidence"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""human_verified"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":12},{""column_name"":""human_verified_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""human_verified_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""tokens_used"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""processing_time_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":17},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":18},{""column_name"":""seo_slug"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19}]",专题多语言翻译表 -ak_topics,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""topic_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":""'series'::character varying"",""ordinal_position"":4},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":5},{""column_name"":""cover_image_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""creator_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""editor_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""content_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""view_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""like_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""share_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":12},{""column_name"":""comment_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":13},{""column_name"":""subscriber_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""last_content_added_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""featured_until"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""meta_keywords"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""meta_description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""seo_slug"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""priority_level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":20},{""column_name"":""tags"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":22},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":23},{""column_name"":""favorite_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":24},{""column_name"":""need_retranslate"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":25},{""column_name"":""tenent"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":26}]",专题表 -ak_training_intensity_settings,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""sport_type_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""heart_rate_zones"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""perceived_exertion_scale"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""5"",""ordinal_position"":5},{""column_name"":""auto_adjust_intensity"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":6},{""column_name"":""max_workout_duration_minutes"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""60"",""ordinal_position"":7},{""column_name"":""cooldown_duration_minutes"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""5"",""ordinal_position"":8},{""column_name"":""warmup_duration_minutes"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""5"",""ordinal_position"":9},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11}]",训练强度偏好设置表 -ak_training_patterns,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""pattern_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""pattern_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""confidence_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.5"",""ordinal_position"":5},{""column_name"":""detected_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7}]",训练模式分析表 -ak_training_plan_items,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""plan_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""item_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""activity_type"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""target_value"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""unit"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",训练计划明细表 -ak_training_plans,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""plan_name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""start_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""end_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9}]",训练计划表 -ak_training_projects,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""sport_type"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""difficulty_level"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":""'beginner'::character varying"",""ordinal_position"":5},{""column_name"":""duration_minutes"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""30"",""ordinal_position"":6},{""column_name"":""equipment_required"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""target_age_group"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""objectives"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""instructions"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""video_url"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""image_url"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""true"",""ordinal_position"":13},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":16},{""column_name"":""scoring_criteria"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17}]",null -ak_training_records,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""plan_item_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""device_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""activity_type"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""start_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""end_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""duration_sec"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""distance_km"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""calories"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""steps"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""avg_heart_rate"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""max_heart_rate"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16}]",训练记录表 -ak_training_reminders,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""reminder_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""message"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""trigger_time"",""data_type"":""time without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""trigger_days"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""trigger_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""is_enabled"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":9},{""column_name"":""sound_enabled"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":10},{""column_name"":""vibrate_enabled"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":11},{""column_name"":""advance_minutes"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":12},{""column_name"":""repeat_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":13},{""column_name"":""repeat_interval_minutes"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""5"",""ordinal_position"":14},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":16}]",训练提醒设置表 -ak_training_templates,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""target_age_min"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""target_age_max"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""difficulty_level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":6},{""column_name"":""duration_weeks"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""4"",""ordinal_position"":7},{""column_name"":""template_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""ai_adaptive"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":9},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":13}]",训练计划模板表 -ak_translation_configs,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""config_name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""config_type"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""source_language"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""target_language"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""language_pair"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""ai_provider"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""model_name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""api_endpoint"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""translation_params"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":10},{""column_name"":""quality_threshold"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.8"",""ordinal_position"":11},{""column_name"":""confidence_threshold"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.7"",""ordinal_position"":12},{""column_name"":""rate_limit_per_minute"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""60"",""ordinal_position"":13},{""column_name"":""rate_limit_per_hour"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1000"",""ordinal_position"":14},{""column_name"":""timeout_seconds"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""300"",""ordinal_position"":15},{""column_name"":""cultural_adaptation_rules"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":16},{""column_name"":""terminology_glossary"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":17},{""column_name"":""style_guide"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":18},{""column_name"":""cost_per_request"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.0"",""ordinal_position"":19},{""column_name"":""monthly_budget_limit"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""current_monthly_cost"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.0"",""ordinal_position"":21},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":22},{""column_name"":""priority"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":23},{""column_name"":""fallback_config_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""success_rate"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.0"",""ordinal_position"":25},{""column_name"":""average_quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.0"",""ordinal_position"":26},{""column_name"":""average_response_time"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.0"",""ordinal_position"":27},{""column_name"":""total_usage_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":28},{""column_name"":""last_used_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":29},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":31},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":32}]",翻译服务配置表,存储不同AI提供商和语言对的配置信息 -ak_translation_quality_metrics,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""record_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""bleu_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""rouge_1_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""rouge_2_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""rouge_l_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""semantic_similarity"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""fluency_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""adequacy_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""length_ratio"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""character_level_similarity"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""word_level_similarity"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""terminology_accuracy"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""terminology_violations"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'[]'::jsonb"",""ordinal_position"":14},{""column_name"":""grammar_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""style_consistency"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""cultural_adaptation_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""human_quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""human_fluency_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""human_adequacy_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""human_creativity_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""evaluator_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":22},{""column_name"":""evaluator_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""evaluation_method"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""evaluation_model"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""evaluation_version"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""evaluation_params"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":27},{""column_name"":""reference_translations"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'[]'::jsonb"",""ordinal_position"":28},{""column_name"":""overall_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":29},{""column_name"":""weighted_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30},{""column_name"":""score_breakdown"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":31},{""column_name"":""improvement_suggestions"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'[]'::jsonb"",""ordinal_position"":32},{""column_name"":""error_categories"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'[]'::jsonb"",""ordinal_position"":33},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":34},{""column_name"":""evaluation_duration_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":35}]",翻译质量评估表,存储详细的质量指标 -ak_translation_records,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""task_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""source_table"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""source_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""source_field"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""source_text"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""source_language"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""source_char_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""source_word_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""target_language"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""translated_text"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""target_char_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""target_word_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""translation_status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":14},{""column_name"":""config_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""ai_provider"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""model_version"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""translation_params"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":18},{""column_name"":""quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""confidence_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""bleu_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""semantic_similarity"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""fluency_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""adequacy_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""processing_cost"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.0"",""ordinal_position"":25},{""column_name"":""token_usage"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":26},{""column_name"":""review_required"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":27},{""column_name"":""reviewed_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":28},{""column_name"":""reviewed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":29},{""column_name"":""review_status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30},{""column_name"":""review_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":31},{""column_name"":""human_quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":32},{""column_name"":""version"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":33},{""column_name"":""parent_record_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":34},{""column_name"":""is_latest_version"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":35},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":36},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":37},{""column_name"":""translated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":38},{""column_name"":""processing_time_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":39},{""column_name"":""error_message"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":40},{""column_name"":""error_code"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":41},{""column_name"":""error_details"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":42},{""column_name"":""retry_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":43},{""column_name"":""metadata"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":44},{""column_name"":""tags"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":45}]",翻译记录表,存储每个具体的翻译结果 -ak_translation_review_tasks,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""record_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""task_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""review_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""priority"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":5},{""column_name"":""urgency_level"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'normal'::character varying"",""ordinal_position"":6},{""column_name"":""assigned_to"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""assigned_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""assigned_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""auto_assigned"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":10},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":11},{""column_name"":""started_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""completed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""estimated_duration_minutes"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""actual_duration_minutes"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""decision"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""confidence_level"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""review_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""specific_issues"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'[]'::jsonb"",""ordinal_position"":19},{""column_name"":""suggestions"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'[]'::jsonb"",""ordinal_position"":20},{""column_name"":""corrected_translation"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""overall_rating"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""quality_rating"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""accuracy_rating"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""fluency_rating"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""review_criteria"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":26},{""column_name"":""allow_delegation"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":27},{""column_name"":""require_secondary_review"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":28},{""column_name"":""notification_sent"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":29},{""column_name"":""reminder_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":30},{""column_name"":""last_reminder_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":31},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":32},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":33}]",人工审核任务表,管理翻译结果的人工审核流程 -ak_translation_stats_daily,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""source_language"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""target_language"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""ai_provider"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""total_requests"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""successful_translations"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""failed_translations"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""average_quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""average_confidence_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""high_quality_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""low_quality_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":12},{""column_name"":""average_processing_time_ms"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""total_processing_time_ms"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""min_processing_time_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""max_processing_time_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""total_cost"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.0"",""ordinal_position"":17},{""column_name"":""average_cost_per_request"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.0"",""ordinal_position"":18},{""column_name"":""total_source_chars"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":19},{""column_name"":""total_target_chars"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":20},{""column_name"":""average_chars_per_request"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""reviews_required"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":22},{""column_name"":""reviews_completed"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":23},{""column_name"":""average_review_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":25},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":26}]",每日翻译统计表,用于性能监控和报表 -ak_translation_system_metrics,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""metric_name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""metric_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""value"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""labels"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":5},{""column_name"":""timestamp"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6},{""column_name"":""instance_id"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""version"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""environment"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'production'::character varying"",""ordinal_position"":9}]",系统监控指标表,存储系统运行时的各种指标 -ak_translation_tasks,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""task_name"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""task_type"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""source_table"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""source_ids"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""source_filter"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""source_language"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""target_languages"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""config_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""translation_config"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":10},{""column_name"":""quality_threshold"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.8"",""ordinal_position"":11},{""column_name"":""require_human_review"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":12},{""column_name"":""auto_publish"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":13},{""column_name"":""schedule_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'immediate'::character varying"",""ordinal_position"":14},{""column_name"":""scheduled_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""cron_expression"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""timezone"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""'UTC'::character varying"",""ordinal_position"":17},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":18},{""column_name"":""progress_percentage"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":19},{""column_name"":""total_items"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":20},{""column_name"":""completed_items"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":21},{""column_name"":""failed_items"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":22},{""column_name"":""skipped_items"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":23},{""column_name"":""reviewed_items"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":24},{""column_name"":""estimated_duration_minutes"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""actual_duration_minutes"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""average_quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":27},{""column_name"":""total_cost"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.0"",""ordinal_position"":28},{""column_name"":""error_message"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":29},{""column_name"":""error_details"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30},{""column_name"":""retry_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":31},{""column_name"":""max_retries"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""3"",""ordinal_position"":32},{""column_name"":""last_retry_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":33},{""column_name"":""celery_task_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":34},{""column_name"":""external_task_ids"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":35},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":36},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":37},{""column_name"":""started_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":38},{""column_name"":""completed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":39},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":40},{""column_name"":""notification_settings"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":41},{""column_name"":""archive_after_days"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""30"",""ordinal_position"":42},{""column_name"":""auto_cleanup"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":43}]",翻译任务表,管理批量翻译任务的生命周期 -ak_translations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""record_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""language_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5}]",数据翻译基础表(用于继承) -ak_user_behavior_analytics,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""behavior_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""behavior_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""session_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6}]",用户行为分析表 -ak_user_behaviors,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""behavior_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""behavior_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""duration_seconds"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""scroll_percentage"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""device_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""source"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""session_id"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""ip_address"",""data_type"":""inet"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""user_agent"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":13}]",用户行为记录表 -ak_user_classes,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""class_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""role"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5}]",用户-班级多对多关系表 -ak_user_contacts,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""contact_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""contact_value"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""is_primary"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":5},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7}]",用户联系方式表 -ak_user_feedback,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4}]",用户反馈表 -ak_user_fitness_profile,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""fitness_level"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'beginner'::character varying"",""ordinal_position"":3},{""column_name"":""experience_years"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""injury_history"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""health_conditions"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""preferred_workout_time"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""available_equipment"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""workout_location_preference"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""weekly_time_budget_minutes"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""180"",""ordinal_position"":10},{""column_name"":""rest_day_preference"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":13}]",用户健身等级和经验表 -ak_user_interactions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""interaction_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""interaction_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6}]",null -ak_user_message_preferences,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""global_enabled"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":3},{""column_name"":""do_not_disturb"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":4},{""column_name"":""quiet_hours_start"",""data_type"":""time without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'22:00:00'::time without time zone"",""ordinal_position"":5},{""column_name"":""quiet_hours_end"",""data_type"":""time without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'07:00:00'::time without time zone"",""ordinal_position"":6},{""column_name"":""timezone"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""'Asia/Shanghai'::character varying"",""ordinal_position"":7},{""column_name"":""push_enabled"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":8},{""column_name"":""email_enabled"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":9},{""column_name"":""sms_enabled"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":10},{""column_name"":""type_preferences"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":11},{""column_name"":""group_message_preview"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":12},{""column_name"":""mention_keywords"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""spam_filter_enabled"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":14},{""column_name"":""block_unknown_senders"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":15},{""column_name"":""auto_mark_read_delay"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":16},{""column_name"":""auto_archive_days"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""30"",""ordinal_position"":17},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":18},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":19}]",用户消息偏好设置表 -ak_user_point_logs,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""change_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""points"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""reason"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""related_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7}]",积分变动明细表 -ak_user_points,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""total_points"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":3},{""column_name"":""available_points"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6}]",积分账户表 -ak_user_preference_history,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""sport_type_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""action_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""old_values"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""new_values"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7}]",用户偏好历史记录表 -ak_user_profiles,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""avatar_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""background_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""declaration"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""status_text"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""status_media_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",用户兴趣画像表 -ak_user_roles,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""role_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""scope_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""scope_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7}]",用户-角色关联表 -ak_user_sport_preferences,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""sport_type_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""preference_level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""3"",""ordinal_position"":4},{""column_name"":""frequency_per_week"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":5},{""column_name"":""duration_minutes"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""30"",""ordinal_position"":6},{""column_name"":""intensity_level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""2"",""ordinal_position"":7},{""column_name"":""notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""is_favorite"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":9},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11}]",用户运动偏好表 -ak_user_training_goals,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""goal_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""target_value"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""current_value"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":5},{""column_name"":""unit"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""target_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""priority"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":8},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":9},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12}]",用户训练目标表 -ak_users,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""username"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""email"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""password_hash"",""data_type"":""character varying"",""character_maximum_length"":256,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":4},{""column_name"":""gender"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'other'::character varying"",""ordinal_position"":5},{""column_name"":""birthday"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""height_cm"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""weight_kg"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""avatar_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""region_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""school_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""grade_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""class_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""role"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'student'::character varying"",""ordinal_position"":14},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":16},{""column_name"":""auth_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""uid()"",""ordinal_position"":17},{""column_name"":""preferred_language"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""bio"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""phone"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""mall_status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":22},{""column_name"":""mall_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":23},{""column_name"":""last_login_ip"",""data_type"":""inet"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""total_orders"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":25},{""column_name"":""total_spent"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.00"",""ordinal_position"":26},{""column_name"":""user_level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":27},{""column_name"":""points"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":28},{""column_name"":""verified_status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":29},{""column_name"":""nickname"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30},{""column_name"":""user_type"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":31},{""column_name"":""registration_source"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":32},{""column_name"":""real_name"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":33},{""column_name"":""qq"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":34},{""column_name"":""wechat"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":35},{""column_name"":""alipay"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":36}]",用户表 -ak_users_zhipao,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""username"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""email"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""password_hash"",""data_type"":""character varying"",""character_maximum_length"":256,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":4},{""column_name"":""gender"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'other'::character varying"",""ordinal_position"":5},{""column_name"":""birthday"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""height_cm"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""weight_kg"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""avatar_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""region_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""school_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""grade_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""class_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""role"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'student'::character varying"",""ordinal_position"":14},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":16},{""column_name"":""auth_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""preferred_language"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""bio"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""phone"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21}]",This is a duplicate of ak_users -ak_video_analysis,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""device_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""record_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""video_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""analysis_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""result"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",视频分析结果表 -ak_video_danmakus,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""user_name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""text"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""time_point"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""color"",""data_type"":""character varying"",""character_maximum_length"":7,""is_nullable"":""YES"",""column_default"":""'#FFFFFF'::character varying"",""ordinal_position"":7},{""column_name"":""font_size"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""25"",""ordinal_position"":8},{""column_name"":""position_type"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":""'scroll'::character varying"",""ordinal_position"":9},{""column_name"":""speed"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":10},{""column_name"":""is_visible"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":11},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":12},{""column_name"":""ip_address"",""data_type"":""inet"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""user_agent"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":16}]",null -ak_video_play_records,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""play_position"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""play_duration"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":5},{""column_name"":""play_percentage"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""is_completed"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":7},{""column_name"":""device_type"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""resolution"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""quality"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""play_speed"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1.0"",""ordinal_position"":11},{""column_name"":""volume"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""100"",""ordinal_position"":12},{""column_name"":""media_type"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":14},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15}]",null -ak_zt,"[{""column_name"":""ztid"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('ak_zt_ztid_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""ztname"",""data_type"":""character varying"",""character_maximum_length"":60,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":2},{""column_name"":""onclick"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":3},{""column_name"":""ztnum"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""listtempid"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":5},{""column_name"":""ztpath"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""zttype"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""zturl"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""classid"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""islist"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":10},{""column_name"":""maxnum"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""reorder"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""intro"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""ztimg"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":14},{""column_name"":""zcid"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""showzt"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":16},{""column_name"":""ztpagekey"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":17},{""column_name"":""classtempid"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":18},{""column_name"":""myorder"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":19},{""column_name"":""usezt"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":20},{""column_name"":""yhid"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":21},{""column_name"":""endtime"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":22},{""column_name"":""closepl"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":23},{""column_name"":""checkpl"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":24},{""column_name"":""restb"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":25},{""column_name"":""usernames"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":26},{""column_name"":""addtime"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":27},{""column_name"":""pltempid"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":28},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":29},{""column_name"":""created_at"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30},{""column_name"":""updated_at"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":31},{""column_name"":""spic"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":32},{""column_name"":""slider1"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":33},{""column_name"":""slider2"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":34},{""column_name"":""slider3"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":35},{""column_name"":""slider4"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":36},{""column_name"":""slider5"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":37},{""column_name"":""zhiding"",""data_type"":""json"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":38},{""column_name"":""parentzt"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":39}]",null -analysis_requests,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""query"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""context"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":4},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""result"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":8}]",null -bpm_dm_beikao,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_beikao_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""fp_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""fp_zdj"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""fp_html"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""fp_path"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""fp_bz"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":12},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":13},{""column_name"":""result"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""fp_css"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15}]",bpm_dm_beikao -bpm_dm_bq,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_bq_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""bq_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""bq_zdj"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""bq_html"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""bq_css"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""bq_path"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""bq_bz"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":12},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":14},{""column_name"":""result"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15}]",bpm_dm_bq -bpm_dm_cx,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_cx_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""cx_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""cx_card"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""cx_tel"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""cx_comp"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""cx_dbname"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""cx_dbcard"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""cx_dbtel"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""cx_gx"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""cx_status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""cx_cxmd"",""data_type"":""character varying"",""character_maximum_length"":800,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""cx_cxfs"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""cx_cxtype"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""cx_bltype"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":14},{""column_name"":""cx_dah"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":15},{""column_name"":""cx_jh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":16},{""column_name"":""cx_yh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":17},{""column_name"":""cx_jnsxh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":18},{""column_name"":""cx_path"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":19},{""column_name"":""cx_bz"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":20},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":22},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":23},{""column_name"":""back_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":24},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":25},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":26},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":27},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":28},{""column_name"":""result"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":29}]",bpm_dm_cx -bpm_dm_da,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""da_fenlei"",""data_type"":""real"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""da_years"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""da_bm"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""da_bgqx"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""da_lmmc"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""da_ajtm"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""da_dh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""da_gdh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""da_qsrq"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10},{""column_name"":""da_jsrq"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11},{""column_name"":""da_jnwjs"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""da_ajys"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""da_jnsxh"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""da_hh"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""da_wh"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""da_wjtm"",""data_type"":""character varying"",""character_maximum_length"":800,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""da_wjrq"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":18},{""column_name"":""da_zrz"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""da_mj"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""da_yh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""da_ztc"",""data_type"":""character varying"",""character_maximum_length"":800,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""da_bz"",""data_type"":""character varying"",""character_maximum_length"":800,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""da_ys"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""da_status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""da_qzh"",""data_type"":""character varying"",""character_maximum_length"":800,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""da_qzmc"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":27},{""column_name"":""da_mlh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":28},{""column_name"":""da_js"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":29},{""column_name"":""da_ajh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30},{""column_name"":""da_fz"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":31},{""column_name"":""da_fj"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":32},{""column_name"":""da_zj"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":33},{""column_name"":""da_xh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":34},{""column_name"":""da_lrr"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":35},{""column_name"":""da_qzhh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":36},{""column_name"":""da_kw"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":37},{""column_name"":""da_files"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":38},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":39},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":40},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":41},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":42},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":43},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":44},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":45},{""column_name"":""result"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":46},{""column_name"":""da_fengpi"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":47},{""column_name"":""da_beikao"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":48},{""column_name"":""pdf_tmp_files"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":49},{""column_name"":""pdf_all_info_file"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":50},{""column_name"":""da_fengpi_file"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":51},{""column_name"":""da_beikao_file"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":52},{""column_name"":""da_reserve1"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":53},{""column_name"":""da_reserve2"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":54},{""column_name"":""da_shuiyin"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":55},{""column_name"":""bjqksmhint"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""'本卷情况说明'::character varying"",""ordinal_position"":56},{""column_name"":""bjqksm"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":57},{""column_name"":""daljrhint"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""'立卷人'::character varying"",""ordinal_position"":58},{""column_name"":""daljr"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":59},{""column_name"":""dajcrhint"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""'检查人'::character varying"",""ordinal_position"":60},{""column_name"":""dajcr"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":61},{""column_name"":""daljsjhint"",""data_type"":""character varying"",""character_maximum_length"":15,""is_nullable"":""YES"",""column_default"":""'立卷时间'::character varying"",""ordinal_position"":62},{""column_name"":""daljsj"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":63},{""column_name"":""isjuan"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'0'::smallint"",""ordinal_position"":64},{""column_name"":""da_showtemplate"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":65},{""column_name"":""pid"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":66},{""column_name"":""label"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":67},{""column_name"":""aaa"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":69},{""column_name"":""bbbb"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":71},{""column_name"":""da_path_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":74},{""column_name"":""da_path_full"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":75},{""column_name"":""status"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":76},{""column_name"":""ccccc"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":77},{""column_name"":""cccc"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":78}]",bpm_dm_da -bpm_dm_dept,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":2},{""column_name"":""parent_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":3},{""column_name"":""sort"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":4},{""column_name"":""leader_user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""phone"",""data_type"":""character varying"",""character_maximum_length"":11,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""email"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":14},{""column_name"":""showtemplate"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""da_attribute"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""desc"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17}]",bpm_dm_dept -bpm_dm_ew,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_ew_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""ew_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""ew_zdj"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""ew_html"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""ew_path"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""ew_bz"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":13},{""column_name"":""result"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14}]",bpm_dm_ew -bpm_dm_fcd_model,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":2},{""column_name"":""forminfo"",""data_type"":""json"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""desc"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""tablename"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""tableid"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""optinfo"",""data_type"":""json"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""aaa"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9}]",null -bpm_dm_fj,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_fj_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""fj_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""fj_dah"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""fj_jh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""fj_yh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""fj_jnsx"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""fj_path"",""data_type"":""character varying"",""character_maximum_length"":800,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""fj_lx"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":13},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":14},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":15},{""column_name"":""result"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16}]",bpm_dm_fj -bpm_dm_forminfo,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":2},{""column_name"":""forminfo"",""data_type"":""json"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""desc"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""tablename"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""tableid"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""optinfo"",""data_type"":""json"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""aaa"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9}]",formcreate info -bpm_dm_fp,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_fp_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""fp_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""fp_zdj"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""fp_html"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""fp_path"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""fp_bz"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":12},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":13},{""column_name"":""result"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""fp_css"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15}]",bpm_dm_fp -bpm_dm_import,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_import_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""content"",""data_type"":""json"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":3},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4},{""column_name"":""userid"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""username"",""data_type"":""name"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""fromfile"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""desc"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8}]",null -bpm_dm_jb,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_jb_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""jb_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""jb_zdj"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""jb_html"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""jb_path"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""jb_bz"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":12},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":13},{""column_name"":""result"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14}]",bpm_dm_jb -bpm_dm_jy,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_jy_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""jy_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""jy_card"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""yj_tel"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""yj_comp"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""jy_status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""jy_desc"",""data_type"":""character varying"",""character_maximum_length"":800,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""jy_type"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""jy_dah"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""jy_jh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""jy_yh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""jy_jnsxh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""jy_path"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""jy_bz"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":14},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":16},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":17},{""column_name"":""back_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":18},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":19},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":20},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":21},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":22},{""column_name"":""result"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23}]",bpm_dm_jy -bpm_dm_log,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_log_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""content"",""data_type"":""json"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":3},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4},{""column_name"":""userid"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""username"",""data_type"":""name"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""fromfile"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""desc"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8}]",null -bpm_dm_menu,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":3},{""column_name"":""page"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""icon"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""icontype"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""desc"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7}]",bpm_dm_menu -bpm_dm_ml,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_ml_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""ml_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""ml_zdj"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""ml_html"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""ml_path"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""ml_bz"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":13},{""column_name"":""result"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14}]",bpm_dm_ml -bpm_dm_parsetemplate,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":2},{""column_name"":""parse_title"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""parse_info"",""data_type"":""json"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""descript"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5}]",parse the string to info -bpm_dm_rw,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_rw_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""rw_dafl"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""rw_ldr"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""rw_dqgx"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""rw_smr"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""rw_clr"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""rw_zjr"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""rw_mlzhulr"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""rw_mlzhijr"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""rw_mlejr"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""rw_mlzhongjr"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""rw_cpjf"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""rw_status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""rw_dah"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":14},{""column_name"":""rw_jh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":15},{""column_name"":""rw_yh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":16},{""column_name"":""rw_mlh"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":17},{""column_name"":""rw_pch"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":18},{""column_name"":""rw_bz"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":19},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":21},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":22},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":23},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":24},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":25},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":26},{""column_name"":""result"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":27}]",bpm_dm_rw -bpm_dm_showtemplate,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_showtemplate_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""conf"",""data_type"":""character varying"",""character_maximum_length"":1000,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""fields"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":8},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":12},{""column_name"":""fieldsjsonb"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13}]",bpm_dm_showtemplate -bpm_dm_sy,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_sy_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""sy_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""sy_zdj"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""sy_html"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""sy_path"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""sy_bz"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":12},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":13},{""column_name"":""result"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14}]",bpm_dm_sy -bpm_dm_yz,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_dm_yz_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""yz_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""yz_zdj"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""yz_html"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""yz_path"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""yz_bz"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""create_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""update_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":12},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'0'::bigint"",""ordinal_position"":13},{""column_name"":""result"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14}]",bpm_dm_yz -bpm_form,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('bpm_form_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""conf"",""data_type"":""character varying"",""character_maximum_length"":1000,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""fields"",""data_type"":""character varying"",""character_maximum_length"":5000,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":12}]",工作流的表单定义 -bpm_oa_leave,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""reason"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""start_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""end_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""day"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""result"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15}]",OA 请假申请表 -bpm_process_definition_ext,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""process_definition_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""model_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""form_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""form_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""form_conf"",""data_type"":""character varying"",""character_maximum_length"":1000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""form_fields"",""data_type"":""character varying"",""character_maximum_length"":5000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""form_custom_create_path"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""form_custom_view_path"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":14},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":16}]","Bpm 流程定义的拓展表 -" -bpm_process_instance_ext,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""start_user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""process_definition_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""category"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""result"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""end_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""form_variables"",""data_type"":""character varying"",""character_maximum_length"":5000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":14},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":16}]",工作流的流程实例的拓展 -bpm_task_assign_rule,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""model_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""process_definition_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""task_definition_key"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""options"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":12}]",Bpm 任务规则表 -bpm_task_ext,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""assignee_user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""task_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""result"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""reason"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""end_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""process_instance_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""process_definition_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15}]",工作流的流程任务的拓展表 -bpm_user_group,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""member_user_ids"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11}]",用户组 -chat_conversations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""title"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""is_group"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":3},{""column_name"":""owner_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""last_message_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""metadata"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":8}]",null -chat_gateway_heartbeats,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""gateway_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":3},{""column_name"":""uptime_sec"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""mem_rss_mb"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""heap_used_mb"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""mqtt_connected"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""kafka_connected"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""redis_connected"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""msgs_in"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""msgs_out"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""msgs_dropped"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""errors"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""acl_denied"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""kafka_produced"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""extra"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16}]",null -chat_gateway_nodes,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""mqtt_client_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""version"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""region"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""tags"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":8}]",null -chat_messages,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""conversation_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""sender_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""content_type"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'text'::text"",""ordinal_position"":5},{""column_name"":""reply_to"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""metadata"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":8},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":9},{""column_name"":""ingress_type"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'manual'::text"",""ordinal_position"":10}]",null -chat_mqtt_downlinks,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""conversation_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""target_user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""topic"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""payload"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""payload_encoding"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'utf8'::text"",""ordinal_position"":6},{""column_name"":""qos"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""1"",""ordinal_position"":7},{""column_name"":""retain"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":8},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'pending'::text"",""ordinal_position"":9},{""column_name"":""scheduled_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":10},{""column_name"":""expires_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""sent_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""ack_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""retry_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""last_error"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""correlation_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":17},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":18},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":19},{""column_name"":""metadata"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20}]",null -chat_notifications,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""conversation_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""message_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""type"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'message'::text"",""ordinal_position"":5},{""column_name"":""is_read"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":7}]",null -chat_participants,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""conversation_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""role"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'member'::text"",""ordinal_position"":4},{""column_name"":""joined_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""last_read_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""is_muted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":7},{""column_name"":""settings"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":9},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":10}]",null -chat_sessions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""session_name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""language"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":""'zh-CN'::character varying"",""ordinal_position"":4},{""column_name"":""context"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""ai_model"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""'gpt-4'::character varying"",""ordinal_position"":6},{""column_name"":""total_messages"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""total_tokens"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""cost_usd"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""last_message_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":13}]",AI聊天会话表 -cl_categories,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""parent_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""icon"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""sort_order"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9}]",null -cl_content_history,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""content_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""change_type"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""old_content_hash"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""new_content_hash"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""changed_fields"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""content_diff"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",null -cl_crawl_jobs,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""site_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":3},{""column_name"":""start_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4},{""column_name"":""end_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""pages_crawled"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""pages_processed"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""new_content_found"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""errors_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""config"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""log_messages"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""error_message"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":13}]",null -cl_crawl_state,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""site_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""job_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""url_hash"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":6},{""column_name"":""depth"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""parent_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""crawl_attempts"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""last_attempt_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""http_status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""response_time_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""content_type"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""content_length"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""error_message"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""retry_after"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":17},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":18}]",null -cl_page_content,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""site_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""job_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""url_hash"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""title"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""excerpt"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""author"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""publish_date"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""crawl_date"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11},{""column_name"":""category"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""tags"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""keywords"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""content_hash"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""word_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""language"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":""'zh'::character varying"",""ordinal_position"":17},{""column_name"":""structured_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""raw_html"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""embedding"",""data_type"":""USER-DEFINED"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""embedding_model"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""'text-embedding-ada-002'::character varying"",""ordinal_position"":21},{""column_name"":""ai_keywords"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""sentiment_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""confidence_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""entities"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""ai_summary"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""content_length"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":27},{""column_name"":""topic_tags"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":28},{""column_name"":""vector_index_hint"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":29},{""column_name"":""is_duplicate"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":30},{""column_name"":""is_processed"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":31},{""column_name"":""quality_score"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.0"",""ordinal_position"":32},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":33},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":34}]",null -cl_query_logs,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""query_text"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""query_type"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""user_ip"",""data_type"":""inet"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""user_agent"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""results_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""response_time_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""search_filters"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9}]",null -cl_sites,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""domain"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""category"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""base_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""start_urls"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""selectors"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'{}'::jsonb"",""ordinal_position"":7},{""column_name"":""max_pages"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1000"",""ordinal_position"":8},{""column_name"":""max_depth"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""5"",""ordinal_position"":9},{""column_name"":""follow_links"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":10},{""column_name"":""respect_robots"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":11},{""column_name"":""delay_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1000"",""ordinal_position"":12},{""column_name"":""schedule"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":""'0 */6 * * *'::character varying"",""ordinal_position"":13},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":14},{""column_name"":""incremental_field"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":""'date'::character varying"",""ordinal_position"":15},{""column_name"":""last_crawl_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""last_content_hash"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":18},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":19}]",null -cl_system_config,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""config_key"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""config_value"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6}]",null -cl_user_sessions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""session_name"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""permissions"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{\""read\"": true, \""admin\"": false, \""write\"": false}'::jsonb"",""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""expires_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""(now() + '30 days'::interval)"",""ordinal_position"":6}]",null -ec_activities,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""facility_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""activity_name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""activity_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""location"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""start_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""end_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""max_participants"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""instructor"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""requirements"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""materials_needed"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'scheduled'::character varying"",""ordinal_position"":13},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15}]",null -ec_activity_participations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""activity_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""participation_status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""enjoyment_level"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""behavior_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""staff_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",null -ec_appointments,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""doctor_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""scheduled_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""appointment_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""NO"",""column_default"":""'scheduled'::character varying"",""ordinal_position"":6},{""column_name"":""notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10}]",null -ec_behavior_analysis,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""device_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""analysis_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""video_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""timestamp_start"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""timestamp_end"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""ai_results"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""confidence_score"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""is_anomaly"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":10},{""column_name"":""alert_generated"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":11},{""column_name"":""reviewed_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""review_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":14}]",null -ec_care_plans,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""plan_name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""plan_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""start_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""end_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""frequency"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""assigned_caregiver"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":13}]",null -ec_care_records,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""task_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""caregiver_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""start_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""end_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""actual_duration"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""care_content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""elder_condition"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""issues_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""photo_urls"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'completed'::character varying"",""ordinal_position"":12},{""column_name"":""rating"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""supervisor_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""record_type"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17}]",null -ec_care_tasks,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""care_plan_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""task_name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""task_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""scheduled_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""assigned_to"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""priority"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'normal'::character varying"",""ordinal_position"":9},{""column_name"":""estimated_duration"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":11},{""column_name"":""due_date"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":14},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15}]",null -ec_care_units,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""facility_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""unit_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""bed_capacity"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""current_occupancy"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7}]",null -ec_consultations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""doctor_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""scheduled_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""actual_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""consultation_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""chief_complaint"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""diagnosis"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""treatment"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""prescription"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""follow_up_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":14},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":15}]",null -ec_devices,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""facility_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""device_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""device_name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""device_mac"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""location"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""bind_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":9},{""column_name"":""last_sync"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""extra"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11}]",null -ec_elders,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""facility_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""care_unit_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""elder_code"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""id_card"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""gender"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""birthday"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""nationality"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""religion"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""marital_status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""education"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""occupation"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""admission_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""care_level"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""room_number"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""bed_number"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""payment_method"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""monthly_fee"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""deposit"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":22},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":23},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":24}]",null -ec_emergencies,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""appointment_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""doctor_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""emergency_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""severity"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":7},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""occurred_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""handled_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""handler_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":12},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":13}]",null -ec_emergency_handlings,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""emergency_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""handler_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""handle_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":4},{""column_name"":""handling_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7}]",null -ec_facilities,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""region_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""license_number"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""contact_phone"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""address"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""capacity"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""current_occupancy"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10},{""column_name"":""admin_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12}]",null -ec_family_contacts,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""relationship"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""phone"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""email"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""address"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""is_emergency_contact"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":9},{""column_name"":""is_primary"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":10},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11}]",null -ec_health_alerts,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""alert_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""severity"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""data_source"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""ai_analysis"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""recommendations"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":10},{""column_name"":""acknowledged_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""acknowledged_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""resolved_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""resolved_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15}]",null -ec_health_records,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""record_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""record_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""height_cm"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""weight_kg"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""blood_pressure_systolic"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""blood_pressure_diastolic"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""heart_rate"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""temperature"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""blood_sugar"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""medical_history"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""current_medications"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""allergies"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""mental_status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""mobility_level"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""cognitive_level"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""recorded_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":19}]",null -ec_meal_records,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""meal_service_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""meal_type"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""meal_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""food_items"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""appetite_level"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""amount_consumed"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""assistance_needed"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":9},{""column_name"":""assisted_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12}]",null -ec_meal_services,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""facility_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""meal_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""meal_type"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""menu_items"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""nutritional_info"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""special_diet_options"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9}]",null -ec_medical_records,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""doctor_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""visit_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""visit_date"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""chief_complaint"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""symptoms"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""diagnosis"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""treatment_plan"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""prescription"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""follow_up_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":13}]",null -ec_medication_logs,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""medication_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""administered_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""scheduled_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""actual_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""dosage_given"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""side_effects_observed"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11}]",null -ec_medications,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""medical_record_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""medication_name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""dosage"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""frequency"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""route"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""start_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""end_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""prescribed_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""instructions"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""side_effects"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'active'::character varying"",""ordinal_position"":13},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":14}]",null -ec_notification_logs,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""template_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""recipient_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""subject"",""data_type"":""character varying"",""character_maximum_length"":256,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""delivery_method"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""delivery_status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""sent_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""delivered_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""error_message"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12}]",null -ec_notification_templates,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""template_code"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""template_name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""category"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""subject_template"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""content_template"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""variables"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""delivery_methods"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":9},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10}]",null -ec_service_requests,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""type"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""priority"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'normal'::character varying"",""ordinal_position"":4},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":6},{""column_name"":""handler_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""handled_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10}]",null -ec_visits,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""visitor_name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""visitor_relationship"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""visitor_id_card"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""visitor_phone"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""visit_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""start_time"",""data_type"":""time without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""end_time"",""data_type"":""time without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""visit_purpose"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""items_brought"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""approved_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""check_in_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""check_out_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""'scheduled'::character varying"",""ordinal_position"":15},{""column_name"":""notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":17}]",null -ec_vital_signs,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""elder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""device_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""vital_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""systolic_pressure"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""diastolic_pressure"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""heart_rate"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""temperature"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""oxygen_saturation"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""glucose_level"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""measured_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""measured_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""is_abnormal"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":14},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""recorded_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":17}]",null -em_customers,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""email"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""company"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""tags"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::text[]"",""ordinal_position"":5},{""column_name"":""notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""first_seen_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""last_seen_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",null -em_emails,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""message_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""thread_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""subject"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""sender_email"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""sender_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""recipient_email"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""content_text"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""content_html"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""attachments"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'[]'::jsonb"",""ordinal_position"":10},{""column_name"":""classification"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":11},{""column_name"":""sentiment"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":12},{""column_name"":""summary"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""embedding"",""data_type"":""USER-DEFINED"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'pending'::text"",""ordinal_position"":15},{""column_name"":""priority"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'normal'::text"",""ordinal_position"":16},{""column_name"":""received_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":17},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":18},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":19}]",null -em_knowledge_base,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""title"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""category"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""embedding"",""data_type"":""USER-DEFINED"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":8}]",null -em_logs,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""action"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""details"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":3},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5}]",null -em_replies,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""email_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""version"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":4},{""column_name"":""type"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'ai_draft'::text"",""ordinal_position"":5},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'draft'::text"",""ordinal_position"":6},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":8},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":9}]",null -event_records,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('event_records_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""menjin_no"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""major"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""minor"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""card_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""card_reader_no"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""door_no"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""employee_no_string"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""serial_no"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""user_type"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""current_verify_mode"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""mask"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""picture_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""face_rect_height"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""face_rect_width"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""face_rect_x"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""face_rect_y"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""stored"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'0'::smallint"",""ordinal_position"":20},{""column_name"":""stored_url"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""down_local"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'0'::smallint"",""ordinal_position"":22}]",null -event_records_bak,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":1},{""column_name"":""menjin_no"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""major"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""minor"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""card_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""card_reader_no"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""door_no"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""employee_no_string"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""serial_no"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""user_type"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""current_verify_mode"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""mask"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""picture_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""face_rect_height"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""face_rect_width"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""face_rect_x"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""face_rect_y"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""stored"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""stored_url"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""down_local"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22}]",null -event_records_req_mission,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('event_records_req_mission_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""menjin_no"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""last_success_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""last_req_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""total_request"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""target_ip"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""cur_cookie"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""cur_session_tag"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11}]",null -event_valid_data,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('event_valid_data_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""username"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""cardno"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""certificatenumber"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""first_alarmstarttime"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""valid_records"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6}]",null -event_valid_data_60,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""username"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""certificatenumber"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""total_records"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""periodmatch"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""isvalid"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""auditorname"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""auditorid"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""audit_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""first_alarmstarttime"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""event_door_cardno"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""event_door_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""judge"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'0'::bigint"",""ordinal_position"":14},{""column_name"":""duration"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'0'::numeric"",""ordinal_position"":15},{""column_name"":""addtype"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":16}]",null -event_valid_data_60_bak,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":1},{""column_name"":""username"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""certificatenumber"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""total_records"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""periodmatch"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""isvalid"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""auditorname"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""auditorid"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""audit_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""first_alarmstarttime"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""event_door_cardno"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""event_door_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""judge"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14}]",null -eventdoor,"[{""column_name"":""major"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":1},{""column_name"":""minor"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""cardno"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""cardtype"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""cardreaderno"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""doorno"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""employeenostring"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""serialno"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""usertype"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""currentverifymode"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""mask"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""netuser"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""remotehostaddr"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15}]",null -eventtargets,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""channel"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""alarmstarttime"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""alarmendtime"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""triggerchannel"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""pictureurl"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""prerecordtimeseconds"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""postrecordtimeseconds"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""starttime"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""endtime"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""eventtype"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""metadatamatches"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""alarmresultauxeventtype"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""alarmresult"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""accesscontrollerevent"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""iotd"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16}]",null -fhir_resource_history,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""resource_type"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""resource_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""version"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""last_updated"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""resource"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":7}]",null -fhir_resources,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""resource_type"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""resource_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""version"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""1"",""ordinal_position"":4},{""column_name"":""last_updated"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""resource"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6}]",null -flw_channel_definition,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""version_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""resource_name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""description_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""implementation_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12}]",null -flw_ev_databasechangelog,"[{""column_name"":""id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""author"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""filename"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""dateexecuted"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""orderexecuted"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""exectype"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""md5sum"",""data_type"":""character varying"",""character_maximum_length"":35,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""comments"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""tag"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""liquibase"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""contexts"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""labels"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""deployment_id"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14}]",null -flw_ev_databasechangeloglock,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""locked"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""lockgranted"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""lockedby"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -flw_event_definition,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""version_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""resource_name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""description_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9}]",null -flw_event_deployment,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""deploy_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""parent_deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6}]",null -flw_event_resource,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""deployment_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""resource_bytes_"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -flw_ru_batch,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""search_key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""search_key2_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""complete_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""status_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""batch_doc_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10}]",null -flw_ru_batch_part,"[{""column_name"":""id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""rev_"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""batch_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""scope_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""sub_scope_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""scope_type_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""search_key_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""search_key2_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""create_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""complete_time_"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""status_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""result_doc_id_"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""tenant_id_"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":14}]",null -health_metrics,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""device_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""heart_rate"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""blood_oxygen"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""steps"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""calories"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""latitude"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""longitude"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""activity_type"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""timestamp"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11}]",null -his_allergy_intolerance,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""hospital_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""patient_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""clinical_status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'active'::text"",""ordinal_position"":4},{""column_name"":""verification_status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'confirmed'::text"",""ordinal_position"":5},{""column_name"":""type"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""category"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""code"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""display_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""criticality"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""last_occurrence"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""recorded_date"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":12},{""column_name"":""recorder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":14},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":15}]",null -his_care_plan,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""hospital_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""patient_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""encounter_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'active'::text"",""ordinal_position"":5},{""column_name"":""intent"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'order'::text"",""ordinal_position"":6},{""column_name"":""title"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""start_period"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""end_period"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""authored_on"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":11},{""column_name"":""author_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":13},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":14}]",null -his_charge_item,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""hospital_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""patient_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""encounter_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""code"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""display_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""quantity"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""1"",""ordinal_position"":8},{""column_name"":""unit_price"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""total_amount"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""occurrence_day"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_DATE"",""ordinal_position"":11},{""column_name"":""entered_date"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":12},{""column_name"":""compliance_status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'unchecked'::text"",""ordinal_position"":13},{""column_name"":""violation_code"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""violation_reason"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":16},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":17}]",null -his_condition,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""hospital_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""patient_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""encounter_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""clinical_status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""verification_status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""category"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""severity"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""code"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""code_system"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'ICD-10'::text"",""ordinal_position"":10},{""column_name"":""display_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""on_set_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""abatement_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""recorded_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":14},{""column_name"":""recorder_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""audit_status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'pending'::text"",""ordinal_position"":16},{""column_name"":""risk_level"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'normal'::text"",""ordinal_position"":17},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":18},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":19}]",null -his_encounter,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""hospital_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""patient_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""class"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""department"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""service_type"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""start_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":8},{""column_name"":""end_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""reason_code"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""reason_text"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":12},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":13}]",null -his_medication_request,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""hospital_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""patient_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""encounter_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""intent"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""category"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""medication_code"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""medication_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""dosage_instruction"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""quantity"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""quantity_unit"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""authored_on"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":13},{""column_name"":""requester_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""audit_status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'pending'::text"",""ordinal_position"":15},{""column_name"":""risk_level"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'normal'::text"",""ordinal_position"":16},{""column_name"":""audit_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":18},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":19}]",null -his_observation,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""hospital_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""patient_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""encounter_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""category"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""code"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""value_quantity"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""value_unit"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""value_text"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""value_boolean"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""value_datetime"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""effective_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":13},{""column_name"":""issued_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""performer_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":16},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":17}]",null -his_patient,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""hospital_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""external_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""full_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""gender"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""birth_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""phone"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""email"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""id_number"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""address"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""true"",""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":12},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":13}]",null -hw_student,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('homework_homework_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""student_id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""assignment_id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""answer_text"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""videos"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""images"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""checkin_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""checkin_time"",""data_type"":""time without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""'submitted'::character varying"",""ordinal_position"":9},{""column_name"":""grade"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""teacher_comments"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""feedback_files"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""is_graded"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":13},{""column_name"":""location"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""latitude"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""longitude"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""device_id"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""ip_address"",""data_type"":""inet"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""is_approved"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":19},{""column_name"":""approver_id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""remarks"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""created_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":22},{""column_name"":""updated_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":23},{""column_name"":""responseall"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""approve_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""ex_times"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""ex_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":27}]",null -hw_teacher,"[{""column_name"":""teacher_id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""due_date"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""created_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":6},{""column_name"":""updated_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7},{""column_name"":""review_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""text_content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""images"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""videos"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""additional_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":""'pending'::character varying"",""ordinal_position"":13},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":14},{""column_name"":""start_date"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""targets"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('hw_teacher_id_seq'::regclass)"",""ordinal_position"":17},{""column_name"":""ex_times"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":18},{""column_name"":""ex_types"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":19}]",null -infra_api_access_log,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""trace_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":3},{""column_name"":""user_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""application_name"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""request_method"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""request_url"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""request_params"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""response_body"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""user_ip"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""user_agent"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""operate_module"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":12},{""column_name"":""operate_name"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":13},{""column_name"":""operate_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""begin_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":15},{""column_name"":""end_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":16},{""column_name"":""duration"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":17},{""column_name"":""result_code"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":18},{""column_name"":""result_msg"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":19},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":20},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":21},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":22},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":23},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":24},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":25}]",API 访问日志表 -infra_api_error_log,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""trace_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":3},{""column_name"":""user_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""application_name"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""request_method"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""request_url"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""request_params"",""data_type"":""character varying"",""character_maximum_length"":8000,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""user_ip"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""user_agent"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""exception_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""exception_name"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""exception_message"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""exception_root_cause_message"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":14},{""column_name"":""exception_stack_trace"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":15},{""column_name"":""exception_class_name"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":16},{""column_name"":""exception_file_name"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":17},{""column_name"":""exception_method_name"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":18},{""column_name"":""exception_line_number"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":19},{""column_name"":""process_status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":20},{""column_name"":""process_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""process_user_id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":22},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":23},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":24},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":25},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":26},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":27},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":28}]",系统异常日志 -infra_codegen_column,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""table_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""column_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""data_type"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""column_comment"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""nullable"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""primary_key"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""ordinal_position"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""java_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""java_field"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""dict_type"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""example"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":12},{""column_name"":""create_operation"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""update_operation"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":14},{""column_name"":""list_operation"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":15},{""column_name"":""list_operation_condition"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":""'='::character varying"",""ordinal_position"":16},{""column_name"":""list_operation_result"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":17},{""column_name"":""html_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":18},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":19},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":20},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":21},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":22},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":23}]",代码生成表字段定义 -infra_codegen_table,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""data_source_config_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""scene"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""1"",""ordinal_position"":3},{""column_name"":""table_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":4},{""column_name"":""table_comment"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":5},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":6},{""column_name"":""module_name"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""business_name"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""class_name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""class_comment"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""author"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""template_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""1"",""ordinal_position"":12},{""column_name"":""front_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""parent_menu_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""master_table_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""sub_join_column_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""sub_join_many"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""tree_parent_column_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""tree_name_column_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":20},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":21},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":22},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":23},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":24}]",代码生成表定义 -infra_config,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""category"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":4},{""column_name"":""config_key"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":5},{""column_name"":""value"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""visible"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":8},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":12},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13}]",参数配置表 -infra_data_source_config,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":2},{""column_name"":""url"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""username"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""password"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":5},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":10}]",数据源配置表 -infra_file,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""config_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":256,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":3},{""column_name"":""path"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""url"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""type"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":6},{""column_name"":""size"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":12}]",文件表 -infra_file_config,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""storage"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":4},{""column_name"":""master"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""config"",""data_type"":""character varying"",""character_maximum_length"":4096,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":8},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11}]",文件配置表 -infra_file_content,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""config_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""path"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""content"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":5},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":6},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":8},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":9}]",文件表 -infra_job,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""handler_name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""handler_param"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":5},{""column_name"":""cron_expression"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""retry_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""retry_interval"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""monitor_timeout"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":13},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14}]",定时任务表 -infra_job_log,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""job_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""handler_name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""handler_param"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":4},{""column_name"":""execute_index"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""1"",""ordinal_position"":5},{""column_name"":""begin_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""end_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""duration"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""result"",""data_type"":""character varying"",""character_maximum_length"":4000,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":12},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":13},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":14},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15}]",定时任务日志表 -infra_test_demo,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""category"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11}]",字典类型表 -location_gateways,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""organization_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""campus_code"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""area_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""building_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""floor_label"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""room_label"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""system_code"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""serial_number"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""latitude"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""longitude"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""altitude_m"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""coordinate_system"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'WGS84'::text"",""ordinal_position"":15},{""column_name"":""install_height_m"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""orientation_deg"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""coverage_radius_m"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""coverage_notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""ip_address"",""data_type"":""inet"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""lan_mac"",""data_type"":""macaddr"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""upstream_mac"",""data_type"":""macaddr"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""firmware_version"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""hardware_version"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""heartbeat_interval_s"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'active'::text"",""ordinal_position"":26},{""column_name"":""last_online_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":27},{""column_name"":""last_maintenance_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":28},{""column_name"":""tags"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":29},{""column_name"":""extra"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":31},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":32},{""column_name"":""deleted_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":33}]",Registry of 2.4G gateways installed across campuses. -market_activity,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('market_activity_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""activity_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""start_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""end_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""invalid_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""delete_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""time_limited_discount"",""data_type"":""character varying"",""character_maximum_length"":2000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""full_privilege"",""data_type"":""character varying"",""character_maximum_length"":2000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":12},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":13},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":14},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":15},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":16}]",促销活动 -medical_records,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""gender"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""birthdate"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""id_number"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""phone"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""medical_card_no"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""hospital"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""department"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""blood_type"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""height"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""weight"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""allergies"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""medical_history"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""diagnosis_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""diagnosis"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""treatment_plan"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""medication"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""notes"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""attachments"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":22},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":23},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":24}]",用户医疗档案表 -member_address,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('member_address_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""mobile"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""area_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""detail_address"",""data_type"":""character varying"",""character_maximum_length"":250,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""default_status"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":8},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":11},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12}]",null -member_brokerage_record,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('member_brokerage_record_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""biz_id"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""biz_type"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""price"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""total_price"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""frozen_days"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""unfreeze_time"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":13},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":14},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":15},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":16},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":17}]",null -member_group,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('member_group_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":5},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":6},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":8},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":9},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":10}]",用户分组 -member_level,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('member_level_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""experience"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""discount_percent"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""icon"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""background_url"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":12},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14}]",会员等级 -member_sign_in_config,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('member_sign_in_config_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""day"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""point"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""experience"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":8},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":12},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":13}]",null -member_sign_in_record,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('member_sign_in_record_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""day"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""point"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""experience"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":12}]",null -member_tag,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('member_tag_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":3},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":4},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":5},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":6},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":7},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":8}]",null -member_user,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('member_user_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""nickname"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""sex"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""birthday"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""area_id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""mark"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""point"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""avatar"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'1'::smallint"",""ordinal_position"":10},{""column_name"":""mobile"",""data_type"":""character varying"",""character_maximum_length"":11,""is_nullable"":""YES"",""column_default"":""''''''::character varying"",""ordinal_position"":11},{""column_name"":""password"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""register_ip"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""''''''::character varying"",""ordinal_position"":13},{""column_name"":""login_ip"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":14},{""column_name"":""login_date"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""tag_ids"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""level_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""experience"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""group_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":20},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":21},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":22},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":23},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":24},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":25},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":26},{""column_name"":""cardno"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":27},{""column_name"":""certificationnumber"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":28},{""column_name"":""dept_ids"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":29},{""column_name"":""role_ids"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30},{""column_name"":""avatar_file"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":31}]",会员表 -member_user_bak,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""nickname"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":2},{""column_name"":""avatar"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":3},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""mobile"",""data_type"":""character varying"",""character_maximum_length"":11,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""password"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""register_ip"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""login_ip"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""login_date"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15}]",用户 -messages,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""username"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""type"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""file_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""file_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""file_size"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""thumbnail_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""channel"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11}]",null -ml_brands,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""logo_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""website"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8},{""column_name"":""cid"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""nextval('ml_brands_cid_seq'::regclass)"",""ordinal_position"":9}]",品牌表 -ml_browse_history,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""product_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""browse_duration"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6}]",用户浏览历史表 -ml_categories,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""parent_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""slug"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""icon_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""banner_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""sort_order"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":9},{""column_name"":""path"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":11},{""column_name"":""seo_title"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""seo_description"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":14},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15},{""column_name"":""cid"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""nextval('ml_categories_cid_seq'::regclass)"",""ordinal_position"":16}]",商品分类表 -ml_coupon_templates,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""merchant_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""coupon_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""discount_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""discount_value"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""min_order_amount"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""max_discount_amount"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""total_quantity"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""per_user_limit"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":11},{""column_name"":""usage_limit"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":12},{""column_name"":""applicable_products"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'[]'::jsonb"",""ordinal_position"":13},{""column_name"":""applicable_categories"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'[]'::jsonb"",""ordinal_position"":14},{""column_name"":""start_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":15},{""column_name"":""end_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":16},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":17},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":18},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":19}]",优惠券模板表 -ml_delivery_drivers,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""real_name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""id_card"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""driver_license"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""vehicle_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""vehicle_number"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""service_areas"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'[]'::jsonb"",""ordinal_position"":8},{""column_name"":""work_status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":9},{""column_name"":""current_lat"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""current_lng"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""rating_avg"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.00"",""ordinal_position"":12},{""column_name"":""rating_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":13},{""column_name"":""order_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":15},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":16},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":17}]",配送员信息表 -ml_delivery_tasks,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""order_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""driver_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""pickup_address"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""delivery_address"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""distance"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""estimated_time"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""delivery_fee"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":9},{""column_name"":""assigned_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""picked_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""delivered_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""delivery_code"",""data_type"":""character varying"",""character_maximum_length"":10,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""remark"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""failure_reason"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":16},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":17}]",配送任务表 -ml_order_items,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""order_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""product_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""sku_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""product_name"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""sku_name"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""specifications"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":7},{""column_name"":""image_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""price"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""quantity"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""total_amount"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12}]",订单商品表 -ml_orders,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""order_no"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""merchant_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""product_amount"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":5},{""column_name"":""discount_amount"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""shipping_fee"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""total_amount"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""paid_amount"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""shipping_address"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""order_status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":11},{""column_name"":""payment_status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":12},{""column_name"":""shipping_status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":13},{""column_name"":""paid_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""shipped_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""delivered_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""completed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""remark"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""merchant_memo"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""cancel_reason"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":21},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":22},{""column_name"":""cid"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""nextval('ml_orders_cid_seq'::regclass)"",""ordinal_position"":23}]",订单表 -ml_product_reviews,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""order_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""order_item_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""product_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""merchant_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""rating"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""images"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'[]'::jsonb"",""ordinal_position"":9},{""column_name"":""is_anonymous"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":10},{""column_name"":""merchant_reply"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""merchant_replied_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":13},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":14},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15}]",商品评价表 -ml_product_skus,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""product_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""sku_code"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""specifications"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":4},{""column_name"":""price"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""market_price"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""cost_price"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""stock"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""warning_stock"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""10"",""ordinal_position"":9},{""column_name"":""image_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""weight"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":12},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":13},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":14}]",商品SKU表 -ml_product_specs,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""product_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""spec_name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""spec_values"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'[]'::jsonb"",""ordinal_position"":4},{""column_name"":""sort_order"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":5},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6}]",商品规格表 -ml_products,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""merchant_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""category_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""brand_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""product_code"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""subtitle"",""data_type"":""character varying"",""character_maximum_length"":1000,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""main_image_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""image_urls"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'[]'::jsonb"",""ordinal_position"":10},{""column_name"":""video_urls"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'[]'::jsonb"",""ordinal_position"":11},{""column_name"":""base_price"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""market_price"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""cost_price"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""total_stock"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":15},{""column_name"":""available_stock"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":16},{""column_name"":""min_order_qty"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":17},{""column_name"":""max_order_qty"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""weight"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""dimensions"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":21},{""column_name"":""is_featured"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":22},{""column_name"":""is_new"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":23},{""column_name"":""is_hot"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":24},{""column_name"":""view_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":25},{""column_name"":""sale_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":26},{""column_name"":""favorite_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":27},{""column_name"":""rating_avg"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.00"",""ordinal_position"":28},{""column_name"":""rating_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":29},{""column_name"":""seo_title"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30},{""column_name"":""seo_description"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":31},{""column_name"":""seo_keywords"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":32},{""column_name"":""slug"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":33},{""column_name"":""tags"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":34},{""column_name"":""attributes"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":35},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":36},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":37},{""column_name"":""published_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":38},{""column_name"":""cid"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""nextval('ml_products_cid_seq'::regclass)"",""ordinal_position"":39}]",商品表 -ml_regions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""parent_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""level"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""sort_order"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",地区表 -ml_search_history,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""keyword"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""result_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""ip_address"",""data_type"":""inet"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""user_agent"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7}]",搜索记录表 -ml_shopping_cart,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""product_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""sku_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""quantity"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""selected"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",购物车表 -ml_shops,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""merchant_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""shop_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""shop_logo"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""shop_banner"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""business_license"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""contact_name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""contact_phone"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""contact_email"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""address"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""business_hours"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":13},{""column_name"":""product_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""order_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":15},{""column_name"":""rating_avg"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.00"",""ordinal_position"":16},{""column_name"":""rating_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":17},{""column_name"":""verified_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":19},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":20},{""column_name"":""cid"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""nextval('ml_shops_cid_seq'::regclass)"",""ordinal_position"":21}]",店铺信息表 -ml_subscription_plans,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""plan_code"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""features"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""price"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""currency"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'CNY'::text"",""ordinal_position"":7},{""column_name"":""billing_period"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""trial_days"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":10},{""column_name"":""sort_order"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":12},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":13}]",null -ml_system_configs,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""config_key"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""config_value"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6}]",系统配置表 -ml_user_addresses,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""receiver_name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""receiver_phone"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""province"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""city"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""district"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""street"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""address_detail"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""postal_code"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""is_default"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":11},{""column_name"":""label"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""latitude"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""longitude"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""delivery_instructions"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""business_hours"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":17},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":18},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":19}]",用户地址表 -ml_user_coupons,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""template_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""coupon_code"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""1"",""ordinal_position"":5},{""column_name"":""used_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""order_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""received_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8},{""column_name"":""expire_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9}]",用户优惠券表 -ml_user_favorites,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""target_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""target_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5}]",用户收藏表 -ml_user_profiles,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""1"",""ordinal_position"":3},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""1"",""ordinal_position"":4},{""column_name"":""real_name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""id_card"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""business_license"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""credit_score"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""100"",""ordinal_position"":8},{""column_name"":""verification_status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""verification_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":10},{""column_name"":""preferences"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":11},{""column_name"":""emergency_contact"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""service_areas"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":14},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":15}]",商城用户扩展信息表 -ml_user_subscriptions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""plan_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""'active'::text"",""ordinal_position"":4},{""column_name"":""start_date"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""end_date"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""next_billing_date"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""auto_renew"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""true"",""ordinal_position"":8},{""column_name"":""cancel_at_period_end"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":9},{""column_name"":""metadata"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":11},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":12}]",null -ocr_recognition_logs,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""document_type"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""file_url"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""recognition_result"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":7}]",null -pay_app,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""pay_notify_url"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""refund_notify_url"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""merchant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":12},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13}]",支付应用信息 -pay_channel,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""fee_rate"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""merchant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""app_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""config"",""data_type"":""character varying"",""character_maximum_length"":4096,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14}]","支付渠道 -" -pay_merchant,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""no"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""short_name"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":12}]",支付商户信息 -pay_notify_log,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""task_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""notify_times"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""response"",""data_type"":""character varying"",""character_maximum_length"":2048,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11}]",支付通知 App 的日志 -pay_notify_task,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""merchant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""app_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""data_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""merchant_order_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""next_notify_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""last_execute_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""notify_times"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""max_notify_times"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""notify_url"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":14},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":16},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":17},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":18}]","商户支付、退款等的通知 -" -pay_order,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""merchant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""app_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""channel_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""channel_code"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""merchant_order_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""subject"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""body"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""notify_url"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""notify_status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""amount"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""channel_fee_rate"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""channel_fee_amount"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":14},{""column_name"":""user_ip"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":15},{""column_name"":""expire_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":16},{""column_name"":""success_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""notify_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""success_extension_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""refund_status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":20},{""column_name"":""refund_times"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":21},{""column_name"":""refund_amount"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":22},{""column_name"":""channel_user_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""channel_order_no"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":26},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":27},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":28},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":29},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":30}]","支付订单 -" -pay_order_extension,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""no"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""order_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""channel_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""channel_code"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""user_ip"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""channel_extras"",""data_type"":""character varying"",""character_maximum_length"":256,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""channel_notify_data"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15}]","支付订单 -" -pay_refund,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""merchant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""app_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""channel_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""channel_code"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""order_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""trade_no"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""merchant_order_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""merchant_refund_no"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""notify_url"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""notify_status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""pay_amount"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":14},{""column_name"":""refund_amount"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":15},{""column_name"":""reason"",""data_type"":""character varying"",""character_maximum_length"":256,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":16},{""column_name"":""user_ip"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""channel_order_no"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":18},{""column_name"":""channel_refund_no"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""channel_error_code"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""channel_error_msg"",""data_type"":""character varying"",""character_maximum_length"":256,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""channel_extras"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""expire_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""success_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""notify_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":27},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":28},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":29},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":30},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":31}]",退款订单 -promotion_article,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('promotion_article_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""category_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""author"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""pic_url"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""introduction"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""browse_count"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""sort"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""spu_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""recommend_hot"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""recommend_banner"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""content"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":14},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":15},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":16},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":17},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":18},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":19}]",文章管理表 -promotion_article_category,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('promotion_article_category_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""pic_url"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""sort"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":10},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11}]",文章分类表 -promotion_combination_activity,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('promotion_combination_activity_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""spu_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""total_limit_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""single_limit_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""start_time"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""end_time"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""user_size"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""total_num"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""success_num"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""order_user_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""virtual_group"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":13},{""column_name"":""limit_duration"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":14},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":15},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":16},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":17},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":18},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":19},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":20}]",拼团活动 -promotion_coupon,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('promotion_coupon_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""template_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""take_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""useprice"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""valid_start_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""valid_end_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""product_scope"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""product_spu_ids"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""discount_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""discount_percent"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""discount_price"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""discount_limit_price"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""use_order_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""use_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":18},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":19},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":20},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":21},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":22}]",优惠劵 -promotion_coupon_template,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('promotion_coupon_template_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""total_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""take_limit_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""take_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""use_price"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""product_scope"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""product_spu_ids"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""validity_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""valid_start_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""valid_end_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""fixed_start_term"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""fixed_end_term"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""discount_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":15},{""column_name"":""discount_percent"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""discount_price"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""discount_limit_price"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""take_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":19},{""column_name"":""use_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":20},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":21},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":22},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":23},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":24},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":25}]",优惠劵模板 -promotion_diy_page,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('promotion_diy_page_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""template_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""preview_pic_urls"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""property"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":8},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":11},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12}]",装修页面 -promotion_diy_template,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('promotion_diy_template_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""used"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""used_time"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""preview_pic_urls"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""property"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":12},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13}]",null -promotion_reward_activity,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('promotion_reward_activity_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""start_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""end_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""condition_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""product_scope"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""product_spu_ids"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""rules"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":12},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":13},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":14},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":15}]",满减送活动 -promotion_seckill_activity,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('promotion_seckill_activity_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""spu_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""start_time"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""end_time"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""sort"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""config_ids"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""order_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""user_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""total_price"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""total_limit_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""single_limit_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""stock"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""total_stock"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":17},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":18},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":19},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":20},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":21},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":22}]",秒杀活动 -promotion_seckill_config,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('promotion_seckill_config_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""start_time"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""end_time"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""pic_url"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""status"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":8},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10},{""column_name"":""deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":11},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12}]",秒杀时段配置 -ps_message_processing_logs,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""message_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""processing_step"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""started_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""completed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""duration_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""details"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""error_details"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9}]",消息处理日志表 - 记录消息处理过程的详细日志 -ps_push_messages,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""message_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""push_type"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""device_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""source_ip"",""data_type"":""inet"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""user_agent"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""raw_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""parsed_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""received_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12},{""column_name"":""processing_status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":13},{""column_name"":""processed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""error_message"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""retry_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":16},{""column_name"":""priority"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""5"",""ordinal_position"":17},{""column_name"":""category"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""tags"",""data_type"":""ARRAY"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""checksum"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""is_duplicate"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":21},{""column_name"":""original_message_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""latitude"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":23},{""column_name"":""longitude"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":24},{""column_name"":""location_accuracy"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":25},{""column_name"":""location_timestamp"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":26},{""column_name"":""search_vector"",""data_type"":""tsvector"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":27},{""column_name"":""is_deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":28},{""column_name"":""deleted_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":29}]",推送消息主表 - 存储所有接收到的推送消息 -ps_push_msg_raw,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""message_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""push_type"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""source_ip"",""data_type"":""inet"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""user_agent"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""raw_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":12},{""column_name"":""processing_status"",""data_type"":""character varying"",""character_maximum_length"":20,""is_nullable"":""YES"",""column_default"":""'pending'::character varying"",""ordinal_position"":13},{""column_name"":""is_deleted"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":28},{""column_name"":""checksum"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":30}]",This is a duplicate of ps_push_messages -ps_push_types,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('ps_push_types_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""type_code"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""type_name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""default_priority"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""5"",""ordinal_position"":5},{""column_name"":""validation_schema"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9}]",推送类型配置表 - 定义各种推送消息类型及其验证规则 -ps_system_stats,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""stat_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_DATE"",""ordinal_position"":2},{""column_name"":""stat_hour"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""EXTRACT(hour FROM now())"",""ordinal_position"":3},{""column_name"":""push_type"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""message_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":5},{""column_name"":""success_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""error_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":7},{""column_name"":""avg_processing_time_ms"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":9}]",系统统计表 - 存储系统运行统计数据 -qrtz_blob_triggers,"[{""column_name"":""sched_name"",""data_type"":""character varying"",""character_maximum_length"":120,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""trigger_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""trigger_group"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""blob_data"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -qrtz_calendars,"[{""column_name"":""sched_name"",""data_type"":""character varying"",""character_maximum_length"":120,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""calendar_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""calendar"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3}]",null -qrtz_cron_triggers,"[{""column_name"":""sched_name"",""data_type"":""character varying"",""character_maximum_length"":120,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""trigger_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""trigger_group"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""cron_expression"",""data_type"":""character varying"",""character_maximum_length"":120,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""time_zone_id"",""data_type"":""character varying"",""character_maximum_length"":80,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5}]",null -qrtz_fired_triggers,"[{""column_name"":""sched_name"",""data_type"":""character varying"",""character_maximum_length"":120,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""entry_id"",""data_type"":""character varying"",""character_maximum_length"":95,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""trigger_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""trigger_group"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""instance_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""fired_time"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""sched_time"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""priority"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""state"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""job_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""job_group"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""is_nonconcurrent"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""requests_recovery"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13}]",null -qrtz_job_details,"[{""column_name"":""sched_name"",""data_type"":""character varying"",""character_maximum_length"":120,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""job_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""job_group"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":250,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""job_class_name"",""data_type"":""character varying"",""character_maximum_length"":250,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""is_durable"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""is_nonconcurrent"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""is_update_data"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""requests_recovery"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""job_data"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10}]",null -qrtz_locks,"[{""column_name"":""sched_name"",""data_type"":""character varying"",""character_maximum_length"":120,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""lock_name"",""data_type"":""character varying"",""character_maximum_length"":40,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2}]",null -qrtz_paused_trigger_grps,"[{""column_name"":""sched_name"",""data_type"":""character varying"",""character_maximum_length"":120,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""trigger_group"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2}]",null -qrtz_scheduler_state,"[{""column_name"":""sched_name"",""data_type"":""character varying"",""character_maximum_length"":120,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""instance_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""last_checkin_time"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""checkin_interval"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4}]",null -qrtz_simple_triggers,"[{""column_name"":""sched_name"",""data_type"":""character varying"",""character_maximum_length"":120,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""trigger_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""trigger_group"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""repeat_count"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""repeat_interval"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""times_triggered"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6}]",null -qrtz_simprop_triggers,"[{""column_name"":""sched_name"",""data_type"":""character varying"",""character_maximum_length"":120,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""trigger_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""trigger_group"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""str_prop_1"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""str_prop_2"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""str_prop_3"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""int_prop_1"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""int_prop_2"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""long_prop_1"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""long_prop_2"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""dec_prop_1"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""dec_prop_2"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""bool_prop_1"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""bool_prop_2"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14}]",null -qrtz_triggers,"[{""column_name"":""sched_name"",""data_type"":""character varying"",""character_maximum_length"":120,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""trigger_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""trigger_group"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""job_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""job_group"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":250,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""next_fire_time"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""prev_fire_time"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""priority"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""trigger_state"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""trigger_type"",""data_type"":""character varying"",""character_maximum_length"":8,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""start_time"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""end_time"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""calendar_name"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""misfire_instr"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""job_data"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16}]",null -realtime_device_states,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""room_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""batch_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":4}]",null -sessions,"[{""column_name"":""id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""messages"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'[]'::jsonb"",""ordinal_position"":3},{""column_name"":""context"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":4},{""column_name"":""model"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""metadata"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":8}]",null -ss_blood_pressure,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""systolic"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""diastolic"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5}]",null -ss_ecg_measurements,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""duration_sec"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""sample_rate_hz"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5}]",null -ss_ecg_samples,"[{""column_name"":""ecg_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""sample_index"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""voltage_mv"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3}]",null -ss_eeg_measurements,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""duration_sec"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""sample_rate_hz"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5}]",null -ss_eeg_samples,"[{""column_name"":""eeg_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""sample_index"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""voltage_uv"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3}]",null -ss_emg_measurements,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""duration_sec"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""sample_rate_hz"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5}]",null -ss_emg_samples,"[{""column_name"":""emg_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""sample_index"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""voltage_mv"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3}]",null -ss_energy_expenditure,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""calories_kcal"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""met"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5}]",null -ss_fall_events,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""fall_detected"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""event_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5}]",null -ss_glucose,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""glucose_mg_dl"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4}]",null -ss_gsr,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""gsr_us"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4}]",null -ss_heart_rate,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""heart_rate_bpm"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4}]",null -ss_hrv,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""hrv_rmssd"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""hrv_sdnn"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5}]",null -ss_lactate,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""lactate_mmol_l"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4}]",null -ss_location,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""latitude"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""longitude"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""altitude"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""speed"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""heading"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":8}]",null -ss_posture,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""posture"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4}]",null -ss_ppg_measurements,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""duration_sec"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""sample_rate_hz"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5}]",null -ss_ppg_samples,"[{""column_name"":""ppg_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""sample_index"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""amplitude"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3}]",null -ss_respiratory_rate,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""respiratory_rate"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4}]",null -ss_respiratory_sounds,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""audio_data"",""data_type"":""bytea"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4}]",null -ss_sensor_measurements,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""device_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""measurement_type"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""measured_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""unit"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""raw_data"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":8}]",null -ss_skin_temperature,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""skin_temp_c"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4}]",null -ss_sleep_metrics,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""sleep_stage"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""duration_sec"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5}]",null -ss_spo2,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""spo2_percent"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4}]",null -ss_steps,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""step_count"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4}]",null -ss_stride_length,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""stride_cm"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4}]",null -ss_temperature,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""temperature_c"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4}]",null -ss_tidal_volume,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""tidal_volume_ml"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4}]",null -ss_vo2,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""measurement_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""vo2_ml_per_min"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""vo2max_ml_per_min"",""data_type"":""double precision"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":5}]",null -stock_accounts,"[{""column_name"":""simulation_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""cash"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""positions"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":3},{""column_name"":""used_fees"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5}]",null -stock_app_users,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""device_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""is_anonymous"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":3},{""column_name"":""display_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":5},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6}]",null -stock_basic,"[{""column_name"":""ts_code"",""data_type"":""character varying"",""character_maximum_length"":12,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""symbol"",""data_type"":""character varying"",""character_maximum_length"":12,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""area"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""industry"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""fullname"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""enname"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""market"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""exchange"",""data_type"":""character varying"",""character_maximum_length"":8,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""curr_type"",""data_type"":""character varying"",""character_maximum_length"":8,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""list_status"",""data_type"":""character varying"",""character_maximum_length"":2,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""list_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""delist_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""is_hs"",""data_type"":""character varying"",""character_maximum_length"":2,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""cnspell"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15},{""column_name"":""order"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""created_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":17},{""column_name"":""updated_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":18}]",null -stock_devices,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""app_user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""device_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""platform"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""model"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""system"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""app_version"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""last_seen_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",null -stock_entitlements,"[{""column_name"":""app_user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""plan_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""effective"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""expires_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -stock_namechange,"[{""column_name"":""id"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('stock_namechange_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""ts_code"",""data_type"":""character varying"",""character_maximum_length"":12,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""start_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""end_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""change_reason"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7}]",null -stock_orders,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""simulation_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""symbol"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""side"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""qty"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""price"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'created'::text"",""ordinal_position"":7},{""column_name"":""placed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8},{""column_name"":""executed_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""fee"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":10}]",null -stock_plans,"[{""column_name"":""id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""title"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""price_cents"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""interval"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""quotas"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6}]",null -stock_positions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""simulation_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""symbol"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""qty"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""avg_price"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":6}]",null -stock_simulation_results,"[{""column_name"":""simulation_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""final_cash"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""final_positions"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":3},{""column_name"":""total_pnl"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""total_fee"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""trades_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7}]",null -stock_simulations,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""app_user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""title"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""symbol"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""interval"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'1D'::text"",""ordinal_position"":5},{""column_name"":""start_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""end_date"",""data_type"":""date"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""initial_funds"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""100000.00"",""ordinal_position"":8},{""column_name"":""fee_rate"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0.0003"",""ordinal_position"":9},{""column_name"":""allow_t0"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":10},{""column_name"":""allow_short"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":11},{""column_name"":""hide_date"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""false"",""ordinal_position"":12},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":13},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'running'::text"",""ordinal_position"":14}]",null -stock_subscriptions,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""app_user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""plan_id"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""status"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""current_period_end"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""provider"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""provider_ref"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":8}]",null -stock_symbols,"[{""column_name"":""symbol"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""exchange"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""metadata"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4}]",null -stock_trades,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""order_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""simulation_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""symbol"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""qty"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""price"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""traded_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":7},{""column_name"":""fee"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":8}]",null -stock_usage_counters,"[{""column_name"":""app_user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""key"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""value"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":3},{""column_name"":""window_start"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""window_end"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5}]",null -system_dept,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":2},{""column_name"":""parent_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":3},{""column_name"":""sort"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""leader_user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""phone"",""data_type"":""character varying"",""character_maximum_length"":11,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":6},{""column_name"":""email"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":7},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":12},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""name_alias"",""data_type"":""character varying"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":15}]",部门表 -system_dict_data,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""sort"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":2},{""column_name"":""label"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":3},{""column_name"":""value"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":4},{""column_name"":""dict_type"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":5},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""color_type"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""css_class"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":9},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":13},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14}]",字典数据表 -system_dict_type,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":2},{""column_name"":""type"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":3},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":5},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""deleted_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11}]",字典类型表 -system_error_code,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""application_name"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""code"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""message"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""memo"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11}]",错误码表 -system_login_log,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""log_type"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""trace_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":3},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""user_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":5},{""column_name"":""username"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""result"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""user_ip"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""user_agent"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":13},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15}]",系统访问记录 -system_mail_account,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""mail"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""username"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""password"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""host"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""port"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""ssl_enable"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":7},{""column_name"":""starttls_enable"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":8},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":12},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13}]",邮箱账号表 -system_mail_log,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""to_mail"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""account_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""from_mail"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""template_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""template_code"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""template_nickname"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":9},{""column_name"":""template_title"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""template_content"",""data_type"":""character varying"",""character_maximum_length"":10240,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""template_params"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""send_status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13},{""column_name"":""send_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""send_message_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":15},{""column_name"":""send_exception"",""data_type"":""character varying"",""character_maximum_length"":4096,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":16},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":17},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":18},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":19},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":20},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":21}]",邮件日志表 -system_mail_template,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""account_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""nickname"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":5},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""content"",""data_type"":""character varying"",""character_maximum_length"":10240,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""params"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":10},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":12},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":13},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":14},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15}]",邮件模版表 -system_menu,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""permission"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":3},{""column_name"":""type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""sort"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":5},{""column_name"":""parent_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""path"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""icon"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""YES"",""column_default"":""'#'::character varying"",""ordinal_position"":8},{""column_name"":""component"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":9},{""column_name"":""component_name"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":10},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""visible"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""true"",""ordinal_position"":12},{""column_name"":""keep_alive"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""true"",""ordinal_position"":13},{""column_name"":""always_show"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""true"",""ordinal_position"":14},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":15},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":16},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":17},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":18},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":19}]",菜单权限表 -system_notice,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""title"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""content"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":5},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11}]",通知公告表 -system_notify_message,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""template_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""template_code"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""template_nickname"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""template_content"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""template_type"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""template_params"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""read_status"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""read_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":13},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":14},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":15},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":16},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":17}]",站内信消息表 -system_notify_template,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""nickname"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""content"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""params"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":7},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":9},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":13},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14}]",站内信模板表 -system_oauth2_access_token,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""user_info"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""access_token"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""refresh_token"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""client_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""scopes"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":8},{""column_name"":""expires_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":13},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15}]",OAuth2 访问令牌 -system_oauth2_approve,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""client_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""scope"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":5},{""column_name"":""approved"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""false"",""ordinal_position"":6},{""column_name"":""expires_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":12},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13}]",OAuth2 批准表 -system_oauth2_client,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""client_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""secret"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""logo"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":6},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""access_token_validity_seconds"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""refresh_token_validity_seconds"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""redirect_uris"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""authorized_grant_types"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""scopes"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":12},{""column_name"":""auto_approve_scopes"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":13},{""column_name"":""authorities"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":14},{""column_name"":""resource_ids"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":15},{""column_name"":""additional_information"",""data_type"":""character varying"",""character_maximum_length"":4096,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":16},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":17},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":18},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":19},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":20},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":21}]",OAuth2 客户端表 -system_oauth2_code,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""client_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""scopes"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""expires_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""redirect_uri"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":8},{""column_name"":""state"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":13},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15}]",OAuth2 授权码表 -system_oauth2_refresh_token,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""refresh_token"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""user_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""client_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""scopes"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":6},{""column_name"":""expires_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":12},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13}]",OAuth2 刷新令牌 -system_operate_log,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""trace_id"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""user_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":4},{""column_name"":""type"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""sub_type"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""biz_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""action"",""data_type"":""character varying"",""character_maximum_length"":2000,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""extra"",""data_type"":""character varying"",""character_maximum_length"":2000,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""request_method"",""data_type"":""character varying"",""character_maximum_length"":16,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""request_url"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""user_ip"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":12},{""column_name"":""user_agent"",""data_type"":""character varying"",""character_maximum_length"":200,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":13},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":14},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":15},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":16},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":17},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":18},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":19}]",操作日志记录 V2 版本 -system_post,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""sort"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":6},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":8},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":12}]",岗位信息表 -system_role,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""sort"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""data_scope"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""1"",""ordinal_position"":5},{""column_name"":""data_scope_dept_ids"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":9},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":13},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15}]",角色信息表 -system_role_menu,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""role_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""menu_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":4},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":5},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":9}]",角色和菜单关联表 -system_sensitive_word,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""tags"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":10}]",敏感词 -system_sms_channel,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""signature"",""data_type"":""character varying"",""character_maximum_length"":12,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":5},{""column_name"":""api_key"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""api_secret"",""data_type"":""character varying"",""character_maximum_length"":128,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":7},{""column_name"":""callback_url"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":8},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":12},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13}]",短信渠道 -system_sms_code,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""mobile"",""data_type"":""character varying"",""character_maximum_length"":11,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":6,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""create_ip"",""data_type"":""character varying"",""character_maximum_length"":15,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""scene"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""today_index"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""used"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""used_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""used_ip"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":9},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":10},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":11},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":13},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15}]",手机验证码 -system_sms_log,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""channel_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""channel_code"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""template_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""template_code"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""template_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""template_content"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""template_params"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""api_template_id"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""mobile"",""data_type"":""character varying"",""character_maximum_length"":11,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""user_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""send_status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13},{""column_name"":""send_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""api_send_code"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":15},{""column_name"":""api_send_msg"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":16},{""column_name"":""api_request_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":17},{""column_name"":""api_serial_no"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":18},{""column_name"":""receive_status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":19},{""column_name"":""receive_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""api_receive_code"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":21},{""column_name"":""api_receive_msg"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":22},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":23},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":24},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":25},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":26},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":27}]",短信日志 -system_sms_template,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""content"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""params"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":8},{""column_name"":""api_template_id"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""channel_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""channel_code"",""data_type"":""character varying"",""character_maximum_length"":63,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":11},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":12},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":13},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":14},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":15},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":16}]",短信模板 -system_social_client,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""social_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""user_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""client_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""client_secret"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""agent_id"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":7},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":12},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":14}]",社交客户端表 -system_social_user,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""openid"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""token"",""data_type"":""character varying"",""character_maximum_length"":256,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":4},{""column_name"":""raw_token_info"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""nickname"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""avatar"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":7},{""column_name"":""raw_user_info"",""data_type"":""character varying"",""character_maximum_length"":1024,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""code"",""data_type"":""character varying"",""character_maximum_length"":256,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""state"",""data_type"":""character varying"",""character_maximum_length"":256,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":10},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":12},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":13},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":14},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":16}]",社交用户表 -system_social_user_bind,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""social_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""social_user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11}]",社交绑定表 -system_tenant,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""contact_user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""contact_name"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""contact_mobile"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":5},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":6},{""column_name"":""website"",""data_type"":""character varying"",""character_maximum_length"":256,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""package_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""expire_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":9},{""column_name"":""account_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":12},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":13},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":14},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":15}]",租户表 -system_tenant_package,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":3},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":256,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":4},{""column_name"":""menu_ids"",""data_type"":""character varying"",""character_maximum_length"":4096,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":10}]",租户套餐表 -system_user_post,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":2},{""column_name"":""post_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":3},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":4},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":5},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":9}]",用户岗位表 -system_user_role,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""role_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":4},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":5},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":9}]",用户和角色关联表 -system_user_session,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""token"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""user_type"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""session_timeout"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""username"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""user_ip"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":7},{""column_name"":""user_agent"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":8},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":10},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":12},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":13},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":14}]",用户在线 Session -system_users,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""username"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""password"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":3},{""column_name"":""nickname"",""data_type"":""character varying"",""character_maximum_length"":30,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""remark"",""data_type"":""character varying"",""character_maximum_length"":500,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":5},{""column_name"":""dept_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""post_ids"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":7},{""column_name"":""email"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""mobile"",""data_type"":""character varying"",""character_maximum_length"":11,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""sex"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""avatar"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":11},{""column_name"":""status"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":12},{""column_name"":""login_ip"",""data_type"":""character varying"",""character_maximum_length"":50,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":13},{""column_name"":""login_date"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":15},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":16},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":17},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":18},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":19},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":20},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21}]",用户信息表 -training_stream_events,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""training_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""event_type"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""class_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""student_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""device_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""status"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""ack"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""metrics"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""payload"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""ingest_source"",""data_type"":""character varying"",""character_maximum_length"":32,""is_nullable"":""YES"",""column_default"":""'gateway'::character varying"",""ordinal_position"":11},{""column_name"":""ingest_note"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""recorded_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":13},{""column_name"":""ingested_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":14}]",课堂训练实时事件流,供 Supabase realtime 推送给教师端 -user_roles,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""gen_random_uuid()"",""ordinal_position"":1},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":2},{""column_name"":""role"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""class_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""school_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""department"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""permissions"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'{}'::jsonb"",""ordinal_position"":7},{""column_name"":""is_active"",""data_type"":""boolean"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""true"",""ordinal_position"":8},{""column_name"":""expires_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":10},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""now()"",""ordinal_position"":11},{""column_name"":""created_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""updated_by"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13}]",null -wearable_location_observations,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""nextval('wearable_location_observations_id_seq'::regclass)"",""ordinal_position"":1},{""column_name"":""snapshot_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""gateway_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""received_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4},{""column_name"":""gateway_time"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""rssi_dbm"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":6},{""column_name"":""snr_db"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""distance_m"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""channel"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""frequency_mhz"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""packet_sequence"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""latency_ms"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""firmware_version"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""payload"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":15}]",Raw 2.4G gateway readings contributing to a wearable location snapshot. -wearable_location_snapshots,"[{""column_name"":""id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""uuid_generate_v4()"",""ordinal_position"":1},{""column_name"":""device_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""user_id"",""data_type"":""uuid"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""estimated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":4},{""column_name"":""window_started_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""window_ended_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""latitude"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""longitude"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""altitude_m"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""coordinate_system"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""'WGS84'::text"",""ordinal_position"":10},{""column_name"":""uncertainty_radius_m"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""confidence"",""data_type"":""numeric"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12},{""column_name"":""method"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":13},{""column_name"":""algorithm_version"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":14},{""column_name"":""observation_count"",""data_type"":""integer"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":""0"",""ordinal_position"":15},{""column_name"":""campus_code"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":16},{""column_name"":""area_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":17},{""column_name"":""building_name"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":18},{""column_name"":""floor_label"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":19},{""column_name"":""room_label"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":20},{""column_name"":""observations"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":21},{""column_name"":""diagnostics"",""data_type"":""jsonb"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":22},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":23},{""column_name"":""updated_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":24}]",Estimated wearable locations derived from multi-gateway RSSI aggregation. -yudao_demo01_contact,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":2},{""column_name"":""sex"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""birthday"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""avatar"",""data_type"":""character varying"",""character_maximum_length"":512,""is_nullable"":""YES"",""column_default"":""NULL::character varying"",""ordinal_position"":6},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":8},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":9},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":10},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":12}]",示例联系人表 -yudao_demo02_category,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":2},{""column_name"":""parent_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":4},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":5},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":8},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":9}]",示例分类表 -yudao_demo03_course,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""student_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":3},{""column_name"":""score"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":5},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":6},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":8},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":10}]",学生课程表 -yudao_demo03_grade,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""student_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":2},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":3},{""column_name"":""teacher"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":5},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":6},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":7},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":8},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":9},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":10}]",学生班级表 -yudao_demo03_student,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""name"",""data_type"":""character varying"",""character_maximum_length"":100,""is_nullable"":""NO"",""column_default"":""''::character varying"",""ordinal_position"":2},{""column_name"":""sex"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":3},{""column_name"":""birthday"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":4},{""column_name"":""description"",""data_type"":""character varying"",""character_maximum_length"":255,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":5},{""column_name"":""creator"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":6},{""column_name"":""create_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":7},{""column_name"":""updater"",""data_type"":""character varying"",""character_maximum_length"":64,""is_nullable"":""YES"",""column_default"":""''::character varying"",""ordinal_position"":8},{""column_name"":""update_time"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""CURRENT_TIMESTAMP"",""ordinal_position"":9},{""column_name"":""deleted"",""data_type"":""smallint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":10},{""column_name"":""tenant_id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""0"",""ordinal_position"":11}]",学生表 -zp_face,"[{""column_name"":""id"",""data_type"":""bigint"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":null,""ordinal_position"":1},{""column_name"":""created_at"",""data_type"":""timestamp with time zone"",""character_maximum_length"":null,""is_nullable"":""NO"",""column_default"":""now()"",""ordinal_position"":2},{""column_name"":""imgurl"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":3},{""column_name"":""faceid"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":4},{""column_name"":""imgtime"",""data_type"":""timestamp without time zone"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":5},{""column_name"":""desc"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":6},{""column_name"":""cameraid"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":7},{""column_name"":""rtmpurl"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":8},{""column_name"":""description"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":9},{""column_name"":""videofile"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":10},{""column_name"":""videotime"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":11},{""column_name"":""faceimage"",""data_type"":""text"",""character_maximum_length"":null,""is_nullable"":""YES"",""column_default"":null,""ordinal_position"":12}]",zhipao face info \ No newline at end of file diff --git a/pages/mall/consumer/address-list.uvue b/pages/mall/consumer/address-list.uvue index 9938dd2a..b49d1790 100644 --- a/pages/mall/consumer/address-list.uvue +++ b/pages/mall/consumer/address-list.uvue @@ -21,7 +21,7 @@ 📝 - �️ + 🗑️ diff --git a/pages/mall/consumer/apply-refund.uvue b/pages/mall/consumer/apply-refund.uvue index af3c2306..656d76dd 100644 --- a/pages/mall/consumer/apply-refund.uvue +++ b/pages/mall/consumer/apply-refund.uvue @@ -57,7 +57,7 @@ - - \ No newline at end of file diff --git a/pages/mall/consumer/cart copy.uvue b/pages/mall/consumer/cart copy.uvue deleted file mode 100644 index c8506011..00000000 --- a/pages/mall/consumer/cart copy.uvue +++ /dev/null @@ -1,1435 +0,0 @@ - - - - - - diff --git a/pages/mall/consumer/cart.uvue b/pages/mall/consumer/cart.uvue index f0a56a63..4b4eb4ca 100644 --- a/pages/mall/consumer/cart.uvue +++ b/pages/mall/consumer/cart.uvue @@ -168,7 +168,7 @@ - - \ No newline at end of file diff --git a/pages/mall/consumer/category.uvue b/pages/mall/consumer/category.uvue index a26780fb..ac527d51 100644 --- a/pages/mall/consumer/category.uvue +++ b/pages/mall/consumer/category.uvue @@ -48,7 +48,12 @@ - + {{ currentCategoryName }} @@ -63,30 +68,29 @@ class="product-card" @click="navigateToProduct(product)" > - {{ product.badge }} + 热销 {{ product.name }} - {{ product.specification }} ¥ - {{ product.price }} + {{ product.base_price }} - - ¥{{ product.originalPrice }} + + ¥{{ product.market_price }} - {{ product.manufacturer }} + {{ product.brand_name || product.shop_name || '自营' }} - 已售{{ product.sales }} + 已售{{ product.sale_count }} @@ -123,6 +127,8 @@ const activePrimary = ref('') const cartCount = ref(3) const hasMore = ref(true) const hasLoadedFromParams = ref(false) // 标记是否已通过参数加载 +const currentPage = ref(1) +const loading = ref(false) // 获取当前分类信息 const currentCategoryName = ref('') @@ -166,17 +172,29 @@ const loadCategories = async () => { // 加载商品数据 const loadProducts = async () => { + if (loading.value) return + if (!activePrimary.value) { + console.warn('activePrimary为空,无法加载商品') + return + } + + loading.value = true try { - if (activePrimary.value) { - console.log('开始加载商品,分类ID:', activePrimary.value) - const response = await supabaseService.getProductsByCategory(activePrimary.value) + console.log('开始加载商品,分类ID:', activePrimary.value, '页码:', currentPage.value) + const response = await supabaseService.getProductsByCategory(activePrimary.value, currentPage.value) console.log('商品加载结果:', { dataCount: response.data.length, total: response.total, - hasmore: response.hasmore + hasmore: response.hasmore, + page: currentPage.value }) - productList.value = response.data + if (currentPage.value === 1) { + productList.value = response.data + } else { + productList.value.push(...response.data) + } + hasMore.value = response.hasmore // 更新当前分类信息 @@ -184,21 +202,27 @@ const loadProducts = async () => { if (category) { currentCategoryName.value = category.name currentCategoryDesc.value = category.description || '' - console.log('当前分类信息:', category.name, '描述:', category.description) - } else { - console.warn('未找到对应的分类信息,分类ID:', activePrimary.value) } - console.log('商品列表加载完成,数量:', productList.value.length) - } else { - console.warn('activePrimary为空,无法加载商品') - } + console.log('商品列表加载完成,当前总数量:', productList.value.length) } catch (error) { console.error('加载商品数据失败:', error) - productList.value = [] + if (currentPage.value === 1) { + productList.value = [] + } + } finally { + loading.value = false } } +// 加载更多 +const loadMore = () => { + if (hasMore.value && !loading.value) { + currentPage.value++ + loadProducts() + } +} + // 页面加载时处理参数 - 这是处理分类切换的主要入口 onLoad((options: any) => { console.log('=== category页面onLoad被调用 ===') @@ -382,15 +406,15 @@ const selectPrimaryCategory = async (categoryId: string) => { console.log('准备加载商品数据...') - // 加载对应商品 - 使用 Supabase 服务 - const response = await supabaseService.getProductsByCategory(categoryId) - productList.value = response.data - hasMore.value = response.hasmore + // 重置分页并加载 + currentPage.value = 1 + hasMore.value = true + await loadProducts() console.log('✅ 加载商品数据成功') console.log('分类:', categoryId) - console.log('商品数量:', response.data.length) - console.log('商品列表:', response.data) + console.log('商品数量:', productList.value.length) + console.log('商品列表:', productList.value) // 验证数据是否已正确更新 console.log('数据更新验证:') @@ -403,55 +427,42 @@ const selectPrimaryCategory = async (categoryId: string) => { } // 添加到购物车 -const addToCart = (product: any) => { - // 获取现有购物车数据 - const cartData = uni.getStorageSync('cart') - let cartItems: any[] = [] - - if (cartData) { - try { - cartItems = JSON.parse(cartData as string) as any[] - } catch (e) { - console.error('解析购物车数据失败', e) +const addToCart = async (product: any) => { + uni.showLoading({ title: '添加中...' }) + try { + const success = await supabaseService.addToCart(product.id, 1) + if (success) { + uni.showToast({ + title: '已添加到购物车', + icon: 'success' + }) + cartCount.value++ + } else { + uni.showToast({ + title: '添加失败,请先登录', + icon: 'none' + }) } + } catch (e) { + console.error('添加到购物车异常', e) + uni.showToast({ title: '操作失败', icon: 'none' }) + } finally { + uni.hideLoading() } - - // 检查商品是否已存在 - const existingItem = cartItems.find((item: any) => item.id === product.id) - - if (existingItem) { - existingItem.quantity++ - } else { - // 添加新商品 - cartItems.push({ - id: product.id, - shopId: product.shopId || 'shop_default', - shopName: product.shopName || product.manufacturer || '自营店铺', - name: product.name, - price: product.price, - image: product.image, - spec: product.specification || '默认规格', - quantity: 1, - selected: true - }) - } - - // 保存回存储 - uni.setStorageSync('cart', JSON.stringify(cartItems)) - - uni.showToast({ - title: '已添加到购物车', - icon: 'success' - }) - cartCount.value++ } // 导航函数 const navigateToSearch = () => uni.navigateTo({ url: '/pages/mall/consumer/search' }) -const navigateToCart = () => uni.navigateTo({ url: '/pages/medicine/cart' }) +const navigateToCart = () => uni.navigateTo({ url: '/pages/mall/consumer/cart' }) const navigateToProduct = (product: any) => { + const id = product.id + const price = (product.base_price || 0).toString() + const originalPrice = (product.market_price || '').toString() + const name = encodeURIComponent(product.name || '') + const image = encodeURIComponent(product.main_image_url || '') + uni.navigateTo({ - url: `/pages/mall/consumer/product-detail?productId=${product.id}&price=${product.price}&originalPrice=${product.originalPrice || ''}&name=${encodeURIComponent(product.name)}&image=${encodeURIComponent(product.image || '')}` + url: `/pages/mall/consumer/product-detail?id=${id}&productId=${id}&price=${price}&originalPrice=${originalPrice}&name=${name}&image=${image}` }) } diff --git a/pages/mall/consumer/categorygood.uvue b/pages/mall/consumer/categorygood.uvue deleted file mode 100644 index b46448fc..00000000 --- a/pages/mall/consumer/categorygood.uvue +++ /dev/null @@ -1,1159 +0,0 @@ - - - - - - diff --git a/pages/mall/consumer/category完成分类及商品数据获取.uvue b/pages/mall/consumer/category完成分类及商品数据获取.uvue deleted file mode 100644 index 897375f2..00000000 --- a/pages/mall/consumer/category完成分类及商品数据获取.uvue +++ /dev/null @@ -1,1131 +0,0 @@ - - - - - diff --git a/pages/mall/consumer/chat.uvue b/pages/mall/consumer/chat.uvue index 16c2fafc..0ab769f1 100644 --- a/pages/mall/consumer/chat.uvue +++ b/pages/mall/consumer/chat.uvue @@ -120,6 +120,7 @@ - - diff --git a/pages/mall/consumer/checkout copy.uvue b/pages/mall/consumer/checkout copy.uvue deleted file mode 100644 index 7318fbf1..00000000 --- a/pages/mall/consumer/checkout copy.uvue +++ /dev/null @@ -1,1730 +0,0 @@ - -