Add AI DEV Node deployment foundation
This commit is contained in:
106
migrations/001_init.sql
Normal file
106
migrations/001_init.sql
Normal file
@@ -0,0 +1,106 @@
|
||||
-- Ported from backend/src/main/resources/db/migration/V1__init.sql
|
||||
|
||||
CREATE TABLE users (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
updated_at TIMESTAMP NOT NULL,
|
||||
username VARCHAR(50) NOT NULL UNIQUE,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
full_name VARCHAR(80) NOT NULL,
|
||||
email VARCHAR(120),
|
||||
department VARCHAR(80),
|
||||
must_change_password BOOLEAN NOT NULL,
|
||||
enabled BOOLEAN NOT NULL,
|
||||
locked BOOLEAN NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE user_roles (
|
||||
user_id BIGINT NOT NULL REFERENCES users (id),
|
||||
role VARCHAR(20) NOT NULL
|
||||
);
|
||||
CREATE INDEX idx_user_roles_user ON user_roles (user_id);
|
||||
|
||||
CREATE TABLE zones (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
updated_at TIMESTAMP NOT NULL,
|
||||
code VARCHAR(30) NOT NULL UNIQUE,
|
||||
name VARCHAR(80) NOT NULL,
|
||||
description VARCHAR(255),
|
||||
security_level INTEGER NOT NULL,
|
||||
active BOOLEAN NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE visitors (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
updated_at TIMESTAMP NOT NULL,
|
||||
name VARCHAR(80) NOT NULL,
|
||||
company VARCHAR(120),
|
||||
contact VARCHAR(40),
|
||||
email VARCHAR(120),
|
||||
vehicle_no VARCHAR(20)
|
||||
);
|
||||
CREATE INDEX idx_visitor_name ON visitors (name);
|
||||
CREATE INDEX idx_visitor_contact ON visitors (contact);
|
||||
|
||||
CREATE TABLE visit_requests (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
updated_at TIMESTAMP NOT NULL,
|
||||
visitor_id BIGINT NOT NULL REFERENCES visitors (id),
|
||||
host_id BIGINT NOT NULL REFERENCES users (id),
|
||||
zone_name VARCHAR(80),
|
||||
purpose VARCHAR(255) NOT NULL,
|
||||
visit_from TIMESTAMP NOT NULL,
|
||||
visit_to TIMESTAMP NOT NULL,
|
||||
status VARCHAR(20) NOT NULL,
|
||||
qr_token VARCHAR(64)
|
||||
);
|
||||
CREATE INDEX idx_vr_status ON visit_requests (status);
|
||||
CREATE INDEX idx_vr_visit_from ON visit_requests (visit_from);
|
||||
CREATE INDEX idx_vr_qr_token ON visit_requests (qr_token);
|
||||
|
||||
CREATE TABLE approvals (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
updated_at TIMESTAMP NOT NULL,
|
||||
visit_request_id BIGINT NOT NULL REFERENCES visit_requests (id),
|
||||
approver_id BIGINT NOT NULL REFERENCES users (id),
|
||||
decision VARCHAR(20) NOT NULL,
|
||||
comment VARCHAR(500),
|
||||
decided_at TIMESTAMP NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE access_events (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
updated_at TIMESTAMP NOT NULL,
|
||||
visit_request_id BIGINT NOT NULL REFERENCES visit_requests (id),
|
||||
direction VARCHAR(8) NOT NULL,
|
||||
gate_id VARCHAR(40),
|
||||
operator_id BIGINT REFERENCES users (id),
|
||||
event_at TIMESTAMP NOT NULL
|
||||
);
|
||||
CREATE INDEX idx_ae_visit_request ON access_events (visit_request_id);
|
||||
CREATE INDEX idx_ae_event_at ON access_events (event_at);
|
||||
CREATE INDEX idx_ae_direction ON access_events (direction);
|
||||
|
||||
CREATE TABLE blacklist (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
updated_at TIMESTAMP NOT NULL,
|
||||
name VARCHAR(80) NOT NULL,
|
||||
company VARCHAR(120),
|
||||
contact VARCHAR(40),
|
||||
reason VARCHAR(255) NOT NULL,
|
||||
active BOOLEAN NOT NULL,
|
||||
created_by BIGINT REFERENCES users (id)
|
||||
);
|
||||
CREATE INDEX idx_bl_name ON blacklist (name);
|
||||
CREATE INDEX idx_bl_contact ON blacklist (contact);
|
||||
|
||||
INSERT INTO zones (created_at, updated_at, code, name, description, security_level, active) VALUES
|
||||
(now(), now(), 'LOBBY', '로비', NULL, 1, TRUE),
|
||||
(now(), now(), 'OFFICE', '사무공간', NULL, 2, TRUE),
|
||||
(now(), now(), 'SERVER_ROOM', '전산실', NULL, 3, TRUE);
|
||||
15
migrations/002_audit_log.sql
Normal file
15
migrations/002_audit_log.sql
Normal file
@@ -0,0 +1,15 @@
|
||||
-- Ported from backend/src/main/resources/db/migration/V2__audit_log.sql
|
||||
|
||||
CREATE TABLE audit_logs (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
updated_at TIMESTAMP NOT NULL,
|
||||
actor_id BIGINT,
|
||||
actor_username VARCHAR(50),
|
||||
action VARCHAR(30) NOT NULL,
|
||||
target_type VARCHAR(30),
|
||||
target_id BIGINT,
|
||||
detail VARCHAR(500)
|
||||
);
|
||||
CREATE INDEX idx_audit_created_at ON audit_logs (created_at);
|
||||
CREATE INDEX idx_audit_action ON audit_logs (action);
|
||||
15
migrations/003_pass_delivery.sql
Normal file
15
migrations/003_pass_delivery.sql
Normal file
@@ -0,0 +1,15 @@
|
||||
-- Ported from backend/src/main/resources/db/migration/V3__pass_delivery.sql
|
||||
|
||||
CREATE TABLE pass_deliveries (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
updated_at TIMESTAMP NOT NULL,
|
||||
visit_request_id BIGINT NOT NULL,
|
||||
channel VARCHAR(20),
|
||||
recipient VARCHAR(120),
|
||||
status VARCHAR(20) NOT NULL,
|
||||
attempts INTEGER NOT NULL,
|
||||
last_error VARCHAR(500)
|
||||
);
|
||||
CREATE INDEX idx_pd_status ON pass_deliveries (status);
|
||||
CREATE INDEX idx_pd_visit_request ON pass_deliveries (visit_request_id);
|
||||
12
migrations/004_visit_request_contact_fields.sql
Normal file
12
migrations/004_visit_request_contact_fields.sql
Normal file
@@ -0,0 +1,12 @@
|
||||
-- Ported from backend/src/main/resources/db/migration/V4__visit_request_contact_fields.sql
|
||||
|
||||
ALTER TABLE visit_requests ADD COLUMN work_name VARCHAR(255);
|
||||
ALTER TABLE visit_requests ADD COLUMN control_name VARCHAR(80);
|
||||
ALTER TABLE visit_requests ADD COLUMN control_team VARCHAR(80);
|
||||
ALTER TABLE visit_requests ADD COLUMN control_contact VARCHAR(60);
|
||||
ALTER TABLE visit_requests ADD COLUMN watcher1_name VARCHAR(80);
|
||||
ALTER TABLE visit_requests ADD COLUMN watcher1_team VARCHAR(80);
|
||||
ALTER TABLE visit_requests ADD COLUMN watcher1_contact VARCHAR(60);
|
||||
ALTER TABLE visit_requests ADD COLUMN watcher2_name VARCHAR(80);
|
||||
ALTER TABLE visit_requests ADD COLUMN watcher2_team VARCHAR(80);
|
||||
ALTER TABLE visit_requests ADD COLUMN watcher2_contact VARCHAR(60);
|
||||
Reference in New Issue
Block a user