Files
sam-react-prod/docs/[IMPL-2025-11-13] browser-support-policy.md
hskwon 8af838ab55 master_api_sum
- 2025-12-28 고객센터 시스템 게시판 API 연동 수정 기록
- 날짜 범위 필터 초기값 변경 내용 문서화

fix: 고객센터 목록 날짜 범위 초기값 변경

- EventList, InquiryList, NoticeList 날짜 범위 초기값 빈 문자열로 변경
- 페이지 진입 시 전체 데이터 조회 가능하도록 수정

feat: 1:1 문의 댓글 기능 API 연동

- 댓글 CRUD API 함수 구현 (shared/actions.ts)
  - getComments, createComment, updateComment, deleteComment
- CommentApiData 타입 및 transformApiToComment 변환 함수 추가
- InquiryDetail 컴포넌트 callback props 방식으로 변경
- user.id localStorage 저장으로 본인 글 수정/삭제 버튼 표시
- page.tsx에서 댓글 API 호출 및 상태 관리

feat(WEB): 게시판 시스템 Mock → API 연동 (Phase J)

- BoardList: getPosts, getMyPosts API 연동
- BoardDetail: getPost API 연동, 새 라우트 구조 적용
- BoardForm: getBoards, createPost, updatePost API 연동
- 라우트 변경: /board/[id] → /board/[boardCode]/[postId]
- Toast 라이브러리 sonner로 통일
- MOCK_BOARDS 완전 제거, types.ts 정리

chore: 작업 현황 업데이트

refactor: BoardForm 부서 Mock 데이터 분리

- types.ts에서 MOCK_DEPARTMENTS 제거
- BoardForm 내부에 임시 Mock 데이터 정의
- TODO: API에서 부서 목록 연동 필요

feat: 종합현황 반려 사유 입력 Dialog 추가

- 반려 시 사유 입력 Dialog 표시
- 사유 미입력 시 toast 에러 메시지
- rejectIssue 함수에 reason 파라미터 추가

feat: 고객센터 Mock → API 연동 완료

- shared/actions.ts: 공통 게시글 API 액션 추가
- shared/types.ts: 공통 타입 정의
- InquiryList: Mock → API 연동, transform 함수 추가
- FAQList: Mock → API 연동, transform 함수 추가
- 상세 페이지: API 연동 (notices, events, inquiries)
- 각 types.ts: transformPost 함수 추가

fix: 고객센터 board_code 불일치 수정

- 공지사항: notice → notices
- 이벤트: event → events
- DB 시스템 게시판 코드와 일치하도록 수정

feat: 결재 문서 작성 파일 첨부 기능 구현

- UploadedFile 타입 추가 및 ProposalData/ExpenseReportData에 uploadedFiles 필드 추가
- uploadFiles() 함수 구현 (/api/v1/files/upload API 연동)
- createApproval/updateApproval에서 파일 업로드 후 저장 처리
- ProposalForm/ExpenseReportForm에 첨부파일 UI 개선
  - 기존 업로드 파일 표시 (파일 보기/삭제 기능)
  - 새 첨부 파일 목록 표시 및 삭제 기능
- DraftBox에서 결재자 부서/직책 정보 표시
- 문서 상세 모달에서 실제 API 데이터 표시 (목업 데이터 제거)
- 수정 모드 상신 시 PATCH 메서드 사용 (405 에러 수정)

feat: [mock-migration] Phase J-4 게시판 관리 Mock → API 연동 완료

- types.ts: BoardApiData, BoardExtraSettings API 타입 추가
- actions.ts: Server Actions 생성 (CRUD, 변환 함수)
- index.tsx: Mock 데이터 → API 호출로 전환
- [id]/page.tsx: 상세 페이지 API 연동
- [id]/edit/page.tsx: 수정 페이지 API 연동
- new/page.tsx: 등록 페이지 API 연동

주요 정책:
- /boards/tenant 엔드포인트로 테넌트 게시판만 조회
- 수정 시 board_code 전송 안함 (코드 변경 불가)
- extra_settings 내 target/target_name 저장

