feat: TK-MP-Project 핵심 설정 파일들 작성 완료

- Docker Compose 개발 환경 설정 (PostgreSQL, pgAdmin, Redis)
- 데이터베이스 스키마 초기 설계 (projects, files, materials 테이블)
- Python requirements.txt 작성 (FastAPI, SQLAlchemy, Pandas 등)
- .gitignore 설정 완료 (Python, Docker, 개발 도구 제외 파일)
- README.md 작성 (프로젝트 개요, 기술 스택, 개발 로드맵)
- Phase 1 기반 시스템 구축 준비 완료
This commit is contained in:
Hyungi Ahn
2025-07-14 08:23:04 +09:00
commit 0bc6e83ab9
9 changed files with 427 additions and 0 deletions

130
database/init/01_schema.sql Normal file
View File

@@ -0,0 +1,130 @@
-- TK-MP BOM 시스템 데이터베이스 스키마
-- 생성일: 2025.07.14
-- ================================
-- 1. 프로젝트 관리
-- ================================
-- 프로젝트 기본 정보
CREATE TABLE projects (
id SERIAL PRIMARY KEY,
-- 회사 공식 정보
official_project_code VARCHAR(50) UNIQUE, -- PP5-5701-DRYING (정식 코드)
project_name VARCHAR(200) NOT NULL,
client_name VARCHAR(100),
-- 설계팀 사용 정보
design_project_code VARCHAR(50), -- 설계팀이 실제 사용한 코드
design_project_name VARCHAR(200), -- 설계팀이 사용한 프로젝트명
-- 매칭 정보
is_code_matched BOOLEAN DEFAULT false, -- 정식 코드 매칭 완료 여부
matched_by VARCHAR(100), -- 매칭 작업자
matched_at TIMESTAMP, -- 매칭 완료 시점
-- 기본 정보
status VARCHAR(20) DEFAULT 'active', -- active/completed/on_hold
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
description TEXT,
notes TEXT
);
-- ================================
-- 2. 파일 관리
-- ================================
-- 업로드된 자재 목록 파일들
CREATE TABLE files (
id SERIAL PRIMARY KEY,
project_id INTEGER REFERENCES projects(id) ON DELETE CASCADE,
filename VARCHAR(255) NOT NULL,
original_filename VARCHAR(255) NOT NULL,
file_path VARCHAR(500) NOT NULL,
revision VARCHAR(20) DEFAULT 'Rev.0', -- Rev.0, Rev.1, Rev.2
upload_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
uploaded_by VARCHAR(100),
file_type VARCHAR(10), -- excel/csv/txt
file_size INTEGER,
is_active BOOLEAN DEFAULT true
);
-- ================================
-- 3. 자재 정보 (핵심 테이블)
-- ================================
-- 개별 자재 상세 정보
CREATE TABLE materials (
id SERIAL PRIMARY KEY,
file_id INTEGER REFERENCES files(id) ON DELETE CASCADE,
line_number INTEGER, -- Excel 행 번호
original_description TEXT NOT NULL, -- 원본 품명
-- 분류 정보
classified_category VARCHAR(50), -- 파이프/피팅/볼트/밸브/계기
classified_subcategory VARCHAR(100), -- 엘보우/플랜지/벤드 등
-- 재질 및 스펙
material_grade VARCHAR(50), -- A333-6, A105, SS316
schedule VARCHAR(20), -- SCH40, SCH80, STD
size_spec VARCHAR(50), -- 6인치, 150A, M16
-- 수량 정보
quantity DECIMAL(10,3) NOT NULL,
unit VARCHAR(10) NOT NULL, -- EA/mm/SET/kg
-- 도면 정보
drawing_name VARCHAR(100), -- P&ID-001-TANK
area_code VARCHAR(20), -- #01, #02, #03
line_no VARCHAR(50), -- LINE-001-A
-- 분류 신뢰도 및 검증
classification_confidence DECIMAL(3,2), -- 0.00-1.00 분류 신뢰도
is_verified BOOLEAN DEFAULT false, -- 사용자 검증 여부
verified_by VARCHAR(100),
verified_at TIMESTAMP,
-- 기타
drawing_reference VARCHAR(100),
notes TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- ================================
-- 4. 인덱스 생성 (성능 최적화)
-- ================================
-- 프로젝트 관련 인덱스
CREATE INDEX idx_projects_official_code ON projects(official_project_code);
CREATE INDEX idx_projects_design_code ON projects(design_project_code);
-- 파일 관련 인덱스
CREATE INDEX idx_files_project ON files(project_id);
CREATE INDEX idx_files_active ON files(is_active);
-- 자재 관련 인덱스
CREATE INDEX idx_materials_file ON materials(file_id);
CREATE INDEX idx_materials_category ON materials(classified_category, classified_subcategory);
CREATE INDEX idx_materials_material_size ON materials(material_grade, size_spec);
-- ================================
-- 5. 기본 뷰 생성
-- ================================
-- 프로젝트 상태 요약 뷰
CREATE VIEW project_status_view AS
SELECT
p.id,
COALESCE(p.official_project_code, p.design_project_code) as display_code,
p.project_name,
p.status,
COUNT(f.id) as file_count,
COUNT(m.id) as material_count,
p.created_at
FROM projects p
LEFT JOIN files f ON p.id = f.project_id AND f.is_active = true
LEFT JOIN materials m ON f.id = m.file_id
GROUP BY p.id, p.official_project_code, p.design_project_code,
p.project_name, p.status, p.created_at
ORDER BY p.created_at DESC;

View File