40 lines
2.0 KiB
MySQL
40 lines
2.0 KiB
MySQL
|
|
-- Phase 2: 腾讯云 / 订阅型套餐价格模型
|
|||
|
|
|
|||
|
|
CREATE TABLE IF NOT EXISTS subscription_plan (
|
|||
|
|
id BIGSERIAL PRIMARY KEY,
|
|||
|
|
provider_id BIGINT NOT NULL REFERENCES model_provider(id) ON DELETE CASCADE,
|
|||
|
|
operator_id BIGINT REFERENCES operator(id) ON DELETE SET NULL,
|
|||
|
|
plan_family TEXT NOT NULL CHECK (plan_family IN ('token_plan', 'coding_plan')),
|
|||
|
|
plan_code TEXT NOT NULL,
|
|||
|
|
plan_name TEXT NOT NULL,
|
|||
|
|
tier TEXT NOT NULL,
|
|||
|
|
billing_cycle TEXT NOT NULL DEFAULT 'monthly',
|
|||
|
|
currency TEXT NOT NULL DEFAULT 'CNY',
|
|||
|
|
list_price REAL NOT NULL CHECK (list_price >= 0),
|
|||
|
|
price_unit TEXT NOT NULL,
|
|||
|
|
quota_value BIGINT,
|
|||
|
|
quota_unit TEXT,
|
|||
|
|
context_window INTEGER,
|
|||
|
|
plan_scope TEXT,
|
|||
|
|
model_scope TEXT NOT NULL DEFAULT '[]',
|
|||
|
|
source_url TEXT NOT NULL,
|
|||
|
|
published_at TIMESTAMP,
|
|||
|
|
effective_date DATE NOT NULL DEFAULT CURRENT_DATE,
|
|||
|
|
notes TEXT,
|
|||
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
created_by TEXT DEFAULT 'system',
|
|||
|
|
updated_by TEXT DEFAULT 'system',
|
|||
|
|
UNIQUE (provider_id, plan_code, effective_date),
|
|||
|
|
CONSTRAINT chk_subscription_plan_currency CHECK (currency IN ('CNY', 'USD', 'EUR')),
|
|||
|
|
CONSTRAINT chk_subscription_plan_quota_non_negative CHECK (quota_value IS NULL OR quota_value >= 0),
|
|||
|
|
CONSTRAINT chk_subscription_plan_context_non_negative CHECK (context_window IS NULL OR context_window >= 0)
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_subscription_plan_provider_id ON subscription_plan(provider_id);
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_subscription_plan_operator_id ON subscription_plan(operator_id);
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_subscription_plan_family ON subscription_plan(plan_family);
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_subscription_plan_effective_date ON subscription_plan(effective_date);
|
|||
|
|
|
|||
|
|
COMMENT ON TABLE subscription_plan IS '订阅型套餐价格信息(如腾讯云 Token Plan / Coding Plan)';
|