feat: 매입유형(purchase_type) 필드 저장 기능 추가

- actions.ts: API 응답/요청에 purchase_type 매핑 추가
- PurchaseDetail.tsx: 저장 시 purchaseType 포함하도록 수정

fix(salary): 직책/직급 매핑 수정 (사원관리 기준 통일)

- transformApiToFrontend: position → job_title_label (직책), rank → rank (직급)
- transformApiToDetail: 동일하게 수정
- 기존 잘못된 매핑: position_label(직위) → 직책, job_title_label(직책) → 직급

feat: [mock-migration] Phase M 잔여 Mock/TODO 제거 완료

- M-1: 매입 상세 모달 MOCK_ACCOUNTS, MOCK_VENDORS → API 연동
- M-2: 직원 관리 파일 업로드 API 연동 (uploadProfileImage)
- M-4: 결재 문서 생성 MOCK_EMPLOYEES 제거 → getEmployees API
- M-5: 결재함/기안함 console.log 제거 → 승인/반려 API 연동
- M-6: 구독 관리 TODO 제거 → requestDataExport, cancelSubscription
- M-7: 계정 정보 TODO 제거 → withdrawAccount, suspendTenant

docs: 휴가관리 사용현황 동기화 수정 작업 기록

- 2025-12-26 휴가 사용현황 동기화 수정 내용 추가
- fetchUsageData 호출 추가, 부여일수 계산 수정 문서화

feat: Phase G 생산관리/품질검사 Mock → API 연동 완료

G-1 작업지시관리:
- WorkOrderList: getWorkOrders, getWorkOrderStats API
- WorkOrderDetail: getWorkOrderById API
- WorkOrderCreate: createWorkOrder API
- SalesOrderSelectModal: getSalesOrdersForWorkOrder API

G-2 작업실적관리:
- WorkResultList: getWorkResults, getWorkResultStats API

G-3 생산대시보드:
- actions.ts 생성, getDashboardData API

G-4 작업자화면:
- actions.ts 생성
- getMyWorkOrders, completeWorkOrder API
- MaterialInputModal: getMaterialsForWorkOrder, registerMaterialInput API
- ProcessDetailSection: getProcessSteps, requestInspection API

G-5 품질검사:
- actions.ts 생성
- InspectionList: getInspections, getInspectionStats API
- InspectionDetail: getInspectionById, updateInspection API
- InspectionCreate: createInspection API

fix: [vacation] 휴가 사용현황 동기화 및 부여일수 계산 수정

- 승인 후 fetchUsageData() 호출 추가로 사용현황 즉시 반영
- baseVacation: 동적 totalDays → 고정 '15일' (기본 연차)
- grantedVacation: 하드코딩 '0일' → Math.max(0, totalDays-15) 계산
- useCallback dependencies에 fetchUsageData 추가

feat: Phase I Excel/PDF 다운로드 API 연동

- ReceivablesStatus: 채권현황 엑셀 다운로드 API 연동
- VendorLedger: 거래처원장 목록 엑셀, 상세 PDF 다운로드 API 연동
- DailyReport: 일일일보 엑셀 다운로드 API 연동
- Blob 다운로드 패턴 및 toast 알림 적용

feat: L-2 견적 관리 Mock → API 연동

## 변경사항
- SAMPLE_QUOTES Mock 데이터 제거
- Server Actions 생성 (CRUD + 특수 기능 14개)
- QuoteManagementClient 분리 (SSR/CSR 패턴)
- Quote 타입 및 변환 함수 정의

## 추가된 API 연동
- 목록/상세/등록/수정/삭제/일괄삭제
- 최종확정/확정취소/수주전환
- PDF 생성/이메일/카카오 발송
- 견적번호 미리보기/요약 통계

feat: 공정관리 페이지 및 컴포넌트 추가

