feat: add Node ACS admin workflows

This commit is contained in:
unknown
2026-07-16 11:00:09 +09:00
parent a25872394a
commit c6f342a861
24 changed files with 3442 additions and 266 deletions

View File

@@ -0,0 +1,49 @@
CREATE TABLE IF NOT EXISTS purpose_codes (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
created_at TIMESTAMP NOT NULL DEFAULT now(),
updated_at TIMESTAMP NOT NULL DEFAULT now(),
code VARCHAR(40) NOT NULL UNIQUE,
name VARCHAR(80) NOT NULL,
sort_order INTEGER NOT NULL,
active BOOLEAN NOT NULL,
custom_allowed BOOLEAN NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_purpose_code_active_sort ON purpose_codes (active, sort_order);
CREATE TABLE IF NOT EXISTS system_settings (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
created_at TIMESTAMP NOT NULL DEFAULT now(),
updated_at TIMESTAMP NOT NULL DEFAULT now(),
setting_key VARCHAR(80) NOT NULL UNIQUE,
setting_value VARCHAR(255)
);
ALTER TABLE visit_requests ADD COLUMN IF NOT EXISTS work_name VARCHAR(255);
ALTER TABLE visit_requests ADD COLUMN IF NOT EXISTS control_name VARCHAR(80);
ALTER TABLE visit_requests ADD COLUMN IF NOT EXISTS control_team VARCHAR(80);
ALTER TABLE visit_requests ADD COLUMN IF NOT EXISTS control_contact VARCHAR(60);
ALTER TABLE visit_requests ADD COLUMN IF NOT EXISTS watcher1_name VARCHAR(80);
ALTER TABLE visit_requests ADD COLUMN IF NOT EXISTS watcher1_team VARCHAR(80);
ALTER TABLE visit_requests ADD COLUMN IF NOT EXISTS watcher1_contact VARCHAR(60);
ALTER TABLE visit_requests ADD COLUMN IF NOT EXISTS watcher2_name VARCHAR(80);
ALTER TABLE visit_requests ADD COLUMN IF NOT EXISTS watcher2_team VARCHAR(80);
ALTER TABLE visit_requests ADD COLUMN IF NOT EXISTS watcher2_contact VARCHAR(60);
ALTER TABLE visit_requests ADD COLUMN IF NOT EXISTS purpose_code VARCHAR(40);
ALTER TABLE visit_requests ADD COLUMN IF NOT EXISTS purpose_detail VARCHAR(255);
INSERT INTO purpose_codes (created_at, updated_at, code, name, sort_order, active, custom_allowed)
VALUES
(now(), now(), 'WORK', '작업', 10, TRUE, FALSE),
(now(), now(), 'INSPECTION', '점검', 20, TRUE, FALSE),
(now(), now(), 'DELIVERY', '납품', 30, TRUE, FALSE),
(now(), now(), 'MEETING', '회의', 40, TRUE, FALSE),
(now(), now(), 'VISIT', '방문', 50, TRUE, FALSE),
(now(), now(), 'ETC', '기타', 100, TRUE, TRUE)
ON CONFLICT (code) DO NOTHING;
INSERT INTO system_settings (created_at, updated_at, setting_key, setting_value)
VALUES
(now(), now(), 'watcher1.name', '류관순'),
(now(), now(), 'watcher1.team', 'IT전략국'),
(now(), now(), 'watcher1.contact', '313')
ON CONFLICT (setting_key) DO NOTHING;

43
migrations/007_teams.sql Normal file
View File

@@ -0,0 +1,43 @@
CREATE TABLE IF NOT EXISTS teams (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
created_at TIMESTAMP NOT NULL DEFAULT now(),
updated_at TIMESTAMP NOT NULL DEFAULT now(),
code VARCHAR(40) NOT NULL UNIQUE,
name VARCHAR(80) NOT NULL UNIQUE,
active BOOLEAN NOT NULL
);
CREATE TABLE IF NOT EXISTS team_default_roles (
team_id BIGINT NOT NULL REFERENCES teams (id) ON DELETE CASCADE,
role VARCHAR(20) NOT NULL,
PRIMARY KEY (team_id, role)
);
ALTER TABLE users ADD COLUMN IF NOT EXISTS team_id BIGINT REFERENCES teams (id);
INSERT INTO teams (created_at, updated_at, code, name, active)
VALUES
(now(), now(), 'ITOPS', 'IT운영팀', TRUE),
(now(), now(), 'DEV1', '개발1팀', TRUE),
(now(), now(), 'SEC', '보안팀', TRUE)
ON CONFLICT (code) DO UPDATE
SET name = EXCLUDED.name,
active = EXCLUDED.active,
updated_at = now();
INSERT INTO team_default_roles (team_id, role)
SELECT id, 'ADMIN' FROM teams WHERE code = 'ITOPS'
ON CONFLICT DO NOTHING;
INSERT INTO team_default_roles (team_id, role)
SELECT id, 'HOST' FROM teams WHERE code = 'DEV1'
ON CONFLICT DO NOTHING;
INSERT INTO team_default_roles (team_id, role)
SELECT id, 'SECURITY' FROM teams WHERE code = 'SEC'
ON CONFLICT DO NOTHING;
UPDATE users SET team_id = (SELECT id FROM teams WHERE code = 'ITOPS'), department = 'IT운영팀'
WHERE username IN ('admin', 'a') AND team_id IS NULL;
UPDATE users SET team_id = (SELECT id FROM teams WHERE code = 'DEV1'), department = '개발1팀'
WHERE username IN ('host', 'h') AND team_id IS NULL;
UPDATE users SET team_id = (SELECT id FROM teams WHERE code = 'SEC'), department = '보안팀'
WHERE username IN ('security', 's') AND team_id IS NULL;