# 수입검사 성적서 시스템 연동 계획 > **작성일**: 2025-01-28 > **목적**: MNG 문서양식관리로 수입검사 성적서 템플릿(20종 - 제품별 검사기준 상이) 생성 및 미리보기 구현, 이후 API/React 연동 > **기준 문서**: `docs/dev_plans/document-management-system-plan.md`, `mng/resources/views/document-templates/` > **상태**: 📋 계획 수립 --- ## 📍 현재 진행 상태 | 항목 | 내용 | |------|------| | **마지막 완료 작업** | 분석 완료 | | **다음 작업** | Phase 1.1 - 수입검사 성적서 양식 템플릿 생성 (MNG) | | **진행률** | 0/8 (0%) | | **마지막 업데이트** | 2025-01-28 | --- ## 1. 개요 ### 1.1 배경 현재 React 프론트엔드의 수입검사 성적서 모달(`InspectionCreate.tsx`)은 4개 검사항목이 하드코딩되어 있음. 실제로는 **품목(원자재) 종류별로 검사기준이 다른 20여 종의 수입검사 성적서 양식**이 필요하며, MNG의 문서양식관리/문서관리 시스템과 연동하여: 1. **문서양식관리**: 수입검사 성적서 양식 20종 생성 (각 양식마다 검사항목, 기준, 수치가 다름) 2. **품목-양식 매핑**: 각 품목이 어떤 양식을 사용할지 연결 3. **문서관리**: 실제 검사 결과 저장 및 조회 4. **React 모달**: 품목에 맞는 양식 자동 선택 → 검사항목 동적 렌더링 **양식 20종 구조:** ``` 양식 A (철제품용) ←── 품목: 가이드레일, 브라켓, 철판 양식 B (도장품용) ←── 품목: 도어프레임, 패널 양식 C (플라스틱용) ←── 품목: 사출부품, 커버 양식 D (원자재용) ←── 품목: 철판, 봉강 ... (20종) ``` ### 1.2 현재 시스템 구조 ``` ┌─────────────────────────────────────────────────────────────────┐ │ React (InspectionCreate.tsx) │ │ ├─ 검사 대상 선택 (좌측) │ │ ├─ 검사 정보 (검사일, 검사자, LOT번호) │ │ ├─ 검사 항목 테이블 (4개 하드코딩) ← 동적화 필요 │ │ └─ 종합 의견 │ └─────────────────────────────────────────────────────────────────┘ ↓ (현재 미연동) ┌─────────────────────────────────────────────────────────────────┐ │ MNG (문서양식관리/문서관리) │ │ ├─ DocumentTemplate (양식 정의) │ │ │ ├─ ApprovalLines (결재선) │ │ │ ├─ BasicFields (기본 필드) │ │ │ ├─ Sections → SectionItems (검사 항목) ← 20종 동적 기준 │ │ │ └─ Columns (테이블 컬럼) │ │ └─ Document + DocumentData (EAV 패턴) │ └─────────────────────────────────────────────────────────────────┘ ``` ### 1.3 목표 시스템 구조 ``` ┌─────────────────────────────────────────────────────────────────┐ │ React (InspectionCreate.tsx) │ │ ├─ API: GET /inspection-templates?item_code=xxx │ │ │ └─ 제품별 검사 항목 동적 로드 │ │ ├─ API: POST /documents │ │ │ └─ 검사 결과 저장 (Document + DocumentData) │ │ └─ API: GET /documents/{id} │ │ └─ 저장된 성적서 조회 │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ API (Laravel) │ │ ├─ InspectionTemplateService │ │ │ └─ 제품 ↔ 검사양식 매핑 │ │ └─ DocumentService │ │ └─ 검사 결과 CRUD │ └─────────────────────────────────────────────────────────────────┘ ``` ### 1.4 기준 원칙 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 🎯 핵심 원칙 │ ├─────────────────────────────────────────────────────────────────┤ │ 1. EAV 패턴 활용: DocumentData로 동적 필드 저장 │ │ 2. 제품-양식 매핑: 품목코드 기반 검사양식 자동 선택 │ │ 3. 기존 구조 활용: MNG DocumentTemplate 구조 그대로 사용 │ │ 4. 결재 기능 보류: 결재요청/승인/반려는 기존 시스템 연동 예정 │ └─────────────────────────────────────────────────────────────────┘ ``` ### 1.5 변경 승인 정책 | 분류 | 예시 | 승인 | |------|------|------| | ✅ 즉시 가능 | API 엔드포인트 추가, React 컴포넌트 수정 | 불필요 | | ⚠️ 컨펌 필요 | 테이블 컬럼 추가, 새 테이블 생성 | **필수** | | 🔴 금지 | 기존 테이블 구조 변경, documents 테이블 필드 삭제 | 별도 협의 | ### 1.6 준수 규칙 - `docs/reference/api-rules.md` - API 개발 규칙 - `docs/specs/database-schema.md` - DB 스키마 - `docs/guides/swagger-guide.md` - Swagger 문서화 - `docs/reference/quality-checklist.md` - 품질 체크리스트 --- ## 2. 대상 범위 ### 2.1 Phase 1: MNG 문서양식 및 미리보기 (메인 작업) ⭐ | # | 작업 항목 | 상태 | 파일 | 비고 | |---|----------|:----:|------|------| | 1.1 | 수입검사 양식 템플릿 생성 | ⏳ | MNG UI | 1종 먼저 생성 (샘플) | | 1.2 | 미리보기 기능 확인 | ⏳ | edit.blade.php | 수입검사 성적서 양식 출력 | | 1.3 | 문서 생성 테스트 | ⏳ | MNG /documents/create | 템플릿 기반 문서 작성 | | 1.4 | **품목-양식 매핑 기능** | ⏳ | 신규 페이지 | 품목별 사용할 양식 연결 | | 1.5 | 추가 양식 생성 (필요시) | ⏳ | MNG UI | 20종 순차 생성 | ### 2.2 Phase 2: API 백엔드 (후속 작업) | # | 작업 항목 | 상태 | 파일 | 비고 | |---|----------|:----:|------|------| | 2.1 | 검사 템플릿 조회 API | ⏳ | `InspectionTemplateController` | 제품별 검사항목 반환 | | 2.2 | 제품-양식 매핑 테이블 | ⏳ | 마이그레이션 | item_inspection_template_mappings | | 2.3 | 문서 생성/조회 API 확장 | ⏳ | `DocumentController` | linkable 연동 | ### 2.3 Phase 3: React 연동 (최종 작업) | # | 작업 항목 | 상태 | 파일 | 비고 | |---|----------|:----:|------|------| | 3.1 | 검사항목 동적 로드 | ⏳ | `InspectionCreate.tsx` | API 연동 | | 3.2 | 검사 결과 저장/조회 | ⏳ | `InspectionCreate.tsx` | POST/GET /documents | --- ## 3. 작업 절차 ### 3.1 Phase 1 작업 흐름 (MNG - 메인 작업) ``` [Step 1: 문서양식 생성] (1종 샘플 먼저) │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ MNG /document-templates/create │ │ │ │ 예: "철제품 수입검사 성적서" 양식 생성 │ │ │ │ 1. 기본정보 탭 │ │ - 양식명: 철제품 수입검사 성적서 │ │ - 분류: 품질/수입검사 │ │ - 문서 제목: 수입검사 성적서 │ │ │ │ 2. 결재라인 탭 │ │ - 작성 (품질팀) → 검토 (품질팀장) → 승인 (공장장) │ │ │ │ 3. 검사 기준서 탭 │ │ - 섹션: "검사 항목" │ │ - 항목들 (철제품에 맞는 검사기준): │ │ · 겉모양 - 외관 - 흠집,녹 없음 - 육안 │ │ · 치수 - 두께 - ±0.1mm - 마이크로미터 │ │ · 치수 - 폭 - ±1mm - 줄자 │ │ · 재질 - 경도 - HRC 45-50 - 경도계 │ │ │ │ 4. 테이블 컬럼 탭 │ │ - 구분, 항목, 규격, 방법, 판정, 비고 │ └─────────────────────────────────────────────────────────────────┘ │ ▼ [Step 2: 미리보기 확인] │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 미리보기 버튼 클릭 │ │ │ │ ┌───────────────────────────────────────────────────────────┐ │ │ │ 철제품 수입검사 성적서 │ │ │ │ (주)SAM │ │ │ │ │ │ │ │ 결재란: [작성] [검토] [승인] │ │ │ │ │ │ │ │ [검사 항목] │ │ │ │ ┌──────┬──────┬──────────┬──────┬──────┬──────┐ │ │ │ │ │ 구분 │ 항목 │ 규격 │ 방법 │ 판정 │ 비고 │ │ │ │ │ ├──────┼──────┼──────────┼──────┼──────┼──────┤ │ │ │ │ │겉모양│ 외관 │흠집,녹無 │ 육안 │ │ │ │ │ │ │ │ 치수 │ 두께 │ ±0.1mm │마이크로│ │ │ │ │ │ │ │ 치수 │ 폭 │ ±1mm │ 줄자 │ │ │ │ │ │ │ │ 재질 │ 경도 │HRC 45-50│경도계│ │ │ │ │ │ │ └──────┴──────┴──────────┴──────┴──────┴──────┘ │ │ │ │ │ │ │ │ 종합 판정: □ 적합 □ 부적합 □ 조건부적합 │ │ │ └───────────────────────────────────────────────────────────┘ │ │ │ │ ✅ 양식이 원하는 대로 출력되는지 확인 │ └─────────────────────────────────────────────────────────────────┘ │ ▼ [Step 3: 문서 생성 테스트] │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ MNG /documents/create │ │ │ │ 1. 템플릿 선택: 철제품 수입검사 성적서 │ │ 2. 제목 입력 │ │ 3. 기본 필드 입력 (검사일, 검사자, LOT번호 등) │ │ 4. 검사 항목별 판정 입력 │ │ 5. 저장 │ └─────────────────────────────────────────────────────────────────┘ │ ▼ [Step 4: 품목-양식 매핑 기능] ⭐ 신규 │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ MNG /item-inspection-mappings (신규 페이지) │ │ │ │ ┌───────────────────────────────────────────────────────────┐ │ │ │ 품목-검사양식 매핑 │ │ │ │ │ │ │ │ [양식 선택] 철제품 수입검사 성적서 ▼ │ │ │ │ │ │ │ │ 연결된 품목: │ │ │ │ ┌──────────┬──────────────┬────────┐ │ │ │ │ │ 품목코드 │ 품목명 │ 해제 │ │ │ │ │ ├──────────┼──────────────┼────────┤ │ │ │ │ │ A001 │ 가이드레일 │ X │ │ │ │ │ │ A002 │ 브라켓 │ X │ │ │ │ │ │ A003 │ 철판 1.0t │ X │ │ │ │ │ └──────────┴──────────────┴────────┘ │ │ │ │ │ │ │ │ [+ 품목 추가] │ │ │ └───────────────────────────────────────────────────────────┘ │ │ │ │ → 품목 선택 시 해당 양식의 검사항목으로 검사 진행 │ └─────────────────────────────────────────────────────────────────┘ │ ▼ [Step 5: 추가 양식 생성] (필요시) │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 같은 방식으로 나머지 양식 생성: │ │ │ │ - 도장품 수입검사 성적서 (도막두께, 밀착력, 색상...) │ │ - 플라스틱 수입검사 성적서 (외관, 치수, 강도...) │ │ - 원자재 수입검사 성적서 (성적서 확인, 치수...) │ │ - ... (총 20종) │ └─────────────────────────────────────────────────────────────────┘ ``` ### 3.2 Phase 2-3 데이터 흐름 (후속 작업) > Phase 1 완료 후 진행 ### 3.2 API 스펙 #### API 1: 검사 템플릿 조회 ``` GET /api/v1/inspection-templates Query Parameters: - item_code: string (선택) - 품목코드로 매핑된 템플릿 조회 - category: string (선택) - 카테고리로 필터링 Response 200: { "success": true, "data": { "id": 1, "name": "수입검사 성적서", "category": "품질", "title": "수입검사 성적서", "basic_fields": [ { "id": 1, "label": "검사일", "field_type": "date", "is_required": true }, { "id": 2, "label": "검사자", "field_type": "text", "is_required": true }, { "id": 3, "label": "LOT번호", "field_type": "text", "is_required": true } ], "sections": [ { "id": 1, "title": "철제품 검사", "image_path": null, "items": [ { "id": 101, "category": "겉모양", "item": "외관", "standard": "이상 없음", "method": "육안", "frequency": "전수", "regulation": "사내규격" }, { "id": 102, "category": "치수", "item": "두께", "standard": "1.0±0.1mm", "method": "계측", "frequency": "샘플링", "regulation": "KS D 3503" } ] } ], "columns": [ { "id": 1, "label": "검사항목", "width": "150px", "column_type": "text" }, { "id": 2, "label": "규격", "width": "200px", "column_type": "text" }, { "id": 3, "label": "검사방법", "width": "100px", "column_type": "text" }, { "id": 4, "label": "판정", "width": "100px", "column_type": "select" }, { "id": 5, "label": "비고", "width": "200px", "column_type": "text" } ], "footer_judgement_options": ["적합", "부적합", "조건부적합"] } } ``` #### API 2: 문서 생성 (수입검사 결과 저장) ``` POST /api/v1/documents Request Body: { "template_id": 1, "title": "수입검사 성적서 - A001 가이드레일", "linkable_type": "App\\Models\\Receiving", "linkable_id": 5, "data": { "basic_fields": { "inspection_date": "2025-01-28", "inspector": "김철수", "lot_no": "250128-01" }, "section_items": [ { "section_id": 1, "item_id": 101, "judgment": "적합", "remark": "" }, { "section_id": 1, "item_id": 102, "judgment": "적합", "remark": "측정값: 0.98mm" } ], "overall_judgment": "적합", "opinion": "전 항목 적합 판정" } } Response 201: { "success": true, "message": "문서가 저장되었습니다.", "data": { "id": 100, "document_no": "IQC-20250128-0001", "status": "DRAFT" } } ``` ### 3.3 DB 스키마 추가 #### 제품-검사양식 매핑 테이블 ```sql CREATE TABLE item_inspection_template_mappings ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, tenant_id BIGINT UNSIGNED NOT NULL, item_id BIGINT UNSIGNED NOT NULL, -- items.id template_id BIGINT UNSIGNED NOT NULL, -- document_templates.id priority INT DEFAULT 0, -- 우선순위 (높을수록 우선) created_at TIMESTAMP NULL, updated_at TIMESTAMP NULL, FOREIGN KEY (tenant_id) REFERENCES tenants(id), FOREIGN KEY (item_id) REFERENCES items(id), FOREIGN KEY (template_id) REFERENCES document_templates(id), UNIQUE KEY unique_item_template (tenant_id, item_id, template_id) ); ``` ### 3.4 React 컴포넌트 수정 #### InspectionCreate.tsx 변경 사항 ```typescript // 기존 (하드코딩) const defaultInspectionItems: InspectionCheckItem[] = [ { id: '1', name: '겉모양', specification: '외관 이상 없음', method: '육안', judgment: '' }, { id: '2', name: '두께', specification: 't 1.0', method: '계측', judgment: '' }, // ... ]; // 변경 후 (동적 로드) const [template, setTemplate] = useState(null); const [inspectionItems, setInspectionItems] = useState([]); useEffect(() => { if (selectedTarget?.itemCode) { loadInspectionTemplate(selectedTarget.itemCode); } }, [selectedTarget]); const loadInspectionTemplate = async (itemCode: string) => { const response = await fetch(`/api/v1/inspection-templates?item_code=${itemCode}`); const result = await response.json(); if (result.success) { setTemplate(result.data); // 섹션의 아이템들을 평탄화하여 검사항목 배열 생성 const items = result.data.sections.flatMap(section => section.items.map(item => ({ ...item, section_id: section.id, judgment: '', remark: '' })) ); setInspectionItems(items); } }; ``` --- ## 4. 상세 작업 내용 ### 4.1 Phase 1: MNG 문서양식 및 미리보기 (메인 작업) ⭐ #### 1.1 수입검사 양식 템플릿 생성 MNG `/document-templates` 페이지에서 수입검사 성적서 양식 생성: **양식 구조:** ``` ┌─────────────────────────────────────────────────────────────────┐ │ [상단 고정] │ │ ├─ 문서 제목: 수입검사 성적서 │ │ ├─ 회사명, 문서번호, 작성일 │ │ └─ 결재란 (작성 → 검토 → 승인) │ ├─────────────────────────────────────────────────────────────────┤ │ [기본 정보] │ │ ├─ 품목코드, 품목명, 규격 │ │ ├─ 공급업체, 입고수량, 입고일 │ │ ├─ 검사일, 검사자, LOT번호 │ │ └─ 발주번호, PO번호 │ ├─────────────────────────────────────────────────────────────────┤ │ [검사 항목 테이블] ← 동적 (20종) │ │ ┌──────┬──────┬──────┬──────┬──────┬──────┐ │ │ │ 구분 │ 항목 │ 규격 │ 방법 │ 판정 │ 비고 │ │ │ ├──────┼──────┼──────┼──────┼──────┼──────┤ │ │ │겉모양│ 외관 │이상無│ 육안 │ 적합 │ │ │ │ │ 치수 │ 두께 │1.0mm │ 계측 │ 적합 │0.98mm│ │ │ │ 치수 │ 폭 │1000mm│ 계측 │ 적합 │ │ │ │ └──────┴──────┴──────┴──────┴──────┴──────┘ │ ├─────────────────────────────────────────────────────────────────┤ │ [하단] │ │ ├─ 종합 판정: ○ 적합 / ○ 부적합 / ○ 조건부적합 │ │ └─ 비고 (종합 의견) │ └─────────────────────────────────────────────────────────────────┘ ``` **MNG에서 설정할 항목:** 1. **기본정보 탭** - 양식명: 수입검사 성적서 - 분류: 품질 - 문서 제목: 수입검사 성적서 2. **결재라인 탭** - 작성 (품질팀) - 검토 (품질팀장) - 승인 (공장장) 3. **검사 기준서 탭** (섹션 + 항목) - 섹션: "검사 항목" - 항목들 (20종 예시): | 구분 | 검사항목 | 검사기준 | 검사방법 | 검사주기 | 관련규정 | |------|---------|---------|---------|---------|---------| | 겉모양 | 외관 | 흠집, 녹 없음 | 육안 | 전수 | 사내규격 | | 치수 | 두께 | ±0.1mm | 마이크로미터 | 샘플링 | KS D 3503 | | 치수 | 폭 | ±1mm | 줄자 | 샘플링 | KS D 3503 | | 치수 | 길이 | ±2mm | 줄자 | 샘플링 | KS D 3503 | | 재질 | 경도 | HRC 45-50 | 경도계 | 샘플링 | ASTM E18 | | 도막 | 두께 | 60±10μm | 도막계 | 샘플링 | KS M 5000 | | 도막 | 밀착력 | 5B 이상 | 크로스컷 | 샘플링 | ASTM D3359 | | 외관 | 색상 | 표준색상 | 색차계 | 전수 | 사내규격 | | ... | ... | ... | ... | ... | ... | 4. **테이블 컬럼 탭** - 구분 (text, 80px) - 검사항목 (text, 100px) - 검사기준 (text, 150px) - 검사방법 (text, 100px) - 판정 (select: 적합/부적합, 100px) - 비고 (text, 150px) #### 1.2 검사항목 섹션 구성 현재 document-templates의 섹션 구조가 수입검사에 맞는지 확인하고 조정: **확인 사항:** - `document_template_sections`: 섹션(검사 항목 그룹) - `document_template_section_items`: 개별 검사 항목 - 필드: category, item, standard, method, frequency, regulation #### 1.3 문서 생성 테스트 MNG `/documents/create`에서: 1. 수입검사 성적서 템플릿 선택 2. 기본 정보 입력 (품목, 검사일, 검사자 등) 3. 검사 항목별 판정 입력 4. 저장 #### 1.4 미리보기 기능 구현/확인 `document-templates/edit.blade.php`의 미리보기 모달이 수입검사 성적서 양식을 제대로 출력하는지 확인: **미리보기 출력 형태:** ``` ┌─────────────────────────────────────────────────────────────────┐ │ 수입검사 성적서 │ │ (주)SAM │ │ │ │ 결재 ┌────┬────┬────┐ │ │ │작성│검토│승인│ │ │ ├────┼────┼────┤ │ │ │ │ │ │ │ │ └────┴────┴────┘ │ │ │ │ [기본 정보] │ │ 품목코드: A001 품목명: 가이드레일 │ │ 검사일: 2025-01-28 검사자: 김철수 │ │ LOT번호: 250128-01 │ │ │ │ [검사 항목] │ │ ┌──────┬──────┬──────────┬──────┬──────┬──────┐ │ │ │ 구분 │ 항목 │ 규격 │ 방법 │ 판정 │ 비고 │ │ │ ├──────┼──────┼──────────┼──────┼──────┼──────┤ │ │ │겉모양│ 외관 │흠집,녹無 │ 육안 │ │ │ │ │ │ 치수 │ 두께 │ ±0.1mm │ 계측 │ │ │ │ │ │ 치수 │ 폭 │ ±1mm │ 계측 │ │ │ │ │ └──────┴──────┴──────────┴──────┴──────┴──────┘ │ │ │ │ 종합 판정: □ 적합 □ 부적합 □ 조건부적합 │ │ 비고: │ └─────────────────────────────────────────────────────────────────┘ ``` ### 4.2 Phase 2: API 백엔드 (후속 작업) > Phase 1 완료 후 진행 - 검사 템플릿 조회 API - 제품-양식 매핑 테이블 - 문서 생성/조회 API 확장 ### 4.3 Phase 3: React 연동 (최종 작업) > Phase 2 완료 후 진행 - 검사항목 동적 로드 - 검사 결과 저장/조회 --- ## 5. 컨펌 대기 목록 | # | 항목 | 변경 내용 | 영향 범위 | 상태 | |---|------|----------|----------|------| | 1 | 수입검사 템플릿 구조 | 기본정보 + 검사항목 20종 구성 | mng/document-templates | ⏳ 대기 | | 2 | 미리보기 출력 형식 | 성적서 양식 레이아웃 | mng/edit.blade.php | ⏳ 대기 | --- ## 6. 변경 이력 | 날짜 | 항목 | 변경 내용 | 파일 | 승인 | |------|------|----------|------|------| | 2025-01-28 | - | 계획 문서 초안 작성 | - | - | --- ## 7. 참고 문서 - **문서관리 시스템 계획**: `docs/dev_plans/document-management-system-plan.md` - **API 규칙**: `docs/reference/api-rules.md` - **DB 스키마**: `docs/specs/database-schema.md` - **품질 체크리스트**: `docs/reference/quality-checklist.md` --- ## 8. 세션 및 메모리 관리 정책 ### 8.1 세션 시작 시 ```javascript read_memory("inspection-document-state") read_memory("inspection-document-snapshot") ``` ### 8.2 Serena 메모리 구조 - `inspection-document-state`: { phase, progress, next_step } - `inspection-document-snapshot`: 코드 변경점 및 논의 요약 --- ## 9. 검증 결과 ### 9.1 테스트 케이스 (Phase 1) | 입력값 | 예상 결과 | 실제 결과 | 상태 | |--------|----------|----------|------| | MNG에서 수입검사 템플릿 생성 | 기본정보 + 20종 검사항목 저장 | - | ⏳ | | 템플릿 미리보기 클릭 | 성적서 양식 출력 | - | ⏳ | | MNG에서 문서 생성 | 템플릿 기반 문서 작성 가능 | - | ⏳ | | 문서 상세 보기 | 입력 데이터 표시 | - | ⏳ | ### 9.2 성공 기준 달성 현황 | 기준 | 달성 | 비고 | |------|------|------| | MNG 템플릿 생성 (20종 검사항목) | ⏳ | Phase 1.1-1.2 | | 미리보기 성적서 양식 출력 | ⏳ | Phase 1.4 | | MNG 문서 생성/조회 | ⏳ | Phase 1.3 | --- ## 10. 자기완결성 점검 결과 ### 10.1 체크리스트 검증 | # | 검증 항목 | 상태 | 비고 | |---|----------|:----:|------| | 1 | 작업 목적이 명확한가? | ✅ | 섹션 1.1 | | 2 | 성공 기준이 정의되어 있는가? | ✅ | 섹션 9.2 | | 3 | 작업 범위가 구체적인가? | ✅ | 섹션 2 | | 4 | 의존성이 명시되어 있는가? | ✅ | 섹션 1.6, 7 | | 5 | 참고 파일 경로가 정확한가? | ✅ | 섹션 3, 4 | | 6 | 단계별 절차가 실행 가능한가? | ✅ | 섹션 3, 4 | | 7 | 검증 방법이 명시되어 있는가? | ✅ | 섹션 9.1 | | 8 | 모호한 표현이 없는가? | ✅ | API 스펙 구체화 | ### 10.2 새 세션 시뮬레이션 테스트 | 질문 | 답변 가능 | 참조 섹션 | |------|:--------:|----------| | Q1. 이 작업의 목적은 무엇인가? | ✅ | 1.1 배경 | | Q2. 어디서부터 시작해야 하는가? | ✅ | 2.1 Phase 1 | | Q3. 어떤 파일을 수정해야 하는가? | ✅ | 4. 상세 작업 | | Q4. 작업 완료 확인 방법은? | ✅ | 9. 검증 결과 | | Q5. 막혔을 때 참고 문서는? | ✅ | 7. 참고 문서 | **결과**: 5/5 통과 → ✅ 자기완결성 확보 --- *이 문서는 /plan 스킬로 생성되었습니다.*