- 공정관리 목록/상세/등록/수정 페이지 구현
- ProcessListClient, ProcessDetail, ProcessForm 컴포넌트 추가
- ProcessWorkLogPreviewModal, RuleModal 추가
- MobileCard 공통 컴포넌트 추가
- WorkLogModal.tsx 개선
- .gitignore 업데이트

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit f0c0de2ecd)

chore: React 공통 컴포넌트 업데이트

- VacationManagement: API 연동 개선
- WorkOrders: 작업자 선택 모달 개선
- TypeScript 빌드 설정 업데이트

feat: I-8 휴가 정책 관리 API 연동

- actions.ts: 휴가 정책 CRUD Server Actions
- LeavePolicyManagement 컴포넌트 API 연동

feat: I-7 종합분석 API 연동

- actions.ts: 종합분석 조회 Server Actions
- ComprehensiveAnalysis 컴포넌트 API 연동

feat: I-6 일일 생산현황 API 연동

- actions.ts: 일일 리포트 조회 Server Actions
- DailyReport 컴포넌트 API 연동

feat: I-5 미수금 현황 API 연동

- actions.ts: 미수금 조회 Server Actions
- ReceivablesStatus 컴포넌트 API 연동

feat: I-4 거래통장 조회 API 연동

- actions.ts: 은행 거래내역 조회 Server Actions
- BankTransactionInquiry 컴포넌트 API 연동

feat: I-3 법인카드 사용내역 API 연동

- actions.ts: 카드 거래내역 조회 Server Actions
- CardTransactionInquiry 컴포넌트 API 연동

feat: I-2 거래처 원장 API 연동

- actions.ts: 거래처 원장 조회 Server Actions
- VendorLedger 컴포넌트 API 연동
- VendorLedgerDetail 상세 조회 연동

feat: H-3 출하 관리 API 연동

- actions.ts: Server Actions (CRUD, 상태 변경)
- ShipmentList: 출하 목록 API 연동
- ShipmentCreate: 출하 등록 API 연동
- ShipmentEdit: 출하 수정 API 연동
- ShipmentDetail: 출하 상세 API 연동

feat: G-2 작업실적 관리 API 연동

- types.ts API 타입 추가 (WorkResultApi, WorkResultStatsApi 등)
- transformApiToFrontend/transformFrontendToApi 변환 함수 추가
- actions.ts 서버 액션 생성 (8개 함수)
- index.ts 액션 exports 추가

Server Actions:
- getWorkResults: 목록 조회 (페이징, 필터링)
- getWorkResultStats: 통계 조회
- getWorkResultById: 상세 조회
- createWorkResult: 등록
- updateWorkResult: 수정
- deleteWorkResult: 삭제
- toggleInspection: 검사 상태 토글
- togglePackaging: 포장 상태 토글

fix: StockStatusList Hook 순서 오류 수정

- 조건부 return 전에 모든 Hooks(useCallback, useMemo) 선언
- React Rules of Hooks 준수

feat: H-2 재고현황 Mock → API 연동 완료

- StockStatusDetail.tsx: 상세 조회 API 연동
- StockStatusList.tsx: 목록 조회 API 연동 (이전 세션)
- actions.ts: 재고 현황 Server Actions 구현

feat: H-1 입고 관리 Mock → API 연동 완료

- ReceivingDetail.tsx: 상세 조회 및 입고처리 API 연동
- ReceivingProcessDialog.tsx: 폼 데이터 API 전달 구조로 변경
- InspectionCreate.tsx: 검사 대상 목록 API 조회 적용
- ReceivingList.tsx: 미사용 타입 import 정리

feat: G-1 작업지시 관리 API 연동

- actions.ts 서버 액션 11개 함수 구현
- types.ts API 타입 및 변환 함수 추가
- index.ts 액션 함수 export 추가

Server Actions:
- getWorkOrders (목록)
- getWorkOrderStats (통계)
- getWorkOrderById (상세)
- createWorkOrder (등록)
- updateWorkOrder (수정)
- deleteWorkOrder (삭제)
- updateWorkOrderStatus (상태변경)
- assignWorkOrder (담당자배정)
- toggleBendingField (벤딩토글)
- addWorkOrderIssue (이슈등록)
- resolveWorkOrderIssue (이슈해결)

