234 lines
5.3 KiB
Markdown
234 lines
5.3 KiB
Markdown
|
|
# 현장관리 분석 결과
|
||
|
|
|
||
|
|
> 분석 일시: 2024-12-18
|
||
|
|
> 분석 대상: design/mes기획서_리액트 (디자인팀 기획 사이트)
|
||
|
|
|
||
|
|
## 분석 목적
|
||
|
|
|
||
|
|
디자인팀에서 제작한 기획 사이트의 현장관리 기능을 분석하여 API 개발에 필요한 스펙을 추출합니다.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## UI 스크린샷
|
||
|
|
|
||
|
|
### 1. 현장 목록 페이지
|
||
|
|

|
||
|
|
|
||
|
|
**주요 요소:**
|
||
|
|
- 테이블 컬럼: 번호, 현장코드, 현장명, 거래처, 주소, 등록일
|
||
|
|
- 검색 기능
|
||
|
|
- 현장 등록 버튼
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2. 현장 상세 페이지
|
||
|
|

|
||
|
|
|
||
|
|
**주요 섹션:**
|
||
|
|
|
||
|
|
**기본 정보:**
|
||
|
|
| 필드 | 설명 |
|
||
|
|
|------|------|
|
||
|
|
| 현장코드 | 자동 생성 |
|
||
|
|
| 현장명 | 현장 이름 |
|
||
|
|
| 진행상태 | 수주확정, 생산중, 출하대기, 설치중, 설치완료 |
|
||
|
|
| 거래처 | 연결된 거래처 |
|
||
|
|
| 설치예정일 | 예정 날짜 |
|
||
|
|
| 진행률 | 0~100% |
|
||
|
|
| 현장주소 | 주소 |
|
||
|
|
| 현장연락처 | 연락처 |
|
||
|
|
| 설치담당자 | 담당자명 |
|
||
|
|
| 담당자 연락처 | 담당자 연락처 |
|
||
|
|
| 특이사항 | 메모 |
|
||
|
|
|
||
|
|
**수주내역:**
|
||
|
|
- 연결된 수주 목록 표시
|
||
|
|
- 수주번호, 품목, 수량, 금액 등
|
||
|
|
|
||
|
|
**출고내역:**
|
||
|
|
- 출고된 품목 목록
|
||
|
|
- 출고일, 수량, 상태 등
|
||
|
|
|
||
|
|
**변경이력:**
|
||
|
|
- 상태 변경 이력
|
||
|
|
- 변경일, 변경내용, 변경자
|
||
|
|
|
||
|
|
**헤더 버튼:**
|
||
|
|
- 목록
|
||
|
|
- 수정
|
||
|
|
- 삭제
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 3. 현장 등록 폼
|
||
|
|

