From 718992b3ca9545972abad853df282374a3e2a9c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B6=8C=ED=98=81=EC=84=B1?= Date: Thu, 5 Feb 2026 19:22:22 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20SUS=20=EC=A0=88=EA=B3=A1=ED=8C=90=20?= =?UTF-8?q?=EC=88=98=EC=9E=85=EA=B2=80=EC=82=AC=20=EC=96=91=EC=8B=9D=20?= =?UTF-8?q?=EA=B3=84=ED=9A=8D=20=EB=B0=8F=20=EB=B3=80=EA=B2=BD=20=EC=9D=B4?= =?UTF-8?q?=EB=A0=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 수입검사 양식 전환 계획 문서 추가 (plans/incoming-inspection-templates-plan.md) - SUS 양식(id:19) 생성 변경 이력 문서 추가 (changes/20260205_sus_inspection_template.md) Co-Authored-By: Claude Opus 4.5 --- changes/20260205_sus_inspection_template.md | 83 ++++ plans/incoming-inspection-templates-plan.md | 522 ++++++++++++++++++++ 2 files changed, 605 insertions(+) create mode 100644 changes/20260205_sus_inspection_template.md create mode 100644 plans/incoming-inspection-templates-plan.md diff --git a/changes/20260205_sus_inspection_template.md b/changes/20260205_sus_inspection_template.md new file mode 100644 index 0000000..e0aee0e --- /dev/null +++ b/changes/20260205_sus_inspection_template.md @@ -0,0 +1,83 @@ +# 변경 내용 요약 + +**날짜:** 2026-02-05 +**작업자:** Claude Code +**관련 계획:** docs/plans/incoming-inspection-templates-plan.md + +## 📋 변경 개요 +5130 레거시 수입검사 양식 전환 작업의 일환으로 SUS 절곡판 수입검사 양식을 생성하고 품목을 연결함. + +## 📁 수정된 파일/데이터 + +### 데이터베이스 변경 +- `document_templates` - 1건 INSERT (id:19) +- `document_template_section_fields` - 8건 INSERT (template_id:19) + +### 문서 변경 +- `docs/plans/incoming-inspection-templates-plan.md` - 진행 상태 업데이트 + +## 🔧 상세 변경 사항 + +### 1. SUS 절곡판 수입검사 양식 생성 (id:19) + +**생성된 데이터:** +```json +{ + "id": 19, + "tenant_id": 287, + "name": "SUS 절곡판 수입검사", + "category": "수입검사", + "title": "수입검사 성적서", + "company_name": "경동산업", + "footer_remark_label": "비고 / 부적합 내용", + "footer_judgement_label": "종합판정", + "footer_judgement_options": ["적합", "부적합"], + "is_active": 1, + "linked_item_ids": [14172, 14173, 14174, 14175, 14176, 14177, 14178, 14179, 14180, 14181, 14182] +} +``` + +### 2. 필드 구조 (EGI 양식에서 복사) + +| sort_order | field_key | label | field_type | +|------------|-----------|-------|------------| +| 0 | category | 구분 | text | +| 1 | item | 검사항목 | text | +| 2 | standard | 검사 기준/범위 | text_with_criteria | +| 3 | tolerance | 공차/범위 | json_tolerance | +| 4 | method | 검사방식 | select_api | +| 5 | measurement_type | 측정유형 | select | +| 6 | frequency | 검사주기 | composite_frequency | +| 7 | regulation | 관련규정 | text | + +### 3. 연결된 품목 (11건) + +| ID | 품목명 | +|----|--------| +| 14172 | sus1.2*1219*2438 | +| 14173 | sus1.2*1219*3000 | +| 14174 | sus1.2t*1219*4000 | +| 14175 | sus1.5*1219*2438 | +| 14176 | sus1.5*1219*3000 | +| 14177 | sus1.5*1219*4000 | +| 14178 | sus1.2*1219*c | +| 14179 | sus1.5*1219*2500 | +| 14180 | sus1.2*1219*4230 | +| 14181 | sus1.2*1219*3000 P/L | +| 14182 | sus1.2*1219*2500 | + +## ✅ 테스트 체크리스트 +- [x] 양식 생성 확인 (id:19) +- [x] 필드 8개 복사 확인 +- [x] 품목 11건 연결 확인 +- [ ] MNG UI에서 양식 편집 테스트 +- [ ] React resolve API 테스트 + +## ⚠️ 후속 작업 +1. EGI 양식(id:18)에 품목 연결 필요 +2. Phase 1 나머지 양식 생성 (앵글 등) +3. MNG UI에서 검사항목 데이터 입력 필요 + +## 🔗 관련 문서 +- 계획 문서: `docs/plans/incoming-inspection-templates-plan.md` +- 레거시 참조: `5130/instock/i_SUSplate.php` \ No newline at end of file diff --git a/plans/incoming-inspection-templates-plan.md b/plans/incoming-inspection-templates-plan.md new file mode 100644 index 0000000..55a0d92 --- /dev/null +++ b/plans/incoming-inspection-templates-plan.md @@ -0,0 +1,522 @@ +# 수입검사 성적서 양식 생성 계획 + +> **작성일**: 2026-02-05 +> **목적**: 5130 레거시 수입검사 양식 23종을 SAM 문서 양식으로 전환 +> **기준 문서**: 5130/instock/i_*.php (23개 파일) +> **상태**: 📋 계획 수립 완료 (Serena ID: incoming-inspection-plan-state) + +--- + +## 🚀 새 세션 시작 가이드 (Quick Start) + +### 이 문서만 보고 작업을 시작하려면: + +**1단계: 환경 확인** +```bash +# Docker 컨테이너 실행 확인 +docker ps | grep sam + +# 품목 데이터 확인 (tenant_id=287) +cd /Users/kent/Works/@KD_SAM/SAM/api +php artisan tinker --execute="echo 'RM: ' . DB::table('items')->where('tenant_id', 287)->where('item_type', 'RM')->count() . ', SM: ' . DB::table('items')->where('tenant_id', 287)->where('item_type', 'SM')->count();" +# 기대값: RM: 28, SM: 61 + +# 기존 양식 확인 (EGI template 18) +php artisan tinker --execute="echo DB::table('document_templates')->where('id', 18)->value('name');" +``` + +**2단계: 현재 상태 확인** +- 아래 "📍 현재 진행 상태" 섹션에서 마지막 완료 작업과 다음 작업 확인 +- Phase 1-5 테이블에서 ⏳/✅ 상태 확인 + +**3단계: 양식 생성 시작** +- MNG 접속: https://mng.sam.kr/document-templates +- 기존 EGI 양식(id:18) 복제하여 새 양식 생성 +- 또는 새 양식 생성: https://mng.sam.kr/document-templates/create + +### 환경 정보 + +| 항목 | 값 | +|------|-----| +| **프로젝트 루트** | `/Users/kent/Works/@KD_SAM/SAM` | +| **레거시 소스** | `5130/instock/i_*.php` (23개 파일) | +| **API 프로젝트** | `api/` | +| **MNG 프로젝트** | `mng/` | +| **tenant_id** | `287` (경동기업) | +| **MNG URL** | https://mng.sam.kr | +| **API URL** | https://api.sam.kr | + +### 핵심 테이블 및 ID + +| 테이블 | 용도 | 주요 ID | +|--------|------|---------| +| `document_templates` | 양식 마스터 | id:18 (EGI 수입검사 - 참조용) | +| `document_template_section_fields` | 검사항목 필드 정의 | template_id 기준 | +| `document_template_links` | 품목 연결 정의 | template_id 기준 | +| `document_template_link_values` | 연결된 품목 ID | link_id, linkable_id | +| `items` | 품목 마스터 | tenant_id=287 기준 | + +### 품목 검색 쿼리 + +```bash +# RM(원자재) 전체 조회 +php artisan tinker --execute="DB::table('items')->where('tenant_id', 287)->where('item_type', 'RM')->whereNull('deleted_at')->select('id','code','name')->get()->each(fn(\$i) => print(\$i->code.' | '.\$i->name.'\n'));" + +# SM(부자재) 전체 조회 +php artisan tinker --execute="DB::table('items')->where('tenant_id', 287)->where('item_type', 'SM')->whereNull('deleted_at')->select('id','code','name')->get()->each(fn(\$i) => print(\$i->code.' | '.\$i->name.'\n'));" + +# 특정 품목 검색 (예: SUS) +php artisan tinker --execute="DB::table('items')->where('tenant_id', 287)->where('name', 'like', '%sus%')->whereNull('deleted_at')->select('id','code','name','item_type')->get()->each(fn(\$i) => print(\$i->item_type.' | '.\$i->code.' | '.\$i->name.'\n'));" +``` + +### API 테스트 + +```bash +# resolve API 테스트 (품목별 양식 조회) +curl -X GET "https://api.sam.kr/api/v1/documents/resolve?item_id=12345" \ + -H "Authorization: Bearer {token}" \ + -H "X-API-KEY: {api_key}" + +# upsert API 테스트 (문서 생성/수정) +curl -X POST "https://api.sam.kr/api/v1/documents/upsert" \ + -H "Authorization: Bearer {token}" \ + -H "X-API-KEY: {api_key}" \ + -H "Content-Type: application/json" \ + -d '{"template_id": 18, "linkable_type": "item", "linkable_id": 12345, ...}' +``` + +### 레거시 파일 분석 방법 + +```bash +# 특정 양식 파일 읽기 (예: SUS 절곡코일) +cat /Users/kent/Works/@KD_SAM/SAM/5130/instock/i_SUScoil.php + +# 검사항목 구조 확인 (itemRow, resultRow 배열) +grep -A 20 "itemRow" /Users/kent/Works/@KD_SAM/SAM/5130/instock/i_SUScoil.php +``` + +--- + +## 📍 현재 진행 상태 + +| 항목 | 내용 | +|------|------| +| **마지막 완료 작업** | SUS 절곡판 수입검사 양식 생성 (id:19) + 품목 11건 연결 | +| **다음 작업** | 앵글 수입검사 양식 생성 (Phase 1.8) | +| **진행률** | 2/23 (EGI, SUS 절곡판 완료) | +| **마지막 업데이트** | 2026-02-05 | + +--- + +## 1. 개요 + +### 1.1 배경 + +5130 레거시 시스템에는 23종의 수입검사 성적서 양식이 PHP 파일로 하드코딩되어 있음. 이를 SAM의 동적 문서 양식 시스템으로 전환하여: +- React 앱에서 품목별 자동 양식 매칭 가능 +- 검사 데이터의 체계적 관리 및 이력 추적 +- 양식 수정/추가 시 코드 변경 불필요 + +### 1.2 기준 원칙 +``` +┌─────────────────────────────────────────────────────────────────┐ +│ 🎯 핵심 원칙 │ +├─────────────────────────────────────────────────────────────────┤ +│ 1. 레거시 양식 구조 100% 재현 (검사항목, 기준, 측정방식) │ +│ 2. 품목 자동 매칭 (item_id → template 연결) │ +│ 3. Auto-highlight 지원 (두께/너비/길이 기준범위 자동 표시) │ +│ 4. 프리셋 재사용 (공통 필드 구조 활용) │ +└─────────────────────────────────────────────────────────────────┘ +``` + +### 1.3 변경 승인 정책 + +| 분류 | 예시 | 승인 | +|------|------|------| +| ✅ 즉시 가능 | 양식 생성, 품목 연결, 검사항목 추가 | 불필요 | +| ⚠️ 컨펌 필요 | 새로운 field_type 추가, 프리셋 수정 | **필수** | +| 🔴 금지 | 기존 양식(template 18) 구조 변경 | 별도 협의 | + +--- + +## 2. 5130 레거시 분석 결과 + +### 2.1 파일-품명 매핑 (23종) + +| # | 파일명 | 품명 (itemTitle) | 품목 유형 | 규격 형식 | +|---|--------|------------------|-----------|-----------| +| 1 | i_EGI155.php | 전기 아연도금 강판 (KS D 3528, SECC) "EGI 절곡판" | RM | 두께*너비*길이 | +| 2 | i_GIplate.php | 용융 아연도금 강판 (KS D 3506, SGCC) "GI 절곡판" | RM | 두께*너비*길이 | +| 3 | i_SUScoil.php | 냉간 압연 스테인리스 강대 (KS D 3698, STS304) "SUS 절곡코일" | RM | 두께*너비 | +| 4 | i_SUSplate.php | 냉간 압연 스테인리스 강판 (KS D 3698, STS304) "SUS 절곡판" | RM | 두께*너비*길이 | +| 5 | i_slatcoil.php | 전기 아연도금 강대 (KS D 3528, SECC) "슬랫코일" | RM | 두께*너비 | +| 6 | i_bendingcoil.php | 전기 아연도금 강대 (KS D 3528, SECC) "절곡코일" | RM | 두께*너비 | +| 7 | i_angle.php | 일반구조용 압연강재 (JIS G 3101, SS400) "앵글" | SM | A*B*T | +| 8 | i_anglebottom.php | 일반구조용 압연강재 (JIS G 3101, SS400) "앵글하부" | SM | A*B*T | +| 9 | i_platesteel.php | 일반구조용 압연강재 (JIS G 3101, SS400) "철판" | RM | 두께*너비*길이 | +| 10 | i_pole.php | 일반구조용 압연강재 (JIS G 3101, SS400) "마환봉" | SM | 직경 | +| 11 | i_recpipe.php | 일반 구조용 각형 강관 (KS D 3568) "각파이프" | SM | A*B*T | +| 12 | i_shaft.php | 일반 구조용 탄소 강관 (KS D 3566) "샤프트" | SM | 외경*두께 | +| 13 | i_fiber.php | 화이바 글라스 코팅직물 | RM | 두께*너비 | +| 14 | i_sillica.php | 실리카 코팅직물 | RM | 두께*너비 | +| 15 | i_wire.php | 와이어 글라스 코팅직물 | RM | spec | +| 16 | i_wireDaehan.php | 와이어 글라스 코팅직물 (대한) | RM | spec | +| 17 | i_antifireglass.php | 방화유리 | RM | 두께*너비*높이 | +| 18 | i_motor.php | 전동개폐기 | SM | 용량*전압*타입 | +| 19 | i_controller.php | 연동 폐쇄기구 | SM | - | +| 20 | i_bracket.php | 베어링부 | SM | - | +| 21 | i_Fireproof_sealings.php | 내화충진재 | SM | spec | +| 22 | i_cerakwool.php | 세라크울 (C/F L-BIO 1200 B/T) | SM | spec | +| 23 | i_fireproofWire.php | 메탈/아라미드 재봉사 "내화실" | SM | - | + +### 2.2 검사항목 유형 분류 + +#### 공통 검사항목 (대부분 양식에 포함) +| 검사항목 | 검사기준 | 검사방식 | 측정유형 | +|----------|----------|----------|----------| +| 겉모양 | 사용상 해로울 결함이 없을 것 | 육안검사 | checkbox (OK/NG 3회) | + +#### 철강재 검사항목 (EGI, GI, SUS, 철판, 앵글 등) +| 검사항목 | 검사기준 | 검사방식 | 측정유형 | +|----------|----------|----------|----------| +| 치수-두께 | 범위별 공차 (auto-highlight) | 체크검사 | numeric (3회) | +| 치수-너비 | 범위별 공차 | 체크검사 | numeric (3회) | +| 치수-길이 | 범위별 공차 | 체크검사 | numeric (3회) | +| 인장강도 | N/㎟ 이상 | 밀시트 | single_value | +| 연신율 | % 이상 (두께별) | 밀시트 | single_value | +| 아연 부착량 | g/㎡ 이상 | 밀시트 | single_value | + +#### 직물류 검사항목 (화이바, 실리카, 와이어) +| 검사항목 | 검사기준 | 검사방식 | 측정유형 | +|----------|----------|----------|----------| +| 치수-두께/너비 | ± 공차 | 체크검사 | numeric (3회) | +| 무게 | g/㎡ ± % | 성적서 | single_value | +| 밀도 (경사/위사) | 올/5㎝ ± % | 성적서 | single_value | +| 인장강도 (경사/위사) | N/50㎜ 이상 | 성적서 | single_value | +| 인열강도 | N 이상 | 성적서 | single_value | +| 내열온도 | ℃ 이상 | 성적서 | single_value | + +#### 전동개폐기 검사항목 +| 검사항목 | 검사기준 | 검사방식 | 측정유형 | +|----------|----------|----------|----------| +| 겉모양 | 결함 없을 것 | 육안검사 | checkbox | +| 구성품 | 누락 없을 것 | 육안검사 | checkbox | +| 셋팅설정/램프 | 점등/소등 상태 | 체크검사 | substitute (성적서) | +| 브레이크 개폐 | 원활 작동 | 체크검사 | substitute | +| 기타 기능설정 | 원활 작동 | 체크검사 | substitute | +| 모터권상능력 | 120% 이상 | 체크검사 | substitute | +| 품질인정 | 내화시험 적합 | 공인기관 | substitute | + +### 2.3 SAM 품목 매핑 (tenant_id: 287, 2026-02-05 재분석) + +> **참조**: item-master-data-alignment-plan.md 기준 - RM 28건, SM 61건 + +#### RM (원자재) 28건 상세 + +| 레거시 양식 | SAM 품목 코드 | 품목 수 | 매핑 상태 | +|------------|--------------|---------|-----------| +| EGI (전기아연도금) | egi1.2*1219*, egi1.6*1219*, egi1.17, egi1.55 등 | 10건 | ✅ 완료 | +| SUS (스테인리스) | sus1.2*1219*, sus1.5*1219* 등 | 11건 | ✅ 완료 | +| GI (용융아연도금) | egi* (EGI 코드로 통합 관리) | (EGI에 포함) | ✅ 통합 | +| 실리카/제연 | S0008 실리카원단(슬리팅), S0010 실리카원단(1270), s0015 제연원단 | 3건 | ✅ 완료 | +| 화이바/와이어 | RM-010 화이바원단, RM-011 와이어원단 | 2건 | ✅ 완료 | +| 기타 RM | RM-007 신설비상문, RM-008 제연커튼 | 2건 | ✅ 완료 | + +#### SM (부자재) 61건 상세 + +| 레거시 양식 | SAM 품목 코드 | 품목 수 | 매핑 상태 | +|------------|--------------|---------|-----------| +| 전동개폐기/제어기 | PM-020~PM-035 | 16건 | ✅ 완료 | +| 앵글 | H0003~H0018 (앵글40x40x3T 등) | 6건 | ✅ 완료 | +| 샤우드 (파이프) | R0001~R0008 (3~10인치) | 8건 | ✅ 완료 | +| 가스켓 | 80062 짜부가스켓, 80067 가스켓쫄대 | 2건 | ✅ 완료 | +| 알카바/컨트롤박스 등 | 기타 부자재 | 29건 | ✅ 완료 | + +#### 품목 존재 확인 결과 (2026-02-05 재검증) + +| 레거시 양식 | 품목명 | SAM 품목 | 상태 | +|------------|--------|---------|------| +| i_antifireglass.php | 방화유리 | `S0007 망입유리` (PT) | ✅ 존재 (망입유리=방화유리 종류) | +| i_pole.php | 마환봉 | `90205 마환봉` + 환봉 5건 (PT) | ✅ 존재 | +| i_recpipe.php | 각파이프 | `80091 백관 100*50` (SM) | ⚠️ 부분 (1건만) | +| i_shaft.php | 샤프트 | R0001~R0008 샤우드 (SM) | ✅ 대체 가능 | + +#### 검토 필요 품목 (1건) + +| 레거시 양식 | 품목명 | 현재 상태 | 검토 사항 | +|------------|--------|----------|----------| +| i_platesteel.php | **SS400 일반 철판** | RM 없음, PT로 `철판절단`/`평철*` 존재 | 원자재 수입검사 실제 수행 여부 확인 필요. SUS/EGI만 RM 등록됨 | + +--- + +## 3. 양식 생성 계획 + +### 3.1 그룹화 전략 + +**동일 양식 공유 가능 그룹:** +- EGI 1.15T / 1.55T → 1개 양식 (두께별 auto-highlight) +- GI 0.45T / 0.5T / 1.2T → 1개 양식 +- SUS 절곡판 (1.2T, 1.5T, 1.55T) → 1개 양식 +- SUS 절곡코일 → 별도 양식 (길이 없음) +- 철판 SS400 → 1개 양식 +- 앵글/앵글하부 → 2개 양식 (구조 유사하나 규격 다름) + +**총 생성 예정 양식: 약 15-18종** (레거시 23종 중 유사 양식 통합) + +### 3.2 Phase 구분 + +#### Phase 1: 철강재 그룹 (8종) - 우선순위 높음 + +| # | 양식명 | 연결 품목 | 상태 | 비고 | +|---|--------|----------|:----:|------| +| 1.1 | EGI 수입검사 (기존 18번) | egi1.2*, egi1.6*, egi1.17, egi1.55 (10건) | ✅ | 완료 | +| 1.2 | GI 수입검사 | EGI 코드로 통합 (별도 양식 불필요) | ✅ | EGI와 통합 | +| 1.3 | SUS 절곡판 수입검사 (id:19) | sus1.2*, sus1.5* (11건) | ✅ | 완료 | +| 1.4 | SUS 절곡코일 수입검사 | sus*c 코드 품목 | ⏳ | 절곡판과 통합 검토 | +| 1.5 | 슬랫코일 수입검사 | (EGI 계열로 커버 가능) | ⏳ | 양식 통합 검토 | +| 1.6 | 절곡코일 수입검사 | (EGI 계열로 커버 가능) | ⏳ | 양식 통합 검토 | +| 1.7 | 철판(SS400) 수입검사 | - | ⏳ | **🔴 품목 신규 등록 필요** | +| 1.8 | 앵글 수입검사 | H0003~H0018 앵글* (6건) | ⏳ | | + +#### Phase 2: 구조재 그룹 (4종) + +| # | 양식명 | 연결 품목 | 상태 | 비고 | +|---|--------|----------|:----:|------| +| 2.1 | 앵글하부 수입검사 | H0015~H0018 앵글가공* (4건) | ⏳ | | +| 2.2 | 마환봉 수입검사 | 90205 마환봉 + 환봉 5건 (PT) | ⏳ | ✅ 품목 존재 | +| 2.3 | 각파이프 수입검사 | 80091 백관 100*50 (1건) | ⏳ | 품목 추가 등록 권장 | +| 2.4 | 샤프트 수입검사 | R0001~R0008 샤우드 (8건) | ⏳ | 샤우드가 샤프트 역할 | + +#### Phase 3: 직물류 그룹 (4종) + +| # | 양식명 | 연결 품목 | 상태 | 비고 | +|---|--------|----------|:----:|------| +| 3.1 | 화이바글라스 수입검사 | RM-010 화이바원단 (1건) | ⏳ | | +| 3.2 | 실리카 수입검사 | S0008, S0010, s0015 실리카/제연원단 (3건) | ⏳ | | +| 3.3 | 와이어글라스 수입검사 | RM-011 와이어원단 (1건) | ⏳ | | +| 3.4 | 방화유리 수입검사 | S0007 망입유리 (1건) | ⏳ | ✅ 품목 존재 (망입유리) | + +#### Phase 4: 부자재 그룹 (5종) + +| # | 양식명 | 연결 품목 | 상태 | 비고 | +|---|--------|----------|:----:|------| +| 4.1 | 전동개폐기/제어기 수입검사 | PM-020~PM-035 (16건) | ⏳ | ✅ 품목 존재 | +| 4.2 | 연동폐쇄기구 수입검사 | (PM 제어기 계열에 포함) | ⏳ | 4.1과 통합 검토 | +| 4.3 | 베어링부 수입검사 | (구체적 매핑 필요) | ⏳ | | +| 4.4 | 내화충진재 수입검사 | (구체적 매핑 필요) | ⏳ | | +| 4.5 | 내화실 수입검사 | 80019 실 (1건) | ⏳ | | + +#### Phase 5: 기타 (2종) + +| # | 양식명 | 연결 품목 | 상태 | 비고 | +|---|--------|----------|:----:|------| +| 5.1 | 세라크울 수입검사 | (구체적 매핑 필요) | ⏳ | | +| 5.2 | 와이어글라스(대한) 수입검사 | RM-011과 동일 | ⏳ | 3.3과 통합 | + +--- + +## 4. 작업 절차 + +### 4.1 MNG에서 양식 생성하기 (상세 가이드) + +#### Step 1: 기존 양식 복제 또는 새 양식 생성 + +**방법 A: 기존 EGI 양식 복제 (권장)** +``` +1. https://mng.sam.kr/document-templates/18/edit 접속 +2. 페이지 하단 "복제" 버튼 클릭 +3. 양식명 변경 (예: "SUS 절곡판 수입검사") +4. 저장 +``` + +**방법 B: 새 양식 생성** +``` +1. https://mng.sam.kr/document-templates/create 접속 +2. 기본정보 탭: + ├── 양식명: (예: "SUS 절곡판 수입검사") + ├── 카테고리: "수입검사" 선택 + ├── 설명: (레거시 품명 참조) + └── 결재라인: 담당 → 부서장 +3. 저장 후 편집 화면으로 이동 +``` + +#### Step 2: 검사 기준서 탭 설정 + +``` +1. "검사 기준서" 탭 클릭 +2. "프리셋 적용" 버튼 → "수입검사 기본" 선택 +3. 레거시 검사항목 확인: + └── 5130/instock/i_{양식명}.php 파일의 itemRow/resultRow 배열 참조 +4. 필드 추가: + ├── "필드 추가" 버튼 클릭 + ├── field_key: 검사항목 식별자 (예: thickness, width, tensile_strength) + ├── label: 표시명 (예: "두께", "너비", "인장강도") + ├── field_type 선택: + │ ├── select (OK/NG 체크박스용) + │ ├── text + json_criteria (수치입력 3회용) + │ ├── text (단일값, 성적서 대체용) + │ └── composite_frequency (주기+n/c용) + └── standard_criteria: auto-highlight용 기준범위 JSON +5. 드래그로 필드 순서 조정 +6. 저장 +``` + +#### Step 3: 품목 연결 설정 + +``` +1. "기본정보" 탭 → "연결 설정" 영역 +2. "연결 추가" 버튼 클릭 +3. 연결 정보 입력: + ├── link_key: "items" + ├── label: "연결 품목 (RM, SM)" + ├── link_type: "multiple" (여러 품목 연결 가능) + ├── search_api: "/api/admin/items/search" + ├── search_params: {"item_type":"RM,SM"} + └── display_fields: {"title":"name","subtitle":"code"} +4. 품목 검색하여 연결: + ├── 검색창에 품목명/코드 입력 (예: "sus1.2") + ├── 검색 결과에서 해당 품목 선택 + └── 여러 품목 추가 가능 +5. 저장 +``` + +#### Step 4: 검증 + +``` +1. MNG 미리보기: + └── 양식 편집 화면 → "미리보기" 버튼 +2. API 테스트 (resolve): + └── curl 또는 Postman으로 resolve API 호출 +3. React 앱 테스트: + └── https://dev.sam.kr 에서 해당 품목 선택 → 문서 생성 확인 +``` + +### 4.2 단계별 절차 요약 + +``` +Step 1: 양식 기본정보 설정 +├── MNG에서 새 양식 생성 또는 EGI(id:18) 복제 +├── 카테고리: 수입검사 +├── 품명 설정 (레거시 itemTitle 참조) +├── 결재라인: 담당, 부서장 +└── 연결 품목 설정 (link_type: multiple) + +Step 2: 검사 기준서 필드 설정 +├── 프리셋 적용 (수입검사 기본) +├── 레거시 검사항목 추가 +├── field_type 매핑: +│ ├── 육안검사 OK/NG → checkbox +│ ├── 수치입력 3회 → numeric +│ ├── 밀시트/성적서 → single_value +│ └── 공인기관 성적서 → substitute +└── standard_criteria (auto-highlight) 설정 + +Step 3: 품목 연결 +├── document_template_links에 link 추가 +├── 소스 테이블: items +├── search_params: {"item_type":"RM,SM"} +└── display_fields: {"title":"name","subtitle":"code"} + +Step 4: 검증 +├── MNG에서 양식 미리보기 +├── React resolve API 테스트 +└── 실제 품목으로 문서 생성 테스트 +``` + +### 4.2 field_type 매핑 기준 + +| 레거시 측정 방식 | SAM field_type | measurement_type | +|-----------------|----------------|------------------| +| checkbox OK/NG 3회 | select | checkbox | +| 수치입력 3회 (두께/너비/길이) | text + json_criteria | numeric | +| 밀시트 단일값 | text | single_value | +| 성적서 대체 | text | substitute | +| 자유입력 | text | text | + +--- + +## 5. 컨펌 대기 목록 + +| # | 항목 | 변경 내용 | 영향 범위 | 상태 | +|---|------|----------|----------|------| +| 1 | 양식 통합 여부 | 레거시 23종 → SAM 12-15종 통합 (GI→EGI, 와이어 통합 등) | 양식 구조 | ⏳ 검토 필요 | +| 2 | ~~누락 품목 등록~~ | ~~방화유리, 마환봉~~ → 재검증 결과 모두 존재 확인 | - | ✅ 해결 | +| 3 | SS400 철판 수입검사 | RM에 없음 (PT로 철판절단/평철 존재). 원자재 수입검사 실제 수행 여부 확인 필요 | items | ⏳ 확인 필요 | +| 4 | 와이어글라스 통합 | i_wire.php + i_wireDaehan.php → RM-011로 통합 | 양식 | ✅ 통합 가능 | +| 5 | GI/EGI 통합 | GI 양식을 EGI 양식으로 통합 (동일 코드 체계 사용) | 양식 | ✅ 통합 가능 | +| 6 | 제어기 양식 통합 | 전동개폐기 + 연동폐쇄기구 → PM-* 계열 양식 하나로 | 양식 | ⏳ 검토 필요 | + +--- + +## 6. 변경 이력 + +| 날짜 | 항목 | 변경 내용 | 파일 | 승인 | +|------|------|----------|------|------| +| 2026-02-05 | - | 계획 문서 초안 작성 | - | - | +| 2026-02-05 | 2.3, 3.2 | **SAM 품목 매핑 재분석**: item_id_mappings 사용 불가 → items 직접 조회. RM 28건, SM 61건 정확한 매핑 완료. GI/모터/샤우드 등 "누락"으로 표시됐던 품목이 실제 존재 확인. | - | - | +| 2026-02-05 | 2.3 | **재검증**: 방화유리(`S0007 망입유리`), 마환봉(`90205` 외 5건) 모두 PT로 존재 확인. **유일하게 검토 필요: SS400 철판** (RM에 없음, PT로 가공품만 존재) | - | - | +| 2026-02-05 | 3.2 | **SUS 절곡판 양식 생성**: template_id:19 생성, 필드 8개 복사, SUS 품목 11건 연결 (14172~14182) | document_templates | - | + +--- + +## 7. 참고 문서 + +- **API 연동 가이드**: `docs/api/document-api-integration.md` +- **문서 양식 동적화 계획**: `~/.claude/plans/steady-discovering-stonebraker.md` +- **레거시 파일**: `5130/instock/i_*.php` (23개) +- **품질 체크리스트**: `docs/standards/quality-checklist.md` + +--- + +## 8. 검증 방법 + +### 8.1 양식별 검증 체크리스트 + +- [ ] MNG에서 양식 저장/로드 정상 동작 +- [ ] 검사항목 구조가 레거시와 일치 +- [ ] auto-highlight (standard_criteria) 정상 동작 +- [ ] 품목 연결 완료 (link_values) +- [ ] React resolve API 테스트 통과 +- [ ] 문서 생성/저장 테스트 통과 + +### 8.2 전체 검증 기준 + +| 기준 | 목표 | 비고 | +|------|------|------| +| 양식 생성 완료 | 12-15종 | 레거시 23종 → 통합 (GI→EGI, 와이어 통합 등) | +| 품목 연결 완료 | RM 28건 + SM 61건 + PT 관련 품목 | 수입검사 대상 품목 | +| 검토 필요 품목 | 1종 (SS400 철판) | RM에 없음. 원자재 수입검사 수행 여부 확인 | +| API 테스트 | resolve/upsert 정상 | 모든 양식 | + +--- + +## 9. 자기완결성 점검 결과 + +### 9.1 체크리스트 검증 + +| # | 검증 항목 | 상태 | 비고 | +|---|----------|:----:|------| +| 1 | 작업 목적이 명확한가? | ✅ | 레거시 23종 → SAM 전환 | +| 2 | 성공 기준이 정의되어 있는가? | ✅ | 섹션 8.2 | +| 3 | 작업 범위가 구체적인가? | ✅ | Phase 1-5 정의 | +| 4 | 의존성이 명시되어 있는가? | ✅ | API 구현 완료 전제 | +| 5 | 참고 파일 경로가 정확한가? | ✅ | 5130/instock/ | +| 6 | 단계별 절차가 실행 가능한가? | ✅ | 섹션 4.1 | +| 7 | 검증 방법이 명시되어 있는가? | ✅ | 섹션 8.1 | +| 8 | 모호한 표현이 없는가? | ✅ | - | + +### 9.2 새 세션 시뮬레이션 테스트 + +| 질문 | 답변 가능 | 참조 섹션 | +|------|:--------:|----------| +| Q1. 이 작업의 목적은 무엇인가? | ✅ | 1.1 배경 | +| Q2. 어디서부터 시작해야 하는가? | ✅ | 3.2 Phase 1 | +| Q3. 어떤 파일을 참조해야 하는가? | ✅ | 2.1 파일-품명 매핑 | +| Q4. 작업 완료 확인 방법은? | ✅ | 8. 검증 방법 | +| Q5. 막혔을 때 참고 문서는? | ✅ | 7. 참고 문서 | + +**결과**: 5/5 통과 → ✅ 자기완결성 확보 + +--- + +*이 문서는 /plan 스킬로 생성되었습니다.*