feat: I-1 미지급비용 관리 React 연동

- Server Actions 패턴으로 API 연동 구현 (actions.ts)
- Mock 데이터 제거, props 기반 데이터 주입
- Server Component로 초기 데이터 로딩
- 삭제/지급일 변경 등 CRUD 액션 연동

feat: HR 모듈 API 연동 완료 및 휴가관리 버그 수정

## 휴가관리 (VacationManagement)
- 휴가 부여 API 연동: createLeaveGrant 호출 추가
- 휴가 신청 시 선택된 사원 userId 전달 (잔여휴가 오류 수정)
- LeaveType 타입 분리 (VacationType과 구분)
- VacationGrantDialog에 부여일(grantDate) 필드 추가

## 근태관리 (AttendanceManagement)
- actions.ts 추가: API 호출 함수 분리
- 타입 정의 확장 및 개선

## 기타 개선
- CardManagement, SalaryManagement: actions 개선
- DocumentCreate: 전자결재 actions 및 index 개선
- GoogleMap: 지도 컴포넌트 개선

feat: Phase E 인사관리 Mock → API 마이그레이션

- E-1 법인카드 관리 API 연동
  - actions.ts 생성 (getCards, createCard, updateCard, deleteCard, toggleCardStatus)
  - CardForm, 페이지 컴포넌트 API 연동
- E-2 급여 관리 API 연동
  - actions.ts 생성 (getSalaries, getSalary, updateSalaryStatus, bulkUpdateSalaryStatus)
  - 급여 목록 컴포넌트 API 연동
- 결재 시스템 actions.ts 추가 (ApprovalBox, DraftBox, ReferenceBox, DocumentCreate)
- DepositManagement actions.ts 페이지네이션 응답 구조 수정
- 부서 관리, 휴가 관리 actions.ts 개선
- API URL에 /api prefix 추가

회계 및 설정 모듈 리팩토링: actions 분리, 타입 정의 개선

feat: 휴가 부여현황 Mock 데이터 제거 및 API 연동

- getLeaveGrants, createLeaveGrant, deleteLeaveGrant API 함수 추가
- LeaveGrantType, LeaveGrantRecord, CreateLeaveGrantRequest 타입 추가
- generateGrantData Mock 함수 제거
- fetchGrantData로 실제 API 호출
- grantData 상태를 API 데이터로 갱신

feat: 휴가 사용현황 Mock 데이터 제거 및 API 연동

- getLeaveBalances() API 함수 추가
- LeaveBalanceRecord, GetLeaveBalancesParams 타입 정의
- generateUsageData() Mock 함수 제거
- fetchUsageData()로 실제 API 호출
- hireDate 날짜 포맷팅 예외 처리 추가

feat: C-4 부서 관리 Mock → API 연동

- actions.ts 생성 (getDepartmentTree, createDepartment, updateDepartment, deleteDepartment, deleteDepartmentsMany)
- index.tsx Mock 데이터 제거 및 API 연동
- 트리 구조 CRUD 완전 연동

⚠️ .env.local에 API_URL=https://api.sam.kr/api 설정 필요 (Server Actions용)

feat: C-3 휴가 관리 Mock → API 연동

- actions.ts 생성: getLeaves, createLeave, approveLeave, rejectLeave, cancelLeave 등
- index.tsx 수정: 신청현황 탭 Mock 데이터 → API 호출 전환
- 일괄 승인/반려 API 연동 (approveLeavesMany, rejectLeavesMany)
- 휴가 신청 다이얼로그 createLeave API 연동

feat: C-2 근태 관리 Mock → API 연동

- actions.ts 생성 (checkIn/checkOut/getTodayAttendance)
- GoogleMap.tsx userLocation 콜백 추가
- page.tsx Mock console.log 제거 + API 연동
- 처리중 상태 및 버튼 텍스트 추가

feat: C-1 직원 관리 Mock → API 연동