|
||
|
|
|
||
|
|
**입력 섹션:**
|
||
|
|
|
||
|
|
**현장 정보:**
|
||
|
|
| 필드명 | 타입 | 필수 | 비고 |
|
||
|
|
|--------|------|------|------|
|
||
|
|
| 현장명 | text | ✅ | |
|
||
|
|
| 거래처 | select/search | ✅ | 거래처 선택 |
|
||
|
|
| 현장주소 | text | | 우편번호 검색 |
|
||
|
|
| 현장연락처 | text | | |
|
||
|
|
| 진행상태 | select | | 기본: 수주확정 |
|
||
|
|
|
||
|
|
**설치 담당자:**
|
||
|
|
| 필드명 | 타입 | 필수 | 비고 |
|
||
|
|
|--------|------|------|------|
|
||
|
|
| 담당자명 | text | | |
|
||
|
|
| 연락처 | text | | |
|
||
|
|
| 설치예정일 | date | | |
|
||
|
|
| 설치완료일 | date | | |
|
||
|
|
| 특이사항 | textarea | | |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 데이터 스키마
|
||
|
|
|
||
|
|
### Site (현장)
|
||
|
|
```
|
||
|
|
sites
|
||
|
|
├── id (PK)
|
||
|
|
├── tenant_id (FK)
|
||
|
|
├── site_code (UNIQUE) - 자동 채번
|
||
|
|
├── name - 현장명
|
||
|
|
├── customer_id (FK) - 거래처
|
||
|
|
├── customer_name - 거래처명 (스냅샷)
|
||
|
|
├── status - 진행상태
|
||
|
|
├── progress_rate - 진행률 (0-100)
|
||
|
|
├── address - 현장주소
|
||
|
|
├── address_detail - 상세주소
|
||
|
|
├── phone - 현장연락처
|
||
|
|
├── installer_name - 설치담당자
|
||
|
|
├── installer_phone - 담당자 연락처
|
||
|
|
├── scheduled_date - 설치예정일
|
||
|
|
├── completed_date - 설치완료일
|
||
|
|
├── note - 특이사항
|
||
|
|
├── created_at
|
||
|
|
├── updated_at
|
||
|
|
└── deleted_at
|
||
|
|
```
|
||
|
|
|
||
|
|
### SiteHistory (현장 변경이력)
|
||
|
|
```
|
||
|
|
site_histories
|
||
|
|
├── id (PK)
|
||
|
|
├── site_id (FK)
|
||
|
|
├── changed_field - 변경 필드
|
||
|
|
├── old_value - 이전 값
|
||
|
|
├── new_value - 변경 값
|
||
|
|
├── changed_by - 변경자
|
||
|
|
├── changed_at - 변경일시
|
||
|
|
└── note - 비고
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 상태 흐름
|
||
|
|
|
||
|
|
```
|
||
|
|
수주확정 → 생산중 → 출하대기 → 설치중 → 설치완료
|
||
|
|
```
|
||
|
|
|
||
|
|
| 상태 | 설명 | 진행률 범위 |
|
||
|
|
|------|------|-------------|
|
||
|
|
| 수주확정 | 수주 완료, 생산 대기 | 0-10% |
|
||
|
|
| 생산중 | 제품 생산 진행 | 10-50% |
|
||
|
|
| 출하대기 | 생산 완료, 출하 대기 | 50-70% |
|
||
|
|
| 설치중 | 현장 설치 진행 | 70-90% |
|
||
|
|
| 설치완료 | 설치 완료 | 100% |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## API 스펙
|
||
|
|
|
||
|
|
### 현장 CRUD
|
||
|
|
|
||
|
|
```
|
||
|
|
GET /api/sites - 현장 목록
|
||
|
|
GET /api/sites/{id} - 현장 상세
|
||
|
|
POST /api/sites - 현장 등록
|
||
|
|
PUT /api/sites/{id} - 현장 수정
|
||
|
|
DELETE /api/sites/{id} - 현장 삭제
|
||
|
|
DELETE /api/sites - 현장 일괄 삭제
|
||
|
|
```
|
||
|
|
|
||
|
|
### 현장 관련 조회
|
||
|
|
|
||
|
|
```
|
||
|
|
GET /api/sites/{id}/orders - 현장별 수주 내역
|
||
|
|
GET /api/sites/{id}/shipments - 현장별 출고 내역
|
||
|
|
GET /api/sites/{id}/history - 현장 변경 이력
|
||
|
|
```
|
||
|
|
|
||
|
|
### 현장 상태 변경
|
||
|
|
|
||
|
|
```
|
||
|
|
POST /api/sites/{id}/status - 상태 변경
|
||
|
|
```
|
||
|
|
|
||
|
|
**Request Body:**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"status": "생산중",
|
||
|
|
"note": "생산 시작"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### 목록 조회 Query Parameters
|
||
|
|
|
||
|
|
| 파라미터 | 타입 | 설명 |
|
||
|
|
|----------|------|------|
|
||
|
|
| status | string | 진행상태 필터 |
|
||
|
|
| customer_id | number | 거래처 필터 |
|
||
|
|
| search | string | 검색어 (현장코드, 현장명) |
|
||
|
|
| page | number | 페이지 번호 |
|
||
|
|
| per_page | number | 페이지당 개수 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 채번 규칙
|
||
|
|
|
||
|
|
```
|
||
|
|
현장코드: S-{연도2자리}{월2자리}-{순번3자리}
|
||
|
|
예시: S-2412-001, S-2412-002
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 연관 관계
|
||
|
|
|
||
|
|
### 현장과 수주 연결
|
||
|
|
|
||
|
|
```
|
||
|
|
sites 1:N orders (site_id)
|
||
|
|
- 하나의 현장에 여러 수주가 연결될 수 있음
|
||
|
|
- 수주 생성 시 현장 자동 생성 또는 기존 현장 선택
|
||
|
|
```
|
||
|
|
|
||
|
|
### 현장과 거래처 연결
|
||
|
|
|
||
|
|
```
|
||
|
|
customers 1:N sites (customer_id)
|
||
|
|
- 하나의 거래처가 여러 현장을 가질 수 있음
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 진행률 자동 계산
|
||
|
|
|
||
|
|
```javascript
|
||
|
|
// 수주 품목 기준 진행률 계산
|
||
|
|
progress_rate = (완료_품목_수 / 전체_품목_수) * 100
|
||
|
|
|
||
|
|
// 또는 상태별 기본 진행률
|
||
|
|
status_progress = {
|
||
|
|
'수주확정': 10,
|
||
|
|
'생산중': 30,
|
||
|
|
'출하대기': 60,
|
||
|
|
'설치중': 80,
|
||
|
|
'설치완료': 100
|
||
|
|
}
|
||
|
|
```
|