448 lines
15 KiB
Markdown
448 lines
15 KiB
Markdown
|
|
# DB 구조 분석
|
|||
|
|
|
|||
|
|
> **분석 대상:** 5130 레거시 견적 시스템 데이터베이스
|
|||
|
|
> **데이터베이스:** chandj
|
|||
|
|
> **분석 일자:** 2025-12-19
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 테이블 목록
|
|||
|
|
|
|||
|
|
### 핵심 테이블
|
|||
|
|
| 테이블명 | 용도 | 비고 |
|
|||
|
|
|----------|------|------|
|
|||
|
|
| `estimate` | 견적서 마스터 | 견적 헤더 + JSON 상세 |
|
|||
|
|
| `BDmodels` | 모델별 단가 | 케이스, 레일, 부자재 단가 |
|
|||
|
|
| `BDparts` | 부품 단가 | 부품별 가격 계수 |
|
|||
|
|
|
|||
|
|
### 단가 테이블
|
|||
|
|
| 테이블명 | 용도 | 비고 |
|
|||
|
|
|----------|------|------|
|
|||
|
|
| `price_raw_materials` | 주자재 단가 | 스크린, 슬랫 소재 |
|
|||
|
|
| `price_motor` | 모터 단가 | 용량별 모터 가격 |
|
|||
|
|
| `price_shaft` | 샤프트 단가 | 길이별 샤프트 가격 |
|
|||
|
|
| `price_pipe` | 각파이프 단가 | 규격별 파이프 가격 |
|
|||
|
|
| `price_angle` | 앵글 단가 | 규격별 앵글 가격 |
|
|||
|
|
| `price_bend` | 절곡비 단가 | 절곡 가공비 |
|
|||
|
|
| `price_smokeban` | 연기차단재 단가 | 연기차단재 가격 |
|
|||
|
|
| `price_etc` | 기타 단가 | 기타 부자재 |
|
|||
|
|
| `price_pole` | 폴 단가 | 폴 관련 가격 |
|
|||
|
|
|
|||
|
|
### 참조 테이블
|
|||
|
|
| 테이블명 | 용도 |
|
|||
|
|
|----------|------|
|
|||
|
|
| `item_list` | 품목 마스터 |
|
|||
|
|
| `output` | 발주서 (수주→발주 연계) |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. estimate 테이블 (견적 마스터)
|
|||
|
|
|
|||
|
|
### 스키마
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE estimate (
|
|||
|
|
num INT AUTO_INCREMENT PRIMARY KEY,
|
|||
|
|
|
|||
|
|
-- 기본 정보
|
|||
|
|
pjnum VARCHAR(50), -- 프로젝트 번호 (KD-PR-YYMMDD-NN)
|
|||
|
|
indate DATE, -- 등록일
|
|||
|
|
orderman VARCHAR(50), -- 담당자
|
|||
|
|
outworkplace VARCHAR(200), -- 현장명/거래처
|
|||
|
|
|
|||
|
|
-- 분류 정보
|
|||
|
|
major_category VARCHAR(50), -- 대분류 (스크린/철재)
|
|||
|
|
model_name VARCHAR(100), -- 모델명 (KSS01, KFS01 등)
|
|||
|
|
position VARCHAR(50), -- 위치
|
|||
|
|
|
|||
|
|
-- 규격 정보
|
|||
|
|
makeWidth INT DEFAULT 160, -- 제작 폭 (스크린:160, 슬랫:110)
|
|||
|
|
makeHeight INT DEFAULT 350, -- 제작 높이
|
|||
|
|
maguriWing VARCHAR(20) DEFAULT '50', -- 마구리 윙
|
|||
|
|
|
|||
|
|
-- 발주처 정보
|
|||
|
|
con_num VARCHAR(50), -- 계약번호
|
|||
|
|
secondord VARCHAR(100), -- 2차 발주처
|
|||
|
|
secondordman VARCHAR(50), -- 2차 담당자
|
|||
|
|
secondordmantel VARCHAR(20), -- 2차 담당자 연락처
|
|||
|
|
secondordnum VARCHAR(50), -- 2차 발주번호
|
|||
|
|
|
|||
|
|
-- 견적 상세 (JSON)
|
|||
|
|
estimateList TEXT, -- 스크린 견적 리스트 (JSON)
|
|||
|
|
estimateList_auto TEXT, -- 스크린 자동계산 리스트 (JSON)
|
|||
|
|
estimateSlatList TEXT, -- 슬랫 견적 리스트 (JSON)
|
|||
|
|
estimateSlatList_auto TEXT, -- 슬랫 자동계산 리스트 (JSON)
|
|||
|
|
|
|||
|
|
-- 금액 정보
|
|||
|
|
estimateTotal INT DEFAULT 0, -- 견적 총액
|
|||
|
|
EstimateFirstSum INT DEFAULT 0, -- 최초 견적 합계
|
|||
|
|
EstimateUpdatetSum INT DEFAULT 0, -- 수정 견적 합계
|
|||
|
|
EstimateDiffer INT DEFAULT 0, -- 차액
|
|||
|
|
estimateSurang INT DEFAULT 0, -- 수량
|
|||
|
|
|
|||
|
|
-- 할인 정보
|
|||
|
|
EstimateDiscountRate INT DEFAULT 0,-- 할인율 (%)
|
|||
|
|
EstimateDiscount INT DEFAULT 0, -- 할인금액
|
|||
|
|
EstimateFinalSum INT DEFAULT 0, -- 최종 금액
|
|||
|
|
|
|||
|
|
-- 검사비/옵션
|
|||
|
|
inspectionFee INT DEFAULT 50000, -- 인정검사비
|
|||
|
|
steel VARCHAR(50), -- 절곡 옵션 (1/0)
|
|||
|
|
motor VARCHAR(100), -- 모터 옵션 (1/0)
|
|||
|
|
warranty VARCHAR(100), -- 보증 (인정/빈값)
|
|||
|
|
slatcheck VARCHAR(10), -- 슬랫 체크 (1/0)
|
|||
|
|
partscheck VARCHAR(10), -- 부자재 체크 (1/0)
|
|||
|
|
|
|||
|
|
-- 시스템 필드
|
|||
|
|
comment TEXT, -- 비고
|
|||
|
|
update_log TEXT, -- 수정이력
|
|||
|
|
is_deleted TINYINT DEFAULT 0, -- 삭제플래그
|
|||
|
|
|
|||
|
|
INDEX idx_pjnum (pjnum),
|
|||
|
|
INDEX idx_outworkplace (outworkplace),
|
|||
|
|
INDEX idx_indate (indate)
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 주요 컬럼 설명
|
|||
|
|
|
|||
|
|
#### 프로젝트 번호 (pjnum)
|
|||
|
|
```
|
|||
|
|
형식: KD-PR-YYMMDD-NN
|
|||
|
|
- KD: 경동
|
|||
|
|
- PR: 프로젝트
|
|||
|
|
- YYMMDD: 날짜 (6자리)
|
|||
|
|
- NN: 일련번호 (01~99)
|
|||
|
|
|
|||
|
|
예시: KD-PR-251219-01
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 대분류 (major_category)
|
|||
|
|
| 값 | 설명 |
|
|||
|
|
|----|------|
|
|||
|
|
| 스크린 | 스크린 방화셔터 |
|
|||
|
|
| 철재 | 철재 슬랫 방화셔터 |
|
|||
|
|
|
|||
|
|
#### 체크박스 옵션
|
|||
|
|
| 컬럼 | 값 | 의미 |
|
|||
|
|
|------|-----|------|
|
|||
|
|
| steel | '1' / '0' | 절곡 포함/미포함 |
|
|||
|
|
| motor | '1' / '0' | 모터 포함/미포함 |
|
|||
|
|
| warranty | '인정' / '' | 보증 포함/미포함 |
|
|||
|
|
| slatcheck | '1' / '0' | 슬랫 포함/미포함 |
|
|||
|
|
| partscheck | '1' / '0' | 부자재 포함/미포함 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. estimateList JSON 구조
|
|||
|
|
|
|||
|
|
### 수동 입력 항목 (estimateList, estimateSlatList)
|
|||
|
|
```json
|
|||
|
|
[
|
|||
|
|
{
|
|||
|
|
"item_name": "가이드레일",
|
|||
|
|
"specification": "A형 65×80",
|
|||
|
|
"unit": "EA",
|
|||
|
|
"quantity": 2,
|
|||
|
|
"unit_price": 150000,
|
|||
|
|
"amount": 300000,
|
|||
|
|
"remark": ""
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"item_name": "스크린 판넬",
|
|||
|
|
"specification": "1.0T × 1200W",
|
|||
|
|
"unit": "m²",
|
|||
|
|
"quantity": 24.5,
|
|||
|
|
"unit_price": 45000,
|
|||
|
|
"amount": 1102500,
|
|||
|
|
"remark": "SUS304"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 자동 계산 항목 (estimateList_auto, estimateSlatList_auto)
|
|||
|
|
```json
|
|||
|
|
[
|
|||
|
|
{
|
|||
|
|
"item_code": "AUTO001",
|
|||
|
|
"item_name": "벤딩 가공비",
|
|||
|
|
"calc_type": "per_meter",
|
|||
|
|
"base_value": 120.5,
|
|||
|
|
"unit_price": 2500,
|
|||
|
|
"amount": 301250
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. BDmodels 테이블 (모델별 단가)
|
|||
|
|
|
|||
|
|
### 스키마
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE IF NOT EXISTS BDmodels (
|
|||
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|||
|
|
modelname VARCHAR(50), -- 모델명
|
|||
|
|
itemname VARCHAR(100), -- 품목명
|
|||
|
|
itemsecond VARCHAR(100), -- 품목 세부
|
|||
|
|
itemList TEXT, -- 상세 가격 JSON
|
|||
|
|
is_deleted TINYINT DEFAULT 0,
|
|||
|
|
INDEX idx_modelname (modelname),
|
|||
|
|
INDEX idx_itemname (itemname)
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### itemList JSON 구조
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"prices": [
|
|||
|
|
{"size": "530*320", "price": 150000},
|
|||
|
|
{"size": "600*350", "price": 180000},
|
|||
|
|
{"size": "690*390", "price": 210000}
|
|||
|
|
],
|
|||
|
|
"unit": "EA",
|
|||
|
|
"description": "모터 브라켓"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 주요 품목
|
|||
|
|
| modelname | itemname | 용도 |
|
|||
|
|
|-----------|----------|------|
|
|||
|
|
| 공통 | 케이스 | 케이스 단가 |
|
|||
|
|
| 공통 | 가이드레일 | 레일 단가 |
|
|||
|
|
| 공통 | 연기차단재 | 연기차단재 단가 |
|
|||
|
|
| 공통 | 하장바 | 하장바 단가 |
|
|||
|
|
| 공통 | 마구리 | 마구리 단가 |
|
|||
|
|
| 스크린 | L바 | L바 단가 (스크린 전용) |
|
|||
|
|
| 스크린 | 보강평철 | 보강평철 단가 (스크린 전용) |
|
|||
|
|
| 슬랫 | 조인트바 | 조인트바 단가 (슬랫 전용) |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. 단가 테이블
|
|||
|
|
|
|||
|
|
### price_raw_materials (주자재)
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE price_raw_materials (
|
|||
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|||
|
|
material_type VARCHAR(50), -- 소재 유형 (실리카, 와이어, 방화슬랫)
|
|||
|
|
specification VARCHAR(100), -- 규격
|
|||
|
|
unit VARCHAR(20), -- 단위 (m², kg)
|
|||
|
|
unit_price DECIMAL(10,0), -- 단가
|
|||
|
|
itemList TEXT, -- 상세 JSON
|
|||
|
|
is_deleted TINYINT DEFAULT 0
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### price_motor (모터)
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE price_motor (
|
|||
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|||
|
|
capacity VARCHAR(20), -- 용량 (150K, 300K, 500K, 800K, 1000K)
|
|||
|
|
type VARCHAR(50), -- 유형
|
|||
|
|
unit_price DECIMAL(10,0), -- 단가
|
|||
|
|
is_deleted TINYINT DEFAULT 0
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### price_shaft (샤프트)
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE price_shaft (
|
|||
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|||
|
|
length_range VARCHAR(50), -- 길이 범위
|
|||
|
|
unit_price DECIMAL(10,0), -- 단가
|
|||
|
|
weight_per_meter DECIMAL(5,2), -- m당 중량
|
|||
|
|
is_deleted TINYINT DEFAULT 0
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### price_pipe (각파이프)
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE price_pipe (
|
|||
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|||
|
|
specification VARCHAR(50), -- 규격 (50×50, 75×75 등)
|
|||
|
|
unit_price DECIMAL(10,0), -- m당 단가
|
|||
|
|
weight_per_meter DECIMAL(5,2), -- m당 중량
|
|||
|
|
is_deleted TINYINT DEFAULT 0
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### price_angle (앵글)
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE price_angle (
|
|||
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|||
|
|
specification VARCHAR(50), -- 규격 (50×50×5 등)
|
|||
|
|
unit_price DECIMAL(10,0), -- m당 단가
|
|||
|
|
weight_per_meter DECIMAL(5,2), -- m당 중량
|
|||
|
|
is_deleted TINYINT DEFAULT 0
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 5. 컬럼 매핑 (스크린 vs 슬랫)
|
|||
|
|
|
|||
|
|
### get_screen_amount.php 컬럼
|
|||
|
|
| 항목 | 컬럼 | 설명 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 위치 | col1 | 설치 위치 |
|
|||
|
|
| 폭 | col2 | 오픈사이즈 폭 (mm) |
|
|||
|
|
| 높이 | col3 | 오픈사이즈 높이 (mm) |
|
|||
|
|
| 수량 | col4 | 수량 |
|
|||
|
|
| 소재 | col5 | 실리카/와이어 |
|
|||
|
|
| 케이스 타입 | col6 | 절곡/롤 |
|
|||
|
|
| 레일 타입 | col7 | A형/B형 |
|
|||
|
|
| 설치방식 | col8 | 매립/노출 |
|
|||
|
|
| 면적 | col9 | 계산된 면적 (m²) |
|
|||
|
|
| 케이스 길이 | col10 | mm |
|
|||
|
|
| 레일 길이 | col11 | mm |
|
|||
|
|
| 하장바 길이 | col12 | mm |
|
|||
|
|
| 중량 | col13 | kg |
|
|||
|
|
| 검사비 | col14 | 원 |
|
|||
|
|
| 주자재 | col15 | 원 |
|
|||
|
|
| 모터 | col16 | 원 |
|
|||
|
|
| 제어기 | col17 | 원 |
|
|||
|
|
| 케이스 | col18 | 원 |
|
|||
|
|
| 레일 | col19 | 원 |
|
|||
|
|
| 앵글 | col20 | 원 |
|
|||
|
|
| 샤프트 | col21 | 원 |
|
|||
|
|
| 인치 | col22 | 샤프트 인치 |
|
|||
|
|
|
|||
|
|
### get_slat_amount.php 컬럼
|
|||
|
|
| 항목 | 컬럼 | 설명 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 위치 | col1 | 설치 위치 |
|
|||
|
|
| 폭 | col2 | 오픈사이즈 폭 (mm) |
|
|||
|
|
| 높이 | col3 | 오픈사이즈 높이 (mm) |
|
|||
|
|
| 수량 | col4 | 수량 |
|
|||
|
|
| 소재 | col5 | 방화슬랫 |
|
|||
|
|
| 케이스 타입 | col6 | 절곡/롤 |
|
|||
|
|
| 레일 타입 | col7 | A형/B형 |
|
|||
|
|
| 설치방식 | col8 | 매립/노출 |
|
|||
|
|
| 면적 | col9 | 계산된 면적 (m²) |
|
|||
|
|
| 케이스 길이 | col10 | mm |
|
|||
|
|
| 레일 길이 | col11 | mm |
|
|||
|
|
| 하장바 길이 | col12 | mm |
|
|||
|
|
| 중량 | col13 | kg |
|
|||
|
|
| 검사비 | col14 | 원 |
|
|||
|
|
| 주자재 (슬랫) | col15 | 원 |
|
|||
|
|
| 조인트바 | col16 | 원 (슬랫 전용) |
|
|||
|
|
| 모터 | col17 | 원 |
|
|||
|
|
| 제어기 | col18 | 원 |
|
|||
|
|
| 케이스 | col19 | 원 |
|
|||
|
|
| 레일 | col20 | 원 |
|
|||
|
|
| 앵글 | col21 | 원 |
|
|||
|
|
| 샤프트 | col22 | 원 |
|
|||
|
|
| 인치 | col23 | 샤프트 인치 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 6. 데이터 관계도
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────────────────────┐
|
|||
|
|
│ estimate │
|
|||
|
|
│ (견적 마스터) │
|
|||
|
|
├─────────────────────────────────────────────────────────┤
|
|||
|
|
│ num (PK) │
|
|||
|
|
│ pjnum (견적번호) │
|
|||
|
|
│ major_category → '스크린' / '철재' │
|
|||
|
|
│ model_name → item_list.model_name │
|
|||
|
|
│ estimateList (JSON) ────┐ │
|
|||
|
|
│ estimateSlatList (JSON) │ │
|
|||
|
|
└──────────────────────────┼───────────────────────────────┘
|
|||
|
|
│
|
|||
|
|
▼
|
|||
|
|
┌─────────────────────────────────────────────────────────┐
|
|||
|
|
│ JSON 상세 항목 │
|
|||
|
|
├─────────────────────────────────────────────────────────┤
|
|||
|
|
│ item_name → BDmodels.itemname │
|
|||
|
|
│ unit_price ← price_* 테이블 조회 │
|
|||
|
|
└──────────────────────────────────────────────────────────┘
|
|||
|
|
│
|
|||
|
|
┌─────────────────┼─────────────────┐
|
|||
|
|
▼ ▼ ▼
|
|||
|
|
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
|||
|
|
│ BDmodels │ │ price_motor │ │ price_shaft │
|
|||
|
|
│ (모델 단가) │ │ (모터 단가) │ │ (샤프트 단가)│
|
|||
|
|
└──────────────┘ └──────────────┘ └──────────────┘
|
|||
|
|
▼ ▼ ▼
|
|||
|
|
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
|||
|
|
│price_raw_mat │ │ price_pipe │ │ price_angle │
|
|||
|
|
│ (주자재) │ │ (각파이프) │ │ (앵글) │
|
|||
|
|
└──────────────┘ └──────────────┘ └──────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 7. SAM 이관 매핑
|
|||
|
|
|
|||
|
|
### 테이블 매핑
|
|||
|
|
| 5130 테이블 | SAM 테이블 | 비고 |
|
|||
|
|
|-------------|------------|------|
|
|||
|
|
| estimate | quotes + quote_items | 헤더/상세 분리 |
|
|||
|
|
| BDmodels | products + prices | 품목기준관리 연동 |
|
|||
|
|
| price_* | prices | 통합 단가 테이블 |
|
|||
|
|
|
|||
|
|
### 주요 변환 포인트
|
|||
|
|
1. **JSON → 정규화**: estimateList JSON을 quote_items 테이블로 분리
|
|||
|
|
2. **동적 컬럼 → 고정 컬럼**: col1~col23을 명시적 컬럼명으로 변경
|
|||
|
|
3. **체크박스 → options JSON**: steel, motor 등을 options JSON으로 통합
|
|||
|
|
4. **단가 테이블 통합**: 7개 단가 테이블을 prices 테이블로 통합
|
|||
|
|
|
|||
|
|
### SAM 스키마 (제안)
|
|||
|
|
```sql
|
|||
|
|
-- 견적 헤더
|
|||
|
|
CREATE TABLE quotes (
|
|||
|
|
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|||
|
|
tenant_id BIGINT UNSIGNED NOT NULL,
|
|||
|
|
quote_number VARCHAR(50) NOT NULL,
|
|||
|
|
quote_date DATE NOT NULL,
|
|||
|
|
customer_id BIGINT UNSIGNED,
|
|||
|
|
project_name VARCHAR(200),
|
|||
|
|
category ENUM('screen', 'slat') NOT NULL,
|
|||
|
|
model_id BIGINT UNSIGNED,
|
|||
|
|
options JSON, -- {steel: true, motor: true, warranty: true, ...}
|
|||
|
|
dimensions JSON, -- {width: 160, height: 350, wing: 50}
|
|||
|
|
inspection_fee DECIMAL(10,0) DEFAULT 50000,
|
|||
|
|
subtotal DECIMAL(12,0) DEFAULT 0,
|
|||
|
|
discount_rate DECIMAL(5,2) DEFAULT 0,
|
|||
|
|
discount_amount DECIMAL(12,0) DEFAULT 0,
|
|||
|
|
total_amount DECIMAL(12,0) DEFAULT 0,
|
|||
|
|
status ENUM('draft', 'sent', 'accepted', 'rejected') DEFAULT 'draft',
|
|||
|
|
created_by BIGINT UNSIGNED,
|
|||
|
|
created_at TIMESTAMP,
|
|||
|
|
updated_at TIMESTAMP,
|
|||
|
|
deleted_at TIMESTAMP NULL,
|
|||
|
|
|
|||
|
|
INDEX idx_tenant_quote (tenant_id, quote_number),
|
|||
|
|
INDEX idx_tenant_date (tenant_id, quote_date)
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
-- 견적 상세
|
|||
|
|
CREATE TABLE quote_items (
|
|||
|
|
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|||
|
|
quote_id BIGINT UNSIGNED NOT NULL,
|
|||
|
|
item_type ENUM('manual', 'auto') DEFAULT 'manual',
|
|||
|
|
item_code VARCHAR(50),
|
|||
|
|
item_name VARCHAR(100) NOT NULL,
|
|||
|
|
specification VARCHAR(200),
|
|||
|
|
unit VARCHAR(20),
|
|||
|
|
quantity DECIMAL(10,2) DEFAULT 1,
|
|||
|
|
unit_price DECIMAL(12,0) DEFAULT 0,
|
|||
|
|
amount DECIMAL(12,0) DEFAULT 0,
|
|||
|
|
sort_order INT DEFAULT 0,
|
|||
|
|
remark TEXT,
|
|||
|
|
|
|||
|
|
FOREIGN KEY (quote_id) REFERENCES quotes(id) ON DELETE CASCADE,
|
|||
|
|
INDEX idx_quote (quote_id)
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 참조 파일
|
|||
|
|
|
|||
|
|
- `5130/estimate/insert.php` - 견적 저장 로직
|
|||
|
|
- `5130/estimate/fetch_unitprice.php` - 단가 조회
|
|||
|
|
- `5130/bendingfee_backup/sql.php` - BDmodels 스키마
|
|||
|
|
- `docs/projects/legacy-5130/03_ESTIMATE.md` - 이전 분석
|