Files
water-management-system/db/postgresql/V4__issue_6_enhancements.sql
T

65 lines
2.8 KiB
SQL

-- =============================================
-- 智慧水务管理系统 - 营收管理平台与报装管理系统增强
-- 版本: V4 (Issue #6)
-- =============================================
-- 平台运维审计日志
CREATE TABLE IF NOT EXISTS rev_audit_log (
id BIGSERIAL PRIMARY KEY,
user_id VARCHAR(50) NOT NULL,
user_name VARCHAR(100) NOT NULL,
action VARCHAR(50) NOT NULL, -- CREATE/UPDATE/DELETE/LOGIN/EXPORT
target_type VARCHAR(50), -- customer/meter/bill/app
target_id VARCHAR(50),
detail TEXT,
ip VARCHAR(50),
created_at TIMESTAMP DEFAULT NOW()
);
COMMENT ON TABLE rev_audit_log IS '平台运维审计日志表';
CREATE INDEX IF NOT EXISTS idx_audit_user ON rev_audit_log(user_id);
CREATE INDEX IF NOT EXISTS idx_audit_action ON rev_audit_log(action);
CREATE INDEX IF NOT EXISTS idx_audit_created ON rev_audit_log(created_at);
-- 应用接入注册表
CREATE TABLE IF NOT EXISTS rev_app_registry (
id BIGSERIAL PRIMARY KEY,
app_id VARCHAR(50) UNIQUE NOT NULL,
app_secret VARCHAR(100) NOT NULL,
app_name VARCHAR(100) NOT NULL,
redirect_uris TEXT, -- JSON array of redirect URIs
enabled SMALLINT DEFAULT 1, -- 0:disabled 1:enabled
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
COMMENT ON TABLE rev_app_registry IS '应用接入注册表';
CREATE INDEX IF NOT EXISTS idx_app_enabled ON rev_app_registry(enabled);
-- 报装任务表
CREATE TABLE IF NOT EXISTS rev_install_task (
id BIGSERIAL PRIMARY KEY,
task_id VARCHAR(50) UNIQUE NOT NULL,
apply_no VARCHAR(50) NOT NULL,
task_type VARCHAR(50) NOT NULL, -- design/construction/inspection
assignee_id BIGINT,
assignee_name VARCHAR(100),
description TEXT,
status VARCHAR(20) DEFAULT 'pending', -- pending/in_progress/completed/cancelled
remark TEXT,
completed_at TIMESTAMP,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
COMMENT ON TABLE rev_install_task IS '报装任务表';
CREATE INDEX IF NOT EXISTS idx_task_apply ON rev_install_task(apply_no);
CREATE INDEX IF NOT EXISTS idx_task_assignee ON rev_install_task(assignee_id);
CREATE INDEX IF NOT EXISTS idx_task_status ON rev_install_task(status);
-- 增强报装表(添加缺失的时间戳字段)
ALTER TABLE rev_installation ADD COLUMN IF NOT EXISTS dispatched_at TIMESTAMP;
ALTER TABLE rev_installation ADD COLUMN IF NOT EXISTS construction_started_at TIMESTAMP;
ALTER TABLE rev_installation ADD COLUMN IF NOT EXISTS customer_type VARCHAR(20);
COMMENT ON COLUMN rev_installation.dispatched_at IS '派单时间';
COMMENT ON COLUMN rev_installation.construction_started_at IS '施工开始时间';
COMMENT ON COLUMN rev_installation.customer_type IS '客户类型';