docs: 5130 프로젝트 문서화 추가
- docs/README.md: 프로젝트 개요, 기술 스택, 구조, 핵심 모듈 - docs/MODULES.md: 모듈별 상세 (견적, 출고, 수입검사, 작업, 전자결재) - docs/DATABASE.md: DB 스키마, 테이블 구조, 연결 설정 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
428
docs/DATABASE.md
Normal file
428
docs/DATABASE.md
Normal file
@@ -0,0 +1,428 @@
|
||||
# 5130 데이터베이스 구조
|
||||
|
||||
## 데이터베이스 정보
|
||||
|
||||
| 항목 | 값 |
|
||||
|------|-----|
|
||||
| DB명 | chandj |
|
||||
| 엔진 | MySQL 8.0 |
|
||||
| 문자셋 | utf8mb4 |
|
||||
|
||||
---
|
||||
|
||||
## 주요 테이블 목록
|
||||
|
||||
### 핵심 업무 테이블
|
||||
|
||||
| 테이블 | 설명 | 비고 |
|
||||
|--------|------|------|
|
||||
| `output` | 출고/주문 | 메인 업무 테이블 |
|
||||
| `estimate` | 견적 | 스크린/스라트 견적 |
|
||||
| `instock` | 수입검사 | 자재 입고/검사 |
|
||||
| `lot` | LOT 관리 | 재고 LOT |
|
||||
|
||||
### 전자결재 테이블
|
||||
|
||||
| 테이블 | 설명 | 비고 |
|
||||
|--------|------|------|
|
||||
| `eworks` | 전자결재 통합 | 품의서, 지출결의서, 연차 등 |
|
||||
|
||||
### 게시판 테이블
|
||||
|
||||
| 테이블 | 설명 | 비고 |
|
||||
|--------|------|------|
|
||||
| `notice` | 공지사항 | |
|
||||
| `notice_ripple` | 공지 댓글 | |
|
||||
| `qna` | 자료실 | |
|
||||
| `rnd` | 개발일지 | |
|
||||
|
||||
### 회원/조직 테이블
|
||||
|
||||
| 테이블 | 설명 | 비고 |
|
||||
|--------|------|------|
|
||||
| `member` | 회원 정보 | 로그인 계정 |
|
||||
|
||||
### 자산 관리 테이블
|
||||
|
||||
| 테이블 | 설명 | 비고 |
|
||||
|--------|------|------|
|
||||
| `car` | 차량 정보 | 정비이력 JSON |
|
||||
| `lift` | 지게차 정보 | 정비이력 JSON |
|
||||
|
||||
---
|
||||
|
||||
## 테이블 상세
|
||||
|
||||
### output (출고/주문)
|
||||
|
||||
```sql
|
||||
CREATE TABLE output (
|
||||
num INT AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
-- 기본 정보
|
||||
indate DATE, -- 접수일
|
||||
outdate DATE, -- 출고예정일
|
||||
outdonedate DATE, -- 출고완료일
|
||||
|
||||
-- 현장 정보
|
||||
outworkplace VARCHAR(200), -- 현장명
|
||||
outarea VARCHAR(100), -- 지역
|
||||
|
||||
-- 제품 정보
|
||||
prodCode VARCHAR(50), -- 제품코드 (KS, KW 등)
|
||||
|
||||
-- 인정검사
|
||||
ACIregDate DATE, -- 인정검사 요청일
|
||||
ACIaskDate DATE, -- 인정검사 신청일
|
||||
ACIdoneDate DATE, -- 인정검사 완료일
|
||||
|
||||
-- 배송
|
||||
deliveryfeeList JSON, -- 배차/운송비 목록
|
||||
|
||||
-- 상태
|
||||
is_deleted TINYINT DEFAULT 0, -- 삭제 여부
|
||||
devMode TINYINT, -- 개발모드
|
||||
|
||||
-- 메타
|
||||
created_at TIMESTAMP,
|
||||
updated_at TIMESTAMP
|
||||
);
|
||||
```
|
||||
|
||||
### estimate (견적)
|
||||
|
||||
```sql
|
||||
CREATE TABLE estimate (
|
||||
num INT AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
-- 견적 정보
|
||||
estimate_date DATE, -- 견적일
|
||||
customer VARCHAR(100), -- 고객명
|
||||
project_name VARCHAR(200), -- 프로젝트명
|
||||
|
||||
-- 제품 정보
|
||||
product_type VARCHAR(50), -- 제품유형 (screen, slat)
|
||||
specifications JSON, -- 사양 정보
|
||||
|
||||
-- 금액
|
||||
unit_price DECIMAL(15,2), -- 단가
|
||||
total_amount DECIMAL(15,2), -- 총금액
|
||||
|
||||
-- 상태
|
||||
is_deleted TINYINT DEFAULT 0,
|
||||
|
||||
-- 메타
|
||||
created_at TIMESTAMP,
|
||||
updated_at TIMESTAMP
|
||||
);
|
||||
```
|
||||
|
||||
### instock (수입검사)
|
||||
|
||||
```sql
|
||||
CREATE TABLE instock (
|
||||
num INT AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
-- 검사 정보
|
||||
inspection_date DATE, -- 검사일
|
||||
item_name VARCHAR(200), -- 품명
|
||||
supplier VARCHAR(100), -- 공급사
|
||||
|
||||
-- 검사 상세
|
||||
specification TEXT, -- 규격
|
||||
iList JSON, -- 검사 상세 항목
|
||||
|
||||
-- 판정
|
||||
resultJudgement VARCHAR(20), -- 합격/불합격
|
||||
|
||||
-- 비고
|
||||
remarks TEXT,
|
||||
weight_kg DECIMAL(10,2), -- 중량
|
||||
|
||||
-- 상태
|
||||
is_deleted TINYINT DEFAULT NULL,
|
||||
|
||||
-- 메타
|
||||
created_at TIMESTAMP,
|
||||
updated_at TIMESTAMP
|
||||
);
|
||||
```
|
||||
|
||||
### eworks (전자결재)
|
||||
|
||||
```sql
|
||||
CREATE TABLE eworks (
|
||||
num INT AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
-- 문서 유형
|
||||
eworks_item VARCHAR(50), -- 품의서, 지출결의서, 연차 등
|
||||
al_company VARCHAR(20), -- 회사 (경동, 주일)
|
||||
|
||||
-- 기본 정보
|
||||
indate DATE, -- 작성일
|
||||
outworkplace VARCHAR(200), -- 제목/현장명
|
||||
|
||||
-- 금액 (품의서/지출결의서)
|
||||
suppliercost VARCHAR(50), -- 금액
|
||||
expense_data JSON, -- 지출 상세 (지출결의서)
|
||||
|
||||
-- 연차 정보
|
||||
al_askdatefrom DATE, -- 연차 시작일
|
||||
al_askdateto DATE, -- 연차 종료일
|
||||
|
||||
-- 결재 정보
|
||||
status VARCHAR(20), -- 상태 (draft, pending, end)
|
||||
e_line_id VARCHAR(200), -- 결재라인 ID
|
||||
e_confirm TEXT, -- 결재 확인 정보
|
||||
|
||||
-- 상태
|
||||
is_deleted TINYINT DEFAULT NULL,
|
||||
|
||||
-- 메타
|
||||
created_at TIMESTAMP,
|
||||
updated_at TIMESTAMP
|
||||
);
|
||||
```
|
||||
|
||||
### member (회원)
|
||||
|
||||
```sql
|
||||
CREATE TABLE member (
|
||||
num INT AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
-- 계정 정보
|
||||
userid VARCHAR(50) UNIQUE,
|
||||
password VARCHAR(255),
|
||||
name VARCHAR(50),
|
||||
|
||||
-- 조직 정보
|
||||
company VARCHAR(50), -- 회사
|
||||
department VARCHAR(50), -- 부서
|
||||
position VARCHAR(50), -- 직급
|
||||
|
||||
-- 권한
|
||||
level INT, -- 권한 레벨
|
||||
eworks_lv INT, -- 결재 레벨
|
||||
eworks_level INT, -- 결재 단계
|
||||
authority VARCHAR(50), -- 특수 권한
|
||||
|
||||
-- 연락처
|
||||
email VARCHAR(100),
|
||||
phone VARCHAR(20),
|
||||
|
||||
-- 결재 설정
|
||||
first_approval_id VARCHAR(50),
|
||||
first_approval_name VARCHAR(50),
|
||||
|
||||
-- 상태
|
||||
is_active TINYINT DEFAULT 1,
|
||||
|
||||
-- 메타
|
||||
created_at TIMESTAMP,
|
||||
updated_at TIMESTAMP
|
||||
);
|
||||
```
|
||||
|
||||
### notice (공지사항)
|
||||
|
||||
```sql
|
||||
CREATE TABLE notice (
|
||||
num INT AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
-- 게시글 정보
|
||||
subject VARCHAR(200), -- 제목
|
||||
content TEXT, -- 내용
|
||||
|
||||
-- 공지 설정
|
||||
noticecheck CHAR(1), -- 전체공지 여부 (y/n)
|
||||
|
||||
-- 작성자
|
||||
name VARCHAR(50),
|
||||
userid VARCHAR(50),
|
||||
|
||||
-- 조회
|
||||
hit INT DEFAULT 0,
|
||||
|
||||
-- 날짜
|
||||
regist_day DATETIME,
|
||||
|
||||
-- 파일
|
||||
file_name VARCHAR(200),
|
||||
file_path VARCHAR(500),
|
||||
|
||||
-- 상태
|
||||
is_deleted TINYINT DEFAULT 0
|
||||
);
|
||||
```
|
||||
|
||||
### car (차량)
|
||||
|
||||
```sql
|
||||
CREATE TABLE car (
|
||||
num INT AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
-- 차량 정보
|
||||
vehicle_type VARCHAR(100), -- 차종
|
||||
license_plate VARCHAR(20), -- 차량번호
|
||||
purchase_date DATE, -- 구매일
|
||||
|
||||
-- 정비 이력 (JSON)
|
||||
engine_oil_change_data JSON, -- 엔진오일 교환 이력
|
||||
maintenance_data JSON, -- 정비 이력
|
||||
|
||||
-- 상태
|
||||
is_deleted TINYINT DEFAULT 0,
|
||||
|
||||
-- 메타
|
||||
created_at TIMESTAMP,
|
||||
updated_at TIMESTAMP
|
||||
);
|
||||
|
||||
-- JSON 구조 예시
|
||||
-- engine_oil_change_data: [
|
||||
-- {"engine_oil_change_date": "2024-01-15", "mileage": "50000"}
|
||||
-- ]
|
||||
-- maintenance_data: [
|
||||
-- {"maintenance_date": "2024-02-20", "maintenance_record": "타이어 교체"}
|
||||
-- ]
|
||||
```
|
||||
|
||||
### lift (지게차)
|
||||
|
||||
```sql
|
||||
-- car 테이블과 동일한 구조
|
||||
CREATE TABLE lift (
|
||||
num INT AUTO_INCREMENT PRIMARY KEY,
|
||||
vehicle_type VARCHAR(100),
|
||||
purchase_date DATE,
|
||||
engine_oil_change_data JSON,
|
||||
maintenance_data JSON,
|
||||
is_deleted TINYINT DEFAULT 0,
|
||||
created_at TIMESTAMP,
|
||||
updated_at TIMESTAMP
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 공통 컬럼 패턴
|
||||
|
||||
### Soft Delete
|
||||
|
||||
대부분의 테이블에서 `is_deleted` 컬럼으로 소프트 삭제 구현:
|
||||
|
||||
```sql
|
||||
-- 삭제되지 않은 레코드 조회
|
||||
WHERE is_deleted IS NULL OR is_deleted = '0'
|
||||
|
||||
-- 삭제 처리
|
||||
UPDATE table SET is_deleted = '1' WHERE num = ?
|
||||
```
|
||||
|
||||
### 타임스탬프
|
||||
|
||||
```sql
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
```
|
||||
|
||||
### JSON 컬럼
|
||||
|
||||
복잡한 데이터 구조는 JSON 컬럼으로 저장:
|
||||
|
||||
```sql
|
||||
-- 예: 배차 정보
|
||||
deliveryfeeList JSON
|
||||
-- 값: [{"col1": "업체명", "col5": "100000"}, ...]
|
||||
|
||||
-- 예: 검사 항목
|
||||
iList JSON
|
||||
-- 값: [{"inputItems": {"resultJudgement": "합격"}}, ...]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 인덱스 권장 사항
|
||||
|
||||
### output 테이블
|
||||
|
||||
```sql
|
||||
CREATE INDEX idx_output_indate ON output(indate);
|
||||
CREATE INDEX idx_output_outdate ON output(outdate);
|
||||
CREATE INDEX idx_output_is_deleted ON output(is_deleted);
|
||||
CREATE INDEX idx_output_prodcode ON output(prodCode);
|
||||
```
|
||||
|
||||
### eworks 테이블
|
||||
|
||||
```sql
|
||||
CREATE INDEX idx_eworks_company ON eworks(al_company);
|
||||
CREATE INDEX idx_eworks_item ON eworks(eworks_item);
|
||||
CREATE INDEX idx_eworks_status ON eworks(status);
|
||||
CREATE INDEX idx_eworks_indate ON eworks(indate);
|
||||
CREATE INDEX idx_eworks_leave_dates ON eworks(al_askdatefrom, al_askdateto);
|
||||
```
|
||||
|
||||
### instock 테이블
|
||||
|
||||
```sql
|
||||
CREATE INDEX idx_instock_date ON instock(inspection_date);
|
||||
CREATE INDEX idx_instock_deleted ON instock(is_deleted);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 연결 설정
|
||||
|
||||
### PDO 연결 (lib/mydb.php)
|
||||
|
||||
```php
|
||||
function db_connect(){
|
||||
loadEnv();
|
||||
|
||||
$db_host = $_ENV['DB_HOST'] ?? 'localhost';
|
||||
$db_name = $_ENV['DB_NAME'] ?? 'chandj';
|
||||
$db_user = $_ENV['DB_USER'] ?? 'chandj';
|
||||
$db_pass = $_ENV['DB_PASS'] ?? '';
|
||||
|
||||
$dsn = "mysql:host=".$db_host.";dbname=".$db_name.";charset=utf8mb4";
|
||||
|
||||
$options = [
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::ATTR_EMULATE_PREPARES => false
|
||||
];
|
||||
|
||||
$pdo = new PDO($dsn, $db_user, $db_pass, $options);
|
||||
return $pdo;
|
||||
}
|
||||
```
|
||||
|
||||
### 환경 변수 (.env)
|
||||
|
||||
```env
|
||||
DB_HOST=localhost
|
||||
DB_NAME=chandj
|
||||
DB_USER=chandj
|
||||
DB_PASS=your_password
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 백업 권장
|
||||
|
||||
### 일일 백업
|
||||
|
||||
```bash
|
||||
mysqldump -u chandj -p chandj > backup_$(date +%Y%m%d).sql
|
||||
```
|
||||
|
||||
### 주요 테이블 우선 백업
|
||||
|
||||
```bash
|
||||
mysqldump -u chandj -p chandj output estimate instock eworks member > critical_backup.sql
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*문서 작성일: 2025-12-13*
|
||||
335
docs/MODULES.md
Normal file
335
docs/MODULES.md
Normal file
@@ -0,0 +1,335 @@
|
||||
# 5130 모듈 상세 문서
|
||||
|
||||
## 모듈 분류
|
||||
|
||||
### 핵심 업무 모듈
|
||||
|
||||
| 모듈 | 폴더 | 파일 수 | 설명 |
|
||||
|------|------|---------|------|
|
||||
| 견적 | `estimate/` | 67 | 스크린/스라트 견적 |
|
||||
| 출고 | `output/` | 136 | 주문/출고 관리 |
|
||||
| 작업 | `work/` | 33 | 생산/작업 관리 |
|
||||
| 수입검사 | `instock/` | 50 | 자재 입고/검사 |
|
||||
| LOT | `lot/` | - | LOT 관리 |
|
||||
|
||||
### 전자결재 모듈
|
||||
|
||||
| 모듈 | 폴더 | 설명 |
|
||||
|------|------|------|
|
||||
| 연차 | `annualleave/` | 연차/반차/조퇴 신청 |
|
||||
| 품의서 | `askitem/` | 품의 신청 (경동) |
|
||||
| 품의서 | `askitem_juil/` | 품의 신청 (주일) |
|
||||
| 지출결의 | `askitem_ER/` | 지출결의서 (경동) |
|
||||
| 지출결의 | `askitem_ER_juil/` | 지출결의서 (주일) |
|
||||
|
||||
### 회계 모듈
|
||||
|
||||
| 모듈 | 폴더 | 설명 |
|
||||
|------|------|------|
|
||||
| 회계 | `account/` | 회계 관리 (경동) |
|
||||
| 회계 | `account_juil/` | 회계 관리 (주일) |
|
||||
| 회계계획 | `account_plan/` | 회계 계획 (경동) |
|
||||
| 회계계획 | `account_plan_juil/` | 회계 계획 (주일) |
|
||||
|
||||
### 자산 관리 모듈
|
||||
|
||||
| 모듈 | 폴더 | 설명 |
|
||||
|------|------|------|
|
||||
| 차량 | `car/` | 차량 관리 (정비, 오일교환) |
|
||||
| 지게차 | `lift/` | 지게차 관리 |
|
||||
|
||||
### 게시판 모듈
|
||||
|
||||
| 모듈 | 폴더 | 설명 |
|
||||
|------|------|------|
|
||||
| 공지 | `notice/` | 공지사항 |
|
||||
| 자료실 | `qna/` | 자료실/Q&A |
|
||||
| 개발일지 | `rnd/` | R&D 개발일지 |
|
||||
|
||||
### 기타 모듈
|
||||
|
||||
| 모듈 | 폴더 | 설명 |
|
||||
|------|------|------|
|
||||
| 회원 | `member/` | 회원 관리 |
|
||||
| 로그인 | `login/` | 인증 |
|
||||
| 벤딩 | `bending/` | 벤딩 작업 |
|
||||
| 벤딩비 | `bendingfee/` | 벤딩 비용 |
|
||||
| 입찰 | `bid/` | 입찰 관리 |
|
||||
| A/S | `as/` | A/S 관리 |
|
||||
| 분석 | `analysis/` | 데이터 분석 |
|
||||
| 단가 | `KDunitprice/` | 단가 관리 |
|
||||
|
||||
---
|
||||
|
||||
## 견적 모듈 (`estimate/`)
|
||||
|
||||
### 파일 구조
|
||||
|
||||
```
|
||||
estimate/
|
||||
├── list.php # 견적 목록
|
||||
├── write_form.php # 견적 작성/수정
|
||||
├── update.php # 견적 저장
|
||||
├── delete.php # 견적 삭제
|
||||
├── view.php # 견적 상세
|
||||
│
|
||||
├── estimate.php # 스크린 견적서 출력
|
||||
├── estimateSlat.php # 스라트 견적서 출력
|
||||
│
|
||||
├── get_screen_amount.php # 스크린 금액 계산 엔진
|
||||
├── get_slat_amount.php # 스라트 금액 계산 엔진
|
||||
│
|
||||
├── EsDetail_screen.php # 스크린 상세 정보
|
||||
├── EsDetail_slat.php # 스라트 상세 정보
|
||||
│
|
||||
├── common/ # 공통 컴포넌트
|
||||
├── css/ # 스타일
|
||||
│
|
||||
├── _request.php # 요청 처리
|
||||
├── _row.php # 행 템플릿
|
||||
│
|
||||
└── README.md # 모듈 문서
|
||||
```
|
||||
|
||||
### 주요 기능
|
||||
|
||||
1. **견적 작성**: 스크린/스라트 제품 견적
|
||||
2. **금액 계산**: 자동 견적 금액 산출
|
||||
3. **견적서 출력**: PDF/인쇄 형태 견적서
|
||||
4. **이력 관리**: 견적 수정 이력
|
||||
|
||||
---
|
||||
|
||||
## 출고 모듈 (`output/`)
|
||||
|
||||
### 파일 구조
|
||||
|
||||
```
|
||||
output/
|
||||
├── list.php # 출고 목록
|
||||
├── write_form.php # 출고 작성/수정
|
||||
├── update.php # 출고 저장
|
||||
├── delete.php # 출고 삭제
|
||||
│
|
||||
├── delivery.php # 배송 관리
|
||||
├── bendingview.php # 벤딩 뷰
|
||||
│
|
||||
├── statistics.php # 출고 통계
|
||||
├── list_deliveryfee.php # 배차/운송비 목록
|
||||
│
|
||||
├── list_ACI.php # 인정검사 목록
|
||||
├── write_ACI.php # 인정검사 (스크린)
|
||||
├── write_ACI_slat.php # 인정검사 (스라트)
|
||||
│
|
||||
├── common/ # 공통 컴포넌트 (29개)
|
||||
├── css/ # 스타일
|
||||
│
|
||||
├── _request.php # 요청 처리
|
||||
├── _row.php # 행 템플릿
|
||||
└── _row_extra.php # 추가 행 템플릿
|
||||
```
|
||||
|
||||
### 주요 기능
|
||||
|
||||
1. **주문 접수**: 고객 주문 등록
|
||||
2. **출고 관리**: 출고 예정일, 출고 완료 관리
|
||||
3. **배차**: 배송 차량 및 운송비 관리
|
||||
4. **인정검사**: KS/KW 인증 검사 기록
|
||||
5. **통계**: 일/월/년 출고 통계
|
||||
|
||||
### 상태 플로우
|
||||
|
||||
```
|
||||
접수 → 생산예정 → 생산완료 → 출고예정 → 출고완료
|
||||
↓
|
||||
인정검사 요청 → 인정검사 완료
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 수입검사 모듈 (`instock/`)
|
||||
|
||||
### 파일 구조
|
||||
|
||||
```
|
||||
instock/
|
||||
├── list.php # 검사 목록
|
||||
├── write_form.php # 검사 등록
|
||||
├── update.php # 검사 저장
|
||||
│
|
||||
├── i_EGI155.php # EGI155 검사 양식
|
||||
├── i_Fireproof_sealings.php # 방화 실링 검사
|
||||
├── i_GIplate.php # GI 판재 검사
|
||||
├── i_SUScoil.php # SUS 코일 검사
|
||||
│
|
||||
├── statistics.php # 구매 통계
|
||||
├── func_statistics.php # 통계 함수
|
||||
│
|
||||
├── fetch_*.php # AJAX 데이터 조회
|
||||
├── common/ # 공통 컴포넌트
|
||||
└── css/ # 스타일
|
||||
```
|
||||
|
||||
### 주요 기능
|
||||
|
||||
1. **검사 등록**: 자재별 수입검사 기록
|
||||
2. **품목별 양식**: 자재 유형별 검사 양식
|
||||
3. **합격/불합격**: 검사 판정
|
||||
4. **구매 통계**: 월별 구매 현황
|
||||
|
||||
### 품목별 검사 양식
|
||||
|
||||
- `i_EGI155.php`: EGI155 강판
|
||||
- `i_GIplate.php`: GI 판재
|
||||
- `i_SUScoil.php`: SUS 코일
|
||||
- `i_Fireproof_sealings.php`: 방화 실링재
|
||||
|
||||
---
|
||||
|
||||
## 작업 관리 모듈 (`work/`)
|
||||
|
||||
### 파일 구조
|
||||
|
||||
```
|
||||
work/
|
||||
├── list.php # 작업 목록
|
||||
├── write_form.php # 작업 등록
|
||||
├── update.php # 작업 저장
|
||||
├── delete.php # 작업 삭제
|
||||
│
|
||||
├── handover_list.php # 인계서 목록
|
||||
├── handover_doc.php # 인계서 문서
|
||||
├── delete_handover.php # 인계서 삭제
|
||||
│
|
||||
├── accountlist.php # 정산 목록
|
||||
├── accountlist_good.php # 양품 정산
|
||||
├── accountlist_bad.php # 불량 정산
|
||||
├── accountlist_request.php # 요청 정산
|
||||
│
|
||||
├── _request.php # 요청 처리
|
||||
└── _row.php # 행 템플릿
|
||||
```
|
||||
|
||||
### 주요 기능
|
||||
|
||||
1. **작업 등록**: 생산 작업 기록
|
||||
2. **인계서**: 작업 인계 문서 관리
|
||||
3. **정산**: 양품/불량 정산 처리
|
||||
|
||||
---
|
||||
|
||||
## 전자결재 시스템
|
||||
|
||||
### 공통 테이블: `eworks`
|
||||
|
||||
모든 전자결재 문서가 `eworks` 테이블에 저장됩니다.
|
||||
|
||||
```sql
|
||||
eworks 테이블 주요 컬럼:
|
||||
- num: PK
|
||||
- eworks_item: 문서 유형 (품의서, 지출결의서, 연차 등)
|
||||
- al_company: 회사 (경동, 주일)
|
||||
- indate: 작성일
|
||||
- status: 결재 상태
|
||||
- e_line_id: 결재라인
|
||||
- e_confirm: 결재 완료 정보
|
||||
```
|
||||
|
||||
### 결재 상태
|
||||
|
||||
```
|
||||
draft → pending → approved / rejected
|
||||
↓
|
||||
end (결재 완료)
|
||||
```
|
||||
|
||||
### 연차 신청 (`annualleave/`)
|
||||
|
||||
```
|
||||
annualleave/
|
||||
├── index.php # 연차 현황
|
||||
├── write_form.php # 신청 작성
|
||||
├── list.php # 신청 목록
|
||||
└── ...
|
||||
```
|
||||
|
||||
### 품의서 (`askitem/`)
|
||||
|
||||
```
|
||||
askitem/
|
||||
├── list.php # 품의 목록
|
||||
├── write_form.php # 품의 작성
|
||||
└── ...
|
||||
```
|
||||
|
||||
### 지출결의서 (`askitem_ER/`)
|
||||
|
||||
```
|
||||
askitem_ER/
|
||||
├── list.php # 지출결의 목록
|
||||
├── write_form.php # 지출결의 작성
|
||||
└── ...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 게시판 모듈 공통 구조
|
||||
|
||||
모든 게시판은 유사한 파일 구조를 가집니다:
|
||||
|
||||
```
|
||||
{board}/
|
||||
├── list.php # 목록
|
||||
├── view.php # 상세 보기
|
||||
├── write_form.php # 작성/수정
|
||||
├── update.php # 저장
|
||||
├── delete.php # 삭제
|
||||
├── delete_ripple.php # 댓글 삭제
|
||||
└── common/ # 공통 컴포넌트
|
||||
```
|
||||
|
||||
### 공지사항 (`notice/`)
|
||||
|
||||
- 전체 공지 기능 (`noticecheck='y'`)
|
||||
- 댓글 기능 (`notice_ripple` 테이블)
|
||||
|
||||
### 자료실 (`qna/`)
|
||||
|
||||
- 파일 첨부 기능
|
||||
- 카테고리 분류
|
||||
|
||||
### 개발일지 (`rnd/`)
|
||||
|
||||
- R&D 활동 기록
|
||||
- 프로젝트별 분류
|
||||
|
||||
---
|
||||
|
||||
## 모듈 개발 가이드
|
||||
|
||||
### 새 모듈 생성 시 필수 파일
|
||||
|
||||
1. `list.php` - 목록 페이지
|
||||
2. `write_form.php` - 등록/수정 폼
|
||||
3. `update.php` - 데이터 저장
|
||||
4. `delete.php` - 데이터 삭제
|
||||
5. `_request.php` - 요청 파라미터 처리
|
||||
6. `_row.php` - 행 템플릿
|
||||
|
||||
### 공통 include 순서
|
||||
|
||||
```php
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/load_header.php");
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/common.php");
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
|
||||
|
||||
$pdo = db_connect();
|
||||
// ... 로직
|
||||
?>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*문서 작성일: 2025-12-13*
|
||||
366
docs/README.md
Normal file
366
docs/README.md
Normal file
@@ -0,0 +1,366 @@
|
||||
# 5130 프로젝트 문서
|
||||
|
||||
## 프로젝트 개요
|
||||
|
||||
**5130**은 (주)경동기업의 방화셔터 및 철강 제조업 관리 시스템입니다. PHP 7.3 기반의 레거시 웹 애플리케이션으로, 견적, 출고, 재고, 전자결재 등 제조업 전반의 업무를 관리합니다.
|
||||
|
||||
### 기본 정보
|
||||
|
||||
| 항목 | 내용 |
|
||||
|------|------|
|
||||
| 도메인 | https://5130.co.kr, https://5130.sam.kr (개발) |
|
||||
| PHP 버전 | 7.3 |
|
||||
| 데이터베이스 | MySQL 8.0 (chandj) |
|
||||
| UI 프레임워크 | Bootstrap 5, jQuery |
|
||||
| 회사 | (주)경동기업, (주)주일철강 |
|
||||
|
||||
### 핵심 기능
|
||||
|
||||
- **견적 시스템**: 스크린/스라트 방화셔터 견적 산출
|
||||
- **출고 관리**: 주문 접수부터 출고 완료까지 전체 프로세스
|
||||
- **수입검사**: 자재 입고 및 품질 검사
|
||||
- **전자결재**: 품의서, 지출결의서, 연차신청 등
|
||||
- **재고 관리**: LOT 관리, 자재 입출고
|
||||
- **Dashboard**: 실시간 현황 및 통계
|
||||
|
||||
---
|
||||
|
||||
## 기술 스택
|
||||
|
||||
```
|
||||
Backend: PHP 7.3
|
||||
Database: MySQL 8.0 (PDO)
|
||||
Frontend: Bootstrap 5, jQuery, Bootstrap Icons
|
||||
Charts: (통계 차트용)
|
||||
Grid: AG-Grid (일부 모듈)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 프로젝트 구조
|
||||
|
||||
```
|
||||
5130/
|
||||
├── index.php # 메인 대시보드
|
||||
├── session.php # 세션 관리 (.env 로드 포함)
|
||||
├── common.php # 공통 유틸리티 함수
|
||||
├── proDB.php # JSON API (CRUD 작업)
|
||||
├── lib/
|
||||
│ └── mydb.php # PDO 데이터베이스 연결
|
||||
│
|
||||
├── estimate/ # 견적 모듈
|
||||
├── output/ # 출고 관리
|
||||
├── work/ # 작업/생산 관리
|
||||
├── instock/ # 수입검사/입고
|
||||
├── lot/ # LOT 관리
|
||||
│
|
||||
├── account/ # 회계 (경동)
|
||||
├── account_juil/ # 회계 (주일)
|
||||
├── account_plan/ # 회계 계획
|
||||
│
|
||||
├── annualleave/ # 연차 관리
|
||||
├── askitem/ # 품의서
|
||||
├── askitem_ER/ # 지출결의서
|
||||
│
|
||||
├── notice/ # 공지사항
|
||||
├── qna/ # 자료실
|
||||
├── rnd/ # 개발일지
|
||||
│
|
||||
├── member/ # 회원 관리
|
||||
├── login/ # 로그인
|
||||
│
|
||||
├── car/ # 차량 관리
|
||||
├── lift/ # 지게차 관리
|
||||
│
|
||||
├── bending/ # 벤딩 관리
|
||||
├── bendingfee/ # 벤딩 비용
|
||||
│
|
||||
├── dbeditor/ # phpMyAdmin (DB 관리 도구)
|
||||
├── DBcontrol/ # DB 제어 유틸
|
||||
│
|
||||
├── img/ # 이미지 리소스
|
||||
├── js/ # JavaScript 파일
|
||||
├── css/ # CSS 스타일
|
||||
└── docs/ # 문서 (현재 폴더)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 핵심 모듈 상세
|
||||
|
||||
### 1. 견적 모듈 (`estimate/`)
|
||||
|
||||
방화셔터(스크린/스라트) 견적 산출 시스템
|
||||
|
||||
**주요 파일:**
|
||||
- `list.php` - 견적 목록
|
||||
- `write_form.php` - 견적 작성/수정
|
||||
- `estimate.php` / `estimateSlat.php` - 견적서 출력
|
||||
- `get_screen_amount.php` - 스크린 금액 계산
|
||||
- `get_slat_amount.php` - 스라트 금액 계산
|
||||
|
||||
**상세 문서:** [estimate/README.md](../estimate/README.md)
|
||||
|
||||
### 2. 출고 모듈 (`output/`)
|
||||
|
||||
주문 접수부터 출고까지 전체 프로세스 관리 (136개 파일)
|
||||
|
||||
**주요 파일:**
|
||||
- `list.php` - 출고 목록
|
||||
- `write_form.php` - 출고 작성/수정
|
||||
- `delivery.php` - 배송 관리
|
||||
- `statistics.php` - 출고 통계
|
||||
- `list_ACI.php` - 인정검사 목록
|
||||
- `write_ACI.php` / `write_ACI_slat.php` - 인정검사 작성
|
||||
|
||||
**주요 테이블:** `output`
|
||||
|
||||
### 3. 수입검사 모듈 (`instock/`)
|
||||
|
||||
자재 입고 및 품질 검사 관리
|
||||
|
||||
**주요 파일:**
|
||||
- `list.php` - 수입검사 목록
|
||||
- `write_form.php` - 검사 등록
|
||||
- `i_*.php` - 품목별 검사 양식 (EGI155, GIplate, SUScoil 등)
|
||||
- `statistics.php` - 구매 통계
|
||||
|
||||
**주요 테이블:** `instock`
|
||||
|
||||
### 4. 작업 관리 모듈 (`work/`)
|
||||
|
||||
생산 작업 및 인계 관리
|
||||
|
||||
**주요 파일:**
|
||||
- `list.php` - 작업 목록
|
||||
- `write_form.php` - 작업 등록
|
||||
- `handover_list.php` / `handover_doc.php` - 인계서 관리
|
||||
- `accountlist.php` - 정산 목록
|
||||
|
||||
### 5. 전자결재 (`annualleave/`, `askitem/`, `askitem_ER/`)
|
||||
|
||||
**연차 신청 (`annualleave/`):**
|
||||
- 연차/반차/조퇴 신청 및 승인
|
||||
- 결재라인 설정
|
||||
|
||||
**품의서 (`askitem/`):**
|
||||
- 물품 구매 등 품의 신청
|
||||
|
||||
**지출결의서 (`askitem_ER/`):**
|
||||
- 비용 지출 결의
|
||||
|
||||
**공통 테이블:** `eworks` (전자결재 통합 테이블)
|
||||
|
||||
---
|
||||
|
||||
## 데이터베이스 구조
|
||||
|
||||
### 주요 테이블
|
||||
|
||||
| 테이블명 | 설명 |
|
||||
|----------|------|
|
||||
| `output` | 출고/주문 정보 |
|
||||
| `estimate` | 견적 정보 |
|
||||
| `instock` | 수입검사/입고 |
|
||||
| `eworks` | 전자결재 (연차, 품의서, 지출결의서) |
|
||||
| `notice` | 공지사항 |
|
||||
| `qna` | 자료실 |
|
||||
| `rnd` | 개발일지 |
|
||||
| `member` | 회원 정보 |
|
||||
| `car` | 차량 정보 |
|
||||
| `lift` | 지게차 정보 |
|
||||
| `lot` | LOT 정보 |
|
||||
|
||||
### 데이터베이스 연결
|
||||
|
||||
```php
|
||||
// lib/mydb.php
|
||||
function db_connect(){
|
||||
loadEnv();
|
||||
$db_host = $_ENV['DB_HOST'] ?? 'localhost';
|
||||
$db_name = $_ENV['DB_NAME'] ?? 'chandj';
|
||||
$db_user = $_ENV['DB_USER'] ?? 'chandj';
|
||||
$db_pass = $_ENV['DB_PASS'] ?? '';
|
||||
|
||||
$dsn = "mysql:host=".$db_host.";dbname=".$db_name.";charset=utf8mb4";
|
||||
$pdo = new PDO($dsn, $db_user, $db_pass, [
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
|
||||
]);
|
||||
return $pdo;
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 세션 및 인증
|
||||
|
||||
### 세션 변수
|
||||
|
||||
```php
|
||||
// session.php에서 관리
|
||||
$_SESSION["level"] // 권한 레벨 (1: 관리자)
|
||||
$_SESSION["name"] // 사용자 이름
|
||||
$_SESSION["userid"] // 사용자 ID
|
||||
$_SESSION["DB"] // 데이터베이스명 (기본: chandj)
|
||||
$_SESSION["eworks_lv"] // 결재 레벨
|
||||
$_SESSION["eworks_level"] // 결재 단계
|
||||
$_SESSION["position"] // 직급
|
||||
$_SESSION["mycompany"] // 회사 (경동/주일)
|
||||
$_SESSION["mypart"] // 부서
|
||||
$_SESSION["authority"] // 특수 권한 (ACCOUNT: 회계권한)
|
||||
```
|
||||
|
||||
### 권한 체크
|
||||
|
||||
```php
|
||||
// index.php 예시
|
||||
if(!isset($_SESSION["level"]) || intval($_SESSION["level"]) > 7) {
|
||||
header("Location:" . $WebSite . "login/login_form.php");
|
||||
exit;
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## API 엔드포인트
|
||||
|
||||
### proDB.php - 범용 CRUD API
|
||||
|
||||
```
|
||||
POST /proDB.php
|
||||
Content-Type: application/json
|
||||
|
||||
Parameters:
|
||||
- table: 테이블명
|
||||
- command: insert | update | delete
|
||||
- field: 필드명
|
||||
- strtmp: 값
|
||||
- recnum: 레코드 번호 (update/delete 시)
|
||||
|
||||
Response: JSON
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 환경 설정
|
||||
|
||||
### .env 파일
|
||||
|
||||
```env
|
||||
DB_HOST=localhost
|
||||
DB_NAME=chandj
|
||||
DB_USER=chandj
|
||||
DB_PASS=password
|
||||
APP_URL=https://5130.co.kr
|
||||
```
|
||||
|
||||
### Docker 설정 (개발 환경)
|
||||
|
||||
- 도메인: `5130.sam.kr`
|
||||
- PHP 컨테이너: `php73:9000`
|
||||
- Nginx 프록시 설정 참조: `docker/nginx/nginx.conf`
|
||||
|
||||
---
|
||||
|
||||
## 코드 패턴
|
||||
|
||||
### 목록 페이지 패턴
|
||||
|
||||
```php
|
||||
// list.php 일반 구조
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
|
||||
|
||||
$pdo = db_connect();
|
||||
|
||||
// 검색 조건
|
||||
$where = " WHERE 1=1 ";
|
||||
if(!empty($search)) {
|
||||
$where .= " AND field LIKE '%$search%' ";
|
||||
}
|
||||
|
||||
// 페이징
|
||||
$sql = "SELECT COUNT(*) FROM table" . $where;
|
||||
$total = $pdo->query($sql)->fetchColumn();
|
||||
|
||||
// 데이터 조회
|
||||
$sql = "SELECT * FROM table" . $where . " ORDER BY num DESC LIMIT $start, $limit";
|
||||
$stmh = $pdo->query($sql);
|
||||
```
|
||||
|
||||
### 등록/수정 페이지 패턴
|
||||
|
||||
```php
|
||||
// write_form.php 일반 구조
|
||||
$mode = $_REQUEST['mode'] ?? 'write';
|
||||
$num = $_REQUEST['num'] ?? '';
|
||||
|
||||
if($mode == 'modify' || $mode == 'view') {
|
||||
// 기존 데이터 조회
|
||||
$sql = "SELECT * FROM table WHERE num = ?";
|
||||
$stmh = $pdo->prepare($sql);
|
||||
$stmh->execute([$num]);
|
||||
$row = $stmh->fetch();
|
||||
}
|
||||
|
||||
// 폼 처리는 update.php에서
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 주요 공통 함수
|
||||
|
||||
### common.php
|
||||
|
||||
```php
|
||||
// 날짜 관련
|
||||
specialDate($date) // 특수 날짜 변환
|
||||
NullCheckDate($date) // NULL 날짜 체크
|
||||
trans_date($date) // 날짜 형식 변환
|
||||
|
||||
// 연차 계산
|
||||
calculateAnnualLeave($info) // 연차 계산
|
||||
|
||||
// 카테고리
|
||||
getCategoryByName($name) // 카테고리 조회
|
||||
|
||||
// 모델 선택
|
||||
selectModel($code) // 제품 모델 선택
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 보안 고려사항
|
||||
|
||||
### 현재 구현
|
||||
|
||||
1. 세션 기반 인증
|
||||
2. 권한 레벨 체크 (`$_SESSION["level"]`)
|
||||
3. PDO Prepared Statements (일부)
|
||||
|
||||
### 개선 필요 사항
|
||||
|
||||
1. CSRF 토큰 미적용
|
||||
2. 일부 SQL 인젝션 취약점 (직접 쿼리 문자열 연결)
|
||||
3. XSS 필터링 불완전
|
||||
4. 입력값 검증 강화 필요
|
||||
|
||||
---
|
||||
|
||||
## 관련 문서
|
||||
|
||||
- [견적 모듈 상세](../estimate/README.md)
|
||||
- [동적 행 생성 시스템](../README.md)
|
||||
|
||||
---
|
||||
|
||||
## 변경 이력
|
||||
|
||||
| 날짜 | 내용 |
|
||||
|------|------|
|
||||
| 2025-12-13 | 초기 문서 작성 (Claude Code 분석) |
|
||||
|
||||
---
|
||||
|
||||
*이 문서는 코드 분석을 통해 자동 생성되었습니다.*
|
||||
Reference in New Issue
Block a user