sales-frontend-oz 0.0.70 → 0.0.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/oz/constant/comment-pen-param.ts","../src/oz/constant/oz-param.ts","../src/oz/constant/pdf-param.ts","../src/oz/hooks/use-document-info.tsx","../src/oz/hooks/use-oz-event-listener.tsx","../src/oz/types/oz-event.types.ts","../src/oz/utils/bridge-util/alert-util.ts","../src/internal/const/test-data.ts","../src/internal/utils/internal-common-utils.ts","../src/oz/utils/bridge-util/fetch-util.ts","../src/oz/utils/bridge-util/oz-wrapper-util.ts","../src/oz/utils/bridge-util/create-report-util.ts","../src/oz/utils/bridge-util/get-draft-data-util.ts","../src/oz/utils/bridge-util/focus-util.ts","../src/oz/utils/bridge-util/save-pdf-util.ts","../src/oz/utils/bridge-util/validation-util.ts","../src/oz/utils/common-util.ts","../src/oz/utils/value-change-debounce-util.ts"],"names":["useMemo","ozdFile","useCallback","useEffect","OZViewerEvent","OZTriggerExternalEvent","Bridge","idx","debounce"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * 형광펜 편집 관련 상수\n */\n\n/** 형광펜을 사용하는경우 공통 파라미터 */\nconst commentPenDefaultParam = [\n `comment.selectedpen=highlightpen`,\n `comment.highlightpen_thick=15`,\n]\n\n/** 노란색 형광펜 설정 */\nexport const commentPenYellow = [...commentPenDefaultParam, `comment.highlightpen_color=ffd900`];\n/** 분홍색 형광펜 설정 */\nexport const commentPenPink = [...commentPenDefaultParam, `comment.highlightpen_color=f48fb1`];\n/** 초록색 형광펜 설정 */\nexport const commentPenGreen = [...commentPenDefaultParam, `comment.highlightpen_color=81c784`];\n/** 지우개 설정 */\nexport const commentPenEraser = [`comment.selectedpen=eraser`,];","/**\n * 모든페이지 공용으로 쓰는 OZ 뷰어파라미터\n */\n\nconst informationOzParam = [\n // 뷰어 콘솔 로그 정보의 수준(Level)을 설정합니다. - 뷰어 수행에 필요한 디버깅용 메시지를 자바 콘솔에 출력\n `information.debug = true`,\n];\nconst globalOzParam = [\n // 다중 보고서 호출 시 부모 보고서의 파라미터 값을 자식 보고서가 상속받을지 여부를 설정합니다.\n `global.inheritparameter=true`,\n // 멀티 보고서를 하나의 보고서처럼 사용할지 여부를 설정합니다.\n `global.concatpage=true`,\n // 멀티 보고서를 하나의 보고서처럼 설정한 경우 각각의 보고서별로 페이지 번호를 부여할지 여부를 설정합니다.\n // `global.eachpagenumberatconcatpage=true`,\n];\nconst eformOzParam = [\n `eform.signpad_type=embedded`,\n // `eform.signpad_type=keypad`,\n `eform.show_prev_next_input=true`,\n // `eform.signpad_prev_next_iconposition=sign_top_left`,\n `eform.signpad_prev_next_iconposition=sign_top`,\n `eform.signpad_show_draw_erase_button=false`,\n `eform.signpad_viewtype=keepratioandfittoframe`,\n `eform.radiobutton_type=ensurevisible_at_prev_next`,\n `eform.checkbox_type=ensurevisible_at_prev_next`,\n `eform.prev_next_required_rule=required_only`,\n `eform.prev_next_navigation_rule=required_only`,\n `eform.prev_next_constraint_rule=empty_only`,\n `eform.imagepicker_camera_iconposition = camera_top`,\n `eform.inputeventcommand=true`,\n // 서명 입력 중간중간에 onValueChanged가 호출 / 디폴트는 입력끝나고 창이 닫힐때 호출\n `eform.onvaluechanged_callrule_json=${JSON.stringify({ signpad: 'changed' })}`,\n `eform.inputcomponent_toolbar_button_json=${JSON.stringify({\n // 서명패드 버튼 배열 수정\n \"all\": {\n // 왼쪽에 [이전, 창닫기]\n \"left_align\": \"prev,ok\",\n // 오른쪽에 [다시쓰기, 성명,서명 불러오기, 다음]\n \"right_align\": \"clear,reusablesign,next\"\n }\n })}`,\n `eform.imagepicker_id_info=${JSON.stringify({\n ids: [\n {\n id: '1',\n name: '운전면허증_최신',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '주민번호', area: '0,0,0,0' },\n { name: '운전면허번호', area: '0,0,0,0' },\n { name: '발급번호', area: '0,0,0,0' },\n { name: '발급날짜', area: '0,0,0,0' }\n ]\n },\n {\n id: '2',\n name: '운전면허증_구형',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '주민번호', area: '0,0,0,0' },\n { name: '운전면허번호', area: '0,0,0,0' },\n { name: '발급번호', area: '0,0,0,0' },\n { name: '발급날짜', area: '0,0,0,0' }\n ]\n },\n {\n id: '3',\n name: '주민등록증',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '주민번호', area: '0,0,0,0' },\n { name: '발급날짜', area: '0,0,0,0' }\n ]\n },\n {\n id: '4',\n name: '외국인등록증 앞면',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '외국인등록번호1', area: '0,0,0,0' },\n { name: '외국인등록번호2', area: '0,0,0,0' },\n { name: '성명', area: '0,0,0,0' },\n { name: '성별', area: '0,0,0,0' },\n { name: '국가지역', area: '0,0,0,0' },\n { name: '체류자격', area: '0,0,0,0' },\n { name: '발급일자', area: '0,0,0,0' }\n ]\n },\n { id: '5', name: '외국인등록증 뒷면', size: '86x54', margin: '3', mask: [{ name: '외국인', area: '0,0,0,0' }] }\n ],\n choice: { title: '신분증을 선택하세요.', items: '1,2,3,4,5' }\n })}`\n];\n\nconst viewerOzPram = [\n `viewer.pagenavigate_by_prev_next=true`,\n `viewer.zoombymouse=false`,\n `viewer.zoombydoubletap=false`,\n `viewer.pagedisplay=singlepagecontinuous`,\n `viewer.usetoolbar=false`,\n `viewer.usestatusbar=false`,\n `viewer.useprogressbar=false`,\n `viewer.zoom=137`,\n `viewer.viewmode=fittowidth`,\n `viewer.hidehorizontalscroll=false`,\n `viewer.progresscommand=true`,\n `viewer.pagechangecommand=true`,\n `viewer.exportcommand=true`,\n `viewer.errorcommand=true`,\n `viewer.reportchangecommand=true`,\n `viewer.pagebindcommandinterval=500`,\n];\n\nconst ozdOzParam = [\n // connection.args=key=value로 넘기는 정보들은 ozr에서만 유효하나 ozd에서도 유효하도록 허용\n `ozd.allowreplaceformparam=true`\n]\n\nexport const commonOzParam = [\n ...informationOzParam,\n ...globalOzParam,\n ...eformOzParam,\n ...viewerOzPram,\n ...ozdOzParam,\n];","/**\n * PDF export시 공통으로 필요한 파라미터\n *\n * 제공하지 않는 파라미터\n * - filename\n * - ex) `pdf.filename=test.pdf`\n * - pages\n * - ex) `export.pages=1-2`\n * - userpassword\n * - ex) `pdf.userpassword=123213`\n */\nexport const commonPdfExportParam = [\n // `pdf.filename=${\"test.pdf\"}`,\n // `export.pages=${i.startPage}-${i.endPage}`,\n // \"pdf.userpassword=$pdfPassword\",G\n 'export.pagerange=range',\n 'export.confirmsave=false',\n 'export.mode=silent',\n // pdf에 폰트를 포함시킨다\n `pdf.fontembedding=true`,\n // 폰트를 포함시킬때 사용하는 글자만 포함시킨다\n `pdf.fontembedding_subset=true`\n];","import { useMemo } from \"react\";\n\nimport type { FormInfo } from \"sales-frontend-bridge\";\n\n/**\n * documentInfo를 여러가지 형태로 가공해주는 hook\n */\nexport function useDocumentInfo(initialValue: FormInfo[]) {\n\n /** 서식 목록 */\n const documentInfo = initialValue;\n\n /** 글로벌 문서 목록 */\n const documentList = useMemo(() => documentInfo.map((i) => i.doc).flat(1), [documentInfo]);\n\n /** 글로벌 문서 맵 { 문서코드: 글로벌 인덱스} */\n const documentIndexMap = documentList.reduce((acc, cur, index) => {\n acc[cur.docCode] = index;\n\n return acc;\n }, {} as Record<string, number>)\n\n /** 글로벌 문서 맵 { 문서코드: 속한 서식 } */\n const documentTemplateMap = useMemo(() => documentInfo.reduce((map, template) => {\n template.doc.forEach(ozdFile => {\n map[ozdFile.docCode] = { ...template };\n });\n\n return map;\n\n }, {} as Record<string, FormInfo>), [documentInfo]);\n\n // 글로벌 문서 맵 { 서식이름: 서식 }\n const nameTemplateMap = documentInfo.reduce((acc, doc) => {\n acc[doc.name] = doc;\n\n return acc;\n }, {} as Record<string, FormInfo>);\n\n // 글로벌 문서 배열 { 글로벌인덱스: [동료서식 글로벌인덱스, 동료서식 글로벌인덱스] }\n const groupIndexes = useMemo(() => (\n documentInfo.reduce((acc, item) => {\n item.doc.forEach((ozdFile) => {\n const currentIndex = documentIndexMap[ozdFile.docCode] as number;\n\n // 각 globalIndex에 해당하는 그룹 인덱스를 추가\n if (!acc[currentIndex]) {\n acc[currentIndex] = []; // 배열로 초기화\n }\n\n // 해당 파일이 속한 그룹의 인덱스를 추가\n item.doc.forEach((ozdFile) => {\n acc[currentIndex]!.push(documentIndexMap[ozdFile.docCode]!);\n });\n });\n\n return acc;\n }, [] as Array<Array<number>>)\n ), [documentIndexMap, documentInfo]);\n\n // 모든 서식이 완료되었는지 확인\n const isAllComplete = useMemo(() => (documentInfo.every(i => i.complete)), [documentInfo]);\n\n return {\n documentList,\n documentTemplateMap,\n documentIndexMap,\n nameTemplateMap,\n groupIndexes,\n isAllComplete\n }\n}","import { useCallback, useEffect } from 'react';\n\nimport { OZViewerEvent } from \"../types\"\n\ntype Props<T, R = void> = {\n event: OZViewerEvent;\n handler: (e: CustomEvent<T>) => Promise<R>;\n};\n/**\n * OZ 뷰어 콜백 이벤트를 구독해주는 Hook\n */\nexport function useOzEventListener<T, R = void>({ event, handler }: Props<T, R>) {\n const handleEvent = useCallback(\n async (e: Event) => {\n const customEvent = e as CustomEvent<T>;\n\n return await handler(customEvent);\n },\n [handler]\n );\n\n useEffect(() => {\n window.addEventListener(event, handleEvent);\n\n return () => {\n window.removeEventListener(event, handleEvent);\n };\n }, [handleEvent, event]);\n}\n","/**\n * OZ 뷰어에 관련된 이벤트 목록\n */\nexport enum OZViewerEvent {\n /**\n * 보고서 생성 단계별로 발생하는 이벤트\n * - `OZViewerProgressEvent` 이벤트와 매칭된다\n * - `viewer.progresscommand=true` 설정이 필요하다\n * - `OZViewerProgressEvent`와 매칭된다\n * - 모든 문서가 로딩되면 `OZReportCreated` 이벤트를 트리거시켜주어야 한다\n */\n OZProgressCommand = 'OZProgressCommand',\n /**\n * 에러 발생 시 발생하는 이벤트\n * - `viewer.errorcommand=true` 설정이 필요하다\n * - `OZViewerErrorEvent`와 매칭된다\n */\n OZErrorCommand = 'OZErrorCommand',\n /**\n * 화면에 표시되는 페이지가 변경된 후 발생하는 이벤트\n * - `viewer.pagechangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZPageChangeCommand = 'OZPageChangeCommand',\n /**\n * 화면에 표시되는 보고서가 변경된 후 발생하는 이벤트\n * - `viewer.reportchangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZReportChangeCommand = 'OZReportChangeCommand',\n /**\n * `OZUserEvent` _TriggerOCXUserEvent 함수 실행 시 발생하는 이벤트\n * - `OZViewerUserEvent`와 매칭된다\n */\n OZUserEvent = 'OZUserEvent',\n /**\n * `OZPageBindCommand` 페이지가 바인딩된 후 발생하는 이벤트\n * - `viewer.pagebindcommandinterval` 파라미터에서 설정한 주기별로 동작\n * - ex) `viewer.pagebindcommandinterval=500`\n * - `OZViewerPageBindEvent`와 매칭된다\n */\n OZPageBindCommand = 'OZPageBindCommand',\n /**\n * 사용자가 입력 컴포넌트를 클릭하거나 값을 변경하여 이벤트가 실행된 경우 발생되는 이벤트'\n * - 호환되는 이벤트\n * - `OnClick`\n * - `OnFinish`\n * - `OnFocus`\n * - `OnKillFocus`\n * - `OnPause`\n * - `OnPlay`\n * - `OnStop`\n * - `OnValueChanged`\n * - `eform.inputeventcommand=true` 설정이 필요하다\n * - `OZEFormInputEvent`와 매칭된다\n */\n OZEFormInputEventCommand = 'OZEFormInputEventCommand',\n /**\n * 보고서 저장 시 발생하는 이벤트\n * - `OZExportEvent`와 매칭된다\n */\n OZExportCommand = 'OZExportCommand',\n\n /**\n * 오즈뷰어, (오즈전용)PDF 뷰어 내 버튼 클릭시 발생하는 이벤트\n * - `OZBtnTouchEvent`와 매칭된다\n */\n OZBtnTouchEvent = 'btnTouchEvent',\n\n /**\n * `OZProgressCommand` 이벤트가 문서 갯수만큼 불리면 이 이벤트를 트리거한다\n * - 웹에서 직접 트리거 하는 이벤트\n */\n OZReportCreated = 'OZReportCreated',\n}\n\n/**\n * TriggerExternal에 사용할 param1인자를 정의한 enum\n * - GetDraftData 중간저장 서명이미지 추출\n * - cropimage 서명이미지 크롭\n */\nexport enum OZTriggerExternalEvent {\n GetDraftData = 'getDraftData',\n CropImage = 'cropimage'\n}\n\n/**\n * `OZViewerEvent.OZProgressCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZProgressCommand, (e) => { console.log(e.detail); });\n * ```\n *\n * `step과` `state`는 step => state 방식으로 진행된다\n *\n * 예시\n * ```bash\n * # step0 뷰어실행\n * [step=0][state=0] # 뷰어 실행 시작\n * [step=0][state=1] # 뷰어 실행 완료\n * # step2 보고서 템플릿 생성\n * [step=1][state=0] # 보고서 템플릿 생성 시작\n * [step=1][state=1] # 보고서 템플릿 생성 완료\n * ```\n */\nexport type OZViewerProgressEvent = {\n /**\n * 보고서 생성 단계\n * - 0 : 뷰어 실행 옵션 설정\n * - 1 : 보고서 파일 다운로드\n * - 2 : 보고서 템플릿 생성\n * - 3 : 데이터 다운로드\n * - 4 : 보고서 바인딩\n */\n step: '0' | '1' | '2' | '3' | '4';\n /**\n * 보고서 생성 상태\n * - 1 : 시작\n * - 2 : 완료\n */\n state: '1' | '2';\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * `OZViewerEvent.OZErrorCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZErrorCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerErrorEvent = {\n /** 에러 메시지 코드 */\n code: string;\n /** 에러 기본 메시지 */\n message: string;\n /** 에러 상세 메시지 */\n detailmessage: string;\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * 두 이벤트의 공용 타입\n * - `OZViewerEvent.OZPageChangeCommand` 이벤트의 `e.detail` 타입 정의\n * - `OZViewerEvent.OZReportChangeCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageChangeCommand, (e) => { console.log(e.detail); });\n * window.addEventListener(OZViewerEvent.OZViewerChangeCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerChangeEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: number;\n};\n\n/**\n * `OZViewerEvent.OZUserEvent` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZUserEvent, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerUserEvent = {\n /** _TriggerOCXUserEvent 함수에서 전달한 첫 번째 값 */\n param1: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 두 번째 값 */\n param2: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 세 번째 값 */\n param3: string;\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n};\n\n/**\n * `OZViewerEvent.OZPageBindCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageBindCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerPageBindEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 바인딩된 페이지 번호 */\n pagecount: string;\n};\n\nexport type OZEFormInputEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 이벤트가 발생한 컴포넌트의 FormID. FormID가 설정되지 않은 경우 컴포넌트의 이름이 리턴됨 */\n formid: string;\n eventname: string;\n mainscreen: boolean;\n}\n\nexport type OZExportEvent = {\n /**\n * 저장 성공 여부\n * - `0` 실패\n * - `1` 성공\n */\n code: \"0\" | \"1\"\n /** 파일 경로 */\n path: string;\n /** 파일 이름 */\n filename: string;\n /** 저장된 페이지 수. 여러 페이지의 보고서를 한 페이지로 저장한 경우에는 1이 리턴됨 */\n pagecount: string;\n /**\n * 뷰어가 실제 저장한 모든 파일의 경로와 이름.\n * \n * 파일이 여러 개일 경우 `|`를 구분자로 하여 리턴됨\n */\n filepaths: string;\n}\n\n/**\n * 상단 전체목록 보기 버튼 내 서식 클릭이벤트\n * - 선택된 서식의 텍스트가 btnID로 넘어온다\n */\nexport type CategoryEvent = {\n type: \"category\";\n /** 자유 입력 가능한 버튼 ID */\n btnID: string;\n};\n\n/**\n * 상단 버튼 클릭 이벤트(전체목록 버튼 제외)\n * - 예: 나가기 버튼\n */\nexport type TopEvent = {\n type: \"top\";\n btnID: \"btnExit\";\n};\n\n/**\n * 성명,서명, 덧쓰기 관련 버튼 클릭 이벤트\n * - `signatureInProgress` 서명 바로가기 버튼\n * - `signatureInMissing` 미입력 항목 입력하기 버튼(느낌표 버튼)\n * - `signatureComplete` 청약문서 최종 확인하기\n */\nexport type SignatureEvent = {\n type: \"signature\";\n btnID: \"signatureInProgress\" | \"signatureInMissing\" | \"signatureComplete\";\n};\n\n/**\n * pdf 뷰어 내 버튼 클릭 이벤트\n * - `modify` 성명 서명 덧쓰기 수정하러 가기\n * - `submit` 최종 제출하기\n */\nexport type PdfEvent = {\n type: \"pdf\";\n btnID: \"modify\" | \"submit\";\n};\n\n/**\n * comment(형광펜) 관련 버튼 클릭 이벤트\n * - `yellow` 노랑색 형광펜 활성화\n * - `pink` 분홍색 형광펜 활성화\n * - `green` 초록색 형광펜 활성화\n * - `eraser` 지우개 활성화\n * - `disable` 형광펜 모드 종료\n */\nexport type CommentEvent = {\n type: \"comment\";\n btnID: \"yellow\" | \"pink\" | \"green\" | \"eraser\" | \"disable\";\n};\n\n/**\n * OZ 문서 시스템 내 버튼 클릭 이벤트 통합 타입\n *\n * type(카테고리)에 따라 btnID 값이 다르게 제한됩니다.\n */\nexport type OZBtnTouchEvent =\n | CategoryEvent\n | TopEvent\n | SignatureEvent\n | PdfEvent\n | CommentEvent;\n\n/**\n * 문서코드별 입력 데이터 및 추가 파라미터 매핑 타입\n *\n * 각 문서코드에 대해 `inputJson` (임의의 key-value 쌍)과\n * \n * 선택적으로 `extraParam` (기타 추가 파라미터)을 포함하는 객체입니다.\n *\n * 예시:\n * ```javascript\n * {\n * A0010: {\n * inputJson: {\n * A0010_mynm_sg: 'data:image/png;base64,iVBORw0K...', // 예: 이미지 데이터\n * A0010_mysg_sign: 'data:image/png;base64,iVBORw0KG...', // 예: 이미지 데이터\n * custom_field: 'some value', // 임의의 데이터도 가능\n * },\n * args: [`roleCd=11,21`]\n * extraParam: [`viewer.zoom=137`]\n * },\n * C0401: {\n * inputJson: {\n * mynm_sg: 'data:image/png;base64,iVBORw0K...', // 예: 이미지 데이터\n * mysg_sign: 'data:image/png;base64,iVBORw0KG...', // 예: 이미지 데이터\n * another_field: 'another value', // 임의의 데이터\n * }\n * },\n * }\n * ```\n */\nexport type ExtraDataType = Record<string, {\n /** connection.inputJson으로 전달할 `{ \"key1\": \"value1\", \"key2\": \"value2\" }` 형식의 데이터 (예: 문자열, base64 이미지 등) */\n inputJson?: Record<string, string>;\n /** connection.arg로 전달할 `[\"key1=value1\", \"key2=value2\"]` 형식의 데이터 */\n args?: string[];\n /** 추가 파라미터 목록 (선택 사항) */\n extraParam?: string[];\n}>;\n","import { Bridge } from \"sales-frontend-bridge\";\n\n/**\n * ### 발생 상황 및 에러 메시지 정리\n * 1. 비정형에서 OZD 다운로드 시 → 청약문서를 불러오지 못했습니다\n * 2. 백엔드에서 중간저장 데이터 로딩 시 → 일시적인 오류가 발생했습니다\n * 3. 오즈뷰어(솔루션) 초기화(OZD 파일 + 중간저장 데이터) 시 → 일시적인 오류가 발생했습니다\n * 4. 성명/서명/덧쓰기 진행 시 → 일시적인 오류가 발생했습니다\n * 5. 서식 완료 후 서명 중간저장(비정형 저장) 시 → 일시적인 오류가 발생했습니다\n * 6. PDF Export(개별문서/통합문서) 시 → 청약문서를 불러오지 못했습니다\n * 7. PDF 뷰어 초기화(Export된 PDF를 화면에 렌더링) 시 → 청약문서를 불러오지 못했습니다\n *\n * ### 에러 발생 시 처리 동작\n * - 에러 발생시 재시도 혹은 탈출을 위해 이전 화면으로 돌아간다\n * - 1~5단계 에서 에러 발생 시 → 확인버튼 클릭 → OZ 뷰어 종료 브릿지 호출\n * - 6~7단계 에서 에러 발생 시 → 확인버튼 클릭 → PDF 뷰어 종료 브릿지 호출\n * \n * ### 일반적인 상황에서는 아래 두 함수를 사용하고 커스텀한 상황애서는 showAlert을 직접 조합하여 사용한다\n */\n\n\n/**\n * OZ 뷰어 및 비정형 처리 과정에서 일시적인 오류가 발생했을 때 표시되는 경고창.\n * #### 처리 동작\n * - 확인 버튼 클릭 시 OZ 뷰어 종료 브릿지 호출\n */\nexport async function AlertTemporaryError() {\n return await Bridge.nativeOz.showAlert({\n title: \"일시적인 오류가 발생했습니다\",\n message: \"문제가 지속될 경우 IT콜센터(1522-6379)로 문의해주세요.\",\n buttons: { close: false, main: \"확인\" }\n });\n}\n\n/**\n * 청약문서를 불러오지 못했을 때 표시되는 경고창.\n * #### 처리 동작\n * - 확인 버튼 클릭 시 PDF 뷰어 종료 브릿지 호출\n */\nexport async function AlertDocumentLoadError() {\n return await Bridge.nativeOz.showAlert({\n title: \"청약문서를 불러오지 못했습니다\",\n message: \"문제가 지속될 경우 IT콜센터(1522-6379)로 문의해주세요.\",\n buttons: { close: false, main: \"확인\" }\n });\n}","import type { CSSProperties } from 'react';\n\nimport type { ExtraDataType } from '../../oz';\nimport type { FormInfo } from \"sales-frontend-bridge\";\nexport const wrapperStyle: CSSProperties = { display: 'flex', flexFlow: 'column', gap: '10px' };\nexport const btnStyle: CSSProperties = { border: '1px solid red', minHeight: '40px' };\n\n/** 테스트용 하드코딩 문서목록 */\nexport const DownloadDocumentList: Array<FormInfo> = [\n { \"name\": \"개인(신용)정보제공 동의서\", \"doc\": [{ \"docCode\": \"C0400\", \"fileID\": \"07Ccx0CTiLNQXKkAA\" }] },\n { \"name\": \"상품소개동의서(상세)\", \"doc\": [{ \"docCode\": \"C0401\", \"fileID\": \"WH8CfHCTiLNQWKkAA\" }] },\n { \"name\": \"고객권리 안내문\", \"doc\": [{ \"docCode\": \"C0100\", \"fileID\": \"XvfJ76CTiLKCsKkAA\" }] },\n { \"name\": \"전자서명에 의한 보험계약체결 동의서\", \"doc\": [{ \"docCode\": \"B0101\", \"fileID\": \"vvOxRSCTiLNT_KkAI\" }] },\n { \"name\": \"보험계약대출 정보동의서\", \"doc\": [{ \"docCode\": \"A2215\", \"fileID\": \"P0gdb3CTiLNQUKkAA\" }] },\n { \"name\": \"상품설명서 회사보관용\", \"doc\": [{ \"docCode\": \"A0900\", \"fileID\": \"jAfVbYCTiLMmFKkAA\" }] },\n { \"name\": \"청약서\", \"doc\": [{ \"docCode\": \"A0010\", \"fileID\": \"ubBaPyCTiLLUYKkAA\" }] },\n { \"name\": \"계약전알릴의무사항 (일반+ 태아고지용)\", \"doc\": [{ \"docCode\": \"A2832\", \"fileID\": \"8LUd3MCTiLL-AKkAA\" }] },\n { \"name\": \"금융소비자보호를 위한 계약체결 고지의무 확인서\", \"doc\": [{ \"docCode\": \"C1300\", \"fileID\": \"jR3ATWCTiLKnxKkAA\" }] },\n { \"name\": \"청약부속정보확인서\", \"doc\": [{ \"docCode\": \"A1500\", \"fileID\": \"W4KUwOCTiLKqJKkAI\" }] },\n { \"name\": \"대면설명 확인서\", \"doc\": [{ \"docCode\": \"C1200\", \"fileID\": \"PMiXBQCTiLKrSKkAI\" }] },\n { \"name\": \"완전판매안내 확인서\", \"doc\": [{ \"docCode\": \"C1100\", \"fileID\": \"Ecc4ikCTiLKqkKkAA\" }] }\n].map((i) => ({\n ...i,\n // 모든 서명 입력이 완료되었는지 여부 (클라이언트에서 상태로 관리)\n complete: false,\n // 현재 서식이 포커스 상태인지 여부 (UI 제어용)\n focus: false,\n // 서식의 시작 페이지 번호 (페이지 매핑 시 사용)\n startPage: 0,\n // 서식의 종료 페이지 번호 (페이지 매핑 시 사용)\n endPage: 0,\n // 서식을 구성하는 개별 OZD 문서 목록\n doc: i.doc.map((j) => ({\n ...j,\n // OZD 파일의 로컬 저장 경로 (앱 다운로드 후 설정됨)\n filePath: \"\",\n // OZD 문서가 시작되는 페이지 번호\n startPage: 0,\n // OZD 문서가 종료되는 페이지 번호\n endPage: 0,\n })),\n}));\n\n/** 테스트용 하드코딩 데이터 */\nexport const ExtraData: ExtraDataType = {\n \"C0400\": { inputJson: { \"C0400_chk1\": \"1\", \"C0400_chk2\": \"1\", \"C0400_chk3\": \"1\", \"C0400_chk4\": \"1\", \"C0400_chk5\": \"1\", \"C0400_chk6\": \"1\", \"C0400_chk7\": \"1\", \"C0400_chk8\": \"1\", \"C0400_chk9\": \"1\", \"C0400_chk10\": \"1\", \"C0400_chk11\": \"1\", \"C0400_chk12\": \"1\", \"C0400_insurance_num\": \"300041827\", \"C0400_DATE\": \"20260108\" } },\n \"C0401\": { inputJson: { \"C0400_grp1\": \"0\", \"C0400_grp2\": \"0\", \"C0400_send_grp\": \"0\", \"C0400_grp3\": \"0\", \"C0400_insurance_num\": \"300041827\", \"C0401_DATE\": \"20260108\" } },\n \"B0101\": { inputJson: { \"B0101_prd_name\": \"한화생명 기본형 급여 실손의료비보장보험(갱신형) 무배당 \", \"B0101_prd_policy\": \"삼오녀\", \"B0101_prd_insurant\": \"태아\" } },\n \"A2215\": { inputJson: { \"A2215_chk1\": \"1\", \"A2215_chk2\": \"1\", \"A2215_chk3\": \"1\", \"A2215_chk4\": \"1\", \"A2215_insurance_num\": \"300041827\", \"Date1\": \"20260108\" } },\n \"A0900\": { inputJson: { \"Date1\": \"20260108\", \"Date2\": \"20260108\", \"A0900_chk_grp50\": \"1\", \"A0900_chk_grp51\": \"1\", \"A0900_chk_grp52\": \"1\", \"A0900_chk_grp53\": \"1\", \"A0900_chk_grp54\": \"1\", \"A0900_chk_grp55\": \"1\", \"A0900_chk_grp56\": \"1\", \"A0900_chk_grp57\": \"1\", \"A0900_chk_grp58\": \"1\", \"A0900_chk_grp59\": \"1\", \"A0900_chk_grp60\": \"1\", \"A0900_chk_grp61\": \"1\", \"A0900_chk_grp62\": \"1\", \"A0900_chk_grp63\": \"1\", \"A0900_chk_grp65\": \"1\", \"A0900_chk_grp66\": \"1\", \"A0900_chk_grp67\": \"1\", \"A0900_chk_grp68\": \"1\", \"A0900_chk_grp69\": \"1\", \"A0900_chk_grp72\": \"1\", \"A0900_chk_grp75\": \"1\", \"A0900_chk_grp80\": \"1\", \"A0900_chk_grp81\": \"1\", \"A0900_chk_grp82\": \"1\", \"A0900_chk_grp83\": \"1\", \"A0900_chk_grp84\": \"1\", \"A0900_chk_grp87\": \"1\", \"A0900_fp_sign\": \"data:image/png;base64,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\" } },\n \"A0010\": { inputJson: { \"A0010_que1_rdg\": \"1\", \"A0010_que2_rdg\": \"1\", \"A0010_que3_rdg\": \"1\", \"A0010_monitor_grp\": \"2\", \"A0010_11_call_date\": \"20260130\", \"A0010_11_call_time\": \"13:00~13:30\", \"Group2\": \"4\", \"Group1\": \"1\", \"A0010_auto_rdg\": \"1\", \"A0010_celluer_rdg\": \"1\", \"A0010_que4_rdg\": \"1\", \"Date\": \"20260108\", \"NC_STR_147_83\": \"\", \"NC_STR_181\": \"\", \"NC_STR_182\": \"\", \"NC_STR_118\": \"\", \"NC_STR_146\": \"\", \"NC_STR_183\": \"\", \"NC_STR_148\": \"\", \"NC_STR_171\": \"\", \"NC_STR_172\": \"\", \"NC_STR_174\": \"\", \"NC_STR_175\": \"\", \"NC_STR_173\": \"\", \"NC_STR_180\": \"\", \"NC_STR_179\": \"\", \"NC_STR_176\": \"\", \"NC_STR_177\": \"\", \"NC_STR_178\": \"\", \"NC_STR_185\": \"\", \"A0010_fp_nm\": \"data:image/png;base64,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\", \"A0010_fp_sign\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXsAAADOCAYAAADfTqJ5AAAQAElEQVR4Aeycu64sRxWGhwPGFgEGgYRAQiCTIQEhCRbwBMBTEEAAAbHhCSAAIZ4CeAKuERGCgMgIJARIIGFbQvKNS/3n7LZn116r+jJd3bWqPqvbM1PdXbXWt3p/u07NzH504T8IQAACEOieALLvvsQkCAEIQOByQfbcBRCAQJkAR7sggOy7KCNJQAACECgTQPZlPhyFAAQg0AUBZN9FGVtNgrggAIFWCCD7VipBHBCAAAQqEkD2FeHSNQQgAIFWCLQq+1b4EAcEIACBLggg+y7KSBIQgAAEygSQfZkPRyEAgVYJENcqAsh+FS5OhgAEIBCTALKPWTeihgAEILCKALJfhYuT+yBAFhAYjwCyH6/mZAwBCAxIANkPWHRShgAExiOA7NfVnLMhAAEIhCSA7EOWjaAhAAEIrCOA7Nfx4mwIQAACZQKNHkX2jRaGsCAAAQjsSQDZ70mTviAAAQg0SgDZN1oYwhqRADlDoB4BZF+PLT1DAAIQaIYAsm+mFAQCAQhAoB4BZF+P7ZE9MxYEIACBIgFkX8TDQQhAAAJ9EED2fdSRLCAAAQgUCTwqHuUgBCAAAQh0QYCZfRdlJAkIQAACZQLIvsyHoxCAwAUEPRBA9j1UkRwgAAEIzBBA9jOAOAwBCECgBwLIvocqtpsDkUEAAo0QQPaNFIIwIAABCNQkgOxr0qVvCEAAAo0QaFb2jfAhDAhAAAJdEED2XZSRJCAAAQiUCSD7Mh+OQgACzRIgsDUEkP0aWpwLAQhAICgBZB+0cIQNAQhAYA0BZL+GFuf2QmDvPP6dOpzbX07nsEHgNALI/jT0DByUwKspbu3/S4/T/p70fG5/bzpnOn965BdAgsJ2DAFkfwxnRolJQFLXPslZj0+nVLSnh5s36xfAzZ3SAQQsAsjeolJo41D3BF5PGUrq2iV17anpsE3jaj9sQAYagwCyH6POZDlPYJL8U/OnHnKGhK/9kMEYpH8CyL7/GpNhmcAtkn8tdf2Olfsr6fw1m4Sv/Z9rLuLcMwm0OTayb7MuRFWfwFrJS+zar+X+zIYwn03XXPeh50t+AXwgXSfpa09P2SCwjgCyX8eLs+MTWCr5N1KqEvG0S+zaU/Pu2/UvgCWdI/wllDjnHgFkfw8HLzomsFby7z6BhYacfrnoeWlH+CU6HHtAANk/QEJDZwSiSD7HvkT6Er72/FpeQ+ABAWT/AAkNnRCQBLXPfbpmWq45ayY/h3up9Of64fjgBJB9JzcAabxFQILX/laD86R1yedhz0lfOf81v4jXEJgIIPuJBI/RCUh22ufyiCb5PB9JP2+bXn84PVnCIJ3GNhoBZD9axfvKd1qPXyI4SVJ7q8s1ayqjPP5WuGAJj8LlHOqRwKNLj1mRU+8EJsnPrceLg8SoXc972j+SkinlJeGzrJMgsT0hwMz+CQf+H4MAkn9Yp5LwWdZ5yGvYFmQ/bOlDJa51ds1U52byOk/y0x4qwRuDVb41l3VuDI/LWyCA7FuoAjGUCEjy7yqdkI5Nku9hPT6ls2ljWWcTtnEuQvbj1DpaphK4RF+KW+doVjuy5HM+4pG3Ta9Z1plIDPiI7Acs+pEpbxxLki/N5pF8GayEr907S3y9Y7R3SgDZd1rYoGlJ4iURvZnyksSYyScQCzax8k4TZ+3ecdo7I4DsOyto0HQmyZdm8xLX3Bu0QdOvGra4lQb4b+kgx/oh0K7s+2FMJmUCml2WJD/N5su9cLREQMLXbp2jdoRvkemsDdl3VtBA6Uyz+VLIEhGz+RKhdcfE07pC7QjfItNRG7LvqJiBUmE2f16xJHZrdLVHE76VB20OAWTvgKG5CgFm81Wwru5UYv+jcZXaEb4BpocmZN9DFWPkMDebl2i0x8gmfpSfSCkg/ARhlA3Zj1Lp8/LUG6wSvReBjh8ueS+YwdoR/kAFR/YDFfuEVCX5dxbGleR5A7YA6IBDCP8AyC0MgexbqEJ/MWi2LtF7mem4RO8dp/1YAhK+VS/ViDX8Y2tRbTRkvxYt588RkDSYzc9Rau+4XKDa5ZFJ+C/mjbyOR0AFjhc1EbdIQLN1SxZTrP9JTySO9MDWKAH5wKrhcylehJ8gRN5U3MjxE3sbBCT6udl86VuybWRBFCIgJyB8kdi+N3mlCttkYAQVhoDE4Ime2XyYMt4LVF5QXe81phfM8BOEqJuKGjV24j6XgGbzlhCmqLRkw2x+ohHvUW6w6ovw49XyccQq6OMn/A8CKwhIAt5sXt1I9HpkX0mgsdPlB9U6D0vC/13eyOu2CaiYbUdIdC0RmJvNs2zTUrX2iUWOsIT/qX26p5ejCKiQR43FOLEJ6Ad+bjbPsk3sGnvRyxOqf37casvP4XUjBFTERkIhjJsI1L249EPNbL4u+1Z6lyusL1iV7o1WYieOREAFTA9sEDAJzC3baG2e2byJrstG7192uk+6TLinpJB9T9XcNxfN2Lwfbo0k0euRfSwCVt11nyD8xu+DR5dL4xES3hkEJHpvXJZtPDLjtCP8gLVmZh+waJVDLoleP+Qs21QuQJDuf2/EqRk+H8k0wLTQhOxbqEI7MXii1xtzEn07kRLJoQSMwT6d2izh6yOZCD/BaW1D9q1V5Lx4SqLXjO28yBi5VQISvpb18vgQfk6kgdfIvoEiNBACom+gCEFD0LKeJ/ygKfUZNrLvs65rsqor+jWRcG5UAp7wvXsrap6h40b2oct3c/DeD6PW51m6uRnvUB0g/MbLjewbL1Cl8PTP7pLoKw1Lt50TkPCtFPkMvkXl4LaGZX8wiXGGk+i9umtGPw4JMq1BwLqH9K/E12sMRp/LCXg/9Mt74MxIBBB9pGrFjdUS/lMpnVfTznYSAWR/EvgThkX0J0AfeEjrM/hPJx6/SvtuGx0tJ4Dsl7OKfKbW571aW7OwyLkSexsE9Bn8XxuhfM5oo+kAAp4ADhiaIQ4iINF7QyF6jwztexB4PnXyWtrzrXRP5ufyeicCyH4nkI12U/qhGlv0jRasw7CeSTlZwmf9PoE5ckP2R9I+dixEfyxvRvMJSPj5Ua3fI/ycSsXXyL4i3BO7RvQnwmdok4D1L0kJnzdsTVz7NyL71Uybv8ATPX+5svnSdR8gb9ieWGJkfyL8CkOXRK8vtlQYki4hsJiA3rC1hO/dt4s75sR5Ash+nlGUM7wfGM3oEX2UKvYfp4Tf/Ru2LZYR2bdYlfUxeaLXOimiX8+TK+oS4A3bunzN3pG9iSVMo74VWxJ9mEQIdDgCmojkSfOGbU5kx9fIfkeYB3cl0Xv1s36QDg6P4TYRGOsia/1e37DlEzoV7gNPFhWGossdCSD6HWHS1WkEtH7vCf+0oHodGNnHqyyij1czIvYJSPjWG7b6YIF/FUdWE0D2q5GdeoHW552aXVi6ObU0DH4DAb1hmwtf9/NLN/TJpRkBTxzZabxsgIBE74WhHwzvGO0QiEBAws/v8WdT4D9OO9sOBJD9DhAP6CL/IbgeEtFf0+B5ZAI/NYL/stFG0wYCkv2Gy7jkQAKI/kDYDHUqga+k0X+S9nxj/T4nsuE1st8A7cBLEP2BsBmqCQIS/stZJPrXK+v3GZS1L5H9WmLHne+JXrMc3fzHRcJIEDiWwPvScPn9r/V7hJ/AbN2Q/VZyda/Lb/RpNImeP38w0eCxZwJyU/5zIOHzhu3Gqgvoxku5rBKB/AafhkH0EwkeRyFgvWH7pVGS3ztPZL830dv661D0twHh6qEJeOv3mvgMDWZL8sh+C7U613ii1/o8Szd1mNNr+wS0fs8btjvUCdnvAHGHLkqi36F7uoBAaAISfv4zwvr9ypK2LPuVqYQ9Pb+Jp0Q0o5+e8wiB0QlYrtIXrnjDduGdYQFceCmn7UAA0e8AkS6GIWB94Yo3bBeWH9kvBFXhNERfASpddk3g4Ru2l8d/APDvF/6bJYDsZxFVOQHRV8FKpwMQ0Pp9/obth1Lef0o7W4EAsi/AqXQI0VcCS7fDEJDw849ffixl//20szkEkL0DplIzoq8Edn23XBGcwA+N+L9qtNF0RwDZ34E44AHRHwCZIYYh8PWU6Q/Sfr29K714I+1sBgFkb0Cp0IToK0Cly+EJSPh/zihI+KzfZ1D0EtmLwrp97dme6L32tf1zPgRGJvDxlPybab/eWL+/pnH3HNnfgaj04Ald7bCvBJ1uhyPwlJHx14y2oZsQTr3yS+hW72qHu0WGNghsJ5Cv36un89bvNXpjO9KpU5D8Y2HXo8D8mgbPIbAPAdbvZzginhlAGw5L9N7ftfHaNwzDJRCAQEaA9fsMyPVLZH9N4/bniP52hoP3QPo3EtD6ff6Grdbvh//CFbK/8c66uhzRX8HgKQROJPAjY+zhv3CF7I27YmOTt0TjtW8chssgAIEZAqzfG4CQvQFlQ5M+YWNddqTorfFpg8CoBLR+n3/hSp+///moQJD97ZVH9LczpAcI1CAg4efr959PA30j7cNtyP62kiP62/hxNQRqE/iWMcALRlv3TY9l332WdRJE9HW40isE9iTwvdTZN9N+velPJP/rumGE58h+W5UR/TZuXAWBMwhI+L/IBpbwh1q/R/bZHbDgJaJfAIlTeiMQPp8vpAxeSvv1NtT6PbK/Lv38c32W3jrL+wVgnUsbBCBwDoHvGMN+12jrsgnZryur91FKOK7jyNkQOIOAlnPy9XvFMcT6PZJSqZft3uzd+wWwrNf+zyJDCLREQMIfcv0e2S+7DRH9Mk6cBYEIBIZcv0f287cmop9nxBkQiEbg/Sng/A1brd93+4WrpmWfinH2hujPrgDjQ6AeAesN226/cIXs/RuJT974bDgCgR4IDLV+j+z9W9Z641UzfZj5zDgCgYMJ3Dyct37/7Zt7bqwDxGUXRFK3jsDLokIbBGITsNbvtZyjXwSxM7uKHnldwbh76onemunfXcIDBCAQnED36/fI/v4diujv8+j5FblB4JqA1u9z4Wtm/7PrkyI/R/ZvVw/Rv82CZxAYkYDW6S3hqz08D2T/pITeJ29YunnCh/9DYBQCEnv+1zC1fq/20AyQ/ZPyWVL3ZvqXJ5fwfwhAoFMCX0x5WcLXsk46FHND9peLJ3XYxLyniRoCexDIl3PU5wv6X9R9dKF5ordm+lFrTNwQgMB6AprZ58LXzH7hG7brB6x9xciyR/S17y76h0BsAlqnt4Sv9nCZjSp7RB/uViVgCJxCQGLXLP968Pz19bFmn48oe0Tf7O1IYJfLBQjtEdAbtopKktcSrx71OtQ+muy9j1h6vwBCFZNgIQCBagQk+Un61Qap2fFIspfoVTCL50gcrPxpgwAEOicwkuQ80Xvt4UpPwBCAAAQ8AqPI3lumQfTenUE7BCDQFYERZI/ou7plSQYCENhC4Inst1wZ4xpEH6NORAkBCFQm0LPsEX3lm4fuIQCBOAR6lT2ij3MPEmkMAkQZnECPstdHLK2yeL8ArHNpgwAEINAVgR5l733Cpsdcu7oZNUzIPQAAArdJREFUSQYCEKhHoDcBerN37xdAPbL0/BYBnkAAAucT6En2iP78+4kIIACBRgn0IntE3+gNRlgQgEAbBNqW/TJGiH4ZJ86CAAQGJhBd9oh+4JuX1CEAgeUEosveytT7BWCdSxsEIBCbANEvJBBZ9pbU1RY5p4Vl4zQIQAAC6whEFaOkbmUaNR8rF9ogAAEI7EYgohy9b8jyWfrdbosxOiJLCIxEIKLsLalbbSPVkVwhAAEIFAlEk723fFNMkoMQgAAERicQSfae6I+f1Y9+15A/BCAQjkAk2VtwEb1FhTYIQAACGYEosrdm9VZblh4vIQABCJxCoLlBI8jek3qE2JsrOAFBAAJjEmhdmHzMcsz7kqwhAIGdCbQue2tN3mrbGQvdQeA8AowMgRoEWpa9t3xTgwN9QgACEOiaQKuy90TPrL7r25HkIACBWgRalb2VL6K3qFy38RwCEICAQ6BF2VuzeqvNSYlmCEAAAhDICbQme0/qrcWZc+Q1BCAAgaYJ3Em0iRj5mGUTZSAICECgRwItyd5ak7faeqwDOUEAAhCoSqAV2XvLN1WTp3MIQGA5Ac6MTaAF2XuiZ1Yf+94ieghAoCECZ8v+OYcFonfA0AwBCEBgC4GzZf/ilqC5JhgBwoUABE4ncKbsn3eyZ1bvgKEZAhCAwFYCZ8r+l0bQnzTaaIIABCAAgRsJnCV7703ZP9zPh1cQgAAEILAHgTNk/0En8GeddpohAAEIQOBGAmfI/h9OzK847TRDAAIQcAlwYBmBo2X/GScs3pR1wNAMAQhAYA8CR8v+t0bQnzXaaIIABCAAgR0JHCl77w+d/WbHfOgKAssJcCYEBiJwlOyfTkytpZqPpnY2CEAAAhCoTOAo2b/q5PEXp51mCEAAAhDYkcARsvf+/s0RY++I6rornkMAAhCIReD/AAAA///wj2zEAAAABklEQVQDANbevsozvT2JAAAAAElFTkSuQmCC\" } },\n \"A2832\": { inputJson: { \"A0103_insurance_num\": \"300041827\", \"A0103_insurance_num2\": \"300041827\", \"Date\": \"20260108\" } },\n \"C1300\": { inputJson: { \"C1300_grp1\": \"1\", \"C1300_grp2\": \"1\", \"C1300_grp3\": \"1\", \"C1300_grp4\": \"1\", \"C1300_grp5\": \"1\", \"C1300_grp6\": \"1\", \"C1300_grp7\": \"1\", \"C1300_grp8\": \"1\", \"C1300_grp9\": \"1\", \"C1300_grp10\": \"1\", \"C1300_grp11\": \"1\", \"C1300_grp12\": \"1\", \"C1300_grp13\": \"1\", \"C1300_grp14\": \"1\", \"C1300_chk1\": \"1\" } },\n \"A1500\": { inputJson: { \"A3820_financeExpert_grp\": \"01\", \"A0103_altk_rdg\": \"1\", \"A0103_agree_grp\": \"1\", \"A1500_fp_sign1\": \"data:image/png;base64,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\", \"A1500_fp_sign2\": \"data:image/png;base64,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\" } },\n \"C1200\": { inputJson: { \"C1200_date\": \"20260109\", \"C1200_time\": \"09:00\", \"C1200_place\": \"고객 집 주변\", \"C1200_way\": \"상품설명서로 직접 설명\", \"C1200_confirm\": \"1\", \"C1200_insurance_num\": \"300041827\", \"C1200_fp_nm1\": \"동구시\", \"C1200_fp_nm4\": \"동구시\", \"C1200_con_nm\": \"삼오녀\", \"date2\": \"20260108\", \"C1200_fp_nm2\": \"data:image/png;base64,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\", \"C1200_fp_nm_sign\": \"data:image/png;base64,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\" } },\n \"C1100\": { inputJson: { \"C1100_insurance_num\": \"300041827\", \"C1100_ozformlist\": \"청약서\\n상품설명서 회사보관용\\n청약부속정보확인서\\n보험계약대출 정보동의서\\n계약전알릴의무사항 (일반+ 태아고지용)\\n전자서명에 의한 보험계약체결 동의서\\n고객권리 안내문\\n개인(신용)정보제공 동의서\\n상품소개동의서(상세)\\n완전판매안내 확인서\\n대면설명 확인서\\n금융소비자보호를 위한 계약체결 고지의무 확인서\", \"Date\": \"20260108\", \"C1100_fp_nm\": \"data:image/png;base64,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\", \"C1100_fp_nm_sign\": \"data:image/png;base64,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\" } }\n}\n\n\n/** 테스트용 증번 */\nexport const policyNumber = '300034894';\n/** 테스트용 FP 정보 */\nexport const fpInfo = { uniqNo: '2210000' };\n/** 테스트용 청약작성자목록 - 계약 관계자 코드 */\nexport const roleCode = `[{\"roleCode\":\"FP\",\"name\":\"동구시\",\"psatAbscDvsnCode\":null},{\"roleCode\":\"11\",\"name\":\"삼오녀\",\"psatAbscDvsnCode\":null}]`\n/** 테스트용 native에 전달할 X-DUD-Authorization 토큰 */\nexport const xdudheaders = `Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJaT1BRdk5nSkhMNkVYU2pkaXIxNU1PRURIa0MwbTdUelIrWS9HNzZ4Vm9XZHIvR0MiLCJpYXQiOjE3NjY0Njc4MDksImV4cCI6MTc5ODAwMzgwOX0.gQmPoBU-yXo2q2nJW4yOIJyYb0YPf42shGcFnRHnzjQ`;","/**\n * `Promise.withResolvers()` 폴리필\n */\nexport function PromiseWithResolvers<T>() {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason?: unknown) => void;\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return { promise, resolve, reject };\n}\n\n/**\n * 주어진 입력값이 배열이 아니면 빈 배열을 반환하고, 배열이면 깊은 복사하여 반환합니다.\n *\n * @param arg - 입력값으로, 배열일 수도 있고 아닐 수도 있습니다.\n * @returns 주어진 입력값이 배열이면 깊은 복사본을 반환하고, 배열이 아니면 빈 배열을 반환합니다.\n */\nexport function ensureArray<T>(arg?: T[]): T[] {\n return (Array.isArray(arg) ? DeepCopy(arg) : []);\n}\n\n/**\n * 주어진 객체를 깊은 복사하여 새로운 복사본을 반환합니다.\n * - 내부 유틸용이라 export 하지 않았음\n *\n * @param arg - 깊은 복사를 원하는 객체\n * @returns 주어진 객체의 깊은 복사본\n */\nexport function DeepCopy<T>(arg: T): T {\n return JSON.parse(JSON.stringify(arg)) as T;\n}\n","import { Bridge } from \"sales-frontend-bridge\";\n\nimport type { DownloadOzdOptions } from \"sales-frontend-bridge\";\n\n\n/**\n * ozd, 폰트 등 App 내 리소스를 fetch하는 브릿지 유틸\n */\n\n/**\n * OZD 목록을 다운받는 브릿지\n */\nexport async function fetchDocument(args: DownloadOzdOptions) {\n // 브릿지에 다운로드 요청\n const { data: result } = await Bridge.native.downloadDocument(args);\n\n // start,end 페이지 매핑\n return result.data.map((i) => ({ ...i, startPage: 0, endPage: 0 }));\n}\n\n/**\n * App에 설치된 폰트를 Oz Param 형식으로 불러오는 브릿지\n */\nexport async function fetchFont() {\n const { data: fontMap } = await Bridge.native.getOzFontParam();\n\n const fontParms = Object.keys(fontMap).map((i) => `font.${i}=${fontMap[i]}`);\n\n return fontParms;\n}","import { Bridge } from \"sales-frontend-bridge\";\n\nimport { PromiseWithResolvers } from '../../../internal';\nimport { OZViewerEvent } from '../../types';\n\nimport { AlertTemporaryError } from './alert-util';\n\n/**\n * OZ 뷰어 함수를 단순 래핑한 브릿지 유틸\n */\n\n/**\n * OZ Viewer 생성 함수\n * 1. `CreateReport` 함수 호출하여 OZ 리포트 생성\n * 2. `OZProgressCommand` 이벤트가 `ozd` 개수만큼 발생\n * 3. `OZProgressCommand` 이벤트 내부에서 `OZReportCreated` 이벤트 발행\n * 4. `CreateOzViewer` 이벤트가 종료\n */\nexport async function CreateOzViewer(ozParam: string[]) {\n const { promise, resolve, reject } = PromiseWithResolvers();\n\n const handleTimeout = () => {\n // 이벤트리스너 제거\n window.removeEventListener(OZViewerEvent.OZReportCreated, handleOZCreated);\n // promise reject 처리\n reject(new Error(\"createOZViewer TimeOut\"));\n };\n // 3분 대기 후 이벤트가 종료되지 않으면 에러 처리\n const timeout = setTimeout(handleTimeout, 1000 * 60 * 3);\n\n const handleOZCreated = (e: Event) => {\n // 성공 시 타이머 해제\n clearTimeout(timeout);\n resolve(e);\n };\n\n window.addEventListener(\n OZViewerEvent.OZReportCreated,\n // OZReportCreated가 트리거되면 promise resolve 처리\n handleOZCreated,\n // 이벤트 리스너는 한 번만 실행되도록 설정\n { once: true }\n )\n\n try {\n await Bridge.native.createOZViewer({ param: ozParam.join(\"\\n\") });\n\n return await promise;\n } catch (e) {\n // createOZViewer 자체가 에러가 발생한경우 타이머 초기화\n clearTimeout(timeout);\n // 일시적인 오류가 발생했습니다\n await AlertTemporaryError();\n // 오즈뷰어 초기화에 실패했으므로 오즈뷰어 종료\n await Bridge.native.hideOZViewer();\n }\n}\n\n/**\n * 특정 페이지로 스크롤 이동\n */\nexport async function MovePage(page: number) {\n return await Bridge.nativeOz.script({ command: `movepage=${page}` });\n}\n\n/**\n * 현재 페이지 번호를 구한다(one base index)\n */\nexport async function getCurrentPage() {\n const { data } = await Bridge.nativeOz.getInformation({ command: `CURRENT_PAGE` })\n if (data === null) {\n throw new Error(`Bridge returned null for command: CURRENT_PAGE`);\n }\n\n return Number(data);\n}\n\n/**\n * 랜딩되어있는 보고서들의 전체 페이지 수\n */\nexport const getTotalPageMemo = (() => {\n // ✅ 전체 페이지수를 캐싱\n let cache: Promise<number> | null = null;\n\n async function getTotalPage(): Promise<number> {\n if (cache) {\n // 캐시에 이미 결과(Promise)가 있다면 재사용\n return cache;\n }\n // ⚙️ 네이티브 호출을 Promise로 감싸서 즉시 캐시에 저장\n // (중복 요청을 방지하기 위함)\n cache = (async () => {\n try {\n const { data } = await Bridge.nativeOz.getInformation({ command: 'TOTAL_PAGE' });\n\n return Number(data);\n } catch (e) {\n // ⚠️ 호출 실패 시 캐시에서 제거하여 다음 요청 시 재시도 가능하도록 함\n cache = null;\n throw e;\n }\n })();\n\n return await cache;\n }\n\n // 캐시 초기화 함수\n getTotalPage.clearCache = () => {\n cache = null;\n };\n\n return getTotalPage;\n})();\n\n/**\n * 랜딩되어있는 보고서의 총 갯수(ozd 파일의 갯수)\n */\nexport const getReportCountMemo = (() => {\n // ✅ 보고서의 총 갯수(ozd 파일의 갯수)를 캐싱\n let cache: Promise<number> | null = null;\n\n async function getReportCount(): Promise<number> {\n if (cache) {\n return await cache;\n }\n // ⚙️ 네이티브 호출을 Promise로 감싸서 즉시 캐시에 저장\n // (중복 요청을 방지하기 위함)\n cache = (async () => {\n try {\n const { data } = await Bridge.nativeOz.getInformation({ command: 'REPORT_COUNT' });\n if (data === null) {\n throw new Error(`Bridge returned null for command: REPORT_COUNT`);\n }\n\n return Number(data);\n } catch (e) {\n // ⚠️ 호출 실패 시 캐시에서 제거하여 다음 요청 시 재시도 가능하도록 함\n cache = null;\n throw e;\n }\n })();\n\n return await cache;\n }\n\n // 캐시 초기화 함수\n getReportCount.clearCache = () => {\n cache = null;\n };\n\n return getReportCount;\n})();\n","import { Bridge } from \"sales-frontend-bridge\";\n\nimport { ensureArray } from '../../../internal';\nimport { commonOzParam } from '../../constant';\nimport { OZTriggerExternalEvent } from '../../types';\n\nimport { fetchFont } from './fetch-util';\nimport { getReportCountMemo } from './oz-wrapper-util';\n\nimport type { ExtraDataType } from '../../types';\nimport type { OzdFile } from \"sales-frontend-bridge\";\n\n\n/**\n * OZ 리포트 생성 및 초기화에 필요한 브릿지 유틸\n */\n\ntype CreateOzParamProps = {\n documentList: OzdFile[];\n extraData?: ExtraDataType;\n /**\n * 모든 문서에 공통으로 적용할 args\n * - connection.arg로 전달할 `[\"key1=value1\", \"key2=value2\"]` 형식의 데이터\n */\n commonArgs?: ExtraDataType[string][\"args\"];\n /**\n * 모든 문서에 공통으로 적용할 추가 파라미터 목록\n * - `[\"connection.pcount=1\"]`\n */\n commonExtraParams?: ExtraDataType[string][\"extraParam\"];\n /**\n * 청약을 작성하는 사람들의 roleCode 목록\n *\n * ex)`[{\"roleCode\":\"FP\",\"name\":\"동구시\",\"psatAbscDvsnCode\":null},{\"roleCode\":\"11\",\"name\":\"김여명\",\"psatAbscDvsnCode\":null}]`\n */\n roleCd: string;\n /**\n * 지정대리인 정보\n * - 지정대리인이 없을때 ''\n * - 지정대리인이 1명일때 ex) `성명|주민등록번호|관계명|관계코드`\n * - `connection.args3=jijungInfo=김이박|9201111mLLNeL|배우자|02`\n * - 지정대리인이 2명일때 ex) `성명|주민등록번호|관계명|관계코드`,`성명|주민등록번호|관계명|관계코드`\n */\n jijungInfo?: string;\n}\n/**\n * OZ 리포트 최초 생성시 OZ에 넘길 파라미터를 생성하는 함수\n */\nexport async function CreateOzParam({ documentList, extraData = {}, commonArgs = [], commonExtraParams = [], roleCd, jijungInfo = '' }: CreateOzParamProps) {\n if (documentList.length === 0) {\n throw new Error('문서목록이 비어있습니다');\n }\n const fontParms = await fetchFont();\n const connectionParams = documentList.map(({ filePath }, idx) =>\n idx === 0 ? `connection.openfile=${filePath}` : `child${idx}.connection.openfile=${filePath}`\n );\n const childCount = documentList.length - 1;\n const extraParams = documentList.map((ozdFile, idx) => {\n const result: string[] = [];\n\n // 파일 이름에서 경로 및 확장자 제거 (ex: \"A0010.ozd\" → \"A0010\")\n const docCode = ozdFile.docCode.replace(/^.*[\\\\/]|(\\.[^/.]+)$/g, '');\n\n const prefix = idx === 0 ? '' : `child${idx}.`;\n\n // 문서코드에 바인딩할 데이터가 있는지 확인\n const data = extraData[docCode] || {};\n\n if (data.inputJson) {\n result.push(`${prefix}connection.inputjson=${JSON.stringify(data.inputJson)}`);\n }\n\n // args로 전달할 param이 있으면 반영\n const args = [\n // 모든 서식에 공통으로 필요한 docCd param 추가\n `docCd=${docCode}`,\n // 모든 서식에 공통으로 필요한 roleCode 정보 추가\n `roleCd=${roleCd}`,\n // 모든 서식에 공통으로 필요한 지정대리인 정보 추가\n `jijungInfo=${jijungInfo}`,\n // 모든 서식에 공통으로 필요한 TABLET 구분값 정보 추가\n `TABLET=11`,\n // 모든 서식에 공통으로 필요한 추가 args\n ...commonArgs,\n // 특정 서식에 필요한 추가 args\n ...ensureArray(data.args)\n ];\n args.forEach((arg, idx) => result.push(`${prefix}connection.args${idx + 1}=${arg}`));\n\n // 그 외 추가 파라미터 목록이 있으면 반영\n const extraParam = [\n // connection.args의 갯수만큼 pcount 보정\n `connection.pcount=${args.length}`,\n // 모든 서식에 공통으로 필요한 추가 파라미터\n ...commonExtraParams,\n // 특정 서식에 필요한 추가 파라미터\n ...ensureArray(data.extraParam)\n ];\n extraParam.forEach((param) => (result.push(`${prefix}${param}`)))\n\n return result;\n });\n\n // createReport용 ozParam\n const params = [\n ...(childCount > 0 ? [`viewer.childcount=${childCount}`] : []),\n ...connectionParams,\n ...commonOzParam,\n ...fontParms,\n ...extraParams.flat(1)\n ];\n\n return params;\n}\n\n/**\n * 모든 문서에 대해 checkeForm을 Y로 설정하는 명령을 순차적으로 한 번씩 호출합니다.\n * \n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function setCheckEform(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n for (let i = 0; i < count; i++) {\n await Bridge.nativeOz.setGlobal({ key: 'checkeForm', value: 'Y', docIndex: i })\n }\n}\n\n/**\n * 모든 문서에 대해 INPUT_TRIGGER_CLICK 명령을 순차적으로 한 번씩 호출합니다.\n * \n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function triggerClickOnAllDocuments(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n for (let i = 0; i < count; i++) {\n const command = `INPUT_TRIGGER_CLICK_AT=${i}`;\n await Bridge.nativeOz.getInformation({ command });\n }\n}\n\n/**\n * 모든 문서에 대해 서명 부분 이미지 컷팅 명령을 순차적으로 한 번씩 호출합니다.\n *\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function triggerCropImageOnAllDocuments(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n for (let i = 0; i < count; i++) {\n // 사인 이미지 크롭처리\n await Bridge.nativeOz.triggerExternalEventByDocIndex({ param1: OZTriggerExternalEvent.CropImage, docIndex: Number(i) });\n }\n}\n\n/**\n * 모든 문서에 대해 전체 페이지 수를 계산하는 명령을 순차적으로 한 번씩 호출합니다.\n *\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function getTotalPageOnAllDocuments(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n const totalPages = [];\n for (let i = 0; i < count; i++) {\n const command = `TOTAL_PAGE_OF_REPORT_FILE_AT=${i}`\n const { data } = await Bridge.nativeOz.getInformation({ command });\n totalPages.push(Number(data));\n }\n\n return totalPages;\n}","import { Bridge } from \"sales-frontend-bridge\";\n\nimport { OZTriggerExternalEvent } from \"../../types\";\n\n\ntype OzDraftRequest = Record<string, string> & { docCd: string };\n\n/**\n * OZ에서 getDraftData 요청 시 반환할 데이터를 생성하는 함수\n * \n * - OZ로부터 전달받은 JSON 문자열(`arg`)을 파싱하여 문서 코드(docCd)를 추출하고,\n * 해당 문서의 JSON 정보를 가져와 필요한 사인 정보만 key-value 형태로 반환한다.\n * - 사인FormId 값이 null일 경우, getInformation 결과로 채워진다.\n */\nexport async function getDraftDataHandler(\n rawOzRequest: string,\n documentIndexMap: Record<string, number>\n) {\n // 1️⃣ OZ에서 전달된 요청 데이터 파싱\n const parsedRequest = JSON.parse(rawOzRequest) as OzDraftRequest;\n // 문서코드와 formId:null 형태의 객체를 추출\n const { docCd, ...signKeyMap } = parsedRequest;\n\n // 2️⃣ 문서 코드(docCd)에 해당하는 글로벌 인덱스 조회\n const documentIndex = documentIndexMap[docCd];\n if (documentIndex === undefined) {\n throw new Error(`Invalid document code: ${docCd}`);\n }\n\n // 3️⃣ Bridge를 통해 해당 문서의 JSON 데이터 조회\n const { data } = await Bridge.nativeOz.getInformation({ command: `INPUT_JSON_AT=${documentIndex}` });\n if (data === null) {\n throw new Error(`Bridge returned null for document: ${docCd} (command=INPUT_JSON_AT=${documentIndex})`);\n }\n const documentJson = JSON.parse(data);\n\n // 4️⃣ 필요한 사인 정보만 key-value 형태로 반환\n const signDataMap = Object.keys(signKeyMap).reduce((acc, key) => {\n acc[key] = documentJson[key];\n\n return acc;\n }, {} as Record<string, string>);\n\n return { signDataMap, docCd };\n}\n\n/**\n * 주어진 문서 인덱스 목록(`indexList`)에 대해\n * 각 문서의 중간저장 데이터를 순차적으로 요청합니다.\n *\n * @param indexList - 중간저장 데이터를 요청할 문서의 인덱스 배열\n */\nexport async function triggerDraftDataByIndexList(indexList: number[]) {\n for (let i = 0; i < indexList.length; i++) {\n await Bridge.nativeOz.triggerExternalEventByDocIndex({ param1: OZTriggerExternalEvent.GetDraftData, docIndex: indexList[i]!, });\n }\n}","import { Bridge } from \"sales-frontend-bridge\";\n\nimport { getReportCountMemo } from './oz-wrapper-util';\n\n/**\n * 서식 검증 시, 빈 서식에 포커스를 줄지 제어하는 브릿지 유틸\n */\n\n/**\n * 유효성 검사 시 미입력된 컴포넌트에 포커스 설정 여부를 지정\n * \n * @param enable - true면 포커스 활성화, false면 비활성화\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nasync function setFocusOnValidation(enable: boolean, reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n const expectedValue = enable ? '1' : '0';\n\n const { data: prev } = await Bridge.nativeOz.getGlobal({ key: 'chkFlag', docIndex: 0 });\n\n // 첫번째 doc에 대해서 기 입력된 값을 검사해서 일치하면 조기탈출\n if (prev === expectedValue) {\n return;\n }\n\n for (let i = 0; i < count; i++) {\n await Bridge.nativeOz.setGlobal({ key: 'chkFlag', value: expectedValue, docIndex: i });\n }\n\n return;\n}\n\n/**\n * 유효성 검사 시 미입력된 컴포넌트에 자동으로 포커스를 맞추도록 설정\n * \n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function enableFocusOnValidation(reportCount?: number) {\n return setFocusOnValidation(true, reportCount);\n}\n\n/**\n * 유효성 검사 시 미입력된 컴포넌트에 포커스가 가지 않도록 설정\n * \n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function disableFocusOnValidation(reportCount?: number) {\n return setFocusOnValidation(false, reportCount);\n}\n","import { Bridge } from \"sales-frontend-bridge\";\n\nimport { PromiseWithResolvers } from '../../../internal';\nimport { commonPdfExportParam } from \"../../constant\";\nimport { OZExportEvent, OZViewerEvent } from \"../../types\";\n\nimport { getTotalPageMemo } from \"./oz-wrapper-util\";\n\nimport type { OzdFile } from \"sales-frontend-bridge\";\n\n\n/**\n * PDF 저장을 비동기적으로 처리하고, 저장된 파일 경로를 반환하는 함수\n * - OZD 전체를 하나의 PDF로 저장\n */\nexport async function SaveTotalPdf(policyNumber: string, fileName: string) {\n\n // 1페이지부터\n const startPage = 1;\n // 전체 페이지 수 가져오기\n const endPage = await getTotalPageMemo();\n\n return await SavePdf({ policyNumber, fileName, startPage, endPage });\n\n}\n\n/**\n * PDF 저장을 비동기적으로 처리하고, 저장된 파일 경로를 반환하는 함수\n * - 개별 OZD를 PDF로 저장하는 함수\n */\nexport async function SaveSinglePdf(\n policyNumber: string,\n { startPage, endPage, docCode: fileName }: OzdFile\n) {\n\n return await SavePdf({ policyNumber, fileName, startPage, endPage });\n}\n\n\ntype SavePdfProps = Pick<OzdFile, \"startPage\" | \"endPage\"> & {\n /** 증권번호 */\n policyNumber: string;\n /** PDF 파일이름(확장자 제외) */\n fileName: string;\n}\nasync function SavePdf({ policyNumber, fileName, startPage, endPage }: SavePdfProps) {\n // CustomEvent로부터 전달될 파일 경로를 기다리기 위한 Promise 생성\n const { promise, resolve } = PromiseWithResolvers<string>();\n\n // OZExportCommand 이벤트가 발생하면, 파일 경로를 resolve하여 Promise 완료\n window.addEventListener(\n OZViewerEvent.OZExportCommand,\n // 이벤트를 CustomEvent로 타입 캐스팅하고, detail에서 파일 경로 추출\n (e: Event) => resolve((e as CustomEvent<OZExportEvent>).detail.filepaths),\n // 이벤트 리스너는 한 번만 실행되도록 설정\n { once: true }\n );\n\n\n // OZ 브릿지를 통해 PDF 저장 명령 실행\n await Bridge.nativeOz.savePdf({\n // PDF 저장은 증번폴더/파일이름.pdf로 생성\n policyNumber,\n param: [\n // 저장할 파일명 설정\n `pdf.filename=${fileName}.pdf`,\n // 1페이지부터 마지막 페이지까지 저장\n `export.pages=${startPage}-${endPage}`,\n // 공통 PDF 내보내기 파라미터 추가\n ...commonPdfExportParam\n ].join('\\n')\n });\n\n // OZExportCommand 이벤트로부터 전달된 파일 경로를 기다림\n const filepath = await promise;\n\n // 최종적으로 파일 경로 반환\n return filepath;\n}","import { Bridge } from \"sales-frontend-bridge\";\n\nimport { getTotalPageMemo } from './oz-wrapper-util';\n\n/**\n * OZ 서식 검증용 브릿지 유틸\n */\n\n/**\n * 유효성을 체크할 doc들의 index를 배열로 입력받는다\n *\n * 모두 유효하면 true를 리턴한다\n *\n * documentInfo의 complete를 계산할때 사용한다\n *\n * 서명패드가 열려있는 상태에서 INPUT_CHECK_VALIDITY로 검사하면 서명패드가 꺼져서 onValueChange에서는 INVALID_INFO_JSON을 사용한다\n */\nexport async function checkDocumentsValidityByIndex(indexList: number[]) {\n // INVALID_INFO_JSON_AT은 valid한 경우 ''를 리턴한다\n const VALID = '';\n for (let i = 0; i < indexList.length; i++) {\n const command = `INVALID_INFO_JSON_AT=${indexList[i]}`;\n const { data } = await Bridge.nativeOz.getInformation({ command });\n\n if (data !== VALID) {\n // 유효하지 않으면 조기탈출\n return false;\n }\n }\n\n return true\n}\n\n/**\n * 지정된 페이지 범위에 대해 유효성 검사를 수행합니다.\n *\n * 유효성 검사는 1페이지부터 지정된 마지막 페이지까지 진행되며,\n * - pageChange 이벤트 내부에서는 현재 페이지 이전까지만 검사\n * - 서명바로가기, 미입력 서명 바로가기, 청약문서 최종 확인하기 버튼을 눌렀을때는 전체 페이지 검사\n *\n * @param pageCount - 유효성 검사를 수행할 페이지의 총 개수. (생략하면 자동으로 전체 페이지 수를 계산하여 사용)\n * @returns 모든 페이지가 유효한 경우 true, 하나라도 유효하지 않으면 false를 반환합니다.\n */\nexport async function validateAllPages(pageCount?: number) {\n // pageCount가 주어지지 않으면 전체 페이지 수를 계산하여 사용\n const count = pageCount ?? await getTotalPageMemo();\n\n for (let i = 1; i <= count; i++) {\n // 캐시 기반 validation 검사\n const isValid = await checkValidPageMemo(i);\n\n // 페이지 유효성 검사가 실패하면 즉시 종료\n if (!isValid) {\n return false;\n }\n }\n\n // 모든 페이지가 유효한 경우 true 반환\n return true;\n}\n\n\n/**\n * 페이지 유효성 검사 결과를 캐싱하는 유틸리티\n *\n * - 동일 페이지에 대한 중복 호출을 방지\n * - validation 결과가 false인 경우에는 캐시에 저장하지 않음\n */\nexport const checkValidPageMemo = (() => {\n // ✅ 페이지 번호를 키로 사용하여 Promise<boolean> 형태로 결과를 캐싱\n const cache = new Map<number, Promise<boolean>>();\n\n /**\n * 주어진 페이지가 유효한지 검사\n *\n * @param page 검사할 페이지 번호\n * @returns 페이지 유효 여부 (Promise<boolean>)\n */\n async function checkValidPage(page: number): Promise<boolean> {\n const cached = cache.get(page);\n if (cached) {\n // 캐시에 이미 결과(Promise)가 있다면 재사용\n return cached;\n }\n\n const VALID = 'valid';\n const command = `INPUT_CHECK_VALIDITY_PAGE_AT=${page}`;\n\n // ⚙️ 네이티브 호출을 Promise로 감싸서 즉시 캐시에 저장\n // (중복 요청을 방지하기 위함)\n const promise = (async () => {\n try {\n const { data } = await Bridge.nativeOz.getInformation({ command });\n const isValid = data === VALID;\n\n // ❌ 유효하지 않은(false) 결과는 캐시에 저장하지 않음\n if (!isValid) {\n cache.delete(page);\n }\n\n return isValid;\n } catch (err) {\n // ⚠️ 호출 실패 시 캐시에서 제거하여 다음 요청 시 재시도 가능하도록 함\n cache.delete(page);\n throw err;\n }\n })();\n\n // ⏳ 진행 중인 Promise를 캐시에 저장 (중복 호출 방지)\n cache.set(page, promise);\n\n // 결과 반환\n return promise;\n }\n\n /**\n * 전체 캐시를 초기화합니다.\n */\n checkValidPage.clearCache = () => {\n cache.clear();\n };\n\n /**\n * 특정 페이지의 캐시만 삭제합니다.\n * \n * @param page 삭제할 페이지 번호\n */\n checkValidPage.clearCacheByPage = (page: number) => {\n cache.delete(page);\n };\n\n return checkValidPage;\n})();\n","import { DeepCopy } from \"../../internal\";\n\nimport type { FormInfo } from \"sales-frontend-bridge\";\n\n/**\n * 문서 데이터에 페이지 범위를 채워주는 함수\n * @param {Array} data - 문서 그룹 데이터\n * @param {Array<number>} pages - 각 문서의 페이지 수\n * @returns {Array} - startPage, endPage가 채워진 새 데이터\n */\nexport function categorizeByPageRange(data: FormInfo[], pageCounts: number[]) {\n let currentPage = 1;\n let pageIndex = 0;\n\n // 깊은 복사로 원본 변형 방지\n const result = DeepCopy(data);\n\n result.forEach(group => {\n group.startPage = currentPage;\n\n group.doc.forEach(doc => {\n const pageCount = pageCounts[pageIndex++]!;\n doc.startPage = currentPage;\n doc.endPage = currentPage + pageCount - 1;\n currentPage += pageCount;\n });\n\n group.endPage = group.doc[group.doc.length - 1]!.endPage;\n });\n\n return result;\n}","import { debounce } from 'sales-frontend-utils';\n\n/**\n * 📘 ValueChangeDebounceUtil\n *\n * 문서의 OnValueChange 이벤트를 debounce 처리하기 위한 유틸\n *\n * - 동일한 문서 인덱스에서 연속 호출 시 debounce\n * - 다른 문서 인덱스는 독립적으로 debounce 처리\n */\n\n// 문서 인덱스별로 debounce 핸들러를 저장\nconst valueChangeDebounceMap = new Map<string, ReturnType<typeof debounce>>();\n\n/**\n * 특정 문서 인덱스의 OnValueChanged 핸들러를 debounce 처리하여 반환\n *\n * @param docIndex - 문서 인덱스 (string)\n * @param onValueChanged - debounce 후 실행할 콜백\n * @returns debounce된 핸들러 함수\n */\nexport function getDebouncedValueChangeHandler(\n docIndex: string,\n onValueChanged: (docIndex: string) => void\n) {\n // 서명패드에 수정이 일어나면 0.5초동안 디바운스 처리\n const DEBOUNCE_DELAY = 1000 * 0.5;\n\n // 이미 debounce된 핸들러가 있다면 그대로 사용\n const existingHandler = valueChangeDebounceMap.get(docIndex);\n if (existingHandler) {\n return existingHandler;\n }\n\n // 새로운 debounce 핸들러 생성\n const debouncedHandler = debounce((idx: string) => {\n onValueChanged(idx);\n }, DEBOUNCE_DELAY);\n\n valueChangeDebounceMap.set(docIndex, debouncedHandler);\n\n return debouncedHandler;\n}\n\n/**\n * 모든 문서 인덱스의 debounce 핸들러 초기화\n */\nexport function clearValueChangeDebounceHandlers() {\n valueChangeDebounceMap.clear();\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/oz/constant/comment-pen-param.ts","../src/oz/constant/oz-param.ts","../src/oz/constant/pdf-param.ts","../src/oz/hooks/use-document-info.tsx","../src/oz/hooks/use-oz-event-listener.tsx","../src/oz/types/oz-event.types.ts","../src/oz/utils/bridge-util/alert-util.ts","../src/internal/const/test-data.ts","../src/internal/utils/internal-common-utils.ts","../src/oz/utils/bridge-util/fetch-util.ts","../src/oz/utils/bridge-util/oz-wrapper-util.ts","../src/oz/utils/bridge-util/create-report-util.ts","../src/oz/utils/bridge-util/get-draft-data-util.ts","../src/oz/utils/bridge-util/focus-util.ts","../src/oz/utils/bridge-util/save-pdf-util.ts","../src/oz/utils/bridge-util/validation-util.ts","../src/oz/utils/common-util.ts","../src/oz/utils/value-change-debounce-util.ts"],"names":["useMemo","ozdFile","useCallback","useEffect","OZViewerEvent","OZTriggerExternalEvent","Bridge","idx","debounce"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * 형광펜 편집 관련 상수\n */\n\n/** 형광펜을 사용하는경우 공통 파라미터 */\nconst commentPenDefaultParam = [\n `comment.selectedpen=highlightpen`,\n `comment.highlightpen_thick=15`,\n]\n\n/** 노란색 형광펜 설정 */\nexport const commentPenYellow = [...commentPenDefaultParam, `comment.highlightpen_color=ffd900`];\n/** 분홍색 형광펜 설정 */\nexport const commentPenPink = [...commentPenDefaultParam, `comment.highlightpen_color=f48fb1`];\n/** 초록색 형광펜 설정 */\nexport const commentPenGreen = [...commentPenDefaultParam, `comment.highlightpen_color=81c784`];\n/** 지우개 설정 */\nexport const commentPenEraser = [`comment.selectedpen=eraser`,];","/**\n * 모든페이지 공용으로 쓰는 OZ 뷰어파라미터\n */\n\nconst informationOzParam = [\n // 뷰어 콘솔 로그 정보의 수준(Level)을 설정합니다. - 뷰어 수행에 필요한 디버깅용 메시지를 자바 콘솔에 출력\n `information.debug = true`,\n];\nconst globalOzParam = [\n // 다중 보고서 호출 시 부모 보고서의 파라미터 값을 자식 보고서가 상속받을지 여부를 설정합니다.\n `global.inheritparameter=true`,\n // 멀티 보고서를 하나의 보고서처럼 사용할지 여부를 설정합니다.\n `global.concatpage=true`,\n // 멀티 보고서를 하나의 보고서처럼 설정한 경우 각각의 보고서별로 페이지 번호를 부여할지 여부를 설정합니다.\n // `global.eachpagenumberatconcatpage=true`,\n];\nconst eformOzParam = [\n `eform.signpad_type=embedded`,\n // `eform.signpad_type=keypad`,\n `eform.show_prev_next_input=true`,\n // `eform.signpad_prev_next_iconposition=sign_top_left`,\n `eform.signpad_prev_next_iconposition=sign_top`,\n `eform.signpad_show_draw_erase_button=false`,\n `eform.signpad_viewtype=keepratioandfittoframe`,\n `eform.radiobutton_type=ensurevisible_at_prev_next`,\n `eform.checkbox_type=ensurevisible_at_prev_next`,\n `eform.prev_next_required_rule=required_only`,\n `eform.prev_next_navigation_rule=required_only`,\n `eform.prev_next_constraint_rule=empty_only`,\n `eform.imagepicker_camera_iconposition = camera_top`,\n `eform.inputeventcommand=true`,\n // 서명 입력 중간중간에 onValueChanged가 호출 / 디폴트는 입력끝나고 창이 닫힐때 호출\n `eform.onvaluechanged_callrule_json=${JSON.stringify({ signpad: 'changed' })}`,\n `eform.inputcomponent_toolbar_button_json=${JSON.stringify({\n // 서명패드 버튼 배열 수정\n \"all\": {\n // 왼쪽에 [이전, 창닫기]\n \"left_align\": \"prev,ok\",\n // 오른쪽에 [다시쓰기, 성명,서명 불러오기, 다음]\n \"right_align\": \"clear,reusablesign,next\"\n }\n })}`,\n `eform.imagepicker_id_info=${JSON.stringify({\n ids: [\n {\n id: '1',\n name: '운전면허증_최신',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '주민번호', area: '0,0,0,0' },\n { name: '운전면허번호', area: '0,0,0,0' },\n { name: '발급번호', area: '0,0,0,0' },\n { name: '발급날짜', area: '0,0,0,0' }\n ]\n },\n {\n id: '2',\n name: '운전면허증_구형',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '주민번호', area: '0,0,0,0' },\n { name: '운전면허번호', area: '0,0,0,0' },\n { name: '발급번호', area: '0,0,0,0' },\n { name: '발급날짜', area: '0,0,0,0' }\n ]\n },\n {\n id: '3',\n name: '주민등록증',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '주민번호', area: '0,0,0,0' },\n { name: '발급날짜', area: '0,0,0,0' }\n ]\n },\n {\n id: '4',\n name: '외국인등록증 앞면',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '외국인등록번호1', area: '0,0,0,0' },\n { name: '외국인등록번호2', area: '0,0,0,0' },\n { name: '성명', area: '0,0,0,0' },\n { name: '성별', area: '0,0,0,0' },\n { name: '국가지역', area: '0,0,0,0' },\n { name: '체류자격', area: '0,0,0,0' },\n { name: '발급일자', area: '0,0,0,0' }\n ]\n },\n { id: '5', name: '외국인등록증 뒷면', size: '86x54', margin: '3', mask: [{ name: '외국인', area: '0,0,0,0' }] }\n ],\n choice: { title: '신분증을 선택하세요.', items: '1,2,3,4,5' }\n })}`\n];\n\nconst viewerOzPram = [\n `viewer.pagenavigate_by_prev_next=true`,\n `viewer.zoombymouse=false`,\n `viewer.zoombydoubletap=false`,\n `viewer.pagedisplay=singlepagecontinuous`,\n `viewer.usetoolbar=false`,\n `viewer.usestatusbar=false`,\n `viewer.useprogressbar=false`,\n `viewer.zoom=137`,\n `viewer.viewmode=fittowidth`,\n `viewer.hidehorizontalscroll=false`,\n `viewer.progresscommand=true`,\n `viewer.pagechangecommand=true`,\n `viewer.exportcommand=true`,\n `viewer.errorcommand=true`,\n `viewer.reportchangecommand=true`,\n `viewer.pagebindcommandinterval=500`,\n];\n\nconst ozdOzParam = [\n // connection.args=key=value로 넘기는 정보들은 ozr에서만 유효하나 ozd에서도 유효하도록 허용\n `ozd.allowreplaceformparam=true`\n]\n\nexport const commonOzParam = [\n ...informationOzParam,\n ...globalOzParam,\n ...eformOzParam,\n ...viewerOzPram,\n ...ozdOzParam,\n];","/**\n * PDF export시 공통으로 필요한 파라미터\n *\n * 제공하지 않는 파라미터\n * - filename\n * - ex) `pdf.filename=test.pdf`\n * - pages\n * - ex) `export.pages=1-2`\n * - userpassword\n * - ex) `pdf.userpassword=123213`\n */\nexport const commonPdfExportParam = [\n // `pdf.filename=${\"test.pdf\"}`,\n // `export.pages=${i.startPage}-${i.endPage}`,\n // \"pdf.userpassword=$pdfPassword\",G\n 'export.pagerange=range',\n 'export.confirmsave=false',\n 'export.mode=silent',\n // pdf에 폰트를 포함시킨다\n `pdf.fontembedding=true`,\n // 폰트를 포함시킬때 사용하는 글자만 포함시킨다\n `pdf.fontembedding_subset=true`\n];","import { useMemo } from \"react\";\n\nimport type { FormInfo } from \"sales-frontend-bridge\";\n\n/**\n * documentInfo를 여러가지 형태로 가공해주는 hook\n */\nexport function useDocumentInfo(initialValue: FormInfo[]) {\n\n /** 서식 목록 */\n const documentInfo = initialValue;\n\n /** 글로벌 문서 목록 */\n const documentList = useMemo(() => documentInfo.map((i) => i.doc).flat(1), [documentInfo]);\n\n /** 글로벌 문서 맵 { 문서코드: 글로벌 인덱스} */\n const documentIndexMap = documentList.reduce((acc, cur, index) => {\n acc[cur.docCode] = index;\n\n return acc;\n }, {} as Record<string, number>)\n\n /** 글로벌 문서 맵 { 문서코드: 속한 서식 } */\n const documentTemplateMap = useMemo(() => documentInfo.reduce((map, template) => {\n template.doc.forEach(ozdFile => {\n map[ozdFile.docCode] = { ...template };\n });\n\n return map;\n\n }, {} as Record<string, FormInfo>), [documentInfo]);\n\n // 글로벌 문서 맵 { 서식이름: 서식 }\n const nameTemplateMap = documentInfo.reduce((acc, doc) => {\n acc[doc.name] = doc;\n\n return acc;\n }, {} as Record<string, FormInfo>);\n\n // 글로벌 문서 배열 { 글로벌인덱스: [동료서식 글로벌인덱스, 동료서식 글로벌인덱스] }\n const groupIndexes = useMemo(() => (\n documentInfo.reduce((acc, item) => {\n item.doc.forEach((ozdFile) => {\n const currentIndex = documentIndexMap[ozdFile.docCode] as number;\n\n // 각 globalIndex에 해당하는 그룹 인덱스를 추가\n if (!acc[currentIndex]) {\n acc[currentIndex] = []; // 배열로 초기화\n }\n\n // 해당 파일이 속한 그룹의 인덱스를 추가\n item.doc.forEach((ozdFile) => {\n acc[currentIndex]!.push(documentIndexMap[ozdFile.docCode]!);\n });\n });\n\n return acc;\n }, [] as Array<Array<number>>)\n ), [documentIndexMap, documentInfo]);\n\n // 모든 서식이 완료되었는지 확인\n const isAllComplete = useMemo(() => (documentInfo.every(i => i.complete)), [documentInfo]);\n\n return {\n documentList,\n documentTemplateMap,\n documentIndexMap,\n nameTemplateMap,\n groupIndexes,\n isAllComplete\n }\n}","import { useCallback, useEffect } from 'react';\n\nimport { OZViewerEvent } from \"../types\"\n\ntype Props<T, R = void> = {\n event: OZViewerEvent;\n handler: (e: CustomEvent<T>) => Promise<R>;\n};\n/**\n * OZ 뷰어 콜백 이벤트를 구독해주는 Hook\n */\nexport function useOzEventListener<T, R = void>({ event, handler }: Props<T, R>) {\n const handleEvent = useCallback(\n async (e: Event) => {\n const customEvent = e as CustomEvent<T>;\n\n return await handler(customEvent);\n },\n [handler]\n );\n\n useEffect(() => {\n window.addEventListener(event, handleEvent);\n\n return () => {\n window.removeEventListener(event, handleEvent);\n };\n }, [handleEvent, event]);\n}\n","/**\n * OZ 뷰어에 관련된 이벤트 목록\n */\nexport enum OZViewerEvent {\n /**\n * 보고서 생성 단계별로 발생하는 이벤트\n * - `OZViewerProgressEvent` 이벤트와 매칭된다\n * - `viewer.progresscommand=true` 설정이 필요하다\n * - `OZViewerProgressEvent`와 매칭된다\n * - 모든 문서가 로딩되면 `OZReportCreated` 이벤트를 트리거시켜주어야 한다\n */\n OZProgressCommand = 'OZProgressCommand',\n /**\n * 에러 발생 시 발생하는 이벤트\n * - `viewer.errorcommand=true` 설정이 필요하다\n * - `OZViewerErrorEvent`와 매칭된다\n */\n OZErrorCommand = 'OZErrorCommand',\n /**\n * 화면에 표시되는 페이지가 변경된 후 발생하는 이벤트\n * - `viewer.pagechangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZPageChangeCommand = 'OZPageChangeCommand',\n /**\n * 화면에 표시되는 보고서가 변경된 후 발생하는 이벤트\n * - `viewer.reportchangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZReportChangeCommand = 'OZReportChangeCommand',\n /**\n * `OZUserEvent` _TriggerOCXUserEvent 함수 실행 시 발생하는 이벤트\n * - `OZViewerUserEvent`와 매칭된다\n */\n OZUserEvent = 'OZUserEvent',\n /**\n * `OZPageBindCommand` 페이지가 바인딩된 후 발생하는 이벤트\n * - `viewer.pagebindcommandinterval` 파라미터에서 설정한 주기별로 동작\n * - ex) `viewer.pagebindcommandinterval=500`\n * - `OZViewerPageBindEvent`와 매칭된다\n */\n OZPageBindCommand = 'OZPageBindCommand',\n /**\n * 사용자가 입력 컴포넌트를 클릭하거나 값을 변경하여 이벤트가 실행된 경우 발생되는 이벤트'\n * - 호환되는 이벤트\n * - `OnClick`\n * - `OnFinish`\n * - `OnFocus`\n * - `OnKillFocus`\n * - `OnPause`\n * - `OnPlay`\n * - `OnStop`\n * - `OnValueChanged`\n * - `eform.inputeventcommand=true` 설정이 필요하다\n * - `OZEFormInputEvent`와 매칭된다\n */\n OZEFormInputEventCommand = 'OZEFormInputEventCommand',\n /**\n * 보고서 저장 시 발생하는 이벤트\n * - `OZExportEvent`와 매칭된다\n */\n OZExportCommand = 'OZExportCommand',\n\n /**\n * 오즈뷰어, (오즈전용)PDF 뷰어 내 버튼 클릭시 발생하는 이벤트\n * - `OZBtnTouchEvent`와 매칭된다\n */\n OZBtnTouchEvent = 'btnTouchEvent',\n\n /**\n * `OZProgressCommand` 이벤트가 문서 갯수만큼 불리면 이 이벤트를 트리거한다\n * - 웹에서 직접 트리거 하는 이벤트\n */\n OZReportCreated = 'OZReportCreated',\n}\n\n/**\n * TriggerExternal에 사용할 param1인자를 정의한 enum\n * - GetDraftData 중간저장 서명이미지 추출\n * - cropimage 서명이미지 크롭\n */\nexport enum OZTriggerExternalEvent {\n GetDraftData = 'getDraftData',\n CropImage = 'cropimage'\n}\n\n/**\n * `OZViewerEvent.OZProgressCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZProgressCommand, (e) => { console.log(e.detail); });\n * ```\n *\n * `step과` `state`는 step => state 방식으로 진행된다\n *\n * 예시\n * ```bash\n * # step0 뷰어실행\n * [step=0][state=0] # 뷰어 실행 시작\n * [step=0][state=1] # 뷰어 실행 완료\n * # step2 보고서 템플릿 생성\n * [step=1][state=0] # 보고서 템플릿 생성 시작\n * [step=1][state=1] # 보고서 템플릿 생성 완료\n * ```\n */\nexport type OZViewerProgressEvent = {\n /**\n * 보고서 생성 단계\n * - 0 : 뷰어 실행 옵션 설정\n * - 1 : 보고서 파일 다운로드\n * - 2 : 보고서 템플릿 생성\n * - 3 : 데이터 다운로드\n * - 4 : 보고서 바인딩\n */\n step: '0' | '1' | '2' | '3' | '4';\n /**\n * 보고서 생성 상태\n * - 1 : 시작\n * - 2 : 완료\n */\n state: '1' | '2';\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * `OZViewerEvent.OZErrorCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZErrorCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerErrorEvent = {\n /** 에러 메시지 코드 */\n code: string;\n /** 에러 기본 메시지 */\n message: string;\n /** 에러 상세 메시지 */\n detailmessage: string;\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * 두 이벤트의 공용 타입\n * - `OZViewerEvent.OZPageChangeCommand` 이벤트의 `e.detail` 타입 정의\n * - `OZViewerEvent.OZReportChangeCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageChangeCommand, (e) => { console.log(e.detail); });\n * window.addEventListener(OZViewerEvent.OZViewerChangeCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerChangeEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: number;\n};\n\n/**\n * `OZViewerEvent.OZUserEvent` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZUserEvent, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerUserEvent = {\n /** _TriggerOCXUserEvent 함수에서 전달한 첫 번째 값 */\n param1: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 두 번째 값 */\n param2: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 세 번째 값 */\n param3: string;\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n};\n\n/**\n * `OZViewerEvent.OZPageBindCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageBindCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerPageBindEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 바인딩된 페이지 번호 */\n pagecount: string;\n};\n\nexport type OZEFormInputEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 이벤트가 발생한 컴포넌트의 FormID. FormID가 설정되지 않은 경우 컴포넌트의 이름이 리턴됨 */\n formid: string;\n eventname: string;\n mainscreen: boolean;\n}\n\nexport type OZExportEvent = {\n /**\n * 저장 성공 여부\n * - `0` 실패\n * - `1` 성공\n */\n code: \"0\" | \"1\"\n /** 파일 경로 */\n path: string;\n /** 파일 이름 */\n filename: string;\n /** 저장된 페이지 수. 여러 페이지의 보고서를 한 페이지로 저장한 경우에는 1이 리턴됨 */\n pagecount: string;\n /**\n * 뷰어가 실제 저장한 모든 파일의 경로와 이름.\n * \n * 파일이 여러 개일 경우 `|`를 구분자로 하여 리턴됨\n */\n filepaths: string;\n}\n\n/**\n * 상단 전체목록 보기 버튼 내 서식 클릭이벤트\n * - 선택된 서식의 텍스트가 btnID로 넘어온다\n */\nexport type CategoryEvent = {\n type: \"category\";\n /** 자유 입력 가능한 버튼 ID */\n btnID: string;\n};\n\n/**\n * 상단 버튼 클릭 이벤트(전체목록 버튼 제외)\n * - 예: 나가기 버튼\n */\nexport type TopEvent = {\n type: \"top\";\n btnID: \"btnExit\";\n};\n\n/**\n * 성명,서명, 덧쓰기 관련 버튼 클릭 이벤트\n * - `signatureInProgress` 서명 바로가기 버튼\n * - `signatureInMissing` 미입력 항목 입력하기 버튼(느낌표 버튼)\n * - `signatureComplete` 청약문서 최종 확인하기\n */\nexport type SignatureEvent = {\n type: \"signature\";\n btnID: \"signatureInProgress\" | \"signatureInMissing\" | \"signatureComplete\";\n};\n\n/**\n * pdf 뷰어 내 버튼 클릭 이벤트\n * - `modify` 성명 서명 덧쓰기 수정하러 가기\n * - `submit` 최종 제출하기\n */\nexport type PdfEvent = {\n type: \"pdf\";\n btnID: \"modify\" | \"submit\";\n};\n\n/**\n * comment(형광펜) 관련 버튼 클릭 이벤트\n * - `yellow` 노랑색 형광펜 활성화\n * - `pink` 분홍색 형광펜 활성화\n * - `green` 초록색 형광펜 활성화\n * - `eraser` 지우개 활성화\n * - `disable` 형광펜 모드 종료\n */\nexport type CommentEvent = {\n type: \"comment\";\n btnID: \"yellow\" | \"pink\" | \"green\" | \"eraser\" | \"disable\";\n};\n\n/**\n * OZ 문서 시스템 내 버튼 클릭 이벤트 통합 타입\n *\n * type(카테고리)에 따라 btnID 값이 다르게 제한됩니다.\n */\nexport type OZBtnTouchEvent =\n | CategoryEvent\n | TopEvent\n | SignatureEvent\n | PdfEvent\n | CommentEvent;\n\n/**\n * 문서코드별 입력 데이터 및 추가 파라미터 매핑 타입\n *\n * 각 문서코드에 대해 `inputJson` (임의의 key-value 쌍)과\n * \n * 선택적으로 `extraParam` (기타 추가 파라미터)을 포함하는 객체입니다.\n *\n * 예시:\n * ```javascript\n * {\n * A0010: {\n * inputJson: {\n * A0010_mynm_sg: 'data:image/png;base64,iVBORw0K...', // 예: 이미지 데이터\n * A0010_mysg_sign: 'data:image/png;base64,iVBORw0KG...', // 예: 이미지 데이터\n * custom_field: 'some value', // 임의의 데이터도 가능\n * },\n * args: [`roleCd=11,21`]\n * extraParam: [`viewer.zoom=137`]\n * },\n * C0401: {\n * inputJson: {\n * mynm_sg: 'data:image/png;base64,iVBORw0K...', // 예: 이미지 데이터\n * mysg_sign: 'data:image/png;base64,iVBORw0KG...', // 예: 이미지 데이터\n * another_field: 'another value', // 임의의 데이터\n * }\n * },\n * }\n * ```\n */\nexport type ExtraDataType = Record<string, {\n /** connection.inputJson으로 전달할 `{ \"key1\": \"value1\", \"key2\": \"value2\" }` 형식의 데이터 (예: 문자열, base64 이미지 등) */\n inputJson?: Record<string, string>;\n /** connection.arg로 전달할 `[\"key1=value1\", \"key2=value2\"]` 형식의 데이터 */\n args?: string[];\n /** 추가 파라미터 목록 (선택 사항) */\n extraParam?: string[];\n}>;\n","import { Bridge } from \"sales-frontend-bridge\";\n\n/**\n * ### 발생 상황 및 에러 메시지 정리\n * 1. 비정형에서 OZD 다운로드 시 → 청약문서를 불러오지 못했습니다\n * 2. 백엔드에서 중간저장 데이터 로딩 시 → 일시적인 오류가 발생했습니다\n * 3. 오즈뷰어(솔루션) 초기화(OZD 파일 + 중간저장 데이터) 시 → 일시적인 오류가 발생했습니다\n * 4. 성명/서명/덧쓰기 진행 시 → 일시적인 오류가 발생했습니다\n * 5. 서식 완료 후 서명 중간저장(비정형 저장) 시 → 일시적인 오류가 발생했습니다\n * 6. PDF Export(개별문서/통합문서) 시 → 청약문서를 불러오지 못했습니다\n * 7. PDF 뷰어 초기화(Export된 PDF를 화면에 렌더링) 시 → 청약문서를 불러오지 못했습니다\n *\n * ### 에러 발생 시 처리 동작\n * - 에러 발생시 재시도 혹은 탈출을 위해 이전 화면으로 돌아간다\n * - 1~5단계 에서 에러 발생 시 → 확인버튼 클릭 → OZ 뷰어 종료 브릿지 호출\n * - 6~7단계 에서 에러 발생 시 → 확인버튼 클릭 → PDF 뷰어 종료 브릿지 호출\n * \n * ### 일반적인 상황에서는 아래 두 함수를 사용하고 커스텀한 상황애서는 showAlert을 직접 조합하여 사용한다\n */\n\n\n/**\n * OZ 뷰어 및 비정형 처리 과정에서 일시적인 오류가 발생했을 때 표시되는 경고창.\n * #### 처리 동작\n * - 확인 버튼 클릭 시 OZ 뷰어 종료 브릿지 호출\n */\nexport async function AlertTemporaryError() {\n return await Bridge.nativeOz.showAlert({\n title: \"일시적인 오류가 발생했습니다\",\n message: \"문제가 지속될 경우 IT콜센터(1522-6379)로 문의해주세요.\",\n buttons: { close: false, main: \"확인\" }\n });\n}\n\n/**\n * 청약문서를 불러오지 못했을 때 표시되는 경고창.\n * #### 처리 동작\n * - 확인 버튼 클릭 시 PDF 뷰어 종료 브릿지 호출\n */\nexport async function AlertDocumentLoadError() {\n return await Bridge.nativeOz.showAlert({\n title: \"청약문서를 불러오지 못했습니다\",\n message: \"문제가 지속될 경우 IT콜센터(1522-6379)로 문의해주세요.\",\n buttons: { close: false, main: \"확인\" }\n });\n}","import type { CSSProperties } from 'react';\n\nimport type { ExtraDataType } from '../../oz';\nimport type { FormInfo } from \"sales-frontend-bridge\";\nexport const wrapperStyle: CSSProperties = { display: 'flex', flexFlow: 'column', gap: '10px' };\nexport const btnStyle: CSSProperties = { border: '1px solid red', minHeight: '40px' };\n\n/** 테스트용 하드코딩 문서목록 */\nexport const DownloadDocumentList: Array<FormInfo> = [\n { \"name\": \"개인(신용)정보제공 동의서\", \"doc\": [{ \"docCode\": \"C0400\", \"fileID\": \"07Ccx0CTiLNQXKkAA\" }] },\n { \"name\": \"상품소개동의서(상세)\", \"doc\": [{ \"docCode\": \"C0401\", \"fileID\": \"WH8CfHCTiLNQWKkAA\" }] },\n { \"name\": \"고객권리 안내문\", \"doc\": [{ \"docCode\": \"C0100\", \"fileID\": \"XvfJ76CTiLKCsKkAA\" }] },\n { \"name\": \"전자서명에 의한 보험계약체결 동의서\", \"doc\": [{ \"docCode\": \"B0101\", \"fileID\": \"vvOxRSCTiLNT_KkAI\" }] },\n { \"name\": \"보험계약대출 정보동의서\", \"doc\": [{ \"docCode\": \"A2215\", \"fileID\": \"P0gdb3CTiLNQUKkAA\" }] },\n { \"name\": \"상품설명서 회사보관용\", \"doc\": [{ \"docCode\": \"A0900\", \"fileID\": \"jAfVbYCTiLMmFKkAA\" }] },\n { \"name\": \"청약서\", \"doc\": [{ \"docCode\": \"A0010\", \"fileID\": \"ubBaPyCTiLLUYKkAA\" }] },\n { \"name\": \"계약전알릴의무사항 (일반+ 태아고지용)\", \"doc\": [{ \"docCode\": \"A2832\", \"fileID\": \"8LUd3MCTiLL-AKkAA\" }] },\n { \"name\": \"금융소비자보호를 위한 계약체결 고지의무 확인서\", \"doc\": [{ \"docCode\": \"C1300\", \"fileID\": \"jR3ATWCTiLKnxKkAA\" }] },\n { \"name\": \"청약부속정보확인서\", \"doc\": [{ \"docCode\": \"A1500\", \"fileID\": \"W4KUwOCTiLKqJKkAI\" }] },\n { \"name\": \"대면설명 확인서\", \"doc\": [{ \"docCode\": \"C1200\", \"fileID\": \"PMiXBQCTiLKrSKkAI\" }] },\n { \"name\": \"완전판매안내 확인서\", \"doc\": [{ \"docCode\": \"C1100\", \"fileID\": \"Ecc4ikCTiLKqkKkAA\" }] }\n].map((i) => ({\n ...i,\n // 모든 서명 입력이 완료되었는지 여부 (클라이언트에서 상태로 관리)\n complete: false,\n // 현재 서식이 포커스 상태인지 여부 (UI 제어용)\n focus: false,\n // 서식의 시작 페이지 번호 (페이지 매핑 시 사용)\n startPage: 0,\n // 서식의 종료 페이지 번호 (페이지 매핑 시 사용)\n endPage: 0,\n // 서식을 구성하는 개별 OZD 문서 목록\n doc: i.doc.map((j) => ({\n ...j,\n // OZD 파일의 로컬 저장 경로 (앱 다운로드 후 설정됨)\n filePath: \"\",\n // OZD 문서가 시작되는 페이지 번호\n startPage: 0,\n // OZD 문서가 종료되는 페이지 번호\n endPage: 0,\n })),\n}));\n\n/** 테스트용 하드코딩 데이터 */\nexport const ExtraData: ExtraDataType = {\n \"C0400\": { inputJson: { \"C0400_chk1\": \"1\", \"C0400_chk2\": \"1\", \"C0400_chk3\": \"1\", \"C0400_chk4\": \"1\", \"C0400_chk5\": \"1\", \"C0400_chk6\": \"1\", \"C0400_chk7\": \"1\", \"C0400_chk8\": \"1\", \"C0400_chk9\": \"1\", \"C0400_chk10\": \"1\", \"C0400_chk11\": \"1\", \"C0400_chk12\": \"1\", \"C0400_insurance_num\": \"300041827\", \"C0400_DATE\": \"20260108\" } },\n \"C0401\": { inputJson: { \"C0400_grp1\": \"0\", \"C0400_grp2\": \"0\", \"C0400_send_grp\": \"0\", \"C0400_grp3\": \"0\", \"C0400_insurance_num\": \"300041827\", \"C0401_DATE\": \"20260108\" } },\n \"B0101\": { inputJson: { \"B0101_prd_name\": \"한화생명 기본형 급여 실손의료비보장보험(갱신형) 무배당 \", \"B0101_prd_policy\": \"삼오녀\", \"B0101_prd_insurant\": \"태아\" } },\n \"A2215\": { inputJson: { \"A2215_chk1\": \"1\", \"A2215_chk2\": \"1\", \"A2215_chk3\": \"1\", \"A2215_chk4\": \"1\", \"A2215_insurance_num\": \"300041827\", \"Date1\": \"20260108\" } },\n \"A0900\": { inputJson: { \"Date1\": \"20260108\", \"Date2\": \"20260108\", \"A0900_chk_grp50\": \"1\", \"A0900_chk_grp51\": \"1\", \"A0900_chk_grp52\": \"1\", \"A0900_chk_grp53\": \"1\", \"A0900_chk_grp54\": \"1\", \"A0900_chk_grp55\": \"1\", \"A0900_chk_grp56\": \"1\", \"A0900_chk_grp57\": \"1\", \"A0900_chk_grp58\": \"1\", \"A0900_chk_grp59\": \"1\", \"A0900_chk_grp60\": \"1\", \"A0900_chk_grp61\": \"1\", \"A0900_chk_grp62\": \"1\", \"A0900_chk_grp63\": \"1\", \"A0900_chk_grp65\": \"1\", \"A0900_chk_grp66\": \"1\", \"A0900_chk_grp67\": \"1\", \"A0900_chk_grp68\": \"1\", \"A0900_chk_grp69\": \"1\", \"A0900_chk_grp72\": \"1\", \"A0900_chk_grp75\": \"1\", \"A0900_chk_grp80\": \"1\", \"A0900_chk_grp81\": \"1\", \"A0900_chk_grp82\": \"1\", \"A0900_chk_grp83\": \"1\", \"A0900_chk_grp84\": \"1\", \"A0900_chk_grp87\": \"1\", \"A0900_fp_sign\": \"data:image/png;base64,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\" } },\n \"A0010\": { inputJson: { \"A0010_que1_rdg\": \"1\", \"A0010_que2_rdg\": \"1\", \"A0010_que3_rdg\": \"1\", \"A0010_monitor_grp\": \"2\", \"A0010_11_call_date\": \"20260130\", \"A0010_11_call_time\": \"13:00~13:30\", \"Group2\": \"4\", \"Group1\": \"1\", \"A0010_auto_rdg\": \"1\", \"A0010_celluer_rdg\": \"1\", \"A0010_que4_rdg\": \"1\", \"Date\": \"20260108\", \"NC_STR_147_83\": \"\", \"NC_STR_181\": \"\", \"NC_STR_182\": \"\", \"NC_STR_118\": \"\", \"NC_STR_146\": \"\", \"NC_STR_183\": \"\", \"NC_STR_148\": \"\", \"NC_STR_171\": \"\", \"NC_STR_172\": \"\", \"NC_STR_174\": \"\", \"NC_STR_175\": \"\", \"NC_STR_173\": \"\", \"NC_STR_180\": \"\", \"NC_STR_179\": \"\", \"NC_STR_176\": \"\", \"NC_STR_177\": \"\", \"NC_STR_178\": \"\", \"NC_STR_185\": \"\", \"A0010_fp_nm\": \"data:image/png;base64,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\", \"A0010_fp_sign\": \"data:image/png;base64,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\" } },\n \"A2832\": { inputJson: { \"A0103_insurance_num\": \"300041827\", \"A0103_insurance_num2\": \"300041827\", \"Date\": \"20260108\" } },\n \"C1300\": { inputJson: { \"C1300_grp1\": \"1\", \"C1300_grp2\": \"1\", \"C1300_grp3\": \"1\", \"C1300_grp4\": \"1\", \"C1300_grp5\": \"1\", \"C1300_grp6\": \"1\", \"C1300_grp7\": \"1\", \"C1300_grp8\": \"1\", \"C1300_grp9\": \"1\", \"C1300_grp10\": \"1\", \"C1300_grp11\": \"1\", \"C1300_grp12\": \"1\", \"C1300_grp13\": \"1\", \"C1300_grp14\": \"1\", \"C1300_chk1\": \"1\" } },\n \"A1500\": { inputJson: { \"A3820_financeExpert_grp\": \"01\", \"A0103_altk_rdg\": \"1\", \"A0103_agree_grp\": \"1\", \"A1500_fp_sign1\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXsAAADOCAYAAADfTqJ5AAAQAElEQVR4AeycTY41NxWGL1++kAgkgoSEBBICwRTYAEGAWACwCgYwYQXADhjAgFUAG+BHhA2QMQgkBAMYBCRQSL4E/HZ39b3Xfewq3ypXHdtPVO5bdexynfMc19sn7ps8O/EPBCAAAQh0TwCx7z7FBAgBCEDgdELsWQUQgECeAL1dEEDsu0gjQUAAAhDIE0Ds83zohQAEINAFAcS+izR6DQK/IAABLwQQey+ZwA8IQAACFQkg9hXhMjUEIAABLwS8ir0XPvgBAQhAoAsCiH0XaSQICEAAAnkCiH2eD70QgIBXAvhVRACxL8LFYAhAAAJtEkDs28wbXkMAAhAoIoDYF+FicB8EiAIC4xFA7MfLORFDAAIDEkDsB0w6IUMAAuMRQOzLcs5oCEAAAk0SQOybTBtOQwACECgjgNiX8WI0BCAAgTwBp72IvdPE4BYEIACBLQkg9lvSZC4IQAACTgkg9k4Tg1sjEiBmCNQjgNjXY8vMEIAABNwQQOzdpAJHIAABCNQjgNjXY7vnzDwLAhCAQJYAYp/FQycEIACBPggg9n3kkSggAAEIZAk8y/bSCQEIQAACXRCgsu8ijQQBAQhAIE8Asc/zoRcCEDiBoAcCiH0PWSQGCEAAAjMEEPsZQHRDAAIQ6IEAYt9DFv3GgGcQgIATAoi9k0TgBgQgAIGaBBD7mnSZGwIQgIATAm7F3gkf3IAABCDQBQHEvos0EgQEIACBPAHEPs+HXghAwC0BHCshgNiX0GIsBCAAgUYJIPaNJg63IQABCJQQQOxLaDG2FwLEAYHhCCD2w6WcgCEAgREJIPYjZp2YIQCB4Qgg9oUpZzgEIACBFgkg9i1mDZ8hAAEIFBJA7AuBMRwCDRB4J/io9nb4LG3/DvdwrCLg82bE3mde8AoCOQIS8qn9LwyM28vBpvZK+CxtHwr3XM4XLjl6IIDY95BFYuiVwLshsEvhnc4l5FMLQ6oe0zOnz6oPY/J6BBD7emyZGQIlBCTsapOo6vN5yQQ7jZVfU9vpkTxmCwKI/RYUmQMC5QQsYfco7rnIEP0cHWd9iL2zhOBOtwQscd8qWM09tQ+ESde2/4Q5Sg6Jfsl4xh5AALE/AHqNRzKnSwIvglcSQrU1VbvmyYn5B8NzphZOVx8fDjNc/sJYIv6KUS3cyuGRAGLvMSv41DoBibOE76UbA9H9l2KrP8ZuKealbsXin7tfcef66TuIAGJ/EHge2x0BCbSETq1E5HWfWizungFNvqZ8FAO1VD/2Awg8Ox3wUB4JgU4ISKQlampLBV73TGKpT1Xtai0ikf85v8Ul10/fjgSo7HeEzaO6ISDBlpAtFfj3QuQSRrVWhT2EYB6KSc3sDEZx+kf45DiYAGJ/cAJ4fDMEJoGXeC0R+UuBX/PHWQ+AlviQE/yPhQkQ/ADhyAOxP5I+z26BgER7qcArHo2X8I0g8Ir3silutUvbdI7gTyQO+kTsDwLPY90TkGhL5Je8IxorkVMbUeTjZIpDbNM1gi8KB7UlC/kg13hsDwQajEECr7bk3ZhEHoF/mmgE/ymTQy1LFvShDvJwCOxAQKItgVebe5zGSsjUEPk8LTGyRlDhW1Qq2xD7yoCZ3jUBCbcEfsl78H6IROKFwAcQBYeYWcMRfItKRduSRV7x8Zmp6YJAPQK3iPySb+DU87jtmXOC33ZkDXmP2DeULFxdTaBE5CVQaoj8aux3E4jl3Un0Q/9mFZm4rEEAsa9BlTm9EZCgqM2t92mrJiVM3uJqzZ8UV+Xmlli4p4DA3OIvmIqhEHBHQCKiNufYJPJU8XOk1vcj+OsZ3jQDYn8TNm5yTkACrzbnJiI/R6hOf0rw/1rnccwqAoi9KNB6ISCBV5uL5/0wQIJDJR9AHHSIf/zoT8QGrrcjgNhvx5KZjiMggVeb80ACo4bIz5Hap/9vxmOW5NG4DdMcAcR+jhD9nglIGNTmfJTAq82No39fAp9MPG5JThO3Yk4RQOxTZFJ27EcT0D67xEAt54v6JfBquXH0HUsglR/27zfOC2K/MVCmq0ZgEvmUOEwPnkSetT0R8f9p5ZT9+43zxguxMVCm25wAIr85UpcT9rR/7xIwYu8yLTj1QGCq0h8uzY9pDGvZxNOMkf37yqniBakMmOlvIjBV87mbEfkcnTb7rO0cRcL+vSisbIj9SoDcvimBSeRTL70e1rXIK8DBm7Wdw/79BosCsd8AIlOsJoDIr0bYzQTazrEEX2ukmyCPCASxP4I6z7wkMFXql7b4XJU+azWm0u+1BD+OTmvgD7GR6+UEeIGWs/I9sj3vJPJqOc/Vr5c8N4a+PglYef9sn6HuExVivw9nnnImoH8dl4ifLU/P1K+XnfX5lM1Ilj8awVLdG1CWmHiZllBizBYEJpGXiKfmQ+RTZMa0f84Im+regLLE9Ox0WjKMMRBYRWAS8dwk+iVA8ZEjNGYf1f1Geefl2ggk05gEJPJqZueDUSKv9nDJBwSuCFDdX+G4/QKxv50dd6YJTFs26RGnk34JIPI5Qo76DnaF6n6DBCD2G0BkiisCcyI+9bP2rrBxkSFAdZ+Bs7SLF24pKcbNEVhSzauSZ83NkaTfIkB1b1EpsPHiFcBiqElgEnkJ+dMB95apmr+/4icEyglQ3Zczu7oDsb/CwUUhgTkRn/pZZ4VgGW4SoLo3sSwz8hIu48SoawJTNX9tvb5Spc/6umbC1ToCVPcr+Dl+GVdExa21CEwiLyFPPWOq5lP92CGwhgDV/Y30EPsbwQ1425yIT/2sqQEXx44hU93fCJsX80ZwA902VfO5kFXps5ZyhOjbksBjdX8x6e8vzjk1CPCCGlAwPRKYqvVHQ3Qy1x8N5xICmxCwqvsvbDJzx5Mg9h0nd0Voc9X8JPKsnxWQuXUVgTeNu18YNkwPBHhZH0DwcUdgEnlty9wZjB/qa3/dGIFhaorAF4O374V2ebwULtjOCRCsg5fWojKmbarWU9HP9afuww6BWgSeGxOznWNAkQmxF4Wx21TN5yhQzefo0HckAWs7h+reyAhib0DJm7rqnavW5/q7gkEwTRLQdk7sONV9TCRcI/YBwoAH1fyASe84ZKr7BclF7BdA6mzIXLWuLRu1zsImnI4JuKvuPbJG7D1mpY5Pc9X83C+BOl4xKwS2IWBV93wV84ItYn8Bo+PTOSFXJc9a6HgBDBCaqnu+iplJNC94Bk4nXRL6VCjqk9Cn+rHvTYDnrSHAVzEz9BD7DJzGu+a2bSTy5L/xJOP+EwLWdg5fxQyYeNkDhA6PXMWe6+sQBSENRkDbOXHIfBUzEEHsA4Q+jscoJOaPF9GJ+sh5BIXL7ghY1f1vu4uyMCBe/EJgjoezbeM4Obi2KwGrun99Vw8cPgyxd5iUG1xSxa49eOvWXJ81HhsEeiDwhhHE24ZtGJPEfphgOw1UYp4KTX3kOEUHe88EvhyC+29ol8crlxejnSME7WacbZt2c4fn+xB41XjMsNU9Ym+shgZMEvrUto3cz/WpnwaBMgLtjraq+yH/WIvYt7eItTWTEvNcX3uR4jEE1hOwqvsh/1iL2K9fTHvOIDFPPU+/AMhnig72kQlYf6wdrrpHHNp4BbRtMyf0TiPBLQgcTkB/rI2dGK66R+zjJeDvWiKvqt3yLNdnjccGgVEJDF/dI/a+l77EPOWhfgGQvxQd7BC4JjB8de9ZLK5TNdYV2zZj5Zto9yEwdHWP2O+zyEqeIqFX1W7do0o/1WeNxwYBCJwJDF3dI/bnheDhLCfm6iNfHrKED34IlHtiVfdvlU/T3h2Ih5+cScxT3qiaJ1cpOtghsJyAqvv4P7R6Ldz+s9C6PhCQ49OrbZs5oT/eSzyAQD8E9B9axe/cN/oJz44Esbe57GWV0Ktqt56nxZjqs8ZjKyLA4MEJ/CKKX+9a19s5iH2U8R0vc2KuPnKzYzJ41HAEvhUi1nsWPh6PrrdzEJTHPO96Ei+yy4erwiAvl0Q4h0AdAtZ71u12jhVsHaz9zLomEm3bzAn9mvm5FwIQKCPw82i4iq0ut3MQ+yjTFS8l9FpI1iP0CyDVZ43HBgEIbENgmO0cxH6bBTM3S07M1Uce5gjSD4F6BOI/1upJ67ZzNIOzhsjUT4jEPPUUVfPkIEUHOwT2IaDq/p/Ro/RudvXde4QmyvCGl9q2mRP6DR/HVBCAwAoCHw33xu/rN4OtmwOxr5NKLRpVBtbsuT5rPLahCBDsgQSs7RwVbQe6tN2jEfvtWE4zScyn8/hTvwBgHlPhGgI+CKS2c37sw711XiA86/jFd88JfTyeawhAwBcBazvnO75cvM0bxP42bvFd+le9o4U+9olrCEDgNgLWds67t03l5y7Efn0uJPLanrFmyvVZ47FBAALHE9B2zp8jN56H6z+F1uyB2K9LncQ8NYN+AcA3RQc7BHwT+Exw70Vol8enw0Wz+/d3YhQC4CgnMCf05TNyBwQg4InATw1nvm3YmjAh9relCaG/jRt3QaAlAt8NznaznYPYh2wWHimhl11bN4XTMRwCLRAY1sdutnMQ++VrOPeNG4k8LJezZCQEWiLQxXYOArVsyUnoJejW6JTdGosNAhBoj4C2c34Sud3ct3MQ+yiDxiVCb0ApMDEUAj0QkOA3/e0cxD6/DHP78FT0eXb0QqA3Ai8bAem/rv21YXdnQuzTKZHQp3oR+hQZ7BDom0C8naNovxJ+uBd812IfAB51IPRHkee5EPBNQNs5vzFcdC/4iP3TrCH0T5lggQAEzgS+Gk6bE3zEPmTt4kgJvexs3VyA4hQCPggc5kVzgo/Yn9eKBP18dT6THU5nHpxBAAL3BCT437s/vfqpLZ0fXFkcXCBi90mQoN+fXf+UHUbXTLiCAATOBH4UTi3B/36w/yo0/UIIH8cfowuZvkMvQbcyoW2b0flYXHqxEQcEtiKQEnwJvQTfRZU/sphJ6CXoVsJTdmssNghAAAISfOmG9RVMVfmHC/6oYo/Q83JCAAI1CHwtTPrD0OLjcMEfUey1baPfwHEydJ2yq++xcQIBCEAgQ0BVfErwta2TubVe12hiL6FP0UToU2SwQwACpQQk+Kry4/u0jy8dUn/cV/V6JLEX4BRMhD5FBjsEIHADgbtbtH8vbdHnneHix+7bOqOIPUJ/sco4hQAEdiWgCj+1rbNbhT+C2KeEXnb91t016zwMAhAYkoBEPSX4u+zj9y72EnRrZcnee+xW3Nj8E8DDfgmkBN/6/+xsTqFXwdNXKyXoFjDZe43bihcbBCDgh4AEX9s60z6+qn3ZqnvYo+hJ6FPbM7L3GHP1hcIDIACBzQhI6CX4arsIvTzvUfgk6Iotbil7PK7ZaxyHAASaIiDR383h3sReWzQWPITeooINAhAYhkBPYo/QD7NsCRQCECglcC/2pXf5G4/Q+8sJHkEAAo4I9CD2CL2jBYUrEICATwKtiz1C73Nd4VV/BIiocQItiz1C3/jiw30IQGA/Aq2Kvb5LLqJ78AAAArhJREFUb1FK/QKwxmKDAAQgMAyBFsVeQm99lVJC32I83S82AoQABI4n0KI4WkIvki3GIr9pEIAABKoTaE0gVb1bUFK/AKyx2CAAAQgMR8C32F+nA6G/5sEVBCAAgcUEWhF7hH5xShkIAQhA4CmBFsRef5B96vnpxNbNiX8gMDwBACwk0ILYW6KeqvQXhs0wCEAAAmMR8C72KVH37vdYq4hoIQAB9wQ8i2ZK6K1K3z1oHPRHAI8gMBIBr2LPPv1Iq5BYIQCB6gS8ir1Vvacq/eqQeAAEIACB1gl4FPuUqPvxtfWs4z8EIDAcAW8CmhJ6q9IfLlkEDAEIQOBWAp7Enn36W7PIfRCAgDcC7vzxJPZW9W7Z3EHEIQhAAALeCXgR+9T2jXd++AcBCECgCQIexD4l9FT1TSwhnNyaAPNBoAaBo8Ueoa+RVeaEAAQgEBE4Uuz5g2yUDC4hAAEI1CJwpNhb2zSpSr9W/H3NSzQQgAAEEgSOEvuUqB/lTwIPZghAAAJ9EDhCXFNCb1X6fVAmCghAAAIHE3gQ+928QOh3Q82DIAABCJwJ7Cn2CP2ZO2cQgAAEdiWwl9h/PhEVWzcJMJgh4I0A/rRNYC+xf7NtTHgPAQhAoG0Ce4g92zdtrxG8hwAEOiBQW+y/lGD0qYQdc48EiAkCEDicQE2x/0iI7o3Q4kOV/l9iI9cQgAAEIFCPQE2xfyvhds1nJh6JGQIQgMDYBGoK76sG2tcMW8ZEFwQgAAEIbEGgpti/ExzUVyu/Hj51vB5+/Cs0DghAAAIQ2JlATbGfQvllOPl4aL8LjQMCEIDApgSYbBmBPcRenvxdP2gQgAAEIHAMgb3E/pjoeCoEIAABCNwRQOzvMPBjSAIEDYGBCCD2AyWbUCEAgXEJIPbj5p7IIQCBgQgg9jclm5sgAAEItEXg/wAAAP//dDhmwAAAAAZJREFUAwBLx9+st1cChAAAAABJRU5ErkJggg==\", \"A1500_fp_sign2\": \"data:image/png;base64,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\" } },\n \"C1200\": { inputJson: { \"C1200_date\": \"20260109\", \"C1200_time\": \"09:00\", \"C1200_place\": \"고객 집 주변\", \"C1200_way\": \"상품설명서로 직접 설명\", \"C1200_confirm\": \"1\", \"C1200_insurance_num\": \"300041827\", \"C1200_fp_nm1\": \"동구시\", \"C1200_fp_nm4\": \"동구시\", \"C1200_con_nm\": \"삼오녀\", \"date2\": \"20260108\", \"C1200_fp_nm2\": \"data:image/png;base64,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\", \"C1200_fp_nm_sign\": \"data:image/png;base64,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\" } },\n \"C1100\": { inputJson: { \"C1100_insurance_num\": \"300041827\", \"C1100_ozformlist\": \"청약서\\n상품설명서 회사보관용\\n청약부속정보확인서\\n보험계약대출 정보동의서\\n계약전알릴의무사항 (일반+ 태아고지용)\\n전자서명에 의한 보험계약체결 동의서\\n고객권리 안내문\\n개인(신용)정보제공 동의서\\n상품소개동의서(상세)\\n완전판매안내 확인서\\n대면설명 확인서\\n금융소비자보호를 위한 계약체결 고지의무 확인서\", \"Date\": \"20260108\", \"C1100_fp_nm\": \"data:image/png;base64,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\", \"C1100_fp_nm_sign\": \"data:image/png;base64,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\" } }\n}\n\n\n/** 테스트용 증번 */\nexport const policyNumber = '300034894';\n/** 테스트용 FP 정보 */\nexport const fpInfo = { uniqNo: '2210000' };\n/** 테스트용 청약작성자목록 - 계약 관계자 코드 */\nexport const roleCode = `[{\"roleCode\":\"FP\",\"name\":\"동구시\",\"psatAbscDvsnCode\":null},{\"roleCode\":\"11\",\"name\":\"삼오녀\",\"psatAbscDvsnCode\":null}]`\n/** 테스트용 native에 전달할 X-DUD-Authorization 토큰 */\nexport const xdudheaders = `Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJaT1BRdk5nSkhMNkVYU2pkaXIxNU1PRURIa0MwbTdUelIrWS9HNzZ4Vm9XZHIvR0MiLCJpYXQiOjE3NjY0Njc4MDksImV4cCI6MTc5ODAwMzgwOX0.gQmPoBU-yXo2q2nJW4yOIJyYb0YPf42shGcFnRHnzjQ`;","/**\n * `Promise.withResolvers()` 폴리필\n */\nexport function PromiseWithResolvers<T>() {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason?: unknown) => void;\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return { promise, resolve, reject };\n}\n\n/**\n * 주어진 입력값이 배열이 아니면 빈 배열을 반환하고, 배열이면 깊은 복사하여 반환합니다.\n *\n * @param arg - 입력값으로, 배열일 수도 있고 아닐 수도 있습니다.\n * @returns 주어진 입력값이 배열이면 깊은 복사본을 반환하고, 배열이 아니면 빈 배열을 반환합니다.\n */\nexport function ensureArray<T>(arg?: T[]): T[] {\n return (Array.isArray(arg) ? DeepCopy(arg) : []);\n}\n\n/**\n * 주어진 객체를 깊은 복사하여 새로운 복사본을 반환합니다.\n * - 내부 유틸용이라 export 하지 않았음\n *\n * @param arg - 깊은 복사를 원하는 객체\n * @returns 주어진 객체의 깊은 복사본\n */\nexport function DeepCopy<T>(arg: T): T {\n return JSON.parse(JSON.stringify(arg)) as T;\n}\n","import { Bridge } from \"sales-frontend-bridge\";\n\nimport type { DownloadOzdOptions } from \"sales-frontend-bridge\";\n\n\n/**\n * ozd, 폰트 등 App 내 리소스를 fetch하는 브릿지 유틸\n */\n\n/**\n * OZD 목록을 다운받는 브릿지\n */\nexport async function fetchDocument(args: DownloadOzdOptions) {\n // 브릿지에 다운로드 요청\n const { data: result } = await Bridge.native.downloadDocument(args);\n\n // start,end 페이지 매핑\n return result.data.map((i) => ({ ...i, startPage: 0, endPage: 0 }));\n}\n\n/**\n * App에 설치된 폰트를 Oz Param 형식으로 불러오는 브릿지\n */\nexport async function fetchFont() {\n const { data: fontMap } = await Bridge.native.getOzFontParam();\n\n const fontParms = Object.keys(fontMap).map((i) => `font.${i}=${fontMap[i]}`);\n\n return fontParms;\n}","import { Bridge } from \"sales-frontend-bridge\";\n\nimport { PromiseWithResolvers } from '../../../internal';\nimport { OZViewerEvent } from '../../types';\n\nimport { AlertTemporaryError } from './alert-util';\n\n/**\n * OZ 뷰어 함수를 단순 래핑한 브릿지 유틸\n */\n\n/**\n * OZ Viewer 생성 함수\n * 1. `CreateReport` 함수 호출하여 OZ 리포트 생성\n * 2. `OZProgressCommand` 이벤트가 `ozd` 개수만큼 발생\n * 3. `OZProgressCommand` 이벤트 내부에서 `OZReportCreated` 이벤트 발행\n * 4. `CreateOzViewer` 이벤트가 종료\n */\nexport async function CreateOzViewer(ozParam: string[]) {\n const { promise, resolve, reject } = PromiseWithResolvers();\n\n const handleTimeout = () => {\n // 이벤트리스너 제거\n window.removeEventListener(OZViewerEvent.OZReportCreated, handleOZCreated);\n // promise reject 처리\n reject(new Error(\"createOZViewer TimeOut\"));\n };\n // 3분 대기 후 이벤트가 종료되지 않으면 에러 처리\n const timeout = setTimeout(handleTimeout, 1000 * 60 * 3);\n\n const handleOZCreated = (e: Event) => {\n // 성공 시 타이머 해제\n clearTimeout(timeout);\n resolve(e);\n };\n\n window.addEventListener(\n OZViewerEvent.OZReportCreated,\n // OZReportCreated가 트리거되면 promise resolve 처리\n handleOZCreated,\n // 이벤트 리스너는 한 번만 실행되도록 설정\n { once: true }\n )\n\n try {\n await Bridge.native.createOZViewer({ param: ozParam.join(\"\\n\") });\n\n return await promise;\n } catch (e) {\n // createOZViewer 자체가 에러가 발생한경우 타이머 초기화\n clearTimeout(timeout);\n // 외부로 에러 전파, 로더나 alert같은 예외는 호출자에게 위임한다\n throw e;\n }\n}\n\n/**\n * 특정 페이지로 스크롤 이동\n */\nexport async function MovePage(page: number) {\n return await Bridge.nativeOz.script({ command: `movepage=${page}` });\n}\n\n/**\n * 현재 페이지 번호를 구한다(one base index)\n */\nexport async function getCurrentPage() {\n const { data } = await Bridge.nativeOz.getInformation({ command: `CURRENT_PAGE` })\n if (data === null) {\n throw new Error(`Bridge returned null for command: CURRENT_PAGE`);\n }\n\n return Number(data);\n}\n\n/**\n * 랜딩되어있는 보고서들의 전체 페이지 수\n */\nexport const getTotalPageMemo = (() => {\n // ✅ 전체 페이지수를 캐싱\n let cache: Promise<number> | null = null;\n\n async function getTotalPage(): Promise<number> {\n if (cache) {\n // 캐시에 이미 결과(Promise)가 있다면 재사용\n return cache;\n }\n // ⚙️ 네이티브 호출을 Promise로 감싸서 즉시 캐시에 저장\n // (중복 요청을 방지하기 위함)\n cache = (async () => {\n try {\n const { data } = await Bridge.nativeOz.getInformation({ command: 'TOTAL_PAGE' });\n\n return Number(data);\n } catch (e) {\n // ⚠️ 호출 실패 시 캐시에서 제거하여 다음 요청 시 재시도 가능하도록 함\n cache = null;\n throw e;\n }\n })();\n\n return await cache;\n }\n\n // 캐시 초기화 함수\n getTotalPage.clearCache = () => {\n cache = null;\n };\n\n return getTotalPage;\n})();\n\n/**\n * 랜딩되어있는 보고서의 총 갯수(ozd 파일의 갯수)\n */\nexport const getReportCountMemo = (() => {\n // ✅ 보고서의 총 갯수(ozd 파일의 갯수)를 캐싱\n let cache: Promise<number> | null = null;\n\n async function getReportCount(): Promise<number> {\n if (cache) {\n return await cache;\n }\n // ⚙️ 네이티브 호출을 Promise로 감싸서 즉시 캐시에 저장\n // (중복 요청을 방지하기 위함)\n cache = (async () => {\n try {\n const { data } = await Bridge.nativeOz.getInformation({ command: 'REPORT_COUNT' });\n if (data === null) {\n throw new Error(`Bridge returned null for command: REPORT_COUNT`);\n }\n\n return Number(data);\n } catch (e) {\n // ⚠️ 호출 실패 시 캐시에서 제거하여 다음 요청 시 재시도 가능하도록 함\n cache = null;\n throw e;\n }\n })();\n\n return await cache;\n }\n\n // 캐시 초기화 함수\n getReportCount.clearCache = () => {\n cache = null;\n };\n\n return getReportCount;\n})();\n","import { Bridge } from \"sales-frontend-bridge\";\n\nimport { ensureArray } from '../../../internal';\nimport { commonOzParam } from '../../constant';\nimport { OZTriggerExternalEvent } from '../../types';\n\nimport { fetchFont } from './fetch-util';\nimport { getReportCountMemo } from './oz-wrapper-util';\n\nimport type { ExtraDataType } from '../../types';\nimport type { OzdFile } from \"sales-frontend-bridge\";\n\n\n/**\n * OZ 리포트 생성 및 초기화에 필요한 브릿지 유틸\n */\n\ntype CreateOzParamProps = {\n documentList: OzdFile[];\n extraData?: ExtraDataType;\n /**\n * 모든 문서에 공통으로 적용할 args\n * - connection.arg로 전달할 `[\"key1=value1\", \"key2=value2\"]` 형식의 데이터\n */\n commonArgs?: ExtraDataType[string][\"args\"];\n /**\n * 모든 문서에 공통으로 적용할 추가 파라미터 목록\n * - `[\"connection.pcount=1\"]`\n */\n commonExtraParams?: ExtraDataType[string][\"extraParam\"];\n /**\n * 청약을 작성하는 사람들의 roleCode 목록\n *\n * ex)`[{\"roleCode\":\"FP\",\"name\":\"동구시\",\"psatAbscDvsnCode\":null},{\"roleCode\":\"11\",\"name\":\"김여명\",\"psatAbscDvsnCode\":null}]`\n */\n roleCd: string;\n /**\n * 지정대리인 정보\n * - 지정대리인이 없을때 ''\n * - 지정대리인이 1명일때 ex) `성명|주민등록번호|관계명|관계코드`\n * - `connection.args3=jijungInfo=김이박|9201111mLLNeL|배우자|02`\n * - 지정대리인이 2명일때 ex) `성명|주민등록번호|관계명|관계코드`,`성명|주민등록번호|관계명|관계코드`\n */\n jijungInfo?: string;\n}\n/**\n * OZ 리포트 최초 생성시 OZ에 넘길 파라미터를 생성하는 함수\n */\nexport async function CreateOzParam({ documentList, extraData = {}, commonArgs = [], commonExtraParams = [], roleCd, jijungInfo = '' }: CreateOzParamProps) {\n if (documentList.length === 0) {\n throw new Error('문서목록이 비어있습니다');\n }\n const fontParms = await fetchFont();\n const connectionParams = documentList.map(({ filePath }, idx) =>\n idx === 0 ? `connection.openfile=${filePath}` : `child${idx}.connection.openfile=${filePath}`\n );\n const childCount = documentList.length - 1;\n const extraParams = documentList.map((ozdFile, idx) => {\n const result: string[] = [];\n\n // 파일 이름에서 경로 및 확장자 제거 (ex: \"A0010.ozd\" → \"A0010\")\n const docCode = ozdFile.docCode.replace(/^.*[\\\\/]|(\\.[^/.]+)$/g, '');\n\n const prefix = idx === 0 ? '' : `child${idx}.`;\n\n // 문서코드에 바인딩할 데이터가 있는지 확인\n const data = extraData[docCode] || {};\n\n if (data.inputJson) {\n result.push(`${prefix}connection.inputjson=${JSON.stringify(data.inputJson)}`);\n }\n\n // args로 전달할 param이 있으면 반영\n const args = [\n // 모든 서식에 공통으로 필요한 docCd param 추가\n `docCd=${docCode}`,\n // 모든 서식에 공통으로 필요한 roleCode 정보 추가\n `roleCd=${roleCd}`,\n // 모든 서식에 공통으로 필요한 지정대리인 정보 추가\n `jijungInfo=${jijungInfo}`,\n // 모든 서식에 공통으로 필요한 TABLET 구분값 정보 추가\n `TABLET=11`,\n // 모든 서식에 공통으로 필요한 추가 args\n ...commonArgs,\n // 특정 서식에 필요한 추가 args\n ...ensureArray(data.args)\n ];\n args.forEach((arg, idx) => result.push(`${prefix}connection.args${idx + 1}=${arg}`));\n\n // 그 외 추가 파라미터 목록이 있으면 반영\n const extraParam = [\n // connection.args의 갯수만큼 pcount 보정\n `connection.pcount=${args.length}`,\n // 모든 서식에 공통으로 필요한 추가 파라미터\n ...commonExtraParams,\n // 특정 서식에 필요한 추가 파라미터\n ...ensureArray(data.extraParam)\n ];\n extraParam.forEach((param) => (result.push(`${prefix}${param}`)))\n\n return result;\n });\n\n // createReport용 ozParam\n const params = [\n ...(childCount > 0 ? [`viewer.childcount=${childCount}`] : []),\n ...connectionParams,\n ...commonOzParam,\n ...fontParms,\n ...extraParams.flat(1)\n ];\n\n return params;\n}\n\n/**\n * 모든 문서에 대해 checkeForm을 Y로 설정하는 명령을 순차적으로 한 번씩 호출합니다.\n * \n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function setCheckEform(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n for (let i = 0; i < count; i++) {\n await Bridge.nativeOz.setGlobal({ key: 'checkeForm', value: 'Y', docIndex: i })\n }\n}\n\n/**\n * 모든 문서에 대해 INPUT_TRIGGER_CLICK 명령을 순차적으로 한 번씩 호출합니다.\n * \n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function triggerClickOnAllDocuments(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n for (let i = 0; i < count; i++) {\n const command = `INPUT_TRIGGER_CLICK_AT=${i}`;\n await Bridge.nativeOz.getInformation({ command });\n }\n}\n\n/**\n * 모든 문서에 대해 서명 부분 이미지 컷팅 명령을 순차적으로 한 번씩 호출합니다.\n *\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function triggerCropImageOnAllDocuments(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n for (let i = 0; i < count; i++) {\n // 사인 이미지 크롭처리\n await Bridge.nativeOz.triggerExternalEventByDocIndex({ param1: OZTriggerExternalEvent.CropImage, docIndex: Number(i) });\n }\n}\n\n/**\n * 모든 문서에 대해 전체 페이지 수를 계산하는 명령을 순차적으로 한 번씩 호출합니다.\n *\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function getTotalPageOnAllDocuments(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n const totalPages = [];\n for (let i = 0; i < count; i++) {\n const command = `TOTAL_PAGE_OF_REPORT_FILE_AT=${i}`\n const { data } = await Bridge.nativeOz.getInformation({ command });\n totalPages.push(Number(data));\n }\n\n return totalPages;\n}","import { Bridge } from \"sales-frontend-bridge\";\n\nimport { OZTriggerExternalEvent } from \"../../types\";\n\n\ntype OzDraftRequest = Record<string, string> & { docCd: string };\n\n/**\n * OZ에서 getDraftData 요청 시 반환할 데이터를 생성하는 함수\n * \n * - OZ로부터 전달받은 JSON 문자열(`arg`)을 파싱하여 문서 코드(docCd)를 추출하고,\n * 해당 문서의 JSON 정보를 가져와 필요한 사인 정보만 key-value 형태로 반환한다.\n * - 사인FormId 값이 null일 경우, getInformation 결과로 채워진다.\n */\nexport async function getDraftDataHandler(\n rawOzRequest: string,\n documentIndexMap: Record<string, number>\n) {\n // 1️⃣ OZ에서 전달된 요청 데이터 파싱\n const parsedRequest = JSON.parse(rawOzRequest) as OzDraftRequest;\n // 문서코드와 formId:null 형태의 객체를 추출\n const { docCd, ...signKeyMap } = parsedRequest;\n\n // 2️⃣ 문서 코드(docCd)에 해당하는 글로벌 인덱스 조회\n const documentIndex = documentIndexMap[docCd];\n if (documentIndex === undefined) {\n throw new Error(`Invalid document code: ${docCd}`);\n }\n\n // 3️⃣ Bridge를 통해 해당 문서의 JSON 데이터 조회\n const { data } = await Bridge.nativeOz.getInformation({ command: `INPUT_JSON_AT=${documentIndex}` });\n if (data === null) {\n throw new Error(`Bridge returned null for document: ${docCd} (command=INPUT_JSON_AT=${documentIndex})`);\n }\n const documentJson = JSON.parse(data);\n\n // 4️⃣ 필요한 사인 정보만 key-value 형태로 반환\n const signDataMap = Object.keys(signKeyMap).reduce((acc, key) => {\n acc[key] = documentJson[key];\n\n return acc;\n }, {} as Record<string, string>);\n\n return { signDataMap, docCd };\n}\n\n/**\n * 주어진 문서 인덱스 목록(`indexList`)에 대해\n * 각 문서의 중간저장 데이터를 순차적으로 요청합니다.\n *\n * @param indexList - 중간저장 데이터를 요청할 문서의 인덱스 배열\n */\nexport async function triggerDraftDataByIndexList(indexList: number[]) {\n for (let i = 0; i < indexList.length; i++) {\n await Bridge.nativeOz.triggerExternalEventByDocIndex({ param1: OZTriggerExternalEvent.GetDraftData, docIndex: indexList[i]!, });\n }\n}","import { Bridge } from \"sales-frontend-bridge\";\n\nimport { getReportCountMemo } from './oz-wrapper-util';\n\n/**\n * 서식 검증 시, 빈 서식에 포커스를 줄지 제어하는 브릿지 유틸\n */\n\n/**\n * 유효성 검사 시 미입력된 컴포넌트에 포커스 설정 여부를 지정\n * \n * @param enable - true면 포커스 활성화, false면 비활성화\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nasync function setFocusOnValidation(enable: boolean, reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n const expectedValue = enable ? '1' : '0';\n\n const { data: prev } = await Bridge.nativeOz.getGlobal({ key: 'chkFlag', docIndex: 0 });\n\n // 첫번째 doc에 대해서 기 입력된 값을 검사해서 일치하면 조기탈출\n if (prev === expectedValue) {\n return;\n }\n\n for (let i = 0; i < count; i++) {\n await Bridge.nativeOz.setGlobal({ key: 'chkFlag', value: expectedValue, docIndex: i });\n }\n\n return;\n}\n\n/**\n * 유효성 검사 시 미입력된 컴포넌트에 자동으로 포커스를 맞추도록 설정\n * \n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function enableFocusOnValidation(reportCount?: number) {\n return setFocusOnValidation(true, reportCount);\n}\n\n/**\n * 유효성 검사 시 미입력된 컴포넌트에 포커스가 가지 않도록 설정\n * \n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function disableFocusOnValidation(reportCount?: number) {\n return setFocusOnValidation(false, reportCount);\n}\n","import { Bridge } from \"sales-frontend-bridge\";\n\nimport { PromiseWithResolvers } from '../../../internal';\nimport { commonPdfExportParam } from \"../../constant\";\nimport { OZExportEvent, OZViewerEvent } from \"../../types\";\n\nimport { getTotalPageMemo } from \"./oz-wrapper-util\";\n\nimport type { OzdFile } from \"sales-frontend-bridge\";\n\n\n/**\n * PDF 저장을 비동기적으로 처리하고, 저장된 파일 경로를 반환하는 함수\n * - OZD 전체를 하나의 PDF로 저장\n */\nexport async function SaveTotalPdf(policyNumber: string, fileName: string) {\n\n // 1페이지부터\n const startPage = 1;\n // 전체 페이지 수 가져오기\n const endPage = await getTotalPageMemo();\n\n return await SavePdf({ policyNumber, fileName, startPage, endPage });\n\n}\n\n/**\n * PDF 저장을 비동기적으로 처리하고, 저장된 파일 경로를 반환하는 함수\n * - 개별 OZD를 PDF로 저장하는 함수\n */\nexport async function SaveSinglePdf(\n policyNumber: string,\n { startPage, endPage, docCode: fileName }: OzdFile\n) {\n\n return await SavePdf({ policyNumber, fileName, startPage, endPage });\n}\n\n\ntype SavePdfProps = Pick<OzdFile, \"startPage\" | \"endPage\"> & {\n /** 증권번호 */\n policyNumber: string;\n /** PDF 파일이름(확장자 제외) */\n fileName: string;\n}\nasync function SavePdf({ policyNumber, fileName, startPage, endPage }: SavePdfProps) {\n // CustomEvent로부터 전달될 파일 경로를 기다리기 위한 Promise 생성\n const { promise, resolve } = PromiseWithResolvers<string>();\n\n // OZExportCommand 이벤트가 발생하면, 파일 경로를 resolve하여 Promise 완료\n window.addEventListener(\n OZViewerEvent.OZExportCommand,\n // 이벤트를 CustomEvent로 타입 캐스팅하고, detail에서 파일 경로 추출\n (e: Event) => resolve((e as CustomEvent<OZExportEvent>).detail.filepaths),\n // 이벤트 리스너는 한 번만 실행되도록 설정\n { once: true }\n );\n\n\n // OZ 브릿지를 통해 PDF 저장 명령 실행\n await Bridge.nativeOz.savePdf({\n // PDF 저장은 증번폴더/파일이름.pdf로 생성\n policyNumber,\n param: [\n // 저장할 파일명 설정\n `pdf.filename=${fileName}.pdf`,\n // 1페이지부터 마지막 페이지까지 저장\n `export.pages=${startPage}-${endPage}`,\n // 공통 PDF 내보내기 파라미터 추가\n ...commonPdfExportParam\n ].join('\\n')\n });\n\n // OZExportCommand 이벤트로부터 전달된 파일 경로를 기다림\n const filepath = await promise;\n\n // 최종적으로 파일 경로 반환\n return filepath;\n}","import { Bridge } from \"sales-frontend-bridge\";\n\nimport { getTotalPageMemo } from './oz-wrapper-util';\n\n/**\n * OZ 서식 검증용 브릿지 유틸\n */\n\n/**\n * 유효성을 체크할 doc들의 index를 배열로 입력받는다\n *\n * 모두 유효하면 true를 리턴한다\n *\n * documentInfo의 complete를 계산할때 사용한다\n *\n * 서명패드가 열려있는 상태에서 INPUT_CHECK_VALIDITY로 검사하면 서명패드가 꺼져서 onValueChange에서는 INVALID_INFO_JSON을 사용한다\n */\nexport async function checkDocumentsValidityByIndex(indexList: number[]) {\n // INVALID_INFO_JSON_AT은 valid한 경우 ''를 리턴한다\n const VALID = '';\n for (let i = 0; i < indexList.length; i++) {\n const command = `INVALID_INFO_JSON_AT=${indexList[i]}`;\n const { data } = await Bridge.nativeOz.getInformation({ command });\n\n if (data !== VALID) {\n // 유효하지 않으면 조기탈출\n return false;\n }\n }\n\n return true\n}\n\n/**\n * 지정된 페이지 범위에 대해 유효성 검사를 수행합니다.\n *\n * 유효성 검사는 1페이지부터 지정된 마지막 페이지까지 진행되며,\n * - pageChange 이벤트 내부에서는 현재 페이지 이전까지만 검사\n * - 서명바로가기, 미입력 서명 바로가기, 청약문서 최종 확인하기 버튼을 눌렀을때는 전체 페이지 검사\n *\n * @param pageCount - 유효성 검사를 수행할 페이지의 총 개수. (생략하면 자동으로 전체 페이지 수를 계산하여 사용)\n * @returns 모든 페이지가 유효한 경우 true, 하나라도 유효하지 않으면 false를 반환합니다.\n */\nexport async function validateAllPages(pageCount?: number) {\n // pageCount가 주어지지 않으면 전체 페이지 수를 계산하여 사용\n const count = pageCount ?? await getTotalPageMemo();\n\n for (let i = 1; i <= count; i++) {\n // 캐시 기반 validation 검사\n const isValid = await checkValidPageMemo(i);\n\n // 페이지 유효성 검사가 실패하면 즉시 종료\n if (!isValid) {\n return false;\n }\n }\n\n // 모든 페이지가 유효한 경우 true 반환\n return true;\n}\n\n\n/**\n * 페이지 유효성 검사 결과를 캐싱하는 유틸리티\n *\n * - 동일 페이지에 대한 중복 호출을 방지\n * - validation 결과가 false인 경우에는 캐시에 저장하지 않음\n */\nexport const checkValidPageMemo = (() => {\n // ✅ 페이지 번호를 키로 사용하여 Promise<boolean> 형태로 결과를 캐싱\n const cache = new Map<number, Promise<boolean>>();\n\n /**\n * 주어진 페이지가 유효한지 검사\n *\n * @param page 검사할 페이지 번호\n * @returns 페이지 유효 여부 (Promise<boolean>)\n */\n async function checkValidPage(page: number): Promise<boolean> {\n const cached = cache.get(page);\n if (cached) {\n // 캐시에 이미 결과(Promise)가 있다면 재사용\n return cached;\n }\n\n const VALID = 'valid';\n const command = `INPUT_CHECK_VALIDITY_PAGE_AT=${page}`;\n\n // ⚙️ 네이티브 호출을 Promise로 감싸서 즉시 캐시에 저장\n // (중복 요청을 방지하기 위함)\n const promise = (async () => {\n try {\n const { data } = await Bridge.nativeOz.getInformation({ command });\n const isValid = data === VALID;\n\n // ❌ 유효하지 않은(false) 결과는 캐시에 저장하지 않음\n if (!isValid) {\n cache.delete(page);\n }\n\n return isValid;\n } catch (err) {\n // ⚠️ 호출 실패 시 캐시에서 제거하여 다음 요청 시 재시도 가능하도록 함\n cache.delete(page);\n throw err;\n }\n })();\n\n // ⏳ 진행 중인 Promise를 캐시에 저장 (중복 호출 방지)\n cache.set(page, promise);\n\n // 결과 반환\n return promise;\n }\n\n /**\n * 전체 캐시를 초기화합니다.\n */\n checkValidPage.clearCache = () => {\n cache.clear();\n };\n\n /**\n * 특정 페이지의 캐시만 삭제합니다.\n * \n * @param page 삭제할 페이지 번호\n */\n checkValidPage.clearCacheByPage = (page: number) => {\n cache.delete(page);\n };\n\n return checkValidPage;\n})();\n","import { DeepCopy } from \"../../internal\";\n\nimport type { FormInfo } from \"sales-frontend-bridge\";\n\n/**\n * 문서 데이터에 페이지 범위를 채워주는 함수\n * @param {Array} data - 문서 그룹 데이터\n * @param {Array<number>} pages - 각 문서의 페이지 수\n * @returns {Array} - startPage, endPage가 채워진 새 데이터\n */\nexport function categorizeByPageRange(data: FormInfo[], pageCounts: number[]) {\n let currentPage = 1;\n let pageIndex = 0;\n\n // 깊은 복사로 원본 변형 방지\n const result = DeepCopy(data);\n\n result.forEach(group => {\n group.startPage = currentPage;\n\n group.doc.forEach(doc => {\n const pageCount = pageCounts[pageIndex++]!;\n doc.startPage = currentPage;\n doc.endPage = currentPage + pageCount - 1;\n currentPage += pageCount;\n });\n\n group.endPage = group.doc[group.doc.length - 1]!.endPage;\n });\n\n return result;\n}","import { debounce } from 'sales-frontend-utils';\n\n/**\n * 📘 ValueChangeDebounceUtil\n *\n * 문서의 OnValueChange 이벤트를 debounce 처리하기 위한 유틸\n *\n * - 동일한 문서 인덱스에서 연속 호출 시 debounce\n * - 다른 문서 인덱스는 독립적으로 debounce 처리\n */\n\n// 문서 인덱스별로 debounce 핸들러를 저장\nconst valueChangeDebounceMap = new Map<string, ReturnType<typeof debounce>>();\n\n/**\n * 특정 문서 인덱스의 OnValueChanged 핸들러를 debounce 처리하여 반환\n *\n * @param docIndex - 문서 인덱스 (string)\n * @param onValueChanged - debounce 후 실행할 콜백\n * @returns debounce된 핸들러 함수\n */\nexport function getDebouncedValueChangeHandler(\n docIndex: string,\n onValueChanged: (docIndex: string) => void\n) {\n // 서명패드에 수정이 일어나면 0.5초동안 디바운스 처리\n const DEBOUNCE_DELAY = 1000 * 0.5;\n\n // 이미 debounce된 핸들러가 있다면 그대로 사용\n const existingHandler = valueChangeDebounceMap.get(docIndex);\n if (existingHandler) {\n return existingHandler;\n }\n\n // 새로운 debounce 핸들러 생성\n const debouncedHandler = debounce((idx: string) => {\n onValueChanged(idx);\n }, DEBOUNCE_DELAY);\n\n valueChangeDebounceMap.set(docIndex, debouncedHandler);\n\n return debouncedHandler;\n}\n\n/**\n * 모든 문서 인덱스의 debounce 핸들러 초기화\n */\nexport function clearValueChangeDebounceHandlers() {\n valueChangeDebounceMap.clear();\n}\n"]}
|