Files
team-api/migrations/000006_v0_1_6_version.sql
2026-06-04 21:51:08 +08:00

143 lines
6.6 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- +goose Up
-- v0.1.6 变更汇总:
-- 1. 创建 sys_cron_jobs 定时任务注册表
-- 2. 删除 sys_cron_job_executions 旧表(改为单表管理)
-- 3. 删除未使用的表:plg_example_logs、bil_daily/weekly/monthly_summary 系列
-- 4. 修正 ord_orders.currency 默认值 USD→CNY,回填历史数据
-- 1. 创建定时任务注册表
CREATE TABLE sys_cron_jobs (
id BIGSERIAL PRIMARY KEY,
job_name VARCHAR(100) NOT NULL,
schedule VARCHAR(50) NOT NULL DEFAULT '',
last_status VARCHAR(20),
last_started_at TIMESTAMPTZ,
last_finished_at TIMESTAMPTZ,
last_duration_ms INTEGER,
last_error_message TEXT,
last_triggered_by VARCHAR(20),
total_runs INTEGER NOT NULL DEFAULT 0,
total_failures INTEGER NOT NULL DEFAULT 0,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
COMMENT ON TABLE sys_cron_jobs IS '定时任务注册表';
COMMENT ON COLUMN sys_cron_jobs.job_name IS '任务名称(代码中定义的唯一标识)';
COMMENT ON COLUMN sys_cron_jobs.schedule IS 'cron 表达式';
COMMENT ON COLUMN sys_cron_jobs.last_status IS '最近一次执行状态:succeeded/failed';
COMMENT ON COLUMN sys_cron_jobs.last_started_at IS '最近一次开始执行时间';
COMMENT ON COLUMN sys_cron_jobs.last_finished_at IS '最近一次执行完成时间';
COMMENT ON COLUMN sys_cron_jobs.last_duration_ms IS '最近一次执行耗时(毫秒)';
COMMENT ON COLUMN sys_cron_jobs.last_error_message IS '最近一次错误信息(仅失败时有值)';
COMMENT ON COLUMN sys_cron_jobs.last_triggered_by IS '最近一次触发方式:auto/manual';
COMMENT ON COLUMN sys_cron_jobs.total_runs IS '累计执行次数';
COMMENT ON COLUMN sys_cron_jobs.total_failures IS '累计失败次数';
CREATE UNIQUE INDEX uk_sys_cron_jobs_name ON sys_cron_jobs (job_name);
-- 2. 删除旧的定时任务执行日志表
DROP TABLE IF EXISTS sys_cron_job_executions;
-- 3. 删除未使用的表
DROP TABLE IF EXISTS plg_example_logs;
DROP TABLE IF EXISTS bil_daily_usage_summary;
DROP TABLE IF EXISTS bil_daily_revenue_summary;
DROP TABLE IF EXISTS bil_monthly_usage_summary;
DROP TABLE IF EXISTS bil_monthly_revenue_summary;
-- 4. 修正订单层币种默认值:USD -> CNY
ALTER TABLE ord_orders ALTER COLUMN currency SET DEFAULT 'CNY';
COMMENT ON COLUMN ord_orders.currency IS '货币(订单层一律 CNY)';
UPDATE ord_orders SET currency = 'CNY' WHERE currency = 'USD';
-- +goose Down
-- 回滚顺序与 Up 相反
-- 4. 恢复 ord_orders.currency 默认值
ALTER TABLE ord_orders ALTER COLUMN currency SET DEFAULT 'USD';
COMMENT ON COLUMN ord_orders.currency IS '货币';
-- 3. 重建被删除的未使用表
CREATE TABLE plg_example_logs (
id BIGSERIAL PRIMARY KEY,
plugin_name VARCHAR(100) NOT NULL,
tenant_id BIGINT,
message TEXT,
level VARCHAR(20) DEFAULT 'info',
created_at TIMESTAMPTZ DEFAULT now() NOT NULL,
updated_at TIMESTAMPTZ DEFAULT now() NOT NULL
);
COMMENT ON TABLE plg_example_logs IS '插件示例日志表(已废弃)';
CREATE TABLE bil_daily_usage_summary (
id BIGSERIAL PRIMARY KEY,
tenant_id BIGINT NOT NULL,
date DATE NOT NULL,
total_requests INT NOT NULL DEFAULT 0,
total_tokens BIGINT NOT NULL DEFAULT 0,
total_cost NUMERIC(20,10) NOT NULL DEFAULT 0,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CONSTRAINT uk_bil_daily_usage_summary UNIQUE (tenant_id, date)
);
COMMENT ON TABLE bil_daily_usage_summary IS '每日用量汇总(已废弃)';
CREATE TABLE bil_daily_revenue_summary (
id BIGSERIAL PRIMARY KEY,
date DATE NOT NULL,
total_recharge NUMERIC(20,10) NOT NULL DEFAULT 0,
total_consumption NUMERIC(20,10) NOT NULL DEFAULT 0,
net_revenue NUMERIC(20,10) NOT NULL DEFAULT 0,
new_orders INT NOT NULL DEFAULT 0,
paid_orders INT NOT NULL DEFAULT 0,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CONSTRAINT uk_bil_daily_revenue_summary UNIQUE (date)
);
COMMENT ON TABLE bil_daily_revenue_summary IS '每日收入汇总(已废弃)';
CREATE TABLE bil_monthly_usage_summary (
id BIGSERIAL PRIMARY KEY,
tenant_id BIGINT NOT NULL,
month DATE NOT NULL,
total_requests INT NOT NULL DEFAULT 0,
total_tokens BIGINT NOT NULL DEFAULT 0,
total_cost NUMERIC(20,10) NOT NULL DEFAULT 0,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CONSTRAINT uk_bil_monthly_usage_summary UNIQUE (tenant_id, month)
);
COMMENT ON TABLE bil_monthly_usage_summary IS '每月用量汇总(已废弃)';
CREATE TABLE bil_monthly_revenue_summary (
id BIGSERIAL PRIMARY KEY,
month DATE NOT NULL,
total_recharge NUMERIC(20,10) NOT NULL DEFAULT 0,
total_consumption NUMERIC(20,10) NOT NULL DEFAULT 0,
net_revenue NUMERIC(20,10) NOT NULL DEFAULT 0,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CONSTRAINT uk_bil_monthly_revenue_summary UNIQUE (month)
);
COMMENT ON TABLE bil_monthly_revenue_summary IS '每月收入汇总(已废弃)';
-- 2. 重建 sys_cron_job_executions 表
CREATE TABLE sys_cron_job_executions (
id BIGSERIAL PRIMARY KEY,
job_name VARCHAR(100) NOT NULL,
status VARCHAR(20) NOT NULL,
started_at TIMESTAMPTZ NOT NULL,
finished_at TIMESTAMPTZ NOT NULL,
duration_ms INTEGER NOT NULL,
error_message TEXT,
triggered_by VARCHAR(20) NOT NULL DEFAULT 'auto',
created_at TIMESTAMPTZ DEFAULT now() NOT NULL,
updated_at TIMESTAMPTZ DEFAULT now() NOT NULL
);
CREATE INDEX idx_sys_cron_job_exec_name_time ON sys_cron_job_executions (job_name, created_at DESC);
CREATE INDEX idx_sys_cron_job_exec_created_brin ON sys_cron_job_executions USING BRIN (created_at);
-- 1. 删除 sys_cron_jobs 表
DROP TABLE IF EXISTS sys_cron_jobs;