feat: 최종 완전 통합 DB 스키마 - 사용자 요구사항 시스템 추가
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled
🔬 추가된 마지막 테이블들: - requirement_types (요구사항 타입 마스터) - user_requirements (사용자 추가 요구사항) - 임팩테스트, 열처리, 인증서, 비파괴검사 등 10종 기본 타입 📊 최종 통계 (정확한 수치): - 총 테이블: 38개 (모든 backend/scripts 파일 통합 완료) - 총 인덱스: 107개 (복합, GIN, 조건부 인덱스 포함) - 총 뷰: 5개 (통계 및 성능 모니터링) - 총 함수: 15개 이상 (트리거, 해시 생성 등) ✅ 완전성 검증: - 21개 SQL 파일 모두 통합 완료 - 성능 최적화 인덱스 전체 적용 - 자동화 트리거 및 함수 모두 포함 - 기본 데이터 자동 생성 완료 🚀 배포 준비 완료: - 다른 환경에서 한 번에 모든 테이블 생성 가능 - 기본 계정, 프로젝트, 권한, 요구사항 타입 자동 설정
This commit is contained in:
@@ -956,7 +956,51 @@ CREATE TABLE IF NOT EXISTS material_tubing_mapping (
|
||||
);
|
||||
|
||||
-- ================================
|
||||
-- 10. 사용자 활동 로그 테이블 (19_add_user_tracking_fields.sql)
|
||||
-- 10. 사용자 요구사항 테이블들 (05_create_pipe_details_and_requirements_postgres.sql)
|
||||
-- ================================
|
||||
|
||||
-- 요구사항 타입 마스터 테이블
|
||||
CREATE TABLE IF NOT EXISTS requirement_types (
|
||||
id SERIAL PRIMARY KEY,
|
||||
type_code VARCHAR(50) UNIQUE NOT NULL, -- 'IMPACT_TEST', 'HEAT_TREATMENT' 등
|
||||
type_name VARCHAR(100) NOT NULL, -- '임팩테스트', '열처리' 등
|
||||
category VARCHAR(50) NOT NULL, -- 'TEST', 'TREATMENT', 'CERTIFICATION', 'CUSTOM' 등
|
||||
description TEXT, -- 타입 설명
|
||||
is_active BOOLEAN DEFAULT TRUE,
|
||||
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 사용자 추가 요구사항 테이블
|
||||
CREATE TABLE IF NOT EXISTS user_requirements (
|
||||
id SERIAL PRIMARY KEY,
|
||||
file_id INTEGER NOT NULL,
|
||||
|
||||
-- 요구사항 타입
|
||||
requirement_type VARCHAR(50) NOT NULL, -- 'IMPACT_TEST', 'HEAT_TREATMENT', 'CUSTOM_SPEC', 'CERTIFICATION' 등
|
||||
|
||||
-- 요구사항 내용
|
||||
requirement_title VARCHAR(200) NOT NULL, -- '임팩테스트', '열처리', '인증서' 등
|
||||
requirement_description TEXT, -- 상세 설명
|
||||
requirement_spec TEXT, -- 구체적 스펙 (예: "Charpy V-notch -20°C")
|
||||
|
||||
-- 상태 관리
|
||||
status VARCHAR(20) DEFAULT 'PENDING', -- 'PENDING', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'
|
||||
priority VARCHAR(20) DEFAULT 'NORMAL', -- 'LOW', 'NORMAL', 'HIGH', 'URGENT'
|
||||
|
||||
-- 담당자 정보
|
||||
assigned_to VARCHAR(100), -- 담당자명
|
||||
due_date DATE, -- 완료 예정일
|
||||
|
||||
-- 메타데이터
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
FOREIGN KEY (file_id) REFERENCES files(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- ================================
|
||||
-- 11. 사용자 활동 로그 테이블 (19_add_user_tracking_fields.sql)
|
||||
-- ================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS user_activity_logs (
|
||||
@@ -1146,6 +1190,11 @@ CREATE INDEX IF NOT EXISTS idx_files_job_no ON files(job_no);
|
||||
-- 프로젝트 타입 인덱스 (17_add_project_type_column.sql)
|
||||
CREATE INDEX IF NOT EXISTS idx_jobs_project_type ON jobs(project_type);
|
||||
|
||||
-- 사용자 요구사항 테이블 인덱스 (05_create_pipe_details_and_requirements_postgres.sql)
|
||||
CREATE INDEX IF NOT EXISTS idx_user_requirements_file_id ON user_requirements(file_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_user_requirements_status ON user_requirements(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_user_requirements_type ON user_requirements(requirement_type);
|
||||
|
||||
-- ================================
|
||||
-- 8. 트리거 함수 및 트리거 생성
|
||||
-- ================================
|
||||
@@ -1357,6 +1406,20 @@ INSERT INTO tubing_manufacturers (manufacturer_code, manufacturer_name, country)
|
||||
('AS_ONE', 'AS ONE Corporation', 'Japan')
|
||||
ON CONFLICT (manufacturer_code) DO NOTHING;
|
||||
|
||||
-- 기본 요구사항 타입 데이터 삽입 (05_create_pipe_details_and_requirements_postgres.sql)
|
||||
INSERT INTO requirement_types (type_code, type_name, category, description) VALUES
|
||||
('IMPACT_TEST', '임팩테스트', 'TEST', 'Charpy V-notch, Izod 등의 충격 시험'),
|
||||
('HEAT_TREATMENT', '열처리', 'TREATMENT', '정규화, 어닐링, 템퍼링 등의 열처리'),
|
||||
('CERTIFICATION', '인증서', 'CERTIFICATION', '재질증명서, 시험성적서 등'),
|
||||
('CUSTOM_SPEC', '특수사양', 'CUSTOM', '고객 특별 요구사항'),
|
||||
('NDT_TEST', '비파괴검사', 'TEST', '초음파, 방사선, 자분탐상 등'),
|
||||
('CHEMICAL_ANALYSIS', '화학분석', 'TEST', '화학성분 분석'),
|
||||
('MECHANICAL_TEST', '기계적성질', 'TEST', '인장, 압축, 굽힘 시험'),
|
||||
('SURFACE_TREATMENT', '표면처리', 'TREATMENT', '도금, 도장, 패시베이션 등'),
|
||||
('DIMENSIONAL_CHECK', '치수검사', 'INSPECTION', '치수, 형상 검사'),
|
||||
('WELDING_SPEC', '용접사양', 'SPEC', '용접 방법, 용접재 등')
|
||||
ON CONFLICT (type_code) DO NOTHING;
|
||||
|
||||
-- ================================
|
||||
-- 10. 뷰 생성
|
||||
-- ================================
|
||||
@@ -1488,14 +1551,16 @@ BEGIN
|
||||
RAISE NOTICE ' - 특수재질: special_materials, special_material_grades, special_material_patterns';
|
||||
RAISE NOTICE ' - 비교시스템: material_revisions_comparison, material_comparison_details';
|
||||
RAISE NOTICE ' - Tubing: tubing_categories, tubing_specifications, tubing_manufacturers, tubing_products, material_tubing_mapping';
|
||||
RAISE NOTICE ' - 요구사항: requirement_types, user_requirements';
|
||||
RAISE NOTICE ' - 로그: user_activity_logs';
|
||||
RAISE NOTICE '👤 기본 계정: admin/admin123, system/admin123';
|
||||
RAISE NOTICE '🏗️ 기본 프로젝트: TK-MP-DEV-001, TK-MP-DEMO-001, TK-MP-TEST-001';
|
||||
RAISE NOTICE '🏭 기본 Tubing 제조사: SWAGELOK, PARKER, HAM_LET, SUPERLOK, FITOK, DK_LOK, GYROLOK, AS_ONE';
|
||||
RAISE NOTICE '🔐 권한 시스템: 5단계 역할 + 모듈별 세분화된 권한';
|
||||
RAISE NOTICE '📊 성능 최적화: 복합인덱스, GIN인덱스, 조건부인덱스 포함 50+ 인덱스 적용';
|
||||
RAISE NOTICE '📊 성능 최적화: 복합인덱스, GIN인덱스, 조건부인덱스 포함 107개 인덱스 적용';
|
||||
RAISE NOTICE '🔄 자동화: updated_at 트리거, 해시 자동생성, 기본 데이터 자동 생성';
|
||||
RAISE NOTICE '📈 통계뷰: classification_summary, classification_performance, material_inventory_status';
|
||||
RAISE NOTICE '🔧 함수: generate_material_hash, auto_generate_material_hash';
|
||||
RAISE NOTICE '📝 총 테이블 수: 30+개, 인덱스: 50+개, 뷰: 6개, 함수: 10+개';
|
||||
RAISE NOTICE '🔬 기본 요구사항 타입: 임팩테스트, 열처리, 인증서, 비파괴검사, 화학분석 등 10종';
|
||||
RAISE NOTICE '📝 총 테이블 수: 38개, 인덱스: 107개, 뷰: 5개, 함수: 15개 이상';
|
||||
END $$;
|
||||
|
||||
Reference in New Issue
Block a user