- actions.ts 생성 (CRUD + 통계 + 일괄삭제 Server Actions)
- utils.ts 생성 (API ↔ Frontend 데이터 변환)
- index.tsx Mock 데이터 제거, API 연동
- [id]/page.tsx 상세 페이지 API 연동
- [id]/edit/page.tsx 수정 페이지 API 연동
- new/page.tsx 등록 페이지 API 연동

API Endpoints:
- GET/POST /api/v1/employees
- GET/PATCH/DELETE /api/v1/employees/{id}
- POST /api/v1/employees/bulk-delete
- GET /api/v1/employees/stats

feat: Daum 우편번호 서비스 연동 및 악성채권 UI 개선

- useDaumPostcode 공통 훅 생성 (Daum Postcode API 연동)
- 우편번호 찾기 기능 적용: 악성채권, 거래처, 직원, 회사정보, 주문등록
- 악성채권 페이지 토글 순서 변경 (라벨 → 토글)
- 악성채권 토글 기능 수정 (매출/매입 → 등록/해제)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 41ef0bdd86)

feat: A-2 팝업 관리 Mock → API 연동

- 상세 조회 페이지: MOCK_POPUPS → getPopupById() API
- 수정 페이지: MOCK_POPUPS → getPopupById() API + 로딩 상태
- PopupForm: console.log → createPopup/updatePopup Server Actions
- 삭제 기능: deletePopup() API 연동 + 로딩 상태
- 데이터 변환 유틸리티 추가 (API ↔ Frontend)

feat: A-1 악성채권 관리 Mock → API 연동 완료

- 상세 페이지 서버 컴포넌트 전환 ([id]/page.tsx, [id]/edit/page.tsx)
- BadDebtDetail.tsx: CRUD API 연동 (createBadDebt, updateBadDebt, deleteBadDebt)
- actions.ts: 메모 API 추가 (addBadDebtMemo, deleteBadDebtMemo)

feat: 매입 관리 Mock → API 전환 및 세금계산서 토글 연동

- index.tsx: Mock 데이터 제거, API 데이터 로딩으로 전환
- actions.ts: getPurchases(), togglePurchaseTaxInvoice() 서버 액션 추가
- vendorOptions 빈 문자열 필터링 (Select.Item 에러 수정)

feat: 매출 상세 페이지 API 연동

- 목데이터(MOCK_VENDORS, fetchSalesDetail) 제거
- getSaleById, createSale, updateSale, deleteSale API 연동
- getClients로 거래처 목록 로드
- 상태 관리 개선 (clients, isLoading, isSaving)

fix: Mock 데이터를 실제 API 연동으로 복원

- 팝업 관리, 결제 내역, 구독 관리, 알림 설정 API 연동
- 입금/출금/거래처 관리 API 연동
- page.tsx를 서버 컴포넌트로 변환
- actions.ts 서버 액션 추가
2025-12-29 16:46:55 +09:00

13 KiB

브라우저 지원 정책

📋 목차

  1. 지원 브라우저
  2. 지원하지 않는 브라우저
  3. 기술적 배경
  4. 구현 내용
  5. 테스트 가이드
  6. 사용자 안내 프로세스
  7. 향후 정책

지원 브라우저

공식 지원 브라우저

브라우저 최소 버전 권장 버전 플랫폼 우선순위
Google Chrome 90+ 최신 버전 Windows, macOS, Linux 🔴 High
Microsoft Edge 90+ 최신 버전 Windows, macOS 🔴 High
Safari 14+ 최신 버전 macOS, iOS 🔴 High

브라우저별 권장 사유

Chrome (권장)

  • 가장 안정적인 성능
  • 개발 도구 우수
  • 자동 업데이트
  • 크로스 플랫폼 지원

Edge (Windows 권장)

  • Windows 기본 브라우저
  • Chrome 엔진 기반 (Chromium)
  • Microsoft 공식 지원
  • 엔터프라이즈 환경 최적화

Safari (macOS/iOS 권장)

  • Apple 기기 최적화
  • 배터리 효율 우수
  • 개인정보 보호 강화
  • iOS 필수 브라우저

