/**
 * 화면별 기능정의서 데이터
 *
 * 구조:
 * - screenKey: 화면 식별자 (view 값과 매칭)
 * - screenName: 화면 이름
 * - menuPath: 메뉴 경로
 * - sections: 섹션 배열
 *   - sectionName: 섹션 이름
 *   - sectionType: 섹션 유형 (header, search, table, form, modal, button, card, etc.)
 *   - items: 항목 배열
 *     - itemName: 항목 이름
 *     - itemType: 항목 유형 (button, input, select, table, etc.)
 *     - properties: 속성 배열
 *       - propertyName: 속성 이름
 *       - propertyType: 속성 유형 (ui, function, data, interaction, state, validation)
 *       - description: 설명
 */

export const screenFeatureDocuments = {
  // ========================================
  // 기준정보 > 채번관리
  // ========================================
  'number-rule-list': {
    screenKey: 'number-rule-list',
    screenName: '채번관리 목록',
    menuPath: '기준정보 > 채번관리',
    description: '문서번호 채번 규칙을 관리하는 화면입니다. 견적서, 수주서, 작업지시서 등 각종 문서의 자동 번호 생성 규칙을 설정합니다.',
    sections: [
      {
        sectionName: '헤더 영역',
        sectionType: 'header',
        items: [
          {
            itemName: '페이지 타이틀',
            itemType: 'label',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '"채번관리" 텍스트와 Hash 아이콘 표시' },
              { propertyName: '아이콘', propertyType: 'ui', description: 'Hash 아이콘 (lucide-react)' }
            ]
          },
          {
            itemName: '도움말 버튼',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '? 아이콘 버튼, 원형 테두리' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'showHelp 상태를 true로 변경' },
              { propertyName: '결과', propertyType: 'function', description: '도움말 모달 표시 (채번관리 vs 공통코드 차이 설명)' }
            ]
          },
          {
            itemName: '채번 등록 버튼',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'Primary 버튼, Plus 아이콘 + "채번 등록" 텍스트' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'openCreateModal() 함수 호출' },
              { propertyName: '상태 변화', propertyType: 'state', description: 'showModal: true, editingRule: null, formData: 초기값으로 리셋' },
              { propertyName: '결과', propertyType: 'function', description: '채번 등록 모달 표시' }
            ]
          }
        ]
      },
      {
        sectionName: '리포트 카드 영역',
        sectionType: 'card',
        items: [
          {
            itemName: '전체 채번규칙 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '라벨: "전체 채번규칙", 값: numberRules.length' },
              { propertyName: '데이터 소스', propertyType: 'data', description: 'numberRules 상태 배열의 길이' }
            ]
          },
          {
            itemName: '활성 규칙 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '라벨: "활성 규칙", 값: 활성 상태 규칙 수' },
              { propertyName: '데이터 소스', propertyType: 'data', description: "numberRules.filter(r => r.status === '활성').length" }
            ]
          },
          {
            itemName: '문서번호 규칙 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '라벨: "문서번호 규칙", 값: 문서번호 관련 규칙 수' },
              { propertyName: '데이터 소스', propertyType: 'data', description: 'target이 문서번호 관련인 규칙 필터링' }
            ]
          },
          {
            itemName: 'LOT번호 규칙 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '라벨: "LOT번호 규칙", 값: LOT 관련 규칙 수' },
              { propertyName: '데이터 소스', propertyType: 'data', description: "target이 'LOT번호'인 규칙 필터링" }
            ]
          }
        ]
      },
      {
        sectionName: '검색 영역',
        sectionType: 'search',
        items: [
          {
            itemName: '검색 입력 필드',
            itemType: 'input',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '전체 너비, Search 아이콘 좌측 배치, placeholder: "번호기준이름, 적용대상, 접두사, 예시 검색..."' },
              { propertyName: '입력 동작', propertyType: 'interaction', description: 'onChange로 searchTerm 상태 업데이트' },
              { propertyName: '상태 변화', propertyType: 'state', description: 'searchTerm 상태 변경' },
              { propertyName: '필터링 로직', propertyType: 'function', description: 'filteredRules = numberRules.filter()로 이름, 대상, 접두사, 예시 기준 검색' }
            ]
          }
        ]
      },
      {
        sectionName: '테이블 영역',
        sectionType: 'table',
        items: [
          {
            itemName: '전체선택 체크박스',
            itemType: 'checkbox',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '테이블 헤더 첫 번째 컬럼' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'handleSelectAll() 호출' },
              { propertyName: '상태 변화', propertyType: 'state', description: 'selectedIds 배열 전체 추가 또는 비우기' },
              { propertyName: '체크 상태', propertyType: 'state', description: 'isAllSelected로 현재 전체선택 상태 표시' }
            ]
          },
          {
            itemName: '행 체크박스',
            itemType: 'checkbox',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '각 행 첫 번째 컬럼' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'handleSelect(rule.id) 호출' },
              { propertyName: '상태 변화', propertyType: 'state', description: 'selectedIds 배열에 해당 ID 추가/제거' },
              { propertyName: '체크 상태', propertyType: 'state', description: 'isSelected(rule.id)로 현재 선택 상태 표시' },
              { propertyName: '행 강조', propertyType: 'ui', description: '선택된 행은 bg-blue-50 배경색 적용' }
            ]
          },
          {
            itemName: '번호기준이름 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '규칙 이름 텍스트' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'rule.name' }
            ]
          },
          {
            itemName: '적용대상 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '적용 대상 텍스트 (견적서, 수주서 등)' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'rule.target' }
            ]
          },
          {
            itemName: '접두사 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '코드 스타일 표시 (bg-gray-100)' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'rule.prefix' }
            ]
          },
          {
            itemName: '날짜형식 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'YYMMDD, YYYYMMDD 등 날짜 포맷' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'rule.dateFormat' }
            ]
          },
          {
            itemName: '순번자릿수 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '2자리, 3자리 등 순번 자릿수' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'rule.seqDigits + "자리"' }
            ]
          },
          {
            itemName: '리셋주기 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '일간, 월간, 연간 등 리셋 주기' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'rule.resetCycle' }
            ]
          },
          {
            itemName: '예시 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '폰트 모노스페이스, 파란색 텍스트' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'rule.example 또는 generatePreview()' }
            ]
          },
          {
            itemName: '상태 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '활성: 녹색 뱃지, 비활성: 회색 뱃지' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'toggleStatus(rule.id) 호출' },
              { propertyName: '상태 변화', propertyType: 'state', description: 'rule.status 활성 ↔ 비활성 토글' },
              { propertyName: '데이터 저장', propertyType: 'data', description: 'localStorage 자동 저장' }
            ]
          },
          {
            itemName: '작업 컬럼 (수정 버튼)',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '선택된 행에만 표시, Edit3 아이콘' },
              { propertyName: '표시 조건', propertyType: 'state', description: 'hasSelection && isSelected(rule.id)' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'openEditModal(rule) 호출' },
              { propertyName: '상태 변화', propertyType: 'state', description: 'showModal: true, editingRule: rule, formData: rule 데이터로 채움' },
              { propertyName: '결과', propertyType: 'function', description: '채번 수정 모달 표시' }
            ]
          },
          {
            itemName: '작업 컬럼 (삭제 버튼)',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '선택된 행에만 표시, Trash2 아이콘, 빨간색' },
              { propertyName: '표시 조건', propertyType: 'state', description: 'hasSelection && isSelected(rule.id)' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'handleDelete(rule.id) 호출' },
              { propertyName: '확인 절차', propertyType: 'validation', description: 'window.confirm()으로 삭제 확인' },
              { propertyName: '상태 변화', propertyType: 'state', description: 'numberRules에서 해당 규칙 제거' },
              { propertyName: '데이터 저장', propertyType: 'data', description: 'localStorage 자동 저장' }
            ]
          },
          {
            itemName: '선택 삭제 버튼',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '테이블 상단 우측, "선택 삭제 (N)" 텍스트, 빨간색' },
              { propertyName: '표시 조건', propertyType: 'state', description: 'isMultiSelect (2개 이상 선택 시)' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: '선택된 모든 규칙 삭제' },
              { propertyName: '확인 절차', propertyType: 'validation', description: 'window.confirm()으로 일괄 삭제 확인' },
              { propertyName: '상태 변화', propertyType: 'state', description: 'numberRules에서 선택된 규칙들 제거, selectedIds 초기화' }
            ]
          }
        ]
      },
      {
        sectionName: '채번 등록/수정 모달',
        sectionType: 'modal',
        items: [
          {
            itemName: '모달 헤더',
            itemType: 'modal-header',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '신규: "채번 등록", 수정: "채번 수정"' },
              { propertyName: '닫기 버튼', propertyType: 'interaction', description: 'X 버튼 클릭 시 showModal: false' }
            ]
          },
          {
            itemName: '적용대상 선택',
            itemType: 'select',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '드롭다운 선택 필드' },
              { propertyName: '옵션 목록', propertyType: 'data', description: '견적서, 수주서, 작업지시서, 출하지시서, LOT번호 등' },
              { propertyName: '변경 동작', propertyType: 'interaction', description: '템플릿 선택 시 관련 필드 자동 채움' },
              { propertyName: '상태 변화', propertyType: 'state', description: 'formData.target, prefix, dateFormat 등 자동 설정' }
            ]
          },
          {
            itemName: '번호기준이름 입력',
            itemType: 'input',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '텍스트 입력 필드' },
              { propertyName: '필수 여부', propertyType: 'validation', description: '필수 입력 항목' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'formData.name' }
            ]
          },
          {
            itemName: '접두사 입력',
            itemType: 'input',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '텍스트 입력 필드 (예: QT-, SO-)' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'formData.prefix' }
            ]
          },
          {
            itemName: '구분자 입력',
            itemType: 'input',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '텍스트 입력 필드 (예: -, _)' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'formData.separator' }
            ]
          },
          {
            itemName: '날짜형식 선택',
            itemType: 'select',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '드롭다운 선택 필드' },
              { propertyName: '옵션 목록', propertyType: 'data', description: 'YYMMDD, YYYYMMDD, YYMM, YYYYMM, YY, YYYY' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'formData.dateFormat' }
            ]
          },
          {
            itemName: '순번자릿수 입력',
            itemType: 'input',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '숫자 입력 필드 (type="number")' },
              { propertyName: '범위 제한', propertyType: 'validation', description: '최소 1, 최대 5' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'formData.seqDigits' }
            ]
          },
          {
            itemName: '리셋주기 선택',
            itemType: 'select',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '드롭다운 선택 필드' },
              { propertyName: '옵션 목록', propertyType: 'data', description: '일간(daily), 월간(monthly), 연간(yearly), 없음(none)' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'formData.resetCycle' }
            ]
          },
          {
            itemName: '번호 미리보기',
            itemType: 'label',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '실시간 미리보기 표시, 파란색 배경' },
              { propertyName: '계산 로직', propertyType: 'function', description: 'generatePreview(formData)로 예시 번호 생성' },
              { propertyName: '갱신 조건', propertyType: 'state', description: 'formData 변경 시 실시간 업데이트' }
            ]
          },
          {
            itemName: '취소 버튼',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'Outline 스타일 버튼' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'showModal: false' },
              { propertyName: '결과', propertyType: 'function', description: '모달 닫기, 입력 데이터 유지 안함' }
            ]
          },
          {
            itemName: '저장 버튼',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'Primary 스타일 버튼' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'handleSave() 호출' },
              { propertyName: '유효성 검사', propertyType: 'validation', description: 'name, target 필수 입력 확인' },
              { propertyName: '상태 변화', propertyType: 'state', description: '신규: numberRules에 추가, 수정: 해당 규칙 업데이트' },
              { propertyName: '데이터 저장', propertyType: 'data', description: 'localStorage에 자동 저장' },
              { propertyName: '결과', propertyType: 'function', description: '모달 닫기, 목록 갱신' }
            ]
          }
        ]
      },
      {
        sectionName: '도움말 모달',
        sectionType: 'modal',
        items: [
          {
            itemName: '도움말 내용',
            itemType: 'content',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '채번관리 vs 공통코드 차이점 설명' },
              { propertyName: '내용 구성', propertyType: 'function', description: '번호기준: 문서 일련번호 (KD-PR-251217-01), 코드기준: 마스터 식별코드 (BP-GR-001)' }
            ]
          },
          {
            itemName: '닫기 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'showHelp: false' }
            ]
          }
        ]
      }
    ],
    stateManagement: [
      { stateName: 'showHelp', type: 'boolean', initialValue: 'false', description: '도움말 모달 표시 여부' },
      { stateName: 'searchTerm', type: 'string', initialValue: "''", description: '검색어' },
      { stateName: 'numberRules', type: 'array', initialValue: 'loadNumberRules()', description: '채번 규칙 목록 (localStorage에서 로드)' },
      { stateName: 'showModal', type: 'boolean', initialValue: 'false', description: '등록/수정 모달 표시 여부' },
      { stateName: 'editingRule', type: 'object|null', initialValue: 'null', description: '수정 중인 규칙 (null이면 신규)' },
      { stateName: 'formData', type: 'object', initialValue: '{ name, target, prefix, dateFormat, seqDigits, separator, resetCycle, status, description }', description: '폼 입력 데이터' },
      { stateName: 'selectedIds', type: 'array', initialValue: '[]', description: '선택된 행 ID 목록 (useListSelection)' }
    ],
    dataFlow: [
      { trigger: '페이지 로드', action: 'loadNumberRules()', result: 'localStorage에서 채번 규칙 로드' },
      { trigger: 'numberRules 변경', action: 'useEffect → saveNumberRules()', result: 'localStorage에 자동 저장' },
      { trigger: '검색어 입력', action: 'searchTerm 상태 변경', result: 'filteredRules 재계산 → 테이블 필터링' },
      { trigger: '채번 등록/수정', action: 'handleSave()', result: 'numberRules 업데이트 → localStorage 저장' },
      { trigger: '상태 토글', action: 'toggleStatus(id)', result: '해당 규칙 status 변경 → localStorage 저장' }
    ]
  },

  // ========================================
  // 기준정보 > 공통코드관리
  // ========================================
  'code-rule-list': {
    screenKey: 'code-rule-list',
    screenName: '공통코드관리 목록',
    menuPath: '기준정보 > 공통코드',
    description: '품목코드, 거래처코드, 현장코드 등 마스터 데이터의 코드 생성 규칙을 관리하는 화면입니다.',
    sections: [
      {
        sectionName: '헤더 영역',
        sectionType: 'header',
        items: [
          {
            itemName: '페이지 타이틀',
            itemType: 'label',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '"공통코드관리" 텍스트와 Code 아이콘 표시' }
            ]
          },
          {
            itemName: '도움말 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'showHelp 상태를 true로 변경' },
              { propertyName: '결과', propertyType: 'function', description: '도움말 모달 표시' }
            ]
          },
          {
            itemName: '코드기준 등록 버튼',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'Primary 버튼, Plus 아이콘' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'openCreateModal() 호출' },
              { propertyName: '상태 변화', propertyType: 'state', description: 'showModal: true, editingRule: null' }
            ]
          }
        ]
      },
      {
        sectionName: '테이블 영역',
        sectionType: 'table',
        items: [
          {
            itemName: '코드기준이름 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'rule.name' }
            ]
          },
          {
            itemName: '적용대상 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '품목코드, 거래처코드, 현장코드 등' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'rule.target' }
            ]
          },
          {
            itemName: '코드유형 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '단순형(simple) 또는 조합형(composite) 뱃지' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'rule.codeType' }
            ]
          },
          {
            itemName: '코드구조 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '코드 구성 요소 설명 (예: 품목유형 + 카테고리 + 순번)' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'getStructureDescription(rule)' }
            ]
          },
          {
            itemName: '예시 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '코드 스타일 (font-mono), 파란색' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'rule.example' }
            ]
          },
          {
            itemName: '상태 토글 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'toggleStatus(rule.id)' },
              { propertyName: '상태 변화', propertyType: 'state', description: '활성 ↔ 비활성' }
            ]
          }
        ]
      },
      {
        sectionName: '코드기준 등록/수정 모달',
        sectionType: 'modal',
        items: [
          {
            itemName: '적용대상 선택',
            itemType: 'select',
            properties: [
              { propertyName: '옵션 목록', propertyType: 'data', description: '품목코드, 거래처코드, 현장코드' },
              { propertyName: '변경 동작', propertyType: 'interaction', description: '템플릿 적용 (codeType, prefix 등 자동 설정)' }
            ]
          },
          {
            itemName: '코드유형 선택',
            itemType: 'radio',
            properties: [
              { propertyName: '옵션', propertyType: 'data', description: '단순형(simple): 접두사+순번, 조합형(composite): 여러 요소 조합' },
              { propertyName: '상태 변화', propertyType: 'state', description: 'formData.codeType 변경' },
              { propertyName: '연동 효과', propertyType: 'function', description: '코드유형에 따라 입력 필드 구성 변경' }
            ]
          },
          {
            itemName: '코드 미리보기',
            itemType: 'label',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '실시간 미리보기, 파란색 배경' },
              { propertyName: '계산 로직', propertyType: 'function', description: 'generatePreview(formData)' }
            ]
          }
        ]
      }
    ],
    stateManagement: [
      { stateName: 'codeRules', type: 'array', initialValue: '[초기 코드규칙 배열]', description: '코드 규칙 목록' },
      { stateName: 'showModal', type: 'boolean', initialValue: 'false', description: '모달 표시 여부' },
      { stateName: 'editingRule', type: 'object|null', initialValue: 'null', description: '수정 중인 규칙' },
      { stateName: 'formData', type: 'object', initialValue: '{ name, target, codeType, prefix, useDate, dateFormat, seqDigits, separator, status, description }', description: '폼 데이터' }
    ]
  },

  // ========================================
  // 기준정보 > 품목기준관리
  // ========================================
  'item-master-list': {
    screenKey: 'item-master-list',
    screenName: '품목기준관리',
    menuPath: '기준정보 > 품목기준',
    description: '품목 등록/수정/삭제에 사용되는 입력 필드, 섹션 구성, 페이지 템플릿을 관리하는 화면입니다.',
    sections: [
      {
        sectionName: '탭 영역',
        sectionType: 'tab',
        items: [
          {
            itemName: 'Hierarchy 탭',
            itemType: 'tab-button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '페이지 > 섹션 > 필드 계층 구조 관리' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: "setActiveTab('hierarchy')" },
              { propertyName: '활성 상태', propertyType: 'state', description: "activeTab === 'hierarchy'일 때 강조" }
            ]
          },
          {
            itemName: 'Category 탭',
            itemType: 'tab-button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '품목 카테고리(대분류/중분류/소분류) 관리' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: "setActiveTab('category')" }
            ]
          }
        ]
      },
      {
        sectionName: 'Hierarchy 탭 - 페이지 목록',
        sectionType: 'list',
        items: [
          {
            itemName: '페이지 추가 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'handleAddPage() → showPageModal: true' },
              { propertyName: '결과', propertyType: 'function', description: '페이지 추가 모달 표시' }
            ]
          },
          {
            itemName: '페이지 항목',
            itemType: 'list-item',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '페이지명, 적용 품목유형 뱃지' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'setSelectedPage(page)' },
              { propertyName: '상태 변화', propertyType: 'state', description: '선택된 페이지 강조, 우측에 구성 표시' }
            ]
          }
        ]
      },
      {
        sectionName: 'Hierarchy 탭 - 페이지 구성',
        sectionType: 'form',
        items: [
          {
            itemName: '섹션 추가 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'handleAddSection(false) → showSectionModal: true' },
              { propertyName: '결과', propertyType: 'function', description: '섹션 추가 모달 표시' }
            ]
          },
          {
            itemName: '마스터 섹션 추가 버튼',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '마스터 섹션에서 선택' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'handleAddSection(true) → 마스터 섹션 선택 모달' }
            ]
          },
          {
            itemName: '섹션 카드',
            itemType: 'card',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '섹션명, 드래그 핸들, 필드 목록' },
              { propertyName: '드래그', propertyType: 'interaction', description: '섹션 순서 변경 가능' }
            ]
          },
          {
            itemName: '필드 추가 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'handleAddField(sectionId) → showFieldModal: true' }
            ]
          },
          {
            itemName: '필드 항목',
            itemType: 'list-item',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '필드명, 입력타입 아이콘, 필수 뱃지' },
              { propertyName: '수정 버튼', propertyType: 'interaction', description: '필드 수정 모달 표시' },
              { propertyName: '삭제 버튼', propertyType: 'interaction', description: 'handleDeleteField(sectionId, fieldId)' }
            ]
          }
        ]
      },
      {
        sectionName: '페이지 추가 모달',
        sectionType: 'modal',
        items: [
          {
            itemName: '페이지명 입력',
            itemType: 'input',
            properties: [
              { propertyName: '필수 여부', propertyType: 'validation', description: '필수 입력' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'pageForm.pageName' }
            ]
          },
          {
            itemName: '페이지경로 입력',
            itemType: 'input',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '예: /items/register' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'pageForm.pagePath' }
            ]
          },
          {
            itemName: '적용 품목유형 선택',
            itemType: 'checkbox-group',
            properties: [
              { propertyName: '옵션', propertyType: 'data', description: '제품, 부자재, 원자재, 반제품 등' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'pageForm.itemTypes[]' }
            ]
          }
        ]
      },
      {
        sectionName: '섹션 추가 모달',
        sectionType: 'modal',
        items: [
          {
            itemName: '섹션명 입력',
            itemType: 'input',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'sectionForm.sectionName' }
            ]
          },
          {
            itemName: '섹션키 입력',
            itemType: 'input',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '영문 식별자 (예: basicInfo)' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'sectionForm.sectionKey' }
            ]
          },
          {
            itemName: '섹션유형 선택',
            itemType: 'select',
            properties: [
              { propertyName: '옵션', propertyType: 'data', description: 'general, specification, dimension 등' }
            ]
          }
        ]
      },
      {
        sectionName: '필드 추가 모달',
        sectionType: 'modal',
        items: [
          {
            itemName: '필드명 입력',
            itemType: 'input',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'fieldForm.fieldName' }
            ]
          },
          {
            itemName: '필드키 입력',
            itemType: 'input',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '영문 식별자 (예: itemCode)' }
            ]
          },
          {
            itemName: '입력타입 선택',
            itemType: 'select',
            properties: [
              { propertyName: '옵션', propertyType: 'data', description: 'text, number, select, date, textarea, checkbox 등' }
            ]
          },
          {
            itemName: '필수여부 체크박스',
            itemType: 'checkbox',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'fieldForm.isRequired' }
            ]
          }
        ]
      },
      {
        sectionName: 'Category 탭 - 카테고리 트리',
        sectionType: 'tree',
        items: [
          {
            itemName: '대분류 추가 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'handleAddCategory(null) → 최상위 카테고리 추가' }
            ]
          },
          {
            itemName: '카테고리 노드',
            itemType: 'tree-node',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '코드, 이름, 확장/축소 아이콘' },
              { propertyName: '하위 추가', propertyType: 'interaction', description: 'handleAddCategory(parentId)' },
              { propertyName: '수정', propertyType: 'interaction', description: '카테고리 수정 모달' },
              { propertyName: '삭제', propertyType: 'interaction', description: '하위 카테고리 없을 시만 삭제 가능' }
            ]
          }
        ]
      }
    ],
    stateManagement: [
      { stateName: 'activeTab', type: 'string', initialValue: "'hierarchy'", description: '현재 활성 탭' },
      { stateName: 'pageTemplates', type: 'array', initialValue: 'config.pageTemplates', description: '페이지 템플릿 목록' },
      { stateName: 'selectedPage', type: 'object', initialValue: 'pageTemplates[0]', description: '선택된 페이지' },
      { stateName: 'categories', type: 'array', initialValue: 'config.categories', description: '카테고리 목록' },
      { stateName: 'showPageModal', type: 'boolean', initialValue: 'false', description: '페이지 모달 표시' },
      { stateName: 'showSectionModal', type: 'boolean', initialValue: 'false', description: '섹션 모달 표시' },
      { stateName: 'showFieldModal', type: 'boolean', initialValue: 'false', description: '필드 모달 표시' },
      { stateName: 'showCategoryModal', type: 'boolean', initialValue: 'false', description: '카테고리 모달 표시' }
    ]
  },

  // ========================================
  // 기준정보 > 공정기준관리
  // ========================================
  'process-master-list': {
    screenKey: 'process-master-list',
    screenName: '공정기준관리',
    menuPath: '기준정보 > 공정기준',
    description: '공정 관리에 사용되는 입력 필드, 섹션 구성을 관리합니다.',
    sections: [
      {
        sectionName: '탭 영역',
        sectionType: 'tab',
        items: [
          {
            itemName: 'Hierarchy 탭',
            itemType: 'tab-button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '페이지 > 섹션 > 필드 구조' }
            ]
          }
        ]
      }
    ],
    stateManagement: [
      { stateName: 'activeTab', type: 'string', initialValue: "'hierarchy'", description: '현재 탭' },
      { stateName: 'pageTemplates', type: 'array', initialValue: 'processConfig.pageTemplates', description: '공정 페이지 템플릿' }
    ]
  },

  // ========================================
  // 기준정보 > 품질기준관리
  // ========================================
  'quality-master-list': {
    screenKey: 'quality-master-list',
    screenName: '품질기준관리',
    menuPath: '기준정보 > 품질기준',
    description: '품질검사에 사용되는 검사항목, 기준값, 판정 기준을 관리합니다.',
    sections: [
      {
        sectionName: '탭 영역',
        sectionType: 'tab',
        items: [
          {
            itemName: 'Hierarchy 탭',
            itemType: 'tab-button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '검사 페이지 구성 관리' }
            ]
          }
        ]
      }
    ]
  },

  // ========================================
  // 기준정보 > 거래처기준관리
  // ========================================
  'customer-master-list': {
    screenKey: 'customer-master-list',
    screenName: '거래처기준관리',
    menuPath: '기준정보 > 거래처기준',
    description: '거래처 등록/수정에 사용되는 입력 필드와 섹션을 관리합니다.',
    sections: [
      {
        sectionName: '탭 영역',
        sectionType: 'tab',
        items: [
          {
            itemName: 'Hierarchy 탭',
            itemType: 'tab-button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '거래처 페이지 구성' }
            ]
          }
        ]
      }
    ]
  },

  // ========================================
  // 기준정보 > 현장기준관리
  // ========================================
  'site-master-list': {
    screenKey: 'site-master-list',
    screenName: '현장기준관리',
    menuPath: '기준정보 > 현장기준',
    description: '현장(사이트) 등록에 사용되는 입력 필드와 섹션을 관리합니다.',
    sections: []
  },

  // ========================================
  // 기준정보 > 수주기준관리
  // ========================================
  'order-master-list': {
    screenKey: 'order-master-list',
    screenName: '수주기준관리',
    menuPath: '기준정보 > 수주기준',
    description: '수주 등록에 사용되는 입력 필드와 섹션을 관리합니다.',
    sections: []
  },

  // ========================================
  // 기준정보 > 견적수식관리
  // ========================================
  'quote-formula-list': {
    screenKey: 'quote-formula-list',
    screenName: '견적수식관리',
    menuPath: '기준정보 > 견적수식',
    description: '견적 계산에 사용되는 수식과 변수를 관리합니다.',
    sections: [
      {
        sectionName: '헤더 영역',
        sectionType: 'header',
        items: [
          {
            itemName: '수식 등록 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: '수식 등록 모달 표시' }
            ]
          }
        ]
      },
      {
        sectionName: '수식 목록',
        sectionType: 'table',
        items: [
          {
            itemName: '수식명 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'formula.name' }
            ]
          },
          {
            itemName: '수식 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '수식 표현식 (예: width * height * unitPrice)' }
            ]
          },
          {
            itemName: '적용대상 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '어떤 품목/공정에 적용되는지' }
            ]
          }
        ]
      }
    ]
  },

  // ========================================
  // 기준정보 > 문서양식관리
  // ========================================
  'document-template-list': {
    screenKey: 'document-template-list',
    screenName: '문서양식관리',
    menuPath: '기준정보 > 문서양식',
    description: '견적서, 발주서, 작업지시서 등 출력 문서의 템플릿을 관리합니다.',
    sections: [
      {
        sectionName: '문서양식 목록',
        sectionType: 'table',
        items: [
          {
            itemName: '양식명 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'template.name' }
            ]
          },
          {
            itemName: '문서유형 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '옵션', propertyType: 'data', description: '견적서, 발주서, 작업지시서, 출고증, 거래명세서 등' }
            ]
          },
          {
            itemName: '미리보기 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: '문서 미리보기 모달 표시' }
            ]
          }
        ]
      }
    ]
  },

  // ========================================
  // 기준정보 > 공정관리
  // ========================================
  'process-list': {
    screenKey: 'process-list',
    screenName: '공정 목록',
    menuPath: '기준정보 > 공정',
    description: '생산 공정을 관리합니다. 스크린인쇄, 절곡, 슬랫조립 등의 공정을 등록/수정/삭제합니다.',
    sections: [
      {
        sectionName: '헤더 영역',
        sectionType: 'header',
        items: [
          {
            itemName: '공정 등록 버튼',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'Plus 아이콘 + "공정 등록"' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: '공정 등록 화면으로 이동' }
            ]
          }
        ]
      },
      {
        sectionName: '검색 영역',
        sectionType: 'search',
        items: [
          {
            itemName: '검색 입력',
            itemType: 'input',
            properties: [
              { propertyName: 'placeholder', propertyType: 'ui', description: '공정코드, 공정명, 공정유형 검색...' }
            ]
          }
        ]
      },
      {
        sectionName: '공정 테이블',
        sectionType: 'table',
        items: [
          {
            itemName: '공정코드 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'process.processCode' }
            ]
          },
          {
            itemName: '공정명 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'process.processName' }
            ]
          },
          {
            itemName: '공정유형 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '가공, 조립, 검사, 포장 등' }
            ]
          },
          {
            itemName: '작업시간 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '표준 작업 시간 (분)' }
            ]
          },
          {
            itemName: '상태 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '사용/미사용 뱃지' }
            ]
          }
        ]
      }
    ],
    stateManagement: [
      { stateName: 'searchTerm', type: 'string', initialValue: "''", description: '검색어' },
      { stateName: 'processes', type: 'array', initialValue: '[]', description: '공정 목록' },
      { stateName: 'selectedIds', type: 'array', initialValue: '[]', description: '선택된 공정 ID' }
    ]
  },

  // ========================================
  // 영업관리 > 견적 목록
  // ========================================
  'quote-list': {
    screenKey: 'quote-list',
    screenName: '견적 목록',
    menuPath: '영업관리 > 견적',
    description: '견적서를 등록, 조회, 수정하는 화면입니다. 견적 번호, 발주처, 담당자, 금액 등을 관리합니다.',
    sections: [
      {
        sectionName: '헤더 영역',
        sectionType: 'header',
        items: [
          {
            itemName: '페이지 타이틀',
            itemType: 'label',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '"견적 목록" 텍스트와 FileText 아이콘' }
            ]
          },
          {
            itemName: '견적 등록 버튼',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'Primary 버튼, Plus 아이콘 + "견적 등록"' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: "navigate('quote-register') 호출" },
              { propertyName: '결과', propertyType: 'function', description: '견적 등록 화면으로 이동' }
            ]
          }
        ]
      },
      {
        sectionName: '리포트 카드 영역',
        sectionType: 'card',
        items: [
          {
            itemName: '이번 달 견적 금액 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '금액 포맷 (원) 표시' },
              { propertyName: '데이터 소스', propertyType: 'data', description: '당월 견적서 금액 합계' }
            ]
          },
          {
            itemName: '진행중 견적 금액 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '상태가 진행중인 견적 금액' },
              { propertyName: '데이터 소스', propertyType: 'data', description: "status === '진행중' 필터링 후 합계" }
            ]
          },
          {
            itemName: '이번 주 신규 견적 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: '데이터 소스', propertyType: 'data', description: '금주 등록된 견적 건수' }
            ]
          },
          {
            itemName: '이번 달 수주 전환율 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '퍼센트 표시 (%)' },
              { propertyName: '데이터 소스', propertyType: 'data', description: '수주전환 견적 / 전체 견적 * 100' }
            ]
          }
        ]
      },
      {
        sectionName: '검색 영역',
        sectionType: 'search',
        items: [
          {
            itemName: '검색 입력 필드',
            itemType: 'input',
            properties: [
              { propertyName: 'placeholder', propertyType: 'ui', description: '견적번호, 발주처, 담당자, 제품명, 현장코드, 현장명 검색...' },
              { propertyName: '필터링 로직', propertyType: 'function', description: 'filteredQuotes = quotes.filter()로 다중 필드 검색' }
            ]
          }
        ]
      },
      {
        sectionName: '테이블 영역',
        sectionType: 'table',
        items: [
          {
            itemName: '전체선택 체크박스',
            itemType: 'checkbox',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'handleSelectAll() 호출' },
              { propertyName: '상태 변화', propertyType: 'state', description: 'selectedIds 전체 추가/비우기' }
            ]
          },
          {
            itemName: '견적번호 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '클릭 시 상세 화면 이동, 링크 스타일' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: "navigate('quote-detail', quote.id)" },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'quote.quoteNo (예: KD-PR-251216-01)' }
            ]
          },
          {
            itemName: '견적일자 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'YYYY-MM-DD 포맷' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'quote.quoteDate' }
            ]
          },
          {
            itemName: '발주처 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'quote.customer' }
            ]
          },
          {
            itemName: '현장명 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'quote.siteName' }
            ]
          },
          {
            itemName: '담당자 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'quote.manager' }
            ]
          },
          {
            itemName: '견적금액 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '천단위 콤마 포맷, 우측 정렬' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'quote.totalAmount.toLocaleString()' }
            ]
          },
          {
            itemName: '상태 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '최초작성(회색), 진행중(파란색), 수주전환(녹색), 보류(주황색), 취소(빨간색) 뱃지' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'quote.status' }
            ]
          },
          {
            itemName: '작업 컬럼 (수정 버튼)',
            itemType: 'button',
            properties: [
              { propertyName: '표시 조건', propertyType: 'state', description: 'isSelected(quote.id)' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: "navigate('quote-edit', quote.id)" }
            ]
          },
          {
            itemName: '작업 컬럼 (삭제 버튼)',
            itemType: 'button',
            properties: [
              { propertyName: '표시 조건', propertyType: 'state', description: 'isSelected(quote.id)' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'handleDelete(quote.id)' },
              { propertyName: '확인 절차', propertyType: 'validation', description: 'window.confirm() 삭제 확인' }
            ]
          }
        ]
      }
    ],
    stateManagement: [
      { stateName: 'quotes', type: 'array', initialValue: '[샘플 견적 데이터]', description: '견적 목록' },
      { stateName: 'searchTerm', type: 'string', initialValue: "''", description: '검색어' },
      { stateName: 'selectedIds', type: 'array', initialValue: '[]', description: '선택된 견적 ID' }
    ],
    dataFlow: [
      { trigger: '페이지 로드', action: 'fetchQuotes()', result: '견적 목록 API 호출 (또는 샘플 데이터 로드)' },
      { trigger: '검색어 입력', action: 'setSearchTerm()', result: 'filteredQuotes 재계산 → 테이블 갱신' },
      { trigger: '행 클릭', action: "navigate('quote-detail')", result: '견적 상세 화면 이동' },
      { trigger: '삭제 버튼', action: 'handleDelete(id)', result: 'quotes에서 해당 견적 제거' }
    ]
  },

  // ========================================
  // 영업관리 > 견적 등록
  // ========================================
  'quote-register': {
    screenKey: 'quote-register',
    screenName: '견적 등록',
    menuPath: '영업관리 > 견적 > 등록',
    description: '새로운 견적서를 등록하는 화면입니다. 기본정보, 견적품목, 부자재 정보를 입력합니다.',
    sections: [
      {
        sectionName: '헤더 영역',
        sectionType: 'header',
        items: [
          {
            itemName: '취소 버튼',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'Outline 스타일, X 아이콘' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: "navigate('quote-list')" },
              { propertyName: '결과', propertyType: 'function', description: '견적 목록으로 이동 (입력 데이터 유지 안함)' }
            ]
          },
          {
            itemName: '저장 버튼',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'Primary 버튼, Save 아이콘' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'handleSave() 호출' },
              { propertyName: '유효성 검사', propertyType: 'validation', description: '필수 필드 검증 (발주처, 현장, 품목)' },
              { propertyName: '결과', propertyType: 'function', description: '견적 저장 후 상세 화면 이동' }
            ]
          }
        ]
      },
      {
        sectionName: '기본정보 섹션',
        sectionType: 'form',
        items: [
          {
            itemName: '견적번호 입력',
            itemType: 'input',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '자동채번, 읽기전용' },
              { propertyName: '데이터 소스', propertyType: 'data', description: 'generateNumber("QT") 호출로 자동 생성' }
            ]
          },
          {
            itemName: '견적일자 입력',
            itemType: 'input',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'type="date"' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'formData.quoteDate' },
              { propertyName: '기본값', propertyType: 'data', description: '오늘 날짜' }
            ]
          },
          {
            itemName: '발주처 선택',
            itemType: 'select',
            properties: [
              { propertyName: '필수 여부', propertyType: 'validation', description: '필수 입력' },
              { propertyName: '옵션 소스', propertyType: 'data', description: '거래처 목록에서 로드' },
              { propertyName: '연동 효과', propertyType: 'function', description: '발주처 선택 시 관련 현장 목록 필터링' }
            ]
          },
          {
            itemName: '현장 선택',
            itemType: 'select',
            properties: [
              { propertyName: '필수 여부', propertyType: 'validation', description: '필수 입력' },
              { propertyName: '옵션 소스', propertyType: 'data', description: '발주처에 연결된 현장 목록' },
              { propertyName: '연동 효과', propertyType: 'function', description: '현장 선택 시 현장코드 자동 입력' }
            ]
          },
          {
            itemName: '담당자 입력',
            itemType: 'input',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'formData.manager' }
            ]
          },
          {
            itemName: '납기일 입력',
            itemType: 'input',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'type="date"' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'formData.deliveryDate' }
            ]
          }
        ]
      },
      {
        sectionName: '견적품목 섹션',
        sectionType: 'table',
        items: [
          {
            itemName: '품목 추가 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'addQuoteItem() 호출' },
              { propertyName: '결과', propertyType: 'function', description: '품목 목록에 새 행 추가' }
            ]
          },
          {
            itemName: '제품유형 선택',
            itemType: 'select',
            properties: [
              { propertyName: '옵션', propertyType: 'data', description: '방화셔터, 방화문, 방연셔터, 자동문 등' },
              { propertyName: '연동 효과', propertyType: 'function', description: '제품유형에 따라 규격 입력 필드 구성 변경' }
            ]
          },
          {
            itemName: '폭/높이 입력',
            itemType: 'input',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'type="number", mm 단위' },
              { propertyName: '연동 효과', propertyType: 'function', description: '규격 변경 시 단가 자동 계산' }
            ]
          },
          {
            itemName: '수량 입력',
            itemType: 'input',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'type="number", min=1' },
              { propertyName: '연동 효과', propertyType: 'function', description: '금액 = 단가 × 수량 자동 계산' }
            ]
          },
          {
            itemName: '단가/금액 표시',
            itemType: 'label',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '천단위 콤마, 읽기전용' },
              { propertyName: '계산 로직', propertyType: 'function', description: '견적수식 적용하여 자동 계산' }
            ]
          },
          {
            itemName: '행 삭제 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'removeQuoteItem(index)' }
            ]
          }
        ]
      },
      {
        sectionName: '금액 합계 섹션',
        sectionType: 'form',
        items: [
          {
            itemName: '공급가액',
            itemType: 'label',
            properties: [
              { propertyName: '계산 로직', propertyType: 'function', description: 'sum(items.amount)' }
            ]
          },
          {
            itemName: '부가세',
            itemType: 'label',
            properties: [
              { propertyName: '계산 로직', propertyType: 'function', description: '공급가액 × 0.1' }
            ]
          },
          {
            itemName: '견적총액',
            itemType: 'label',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '굵은 글씨, 강조색' },
              { propertyName: '계산 로직', propertyType: 'function', description: '공급가액 + 부가세' }
            ]
          }
        ]
      }
    ],
    stateManagement: [
      { stateName: 'formData', type: 'object', initialValue: '{ quoteNo, quoteDate, customer, site, manager, ... }', description: '폼 입력 데이터' },
      { stateName: 'quoteItems', type: 'array', initialValue: '[]', description: '견적 품목 목록' },
      { stateName: 'totals', type: 'object', initialValue: '{ supplyAmount, vat, totalAmount }', description: '합계 정보' }
    ]
  },

  // ========================================
  // 영업관리 > 견적 상세
  // ========================================
  'quote-detail': {
    screenKey: 'quote-detail',
    screenName: '견적 상세',
    menuPath: '영업관리 > 견적 > 상세',
    description: '견적서 상세 정보를 조회하고, 문서 출력 및 상태 변경을 수행합니다.',
    sections: [
      {
        sectionName: '헤더 영역',
        sectionType: 'header',
        items: [
          {
            itemName: '견적서 출력 버튼',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'Printer 아이콘 + "견적서"' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'openQuoteSheet() 모달 표시' },
              { propertyName: '결과', propertyType: 'function', description: '견적서 미리보기 모달 열림' }
            ]
          },
          {
            itemName: '산출내역서 출력 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'openCalculationSheet() 모달 표시' }
            ]
          },
          {
            itemName: '발주서 출력 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'openPurchaseOrder() 모달 표시' }
            ]
          },
          {
            itemName: '목록 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: "navigate('quote-list')" }
            ]
          },
          {
            itemName: '수정 버튼',
            itemType: 'button',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'Primary 버튼' },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: "navigate('quote-edit', quoteId)" }
            ]
          },
          {
            itemName: '최종확정 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '표시 조건', propertyType: 'state', description: "status !== '최종확정'" },
              { propertyName: '클릭 동작', propertyType: 'interaction', description: 'handleFinalize()' },
              { propertyName: '확인 절차', propertyType: 'validation', description: '확정 확인 모달 표시' },
              { propertyName: '상태 변화', propertyType: 'state', description: "status = '최종확정', 수정 불가 상태" }
            ]
          }
        ]
      },
      {
        sectionName: '기본정보 섹션',
        sectionType: 'form',
        items: [
          {
            itemName: '견적번호',
            itemType: 'label',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '모노스페이스 폰트' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'quote.quoteNo' }
            ]
          },
          {
            itemName: '상태 뱃지',
            itemType: 'label',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '상태별 색상 뱃지' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'quote.status' }
            ]
          },
          {
            itemName: '발주처/현장/담당자',
            itemType: 'label',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'quote.customer, quote.site, quote.manager' }
            ]
          }
        ]
      },
      {
        sectionName: '견적품목 섹션',
        sectionType: 'table',
        items: [
          {
            itemName: '품목 테이블',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '제품유형, 규격, 수량, 단가, 금액 컬럼' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'quote.items[]' }
            ]
          }
        ]
      },
      {
        sectionName: '금액 합계 섹션',
        sectionType: 'form',
        items: [
          {
            itemName: '공급가액/부가세/총액',
            itemType: 'label',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '천단위 콤마 포맷' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'quote.supplyAmount, quote.vat, quote.totalAmount' }
            ]
          }
        ]
      }
    ],
    stateManagement: [
      { stateName: 'quote', type: 'object', initialValue: 'null', description: '견적 상세 데이터' },
      { stateName: 'showQuoteSheet', type: 'boolean', initialValue: 'false', description: '견적서 모달' },
      { stateName: 'showCalculationSheet', type: 'boolean', initialValue: 'false', description: '산출내역서 모달' },
      { stateName: 'showPurchaseOrder', type: 'boolean', initialValue: 'false', description: '발주서 모달' }
    ]
  },

  // ========================================
  // 영업관리 > 수주 목록
  // ========================================
  'order-list': {
    screenKey: 'order-list',
    screenName: '수주 목록',
    menuPath: '영업관리 > 수주',
    description: '수주 내역을 관리합니다. 견적에서 수주로 전환된 건을 조회하고 관리합니다.',
    sections: [
      {
        sectionName: '헤더 영역',
        sectionType: 'header',
        items: [
          {
            itemName: '수주 등록 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: "navigate('order-register')" }
            ]
          }
        ]
      },
      {
        sectionName: '리포트 카드 영역',
        sectionType: 'card',
        items: [
          {
            itemName: '이번 달 수주 금액 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: '데이터 소스', propertyType: 'data', description: '당월 수주 금액 합계' }
            ]
          },
          {
            itemName: '진행중 수주 건수 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: '데이터 소스', propertyType: 'data', description: "status === '진행중' 건수" }
            ]
          },
          {
            itemName: '이번 주 신규 수주 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: '데이터 소스', propertyType: 'data', description: '금주 등록 수주 건수' }
            ]
          },
          {
            itemName: '완료 수주 건수 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: '데이터 소스', propertyType: 'data', description: "status === '완료' 건수" }
            ]
          }
        ]
      },
      {
        sectionName: '테이블 영역',
        sectionType: 'table',
        items: [
          {
            itemName: '수주번호 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: "navigate('order-detail', orderId)" },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'order.orderNo (예: KD-TS-251216-01)' }
            ]
          },
          {
            itemName: '수주일자/납기일 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'order.orderDate, order.deliveryDate' }
            ]
          },
          {
            itemName: '거래처/현장 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'order.customer, order.siteName' }
            ]
          },
          {
            itemName: '수주금액 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '천단위 콤마' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'order.totalAmount' }
            ]
          },
          {
            itemName: '상태 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '접수(회색), 진행중(파란색), 생산중(주황색), 출하완료(녹색) 뱃지' }
            ]
          }
        ]
      }
    ],
    stateManagement: [
      { stateName: 'orders', type: 'array', initialValue: '[]', description: '수주 목록' },
      { stateName: 'searchTerm', type: 'string', initialValue: "''", description: '검색어' },
      { stateName: 'selectedIds', type: 'array', initialValue: '[]', description: '선택된 수주 ID' }
    ]
  },

  // ========================================
  // 생산관리 > 작업지시 목록
  // ========================================
  'work-order-list': {
    screenKey: 'work-order-list',
    screenName: '작업지시 목록',
    menuPath: '생산관리 > 작업지시',
    description: '작업지시서를 생성하고 관리합니다. 수주 기반으로 생산 작업을 지시합니다.',
    sections: [
      {
        sectionName: '헤더 영역',
        sectionType: 'header',
        items: [
          {
            itemName: '작업지시 등록 버튼',
            itemType: 'button',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: "navigate('work-order-register')" }
            ]
          }
        ]
      },
      {
        sectionName: '리포트 카드 영역',
        sectionType: 'card',
        items: [
          {
            itemName: '오늘 작업 건수 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: '데이터 소스', propertyType: 'data', description: '오늘 날짜 작업지시 건수' }
            ]
          },
          {
            itemName: '진행중 건수 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: '데이터 소스', propertyType: 'data', description: "status === '진행중' 건수" }
            ]
          },
          {
            itemName: '완료 건수 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: '데이터 소스', propertyType: 'data', description: "status === '완료' 건수" }
            ]
          },
          {
            itemName: '지연 건수 카드',
            itemType: 'stat-card',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '빨간색 강조 (지연 시)' },
              { propertyName: '데이터 소스', propertyType: 'data', description: '납기일 초과 진행중 건수' }
            ]
          }
        ]
      },
      {
        sectionName: '테이블 영역',
        sectionType: 'table',
        items: [
          {
            itemName: '작업지시번호 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '클릭 동작', propertyType: 'interaction', description: "navigate('work-order-detail', woId)" },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'wo.workOrderNo (예: WO-SCR-251216-01)' }
            ]
          },
          {
            itemName: '공정 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '스크린인쇄, 절곡, 슬랫조립 등' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'wo.processName' }
            ]
          },
          {
            itemName: '현장명 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'wo.siteName' }
            ]
          },
          {
            itemName: '제품규격 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: 'W × H 형식' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'wo.width × wo.height' }
            ]
          },
          {
            itemName: '작업자 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'wo.worker' }
            ]
          },
          {
            itemName: '진행률 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '프로그레스 바 또는 퍼센트' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'wo.progress' }
            ]
          },
          {
            itemName: '상태 컬럼',
            itemType: 'table-column',
            properties: [
              { propertyName: 'UI 표시', propertyType: 'ui', description: '대기(회색), 진행중(파란색), 완료(녹색), 지연(빨간색) 뱃지' },
              { propertyName: '데이터 바인딩', propertyType: 'data', description: 'wo.status' }
            ]
          }
        ]
      }
    ],
    stateManagement: [
      { stateName: 'workOrders', type: 'array', initialValue: '[]', description: '작업지시 목록' },
      { stateName: 'searchTerm', type: 'string', initialValue: "''", description: '검색어' },
      { stateName: 'selectedIds', type: 'array', initialValue: '[]', description: '선택된 작업지시 ID' },
      { stateName: 'filterProcess', type: 'string', initialValue: "'all'", description: '공정 필터' }
    ],
    dataFlow: [
      { trigger: '페이지 로드', action: 'fetchWorkOrders()', result: '작업지시 목록 로드' },
      { trigger: '공정 필터 변경', action: 'setFilterProcess()', result: '해당 공정 작업지시만 필터링' },
      { trigger: '상태 변경', action: 'updateStatus(woId, newStatus)', result: '작업지시 상태 업데이트' }
    ]
  }
};

/**
 * 화면 키로 기능정의서 데이터 조회
 * @param {string} screenKey - 화면 식별자
 * @returns {object|null} 기능정의서 데이터
 */
export const getScreenFeatureDocument = (screenKey) => {
  return screenFeatureDocuments[screenKey] || null;
};

/**
 * 모든 화면의 기능정의서 목록 조회
 * @returns {array} 기능정의서 목록
 */
export const getAllFeatureDocuments = () => {
  return Object.values(screenFeatureDocuments);
};

/**
 * 메뉴 경로로 기능정의서 검색
 * @param {string} menuPath - 메뉴 경로 (예: '기준정보 > 채번관리')
 * @returns {object|null} 기능정의서 데이터
 */
export const getFeatureDocumentByMenuPath = (menuPath) => {
  return Object.values(screenFeatureDocuments).find(doc => doc.menuPath === menuPath) || null;
};

export default screenFeatureDocuments;
