2026-03-16 17:40:47 +09:00
|
|
|
|
# 절곡품 관리 기능 개발 계획서
|
|
|
|
|
|
|
|
|
|
|
|
> **시작일**: 2026-03-16
|
|
|
|
|
|
> **위치**: MNG 생산관리 > 절곡품 관리 (신규 메뉴)
|
|
|
|
|
|
> **목표**: 경동기업(5130) 수준의 절곡품 마스터 관리 + 전개도 데이터 + 이미지 관리
|
|
|
|
|
|
> **원칙**: 기존 BendingInfoBuilder/PrefixResolver 보존, items.options 확장 방식
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 배경
|
|
|
|
|
|
|
|
|
|
|
|
SAM은 절곡품의 "계산과 조합"(BendingInfoBuilder/PrefixResolver)은 잘 되어 있지만,
|
|
|
|
|
|
"관리와 시각화"가 빠져 있다. 경동기업(5130) `guiderail/list.php` 수준의 관리 화면을 MNG에 구현한다.
|
|
|
|
|
|
|
|
|
|
|
|
**갭 분석**: `docs/dev/dev_plans/bending-parts-analysis.md` 참조
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## MNG 현재 구조
|
|
|
|
|
|
|
|
|
|
|
|
### 생산관리 메뉴 (sidebar-static.blade.php)
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
생산 관리 (production-group)
|
|
|
|
|
|
├─ 품목기준 필드 관리 ✅ (구현됨)
|
|
|
|
|
|
├─ 견적수식 관리 ✅ (구현됨)
|
|
|
|
|
|
├─ 제품 관리 (준비중)
|
|
|
|
|
|
├─ 자재 관리 (준비중)
|
|
|
|
|
|
├─ BOM 관리 (준비중)
|
|
|
|
|
|
├─ 카테고리 관리 (준비중)
|
|
|
|
|
|
└─ 절곡품 관리 ← 🆕 추가 대상
|
|
|
|
|
|
├─ 기초관리 (개별 부품 CRUD)
|
|
|
|
|
|
└─ 절곡품 (모델별 조합 관리)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 기존 절곡 관련 코드 (MNG)
|
|
|
|
|
|
|
|
|
|
|
|
| 파일 | 역할 | 변경 여부 |
|
|
|
|
|
|
|------|------|----------|
|
|
|
|
|
|
| `views/documents/partials/bending-worklog.blade.php` | 절곡 작업일지 렌더링 | 무변경 |
|
|
|
|
|
|
| `views/documents/partials/bending-inspection-data.blade.php` | 절곡 중간검사 | 무변경 |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-03-17 11:33:47 +09:00
|
|
|
|
## 작업 순서 및 진행 상태
|
2026-03-16 17:40:47 +09:00
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
Step 1 (DB분석) → Step 2 (API) → Step 3 (MNG 화면) → Step 4 (React 연동)
|
2026-03-17 11:33:47 +09:00
|
|
|
|
✅ 완료 ✅ 완료 ✅ 완료 (샘플용) ⬜ 미착수
|
2026-03-16 17:40:47 +09:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-17 11:33:47 +09:00
|
|
|
|
| 문서 | 내용 | 상태 |
|
|
|
|
|
|
|------|------|:---:|
|
|
|
|
|
|
| `step1-데이터분석.md` | 레거시 매핑 + options 확장 | ✅ 완료 |
|
|
|
|
|
|
| `step2-API.md` | API 엔드포인트 + 컨트롤러 설계 | ✅ 완료 |
|
|
|
|
|
|
| `step3-MNG화면.md` | Blade 뷰 + HTMX + 메뉴 등록 | ✅ 완료 |
|
|
|
|
|
|
| `step4-React연동.md` | React 운영 화면 구현 | ⬜ 미착수 |
|
|
|
|
|
|
|
|
|
|
|
|
### 완료된 작업 (2026-03-16~17)
|
|
|
|
|
|
|
|
|
|
|
|
**Step 1 완료:**
|
|
|
|
|
|
- `bending:fill-options` — BD-* prefix/분류 속성 자동 보강 (170건)
|
|
|
|
|
|
- `bending:import-legacy` — chandj 전개도(bendingData) 임포트 (139/170건)
|
|
|
|
|
|
- `guiderail:import-legacy` — chandj guiderail 20건 임포트
|
|
|
|
|
|
- `bending-product:import-legacy` — chandj shutterbox 30건 + bottombar 10건 임포트
|
|
|
|
|
|
|
|
|
|
|
|
**Step 2 완료:**
|
|
|
|
|
|
- `BendingItemController` — CRUD + filters + pagination (6 엔드포인트)
|
|
|
|
|
|
- `GuiderailModelController` — CRUD + filters (6 엔드포인트, 3개 카테고리 통합)
|
|
|
|
|
|
- `BendingItemResource` / `GuiderailModelResource` — API 응답 포맷
|
|
|
|
|
|
- `FormRequest` — Index/Store/Update 유효성 검증
|
|
|
|
|
|
- `ApiKeyMiddleware` — bending/guiderail/files 화이트리스트
|
|
|
|
|
|
|
|
|
|
|
|
**Step 3 완료 (MNG 샘플용):**
|
|
|
|
|
|
- 기초관리: 목록(13컬럼) + 폼(기본정보12필드 + 케이스전용5필드 + 절곡테이블 + 이미지업로드)
|
|
|
|
|
|
- 절곡품: 가이드레일/케이스/하단마감재 별도 메뉴 + 타입별 헤더 분기
|
|
|
|
|
|
- 절곡품 폼: 부품 추가(기초관리 검색 모달) + 삭제 + 수량/품명/재질 편집 + 절곡테이블 inline 편집
|
|
|
|
|
|
- 작업지시서: 레거시 포맷 인쇄 페이지 (`/print`)
|
|
|
|
|
|
- 파일: FileViewController (API R2 프록시) + 이미지 업로드/표시
|
|
|
|
|
|
- DB 메뉴: 기초관리 + 절곡품 + 케이스 + 하단마감재 (4개)
|
2026-03-16 17:40:47 +09:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 참조 문서
|
|
|
|
|
|
|
|
|
|
|
|
| 문서 | 경로 | 용도 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| 갭 분석 | `dev_plans/bending-parts-analysis.md` | 요구사항 기준 |
|
|
|
|
|
|
| API 규칙 | `standards/api-rules.md` | API 네이밍/응답 |
|
|
|
|
|
|
| options 정책 | `standards/options-column-policy.md` | JSON 컬럼 설계 |
|
|
|
|
|
|
| 품목 정책 | `rules/item-policy.md` | BD 코드 체계 |
|
|
|
|
|
|
| Phase 2 | `dev_plans/integrated-phase-2.md` | 절곡 설계 |
|
|
|
|
|
|
| Phase 3 | `dev_plans/integrated-phase-3.md` | 절곡 검사 |
|
|
|
|
|
|
|
|
|
|
|
|
## 프로토타입
|
|
|
|
|
|
|
|
|
|
|
|
| 위치 | 설명 |
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
| `SAM/work/절곡/index.html` | 사이드바 + iframe 전체 구조 |
|
|
|
|
|
|
| `SAM/work/절곡/base.html` | 기초관리 목록 (참고용) |
|
|
|
|
|
|
| `SAM/work/절곡/base-form.html` | 등록/수정 폼 + 절곡 테이블 (참고용) |
|
|
|
|
|
|
| `SAM/work/절곡/products.html` | 절곡품 탭 목록 (참고용) |
|
|
|
|
|
|
| `SAM/work/절곡/product-form.html` | 절곡품 등록/수정 (참고용) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 절곡품 관리 — 전체 흐름도
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 시스템 전체 구조
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────────────────┐
|
|
|
|
|
|
│ SAM 절곡품 관리 시스템 │
|
|
|
|
|
|
├─────────────────────────────────────────────────────────────────────┤
|
|
|
|
|
|
│ │
|
|
|
|
|
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
|
|
|
|
│ │ MNG │ │ API │ │ React │ │
|
|
|
|
|
|
│ │ (샘플용) │────→│ (핵심) │←────│ (운영용) │ │
|
|
|
|
|
|
│ │ Blade │ │ Laravel │ │ Next.js │ │
|
|
|
|
|
|
│ └──────────┘ └─────┬────┘ └──────────┘ │
|
|
|
|
|
|
│ │ │
|
|
|
|
|
|
│ ┌────┴────┐ │
|
|
|
|
|
|
│ │ samdb │ │
|
|
|
|
|
|
│ │ items │ ← item_category = 'BENDING' │
|
|
|
|
|
|
│ │ files │ ← field_key = 'bending_diagram' │
|
|
|
|
|
|
│ └─────────┘ │
|
|
|
|
|
|
│ │ │
|
|
|
|
|
|
│ ┌────┴────┐ │
|
|
|
|
|
|
│ │ R2 │ ← Cloudflare (이미지 저장) │
|
|
|
|
|
|
│ └─────────┘ │
|
|
|
|
|
|
│ │
|
|
|
|
|
|
└─────────────────────────────────────────────────────────────────────┘
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 데이터 구조 (2계층)
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
|
|
|
|
│ │
|
|
|
|
|
|
│ [1계층] 기초관리 — 개별 부품 (items 테이블) │
|
|
|
|
|
|
│ ════════════════════════════════════════ │
|
|
|
|
|
|
│ │
|
|
|
|
|
|
│ items (item_category = 'BENDING') │
|
|
|
|
|
|
│ ┌──────────────────────────────────────────────────┐ │
|
|
|
|
|
|
│ │ id: 100 │ │
|
|
|
|
|
|
│ │ code: BD-가이드레일-KSS01-SUS-120*70 │ │
|
|
|
|
|
|
│ │ name: 가이드레일 KSS01 SUS 120*70 │ │
|
|
|
|
|
|
│ │ options: { │ │
|
|
|
|
|
|
│ │ item_name: "마감재" ← 부품 품명 │ │
|
|
|
|
|
|
│ │ item_sep: "스크린" ← 대분류 │ │
|
|
|
|
|
|
│ │ item_bending: "가이드레일" ← 중분류 │ │
|
|
|
|
|
|
│ │ material: "SUS 1.2T" ← 재질 │ │
|
|
|
|
|
|
│ │ model_name: "KSS01" ← 소속 모델 │ │
|
|
|
|
|
|
│ │ model_UA: "인정" ← 인정여부 │ │
|
|
|
|
|
|
│ │ item_spec: "120*70" ← 규격 │ │
|
|
|
|
|
|
│ │ rail_width: 70 ← 레일폭 │ │
|
|
|
|
|
|
│ │ bendingData: [ ← 전개도 데이터 │ │
|
|
|
|
|
|
│ │ {no:1, input:10, rate:"", sum:10, ...}, │ │
|
|
|
|
|
|
│ │ {no:2, input:11, rate:"", sum:21, ...}, │ │
|
|
|
|
|
|
│ │ ... │ │
|
|
|
|
|
|
│ │ ] │ │
|
|
|
|
|
|
│ │ + 케이스전용: exit_direction, box_width, ... │ │
|
|
|
|
|
|
│ │ } │ │
|
|
|
|
|
|
│ └──────────────────────────────────────────────────┘ │
|
|
|
|
|
|
│ ↑ 265건 (레거시) + α │
|
|
|
|
|
|
│ │
|
|
|
|
|
|
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
|
|
|
|
|
|
│ │
|
|
|
|
|
|
│ [2계층] 절곡품 — 모델별 부품 조합 │
|
|
|
|
|
|
│ ════════════════════════════════ │
|
|
|
|
|
|
│ │
|
|
|
|
|
|
│ ┌────────────────────────────────────────────────────────┐ │
|
|
|
|
|
|
│ │ 가이드레일 모델: KSS01 벽면형 SUS마감 │ │
|
|
|
|
|
|
│ │ │ │
|
|
|
|
|
|
│ │ components (부품 조합): │ │
|
|
|
|
|
|
│ │ ┌─────┬───────────┬──────────┬────┬────────┐ │ │
|
|
|
|
|
|
│ │ │순서 │ 부품명 │ 재질 │수량│전개폭합│ │ │
|
|
|
|
|
|
│ │ ├─────┼───────────┼──────────┼────┼────────┤ │ │
|
|
|
|
|
|
│ │ │ 1 │ 마감재 │ SUS 1.2T│ 2 │ 203 │ ──→ item:100│
|
|
|
|
|
|
│ │ │ 2 │ 본체 │ EGI 1.55│ 1 │ 296 │ ──→ item:101│
|
|
|
|
|
|
│ │ │ 3 │ 벽면형-C │ EGI 1.55│ 1 │ 144 │ ──→ item:102│
|
|
|
|
|
|
│ │ │ 4 │ 벽면형-D │ EGI 1.55│ 1 │ 144 │ ──→ item:103│
|
|
|
|
|
|
│ │ └─────┴───────────┴──────────┴────┴────────┘ │ │
|
|
|
|
|
|
│ │ │ │
|
|
|
|
|
|
│ │ 재질별 폭합: SUS 1.2T → 406 | EGI 1.55T → 398 │ │
|
|
|
|
|
|
│ └────────────────────────────────────────────────────────┘ │
|
|
|
|
|
|
│ ↑ 가이드레일 20건 + 케이스 + 하단마감재 │
|
|
|
|
|
|
│ │
|
|
|
|
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 3. 3가지 타입 비교
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
┌─────────────────┬─────────────────┬─────────────────┐
|
|
|
|
|
|
│ 가이드레일 │ 케이스 │ 하단마감재 │
|
|
|
|
|
|
├─────────────────┼─────────────────┼─────────────────┤
|
|
|
|
|
|
│ │ │ │
|
|
|
|
|
|
│ 모델: KSS01 │ 모델: ❌ 없음 │ 모델: KSS01 │
|
|
|
|
|
|
│ 마감: SUS/EGI │ 마감: ❌ 없음 │ 마감: SUS/EGI │
|
|
|
|
|
|
│ 형상: 벽면/측면 │ 형상: ❌ 없음 │ 형상: ❌ 없음 │
|
|
|
|
|
|
│ 대분류: 스크린/철재│ 대분류: ❌ │ 대분류: 스크린/철재│
|
|
|
|
|
|
│ 인정: 인정/비인정 │ 인정: ❌ │ 인정: 인정/비인정 │
|
|
|
|
|
|
│ │ │ │
|
|
|
|
|
|
│ 규격: 120×70 │ 규격: 650×550 │ 규격: 60×40 │
|
|
|
|
|
|
│ 레일폭: 70 │ 전면밑: 50 │ │
|
|
|
|
|
|
│ │ 레일폭: 75 │ │
|
|
|
|
|
|
│ │ 점검구: 후면 │ │
|
|
|
|
|
|
│ │ │ │
|
|
|
|
|
|
│ 파트: 3~5개 │ 파트: 5개 │ 파트: 1개 │
|
|
|
|
|
|
│ ┌─────────────┐│ ┌─────────────┐│ ┌─────────────┐│
|
|
|
|
|
|
│ │본체상부 ││ │상부덮개 ││ │하단마감 ││
|
|
|
|
|
|
│ │본체하부 ││ │전면 ││ │(단일 파트) ││
|
|
|
|
|
|
│ │마감재 ││ │점검구 ││ └─────────────┘│
|
|
|
|
|
|
│ │(+C형,D형) ││ │린텔 ││ │
|
|
|
|
|
|
│ └─────────────┘│ │후면코너 ││ │
|
|
|
|
|
|
│ │ └─────────────┘│ │
|
|
|
|
|
|
├─────────────────┼─────────────────┼─────────────────┤
|
|
|
|
|
|
│ 재질별 폭합 │ 재질별 폭합 │ 재질별 폭합 │
|
|
|
|
|
|
│ SUS: 406 │ EGI: 2652 │ SUS: 193 │
|
|
|
|
|
|
│ EGI: 398 │ │ │
|
|
|
|
|
|
└─────────────────┴─────────────────┴─────────────────┘
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 전개도 테이블 구조 (1개 부품)
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
레거시 5130 화면과 동일한 구조:
|
|
|
|
|
|
|
|
|
|
|
|
┌────────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
|
|
|
|
|
│ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
|
|
|
|
|
|
├────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
|
|
|
|
|
│ 번호 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
|
|
|
|
|
|
├────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
|
|
|
|
|
│ 입력 │ 10 │ 11 │ 110 │ 30 │ 15 │ 15 │ 15 │ ← 치수 입력
|
|
|
|
|
|
│ │[색상]│ │ │ │ │[색상]│ │ ← 파란 배경
|
|
|
|
|
|
├────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
|
|
|
|
|
│ 연신율 │ │ │ -1 │ -1 │ -1 │ │ │ ← 절곡 방향
|
|
|
|
|
|
├────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
|
|
|
|
|
│연신율후 │ 10 │ 11 │ 109 │ 29 │ 14 │ 15 │ 15 │ ← input + rate
|
|
|
|
|
|
│ │ │ │(-1) │(-1) │(-1) │ │ │ (rate=-1 → -1mm)
|
|
|
|
|
|
├────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
|
|
|
|
|
│ 합계 │ 10 │ 21 │ 130 │ 159 │ 173 │ 188 │ 203 │ ← 보정후 누적합
|
|
|
|
|
|
│ │[색상]│ │ │ │ │[색상]│ │ ← 노란 배경
|
|
|
|
|
|
├────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
|
|
|
|
|
│ 음영 │ ■■ │ │ │ │ │ ■■ │ │ ← 색상 마킹
|
|
|
|
|
|
├────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
|
|
|
|
|
│ A각 │ │ │ │ A각 │ │ │ │ ← A각 표시
|
|
|
|
|
|
└────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
|
|
|
|
|
|
|
|
|
|
|
연신율 보정 규칙:
|
|
|
|
|
|
rate = "" → 보정 없음 (input 그대로)
|
|
|
|
|
|
rate = "-1" → input - 1mm (하향 절곡)
|
|
|
|
|
|
rate = "1" → input + 1mm (상향 절곡)
|
|
|
|
|
|
|
|
|
|
|
|
합계 = 보정후 값의 누적합
|
|
|
|
|
|
폭합계 = 마지막 합계값 (이 예시: 203)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 5. JSON 저장 구조 (options.bendingData)
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
레거시 (별도 배열 5개) SAM (객체 배열 1개)
|
|
|
|
|
|
──────────────────── ────────────────────
|
|
|
|
|
|
inputList: [10,11,110...] bendingData: [
|
|
|
|
|
|
bendingrateList: ["","","-1"...] { no:1, input:10, rate:"",
|
|
|
|
|
|
sumList: [10,21,130...] sum:10, color:true, aAngle:false },
|
|
|
|
|
|
colorList: [true,false,false...] { no:2, input:11, rate:"",
|
|
|
|
|
|
AList: [false,false,false...] sum:21, color:false, aAngle:false },
|
|
|
|
|
|
{ no:3, input:110, rate:"-1",
|
|
|
|
|
|
→ 5개 배열 동기화 필요 sum:130, color:false, aAngle:false },
|
|
|
|
|
|
→ 열 추가/삭제 시 5개 다 조작 ...
|
|
|
|
|
|
]
|
|
|
|
|
|
→ 1개 배열만 관리
|
|
|
|
|
|
→ 열 추가 = 객체 1개 push
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 6. 화면 흐름도
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
┌──────────────────────────────────────────────────────────────┐
|
2026-03-17 11:33:47 +09:00
|
|
|
|
│ MNG │
|
2026-03-16 17:40:47 +09:00
|
|
|
|
│ │
|
|
|
|
|
|
│ 생산 관리 │
|
|
|
|
|
|
│ ├─ 품목기준 필드 관리 │
|
|
|
|
|
|
│ ├─ 견적수식 관리 │
|
|
|
|
|
|
│ └─ 🆕 절곡품 관리 │
|
|
|
|
|
|
│ ├─ 기초관리 ─────────────────┐ │
|
|
|
|
|
|
│ └─ 절곡품 ──────────────┐ │ │
|
|
|
|
|
|
│ │ │ │
|
|
|
|
|
|
└─────────────────────────────┼────┼───────────────────────────┘
|
|
|
|
|
|
│ │
|
|
|
|
|
|
┌───────────────────┘ └───────────────────┐
|
|
|
|
|
|
▼ ▼
|
|
|
|
|
|
┌──────────────────────┐ ┌──────────────────────┐
|
|
|
|
|
|
│ 절곡품 목록 │ │ 기초관리 목록 │
|
|
|
|
|
|
│ │ │ │
|
|
|
|
|
|
│ [가이드레일] [케이스] │ │ 265건 테이블 │
|
|
|
|
|
|
│ [하단마감재] │ │ 필터: 대분류/인정/ │
|
|
|
|
|
|
│ │ │ 그룹/품명/검색 │
|
|
|
|
|
|
│ 필터 + 테이블 │ │ │
|
|
|
|
|
|
│ │ │ 행 클릭 ──→ 상세 │
|
|
|
|
|
|
│ 행 클릭 ──→ 상세 │ │ [+등록] ──→ 등록 │
|
|
|
|
|
|
│ [+등록] ──→ 등록 │ └───────────┬──────────┘
|
|
|
|
|
|
└───────────┬──────────┘ │
|
|
|
|
|
|
│ │
|
|
|
|
|
|
▼ ▼
|
|
|
|
|
|
┌──────────────────────┐ ┌──────────────────────┐
|
|
|
|
|
|
│ 절곡품 등록/수정 │ │ 기초관리 등록/수정 │
|
|
|
|
|
|
│ │ │ │
|
|
|
|
|
|
│ ┌──────────┬───────┐ │ │ ┌──────────┬───────┐ │
|
|
|
|
|
|
│ │ 기본정보 │ 이미지 │ │ │ │ 기본정보 │ 이미지 │ │
|
|
|
|
|
|
│ │ (타입별) │ 업로드 │ │ │ │ 대분류 │ 업로드 │ │
|
|
|
|
|
|
│ ├──────────┤ 검색어 │ │ │ │ 그룹/품명 │ 검색어 │ │
|
|
|
|
|
|
│ │ 파트 탭 │ │ │ │ │ 재질/규격 │ │ │
|
|
|
|
|
|
│ │ [1][2][3] │ │ │ │ ├──────────┤ │ │
|
|
|
|
|
|
│ │ │ │ │ │ │ 절곡 테이블│ │ │
|
|
|
|
|
|
│ │ 절곡테이블│ │ │ │ │ (단일) │ │ │
|
|
|
|
|
|
│ │ (파트별) │ │ │ │ ├──────────┤ │ │
|
|
|
|
|
|
│ ├──────────┤ │ │ │ │ 재질별폭합│ │ │
|
|
|
|
|
|
│ │ 재질별폭합│ │ │ │ └──────────┴───────┘ │
|
|
|
|
|
|
│ └──────────┴───────┘ │ └──────────────────────┘
|
|
|
|
|
|
└──────────────────────┘
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 7. API 엔드포인트 흐름
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
MNG / React
|
|
|
|
|
|
│
|
|
|
|
|
|
├── GET /api/v1/bending-items ← 기초관리 목록
|
|
|
|
|
|
├── GET /api/v1/bending-items/filters ← 필터 옵션
|
|
|
|
|
|
├── GET /api/v1/bending-items/{id} ← 상세
|
|
|
|
|
|
├── POST /api/v1/bending-items ← 등록
|
|
|
|
|
|
├── PUT /api/v1/bending-items/{id} ← 수정
|
|
|
|
|
|
├── DELETE /api/v1/bending-items/{id} ← 삭제
|
|
|
|
|
|
│
|
|
|
|
|
|
├── GET /api/v1/guiderail-models ← 절곡품 모델 목록
|
|
|
|
|
|
├── GET /api/v1/guiderail-models/{id} ← 모델 상세 (부품조합)
|
|
|
|
|
|
├── POST /api/v1/guiderail-models ← 모델 등록
|
|
|
|
|
|
├── PUT /api/v1/guiderail-models/{id} ← 모델 수정
|
|
|
|
|
|
├── DELETE /api/v1/guiderail-models/{id} ← 모델 삭제
|
|
|
|
|
|
│
|
|
|
|
|
|
├── POST /api/v1/items/{id}/files ← 이미지 업로드 (기존)
|
|
|
|
|
|
├── GET /api/v1/items/{id}/files ← 이미지 목록 (기존)
|
|
|
|
|
|
└── GET /api/v1/files/{id}/view ← 이미지 표시 (기존)
|
|
|
|
|
|
|
|
|
|
|
|
※ 이미지는 기존 ItemsFileController 재사용
|
|
|
|
|
|
※ field_key: 'bending_diagram'
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 8. 작업 순서
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
Step 1 Step 2 Step 3 Step 4
|
|
|
|
|
|
데이터 분석 API 구현 MNG 화면 React 화면
|
|
|
|
|
|
━━━━━━━━ ━━━━━━━━ ━━━━━━━━ ━━━━━━━━
|
|
|
|
|
|
|
|
|
|
|
|
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
|
|
|
|
│레거시 265건│ │Controller│ │기초관리 │ │견적 이미지│
|
|
|
|
|
|
│SAM 170건 │──→ │Service │──→ │ 목록/등록 │──→ │GuiderailP│
|
|
|
|
|
|
│매핑 테이블 │ │FormReq │ │절곡품 │ │review │
|
|
|
|
|
|
│ │ │Resource │ │ 목록/등록 │ │ │
|
|
|
|
|
|
│options 확장│ │ │ │ │ │절곡품 │
|
|
|
|
|
|
│artisan cmd│ │이미지: │ │메뉴 등록 │ │관리 화면 │
|
|
|
|
|
|
│ │ │기존 재사용│ │(tinker) │ │(본 화면) │
|
|
|
|
|
|
│회귀 테스트 │ │ │ │ │ │ │
|
|
|
|
|
|
└──────────┘ └──────────┘ └──────────┘ └──────────┘
|
|
|
|
|
|
API 프로젝트 API 프로젝트 MNG 프로젝트 React 프로젝트
|
|
|
|
|
|
(샘플 확인용) (운영용)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 9. 레거시 → SAM 대응표
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
레거시 (5130) SAM
|
|
|
|
|
|
━━━━━━━━━━━━━ ━━━━━
|
|
|
|
|
|
chandj.bending (265건) → items (item_category='BENDING') + options
|
|
|
|
|
|
chandj.guiderail (20건) → guiderail-models API (신규 저장 구조)
|
|
|
|
|
|
guiderail/list.php → MNG /bending/products (절곡품 목록)
|
|
|
|
|
|
bending CRUD → MNG /bending/base (기초관리)
|
|
|
|
|
|
put_guiderail_image.php → 기존 ItemsFileController (R2)
|
|
|
|
|
|
fetch_guiderail_detail.php → React GuiderailPreview
|
|
|
|
|
|
drawingTool.js (Canvas) → 2차 구현 (1차는 이미지 업로드만)
|
|
|
|
|
|
inputList[] (별도 배열) → bendingData[] (객체 배열)
|
|
|
|
|
|
bendingrateList[] → bendingData[].rate
|
|
|
|
|
|
sumList[] → bendingData[].sum
|
|
|
|
|
|
colorList[] → bendingData[].color
|
|
|
|
|
|
AList[] → bendingData[].aAngle
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|