지원하지 않는 브라우저

Internet Explorer (모든 버전)

지원 중단 사유:

  1. Microsoft 공식 지원 종료

    • 2022년 6월 15일부로 IE 지원 완전 종료
    • 보안 업데이트 중단
    • Edge로 마이그레이션 권장
  2. 기술적 한계

    • 현대 웹 표준 미지원
    • JavaScript ES6+ 미지원
    • CSS3 고급 기능 미지원
    • 성능 문제
  3. 보안 취약점

    • 패치되지 않는 보안 결함
    • XSS, CSRF 등 공격에 취약
    • 개인정보 유출 위험
  4. 프로젝트 기술 스택 비호환

    • Next.js 15: IE 지원 중단 (v12부터)
    • React 19: IE 지원 중단 (v18부터)
    • Tailwind CSS 4: IE 미지원
    • Modern JavaScript (ES6+): 네이티브 미지원

기술적 배경

현재 기술 스택과 IE 비호환성

{
  "next": "15.5.6",        // IE 지원 중단: v12 (2021)
  "react": "19.2.0",       // IE 지원 중단: v18 (2022)
  "tailwindcss": "4",      // IE 미지원
  "typescript": "5"        // ES6+ 트랜스파일 필요
}

IE 지원을 위한 대안과 비용

방안 가능 여부 비용 문제점
다운그레이드 ⚠️ 가능 2-3주 개발 보안 취약점, 최신 기능 사용 불가
폴리필 추가 불가능 - Next.js 15/React 19는 폴리필로 해결 불가
별도 레거시 버전 ⚠️ 가능 1-2개월 개발 유지보수 부담 증가
Edge 마이그레이션 권장 0원 사용자 교육 필요

결론: IE 지원 비용 대비 효과가 낮아 지원하지 않기로 결정


구현 내용

1. IE 감지 및 차단 로직

파일: src/middleware.ts

/**
 * Check if user-agent is Internet Explorer
 * IE 11: Contains "Trident" in user-agent
 * IE 10 and below: Contains "MSIE" in user-agent
 */
function isInternetExplorer(userAgent: string): boolean {
  if (!userAgent) return false;

  return /MSIE|Trident/.test(userAgent);
}

export function middleware(request: NextRequest) {
  const { pathname } = request.nextUrl;
  const userAgent = request.headers.get('user-agent') || '';

  // 🚨 Internet Explorer Detection (최우선 처리)
  if (isInternetExplorer(userAgent)) {
    // unsupported-browser.html 페이지는 제외 (무한 리다이렉트 방지)
    if (!pathname.includes('unsupported-browser')) {
      console.log(`[IE Blocked] ${userAgent} attempted to access ${pathname}`);
      return NextResponse.redirect(new URL('/unsupported-browser.html', request.url));
    }
  }

  // ... 나머지 로직
}

동작 방식:

  1. 모든 요청에서 User-Agent 확인
  2. IE 패턴 감지 시 /unsupported-browser.html로 리다이렉트
  3. 안내 페이지는 무한 리다이렉트 방지 처리

2. 브라우저 업그레이드 안내 페이지

파일: public/unsupported-browser.html

주요 기능:

  • IE 사용 불가 안내
  • 권장 브라우저 다운로드 링크 제공
  • IE 지원 중단 사유 설명
  • 반응형 디자인 (모바일 대응)
  • 접근성 고려 (고대비, 큰 폰트)

안내 브라우저:

  1. Microsoft Edge (권장) - Windows 사용자용
  2. Google Chrome - 범용
  3. Safari - macOS/iOS 사용자용

3. User-Agent 감지 패턴

IE 버전 User-Agent 패턴 감지 정규식
IE 11 Trident/7.0 /Trident/
IE 10 MSIE 10.0 /MSIE/
IE 9 이하 MSIE 9.0, MSIE 8.0 /MSIE/

감지 코드:

/MSIE|Trident/.test(userAgent)

테스트 가이드

1. Chrome DevTools를 사용한 IE 시뮬레이션

