Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled
✅ 백엔드 구조 개선: - DatabaseService: 공통 DB 쿼리 로직 통합 - FileUploadService: 파일 업로드 로직 모듈화 및 트랜잭션 관리 개선 - 서비스 레이어 패턴 도입으로 코드 재사용성 향상 ✅ 프론트엔드 컴포넌트 개선: - LoadingSpinner, ErrorMessage, ConfirmDialog 공통 컴포넌트 생성 - 재사용 가능한 컴포넌트 라이브러리 구축 - deprecated/backup 파일들 완전 제거 ✅ 성능 최적화: - optimize_database.py: 핵심 DB 인덱스 자동 생성 - 쿼리 최적화 및 통계 업데이트 자동화 - VACUUM ANALYZE 자동 실행 ✅ 코드 정리: - 개별 SQL 마이그레이션 파일들을 legacy/ 폴더로 정리 - 중복된 마이그레이션 스크립트 정리 - 깔끔하고 체계적인 프로젝트 구조 완성 ✅ 자동 마이그레이션 시스템 강화: - complete_migrate.py: SQLAlchemy 기반 완전한 마이그레이션 - analyze_and_fix_schema.py: 백엔드 코드 분석 기반 스키마 수정 - fix_missing_tables.py: 누락된 테이블/컬럼 자동 생성 - start.sh: 배포 시 자동 실행 순서 최적화
109 lines
4.5 KiB
SQL
109 lines
4.5 KiB
SQL
-- 파이프 상세 정보 및 사용자 요구사항 테이블 생성
|
|
-- 2024-01-XX
|
|
|
|
-- 파이프 상세 정보 테이블
|
|
CREATE TABLE IF NOT EXISTS pipe_details (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
file_id INTEGER NOT NULL,
|
|
|
|
-- 재질 정보
|
|
material_standard TEXT, -- ASTM, KS, JIS 등
|
|
material_grade TEXT, -- A106, A53, STPG370 등
|
|
material_type TEXT, -- CARBON, STAINLESS 등
|
|
|
|
-- 파이프 특화 정보
|
|
manufacturing_method TEXT, -- SEAMLESS, WELDED, CAST
|
|
end_preparation TEXT, -- BOTH_ENDS_BEVELED, ONE_END_BEVELED, NO_BEVEL
|
|
schedule TEXT, -- SCH 10, 20, 40, 80 등
|
|
wall_thickness TEXT, -- 벽두께 정보
|
|
|
|
-- 치수 정보
|
|
nominal_size TEXT, -- MAIN_NOM (인치, 직경)
|
|
length_mm REAL, -- LENGTH (길이)
|
|
|
|
-- 신뢰도
|
|
material_confidence REAL,
|
|
manufacturing_confidence REAL,
|
|
end_prep_confidence REAL,
|
|
schedule_confidence REAL,
|
|
|
|
-- 메타데이터
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
FOREIGN KEY (file_id) REFERENCES files(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- 요구사항 타입 마스터 테이블
|
|
CREATE TABLE IF NOT EXISTS requirement_types (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
type_code TEXT UNIQUE NOT NULL, -- 'IMPACT_TEST', 'HEAT_TREATMENT' 등
|
|
type_name TEXT NOT NULL, -- '임팩테스트', '열처리' 등
|
|
category TEXT 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 INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
file_id INTEGER NOT NULL,
|
|
|
|
-- 요구사항 타입
|
|
requirement_type TEXT NOT NULL, -- 'IMPACT_TEST', 'HEAT_TREATMENT', 'CUSTOM_SPEC', 'CERTIFICATION' 등
|
|
|
|
-- 요구사항 내용
|
|
requirement_title TEXT NOT NULL, -- '임팩테스트', '열처리', '인증서' 등
|
|
requirement_description TEXT, -- 상세 설명
|
|
requirement_spec TEXT, -- 구체적 스펙 (예: "Charpy V-notch -20°C")
|
|
|
|
-- 상태 관리
|
|
status TEXT DEFAULT 'PENDING', -- 'PENDING', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'
|
|
priority TEXT DEFAULT 'NORMAL', -- 'LOW', 'NORMAL', 'HIGH', 'URGENT'
|
|
|
|
-- 담당자 정보
|
|
assigned_to TEXT, -- 담당자명
|
|
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
|
|
);
|
|
|
|
-- 인덱스 생성
|
|
CREATE INDEX IF NOT EXISTS idx_pipe_details_file_id ON pipe_details(file_id);
|
|
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);
|
|
|
|
-- 기본 요구사항 타입 데이터 삽입
|
|
INSERT OR IGNORE 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', '용접 방법, 용접재 등');
|
|
|
|
-- 트리거 생성 (updated_at 자동 업데이트)
|
|
CREATE TRIGGER IF NOT EXISTS update_pipe_details_timestamp
|
|
AFTER UPDATE ON pipe_details
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE pipe_details SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id;
|
|
END;
|
|
|
|
CREATE TRIGGER IF NOT EXISTS update_user_requirements_timestamp
|
|
AFTER UPDATE ON user_requirements
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE user_requirements SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id;
|
|
END; |