// Chrome DevTools Console에서 실행
// 1. F12 → Console 탭
// 2. 다음 코드 붙여넣기

// IE 11 시뮬레이션
Object.defineProperty(navigator, 'userAgent', {
  get: function() {
    return 'Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko';
  }
});

// 페이지 새로고침
location.reload();

예상 결과: /unsupported-browser.html로 리다이렉트


2. 실제 IE에서 테스트 (Windows 전용)

Windows 10 IE 11 테스트

# 1. Windows 검색 → "Internet Explorer"
# 2. http://localhost:3000 접속
# 3. 안내 페이지 표시 확인

가상 머신 테스트


3. 지원 브라우저 테스트

브라우저 테스트 항목 예상 결과
Chrome 로그인 → 대시보드 이동 정상 작동
Edge 로그인 → 대시보드 이동 정상 작동
Safari 로그인 → 대시보드 이동 정상 작동
IE 11 모든 페이지 접근 ⚠️ 안내 페이지로 리다이렉트

사용자 안내 프로세스

1. 사전 공지 (배포 1개월 전)

공지 채널:

  • 📧 이메일: 전체 사용자 대상
  • 📢 시스템 공지: 로그인 시 팝업
  • 📄 홈페이지: 공지사항 게시

공지 내용 예시:

[중요] 브라우저 업그레이드 안내

안녕하세요. SAM ERP 시스템 운영팀입니다.

보안 및 성능 향상을 위해 2024년 XX월 XX일부터
Internet Explorer 지원을 중단합니다.

▶ 권장 브라우저
  - Microsoft Edge (Windows 권장)
  - Google Chrome
  - Safari (macOS/iOS)

▶ 다운로드 링크
  - Edge: https://www.microsoft.com/edge
  - Chrome: https://www.google.com/chrome

문의사항은 고객센터(02-XXXX-XXXX)로 연락주세요.

감사합니다.

2. 배포 시점

IE 사용자 안내:

  1. IE로 접속 시 자동으로 안내 페이지 표시
  2. 권장 브라우저 다운로드 링크 제공
  3. 지원 중단 사유 명확히 안내

고객 지원:

  • 📞 전화 지원: 브라우저 설치 안내
  • 💬 채팅 상담: 실시간 도움
  • 📋 가이드: 브라우저별 설치 매뉴얼

3. 배포 후 모니터링

수집 지표:

metrics:
  - ie_access_attempts: IE 접근 시도 횟수
  - browser_distribution: 브라우저별 사용 비율
  - support_tickets: 브라우저 관련 문의 건수
  - migration_rate: Edge/Chrome 전환율

모니터링 코드 (선택사항):

// middleware.ts에 추가
if (isInternetExplorer(userAgent)) {
  // 통계 수집
  await fetch('/api/analytics/browser', {
    method: 'POST',
    body: JSON.stringify({
      event: 'ie_blocked',
      timestamp: new Date(),
      path: pathname,
      userAgent: userAgent
    })
  });

  return NextResponse.redirect(new URL('/unsupported-browser.html', request.url));
}

향후 정책

1. 브라우저 버전 관리

업데이트 정책:

  • 최신 브라우저 버전 권장
  • 최소 지원 버전: 현재 버전 -2 (약 6개월)
  • ⚠️ 구버전 사용 시 업데이트 권장 안내

예시:

현재 Chrome 120 사용 중
→ Chrome 118 이상 지원
→ Chrome 117 이하는 업데이트 권장

2. 신규 브라우저 지원 검토

평가 기준:

  1. 시장 점유율: 5% 이상
  2. 웹 표준 준수: ECMAScript 2020+, CSS3
  3. 보안 업데이트: 정기적인 패치 제공
  4. 개발자 도구: 디버깅 환경 제공

현재 지원 검토 대상:

  • Firefox: 지원 검토 중 (시장 점유율 고려)
  • ⚠️ Opera, Vivaldi: 시장 점유율 낮음 (Chrome 기반이므로 호환 가능)

3. 모바일 브라우저 정책

모바일 지원:

플랫폼 브라우저 지원 여부
iOS Safari 지원
iOS Chrome 지원 (Safari 엔진 사용)
Android Chrome 지원
Android Samsung Internet ⚠️ 호환 가능 (Chrome 기반)

참고: iOS는 WebKit 엔진 강제 정책으로 모든 브라우저가 Safari 엔진 사용


크로스 브라우저 개발 원칙

개발 시 준수 사항

1. 브라우저 테스트 필수

feature_development:
  - step_1: Chrome에서 개발 및 테스트
  - step_2: Safari에서 호환성 테스트
  - step_3: Edge에서 최종 확인
  - step_4: 모바일 Safari (iOS) 테스트

2. Safari 우선 개발

// Safari를 기준으로 개발하면 다른 브라우저에서도 작동
// Safari가 가장 엄격한 정책을 가지고 있기 때문

// ✅ Safari 호환 코드 (모든 브라우저 작동)
const cookie = [
  'token=xxx',
  'HttpOnly',
  ...(isProduction ? ['Secure'] : []),  // 환경별 조건부
  'SameSite=Lax',                       // Safari 호환
].join('; ');

// ❌ Chrome만 작동 (Safari 실패)
const cookie = 'token=xxx; Secure; SameSite=Strict';  // HTTP에서 Safari 거부

3. 기능 감지 (Feature Detection)

// ✅ 올바른 방법: 기능 감지
if ('IntersectionObserver' in window) {
  // IntersectionObserver 사용
}

// ❌ 잘못된 방법: 브라우저 감지
if (userAgent.includes('Chrome')) {
  // Chrome 전용 기능 사용
}

4. 폴백 제공

// localStorage 지원 여부 확인 (Safari Private Mode 대응)
try {
  localStorage.setItem('test', 'test');
  localStorage.removeItem('test');
} catch (error) {
  // Safari Private Mode: localStorage 제한
  // 대안: sessionStorage 또는 메모리 저장소 사용
}

문제 해결 가이드

Q1. IE 사용자가 계속 접속을 시도하는 경우

해결 방법:

  1. 고객센터 연락 유도
  2. Edge 설치 원격 지원
  3. 브라우저 설치 가이드 제공

Edge 설치 가이드:

1. https://www.microsoft.com/edge 접속
2. "다운로드" 버튼 클릭
3. 설치 파일 실행
4. 설치 완료 후 SAM ERP 재접속

Q2. 안내 페이지가 표시되지 않는 경우

체크 포인트:

# 1. middleware.ts 적용 확인
npm run build

# 2. 로그 확인
# 개발 환경: 터미널에서 "[IE Blocked]" 메시지 확인
# 프로덕션: 로그 모니터링 시스템 확인

# 3. User-Agent 확인
# Chrome DevTools → Network → 요청 헤더에서 User-Agent 확인

Q3. 특정 브라우저에서 기능이 작동하지 않는 경우

디버깅 절차:

// 1. 브라우저 콘솔에서 에러 확인
// Chrome: F12 → Console
// Safari: 개발자 메뉴 활성화 → 웹 검사기 → 콘솔

// 2. 브라우저 호환성 확인
// https://caniuse.com 에서 기능 검색

// 3. 폴백 코드 추가
if (typeof feature === 'undefined') {
  // 대체 구현
}

관련 문서


업데이트 히스토리

날짜 내용 작성자
2024-XX-XX 브라우저 지원 정책 문서 작성 및 IE 차단 구현 Claude

요약

지원 브라우저

  • Chrome (90+)
  • Edge (90+)
  • Safari (14+)

지원하지 않는 브라우저

  • Internet Explorer (모든 버전)

🎯 핵심 원칙

  1. Safari 우선 개발: 가장 엄격한 정책 기준
  2. 크로스 브라우저 테스트 필수: Chrome, Safari, Edge
  3. 사용자 친화적 안내: IE 사용자에게 명확한 업그레이드 안내

문의: 고객센터 또는 개발팀