{"file":"index.html","lang":"html","line_start":52,"line_end":52,"block_type":"line","text":"초기 호출: 페이지 로드 시 현재 화면 너비에 따라 클래스 설정","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"index.html","lang":"html","line_start":55,"line_end":55,"block_type":"line","text":"화면 크기 변경 시 호출","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/adminApi.ts","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"[관리자] 질변코드검색","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/adminApi.ts","lang":"js","line_start":45,"line_end":45,"block_type":"jsdoc","text":"관리자 신규등록","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/adminApi.ts","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"관리자 상세조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/adminApi.ts","lang":"js","line_start":59,"line_end":59,"block_type":"jsdoc","text":"관리자 수정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/adminApi.ts","lang":"js","line_start":66,"line_end":66,"block_type":"jsdoc","text":"관리자 삭제","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/advertisementApi.ts","lang":"js","line_start":76,"line_end":76,"block_type":"jsdoc","text":"[관리자] 공고","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/advertisementApi.ts","lang":"js","line_start":78,"line_end":78,"block_type":"jsdoc","text":"광고 신규등록","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/advertisementApi.ts","lang":"js","line_start":103,"line_end":103,"block_type":"jsdoc","text":"광고 상세조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/advertisementApi.ts","lang":"js","line_start":112,"line_end":112,"block_type":"jsdoc","text":"광고 상세(통계 탭)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/advertisementApi.ts","lang":"js","line_start":117,"line_end":117,"block_type":"line","text":"dateType이 day인 경우","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/advertisementApi.ts","lang":"js","line_start":139,"line_end":139,"block_type":"jsdoc","text":"광고 수정","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/advertisementApi.ts","lang":"js","line_start":165,"line_end":165,"block_type":"jsdoc","text":"광고 삭제","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agenciesApi.ts","lang":"js","line_start":16,"line_end":16,"block_type":"jsdoc","text":"분석관리 화면 노출여부 (0: 미노출 | 1: 분석목록만 | 2: 분석목록+상세팝업)","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agenciesApi.ts","lang":"js","line_start":49,"line_end":49,"block_type":"jsdoc","text":"분석관리 화면 노출여부 (0: 미노출 | 1: 분석목록만 | 2: 분석목록+상세팝업)","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agenciesApi.ts","lang":"js","line_start":61,"line_end":61,"block_type":"jsdoc","text":"분석관리 화면 노출여부 (0: 미노출 | 1: 분석목록만 | 2: 분석목록+상세팝업)","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agenciesApi.ts","lang":"js","line_start":71,"line_end":71,"block_type":"jsdoc","text":"[관리자] 기업","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agenciesApi.ts","lang":"js","line_start":73,"line_end":73,"block_type":"jsdoc","text":"기업 전체조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agenciesApi.ts","lang":"js","line_start":86,"line_end":86,"block_type":"jsdoc","text":"기업 신규등록","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agenciesApi.ts","lang":"js","line_start":93,"line_end":93,"block_type":"jsdoc","text":"기업 상세조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agenciesApi.ts","lang":"js","line_start":100,"line_end":100,"block_type":"jsdoc","text":"기업 수정","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agenciesApi.ts","lang":"js","line_start":107,"line_end":107,"block_type":"jsdoc","text":"기업 삭제","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":10,"line_end":10,"block_type":"jsdoc","text":"과금 방식 — PREPAID(선불, 추후 지원)는 등록/수정 시 서버가 거부","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"과금 방식(default POSTPAID). PREPAID는 UI 노출만, 선택 불가(추후 지원)","hangul_chars":16,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":40,"line_end":40,"block_type":"jsdoc","text":"계약 구독계정수(하한). 미설정 시 null — 하한 판정 skip","hangul_chars":17,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"회계팀 이메일 — 정산 청구·안내 메일(구매내역서 첨부) 수신처. FREE면 선택값","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":59,"line_end":59,"block_type":"jsdoc","text":"상세조회 응답에서만 내려오는 값 — 해당 기업의 현재 활성 구독계정수","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":73,"line_end":73,"block_type":"jsdoc","text":"과금 방식(default POSTPAID). PREPAID는 서버가 거부(추후 지원)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":75,"line_end":75,"block_type":"jsdoc","text":"계약 구독계정수(하한). 미설정 시 null","hangul_chars":13,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":77,"line_end":77,"block_type":"jsdoc","text":"회계팀 이메일. FREE가 아니면 필수","hangul_chars":12,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":88,"line_end":88,"block_type":"jsdoc","text":"과금 방식(default POSTPAID). PREPAID는 서버가 거부(추후 지원)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":90,"line_end":90,"block_type":"jsdoc","text":"계약 구독계정수(하한). 미설정 시 null","hangul_chars":13,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":92,"line_end":92,"block_type":"jsdoc","text":"회계팀 이메일. FREE가 아니면 필수","hangul_chars":12,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":96,"line_end":96,"block_type":"jsdoc","text":"[관리자] 기업 계약정보","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":98,"line_end":98,"block_type":"jsdoc","text":"기업 계약정보 신규등록","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":105,"line_end":105,"block_type":"jsdoc","text":"기업 계약정보 상세조회","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":112,"line_end":112,"block_type":"jsdoc","text":"기업 계약정보 수정","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyContractsApi.ts","lang":"js","line_start":122,"line_end":122,"block_type":"jsdoc","text":"기업 계약정보 삭제","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":6,"line_end":7,"block_type":"jsdoc","text":"기업FC 사용중지/구독해지 seat 하한 판정(task 4-4) 응답 계약.\n 서버는 { code, message, data: {current, after, seat} } 형태로 내려준다(중첩 data).","hangul_chars":30,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":18,"line_end":19,"block_type":"jsdoc","text":"resignAgencyFc/unsubscribeAgencyFc 공통 응답 — 성공 시 true, 실패 시 SeatLimitResult,\n 응답 데이터를 얻지 못한 경우(네트워크 오류 등) false.","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":22,"line_end":22,"block_type":"jsdoc","text":"성공(res===true) 여부 판별. `if (res)`로 판정하면 실패 객체(truthy)도 성공으로 오분기되므로 반드시 이 헬퍼 사용","hangul_chars":34,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":26,"line_end":28,"block_type":"jsdoc","text":"SEAT_BELOW_CONTRACT_WARN(내부 관리자 경고, force 재요청으로 강행 가능) 여부.\n 반환 타입을 code로 판별되는 부분집합으로 좁혀, else 분기에서 나머지 실패 케이스(다른 code/message)가\n 타입상 `never`로 소거되지 않고 남도록 한다.","hangul_chars":66,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":36,"line_end":36,"block_type":"jsdoc","text":"SEAT_BELOW_CONTRACT(즉시 차단, force 무시) 여부. isSeatWarn과 동일한 이유로 부분집합으로 좁힘","hangul_chars":23,"class":"1_policy","tags":["1_policy","2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":71,"line_end":71,"block_type":"jsdoc","text":"기업조직(task-688): 소속 조직 ID(ULID 26자, 미배정 시 null)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":73,"line_end":73,"block_type":"jsdoc","text":"기업조직(task-688): 소속 조직명(orgId JOIN 파생, 미배정 시 null)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":75,"line_end":75,"block_type":"jsdoc","text":"기업조직: 소속 조직 전체 경로(\"대구 > 개발팀\", 미배정 시 null)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":77,"line_end":77,"block_type":"jsdoc","text":"기업조직(task-688): 조직관리자 자격(1=지정). 서버 목록/상세 응답 미반환(gap) — 반영 시 초기값으로 사용","hangul_chars":34,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":131,"line_end":131,"block_type":"jsdoc","text":"기업조직: 신규 회원 소속 조직 ID","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":133,"line_end":133,"block_type":"jsdoc","text":"기업조직: 조직관리자 지정 여부","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":143,"line_end":143,"block_type":"jsdoc","text":"기업조직(task-688): 소속 조직 변경. null이면 소속 해제","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":147,"line_end":147,"block_type":"jsdoc","text":"[관리자] 기업FC","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":149,"line_end":149,"block_type":"jsdoc","text":"기업FC 목록 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":157,"line_end":157,"block_type":"jsdoc","text":"기업FC 신규등록","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":164,"line_end":164,"block_type":"jsdoc","text":"기업별 다음구독일 조회","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":174,"line_end":174,"block_type":"jsdoc","text":"기업별 신규구독 적용 상품 미리보기","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":183,"line_end":183,"block_type":"jsdoc","text":"기업FC 상세조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":190,"line_end":190,"block_type":"jsdoc","text":"기업FC 수정","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":197,"line_end":197,"block_type":"jsdoc","text":"기업FC 소속 조직 배정/해제 (단건) — 기존 edit 엔드포인트에 orgId만 전달(UpdateFcDto PartialType)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":207,"line_end":209,"block_type":"jsdoc","text":"기업FC 소속 조직 일괄 배정 — PATCH /admin/agency-fc/assign-org { memIds, orgId } 단일 호출.\n  서버(AgencyFcAdminController)는 ApiResponseInterceptor 미적용 → { updated } 원형 반환(언랩 불필요).\n  orgId는 필수(서버 AssignOrgDto @IsString) — 이 엔드포인트로는 미배정/해제 불가.","hangul_chars":49,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":219,"line_end":220,"block_type":"jsdoc","text":"조직관리자 일괄 지정/해제 — PATCH /admin/agency-fc/org-manager { memIds, isOrgManager }.\n  기업FC(MEM002)만 대상. { updated }=실제 갱신 수. 원형 반환(언랩 불필요).","hangul_chars":30,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":230,"line_end":232,"block_type":"jsdoc","text":"기업FC 탈퇴(사용중지/재사용).\n seat 하한 판정(task 4-4): force 미지정 & 내부 관리자 & 처리 후 활성수<하한 → SEAT_BELOW_CONTRACT_WARN.\n 기업 관리자는 SEAT_BELOW_CONTRACT로 즉시 차단(force 무시). force=true 재요청 시 강행 처리.","hangul_chars":52,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":241,"line_end":241,"block_type":"jsdoc","text":"기업FC 삭제","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":248,"line_end":248,"block_type":"jsdoc","text":"기업FC 최초구독처리","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":259,"line_end":260,"block_type":"jsdoc","text":"기업FC 구독해지처리.\n seat 하한 판정(task 4-4): resignAgencyFc와 동일한 SEAT_BELOW_CONTRACT(_WARN) 분기.","hangul_chars":18,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":269,"line_end":269,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":279,"line_end":279,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":289,"line_end":289,"block_type":"jsdoc","text":"기업FC일괄 구독처리 엑셀 양식 다운로드","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":301,"line_end":301,"block_type":"jsdoc","text":"기존 기업FC 조직·관리자 권한 엑셀 양식 다운로드","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":314,"line_end":314,"block_type":"jsdoc","text":"기존 기업FC 계정수정 엑셀 양식 다운로드","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":324,"line_end":324,"block_type":"jsdoc","text":"엑셀 업로드","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":333,"line_end":333,"block_type":"line","text":"file FormData에서 key-value 추출해서 다시 formData에 append","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":352,"line_end":352,"block_type":"jsdoc","text":"기업FC일괄 구독처리 엑셀 업로드","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":362,"line_end":362,"block_type":"line","text":"file FormData에서 key-value 추출해서 다시 formData에 append","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":381,"line_end":381,"block_type":"jsdoc","text":"기존 기업FC 조직·관리자 권한 엑셀 업로드","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyFcApi.ts","lang":"js","line_start":407,"line_end":407,"block_type":"jsdoc","text":"기존 기업FC 계정수정 엑셀 업로드","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyOrganizationApi.ts","lang":"js","line_start":4,"line_end":10,"block_type":"jsdoc","text":"[관리자] 기업조직(task-688)\n- 서버 컨트롤러(AdminAgencyOrganizationController)는 ApiResponseInterceptor로\n  { code, message, data } 로 감싸서 응답한다(전역 미적용). 따라서 여기서 res.data.data 로 언랩한다.\n- orgId는 ULID(26자) 문자열.\n- 가변깊이 트리: org_parent_id/org_depth 로 계층 구성. 노드 이동은 PUT :orgId/move(newParentId).","hangul_chars":60,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyOrganizationApi.ts","lang":"js","line_start":16,"line_end":16,"block_type":"jsdoc","text":"조직트리(task-688): 부모 조직 ID(루트면 null)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyOrganizationApi.ts","lang":"js","line_start":18,"line_end":18,"block_type":"jsdoc","text":"조직트리(task-688): 트리 깊이(루트=0)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyOrganizationApi.ts","lang":"js","line_start":37,"line_end":37,"block_type":"line","text":"* 조직관리자(복수 가능, 읽기 표시 — 지정/해제는 회원 상세에서)","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyOrganizationApi.ts","lang":"js","line_start":78,"line_end":78,"block_type":"jsdoc","text":"생성은 orgName 필수. orgParentId 미지정/null이면 루트로 생성","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencyOrganizationApi.ts","lang":"js","line_start":93,"line_end":93,"block_type":"jsdoc","text":"기업 조직 목록 조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyOrganizationApi.ts","lang":"js","line_start":106,"line_end":106,"block_type":"jsdoc","text":"[기업관리자] 자기 기업 조직 목록 조회 — GET /corp/organizations (조직 필터 옵션용, agcId는 세션에서 확정)","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyOrganizationApi.ts","lang":"js","line_start":119,"line_end":119,"block_type":"jsdoc","text":"기업 조직 상세 조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyOrganizationApi.ts","lang":"js","line_start":128,"line_end":128,"block_type":"jsdoc","text":"기업 조직 신규 등록 — 성공 시 상세, 실패 시 { code, message }","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyOrganizationApi.ts","lang":"js","line_start":135,"line_end":135,"block_type":"jsdoc","text":"기업 조직 수정 — 성공 시 상세, 실패 시 { code, message }","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyOrganizationApi.ts","lang":"js","line_start":142,"line_end":144,"block_type":"jsdoc","text":"기업 조직 이동(부분트리 재배치) — PUT :orgId/move { newParentId }.\n  newParentId=null이면 루트로 이동. 순환/타기업 이동은 서버가 차단(E0311/E0309).\n  성공 시 상세(data 언랩), 실패 시 { code, message }.","hangul_chars":43,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencyOrganizationApi.ts","lang":"js","line_start":153,"line_end":153,"block_type":"jsdoc","text":"기업 조직 삭제(하위 포함) — 회원은 미배정 전환. 성공 시 삭제 결과, 실패 시 { code, message }","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":3,"line_end":3,"block_type":"jsdoc","text":"정산상태 (ast_settle_status): PENDING(미정산) | CONFIRMED(정산확정)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":6,"line_end":6,"block_type":"jsdoc","text":"정산반영 (som_settle_action): INCLUDE(반영) | EXCLUDE(미반영) | CARRYOVER(이월)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":9,"line_end":9,"block_type":"jsdoc","text":"입금완료/정산확정 등 일괄처리 API 공통 응답 형태 (정산 단위 — astId 기준)","hangul_chars":25,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":15,"line_end":16,"block_type":"jsdoc","text":"구독 주문 건별/일괄 정산반영 변경(POST /:astId/orders/settle-action) 응답 형태.\n 주문 단위 처리이므로 skipped 항목 키는 astId가 아닌 ordId.","hangul_chars":34,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":22,"line_end":22,"block_type":"jsdoc","text":"정산 상세 요약 — 주문 반영 선택에 따라 실시간 계산(반영 변경 시 재조회)","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":24,"line_end":24,"block_type":"jsdoc","text":"정산수 — 전월 발생 구독주문 중 취소·실패 제외 건수(map 건수)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":26,"line_end":26,"block_type":"jsdoc","text":"반영 건수","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":28,"line_end":28,"block_type":"jsdoc","text":"미반영 건수","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"이월 건수","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":32,"line_end":32,"block_type":"jsdoc","text":"정산금액 (정산수 전체 합)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"정산 반영금액 (반영(INCLUDE) 주문만 합, 실시간)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":58,"line_end":58,"block_type":"jsdoc","text":"정산상태 (신규) — 서버 미배포 구간 대비 optional","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":60,"line_end":60,"block_type":"jsdoc","text":"정산수 — 전월 발생 구독주문 중 취소·실패 제외 건수(map 건수)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":62,"line_end":62,"block_type":"jsdoc","text":"정산확정수 — 정산 반영(청구) 처리한 건수. 미정산이면 null","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":64,"line_end":64,"block_type":"jsdoc","text":"정산미반영 — 상세에서 청구 제외한 건수","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":66,"line_end":66,"block_type":"jsdoc","text":"정산이월수 — 다음 달로 이월한 건수","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":68,"line_end":68,"block_type":"jsdoc","text":"정산확정금액 — 정산확정 시점 스냅샷. 미정산이면 null","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":70,"line_end":70,"block_type":"jsdoc","text":"세금계산서 발행여부(수기) — 0|1","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":72,"line_end":72,"block_type":"jsdoc","text":"세금계산서 발행일(수기)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":74,"line_end":74,"block_type":"jsdoc","text":"정산확정일시 — 미정산이면 null","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":89,"line_end":89,"block_type":"jsdoc","text":"회계팀 이메일(계약의 act_accounting_email) — 상세 조회 전용, 목록엔 내려오지 않음(optional)","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":91,"line_end":91,"block_type":"jsdoc","text":"정산 요약 — 상세 조회 전용, 목록엔 내려오지 않음(optional)","hangul_chars":19,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":95,"line_end":95,"block_type":"jsdoc","text":"기업 정산 주문 목록 조회 필터 (신규)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":97,"line_end":97,"block_type":"jsdoc","text":"정산반영 필터: INCLUDE(반영)/EXCLUDE(미반영)/CARRYOVER(이월) — 미지정 시 전체","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":99,"line_end":99,"block_type":"jsdoc","text":"사용여부 필터: used(사용)/unused(미사용) — 미지정 시 전체","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":106,"line_end":106,"block_type":"jsdoc","text":"현재 검색조건(주문상태·정산반영·소속조직·사용여부 등) 기준 합산 — 상세용 신규","hangul_chars":32,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":108,"line_end":108,"block_type":"jsdoc","text":"조회 건수(정산 대상, 취소·실패 제외)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":110,"line_end":110,"block_type":"jsdoc","text":"총 결제금액 SUM","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":112,"line_end":112,"block_type":"jsdoc","text":"정산반영=INCLUDE 건수","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":114,"line_end":114,"block_type":"jsdoc","text":"정산반영=INCLUDE 금액 합","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":124,"line_end":124,"block_type":"jsdoc","text":"소속조직 전체 경로 (예: \"본부 > 1팀\") — 미배정이면 null. 서버 미배포 구간 대비 optional","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":138,"line_end":138,"block_type":"jsdoc","text":"분석예약수(진행중) — 기존부터 컬럼에서 참조되던 필드, 응답 타입 보강","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":172,"line_end":173,"block_type":"jsdoc","text":"정산반영 — INCLUDE(반영)/EXCLUDE(미반영)/CARRYOVER(이월).\n 서버 응답에서 order 하위가 아닌 최상위 필드로 내려온다(settlement-admin.dto.ts GetAgencySettlementOrderDto 참고)","hangul_chars":34,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":175,"line_end":175,"block_type":"jsdoc","text":"이월 편입 시 원 정산 id","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":180,"line_end":180,"block_type":"jsdoc","text":"[관리자] 기업 정산","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":182,"line_end":182,"block_type":"jsdoc","text":"기업 정산 상세조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":191,"line_end":191,"block_type":"jsdoc","text":"기업 정산 주문 목록 (settleAction/used 필터 지원)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":204,"line_end":204,"block_type":"jsdoc","text":"기업 정산 구독내역 엑셀 다운로드","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":214,"line_end":214,"block_type":"jsdoc","text":"기업 정산 입금완료처리 (paidAt: YYYY-MM-DD, 필수)","hangul_chars":12,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":227,"line_end":227,"block_type":"jsdoc","text":"기업 정산 입금철회처리","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":237,"line_end":237,"block_type":"jsdoc","text":"기업 정산 정산확정 처리 (미정산 → 정산확정, 일괄/단건 공용)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":247,"line_end":247,"block_type":"jsdoc","text":"기업 정산 정산확정 해제 (정산확정 → 미정산)","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":257,"line_end":257,"block_type":"jsdoc","text":"기업 정산 세금계산서 발행여부 수기 기록","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":268,"line_end":268,"block_type":"jsdoc","text":"구독 주문 건별/일괄 정산반영 변경 (INCLUDE/EXCLUDE/CARRYOVER). ast_settle_status=PENDING일 때만 허용","hangul_chars":19,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":281,"line_end":282,"block_type":"jsdoc","text":"구독 주문 정산단가 일괄수정 — 전월 구독수 기준 단가 변동 대응.\n  ord_settlement_price만 갱신(결제금액 불변). ast_settle_status=PENDING일 때만 허용","hangul_chars":39,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":295,"line_end":295,"block_type":"jsdoc","text":"정산 안내 메일 발송 (정산확정 상태에서만 허용)","hangul_chars":19,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencySettlementsApi.ts","lang":"js","line_start":310,"line_end":310,"block_type":"jsdoc","text":"구매내역서 PDF 다운로드 (정산확정 상태에서만 허용)","hangul_chars":20,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/agencyTermsApi.ts","lang":"js","line_start":35,"line_end":35,"block_type":"jsdoc","text":"기업별 약관 (task-12)","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyTermsApi.ts","lang":"js","line_start":67,"line_end":67,"block_type":"jsdoc","text":"보험유니버스 기본 약관","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyTermsApi.ts","lang":"js","line_start":74,"line_end":74,"block_type":"jsdoc","text":"상세조회","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/agencyTermsApi.ts","lang":"js","line_start":81,"line_end":81,"block_type":"jsdoc","text":"신규등록","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/alarmApi.ts","lang":"js","line_start":20,"line_end":20,"block_type":"jsdoc","text":"[관리자] 알람","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/alarmApi.ts","lang":"js","line_start":22,"line_end":22,"block_type":"jsdoc","text":"알람 목록","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/alarmApi.ts","lang":"js","line_start":29,"line_end":29,"block_type":"jsdoc","text":"알람 확인","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/alarmApi.ts","lang":"js","line_start":36,"line_end":36,"block_type":"jsdoc","text":"알람 삭제","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/alimtalkApi.ts","lang":"js","line_start":50,"line_end":50,"block_type":"jsdoc","text":"[관리자] 알림톡","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/analyzeApi.ts","lang":"js","line_start":3,"line_end":3,"block_type":"jsdoc","text":"주문상세(분석) 상세","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/analyzeApi.ts","lang":"js","line_start":5,"line_end":5,"block_type":"jsdoc","text":"다운로드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/analyzeApi.ts","lang":"js","line_start":13,"line_end":13,"block_type":"jsdoc","text":"다운로드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/analyzeApi.ts","lang":"js","line_start":21,"line_end":21,"block_type":"jsdoc","text":"B2C 다운로드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"* 조직관리자(corpOrg) 로그인 시 기업 아이디","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":73,"line_end":73,"block_type":"jsdoc","text":"기업관리자 역할: 최고관리자(CORP_SUPER) / 조직관리자(CORP_ORG). 서버가 내려줌","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":75,"line_end":75,"block_type":"jsdoc","text":"조직관리자 운영 가능 여부","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":77,"line_end":77,"block_type":"jsdoc","text":"조직관리자 로그인 시 회원 정보","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":81,"line_end":81,"block_type":"jsdoc","text":"분석관리 화면 노출여부 (0: 미노출 | 1: 분석목록만 | 2: 분석목록+상세팝업)","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":97,"line_end":97,"block_type":"jsdoc","text":"로그아웃","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":108,"line_end":108,"block_type":"jsdoc","text":"영업대리점 관리자 로그인","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":121,"line_end":121,"block_type":"jsdoc","text":"기업관리자 로그인","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":134,"line_end":134,"block_type":"jsdoc","text":"조직관리자 로그인 — 기업코드 + 회원 아이디/비밀번호 (자기 부분트리 운영 가능)","hangul_chars":31,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":147,"line_end":147,"block_type":"line","text":"* 서버 사유(예: E0102 소속 조직 미배정)를 로그인 화면 알림에 표기하기 위해 전달","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":153,"line_end":153,"block_type":"jsdoc","text":"[권한] 관리자 권한 목록 전체","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":160,"line_end":160,"block_type":"jsdoc","text":"[권한] 관리자 권한 생성","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":166,"line_end":166,"block_type":"jsdoc","text":"[권한] 관리자 권한 상세","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":174,"line_end":174,"block_type":"jsdoc","text":"[권한] 관리자 권한 수정","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":180,"line_end":180,"block_type":"jsdoc","text":"[권한] 관리자 권한 삭제","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/authApi.ts","lang":"js","line_start":188,"line_end":188,"block_type":"jsdoc","text":"[권한] 관리자 권한 매핑된 메뉴 코드 조회","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/b2cAnalyzeApi.ts","lang":"js","line_start":5,"line_end":5,"block_type":"jsdoc","text":"B2C 분석 목록 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/b2cAnalyzeApi.ts","lang":"js","line_start":11,"line_end":11,"block_type":"jsdoc","text":"B2C 분석 목록 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/b2cAnalyzeApi.ts","lang":"js","line_start":20,"line_end":20,"block_type":"jsdoc","text":"B2C 분석 상세 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/b2cAnalyzeApi.ts","lang":"js","line_start":26,"line_end":26,"block_type":"jsdoc","text":"기업 회원 목록 조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/b2cAnalyzeApi.ts","lang":"js","line_start":32,"line_end":32,"block_type":"jsdoc","text":"담당자 지정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/b2cAnalyzeApi.ts","lang":"js","line_start":40,"line_end":40,"block_type":"jsdoc","text":"B2C 분석 수정","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/b2cAnalyzeApi.ts","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"B2C 분석로그 목록 조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/b2cAnalyzeApi.ts","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"B2C 분석로그 목록 엑셀 다운로드","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/b2cAnalyzeApi.ts","lang":"js","line_start":61,"line_end":61,"block_type":"jsdoc","text":"B2C 분석로그 상세 조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/bannerApi.ts","lang":"js","line_start":18,"line_end":18,"block_type":"jsdoc","text":"BNN001: 메인, BNN002: 하단","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/bannerApi.ts","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"BNN001: 메인, BNN002: 하단","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/bannerApi.ts","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"BNN001: 메인, BNN002: 하단","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/bannerApi.ts","lang":"js","line_start":56,"line_end":56,"block_type":"jsdoc","text":"[관리자] 배너","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/bannerApi.ts","lang":"js","line_start":58,"line_end":58,"block_type":"jsdoc","text":"배너 신규등록","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/bannerApi.ts","lang":"js","line_start":80,"line_end":80,"block_type":"jsdoc","text":"배너 상세조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/bannerApi.ts","lang":"js","line_start":89,"line_end":89,"block_type":"jsdoc","text":"배너 수정","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/bannerApi.ts","lang":"js","line_start":111,"line_end":111,"block_type":"jsdoc","text":"배너 삭제","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":20,"line_end":20,"block_type":"jsdoc","text":"1: 공지사항 | 2: QNA | 3: FAQ","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":65,"line_end":65,"block_type":"jsdoc","text":"1: 공지사항 | 2: QNA | 3: FAQ","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":107,"line_end":107,"block_type":"jsdoc","text":"1: 공지사항 | 2: QNA | 3: FAQ","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":130,"line_end":130,"block_type":"jsdoc","text":"1: 공지사항 | 2: QNA | 3: FAQ","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":210,"line_end":210,"block_type":"jsdoc","text":"[관리자] 게시판(공지사항|FAQ|QNA)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":212,"line_end":212,"block_type":"jsdoc","text":"게시판 카테고리 전체조회","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":221,"line_end":221,"block_type":"jsdoc","text":"게시판 카테고리 신규등록","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":228,"line_end":228,"block_type":"jsdoc","text":"게시판 카테고리 상세조회","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":235,"line_end":235,"block_type":"jsdoc","text":"게시판 카테고리 수정","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":242,"line_end":242,"block_type":"jsdoc","text":"게시판 카테고리 삭제","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":249,"line_end":249,"block_type":"jsdoc","text":"게시글 신규등록","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":253,"line_end":253,"block_type":"line","text":"1. 파일 추가","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":274,"line_end":274,"block_type":"line","text":"JSON.stringify로 직렬화","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":285,"line_end":285,"block_type":"jsdoc","text":"게시글 상세조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":292,"line_end":292,"block_type":"jsdoc","text":"게시글 수정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":300,"line_end":300,"block_type":"line","text":"1. 파일 추가","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":330,"line_end":330,"block_type":"line","text":"nonFileObjects의 brfId 값을 Set으로 저장 (빠른 검색을 위해)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":332,"line_end":332,"block_type":"line","text":"reqFileObjects에서 nonFileIds에 없는 brfId 값만 필터링","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":337,"line_end":337,"block_type":"line","text":"1. 파일 추가","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":339,"line_end":339,"block_type":"line","text":"'file' 키로 파일 배열 추가","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":356,"line_end":356,"block_type":"line","text":"JSON.stringify로 직렬화","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":367,"line_end":367,"block_type":"jsdoc","text":"게시글 삭제","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":374,"line_end":374,"block_type":"jsdoc","text":"editor 이미지 업로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardApi.ts","lang":"js","line_start":391,"line_end":391,"block_type":"jsdoc","text":"미답변 게시글 조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardCommentApi.ts","lang":"js","line_start":15,"line_end":15,"block_type":"jsdoc","text":"1: 공지사항 | 2: QNA | 3: FAQ","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardCommentApi.ts","lang":"js","line_start":27,"line_end":27,"block_type":"jsdoc","text":"[관리자] 게시답변","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardCommentApi.ts","lang":"js","line_start":29,"line_end":29,"block_type":"jsdoc","text":"게시답변 신규등록","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardCommentApi.ts","lang":"js","line_start":36,"line_end":36,"block_type":"jsdoc","text":"게시답변 수정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/boardCommentApi.ts","lang":"js","line_start":45,"line_end":45,"block_type":"jsdoc","text":"게시답변 삭제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientApi.ts","lang":"js","line_start":32,"line_end":32,"block_type":"jsdoc","text":"[관리자] 고객사","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientApi.ts","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"고객사 전체조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientApi.ts","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"고객사 신규등록","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientApi.ts","lang":"js","line_start":54,"line_end":54,"block_type":"jsdoc","text":"고객사 상세조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientApi.ts","lang":"js","line_start":63,"line_end":63,"block_type":"jsdoc","text":"고객사 수정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientApi.ts","lang":"js","line_start":70,"line_end":70,"block_type":"jsdoc","text":"고객사 삭제","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientContractsApi.ts","lang":"js","line_start":55,"line_end":55,"block_type":"jsdoc","text":"[관리자] 고객사 계약정보","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientContractsApi.ts","lang":"js","line_start":57,"line_end":57,"block_type":"jsdoc","text":"고객사 계약 옵션 리스트 조회","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientContractsApi.ts","lang":"js","line_start":66,"line_end":66,"block_type":"jsdoc","text":"고객사 계약정보 신규등록","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientContractsApi.ts","lang":"js","line_start":73,"line_end":73,"block_type":"jsdoc","text":"고객사 계약정보 상세조회","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientContractsApi.ts","lang":"js","line_start":82,"line_end":82,"block_type":"jsdoc","text":"고객사 계약정보 수정","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientContractsApi.ts","lang":"js","line_start":92,"line_end":92,"block_type":"jsdoc","text":"고객사 계약정보 삭제","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientSettlementsApi.ts","lang":"js","line_start":45,"line_end":45,"block_type":"jsdoc","text":"[관리자] 고객사 정산","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientSettlementsApi.ts","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"고객사 정산 상세조회","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientSettlementsApi.ts","lang":"js","line_start":56,"line_end":56,"block_type":"jsdoc","text":"고객사 정산 주문 목록","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientSettlementsApi.ts","lang":"js","line_start":65,"line_end":65,"block_type":"jsdoc","text":"고객사 정산 입금완료처리","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/clientSettlementsApi.ts","lang":"js","line_start":75,"line_end":75,"block_type":"jsdoc","text":"고객사 정산 입금완료처리","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"COM001 : 중대질병 COM005 : 주의사항 COM006 : 숨은보험진단 COM007 : 숨은보험치아 COM010 : 치아(틀니) COM011 : 치아(1년) COM012 : 치아(5년)","hangul_chars":30,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":78,"line_end":78,"block_type":"jsdoc","text":"[관리자] 대조데이터 기본/상세","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":81,"line_end":81,"block_type":"jsdoc","text":"대조기본 신규등록","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":88,"line_end":88,"block_type":"jsdoc","text":"대조기본 상세조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":97,"line_end":97,"block_type":"jsdoc","text":"대조기본 수정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":104,"line_end":104,"block_type":"jsdoc","text":"대조기본 삭제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":111,"line_end":111,"block_type":"jsdoc","text":"대조기본 업로드","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":133,"line_end":133,"block_type":"jsdoc","text":"대조기본 다운로드","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":143,"line_end":143,"block_type":"jsdoc","text":"대조기본 양식 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":152,"line_end":152,"block_type":"jsdoc","text":"대조기본 직전 데이터 복구","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":161,"line_end":161,"block_type":"jsdoc","text":"대조상세 신규등록","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":171,"line_end":171,"block_type":"jsdoc","text":"대조상세 상세조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":180,"line_end":180,"block_type":"jsdoc","text":"대조상세 수정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":190,"line_end":190,"block_type":"jsdoc","text":"대조상세 삭제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":197,"line_end":197,"block_type":"jsdoc","text":"대조상세 업로드","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":218,"line_end":218,"block_type":"jsdoc","text":"대조상세 다운로드","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":231,"line_end":231,"block_type":"jsdoc","text":"대조상세 양식 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/compareApi.ts","lang":"js","line_start":240,"line_end":240,"block_type":"jsdoc","text":"대조상세 직전 데이터 복구","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/corpMyApi.ts","lang":"js","line_start":3,"line_end":5,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html): 기업/조직관리자 콘솔 마이페이지\n* - 기업관리자(CORP_SUPER) = 기업정보(screen-myCorp), 조직관리자(CORP_ORG) = 내 정보(screen-myOrg)\n* - 진입 전 현재 비밀번호 검증(verify-password) 필수 — 하단 \"개발팀 전달\" 지시","hangul_chars":64,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/corpMyApi.ts","lang":"js","line_start":7,"line_end":7,"block_type":"jsdoc","text":"비밀번호 정책: 8~16자리 영문자·숫자·특수문자(!@#$%^&*) 조합 (서버 corp-my.dto와 동일)","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/corpMyApi.ts","lang":"js","line_start":13,"line_end":13,"block_type":"jsdoc","text":"마이페이지 · 기업정보 (기업관리자 전용)","hangul_chars":16,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/corpMyApi.ts","lang":"js","line_start":25,"line_end":25,"block_type":"jsdoc","text":"기업정보 수정 — 변경할 항목만 전송","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/corpMyApi.ts","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"마이페이지 · 내 정보 (조직관리자 전용)","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/corpMyApi.ts","lang":"js","line_start":41,"line_end":41,"block_type":"jsdoc","text":"내 정보 수정 — 변경할 항목만 전송","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/corpMyApi.ts","lang":"js","line_start":49,"line_end":49,"block_type":"jsdoc","text":"수정 API 공통 결과 — 실패 시 서버 검증 메시지(비밀번호 정책 등) 전달","hangul_chars":25,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/corpMyApi.ts","lang":"js","line_start":64,"line_end":64,"block_type":"jsdoc","text":"마이페이지 진입 본인확인 — 현재 비밀번호 검증 (불일치 시 401 → false)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/corpMyApi.ts","lang":"js","line_start":73,"line_end":73,"block_type":"jsdoc","text":"기업정보 조회 (기업관리자 전용)","hangul_chars":13,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/corpMyApi.ts","lang":"js","line_start":80,"line_end":80,"block_type":"jsdoc","text":"기업정보 수정 — 비밀번호·회계팀 이메일만","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/corpMyApi.ts","lang":"js","line_start":85,"line_end":85,"block_type":"jsdoc","text":"내 정보 조회 (조직관리자 전용)","hangul_chars":12,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/corpMyApi.ts","lang":"js","line_start":92,"line_end":92,"block_type":"jsdoc","text":"내 정보 수정 — 회원명·연락처·이메일·비밀번호","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/courseApi.ts","lang":"js","line_start":84,"line_end":84,"block_type":"line","text":"검색용 타입","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/courseApi.ts","lang":"js","line_start":173,"line_end":173,"block_type":"jsdoc","text":"[관리자] 영상","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/courseApi.ts","lang":"js","line_start":175,"line_end":175,"block_type":"jsdoc","text":"영상 카테고리 전체조회","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/courseApi.ts","lang":"js","line_start":184,"line_end":184,"block_type":"jsdoc","text":"영상 카테고리 신규등록","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/courseApi.ts","lang":"js","line_start":191,"line_end":191,"block_type":"jsdoc","text":"영상 카테고리 상세조회","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/courseApi.ts","lang":"js","line_start":198,"line_end":198,"block_type":"jsdoc","text":"영상 카테고리 수정","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/courseApi.ts","lang":"js","line_start":205,"line_end":205,"block_type":"jsdoc","text":"영상 카테고리 삭제","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/courseApi.ts","lang":"js","line_start":213,"line_end":213,"block_type":"jsdoc","text":"영상 카테고리 신규등록","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/courseApi.ts","lang":"js","line_start":238,"line_end":238,"block_type":"jsdoc","text":"영상 카테고리 상세조회","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/courseApi.ts","lang":"js","line_start":245,"line_end":245,"block_type":"jsdoc","text":"영상 카테고리 수정","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/courseApi.ts","lang":"js","line_start":273,"line_end":273,"block_type":"jsdoc","text":"영상 카테고리 삭제","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/courseApi.ts","lang":"js","line_start":282,"line_end":282,"block_type":"jsdoc","text":"영상 영상평 상세조회","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/courseApi.ts","lang":"js","line_start":289,"line_end":289,"block_type":"jsdoc","text":"영상평 수정(노출 여부 수정)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/courseApi.ts","lang":"js","line_start":296,"line_end":296,"block_type":"jsdoc","text":"영상 영상평 삭제","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":3,"line_end":3,"block_type":"line","text":"대분류 타입","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"중분류 타입","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"소분류 타입","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"세분류 타입","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"세세분류 타입","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"세세세분류 타입","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"통합 타입 (트리 구조용)","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"1: 대분류, 2: 중분류, 3: 소분류, 4: 세분류, 5: 세세분류, 6: 세세세분류","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":99,"line_end":99,"block_type":"line","text":"평면화된 질병 데이터 타입","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":101,"line_end":101,"block_type":"line","text":"\"대\", \"중\", \"소\", \"세\", \"세세\", \"세세세\"","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":115,"line_end":117,"block_type":"line","text":"============================================\n목록 조회 API\n============================================","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":120,"line_end":120,"block_type":"jsdoc","text":"목록 조회 (계층별)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":140,"line_end":140,"block_type":"line","text":"백엔드가 { count, list } 형태로 반환하는 경우","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":148,"line_end":148,"block_type":"line","text":"백엔드가 { success, list, total } 형태로 반환하는 경우","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":154,"line_end":154,"block_type":"jsdoc","text":"평면화된 전체 목록 조회 (페이지네이션 지원)","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":181,"line_end":181,"block_type":"jsdoc","text":"평면화된 목록 삭제","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":194,"line_end":194,"block_type":"jsdoc","text":"대분류 상세조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":203,"line_end":203,"block_type":"jsdoc","text":"대분류 등록","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":217,"line_end":217,"block_type":"jsdoc","text":"대분류 수정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":231,"line_end":231,"block_type":"jsdoc","text":"대분류 삭제","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":244,"line_end":244,"block_type":"jsdoc","text":"중분류 상세조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":253,"line_end":253,"block_type":"jsdoc","text":"중분류 등록","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":268,"line_end":268,"block_type":"jsdoc","text":"중분류 수정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":286,"line_end":286,"block_type":"jsdoc","text":"중분류 삭제","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":301,"line_end":301,"block_type":"jsdoc","text":"소분류 상세조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":314,"line_end":314,"block_type":"jsdoc","text":"소분류 등록","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":330,"line_end":330,"block_type":"jsdoc","text":"소분류 수정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":349,"line_end":349,"block_type":"jsdoc","text":"소분류 삭제","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":364,"line_end":364,"block_type":"jsdoc","text":"세분류 상세조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":378,"line_end":378,"block_type":"jsdoc","text":"세분류 등록","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":395,"line_end":395,"block_type":"jsdoc","text":"세분류 수정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":415,"line_end":415,"block_type":"jsdoc","text":"세분류 삭제","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":431,"line_end":433,"block_type":"line","text":"============================================\n세세분류 (Fine) API\n============================================","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":435,"line_end":435,"block_type":"jsdoc","text":"세세분류 상세조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":450,"line_end":450,"block_type":"jsdoc","text":"세세분류 등록","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":468,"line_end":468,"block_type":"jsdoc","text":"세세분류 수정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":489,"line_end":489,"block_type":"jsdoc","text":"세세분류 삭제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":506,"line_end":508,"block_type":"line","text":"============================================\n세세세분류 (SubFine) API\n============================================","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":510,"line_end":510,"block_type":"jsdoc","text":"세세세분류 상세조회","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":526,"line_end":526,"block_type":"jsdoc","text":"세세세분류 등록","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":545,"line_end":545,"block_type":"jsdoc","text":"세세세분류 수정","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":567,"line_end":567,"block_type":"jsdoc","text":"세세세분류 삭제","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":585,"line_end":587,"block_type":"line","text":"============================================\n엑셀 관련 API\n============================================","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":589,"line_end":589,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":608,"line_end":608,"block_type":"jsdoc","text":"엑셀 업로드","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":619,"line_end":619,"block_type":"jsdoc","text":"일괄수정양식 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/diseasePredictionApi.ts","lang":"js","line_start":628,"line_end":628,"block_type":"jsdoc","text":"이전 데이터 복구","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/faxApi.ts","lang":"js","line_start":84,"line_end":86,"block_type":"jsdoc","text":"FAX 이용 내역 목록 조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/faxApi.ts","lang":"js","line_start":92,"line_end":94,"block_type":"jsdoc","text":"FAX 이용 내역 상세 조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/faxApi.ts","lang":"js","line_start":100,"line_end":102,"block_type":"jsdoc","text":"FAX 설정 조회","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/faxApi.ts","lang":"js","line_start":108,"line_end":110,"block_type":"jsdoc","text":"FAX 설정 수정","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/faxApi.ts","lang":"js","line_start":122,"line_end":124,"block_type":"jsdoc","text":"vFax 발송 상태 조회 (fxhId 기준)","hangul_chars":8,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/faxApi.ts","lang":"js","line_start":130,"line_end":132,"block_type":"jsdoc","text":"FAX 내역 엑셀 다운로드","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/faxApi.ts","lang":"js","line_start":148,"line_end":150,"block_type":"jsdoc","text":"청구서 파일 목록 조회","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/fcApi.ts","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"구독상태(구독:SUB001 | 해지:SUB002 | 변경:SUB003","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/fcApi.ts","lang":"js","line_start":57,"line_end":57,"block_type":"jsdoc","text":"FC 목록 조회 (검색 기능 포함)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/fcApi.ts","lang":"js","line_start":65,"line_end":65,"block_type":"jsdoc","text":"FC 상세조회","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/fcApi.ts","lang":"js","line_start":72,"line_end":72,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/fcApi.ts","lang":"js","line_start":82,"line_end":82,"block_type":"jsdoc","text":"추천가입내역 조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":3,"line_end":3,"block_type":"line","text":"검사기준 항목 타입","hangul_chars":8,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"목록 조회 응답 타입","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":22,"line_end":22,"block_type":"jsdoc","text":"목록 조회 (페이지네이션 지원)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"백엔드 응답을 프론트엔드 형식으로 변환","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"코드노출명","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":72,"line_end":72,"block_type":"jsdoc","text":"상세조회","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":82,"line_end":82,"block_type":"line","text":"백엔드 응답을 프론트엔드 형식으로 변환","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":89,"line_end":89,"block_type":"line","text":"코드노출명","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":98,"line_end":98,"block_type":"jsdoc","text":"등록 (대분류 또는 중분류)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":100,"line_end":100,"block_type":"line","text":"등록 유형 (대분류 or 중분류)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":101,"line_end":101,"block_type":"line","text":"대분류 등록시: 대분류코드, 중분류 등록시: 선택한 대분류명","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":102,"line_end":102,"block_type":"line","text":"대분류 등록시: 대분류명, 중분류 등록시: 중분류명","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":137,"line_end":137,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":153,"line_end":153,"block_type":"jsdoc","text":"엑셀 업로드","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":164,"line_end":164,"block_type":"jsdoc","text":"일괄수정양식 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/inspectionStandardApi.ts","lang":"js","line_start":173,"line_end":173,"block_type":"jsdoc","text":"이전 데이터 복구","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/institutionBlockApi.ts","lang":"js","line_start":3,"line_end":3,"block_type":"jsdoc","text":"기관 사용중지 설정 (task-11) — HIRA(심평원) / NTS(국세청)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/institutionBlockApi.ts","lang":"js","line_start":9,"line_end":9,"block_type":"line","text":"0:정상, 1:사용중지","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/institutionBlockApi.ts","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"POP001:텍스트, POP002:이미지","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/institutionBlockApi.ts","lang":"js","line_start":20,"line_end":20,"block_type":"jsdoc","text":"수정 payload (institutionBlockData JSON). isbImg 는 기존 S3 키를 그대로 전달, 새 파일은 멀티파트로 별도 전송","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/institutionBlockApi.ts","lang":"js","line_start":32,"line_end":32,"block_type":"jsdoc","text":"목록 조회 (HIRA/NTS 2건)","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/institutionBlockApi.ts","lang":"js","line_start":41,"line_end":41,"block_type":"jsdoc","text":"상세 조회","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/institutionBlockApi.ts","lang":"js","line_start":50,"line_end":50,"block_type":"jsdoc","text":"수정 (multipart: isbImg 파일 + institutionBlockData JSON)","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":3,"line_end":6,"block_type":"jsdoc","text":"다중팩스 텍스트 입력을 JSON 배열로 변환\n형식: \"팩스번호/설명\" 또는 \"팩스번호\" (한 줄씩)","hangul_chars":32,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":18,"line_end":20,"block_type":"jsdoc","text":"다중팩스 JSON 배열을 텍스트로 변환 (수정 페이지용)","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":35,"line_end":35,"block_type":"jsdoc","text":"INS001:생명보험 | INS002:손해보험","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"보험사명","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"INS001:생명보험 | INS002:손해보험","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"보험사코드","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"팩스번호 (고정팩스용)","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"다중팩스 목록","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"팩스타입 (고정팩스/가상팩스/다중팩스)","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"양식 용량 초과 시 압축 후 등록 (NEED_COMPRESS 응답 후 재요청용)","hangul_chars":19,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"좌표목록","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"청구서 PDF 파일","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":131,"line_end":131,"block_type":"jsdoc","text":"[관리자] 청구서","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":133,"line_end":133,"block_type":"jsdoc","text":"청구서 값 전체 조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":140,"line_end":140,"block_type":"jsdoc","text":"청구서 삭제","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":147,"line_end":147,"block_type":"jsdoc","text":"청구서 등록","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":158,"line_end":158,"block_type":"line","text":"텍스트 입력을 JSON 배열로 변환","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":191,"line_end":191,"block_type":"jsdoc","text":"청구서 상세 조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":200,"line_end":200,"block_type":"jsdoc","text":"청구서 수정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/invoiceApi.ts","lang":"js","line_start":211,"line_end":211,"block_type":"line","text":"텍스트 입력을 JSON 배열로 변환","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/lossApi.ts","lang":"js","line_start":150,"line_end":150,"block_type":"jsdoc","text":"[관리자] 손해사정","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/lossApi.ts","lang":"js","line_start":152,"line_end":152,"block_type":"jsdoc","text":"손해사정 서브 카테고리 전체조회","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/lossApi.ts","lang":"js","line_start":160,"line_end":160,"block_type":"jsdoc","text":"손해사정 카테고리 전체조회","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/lossApi.ts","lang":"js","line_start":169,"line_end":169,"block_type":"jsdoc","text":"손해사정 카테고리 신규등록","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/lossApi.ts","lang":"js","line_start":176,"line_end":176,"block_type":"jsdoc","text":"손해사정 카테고리 상세조회","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/lossApi.ts","lang":"js","line_start":185,"line_end":185,"block_type":"jsdoc","text":"손해사정 카테고리 수정","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/lossApi.ts","lang":"js","line_start":192,"line_end":192,"block_type":"jsdoc","text":"손해사정 카테고리 삭제","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/lossApi.ts","lang":"js","line_start":199,"line_end":199,"block_type":"jsdoc","text":"손해사정 서비스 상세조회","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/lossApi.ts","lang":"js","line_start":206,"line_end":206,"block_type":"jsdoc","text":"손해사정 답변 신규등록","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/lossApi.ts","lang":"js","line_start":212,"line_end":212,"block_type":"jsdoc","text":"손해사정 답변 수정","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/lossApi.ts","lang":"js","line_start":219,"line_end":219,"block_type":"jsdoc","text":"손해사정 답변 삭제","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/lossApi.ts","lang":"js","line_start":226,"line_end":226,"block_type":"jsdoc","text":"미답변 손해사정 서비스 목록","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":3,"line_end":3,"block_type":"line","text":"대분류 타입","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"중분류(투약기준) 항목 타입","hangul_chars":11,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"분류명 (대분류명)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"분류항목명 (약품명)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"분류효능","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"목록 조회 응답 타입","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"대분류 목록 조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":54,"line_end":54,"block_type":"jsdoc","text":"새 분류명 추가","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":68,"line_end":68,"block_type":"jsdoc","text":"중분류 목록 조회 (페이지네이션 지원)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":93,"line_end":93,"block_type":"line","text":"백엔드 응답을 프론트엔드 형식으로 변환","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":121,"line_end":121,"block_type":"jsdoc","text":"상세조회","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":133,"line_end":133,"block_type":"line","text":"백엔드 응답을 프론트엔드 형식으로 변환","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":154,"line_end":154,"block_type":"line","text":"분류항목명 (약품명)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":155,"line_end":155,"block_type":"line","text":"분류효능","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":170,"line_end":170,"block_type":"line","text":"분류항목명 (약품명)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":171,"line_end":171,"block_type":"line","text":"분류효능","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":191,"line_end":191,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":207,"line_end":207,"block_type":"jsdoc","text":"엑셀 업로드","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":218,"line_end":218,"block_type":"jsdoc","text":"일괄수정양식 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/medicationStandardApi.ts","lang":"js","line_start":227,"line_end":227,"block_type":"jsdoc","text":"이전 데이터 복구","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/menuApi.ts","lang":"js","line_start":3,"line_end":5,"block_type":"jsdoc","text":"API 응답 메뉴 타입","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/menuApi.ts","lang":"js","line_start":22,"line_end":24,"block_type":"jsdoc","text":"내 권한에 맞는 메뉴 트리 조회 (사이드바용)","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/menuApi.ts","lang":"js","line_start":31,"line_end":33,"block_type":"jsdoc","text":"전체 메뉴 트리 조회 (권한 설정용)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":5,"line_end":7,"block_type":"line","text":"============================================================================\nTypes - 회원머니 적립 관리\n============================================================================","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":9,"line_end":9,"block_type":"line","text":"적립 / 적립회수","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"일반회원 / 기업회원","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"전체 / 구독회원 / 특정회원","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"조인된 데이터","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"조인된 데이터 - member","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"조인된 데이터 - salesAgency","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"조인된 데이터 - salesAgencyChannel","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"조인된 데이터 - agency","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"조인된 데이터 - wallet (적립 후 전체 잔액)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"조인된 데이터 - source (유효기간)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"상세 페이지용 타입 별칭 (하위 호환성)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":69,"line_end":71,"block_type":"line","text":"============================================================================\nTypes - 기업머니 관리\n============================================================================","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":88,"line_end":88,"block_type":"line","text":"조인된 데이터","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":146,"line_end":148,"block_type":"line","text":"============================================================================\nTypes - 내역관리 (Wallet)\n============================================================================","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":171,"line_end":171,"block_type":"line","text":"조인된 데이터","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":178,"line_end":178,"block_type":"line","text":"결제 정보 (충전건)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":190,"line_end":192,"block_type":"line","text":"============================================================================\nTypes - 결제관리\n============================================================================","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":213,"line_end":213,"block_type":"line","text":"조인된 데이터","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":236,"line_end":236,"block_type":"line","text":"조인된 데이터","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":265,"line_end":267,"block_type":"line","text":"============================================================================\nTypes - 환불관리\n============================================================================","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":286,"line_end":286,"block_type":"line","text":"조인된 데이터","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":312,"line_end":314,"block_type":"line","text":"============================================================================\n회원머니 적립 관리\n============================================================================","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":316,"line_end":316,"block_type":"jsdoc","text":"회원머니 적립 목록 조회","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":324,"line_end":324,"block_type":"jsdoc","text":"회원머니 적립 상세 조회","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":332,"line_end":332,"block_type":"jsdoc","text":"회원머니 적립/적립회수 일괄 처리","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":352,"line_end":354,"block_type":"line","text":"============================================================================\n기업머니 관리\n============================================================================","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":356,"line_end":356,"block_type":"jsdoc","text":"기업머니 충전/차감","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":361,"line_end":361,"block_type":"line","text":"양수: 충전, 음수: 차감","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":370,"line_end":370,"block_type":"jsdoc","text":"기업머니 내역 조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":378,"line_end":378,"block_type":"jsdoc","text":"기업머니 충전요청 목록","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":388,"line_end":388,"block_type":"jsdoc","text":"기업머니 충전요청 생성","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":401,"line_end":401,"block_type":"jsdoc","text":"기업머니 충전요청 취소","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":412,"line_end":412,"block_type":"jsdoc","text":"기업머니 충전요청 승인/반려","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":426,"line_end":428,"block_type":"line","text":"============================================================================\n기업회원머니 관리\n============================================================================","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":430,"line_end":430,"block_type":"jsdoc","text":"기업회원 일괄 지급","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":449,"line_end":449,"block_type":"jsdoc","text":"기업회원 개별 지급/회수","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":455,"line_end":455,"block_type":"line","text":"양수: 지급, 음수: 회수","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":466,"line_end":468,"block_type":"line","text":"============================================================================\n내역관리\n============================================================================","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":470,"line_end":470,"block_type":"jsdoc","text":"전체 내역 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":478,"line_end":480,"block_type":"line","text":"============================================================================\n결제관리\n============================================================================","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":482,"line_end":482,"block_type":"jsdoc","text":"결제 목록 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":490,"line_end":490,"block_type":"jsdoc","text":"결제 상세 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":497,"line_end":497,"block_type":"jsdoc","text":"결제 이용내역 조회 (FIFO 추적)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":504,"line_end":504,"block_type":"jsdoc","text":"결제 취소 (관리자)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":516,"line_end":518,"block_type":"line","text":"============================================================================\n환불관리\n============================================================================","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":520,"line_end":520,"block_type":"jsdoc","text":"환불 목록 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":528,"line_end":528,"block_type":"jsdoc","text":"환불 상세 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":535,"line_end":535,"block_type":"jsdoc","text":"환불 승인/반려","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":548,"line_end":550,"block_type":"line","text":"============================================================================\n엑셀 업로드/다운로드\n============================================================================","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":552,"line_end":552,"block_type":"jsdoc","text":"머니 지급 양식 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":559,"line_end":559,"block_type":"jsdoc","text":"머니 지급 엑셀 업로드","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":579,"line_end":579,"block_type":"jsdoc","text":"머니 지급 엑셀 미리보기 (검증만, 적용 안 함) — 확인 모달용","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":613,"line_end":615,"block_type":"line","text":"============================================================================\n레거시 호환 API (기존 페이지 지원)\n============================================================================","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":617,"line_end":617,"block_type":"jsdoc","text":"결제 목록 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":625,"line_end":625,"block_type":"jsdoc","text":"결제 이용내역 조회 (레거시 호환) - getPaymentUsage와 동일","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":632,"line_end":632,"block_type":"jsdoc","text":"결제 취소 (레거시 호환)","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":645,"line_end":645,"block_type":"jsdoc","text":"결제 상세 조회 (레거시 호환) - getPaymentDetail과 동일","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":652,"line_end":652,"block_type":"jsdoc","text":"결제 목록 엑셀 다운로드 (레거시 호환)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":660,"line_end":660,"block_type":"jsdoc","text":"환불 목록 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":668,"line_end":668,"block_type":"jsdoc","text":"내역관리 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":676,"line_end":676,"block_type":"jsdoc","text":"환불 목록 엑셀 다운로드 (레거시 호환)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":684,"line_end":684,"block_type":"jsdoc","text":"내역관리 엑셀 다운로드 (레거시 호환)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":692,"line_end":692,"block_type":"jsdoc","text":"환불 승인 (레거시 호환)","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":705,"line_end":705,"block_type":"jsdoc","text":"환불 반려 (레거시 호환)","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":718,"line_end":718,"block_type":"jsdoc","text":"기업회원머니 지급 양식 다운로드 (레거시 호환)","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":725,"line_end":725,"block_type":"jsdoc","text":"기업회원머니 지급 엑셀 업로드 (레거시 호환)","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":741,"line_end":741,"block_type":"jsdoc","text":"기업회원 일괄 머니 지급/회수 (신규등록 페이지용)","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":748,"line_end":748,"block_type":"line","text":"양수: 지급, 음수: 회수","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":751,"line_end":752,"block_type":"line","text":"프론트엔드 필드명을 백엔드 DTO 필드명으로 변환\n음수면 회수(GRANT_RECOVERY), 양수면 지급(GRANT)","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":761,"line_end":761,"block_type":"line","text":"백엔드에는 절대값 전송","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":762,"line_end":762,"block_type":"line","text":"회수시 유효기간 미적용","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":763,"line_end":763,"block_type":"line","text":"회수시 유효기간 미적용","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":771,"line_end":771,"block_type":"jsdoc","text":"회원머니 일반 지급 (레거시 호환)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":782,"line_end":782,"block_type":"line","text":"레거시 필드명을 새 API 필드명으로 변환","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/moneyApi.ts","lang":"js","line_start":799,"line_end":799,"block_type":"line","text":"부호 유지: 양수=적립, 음수=회수","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderApi.ts","lang":"js","line_start":14,"line_end":14,"block_type":"jsdoc","text":"기업조직: 소속 조직 ID(미배정 시 null)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderApi.ts","lang":"js","line_start":16,"line_end":16,"block_type":"jsdoc","text":"기업조직: 소속 조직명(미배정 시 null)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderApi.ts","lang":"js","line_start":18,"line_end":18,"block_type":"jsdoc","text":"기업조직: 소속 조직 전체 경로(\"대구 > 개발팀\", 미배정 시 null)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderApi.ts","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"결제상태(결제완료 : PAY001 | 결제취소 : PAY002 |결제실패 : PAY003 )","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderApi.ts","lang":"js","line_start":53,"line_end":53,"block_type":"jsdoc","text":"환불상태(환불완료 : REF001 | 환불반려 : REF002)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderApi.ts","lang":"js","line_start":79,"line_end":79,"block_type":"jsdoc","text":"정산상태(기업주문관리) — PENDING 정산대기 | CONFIRMED 정산확정 | EXCLUDED 정산제외 | FREE 무상제공 | NONE 공란(취소·실패)","hangul_chars":32,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderApi.ts","lang":"js","line_start":81,"line_end":81,"block_type":"jsdoc","text":"과금방식 스냅샷(주문 생성 시점 계약 기준) — 기업FC 주문만, B2C는 null","hangul_chars":23,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/orderApi.ts","lang":"js","line_start":91,"line_end":91,"block_type":"jsdoc","text":"[관리자] 주문/결제목록","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderApi.ts","lang":"js","line_start":93,"line_end":93,"block_type":"jsdoc","text":"주문/결제 상세조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderApi.ts","lang":"js","line_start":102,"line_end":102,"block_type":"jsdoc","text":"주문/결제 취소","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderApi.ts","lang":"js","line_start":109,"line_end":109,"block_type":"jsdoc","text":"주문 사용수량 및 제한수량 변경","hangul_chars":13,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/orderApi.ts","lang":"js","line_start":122,"line_end":122,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderDetailApi.ts","lang":"js","line_start":12,"line_end":12,"block_type":"jsdoc","text":"기업조직: 소속 조직 ID(미배정 시 null)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderDetailApi.ts","lang":"js","line_start":14,"line_end":14,"block_type":"jsdoc","text":"기업조직: 소속 조직명(미배정 시 null)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderDetailApi.ts","lang":"js","line_start":16,"line_end":16,"block_type":"jsdoc","text":"기업조직: 소속 조직 전체 경로(\"대구 > 개발팀\", 미배정 시 null)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderDetailApi.ts","lang":"js","line_start":79,"line_end":79,"block_type":"jsdoc","text":"[관리자] 주문상세/분석목록","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderDetailApi.ts","lang":"js","line_start":81,"line_end":81,"block_type":"jsdoc","text":"분석목록 삭제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderDetailApi.ts","lang":"js","line_start":88,"line_end":88,"block_type":"jsdoc","text":"분석 비노출처리","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderDetailApi.ts","lang":"js","line_start":95,"line_end":96,"block_type":"jsdoc","text":"재분석 (자료수집완료/분석실패 odd 만 활성)\n  chargeQuantity=true: 분석사용수 차감, false: 카운터 영향 없음","hangul_chars":30,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderDetailApi.ts","lang":"js","line_start":106,"line_end":106,"block_type":"jsdoc","text":"다운로드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/orderDetailApi.ts","lang":"js","line_start":116,"line_end":116,"block_type":"jsdoc","text":"다운로드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/popupApi.ts","lang":"js","line_start":29,"line_end":29,"block_type":"jsdoc","text":"POP001:텍스트, POP002:이미지","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/popupApi.ts","lang":"js","line_start":63,"line_end":63,"block_type":"jsdoc","text":"[관리자] 팝업","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/popupApi.ts","lang":"js","line_start":65,"line_end":65,"block_type":"jsdoc","text":"팝업 신규등록","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/popupApi.ts","lang":"js","line_start":87,"line_end":87,"block_type":"jsdoc","text":"팝업 상세조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/popupApi.ts","lang":"js","line_start":96,"line_end":96,"block_type":"jsdoc","text":"팝업 수정","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/popupApi.ts","lang":"js","line_start":118,"line_end":118,"block_type":"jsdoc","text":"팝업 삭제","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/popupApi.ts","lang":"js","line_start":125,"line_end":125,"block_type":"jsdoc","text":"editor 이미지 업로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/productApi.ts","lang":"js","line_start":56,"line_end":56,"block_type":"jsdoc","text":"[관리자] 상품","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/productApi.ts","lang":"js","line_start":58,"line_end":58,"block_type":"jsdoc","text":"상품 전체조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/productApi.ts","lang":"js","line_start":65,"line_end":65,"block_type":"jsdoc","text":"분석건수 — 상품 선택 옵션 병기용(기업계약 화면)","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/productApi.ts","lang":"js","line_start":67,"line_end":67,"block_type":"jsdoc","text":"판매가격 — 상품 선택 옵션 병기용(기업계약 화면)","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/productApi.ts","lang":"js","line_start":75,"line_end":75,"block_type":"jsdoc","text":"상품 신규등록","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/productApi.ts","lang":"js","line_start":82,"line_end":82,"block_type":"jsdoc","text":"상품 상세조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/productApi.ts","lang":"js","line_start":91,"line_end":91,"block_type":"jsdoc","text":"상품 수정","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/productApi.ts","lang":"js","line_start":98,"line_end":98,"block_type":"jsdoc","text":"상품 삭제","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/pushApi.ts","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"기업회원(mem002) 발송 시 특정 기업 agcId 쉼표 구분","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/pushApi.ts","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"알람 클릭 시 이동할 URL","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/pushApi.ts","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"에디터 상세 내용","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/pushApi.ts","lang":"js","line_start":34,"line_end":34,"block_type":"line","text":"기업회원(mem002) 발송 시 특정 기업 agcId 쉼표 구분","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/pushApi.ts","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"알람 클릭 시 이동할 URL","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/pushApi.ts","lang":"js","line_start":37,"line_end":37,"block_type":"line","text":"에디터 상세 내용","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/pushApi.ts","lang":"js","line_start":40,"line_end":40,"block_type":"jsdoc","text":"[관리자] 푸시","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/pushApi.ts","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"푸시 신규등록","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/pushApi.ts","lang":"js","line_start":49,"line_end":49,"block_type":"jsdoc","text":"푸시 상세조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/pushApi.ts","lang":"js","line_start":58,"line_end":58,"block_type":"jsdoc","text":"푸시 수정","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/pushApi.ts","lang":"js","line_start":65,"line_end":65,"block_type":"jsdoc","text":"푸시 삭제","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/pushApi.ts","lang":"js","line_start":72,"line_end":72,"block_type":"jsdoc","text":"푸시 발송","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/pushApi.ts","lang":"js","line_start":91,"line_end":91,"block_type":"jsdoc","text":"푸시 발송 취소","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/pushApi.ts","lang":"js","line_start":113,"line_end":113,"block_type":"jsdoc","text":"이미지 업로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/referralApi.ts","lang":"js","line_start":55,"line_end":55,"block_type":"jsdoc","text":"[관리자] 추천인","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/referralApi.ts","lang":"js","line_start":57,"line_end":57,"block_type":"jsdoc","text":"추천인 혜택관리 목록 조회","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/referralApi.ts","lang":"js","line_start":65,"line_end":65,"block_type":"jsdoc","text":"추천인 혜택 설정 조회","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/referralApi.ts","lang":"js","line_start":72,"line_end":72,"block_type":"jsdoc","text":"추천인 혜택 설정 수정","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/referralApi.ts","lang":"js","line_start":79,"line_end":79,"block_type":"jsdoc","text":"추천인 혜택관리 엑셀 다운로드","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/referralApi.ts","lang":"js","line_start":89,"line_end":89,"block_type":"jsdoc","text":"추천인 회원 관리 목록 조회","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/referralApi.ts","lang":"js","line_start":97,"line_end":97,"block_type":"jsdoc","text":"추천인 회원 관리 엑셀 다운로드","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/salesApi.ts","lang":"js","line_start":62,"line_end":62,"block_type":"jsdoc","text":"[관리자] 영업대리점","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/salesApi.ts","lang":"js","line_start":64,"line_end":64,"block_type":"jsdoc","text":"영업대리점 전체목록","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/salesApi.ts","lang":"js","line_start":71,"line_end":71,"block_type":"jsdoc","text":"영업대리점 신규등록","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/salesApi.ts","lang":"js","line_start":78,"line_end":78,"block_type":"jsdoc","text":"영업대리점 상세조회","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/salesApi.ts","lang":"js","line_start":87,"line_end":87,"block_type":"jsdoc","text":"영업대리점 수정","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/salesApi.ts","lang":"js","line_start":94,"line_end":94,"block_type":"jsdoc","text":"영업대리점 삭제","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/salesApi.ts","lang":"js","line_start":103,"line_end":103,"block_type":"jsdoc","text":"영업대리점 채널 전체목록","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/salesApi.ts","lang":"js","line_start":112,"line_end":112,"block_type":"jsdoc","text":"영업대리점 채널 신규등록","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/salesApi.ts","lang":"js","line_start":119,"line_end":119,"block_type":"jsdoc","text":"영업대리점 채널 상세조회","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/salesApi.ts","lang":"js","line_start":128,"line_end":128,"block_type":"jsdoc","text":"영업대리점 채널 수정","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/salesApi.ts","lang":"js","line_start":138,"line_end":138,"block_type":"jsdoc","text":"영업대리점 채널 삭제","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/searchApi.ts","lang":"js","line_start":27,"line_end":27,"block_type":"jsdoc","text":"[관리자] 질병코드검색","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/searchApi.ts","lang":"js","line_start":29,"line_end":29,"block_type":"jsdoc","text":"진단코드 신규등록","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/searchApi.ts","lang":"js","line_start":36,"line_end":36,"block_type":"jsdoc","text":"진단코드 상세조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/searchApi.ts","lang":"js","line_start":45,"line_end":45,"block_type":"jsdoc","text":"진단코드 수정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/searchApi.ts","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"진단코드 삭제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/searchApi.ts","lang":"js","line_start":74,"line_end":74,"block_type":"jsdoc","text":"다운로드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/searchApi.ts","lang":"js","line_start":84,"line_end":84,"block_type":"jsdoc","text":"양식 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":15,"line_end":15,"block_type":"jsdoc","text":"당월 신규 회원 수","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":17,"line_end":17,"block_type":"jsdoc","text":"당월 분석 완료건 수","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":19,"line_end":19,"block_type":"jsdoc","text":"당월 결제 정보","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":21,"line_end":21,"block_type":"jsdoc","text":"총 결제(취소)건 수","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":23,"line_end":23,"block_type":"jsdoc","text":"총 결제(취소) 금액","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":26,"line_end":26,"block_type":"jsdoc","text":"당월 결제 취소 정보","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":28,"line_end":28,"block_type":"jsdoc","text":"총 결제(취소)건 수","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"총 결제(취소) 금액","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":33,"line_end":33,"block_type":"jsdoc","text":"일별 결제금액 목록","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":37,"line_end":37,"block_type":"jsdoc","text":"총 결제(취소)건 수","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"총 결제(취소)금액","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"일별 결제취소금액 목록","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"총 결제(취소)건 수","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":48,"line_end":48,"block_type":"jsdoc","text":"총 결제(취소)금액","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":62,"line_end":62,"block_type":"jsdoc","text":"[관리자] 통계조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":64,"line_end":64,"block_type":"jsdoc","text":"통계조회","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":73,"line_end":73,"block_type":"jsdoc","text":"가입통계조회 - 월별","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":89,"line_end":89,"block_type":"jsdoc","text":"가입통계조회 - 일별","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":106,"line_end":106,"block_type":"jsdoc","text":"매출통계조회 - 월별","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":120,"line_end":120,"block_type":"jsdoc","text":"매출통계조회 - 일별","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":135,"line_end":135,"block_type":"jsdoc","text":"분석통계조회 - 월별","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/statisticsApi.ts","lang":"js","line_start":159,"line_end":159,"block_type":"jsdoc","text":"분석통계조회 - 일별","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/subscribeApi.ts","lang":"js","line_start":14,"line_end":14,"block_type":"jsdoc","text":"기업조직: 소속 조직 ID(미배정 시 null)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/subscribeApi.ts","lang":"js","line_start":16,"line_end":16,"block_type":"jsdoc","text":"기업조직: 소속 조직명(미배정 시 null)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/subscribeApi.ts","lang":"js","line_start":18,"line_end":18,"block_type":"jsdoc","text":"기업조직: 소속 조직 전체 경로(\"대구 > 개발팀\", 미배정 시 null)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/subscribeApi.ts","lang":"js","line_start":62,"line_end":62,"block_type":"jsdoc","text":"[관리자] 구독","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/subscribeApi.ts","lang":"js","line_start":64,"line_end":64,"block_type":"jsdoc","text":"구독 상세조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/subscribeApi.ts","lang":"js","line_start":73,"line_end":73,"block_type":"jsdoc","text":"구독 다음 결제일 수정","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/subscribeApi.ts","lang":"js","line_start":85,"line_end":85,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/subscribeFailedApi.ts","lang":"js","line_start":56,"line_end":56,"block_type":"jsdoc","text":"[관리자] 구독실패","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/subscribeFailedApi.ts","lang":"js","line_start":58,"line_end":58,"block_type":"jsdoc","text":"재구독처리","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/subscribeFailedApi.ts","lang":"js","line_start":65,"line_end":65,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatLogApi.ts","lang":"js","line_start":41,"line_end":41,"block_type":"jsdoc","text":"[관리자] 분석로그","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatLogApi.ts","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"보유(주문 odd) 단위 이탈/실패 — 한 창(60분 또는 24시간)의 생성 코호트 집계","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"생성(요청) 주문 수","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"이탈(SMS 미입력)","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"유저실패(휴먼에러 — 인증번호/정보 오입력 등)","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"시스템실패(기관·통신·시스템·시간초과 등)","hangul_chars":17,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"진행중(미종결)","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"종결(완료+이탈+시스템실패)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"이탈(SMS 미입력)","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"유저실패(휴먼에러)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"시스템실패","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":94,"line_end":94,"block_type":"line","text":"이탈(SMS 미입력)","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":95,"line_end":95,"block_type":"line","text":"유저실패(휴먼에러) — 시스템실패=fail-dropout-userFail","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":99,"line_end":100,"block_type":"line","text":"보유(주문 odd) 단위 이탈/실패 funnel — 생성 코호트 기준(정확한 이탈 grain).\n기존 cert1의 완주율/이탈(1차성공−2차로그 벤더별 뺄셈)은 재시도·벤더 교차로 왜곡되어 폐기.","hangul_chars":56,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":103,"line_end":103,"block_type":"line","text":"최근 24시간","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":112,"line_end":112,"block_type":"line","text":"SMS 발송 도달 기준 성공률(~100%). 실제 완주/이탈은 holdingFunnel 참조.","hangul_chars":18,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":127,"line_end":127,"block_type":"line","text":"사전(VENDOR_MAP)에 정의된 알려진 에러 1건 + 발생률","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":133,"line_end":133,"block_type":"line","text":"최근 N일 발생건수 (0 가능)","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":134,"line_end":134,"block_type":"line","text":"발생률 % (벤더 전체 시도 대비)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":139,"line_end":139,"block_type":"line","text":"사전에 없는데 실제로 뜬 코드(의미 미상)","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":150,"line_end":150,"block_type":"line","text":"월 단위 집계 (온디맨드)","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":155,"line_end":155,"block_type":"line","text":"이탈(SMS 미입력)","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":156,"line_end":156,"block_type":"line","text":"유저실패(휴먼에러)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":157,"line_end":157,"block_type":"line","text":"시스템실패","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":167,"line_end":167,"block_type":"line","text":"이탈(SMS 미입력)","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":168,"line_end":168,"block_type":"line","text":"유저실패(휴먼에러)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":169,"line_end":169,"block_type":"line","text":"시스템실패","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":174,"line_end":174,"block_type":"line","text":"벤더별 분해","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":177,"line_end":177,"block_type":"line","text":"일별 총합계 — 시도 기준(발생 종결건) + 고객 코호트(최초 종결 시도일 귀속·회복)","hangul_chars":30,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":182,"line_end":182,"block_type":"line","text":"진짜이탈(2차 미시도)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":190,"line_end":190,"block_type":"line","text":"중복제외 고객","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":193,"line_end":193,"block_type":"line","text":"최초실패(회복대상)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":194,"line_end":194,"block_type":"line","text":"회복성공","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":196,"line_end":196,"block_type":"line","text":"회복성공 / 최초실패","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":197,"line_end":197,"block_type":"line","text":"최초성공 + 회복성공","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":212,"line_end":212,"block_type":"line","text":"기업상품(다중필터 셀렉트용)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":219,"line_end":219,"block_type":"line","text":"벤더 전체 시도","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":220,"line_end":220,"block_type":"line","text":"사전에 정의된 에러 종 수","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":221,"line_end":221,"block_type":"line","text":"그중 실제 발생한 종 수","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":228,"line_end":228,"block_type":"jsdoc","text":"[관리자] 진료 처리 실시간 모니터링","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":236,"line_end":236,"block_type":"jsdoc","text":"월 단위 집계 (온디맨드 — 실시간 폴링과 분리)","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":245,"line_end":245,"block_type":"jsdoc","text":"일별 총합계 (기간 일자별 — 시도기준 + 고객 코호트, 기업상품 다중필터)","hangul_chars":27,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":264,"line_end":264,"block_type":"jsdoc","text":"진료집계 스타일 엑셀 다운로드 (서버 생성, blob)","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":297,"line_end":297,"block_type":"jsdoc","text":"기업상품 목록 (다중필터 셀렉트 채우기)","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatMonitorApi.ts","lang":"js","line_start":304,"line_end":304,"block_type":"jsdoc","text":"벤더별 에러 카탈로그 (사전 매핑 + 최근 N일 실발생)","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatProviderApi.ts","lang":"js","line_start":3,"line_end":3,"block_type":"jsdoc","text":"진료 스크래핑 공급자 설정 — 멀티 디스패처 풀(단가/한도/사용여부)","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatProviderApi.ts","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"단가 (낮을수록 우선)","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/treatProviderApi.ts","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"1 사용 / 0 중지","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatProviderApi.ts","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"1 분당 rate-limit(타임) 사용 / 0 미사용 — ON이면 분당한도/플로우비용을 '분당 허용건수'로 적용","hangul_chars":30,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/treatProviderApi.ts","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"수집 분할 횟수 (조회기간 N등분 순차 수집·병합, 1=분할없음, 현재 coocon·하이픈)","hangul_chars":27,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatProviderApi.ts","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"벤더 장애 통보 웹훅 URL (이 벤더 장애 경고만 이 채널로)","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatProviderApi.ts","lang":"js","line_start":20,"line_end":20,"block_type":"jsdoc","text":"수정 payload (부분 수정)","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatProviderApi.ts","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"목록 조회 (전체 — 비활성 포함)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatProviderApi.ts","lang":"js","line_start":41,"line_end":41,"block_type":"jsdoc","text":"단건 조회 (목록에서 key 매칭) — 별도 상세 엔드포인트 없이 재사용","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatProviderApi.ts","lang":"js","line_start":48,"line_end":48,"block_type":"jsdoc","text":"수정 (단가/한도/사용여부) — ~15초 내 라우팅 반영","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatProviderApi.ts","lang":"js","line_start":55,"line_end":55,"block_type":"jsdoc","text":"자동차보험 수집 전체 ON/OFF 조회 (전 벤더 공통 전역설정)","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatProviderApi.ts","lang":"js","line_start":64,"line_end":64,"block_type":"jsdoc","text":"자동차보험 수집 전체 ON/OFF 설정 — 운영 중 즉시(~15초) 차단/복구","hangul_chars":21,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/api/treatProviderApi.ts","lang":"js","line_start":71,"line_end":71,"block_type":"jsdoc","text":"모니터링 알림 웹훅 설정 조회 (URL + 발송 종류 + 종류 카탈로그)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/treatProviderApi.ts","lang":"js","line_start":86,"line_end":86,"block_type":"jsdoc","text":"모니터링 알림 웹훅 설정 (URL 빈 값=비활성, types=발송할 종류)","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/userApi.ts","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"[관리자] 고객","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/userApi.ts","lang":"js","line_start":45,"line_end":45,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/userApi.ts","lang":"js","line_start":55,"line_end":55,"block_type":"jsdoc","text":"회원 목록 조회 (FCM 토큰 필터링 제거)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/api/userApi.ts","lang":"js","line_start":62,"line_end":62,"block_type":"jsdoc","text":"회원 목록 조회 (검색 기능 포함)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/providers/ListProviders.tsx","lang":"js","line_start":54,"line_end":57,"block_type":"jsdoc","text":"TODO : Data Update\n길어질 시 업데이트 훅으로 분리","hangul_chars":13,"class":"4_todo","tags":["4_todo","5_dead"],"classified_by":"keyword","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/providers/ListProviders.tsx","lang":"js","line_start":71,"line_end":74,"block_type":"jsdoc","text":"TODO : User Action\n길어질 시 액션 훅으로 분리","hangul_chars":11,"class":"4_todo","tags":["4_todo","5_dead"],"classified_by":"keyword","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/providers/ListProviders.tsx","lang":"js","line_start":98,"line_end":98,"block_type":"line","text":"* 실패 시 사용자 안내(전엔 무반응이라 \"멈춘 줄\" 오해). 대용량이면 기간 좁히도록 유도.","hangul_chars":33,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/providers/ModalProvider.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"사이즈 클래스 대응","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/providers/type.ts","lang":"js","line_start":6,"line_end":6,"block_type":"line","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/guards/AuthGuard.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"* /manage/login: 통합·채널 관리자 전용 로그인(2026-07 로그인 path 분리)","hangul_chars":17,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/guards/AuthGuard.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"페이지 이동 시 scrollTo(0,0), 뒤로가기 시 제외","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/guards/AuthGuard.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"* 로그아웃/세션만료 시 본인이 마지막에 쓰던 로그인 화면으로 (corp=/login, 통합·채널=/manage/login)","hangul_chars":29,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/guards/AuthGuard.tsx","lang":"js","line_start":35,"line_end":46,"block_type":"line","text":"useEffect(() => {\n  const nonAuthPaths = [\"/login\"]; // 로그인 페이지 경로 추가\n  const isNonAuthPath = nonAuthPaths.includes(location.pathname);\n  const isAuthenticated = user;\n  if (isNonAuthPath && isAuthenticated) {\n    // 인증된 사용자가 로그인 페이지에 접근하면 메인으로 리다이렉트\n    navigate(\"/\");\n  } else if (!isNonAuthPath && !isAuthenticated) {\n    // 인증되지 않은 사용자가 보호된 페이지에 접근하면 로그인으로 리다이렉트\n    navigate(\"/login\");\n  }\n}, [location.pathname, user, navigate]);","hangul_chars":68,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/guards/PopupGuard.tsx","lang":"js","line_start":8,"line_end":8,"block_type":"line","text":"팝업 창이 아닌 경우 접근 차단","hangul_chars":12,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/guards/PopupGuard.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"앞, 뒤로가기 방지","hangul_chars":7,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/routes/corp-domains/money.routes.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"머니 충전요청","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/corp-domains/money.routes.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"기업머니 관리","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/corp-domains/money.routes.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"line","text":"내역 관리","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/corp-domains/my-page.routes.tsx","lang":"js","line_start":5,"line_end":6,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html): 마이페이지 —\n* 사이드바 메뉴에는 추가하지 않는 헤더 진입 전용 라우트(비밀번호 본인확인 후 진입)","hangul_chars":50,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/routes/corp-domains/organization.routes.tsx","lang":"js","line_start":5,"line_end":6,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html): 기업조직관리 — 기업관리자 전용.\n*  조직관리자(CORP_ORG)는 CORP_ORG_HIDDEN_MENU_CODES(CRP_ORG001)로 메뉴·경로 접근이 차단된다(403).","hangul_chars":42,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/routes/corp-domains/organization.routes.tsx","lang":"js","line_start":8,"line_end":8,"block_type":"line","text":"기업조직관리 (OrgManageTab은 useList 미사용 — ListProvider 불필요)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/corp-domains/settlement.routes.tsx","lang":"js","line_start":8,"line_end":8,"block_type":"line","text":"기업정산 관리","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/corp-domains/subscription.routes.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"기업구독 관리","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/corp-domains/subscription.routes.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"기업주문 관리","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/corp-domains/subscription.routes.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"분석 관리","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/corp.routes.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"기업별 약관관리 (task-12)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/data.routes.tsx","lang":"js","line_start":64,"line_end":64,"block_type":"line","text":"disease prediction (병명예측 관리 > 추천보험 관리)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/data.routes.tsx","lang":"js","line_start":102,"line_end":102,"block_type":"line","text":"inspection standard (병명예측 관리 > 검사로그 관리)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/data.routes.tsx","lang":"js","line_start":120,"line_end":120,"block_type":"line","text":"medication standard (병명예측 관리 > 투약로그 관리)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"지급관리","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"지급관리 - 신규등록","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"회원 상세","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"일반회원 내역","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"line","text":"내역관리","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"결제관리","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":81,"line_end":81,"block_type":"line","text":"결제관리 상세","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":91,"line_end":91,"block_type":"line","text":"환불관리","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":100,"line_end":100,"block_type":"line","text":"환불관리 상세","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":110,"line_end":110,"block_type":"line","text":"기업회원머니관리 (기업 ID 기반) - /money/corp-money 하위 경로","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":119,"line_end":119,"block_type":"line","text":"기업회원머니관리 - 기업머니 충전/차감","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":124,"line_end":124,"block_type":"line","text":"기업회원머니관리 - 회원에게 머니 지급 (신규등록)","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"기업회원머니관리 - 회원 상세 (머니 지급)","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":134,"line_end":134,"block_type":"line","text":"기업회원머니관리 - 내역","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":144,"line_end":144,"block_type":"line","text":"일반 관리","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":153,"line_end":153,"block_type":"line","text":"일반 관리 - 등록","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":159,"line_end":159,"block_type":"line","text":"회원머니 관리 (통합)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":168,"line_end":168,"block_type":"line","text":"회원머니 관리 - 등록","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":173,"line_end":173,"block_type":"line","text":"회원머니 관리 - 상세","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":183,"line_end":183,"block_type":"line","text":"기업머니 관리","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":192,"line_end":192,"block_type":"line","text":"기업머니 충전요청 승인","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":201,"line_end":201,"block_type":"line","text":"기업머니 관리 - 등록","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/money.routes.tsx","lang":"js","line_start":206,"line_end":206,"block_type":"line","text":"기업머니 관리 - 내역","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/product.routes.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"구독상품","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/product.routes.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"기업구독상품","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/site.routes.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"기관 API 일시사용중지 설정 (task-11)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/site.routes.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"진료 스크래핑 공급자 설정 (단가/한도/사용여부)","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/subscription.routes.tsx","lang":"js","line_start":138,"line_end":138,"block_type":"line","text":"treat-monitor (진료 처리 실시간 모니터링)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/user.routes.tsx","lang":"js","line_start":112,"line_end":112,"block_type":"line","text":"referral (추천인 혜택 관리)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/domains/user.routes.tsx","lang":"js","line_start":126,"line_end":126,"block_type":"line","text":"push-consent (회원푸시동의 관리)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.corp.routes.tsx","lang":"js","line_start":5,"line_end":5,"block_type":"line","text":"도메인별 라우트들 import","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.corp.routes.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html): 기업조직관리(기업관리자 전용)","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.corp.routes.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html): 마이페이지 — 헤더 진입 전용(사이드바 미등록)","hangul_chars":29,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.corp.routes.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"미인증; — 기존 /login = 기업·조직 관리자 전용(2026-07 로그인 path 분리)","hangul_chars":19,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.corp.routes.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"login path로 직접 지정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.corp.routes.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"* 통합·채널 관리자 전용 로그인 — 기업/조직 화면에는 이 경로를 노출하지 않는다","hangul_chars":31,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.routes.tsx","lang":"js","line_start":5,"line_end":5,"block_type":"line","text":"도메인별 라우트들 import","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.routes.tsx","lang":"js","line_start":29,"line_end":31,"block_type":"line","text":"* 진료내역 오류 테스터는 stg에서만 노출(fail-closed).\n* NODE_ENV는 vite build가 'production'으로 강제(override)해 stg 구분 불가 →\n* 환경마다 다르고 build override가 없는 REACT_APP_BACKEND_HOST(stg=s-api / prod=api / 로컬=localhost)로 판정.","hangul_chars":41,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.routes.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"* 숨김 라우트: 사이드바 미노출, URL 직접 입력으로만 접근. prod에선 미등록(위 treatTesterRoutes).","hangul_chars":27,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.routes.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"404 catch-all 라우트 - 존재하지 않는 경로 접근 시 AuthGuard를 통해 로그인 페이지로 리다이렉트","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.routes.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"line","text":"미인증; — 기존 /login = 기업·조직 관리자 전용(2026-07 로그인 path 분리)","hangul_chars":19,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.routes.tsx","lang":"js","line_start":82,"line_end":82,"block_type":"line","text":"login path로 직접 지정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.routes.tsx","lang":"js","line_start":90,"line_end":90,"block_type":"line","text":"* 통합·채널 관리자 전용 로그인 — 기업/조직 화면에는 이 경로를 노출하지 않는다","hangul_chars":31,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.sales.routes.tsx","lang":"js","line_start":5,"line_end":5,"block_type":"line","text":"도메인별 라우트들 import","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.sales.routes.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"미인증; — 기존 /login = 기업·조직 관리자 전용(2026-07 로그인 path 분리)","hangul_chars":19,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.sales.routes.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"login path로 직접 지정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.sales.routes.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"* 통합·채널 관리자 전용 로그인 — 기업/조직 화면에는 이 경로를 노출하지 않는다","hangul_chars":31,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/app/router/routes/page.sales.routes.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"404 catch-all 라우트 - 존재하지 않는 경로 접근 시 AuthGuard를 통해 로그인 페이지로 리다이렉트","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/popup.routes.tsx","lang":"js","line_start":14,"line_end":16,"block_type":"line","text":"도메인별 팝업 컴포넌트들 import\nimport ProductsSelectPopup from \"@/features/campaigns/ProductsSelectPopup\";\n... 다른 팝업 컴포넌트들","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/popup.routes.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"와일드카드를 사용하여 하위 경로 모두 매칭","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/app/router/routes/popup.routes.tsx","lang":"js","line_start":77,"line_end":78,"block_type":"line","text":"iframe 분석 상세 (유저 사이트 임베드)\nURL: /popup/analysis-view/:type/:id (예: /popup/analysis-view/member/13401)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/_global/index.ts","lang":"js","line_start":1,"line_end":1,"block_type":"line","text":"model에서 정의된 타입 및 상태 관리 모듈들","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/_global/model/store.ts","lang":"js","line_start":4,"line_end":5,"block_type":"line","text":"지연로딩 150ms 후 로딩 시작, 최소 로딩 300ms 후 로딩 종료\n무한로딩 방지 60초","hangul_chars":25,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/entities/_global/model/store.ts","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"로딩 시작 전 딜레이","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/_global/model/store.ts","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"1분 후 자동 해제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/_global/model/store.ts","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"이미 로딩 중이면 최소 300ms 유지","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/_global/model/store.ts","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"아직 로딩 시작 전이면 타이머 취소","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/user/index.ts","lang":"js","line_start":1,"line_end":1,"block_type":"line","text":"model에서 정의된 타입 및 상태 관리 모듈들","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/user/model/store.ts","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"* 조직관리자 로그인 — 기업코드 + 회원ID/PW. type은 \"corp\"로 통일(메뉴/게이팅 공유, agcRole로 차등)","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/user/model/store.ts","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"* 서버 사유 메시지 실패(E0102 소속 조직 미배정 등) — 알림 문구 전달","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/user/model/store.ts","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"기업관리자 로그인","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/user/model/store.ts","lang":"js","line_start":89,"line_end":89,"block_type":"line","text":"storage 설정: sessionStorage 사용","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/user/model/store.ts","lang":"js","line_start":92,"line_end":93,"block_type":"line","text":"* ★보안(클라 AES키 제거): 세션을 클라키로 암복호화하던 것 제거 — 키가 번들에 노출돼 보호가\n*   무의미(누구나 추출). sessionStorage는 동일출처라 추가 암호화가 보안을 더하지 않음. 평문 저장.","hangul_chars":66,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/user/model/store.ts","lang":"js","line_start":98,"line_end":98,"block_type":"line","text":"* 새 평문 형식: state가 객체. (옛 암호화 형식은 state가 문자열 → null 반환 = 1회 재로그인)","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/user/model/types.ts","lang":"js","line_start":3,"line_end":3,"block_type":"line","text":"User와 UserState 인터페이스 정의","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/user/model/types.ts","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"* corpOrg = 조직관리자 로그인(기업코드+회원ID/PW). 성공 시 type은 \"corp\"로 통일(메뉴/게이팅 공유)","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/entities/user/model/types.ts","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"* 로그인 실패 사유(서버 메시지) — 있으면 로그인 화면 알림에 표기","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/Alarm.tsx","lang":"js","line_start":9,"line_end":9,"block_type":"line","text":"기본 스타일 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/Alarm.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"알림 닫기버튼","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/Alarm.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"알람 조회","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/Alarm.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"다음 페이지 데이터 로딩","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/Alarm.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"line","text":"알림 클릭","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/Alarm.tsx","lang":"js","line_start":84,"line_end":84,"block_type":"line","text":"알람 읽음 처리","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/Alarm.tsx","lang":"js","line_start":87,"line_end":88,"block_type":"line","text":"알람 읽음 처리 실패","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/Alarm.tsx","lang":"js","line_start":93,"line_end":94,"block_type":"line","text":"알림창 닫기\nhandleClickAlarmButton();","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/Alarm.tsx","lang":"js","line_start":110,"line_end":110,"block_type":"line","text":"관련 페이지 이동","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/Alarm.tsx","lang":"js","line_start":122,"line_end":122,"block_type":"line","text":"최초 실행","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/Alarm.tsx","lang":"js","line_start":125,"line_end":125,"block_type":"line","text":"폴링 시작 (예: 30초 간격)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/Alarm.tsx","lang":"js","line_start":130,"line_end":130,"block_type":"line","text":"컴포넌트 언마운트 시 인터벌 제거","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/alarm.css","lang":"css","line_start":103,"line_end":103,"block_type":"block","text":"너비 고정","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/alarm.css","lang":"css","line_start":105,"line_end":105,"block_type":"block","text":"자동 줄바꿈","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/alarm/ui/alarm.css","lang":"css","line_start":108,"line_end":108,"block_type":"block","text":"어두운 배경","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS001/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS001/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS001/detail.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS001/detail.tsx","lang":"js","line_start":110,"line_end":113,"block_type":"line","text":"if (tab !== 0) {\n  alert(\"처방조제정보는 건강체만 확인이 가능합니다.\");\n  return;\n}","hangul_chars":19,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS001/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS001/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS001/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS002/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS002/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS002/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS002/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS002/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS002/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS003/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS003/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS003/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS003/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS003/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS003/subDetail.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS004/detail.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS004/detail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS004/detail.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS004/subDetail.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS004/subDetail.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS004/subDetail.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS005/detail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS005/detail.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS005/detail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS005/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS005/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS005/subDetail.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS006/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS006/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS006/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS006/subDetail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS006/subDetail.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS006/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS007/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS007/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS007/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS007/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS007/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS007/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS008/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS008/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS008/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS008/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS008/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS008/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS009/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS009/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS009/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS009/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS009/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS009/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS010/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS010/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS010/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS010/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS010/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS010/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS011/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS011/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS011/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS011/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS011/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS011/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS012/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS012/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS012/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS012/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS012/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS012/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS013/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS013/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS013/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS013/subDetail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS013/subDetail.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANS013/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANSCAR/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANSCAR/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANSCAR/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANSCAR/subDetail.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANSCAR/subDetail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/analysis/ui/ANSCAR/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/authority/constants/menu.ts","lang":"js","line_start":3,"line_end":6,"block_type":"jsdoc","text":"영업대리점용 메뉴 (하드코딩 유지)\n- 영업대리점은 별도 로그인 시스템을 사용하므로 DB 기반 메뉴가 아직 적용되지 않음","hangul_chars":47,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/authority/constants/menu.ts","lang":"js","line_start":171,"line_end":173,"block_type":"jsdoc","text":"영업대리점용 권한 코드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/authority/constants/menu.ts","lang":"js","line_start":187,"line_end":189,"block_type":"jsdoc","text":"기업관리자용 메뉴","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/authority/constants/menu.ts","lang":"js","line_start":191,"line_end":198,"block_type":"line","text":"* 운영 핫픽스(7/13)에서 축소했던 메뉴 중 기업주문·기업정산은 기획 요청(2026-07)으로 재노출.\n*  기업구독·머니 그룹은 안정화 전이라 계속 비노출 — 복구 시 git 이력의 이전 corpMenus 참고.\n* 예외: '분석 관리'(CRP_SUB003)는 기업관리 설정 agcAnalysisView(1 이상)일 때만 노출\n*  (getCorpMenuCodes에서 게이팅).\n* 기업주문(CRP_SUB002)·정산(CRP_STL001)은 최고관리자 전속 — 조직관리자에겐\n*  CORP_ORG_HIDDEN_MENU_CODES로 자동 숨김.\n* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html): 기업조직관리(CRP_ORG001) 신설 —\n*  기업관리자(CORP_SUPER) 전용 첫 화면. 조직관리자에겐 CORP_ORG_HIDDEN_MENU_CODES로 숨김.","hangul_chars":152,"class":"1_policy","tags":["1_policy","2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/authority/constants/menu.ts","lang":"js","line_start":266,"line_end":268,"block_type":"jsdoc","text":"기업관리자용 권한코드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/authority/lib/corpRole.ts","lang":"js","line_start":3,"line_end":13,"block_type":"jsdoc","text":"기업관리자 조회전용(readOnly) 여부.\n\n- 최고관리자(CORP_SUPER): 수정 가능 → false\n- 조직관리자(CORP_ORG + orgCanWrite): 자기 부분트리 운영 가능 → false\n- orgCanWrite 없는 조직관리자: 안전을 위해 조회전용 → true\n- role 미제공(불명)인 corp: 안전을 위해 조회전용 폴백 → true\n\n게이트는 `type === \"corp\"` 인 경우에만 발동한다.\nadmin / sales 로그인은 항상 false 이므로 기존 화면에 영향이 없다.","hangul_chars":100,"class":"1_policy","tags":["1_policy","2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/authority/lib/corpRole.ts","lang":"js","line_start":31,"line_end":42,"block_type":"jsdoc","text":"조직관리자(CORP_ORG)에게 숨기는 corp 메뉴 코드.\n\n- CRP_SUB002: 기업주문 관리(주문/결제)\n- CRP_STL001: 기업정산 관리(정산 관리)\n- CRP_MNY003: 머니 충전요청\n- CRP_ORG001: 기업조직관리 — 조직 트리 편집은 기업관리자(CORP_SUPER) 전용\n  (기획 2026-07, company-mockup/기업조직관리자_콘솔.html)\n\n정산/주문·결제/충전요청은 최고관리자(CORP_SUPER) 전속이라 corpMenus에서 제외한다.\n회원 머니 지급(CRP_MNY001)과 내역 관리(CRP_MNY002)는 조직관리자에게도 노출한다.","hangul_chars":121,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/authority/lib/corpRole.ts","lang":"js","line_start":50,"line_end":53,"block_type":"jsdoc","text":"분석 관리 메뉴 코드 — 기업관리 설정 agcAnalysisView로 노출을 게이팅한다.\n(0: 미노출 | 1: 분석목록만 | 2: 분석목록+상세팝업)","hangul_chars":39,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/authority/lib/corpRole.ts","lang":"js","line_start":56,"line_end":58,"block_type":"jsdoc","text":"분석관리 화면 노출레벨. corp 로그인이 아니거나 값이 없으면 0(미노출).","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/authority/lib/corpRole.ts","lang":"js","line_start":66,"line_end":74,"block_type":"jsdoc","text":"agcRole에 따라 노출할 corp 메뉴 코드 목록을 계산한다.\n\n- CORP_SUPER: 전체 코드 노출\n- CORP_ORG(또는 role 불명): 정산/충전요청 코드 제외\n- 분석 관리(CRP_SUB003): 역할과 무관하게 agcAnalysisView 1 이상일 때만 노출\n\nuseCorpReadOnly와 동일한 폴백 결(불명 corp은 안전하게 제한)을 따른다.","hangul_chars":75,"class":"1_policy","tags":["1_policy","2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/authority/ui/CorpMyPageEntry.tsx","lang":"js","line_start":6,"line_end":8,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html) 하단 \"개발팀 전달\":\n* 기업관리자·조직관리자 모두 우측 상단 \"마이페이지\" 클릭 시 현재 비밀번호 입력 후 진입.\n* 목업의 테스트 비밀번호(test) 대신 실제 검증 API(POST /corp/verify-password)로 대체.","hangul_chars":72,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/authority/ui/CorpMyPageEntry.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"jsdoc","text":"본인확인 통과 여부 세션 플래그 — 마이페이지 직접 URL 진입 차단용","hangul_chars":25,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/authority/ui/CorpMyPageEntry.tsx","lang":"js","line_start":13,"line_end":17,"block_type":"jsdoc","text":"corp(기업/조직관리자) 로그인 전용 — 헤더(Navbar) 우측 상단 마이페이지 진입 아이콘.\n클릭 → 현재 비밀번호 확인 모달 → 검증 성공 시에만 /corp/my-page 이동.\n사이드바 메뉴에는 추가하지 않는다(헤더 진입 전용, 목업 동일).","hangul_chars":74,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/authority/ui/PermissionSelector.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"menus → Permissions 형태로 변환","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS001/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS001/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS001/detail.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS001/detail.tsx","lang":"js","line_start":110,"line_end":113,"block_type":"line","text":"if (tab !== 0) {\n  alert(\"처방조제정보는 건강체만 확인이 가능합니다.\");\n  return;\n}","hangul_chars":19,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS001/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS001/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS001/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS002/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS002/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS002/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS002/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS002/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS002/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS003/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS003/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS003/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS003/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS003/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS003/subDetail.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS004/detail.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS004/detail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS004/detail.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS004/subDetail.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS004/subDetail.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS004/subDetail.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS005/detail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS005/detail.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS005/detail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS005/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS005/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS005/subDetail.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS006/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS006/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS006/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS006/subDetail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS006/subDetail.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS006/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS007/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS007/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS007/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS007/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS007/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS007/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS008/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS008/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS008/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS008/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS008/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS008/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS009/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS009/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS009/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS009/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS009/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS009/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS010/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS010/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS010/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS010/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS010/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS010/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS011/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS011/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS011/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS011/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS011/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS011/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS012/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS012/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS012/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS012/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS012/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS012/subDetail.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS013/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS013/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS013/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS013/subDetail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS013/subDetail.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANS013/subDetail.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANSCAR/detail.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANSCAR/detail.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANSCAR/detail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANSCAR/subDetail.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANSCAR/subDetail.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientAnalysis/ui/ANSCAR/subDetail.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientContract/ui/OptionsSelector.bak.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"부모 선택 핸들러","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientContract/ui/OptionsSelector.bak.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"setSelectedChildren([]); // 부모 변경 시 자식 초기화","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientContract/ui/OptionsSelector.bak.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"자식 선택 핸들러","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientContract/ui/OptionsSelector.bak.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"선택된 부모에 해당하는 자식 필터링 (없으면 전체)","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientContract/ui/OptionsSelector.bak.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"line","text":"검색어를 포함한 자식만 필터링","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientContract/ui/OptionsSelector.bak.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"선택한 자식의 이름 목록 가져오기","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientContract/ui/OptionsSelector.bak.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"`data`가 있을 경우, 부모 및 자식 자동 설정","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientContract/ui/OptionsSelector.bak.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"line","text":"여러 부모에 걸쳐 있으면 \"모든 분석옵션\" 선택","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientContract/ui/OptionsSelector.bak.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"block","text":"부모 선택 드롭다운","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientContract/ui/OptionsSelector.bak.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"block","text":"검색 입력","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientContract/ui/OptionsSelector.bak.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"block","text":"자식 항목 리스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientContract/ui/OptionsSelector.bak.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"block","text":"선택한 항목 미리보기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/clientContract/ui/OptionsSelector.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"options → Permissions 형태로 변환","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpFc/hooks/useCorpFcModal.ts","lang":"js","line_start":4,"line_end":6,"block_type":"line","text":"구독 해지 처리하시겠습니까?\n구독처리에 실패했습니다.\n독처리가 완료되었습니다.","hangul_chars":34,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpFc/hooks/useCorpFcModal.ts","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpFc/hooks/useCorpFcModal.ts","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpFc/hooks/useCorpFcModal.ts","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/lib/orgPath.ts","lang":"js","line_start":3,"line_end":7,"block_type":"jsdoc","text":"조직 전체 경로 공용 헬퍼\n- 조직 목록(items)의 orgParentId를 따라 \"상위 > 하위\" 형태의 전체 경로 라벨을 조합한다.\n- 목록 필터 옵션(라벨=전체 경로, value=orgId)과 테이블 소속조직 셀 표기에 공용으로 사용.","hangul_chars":66,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/lib/orgPath.ts","lang":"js","line_start":11,"line_end":15,"block_type":"jsdoc","text":"형제 노드 정렬 규칙: 조직명 오름차순 — 트리/필터 옵션 공통.\n- 숫자(자연 정렬: 2팀 < 10팀) → 영문 → 한글(가나다순) 순.\n  'ko' 로케일은 영문이 한글 뒤로 가서 통상 기대 순서·DB(ORDER BY org_name)와 어긋나므로 'en' 사용.","hangul_chars":67,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/corpOrg/lib/orgPath.ts","lang":"js","line_start":26,"line_end":26,"block_type":"jsdoc","text":"대상 조직의 모든 하위 노드 orgId 집합(자기 자신 제외) — 노드이동 옵션 필터링용","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/lib/orgPath.ts","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"순환 방어","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/lib/orgPath.ts","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"단일 조직의 전체 경로 라벨(\"A > B\") 조합. 부모가 목록에 없으면 있는 구간까지만 표기","hangul_chars":31,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/lib/orgPath.ts","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"순환 방어","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/lib/orgPath.ts","lang":"js","line_start":67,"line_end":70,"block_type":"jsdoc","text":"조직 목록 → 필터 select 옵션 배열(부모→자식 트리 순서, 라벨=전체 경로, value=orgId).\nOrgManageTab.buildTreeRows와 동일한 순회 규칙(부모 누락 노드는 루트 취급, 순회 누락분은 뒤에 평면 추가).","hangul_chars":55,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/corpOrg/lib/orgPath.ts","lang":"js","line_start":87,"line_end":87,"block_type":"line","text":"* 형제 정렬: 조직명 오름차순(트리 렌더와 동일 규칙)","hangul_chars":20,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/corpOrg/lib/orgPath.ts","lang":"js","line_start":89,"line_end":89,"block_type":"line","text":"순환 방어","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/lib/orgPath.ts","lang":"js","line_start":96,"line_end":96,"block_type":"line","text":"* 순회에서 누락된 노드(비정상 데이터)는 뒤에 평면으로 덧붙임","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/lib/orgPath.ts","lang":"js","line_start":105,"line_end":105,"block_type":"jsdoc","text":"목록 row의 소속조직 셀 값: 전체 경로 우선, 없으면 조직명, 둘 다 없으면 \"미배정\"","hangul_chars":29,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/CorpfcOrgTab.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"jsdoc","text":"현재 소속 조직 ID(미배정이면 null)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/CorpfcOrgTab.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"jsdoc","text":"현재 소속 조직명(표시용)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/CorpfcOrgTab.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"jsdoc","text":"현재 조직관리자 자격(1=지정). 서버 상세 응답 미반환 시 undefined → 미지정으로 초기화","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/CorpfcOrgTab.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"jsdoc","text":"저장 후 상위 상세 갱신 콜백","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/CorpfcOrgTab.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"jsdoc","text":"서버 응답에서 성공/에러 판별 — assign/org-manager는 { updated } 원형 반환","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/CorpfcOrgTab.tsx","lang":"js","line_start":32,"line_end":38,"block_type":"jsdoc","text":"기업회원 상세 · 조직/관리자 권한 탭(task-688)\n- 소속 조직 표시 + 변경(assign) : 기존 edit 엔드포인트(orgId)로 반영\n- 조직관리자 지정(mem_is_org_manager) : PATCH /admin/agency-fc/org-manager 로 저장\n- 기획 피드백(2026-08): 인라인 [조직 변경]·[저장] 버튼 제거 — 다른 상세처럼\n  우측 하단 [저장] 버튼 하나로 통합, 변경된 항목만 순차 저장","hangul_chars":89,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/CorpfcOrgTab.tsx","lang":"js","line_start":98,"line_end":98,"block_type":"line","text":"* 통합 저장 — 소속 조직·조직관리자 지정 중 변경된 항목만 순차 반영","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/CorpfcOrgTab.tsx","lang":"js","line_start":114,"line_end":114,"block_type":"line","text":"* 앞 단계(조직 변경)가 반영된 뒤 실패하면 알림 후에도 상세를 갱신해 실제 상태를 보여준다","hangul_chars":36,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/CorpfcOrgTab.tsx","lang":"js","line_start":138,"line_end":138,"block_type":"line","text":"* 기업FC(MEM002)가 아니면 갱신 0건","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/CorpfcOrgTab.tsx","lang":"js","line_start":154,"line_end":154,"block_type":"block","text":"1) 소속 조직","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/CorpfcOrgTab.tsx","lang":"js","line_start":200,"line_end":200,"block_type":"block","text":"2) 조직 관리자 권한","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/CorpfcOrgTab.tsx","lang":"js","line_start":257,"line_end":257,"block_type":"block","text":"다른 상세 화면과 동일한 우측 하단 단일 저장 버튼","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgAssignBulkModal.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"jsdoc","text":"선택 회원 수","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgAssignBulkModal.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"jsdoc","text":"배정할 조직 ID(필수) — 서버 assign-org는 미배정/해제를 지원하지 않음","hangul_chars":22,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgAssignBulkModal.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"jsdoc","text":"선택 회원 소속 조직 일괄 배정 모달","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"jsdoc","text":"서버 에러 응답({ code, message })에서 메시지 추출","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"jsdoc","text":"트리 렌더용 행(들여쓰기 depth 포함)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":54,"line_end":59,"block_type":"jsdoc","text":"가변깊이 트리(org_parent_id 기반)를 부모→자식 순서의 평면 배열로 정렬.\n- 부모가 목록에 없는 노드(필터로 잘린 경우 등)는 루트로 취급해 depth 0 부터 렌더.\n- depth는 순회 깊이(필터 시에도 안정적). 정상 전체 목록이면 org_depth와 일치.\n- 형제 정렬: 조직명 오름차순(필터 옵션과 동일 규칙).","hangul_chars":96,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":74,"line_end":74,"block_type":"line","text":"순환 방어","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":85,"line_end":85,"block_type":"line","text":"* 순회에서 누락된 노드(비정상 데이터)는 뒤에 평면으로 덧붙임","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":92,"line_end":95,"block_type":"jsdoc","text":"조직별 소속 회원수(하위 조직 포함 합산) 계산.\n- 서버 memberCount는 직속 인원만 내려오므로, 상위 노드는 하위 트리 합계로 표기한다.","hangul_chars":47,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":109,"line_end":109,"block_type":"line","text":"순환 방어","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":126,"line_end":131,"block_type":"jsdoc","text":"기업 조직관리 탭(task-688)\n- 좌: 조직 트리(org_parent_id/org_depth 기반 들여쓰기), 우: 선택 노드 상세/수정\n- [노드추가](상위 노드 선택)/[노드이동](부분트리 재배치)/[노드삭제] 모달\n- 사용여부 토글, 소속 회원수 표기","hangul_chars":67,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":135,"line_end":136,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html): 기업관리자 콘솔(기업조직관리)에서도 재사용 —\n*  회원 상세 경로가 콘솔별로 달라(corp: /user/corp-fc/:id, admin: /user/corp-fc/:agcId/:id) 로그인 타입으로 분기","hangul_chars":52,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":144,"line_end":146,"block_type":"line","text":"* 모달(노드추가/노드이동) 상위노드 옵션용 무필터 전체 목록.\n*   트리 필터(useYn/keyword)로 중간 노드가 빠진 list를 옵션으로 쓰면 부모 체인이 끊겨\n*   노드이동의 자손 제외(collectDescendantIds)가 손자 이하를 못 걸러내므로 반드시 분리한다(QA 재수정).","hangul_chars":81,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":171,"line_end":171,"block_type":"line","text":"트리 접기/펼치기: 접힌 노드의 하위는 렌더에서 제외(최상단 클릭으로 토글)","hangul_chars":30,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":176,"line_end":176,"block_type":"line","text":"* 접힌 조상 아래의 행 숨김 — DFS 순서라 depth 비교만으로 판정 가능","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":199,"line_end":199,"block_type":"line","text":"* 상위 노드 라벨은 트리 필터와 무관하게 전체 경로가 보여야 하므로 무필터 목록 기준으로 조회","hangul_chars":38,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":217,"line_end":217,"block_type":"line","text":"* 필터가 없으면 트리 목록이 곧 전체 목록 — 같은 응답을 재사용해 중복 호출 방지","hangul_chars":31,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":260,"line_end":260,"block_type":"line","text":"* 코드는 엑셀 일괄 배정의 조직 식별자 — 필수, 영문 대문자/숫자/하이픈/언더스코어만 (서버 DTO와 동일 규칙)","hangul_chars":40,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":320,"line_end":320,"block_type":"line","text":"* 순환(E0311)/타기업(E0309) 등은 서버 메시지 그대로 노출","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":349,"line_end":349,"block_type":"line","text":"* 트리 회원수(하위 포함 합계)와 맞추기 위해 orgScope=subtree로 하위 조직 회원까지 조회","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":363,"line_end":363,"block_type":"block","text":"좌: 조직 트리","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":431,"line_end":431,"block_type":"line","text":"* 최상단 노드 클릭 시 하위 노드 노출/숨김 토글(선택도 함께 수행)","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":446,"line_end":446,"block_type":"line","text":"* 하위 노드가 있는 어느 노드든 캐럿으로 개별 토글 가능","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":487,"line_end":487,"block_type":"block","text":"우: 노드 상세/수정","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":614,"line_end":614,"block_type":"block","text":"하위 조직 포함 합계(직속 인원과 다르면 병기)","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgManageTab.tsx","lang":"js","line_start":673,"line_end":674,"block_type":"block","text":"상위노드 옵션은 트리 필터와 무관하게 항상 무필터 전체 목록 사용\n          (필터로 잘린 목록이면 노드이동의 자손 제외 계산이 끊겨 하위 노드가 노출됨)","hangul_chars":58,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgNodeAddModal.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"jsdoc","text":"상위 노드 선택 옵션 — 반드시 무필터 전체 조직 목록(노드이동 목록과 동일 소스)","hangul_chars":31,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgNodeAddModal.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"jsdoc","text":"초기 상위 노드(선택된 노드 하위로 추가 시). 미지정이면 루트","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgNodeAddModal.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"jsdoc","text":"노드 추가 모달 — 조직명 필수, 상위 노드/코드/설명/사용여부 선택","hangul_chars":25,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgNodeAddModal.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"* 코드는 엑셀 일괄 배정의 조직 식별자 — 필수, 영문 대문자/숫자/하이픈/언더스코어만 (서버 DTO와 동일 규칙)","hangul_chars":40,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgNodeDeleteModal.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"jsdoc","text":"노드 삭제 확인 모달 — 소속 회원의 계정/구독은 보존, 소속만 미배정 전환","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgNodeMoveModal.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"jsdoc","text":"이동 대상 노드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgNodeMoveModal.tsx","lang":"js","line_start":15,"line_end":19,"block_type":"jsdoc","text":"부모로 선택 가능한 조직 목록(자기 자신·모든 하위 노드는 내부에서 제외).\n반드시 무필터 전체 목록이어야 함 — 필터로 중간 노드가 빠지면 부모 체인이 끊겨\n자손(손자 이하) 제외 계산이 누락된다.","hangul_chars":76,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgNodeMoveModal.tsx","lang":"js","line_start":25,"line_end":29,"block_type":"jsdoc","text":"노드 이동 모달(task-688)\n- 새 상위 노드를 선택(루트 이동 포함)해 PUT :orgId/move(newParentId) 로 부분트리 재배치.\n- 자기 자신/하위 노드로의 이동(순환)과 타기업 이동은 서버가 차단(E0311/E0309) → 호출부에서 메시지 표기.","hangul_chars":65,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/OrgNodeMoveModal.tsx","lang":"js","line_start":44,"line_end":45,"block_type":"line","text":"* 새 상위 노드 선택 목록: 노드 추가와 동일하게 전체 경로 + 조직명 오름차순 트리 순서.\n*   자기 자신과 모든 하위 노드는 순환이 되므로 목록에서 제외(서버 E0311 이중 방어).","hangul_chars":63,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/corpOrg.css","lang":"css","line_start":1,"line_end":1,"block_type":"block","text":"기업조직 관리(task-688) — 인라인 스타일 대신 클래스 사용","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/corpOrg.css","lang":"css","line_start":13,"line_end":13,"block_type":"block","text":"조직트리 1/3 : 상세(수정) 2/3 비율 배분","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/corpOrg.css","lang":"css","line_start":107,"line_end":107,"block_type":"block","text":"가변깊이 트리 들여쓰기 — depth 무제한(12px + depth*16px). --depth(순회 깊이)만 전달받아 여기서 계산.","hangul_chars":27,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/corpOrg.css","lang":"css","line_start":130,"line_end":130,"block_type":"block","text":"트리 접기/펼치기 캐럿 — 하위 있는 노드만 회전 표시, 리프는 자리 맞춤용 점","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/corpOrg.css","lang":"css","line_start":272,"line_end":272,"block_type":"block","text":"버튼 묶음 선택 모달(양식다운로드/엑셀업로드) 메뉴 항목","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/corpOrg.css","lang":"css","line_start":330,"line_end":330,"block_type":"block","text":"조직관리자 읽기 표시(복수) — 지정/해제는 회원 상세에서","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/corpOrg/ui/corpOrg.css","lang":"css","line_start":359,"line_end":359,"block_type":"block","text":"기업회원 상세 > 조직·관리자 권한 탭","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/deposit/hooks/useClientDepositCompleteModal.ts","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/deposit/hooks/useCorpDepositCompleteModal.ts","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/constants.ts","lang":"js","line_start":1,"line_end":3,"block_type":"line","text":"* 로그인 path 분리(2026-07 기획): 포털·탭 기억 키.\n*  - 포털: 로그아웃/세션만료 시 본인이 쓰던 로그인 화면(/login | /manage/login)으로 돌려보내기 위함\n*  - 탭: 각 로그인 화면에서 마지막에 로그인 시도했던 탭을 active로 복원","hangul_chars":68,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/login/constants.ts","lang":"js","line_start":24,"line_end":24,"block_type":"jsdoc","text":"로그아웃/미인증 리다이렉트 대상 — 마지막 로그인 포털 기준(기본: 기업·조직용 /login)","hangul_chars":31,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/login/hooks/useLoginCertForm.ts","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"성공 처리","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/hooks/useLoginCertForm.ts","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"에러 처리","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/hooks/useLoginForm.ts","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"* 조직관리자 탭 전용 — 기업코드 (2026-07 기획: 기업 아이디 → 기업코드)","hangul_chars":23,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/login/hooks/useLoginForm.ts","lang":"js","line_start":20,"line_end":22,"block_type":"jsdoc","text":"API 메뉴에서 COM001 코드 존재 여부 확인","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/hooks/useLoginForm.ts","lang":"js","line_start":29,"line_end":31,"block_type":"jsdoc","text":"API 메뉴에서 첫 번째 접근 가능한 URL 찾기","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/hooks/useLoginForm.ts","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"API에서 내 권한에 맞는 메뉴 트리 조회","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/hooks/useLoginForm.ts","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"COM001(메인) 권한이 있으면 메인으로 이동","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/hooks/useLoginForm.ts","lang":"js","line_start":63,"line_end":63,"block_type":"line","text":"첫 번째 접근 가능한 메뉴로 이동","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/hooks/useLoginForm.ts","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"* 마지막 로그인 시도 기억 — 로그아웃 시 같은 포털로 복귀 + 해당 화면 탭 active 복원","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/hooks/useLoginForm.ts","lang":"js","line_start":110,"line_end":110,"block_type":"line","text":"관리자 권한체크","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/hooks/useLoginForm.ts","lang":"js","line_start":113,"line_end":113,"block_type":"line","text":"영업대리점 고정 이동","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/hooks/useLoginForm.ts","lang":"js","line_start":116,"line_end":117,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html):\n*  기업관리자(CORP_SUPER) 첫 화면 = 기업조직관리","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/hooks/useLoginForm.ts","lang":"js","line_start":120,"line_end":120,"block_type":"line","text":"조직관리자(CORP_ORG): 기업회원 관리 페이지로 바로 이동(기존 유지)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/hooks/useLoginForm.ts","lang":"js","line_start":124,"line_end":124,"block_type":"line","text":"* 서버가 구체 사유를 준 경우(E0102 소속 조직 미배정 등) 그대로 표기","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/ui/LoginCertForm.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"block","text":"인증번호","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/ui/LoginCertForm.tsx","lang":"js","line_start":55,"line_end":57,"block_type":"block","text":"<Form.Button className=\"btn_line mt-3\" onClick={onHandleCertSkipClick}>\n        인증스킵 (슈퍼계정)\n      </Form.Button>","hangul_chars":8,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/ui/LoginForm.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"block","text":"조직관리자: 소속 기업코드 (2026-07 기획 — 기업 아이디 → 기업코드)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/login/ui/LoginForm.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"block","text":"비밀번호","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementConfirmModal.ts","lang":"js","line_start":15,"line_end":17,"block_type":"jsdoc","text":"후불정산 [정산처리] 모달 훅 — 선택 행의 정산상태(astSettleStatus)에 따라\n미정산(PENDING)은 정산확정으로, 정산확정(CONFIRMED)은 미정산으로 해제한다.\n선택 건이 섞여 있으면 두 처리를 함께 안내 후 각각 API를 호출한다.","hangul_chars":71,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementConfirmModal.ts","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"astSettleStatus 미배포 구간(서버 응답 없음) 대비 — 값이 없으면 기본 PENDING(미정산)으로 취급","hangul_chars":27,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementConfirmModal.ts","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"skip 안내 라벨용 astId → 대상(기업명·정산코드) 맵 — 내부 id 대신 사용자용 표기로 매핑","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementDetailConfirmModal.ts","lang":"js","line_start":6,"line_end":7,"block_type":"jsdoc","text":"후불정산 상세 [정산확정]/[정산확정 해제] 모달 훅 — 현재 astSettleStatus에 따라 확정 또는 해제로 동작\n정산 요약(summary)은 페이지가 그대로 들고 있다가 모달 UI에 직접 전달한다(훅은 가공하지 않으므로 보관 불필요).","hangul_chars":74,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementMailModal.ts","lang":"js","line_start":6,"line_end":7,"block_type":"jsdoc","text":"후불정산 상세 [메일 발송] 모달 훅 — 정산확정(CONFIRMED) 상태에서만 발송 가능.\n수신 이메일 기본값 = 계약 회계팀 이메일, 제목/본문은 정산확정금액 기준 템플릿을 채워준다.","hangul_chars":63,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementMailModal.ts","lang":"js","line_start":25,"line_end":25,"block_type":"jsdoc","text":"정산확정 상태가 아니면 true — 열람 시도 시 안내만 하고 열지 않는다","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementMailModal.ts","lang":"js","line_start":37,"line_end":37,"block_type":"line","text":"* 정산연월(YYYY-MM) → \"YYYY년 M월\" 표기 (파싱 불가 시 원문 폴백)","hangul_chars":17,"class":"1_policy","tags":["1_policy","2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementOrderBulkActionModal.ts","lang":"js","line_start":12,"line_end":13,"block_type":"jsdoc","text":"후불정산 상세 [선택 일괄 반영변경] 모달 훅 — 구독 주문내역 탭에서 체크한 여러 건을\n한 번에 정산반영(반영/미반영/이월)으로 변경한다. 미정산(PENDING) 상태에서만 사용 가능.","hangul_chars":65,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementOrderBulkActionModal.ts","lang":"js","line_start":23,"line_end":23,"block_type":"jsdoc","text":"현재 목록의 주문 행(rows) — skip 안내 라벨(주문번호) 매핑용","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementOrderBulkActionModal.ts","lang":"js","line_start":27,"line_end":27,"block_type":"jsdoc","text":"정산확정(CONFIRMED) 상태 — 반영 편집 잠금","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementOrderBulkActionModal.ts","lang":"js","line_start":29,"line_end":29,"block_type":"jsdoc","text":"처리 완료 후 목록·상세 새로고침 콜백(페이지의 refreshAll)","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementOrderBulkActionModal.ts","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"skip 안내 라벨용 ordId → 주문번호(ordOid) 맵 — 내부 id 대신 사용자용 표기로 매핑","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementOrderBulkPriceModal.ts","lang":"js","line_start":9,"line_end":11,"block_type":"jsdoc","text":"후불정산 상세 [선택 단가 일괄수정] 모달 훅 — 전월 구독수 기준 단가 변동(예: 1.5만명 구간) 시\n체크한 주문들의 정산단가(ord_settlement_price)를 새 단가로 일괄 변경한다.\n결제금액(pmt_amount)은 바꾸지 않으며, 미정산(PENDING) 상태에서만 사용 가능.","hangul_chars":79,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementOrderBulkPriceModal.ts","lang":"js","line_start":21,"line_end":21,"block_type":"jsdoc","text":"현재 목록의 주문 행(rows) — skip 안내 라벨(주문번호) 매핑용","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementOrderBulkPriceModal.ts","lang":"js","line_start":25,"line_end":25,"block_type":"jsdoc","text":"정산확정(CONFIRMED) 상태 — 단가 편집 잠금","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementOrderBulkPriceModal.ts","lang":"js","line_start":27,"line_end":27,"block_type":"jsdoc","text":"처리 완료 후 목록·상세 새로고침 콜백(페이지의 refreshAll)","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementOrderBulkPriceModal.ts","lang":"js","line_start":34,"line_end":34,"block_type":"line","text":"skip 안내 라벨용 ordId → 주문번호(ordOid) 맵 — 내부 id 대신 사용자용 표기로 매핑","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementPaymentModal.ts","lang":"js","line_start":15,"line_end":16,"block_type":"jsdoc","text":"후불정산 [입금처리] 통합 모달(입금완료처리 / 입금철회) 훅\n체크박스 선택(selectedIds)은 목록 페이지에서 관리(정산처리와 공유)하고, 훅은 selectedIds/list를 전달받아 사용한다.","hangul_chars":59,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementPaymentModal.ts","lang":"js","line_start":37,"line_end":37,"block_type":"line","text":"skip 안내 라벨용 astId → 대상(기업명·정산코드) 맵 — 내부 id 대신 사용자용 표기로 매핑","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementStatementPreviewModal.ts","lang":"js","line_start":6,"line_end":8,"block_type":"jsdoc","text":"후불정산 상세 [구매내역서] 미리보기 모달 훅 — 정산확정(CONFIRMED) 상태에서만 열람 가능.\n 열람 시 PDF 를 blob 으로 받아 미리보기(iframe)로 띄우고,\n [PDF 다운로드]는 이미 받은 응답을 재사용해 저장한다(재요청 없음).","hangul_chars":72,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementStatementPreviewModal.ts","lang":"js","line_start":14,"line_end":14,"block_type":"jsdoc","text":"정산확정 상태가 아니면 true — 열람 시도 시 안내만 하고 열지 않는다","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/hooks/useSettlementStatementPreviewModal.ts","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"* PDF 다운로드용 원본 응답(파일명은 Content-Disposition 헤더에서 추출)","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/index.ts","lang":"js","line_start":6,"line_end":6,"block_type":"line","text":"후불정산 상세 전용 (신규) — UI는 default export이므로 named re-export로 노출","hangul_chars":17,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/settlement/lib/formatBulkResult.ts","lang":"js","line_start":8,"line_end":9,"block_type":"jsdoc","text":"정산 일괄처리 API 공통 응답({processed, skipped})을 alert 메시지로 포맷.\nskipped 항목의 표시 라벨(예: `astId 1` / `ID 2`)은 호출부마다 다르므로 getLabel로 전달받는다.","hangul_chars":41,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/lib/toSettlementTarget.ts","lang":"js","line_start":11,"line_end":11,"block_type":"jsdoc","text":"후불정산 목록 아이템 → 모달 표시용 대상(astId/기업명/정산코드) 매핑","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/ui/SettlementConfirmModal.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"jsdoc","text":"후불정산 목록 [정산처리] 모달 — 선택 행의 정산상태에 따라 확정/해제를 함께 안내","hangul_chars":32,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/ui/SettlementDetailConfirmModal.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"jsdoc","text":"후불정산 상세 [정산확정]/[정산확정 해제] 모달","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/ui/SettlementMailModal.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"jsdoc","text":"후불정산 상세 [메일 발송] 모달 — 정산확정 상태에서만 열림. 기본값 채움 + 자유 수정 가능","hangul_chars":34,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/ui/SettlementOrderBulkActionModal.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"jsdoc","text":"후불정산 상세 [선택 일괄 반영변경] 모달 — 체크한 여러 구독 주문의 정산반영을 한 번에 변경","hangul_chars":36,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/ui/SettlementOrderBulkPriceModal.tsx","lang":"js","line_start":14,"line_end":15,"block_type":"jsdoc","text":"후불정산 상세 [선택 단가 일괄수정] 모달 — 전월 구독수 기준 단가 변동 시\n체크한 구독 주문들의 정산단가를 새 단가로 한 번에 변경","hangul_chars":51,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/features/settlement/ui/SettlementPaymentModal.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"jsdoc","text":"후불정산 목록 [입금처리] 통합 모달 — 입금완료처리 / 입금철회 중 선택","hangul_chars":27,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/ui/SettlementStatementPreviewModal.tsx","lang":"js","line_start":9,"line_end":9,"block_type":"jsdoc","text":"PDF blob object URL — iframe 미리보기 소스","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/ui/SettlementStatementPreviewModal.tsx","lang":"js","line_start":13,"line_end":14,"block_type":"jsdoc","text":"후불정산 상세 [구매내역서] 미리보기 모달 — 다운로드 대신 팝업 미리보기.\n 상단에 [닫기]/[PDF 다운로드] 버튼, 본문에 PDF(iframe) 미리보기 (목업 후불정산관리_구매내역서.html 참고)","hangul_chars":62,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/settlement/ui/SettlementStatementPreviewModal.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"block","text":"상단 툴바 — PDF 다운로드 (닫기는 모달 헤더 X와 중복이라 미노출)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/statistics/ui/AnalysisSstatisticsDataTable.tsx","lang":"js","line_start":95,"line_end":118,"block_type":"block","text":"<table className=\"table table-bordered text-center mt-4\">\n  <thead className=\"thead-light\">\n    <tr>\n      <th>{stateName}</th>\n      <th>결제</th>\n      <th>결제 취소</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr className=\"font-weight-bold bg-light\">\n      <td>합계</td>\n      <td>{total.pay.toLocaleString()}</td>\n      <td>{total.cancel.toLocaleString()}</td>\n    </tr>\n    {rows.map((row, idx) => (\n      <tr key={idx}>\n        <td>{row.label}</td>\n        <td>{row.payAmount.toLocaleString()}</td>\n        <td>{row.cancelAmount.toLocaleString()}</td>\n      </tr>\n    ))}\n  </tbody>\n</table>","hangul_chars":8,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/statistics/ui/ChartTypePanel.tsx","lang":"js","line_start":32,"line_end":40,"block_type":"block","text":"<span\n          className=\"text-muted small\"\n          style={{\n            fontWeight: 500,\n            whiteSpace: \"nowrap\",\n          }}\n        >\n          차트 유형\n        </span>","hangul_chars":4,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/statistics/ui/RevenueStatisticsDataTable.tsx","lang":"js","line_start":55,"line_end":78,"block_type":"block","text":"<table className=\"table table-bordered text-center mt-4\">\n  <thead className=\"thead-light\">\n    <tr>\n      <th>{stateName}</th>\n      <th>결제</th>\n      <th>결제 취소</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr className=\"font-weight-bold bg-light\">\n      <td>합계</td>\n      <td>{total.pay.toLocaleString()}</td>\n      <td>{total.cancel.toLocaleString()}</td>\n    </tr>\n    {rows.map((row, idx) => (\n      <tr key={idx}>\n        <td>{row.label}</td>\n        <td>{row.payAmount.toLocaleString()}</td>\n        <td>{row.cancelAmount.toLocaleString()}</td>\n      </tr>\n    ))}\n  </tbody>\n</table>","hangul_chars":8,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/statistics/ui/SignupStatisticsDataTable.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"전일 대비 증감률 계산","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/features/statistics/ui/SignupStatisticsDataTable.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"최소 2개 이상 있어야 평균 의미 있음","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":19,"line_end":21,"block_type":"jsdoc","text":"API 메뉴 타입을 사이드바 MenuItem 타입으로 변환","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":32,"line_end":34,"block_type":"jsdoc","text":"API 메뉴 트리에서 특정 코드 존재 여부 확인","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"3. 재귀적으로 필터링","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"code가 있으면 권한 체크, 없으면 부모 권한을 따름","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"children 필터링 시 현재 메뉴의 권한 상태를 전달","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"부모 메뉴가 허용되었거나 자식 중 하나라도 허용된 경우만 포함","hangul_chars":26,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":80,"line_end":84,"block_type":"jsdoc","text":"현재 경로가 허용된 메뉴에 포함되는지 확인\n- 부모 경로 권한이 있으면 하위 경로도 허용\n- 예: /money/corp-money 권한 → /money/corp-money/123/history 허용","hangul_chars":40,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"부모 경로로 시작하면 허용 (하위 경로 포함)","hangul_chars":17,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":107,"line_end":109,"block_type":"jsdoc","text":"* path와 targetPath의 일치 여부를 확인하는 함수","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":123,"line_end":127,"block_type":"jsdoc","text":"DB에 없는 하위 경로의 이름 매핑\n- key: 경로 패턴 (정규식 사용 가능)\n- value: 표시할 메뉴 이름","hangul_chars":30,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":132,"line_end":134,"block_type":"jsdoc","text":"하위 경로에 대한 페이지 이름 찾기","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":144,"line_end":147,"block_type":"jsdoc","text":"* 페이지 헤더를 셋팅하는 함수\n* - 정확히 매칭되는 메뉴가 없으면 부모 경로로 시작하는 메뉴를 찾음","hangul_chars":39,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":156,"line_end":156,"block_type":"line","text":"1. 먼저 정확히 매칭되는 메뉴 찾기","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":175,"line_end":175,"block_type":"line","text":"예외처리","hangul_chars":4,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":194,"line_end":194,"block_type":"line","text":"2. 정확한 매칭이 없으면 부모 경로로 시작하는 메뉴 찾기 (하위 경로 지원)","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":198,"line_end":198,"block_type":"line","text":"하위 페이지 이름이 정의되어 있으면 사용","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":227,"line_end":229,"block_type":"jsdoc","text":"* 관리자 레이아웃 컴퍼넌트","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":241,"line_end":241,"block_type":"line","text":"관리자: API에서 권한에 맞는 메뉴 트리 조회","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":246,"line_end":246,"block_type":"line","text":"COM001 (메인) 접근 권한 확인","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":250,"line_end":250,"block_type":"line","text":"페이지 헤더 설정","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":255,"line_end":255,"block_type":"line","text":"영업대리점: 고정 권한","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":263,"line_end":265,"block_type":"line","text":"기업관리자: 고정 권한\n조직관리자(CORP_ORG)면 정산/머니충전 메뉴 제외(최고관리자 전속)\n분석 관리는 기업관리 설정 agcAnalysisView(1 이상)일 때만 노출","hangul_chars":50,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":278,"line_end":280,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html): 마이페이지는 사이드바 메뉴\n* 미등록(헤더 진입 전용)이라 메뉴 트리에 없음 → 페이지 헤더를 수동 지정.\n* 목업 crumb: 마이페이지 / 기업정보(기업관리자) · 내 정보(조직관리자)","hangul_chars":75,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":295,"line_end":295,"block_type":"line","text":"[로컬테스트 전용] 11·12 신규화면 — 운영은 tn_menu 등록 필요. 커밋 금지.","hangul_chars":22,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":302,"line_end":303,"block_type":"line","text":"* 숨김 내부 도구 — tn_menu/사이드바에 의도적으로 미등록. 권한체크 영구 우회(배포 포함).\n* 진료내역 벤더 오류 테스터(/test/treat-error-tester). 서버도 AdminJwtAuthGuard로 별도 보호.","hangul_chars":50,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":309,"line_end":311,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html): 마이페이지 — 사이드바 메뉴에\n* 등록하지 않는 헤더 진입 전용 화면이라 메뉴 기반 권한체크를 corp 로그인에 한해 우회.\n* admin/sales는 우회 없음(진입 아이콘도 미노출) → 기존 화면 영향 없음.","hangul_chars":78,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":317,"line_end":317,"block_type":"line","text":"← 로딩 완료 시에만 체크","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/layouts/AdminLayout.tsx","lang":"js","line_start":324,"line_end":324,"block_type":"line","text":"← 로딩 완료 시에만 체크","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 성공=파랑 | 실패=빨강","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 성공=파랑 | 실패=빨강","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":82,"line_end":82,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 성공=파랑 | 실패=빨강","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"TODO: 타입 정의 필요","hangul_chars":6,"class":"4_todo","tags":["4_todo"],"classified_by":"keyword","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"리스트 데이터에 _rowData 추가 (render에서 row 접근용)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"전체 row 데이터를 저장","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"모달 상태","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"페이지네이션 계산","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"페이지 그룹 계산 (한 번에 10개 페이지 표시)","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":64,"line_end":64,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":86,"line_end":86,"block_type":"jsdoc","text":"담당회원 검색 버튼 클릭","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":110,"line_end":110,"block_type":"jsdoc","text":"회원 선택","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":115,"line_end":115,"block_type":"jsdoc","text":"담당자 지정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":144,"line_end":144,"block_type":"jsdoc","text":"원본데이터 엑셀 다운로드","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":152,"line_end":152,"block_type":"line","text":"두 일의 차이를 계산 (밀리초 단위)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":156,"line_end":156,"block_type":"line","text":"한 달을 밀리초로 변환 (30일 기준)","hangul_chars":12,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":158,"line_end":158,"block_type":"line","text":"한 달 이내인지 확인","hangul_chars":8,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":177,"line_end":184,"block_type":"line","text":"TODO: 대행사 목록 API 연동 필요\napi.agencyApi.getAgenciesAll().then((res) => {\n  const agcOption = res.map((agc) => ({\n    label: `${agc.agcCode}/${agc.agcName}`,\n    value: agc.agcId,\n  }));\n  setAgencies(agcOption);\n});","hangul_chars":9,"class":"4_todo","tags":["4_todo","5_dead"],"classified_by":"keyword","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":216,"line_end":216,"block_type":"line","text":"BOD 코드 (새 표준)","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":222,"line_end":222,"block_type":"line","text":"COD 코드 (기존)","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":228,"line_end":228,"block_type":"line","text":"CF 코드 (Codef 응답)","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":233,"line_end":233,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 분석완료=파랑 | 분석실패=빨강 (그 외 상태 기본색)","hangul_chars":25,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":265,"line_end":265,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 노출=파랑 | 비노출=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":279,"line_end":279,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 동의=파랑 | 미동의=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":293,"line_end":293,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 신청=파랑 | 미신청=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":346,"line_end":346,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 지정=파랑 | 미지정=기본색","hangul_chars":16,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":378,"line_end":378,"block_type":"line","text":"담당회원아이디가 있으면 표시","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":383,"line_end":387,"block_type":"line","text":"검색 버튼 활성화 조건:\n1. 분석상태가 \"분석완료\"(BOD004 또는 CF-00000)\n2. 상담신청여부가 \"신청\"(1)\n3. 담당자지정여부가 \"미지정\"(0 또는 null)\n4. 담당회원아이디가 없음","hangul_chars":52,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":411,"line_end":411,"block_type":"line","text":"조건에 맞지 않으면 빈 칸","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":420,"line_end":420,"block_type":"line","text":"분석완료 상태에서만 상세 보기 가능","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":429,"line_end":429,"block_type":"line","text":"iframe 팝업으로 유저 사이트 분석 상세 표시","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":525,"line_end":525,"block_type":"block","text":"회원 검색 모달","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/AnalysisPage.tsx","lang":"js","line_start":612,"line_end":612,"block_type":"block","text":"페이지네이션","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":69,"line_end":69,"block_type":"line","text":"모달 상태","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"line","text":"검색 필터","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"line","text":"TODO: 수정 API 추가 필요","hangul_chars":6,"class":"4_todo","tags":["4_todo"],"classified_by":"keyword","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":112,"line_end":112,"block_type":"jsdoc","text":"회원 목록 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":147,"line_end":147,"block_type":"jsdoc","text":"담당회원 검색 버튼 클릭","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":165,"line_end":165,"block_type":"line","text":"모달 열릴 때 회원 목록 조회","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":178,"line_end":178,"block_type":"jsdoc","text":"날짜 버튼 클릭","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":223,"line_end":223,"block_type":"jsdoc","text":"회원 선택","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":228,"line_end":228,"block_type":"jsdoc","text":"구독상태 라벨","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":240,"line_end":240,"block_type":"jsdoc","text":"담당자 지정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":412,"line_end":412,"block_type":"line","text":"상담신청여부가 \"신청\"(1)이면 검색 버튼 표시","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":435,"line_end":435,"block_type":"line","text":"상담신청이 아니면 텍스트만 표시","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":482,"line_end":482,"block_type":"block","text":"회원 검색 모달","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":497,"line_end":497,"block_type":"block","text":"검색 영역 - 회색 박스 디자인","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":500,"line_end":500,"block_type":"block","text":"날짜 검색","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":536,"line_end":536,"block_type":"block","text":"구독상태","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":553,"line_end":553,"block_type":"block","text":"사용여부","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":568,"line_end":568,"block_type":"block","text":"검색조건 + 검색어","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":595,"line_end":595,"block_type":"block","text":"검색 버튼","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":603,"line_end":603,"block_type":"block","text":"회원 목록","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/Analysis/DetailAnalysisPage.tsx","lang":"js","line_start":684,"line_end":684,"block_type":"block","text":"페이지네이션","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"TODO: 타입 정의 필요","hangul_chars":6,"class":"4_todo","tags":["4_todo"],"classified_by":"keyword","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":86,"line_end":86,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 성공=파랑 | 실패=빨강 (대기 등 기본색)","hangul_chars":20,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/B2c/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":148,"line_end":148,"block_type":"line","text":"TODO: 기업 목록 API 연동 필요","hangul_chars":8,"class":"4_todo","tags":["4_todo"],"classified_by":"keyword","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/AddBoardCategoryPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/AddBoardCategoryPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/AddBoardCategoryPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/AddBoardCategoryPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/AddBoardCategoryPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/BoardCategoryPage.tsx","lang":"js","line_start":99,"line_end":99,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 노출=파랑 | 비노출=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/DetailBoardCategoryPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/DetailBoardCategoryPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/DetailBoardCategoryPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/DetailBoardCategoryPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/DetailBoardCategoryPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/DetailBoardCategoryPage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/DetailBoardCategoryPage.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/DetailBoardCategoryPage.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/DetailBoardCategoryPage.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Category/DetailBoardCategoryPage.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/AddFaqPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/AddFaqPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/AddFaqPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/AddFaqPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/AddFaqPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/AddFaqPage.tsx","lang":"js","line_start":125,"line_end":164,"block_type":"line","text":"{\n  label: \"파일1\",\n  name: \"file1\",\n  type: \"file\",\n  accept: \".jpg,.png,.pdf,.hwp,.xlsx,.txt\",\n  // download: true,\n  delete: true,\n},\n{\n  label: \"파일2\",\n  name: \"file2\",\n  type: \"file\",\n  accept: \".jpg,.png,.pdf,.hwp,.xlsx,.txt\",\n  // download: true,\n  delete: true,\n},\n{\n  label: \"파일3\",\n  name: \"file3\",\n  type: \"file\",\n  accept: \".jpg,.png,.pdf,.hwp,.xlsx,.txt\",\n  // download: true,\n  delete: true,\n},\n{\n  label: \"파일4\",\n  name: \"file4\",\n  type: \"file\",\n  accept: \".jpg,.png,.pdf,.hwp,.xlsx,.txt\",\n  // download: true,\n  delete: true,\n},\n{\n  label: \"파일5\",\n  name: \"file5\",\n  type: \"file\",\n  accept: \".jpg,.png,.pdf,.hwp,.xlsx,.txt\",\n  // download: true,\n  delete: true,\n},","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/DetailFaqPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/DetailFaqPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/DetailFaqPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/DetailFaqPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/DetailFaqPage.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/DetailFaqPage.tsx","lang":"js","line_start":85,"line_end":85,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/DetailFaqPage.tsx","lang":"js","line_start":87,"line_end":87,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/DetailFaqPage.tsx","lang":"js","line_start":88,"line_end":88,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/DetailFaqPage.tsx","lang":"js","line_start":89,"line_end":89,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/DetailFaqPage.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"line","text":"파일 임의 setup","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/DetailFaqPage.tsx","lang":"js","line_start":98,"line_end":98,"block_type":"line","text":"이미지 변환 및 설정","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/DetailFaqPage.tsx","lang":"js","line_start":116,"line_end":116,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/DetailFaqPage.tsx","lang":"js","line_start":188,"line_end":232,"block_type":"line","text":"{\n  label: \"파일1\",\n  name: \"file1\",\n  type: \"file\",\n  accept: \".jpg,.png,.pdf,.hwp,.xlsx,.txt\",\n  download: true,\n  downloadUrl: \"board/notice/file\",\n  delete: true,\n},\n{\n  label: \"파일2\",\n  name: \"file2\",\n  type: \"file\",\n  accept: \".jpg,.png,.pdf,.hwp,.xlsx,.txt\",\n  download: true,\n  downloadUrl: \"board/notice/file\",\n  delete: true,\n},\n{\n  label: \"파일3\",\n  name: \"file3\",\n  type: \"file\",\n  accept: \".jpg,.png,.pdf,.hwp,.xlsx,.txt\",\n  download: true,\n  downloadUrl: \"board/notice/file\",\n  delete: true,\n},\n{\n  label: \"파일4\",\n  name: \"file4\",\n  type: \"file\",\n  accept: \".jpg,.png,.pdf,.hwp,.xlsx,.txt\",\n  download: true,\n  downloadUrl: \"board/notice/file\",\n  delete: true,\n},\n{\n  label: \"파일5\",\n  name: \"file5\",\n  type: \"file\",\n  accept: \".jpg,.png,.pdf,.hwp,.xlsx,.txt\",\n  download: true,\n  downloadUrl: \"board/notice/file\",\n  delete: true,\n},","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Faq/FaqPage.tsx","lang":"js","line_start":115,"line_end":115,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 노출=파랑 | 비노출=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"색상 변경 옵션 추가","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"코드 블록 추가","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"line","text":"로컬 상태 업데이트","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":125,"line_end":125,"block_type":"line","text":"다운로드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":138,"line_end":138,"block_type":"line","text":"Blob을 사용하여 다운로드 처리 (브라우저의 download 속성 문제 우회)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":149,"line_end":149,"block_type":"line","text":"다운로드 시 저장될 파일 이름 설정","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":335,"line_end":335,"block_type":"line","text":"텍스트 줄바꿈 방지","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":409,"line_end":409,"block_type":"line","text":"텍스트 줄바꿈 방지","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":485,"line_end":485,"block_type":"line","text":"텍스트 줄바꿈 방지","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":559,"line_end":559,"block_type":"line","text":"텍스트 줄바꿈 방지","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/AddNoticePage.tsx","lang":"js","line_start":635,"line_end":635,"block_type":"line","text":"텍스트 줄바꿈 방지","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":81,"line_end":81,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":84,"line_end":84,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":85,"line_end":85,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"파일 임의 setup","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"line","text":"이미지 변환 및 설정","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":115,"line_end":115,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":130,"line_end":130,"block_type":"line","text":"색상 변경 옵션 추가","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":139,"line_end":139,"block_type":"line","text":"코드 블록 추가","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":167,"line_end":167,"block_type":"line","text":"로컬 상태 업데이트","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":187,"line_end":187,"block_type":"line","text":"다운로드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":200,"line_end":200,"block_type":"line","text":"Blob을 사용하여 다운로드 처리 (브라우저의 download 속성 문제 우회)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":211,"line_end":211,"block_type":"line","text":"다운로드 시 저장될 파일 이름 설정","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":448,"line_end":448,"block_type":"line","text":"텍스트 줄바꿈 방지","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":526,"line_end":526,"block_type":"line","text":"텍스트 줄바꿈 방지","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":605,"line_end":605,"block_type":"line","text":"텍스트 줄바꿈 방지","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":682,"line_end":682,"block_type":"line","text":"텍스트 줄바꿈 방지","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/DetailNoticePage.tsx","lang":"js","line_start":761,"line_end":761,"block_type":"line","text":"텍스트 줄바꿈 방지","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Notice/NoticePage.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 노출=파랑 | 비노출=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":63,"line_end":63,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":69,"line_end":69,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":88,"line_end":88,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":95,"line_end":95,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":119,"line_end":119,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":122,"line_end":122,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":124,"line_end":124,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":125,"line_end":125,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":126,"line_end":126,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":134,"line_end":134,"block_type":"line","text":"파일 임의 setup","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":136,"line_end":136,"block_type":"line","text":"이미지 변환 및 설정","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":155,"line_end":155,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":162,"line_end":162,"block_type":"line","text":"다운로드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":169,"line_end":169,"block_type":"line","text":"Blob을 사용하여 다운로드 처리 (브라우저의 download 속성 문제 우회)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":180,"line_end":180,"block_type":"line","text":"다운로드 시 저장될 파일 이름 설정","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":201,"line_end":201,"block_type":"block","text":"<span>답변여부</span>","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":205,"line_end":205,"block_type":"block","text":"<span>카테고리명</span>","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/DetailQnaPage.tsx","lang":"js","line_start":368,"line_end":917,"block_type":"block","text":"<div className=\"flex_row_wrap\">\n                <div className=\"col-sm-6 pr-4\">\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"bcaName\"\n                    >\n                      카테고리명\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"post.category.bcaName\")}\n                        id=\"bcaName\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"memLoginId\"\n                    >\n                      회원아이디\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"post.member.memLoginId\")}\n                        id=\"memLoginId\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"memName\"\n                    >\n                      회원명\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"post.member.memName\")}\n                        id=\"memName\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"memName\"\n                    >\n                      회원연락처\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"post.member.memPhone\")}\n                        id=\"memName\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                </div>\n                <div className=\"col-sm-6\">\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"memName\"\n                    >\n                      답변여부\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        id=\"memName\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        defaultValue={isAnswer}\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdCreatedAt\"\n                    >\n                      등록일\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"post.board.brdCreatedAt\")}\n                        id=\"brdCreatedAt\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdUpdatedAt\"\n                    >\n                      수정일\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"post.board.brdUpdatedAt\")}\n                        id=\"brdUpdatedAt\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"col-sm-12\">\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdTitle\"\n                    >\n                      제목<b>*</b>\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"post.board.brdTitle\")}\n                        id=\"brdTitle\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdContent\"\n                    >\n                      내용\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <textarea\n                        {...register(\"post.board.brdContent\")}\n                        id=\"brdContent\"\n                        className=\"form-control\"\n                        readOnly={true}\n                        rows={10}\n                      />\n                    </div>\n                  </div>\n\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdContent\"\n                    >\n                      답변\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <textarea\n                        {...register(\"post.comment.brcContent\")}\n                        id=\"brdContent\"\n                        className=\"form-control\"\n                        rows={10}\n                      />\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"col-sm-12\">\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdCreatedAt\"\n                    >\n                      파일1\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <div className=\"d-flex\">\n                        <div className=\"custom-file flex-grow-1\">\n                          <Controller\n                            name=\"file1\"\n                            control={control}\n                            defaultValue={null as any}\n                            render={({\n                              field: { onChange, value, ...fieldProps },\n                            }) => {\n                              return (\n                                <>\n                                  <input\n                                    key={\n                                      fileLabels[String(\"file1\")] || undefined\n                                    }\n                                    id=\"file1\"\n                                    type=\"file\"\n                                    accept=\".jpg,.png,.pdf,.hwp,.xlsx,.txt\"\n                                    className=\"custom-file-input\"\n                                    onChange={(e: any) => {\n                                      const files = e.target.files;\n                                      if (files?.length) {\n                                        handleFileInput(\"file1\", e);\n                                      }\n                                    }}\n                                    disabled={true}\n                                    {...fieldProps}\n                                  />\n\n                                  <label\n                                    className=\"custom-file-label none\"\n                                    htmlFor=\"file1\"\n                                    style={{\n                                      overflow: \"hidden\",\n                                      textOverflow: \"ellipsis\",\n                                      whiteSpace: \"nowrap\",\n                                    }}\n                                  >\n                                    {fileLabels[\"file1\"] || ``}\n                                  </label>\n                                </>\n                              );\n                            }}\n                          />\n                        </div>\n                        <button\n                          type=\"button\"\n                          className=\"btn btn-outline-secondary ml-2\"\n                          style={{\n                            width: \"90px\",\n                            whiteSpace: \"nowrap\",\n                          }}\n                          onClick={() =>\n                            handleClickDownloadButton(\n                              \"file1\",\n                              \"board/notice/file\"\n                            )\n                          }\n                          disabled={!files[\"file1\"]}\n                        >\n                          다운로드\n                        </button>\n                      </div>\n                    </div>\n                  </div>\n\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdCreatedAt\"\n                    >\n                      파일2\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <div className=\"d-flex\">\n                        <div className=\"custom-file flex-grow-1\">\n                          <Controller\n                            name=\"file2\"\n                            control={control}\n                            defaultValue={null as any}\n                            render={({\n                              field: { onChange, value, ...fieldProps },\n                            }) => {\n                              return (\n                                <>\n                                  <input\n                                    key={\n                                      fileLabels[String(\"file2\")] || undefined\n                                    }\n                                    id=\"file2\"\n                                    type=\"file\"\n                                    accept=\".jpg,.png,.pdf,.hwp,.xlsx,.txt\"\n                                    className=\"custom-file-input\"\n                                    onChange={(e: any) => {\n                                      const files = e.target.files;\n                                      if (files?.length) {\n                                        handleFileInput(\"file2\", e);\n                                      }\n                                    }}\n                                    disabled={true}\n                                    {...fieldProps}\n                                  />\n\n                                  <label\n                                    className=\"custom-file-label none\"\n                                    htmlFor=\"file2\"\n                                    style={{\n                                      overflow: \"hidden\",\n                                      textOverflow: \"ellipsis\",\n                                      whiteSpace: \"nowrap\",\n                                    }}\n                                  >\n                                    {fileLabels[\"file2\"] || ``}\n                                  </label>\n                                </>\n                              );\n                            }}\n                          />\n                        </div>\n                        <button\n                          type=\"button\"\n                          className=\"btn btn-outline-secondary ml-2\"\n                          style={{\n                            width: \"90px\",\n                            whiteSpace: \"nowrap\",\n                          }}\n                          onClick={() =>\n                            handleClickDownloadButton(\n                              \"file2\",\n                              \"board/notice/file\"\n                            )\n                          }\n                          disabled={!files[\"file2\"]}\n                        >\n                          다운로드\n                        </button>\n                      </div>\n                    </div>\n                  </div>\n\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdCreatedAt\"\n                    >\n                      파일3\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <div className=\"d-flex\">\n                        <div className=\"custom-file flex-grow-1\">\n                          <Controller\n                            name=\"file3\"\n                            control={control}\n                            defaultValue={null as any}\n                            render={({\n                              field: { onChange, value, ...fieldProps },\n                            }) => {\n                              return (\n                                <>\n                                  <input\n                                    key={fileLabels[\"file3\"] || undefined}\n                                    id=\"file3\"\n                                    type=\"file\"\n                                    accept=\".jpg,.png,.pdf,.hwp,.xlsx,.txt\"\n                                    className=\"custom-file-input\"\n                                    onChange={(e: any) => {\n                                      const files = e.target.files;\n                                      if (files?.length) {\n                                        handleFileInput(\"file3\", e);\n                                      }\n                                    }}\n                                    disabled={true}\n                                    {...fieldProps}\n                                  />\n\n                                  <label\n                                    className=\"custom-file-label none\"\n                                    htmlFor=\"file3\"\n                                    style={{\n                                      overflow: \"hidden\",\n                                      textOverflow: \"ellipsis\",\n                                      whiteSpace: \"nowrap\",\n                                    }}\n                                  >\n                                    {fileLabels[\"file3\"] || ``}\n                                  </label>\n                                </>\n                              );\n                            }}\n                          />\n                        </div>\n                        <button\n                          type=\"button\"\n                          className=\"btn btn-outline-secondary ml-2\"\n                          style={{\n                            width: \"90px\",\n                            whiteSpace: \"nowrap\",\n                          }}\n                          onClick={() =>\n                            handleClickDownloadButton(\n                              \"file3\",\n                              \"board/notice/file\"\n                            )\n                          }\n                          disabled={!files[\"file3\"]}\n                        >\n                          다운로드\n                        </button>\n                      </div>\n                    </div>\n                  </div>\n\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdCreatedAt\"\n                    >\n                      파일4\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <div className=\"d-flex\">\n                        <div className=\"custom-file flex-grow-1\">\n                          <Controller\n                            name=\"file4\"\n                            control={control}\n                            defaultValue={null as any}\n                            render={({\n                              field: { onChange, value, ...fieldProps },\n                            }) => {\n                              return (\n                                <>\n                                  <input\n                                    key={fileLabels[\"file4\"] || undefined}\n                                    id=\"file4\"\n                                    type=\"file\"\n                                    accept=\".jpg,.png,.pdf,.hwp,.xlsx,.txt\"\n                                    className=\"custom-file-input\"\n                                    onChange={(e: any) => {\n                                      const files = e.target.files;\n                                      if (files?.length) {\n                                        handleFileInput(\"file4\", e);\n                                      }\n                                    }}\n                                    disabled={true}\n                                    {...fieldProps}\n                                  />\n\n                                  <label\n                                    className=\"custom-file-label none\"\n                                    htmlFor=\"file4\"\n                                    style={{\n                                      overflow: \"hidden\",\n                                      textOverflow: \"ellipsis\",\n                                      whiteSpace: \"nowrap\",\n                                    }}\n                                  >\n                                    {fileLabels[\"file4\"] || ``}\n                                  </label>\n                                </>\n                              );\n                            }}\n                          />\n                        </div>\n                        <button\n                          type=\"button\"\n                          className=\"btn btn-outline-secondary ml-2\"\n                          style={{\n                            width: \"90px\",\n                            whiteSpace: \"nowrap\",\n                          }}\n                          onClick={() =>\n                            handleClickDownloadButton(\n                              \"file4\",\n                              \"board/notice/file\"\n                            )\n                          }\n                          disabled={!files[\"file4\"]}\n                        >\n                          다운로드\n                        </button>\n                      </div>\n                    </div>\n                  </div>\n\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdCreatedAt\"\n                    >\n                      파일5\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <div className=\"d-flex\">\n                        <div className=\"custom-file flex-grow-1\">\n                          <Controller\n                            name=\"file5\"\n                            control={control}\n                            defaultValue={null as any}\n                            render={({\n                              field: { onChange, value, ...fieldProps },\n                            }) => {\n                              return (\n                                <>\n                                  <input\n                                    key={\n                                      fileLabels[String(\"file5\")] || undefined\n                                    }\n                                    id=\"file5\"\n                                    type=\"file\"\n                                    accept=\".jpg,.png,.pdf,.hwp,.xlsx,.txt\"\n                                    className=\"custom-file-input\"\n                                    onChange={(e: any) => {\n                                      const files = e.target.files;\n                                      if (files?.length) {\n                                        handleFileInput(\"file5\", e);\n                                      }\n                                    }}\n                                    disabled={true}\n                                    {...fieldProps}\n                                  />\n\n                                  <label\n                                    className=\"custom-file-label none\"\n                                    htmlFor=\"file5\"\n                                    style={{\n                                      overflow: \"hidden\",\n                                      textOverflow: \"ellipsis\",\n                                      whiteSpace: \"nowrap\",\n                                    }}\n                                  >\n                                    {fileLabels[\"file5\"] || ``}\n                                  </label>\n                                </>\n                              );\n                            }}\n                          />\n                        </div>\n                        <button\n                          type=\"button\"\n                          className=\"btn btn-outline-secondary ml-2\"\n                          style={{\n                            width: \"90px\",\n                            whiteSpace: \"nowrap\",\n                          }}\n                          onClick={() =>\n                            handleClickDownloadButton(\n                              \"file5\",\n                              \"board/notice/file\"\n                            )\n                          }\n                          disabled={!files[\"file5\"]}\n                        >\n                          다운로드\n                        </button>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </div>","hangul_chars":64,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":37,"line_end":37,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":69,"line_end":69,"block_type":"line","text":"자식 팝업을 열고, 팝업의 window 객체를 저장","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":87,"line_end":87,"block_type":"line","text":"부모 창의 onfocus 이벤트로 자식 팝업이 닫혔는지 확인하고 부모 창을 업데이트","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":91,"line_end":91,"block_type":"line","text":"자식 팝업이 닫히면 부모 창 업데이트","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":98,"line_end":98,"block_type":"line","text":"컴포넌트가 언마운트될 때 이벤트 리스너를 제거","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":136,"line_end":136,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 기업=녹색 | 일반=파랑 (서버 라벨/코드값 모두 대응)","hangul_chars":25,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":169,"line_end":169,"block_type":"line","text":"* 공통 2값 규칙: 긍정(답변)=파랑 | 부정(미답변)=빨강 (서버 라벨/숫자값 모두 대응)","hangul_chars":29,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":188,"line_end":199,"block_type":"line","text":"{\n  key: \"board.brdId\",\n  label: \"답변\",\n  usePrefix: false,\n  cell: {\n    type: \"button\",\n    label: \"답변\",\n    onClick: (row, index) => {\n      openChildPopup(row); // 자식 팝업 열기\n    },\n  },\n},","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Board/Qna/QnaPage.tsx","lang":"js","line_start":271,"line_end":284,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/AddClientPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/AddClientPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/AddClientPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/AddClientPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/AddClientPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":102,"line_end":103,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 계약중=파랑 | 계약종료=빨강\nformat 사용 시 공용 라벨 변환(list.helper의 0/1→계약중/계약종료)이 생략되므로 동일 변환 유지","hangul_chars":46,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/ClientPage.tsx","lang":"js","line_start":139,"line_end":148,"block_type":"line","text":"combo: [\n  {\n    label: \"고객사\",\n    name: \"cliId\",\n    options: [{ label: \"전체\", value: \"\" }].concat(client),\n    usePrefix: false,\n    useOnlyLastKey: true,\n    // onChange: (val: any) => setSelectedCategory(Number(val)),\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/DetailClientPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/DetailClientPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/DetailClientPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/DetailClientPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/DetailClientPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/DetailClientPage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/DetailClientPage.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/DetailClientPage.tsx","lang":"js","line_start":65,"line_end":65,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/DetailClientPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/DetailClientPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/Client/DetailClientPage.tsx","lang":"js","line_start":87,"line_end":87,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"line","text":"alert(\"분석이 완료된 정보만 확인 가능\");","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"iframe 팝업으로 유저 사이트 분석 상세 표시","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"jsdoc","text":"원본데이터 엑셀 다운로드","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":100,"line_end":104,"block_type":"line","text":"{\n  key: \"client.cliCode\",\n  label: \"고객사코드\",\n  usePrefix: false,\n},","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":119,"line_end":119,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 분석완료=파랑 | 분석실패=빨강 (그 외 상태 기본색)","hangul_chars":25,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":157,"line_end":157,"block_type":"line","text":"두 일의 차이를 계산 (밀리초 단위)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":161,"line_end":161,"block_type":"line","text":"한 달을 밀리초로 변환 (30일 기준)","hangul_chars":12,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":163,"line_end":163,"block_type":"line","text":"한 달 이내인지 확인","hangul_chars":8,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/AnalysisPage.tsx","lang":"js","line_start":195,"line_end":203,"block_type":"line","text":"combo: [\n  {\n    label: \"고객사명\",\n    name: \"client.cliId\",\n    options: [{ label: \"전체\", value: \"\" }].concat(client),\n    usePrefix: false,\n    useOnlyLastKey: true,\n  },\n],","hangul_chars":6,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/DetailAnalysisPopup.tsx","lang":"js","line_start":247,"line_end":247,"block_type":"line","text":"스크롤 속도 조절","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/DetailAnalysisPopup.tsx","lang":"js","line_start":266,"line_end":266,"block_type":"line","text":"스크롤 속도 조절","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/DetailAnalysisPopup.tsx","lang":"js","line_start":288,"line_end":289,"block_type":"line","text":"WebkitOverflowScrolling: \"touch\", // 부드러운 스크롤 지원\nscrollBehavior: \"smooth\", // 스크롤 이동 부드럽게","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":9,"line_end":9,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientAnalysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/AddClientContractPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/AddClientContractPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/AddClientContractPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/AddClientContractPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/AddClientContractPage.tsx","lang":"js","line_start":84,"line_end":84,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":37,"line_end":37,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":99,"line_end":103,"block_type":"line","text":"{\n  key: \"client.cliCode\",\n  label: \"고객사코드\",\n  usePrefix: false,\n},","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/ClientContractPage.tsx","lang":"js","line_start":160,"line_end":168,"block_type":"line","text":"combo: [\n  {\n    label: \"고객사\",\n    name: \"client.cliId\",\n    options: [{ label: \"전체\", value: \"\" }].concat(client),\n    usePrefix: false,\n    useOnlyLastKey: true,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/DetailClientContractPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/DetailClientContractPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/DetailClientContractPage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/DetailClientContractPage.tsx","lang":"js","line_start":69,"line_end":69,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/DetailClientContractPage.tsx","lang":"js","line_start":97,"line_end":97,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/DetailClientContractPage.tsx","lang":"js","line_start":121,"line_end":121,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/DetailClientContractPage.tsx","lang":"js","line_start":124,"line_end":124,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/DetailClientContractPage.tsx","lang":"js","line_start":125,"line_end":125,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/DetailClientContractPage.tsx","lang":"js","line_start":162,"line_end":162,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientContract/DetailClientContractPage.tsx","lang":"js","line_start":292,"line_end":304,"block_type":"line","text":"validate: (value) => {\n  const start = dayjs(getValues(\"ccnContractStartedAt\"));\n  const end = dayjs(value);\n  if (!start.isValid() || !end.isValid()) return true;\n  end.isAfter(start) ||\n    alert(\n      \"종료일은 시작일보다 같거나 이전일 수 없습니다.\"\n    );\n  return (\n    end.isAfter(start) ||\n    \"종료일은 시작일보다 같거나 이전일 수 없습니다.\"\n  );\n},","hangul_chars":40,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/ClientSettlementPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/ClientSettlementPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/ClientSettlementPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/ClientSettlementPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/ClientSettlementPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/ClientSettlementPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/ClientSettlementPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/ClientSettlementPage.tsx","lang":"js","line_start":98,"line_end":98,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 완료=파랑 | 미완료=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/ClientSettlementPage.tsx","lang":"js","line_start":196,"line_end":204,"block_type":"line","text":"combo: [\n  {\n    label: \"고객사명\",\n    name: \"client.cliId\",\n    options: [{ label: \"전체\", value: \"\" }].concat(client),\n    usePrefix: false,\n    useOnlyLastKey: true,\n  },\n],","hangul_chars":6,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/DetailClientSettlementPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/DetailClientSettlementPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/DetailClientSettlementPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/DetailClientSettlementPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/DetailClientSettlementPage.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/DetailClientSettlementPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/DetailClientSettlementPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/DetailClientSettlementPage.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/DetailClientSettlementPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/DetailClientSettlementPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/DetailClientSettlementPage.tsx","lang":"js","line_start":211,"line_end":226,"block_type":"block","text":"<div className=\"mb-4 p-4 bg-light border rounded\">\n            <div className=\"row text-left\">\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">고객사명</div>\n                <div className=\"fw-bold fs-5\">{watch(\"client.cliName\")}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">고객사코드</div>\n                <div className=\"fw-bold fs-5\">{watch(\"client.cliCode\")}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">정산코드</div>\n                <div className=\"fw-bold fs-5\">{watch(\"client.cliCode\")}</div>\n              </div>\n            </div>\n          </div>","hangul_chars":13,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/DetailClientSettlementPage.tsx","lang":"js","line_start":258,"line_end":267,"block_type":"line","text":"{\n  key: \"payment.pmtState\",\n  label: \"결제취소\",\n  usePrefix: false,\n  cell: {\n    type: \"button\",\n    label: \"결제취소\",\n    onClick: (row, index) => {\n      if (!confirm(\"선택한 주문 건의 결제를 취소하시겠습니까?\"))\n        return;","hangul_chars":26,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Client/ClientSettlement/DetailClientSettlementPage.tsx","lang":"js","line_start":272,"line_end":288,"block_type":"line","text":"api.orderApi\n        .cancelSubscribeOrder({\n          ordId: row?.order?.ordId,\n          pmtReason: \"\",\n        })\n        .then((res) => {\n          if (!res) {\n            alert(\"결제취소를 실패하였습니다.\");\n          } else {\n            alert(\"성공적으로 결제취소가 완료되었습니다.\");\n            handleRefresh();\n          }\n        })\n        .finally(() => setLoading(false));\n    },\n  },\n},","hangul_chars":29,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AddAgencyTermsPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"약관 내용(HTML) — AddDetail 에디터 고정키","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AddAgencyTermsPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"jsdoc","text":"기업별 약관 신규등록 (task-12)","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AddAgencyTermsPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AddAgencyTermsPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"기업 목록 로드 + URL의 agcId 기본 선택","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AgencyTermsContentEditor.tsx","lang":"js","line_start":9,"line_end":9,"block_type":"jsdoc","text":"표를 지원하지 않는 공용 Quill 대신 기존 약관 HTML 구조를 그대로 편집한다.","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AgencyTermsPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"jsdoc","text":"기업별 약관관리 (task-12)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AgencyTermsPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AgencyTermsPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AgencyTermsPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AgencyTermsPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AgencyTermsPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"기업 목록 로드 (검색조건 셀렉트 옵션용). 기본은 \"전체\" — 강제 선택 없음.","hangul_chars":27,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AgencyTermsPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"리스트 데이터 가져오기 (agcId는 URL 쿼리로 전달)","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AgencyTermsPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AgencyTermsPage.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"jsdoc","text":"신규등록 페이지 이동 (현재 선택 기업 유지)","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AgencyTermsPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"jsdoc","text":"상세페이지 이동","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AgencyTermsPage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"jsdoc","text":"선택 삭제","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/AgencyTermsPage.tsx","lang":"js","line_start":119,"line_end":119,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 사용=blue | 미사용=red","hangul_chars":11,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/DetailAgencyTermsPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"기업명 표시용 (수정 불가)","hangul_chars":10,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/DetailAgencyTermsPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"약관 내용(HTML) — AddDetail 에디터 고정키","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/DetailAgencyTermsPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"jsdoc","text":"기업별 약관 상세/수정 (task-12)","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/DetailAgencyTermsPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/AgencyTerms/DetailAgencyTermsPage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/AddCorpPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/AddCorpPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/AddCorpPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/AddCorpPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/AddCorpPage.tsx","lang":"js","line_start":74,"line_end":74,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":164,"line_end":164,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 허용=blue | 차단=red","hangul_chars":10,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/CorpPage.tsx","lang":"js","line_start":175,"line_end":175,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 계약중=blue | 계약종료=red","hangul_chars":13,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/DetailCorpPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/DetailCorpPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/DetailCorpPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"탭: 0=기업정보, 1=조직관리(task-688)","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/DetailCorpPage.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/DetailCorpPage.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/DetailCorpPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/DetailCorpPage.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/DetailCorpPage.tsx","lang":"js","line_start":84,"line_end":84,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/DetailCorpPage.tsx","lang":"js","line_start":87,"line_end":87,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/DetailCorpPage.tsx","lang":"js","line_start":88,"line_end":88,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/DetailCorpPage.tsx","lang":"js","line_start":89,"line_end":89,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/DetailCorpPage.tsx","lang":"js","line_start":109,"line_end":109,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/DetailCorpPage.tsx","lang":"js","line_start":127,"line_end":127,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/Corp/DetailCorpPage.tsx","lang":"js","line_start":128,"line_end":128,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/AddCorpContractPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/AddCorpContractPage.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/AddCorpContractPage.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/AddCorpContractPage.tsx","lang":"js","line_start":63,"line_end":63,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/AddCorpContractPage.tsx","lang":"js","line_start":97,"line_end":97,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/AddCorpContractPage.tsx","lang":"js","line_start":109,"line_end":109,"block_type":"line","text":"* 선택상품이 많아 분석건수/금액 병기 — 예) p9d3f1c6052/P Insight Biz Basic/25건/9,900원","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/AddCorpContractPage.tsx","lang":"js","line_start":162,"line_end":171,"block_type":"line","text":"분석제한수 | 분석제한수\n{\n  label: \"계약계정수\",\n  name: \"actSubscriptionCount\",\n  type: \"number\",\n  params: {\n    required: true,\n    min: 1,\n  },\n},","hangul_chars":15,"class":"1_policy","tags":["1_policy","5_dead"],"classified_by":"keyword","commented_out":true,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/AddCorpContractPage.tsx","lang":"js","line_start":180,"line_end":180,"block_type":"line","text":"* 표기 변경(2026-07): 후불제→후불, 선불제→선불 (value 서버 전송값은 유지)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":151,"line_end":151,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 후불=blue | 선불=green | 무상=red (표기: 후불제→후불, 선불제→선불)","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":172,"line_end":187,"block_type":"line","text":"분석제한수 | 분석제한수\n{\n  key: \"contract.actSubscriptionCount\",\n  label: \"계약계정수\",\n  usePrefix: false,\n},\n{\n  key: \"member.count\",\n  label: \"사용계정수\",\n  usePrefix: false,\n},\n{\n  key: \"subscribe.count\",\n  label: \"구독계정수\",\n  usePrefix: false,\n},","hangul_chars":25,"class":"1_policy","tags":["1_policy","5_dead"],"classified_by":"keyword","commented_out":true,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/CorpContractPage.tsx","lang":"js","line_start":252,"line_end":265,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/DetailCorpContractPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/DetailCorpContractPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/DetailCorpContractPage.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/DetailCorpContractPage.tsx","lang":"js","line_start":64,"line_end":64,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/DetailCorpContractPage.tsx","lang":"js","line_start":65,"line_end":65,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/DetailCorpContractPage.tsx","lang":"js","line_start":98,"line_end":98,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/DetailCorpContractPage.tsx","lang":"js","line_start":110,"line_end":110,"block_type":"line","text":"* 선택상품이 많아 분석건수/금액 병기 — 예) p9d3f1c6052/P Insight Biz Basic/25건/9,900원","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/DetailCorpContractPage.tsx","lang":"js","line_start":127,"line_end":127,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/DetailCorpContractPage.tsx","lang":"js","line_start":130,"line_end":130,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/DetailCorpContractPage.tsx","lang":"js","line_start":131,"line_end":131,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/DetailCorpContractPage.tsx","lang":"js","line_start":159,"line_end":159,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/DetailCorpContractPage.tsx","lang":"js","line_start":220,"line_end":245,"block_type":"line","text":"분석제한수 | 분석제한수\n{\n  label: \"계약계정수\",\n  name: \"contract.actSubscriptionCount\",\n  type: \"number\",\n  params: {\n    required: true,\n    min: 1,\n  },\n},\n{\n  label: \"사용계정수\",\n  name: \"member.count\",\n  type: \"number\",\n  params: {\n    readOnly: true,\n  },\n},\n{\n  label: \"구독계정수\",\n  name: \"subscribe.count\",\n  type: \"number\",\n  params: {\n    readOnly: true,\n  },\n},","hangul_chars":25,"class":"1_policy","tags":["1_policy","5_dead"],"classified_by":"keyword","commented_out":true,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpContract/DetailCorpContractPage.tsx","lang":"js","line_start":254,"line_end":254,"block_type":"line","text":"* 표기 변경(2026-07): 후불제→후불, 선불제→선불 (value 서버 전송값은 유지)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/AddCorpMoneyPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"머니명 (고객 노출)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/AddCorpMoneyPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"사유 (관리자 내부용)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/AddCorpMoneyPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"천단위 쉼표 포맷 함수 (양수만 허용)","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/AddCorpMoneyPage.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"쉼표 제거하여 숫자로 변환","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/AddCorpMoneyPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"기업 목록","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/AddCorpMoneyPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"기업 목록 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/AddCorpMoneyPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"line","text":"숫자 입력 시 천단위 쉼표 포맷 적용","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/CorpMoneyHistoryPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"기업머니 내역 조회 (새 money API 사용)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/CorpMoneyHistoryPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"관리자 직접 충전/차감","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/CorpMoneyHistoryPage.tsx","lang":"js","line_start":74,"line_end":74,"block_type":"block","text":"상단 요약 정보","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/CorpMoneyHistoryPage.tsx","lang":"js","line_start":100,"line_end":100,"block_type":"block","text":"하단 내역 테이블","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/CorpMoneyHistoryPage.tsx","lang":"js","line_start":111,"line_end":111,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 충전·지급=파랑 | 차감·지급회수=빨강","hangul_chars":20,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/CorpMoneyHistoryPage.tsx","lang":"js","line_start":150,"line_end":150,"block_type":"line","text":"양수면 +, 음수면 그대로 표시","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/CorpMoneyPage.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/CorpMoneyPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/CorpMoneyPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/CorpMoneyPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/CorpMoneyPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/CorpMoneyPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"행 클릭 시 기업회원머니 관리 페이지로 이동 (기업 ID 기반)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/CorpMoneyPage.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 허용=파랑 | 차단=빨강 (기존 기본 렌더링: 0=허용, 1=차단)","hangul_chars":25,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpMoney/CorpMoneyPage.tsx","lang":"js","line_start":104,"line_end":104,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 계약중=파랑 | 계약종료=빨강 (기존 기본 렌더링: 0=계약중, 1=계약종료)","hangul_chars":31,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"체크박스 선택 상태 — [입금처리]/[정산처리] 두 버튼이 같은 선택을 공유한다.","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":159,"line_end":159,"block_type":"line","text":"* 공통 2값 규칙: 긍정(완료)=파랑 | 부정(미완료)=빨강","hangul_chars":18,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":175,"line_end":175,"block_type":"line","text":"* 공통 2값 규칙: 긍정(발행완료)=파랑 | 부정(미발행)=빨강","hangul_chars":20,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":198,"line_end":198,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 정산확정=파랑 | 정산대기=빨강","hangul_chars":18,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":289,"line_end":290,"block_type":"line","text":"* 실제 astSettleStatus 필드지만, useOnlyLastKey로 전송 searchKey를 \"settleStatus\"로\n* 맞추기 위해 KeyPath 타입에는 없는 세그먼트를 의도적으로 사용(as any)","hangul_chars":34,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":310,"line_end":323,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":38,"line_end":39,"block_type":"jsdoc","text":"주문상태(payment.pmtState) 중 주문취소 — 서버가 raw 코드가 아닌 변환 라벨 문자열로 내려준다.\n 정산 대상 제외(select 미노출, \"대상 아님\")","hangul_chars":42,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":65,"line_end":65,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":84,"line_end":84,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":85,"line_end":85,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":103,"line_end":103,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":113,"line_end":113,"block_type":"jsdoc","text":"구독내역 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":130,"line_end":130,"block_type":"jsdoc","text":"구독 주문내역 새로고침(정산반영 변경 후 목록·합산 갱신용)","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":139,"line_end":139,"block_type":"jsdoc","text":"정산 상세(정산요약) + 구독 주문내역(목록·합산) 전체 새로고침","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":145,"line_end":145,"block_type":"line","text":"===== 정산상태 / 정산 요약 =====","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":160,"line_end":160,"block_type":"line","text":"정산 반영금액 — 정산확정 상태면 스냅샷(astConfirmedPrice), 아니면 실시간(summary.includePrice)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":170,"line_end":170,"block_type":"line","text":"===== 구독 주문내역: 체크박스 선택 =====","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":182,"line_end":182,"block_type":"line","text":"* 단가 일괄수정(삼성 등 전월 구독수 구간 단가) — 반영변경과 동일한 선택/잠금 규칙","hangul_chars":32,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":192,"line_end":192,"block_type":"jsdoc","text":"행별 [정산반영] select 변경 — 즉시 단건 반영 후 목록·요약 재조회","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":214,"line_end":214,"block_type":"line","text":"===== 정산확정 / 정산확정 해제 =====","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":229,"line_end":229,"block_type":"line","text":"===== 메일 발송 =====","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":243,"line_end":243,"block_type":"line","text":"===== 구매내역서 미리보기 (팝업 상단 [닫기]/[PDF 다운로드]) =====","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":251,"line_end":252,"block_type":"block","text":"다른 Detail*Page(DetailClientSettlementPage 등)와 동일하게 별도 식별 헤더 없이\n탭으로 바로 진입 — 기업명·정산코드·정산상태는 \"정산 기본정보\" 탭의 필드로 확인 가능","hangul_chars":50,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":274,"line_end":276,"block_type":"block","text":"정산 기본정보 요약 스트립 — 정산상태·정산수·정산금액·정산 반영금액을\n최상단 타일 4개로 통합. 아래 \"정산 요약\" 카드는 중복이라 제거하고\n이 스트립 하나로 대체(주문 반영 변경 → refreshAll → watch 재계산으로 자동 갱신)","hangul_chars":79,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":277,"line_end":278,"block_type":"block","text":"타일 flex-basis 260px: 공용 CSS(flex:1 1 0)는 줄바꿈 없이 압착돼\n좁은 화면에서 금액이 ellipsis로 잘림 — 4→2×2→1열 줄바꿈 되도록 페이지에서만 보정","hangul_chars":40,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":284,"line_end":284,"block_type":"block","text":"공용 CSS(strong max-width:90%+ellipsis)가 shrink-to-fit 래퍼 안에서 자기잘림(\"미…\") 유발 — 해제","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":405,"line_end":407,"block_type":"line","text":"readOnly + render 조합(AddDetail.tsx 참고)으로 form 상태(숫자)는 그대로 두고\n표시값만 콤마+단위 포맷 — 상단 요약 스트립의 정산금액 계산(settlementPrice)과\n값 소스가 얽히지 않도록 분리","hangul_chars":53,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":441,"line_end":443,"block_type":"line","text":"옆 readOnly 텍스트 필드들과 동일한 입력 박스 형태로 노출(값이 맨글자로\n떠 있지 않도록) — 값 안에 색만 다르게 주고, 안내문구는 다른 필드의\nform-text 힌트와 동일한 자리(입력 박스 아래)에 노출","hangul_chars":69,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":550,"line_end":551,"block_type":"block","text":"섹션 제목 줄 — 제목만. 잠금 안내는 검색 필터 바로 아래·결과 영역 바로 위\n(List의 resultSummary 슬롯)로 이동해 풀폭 한 줄로 노출한다.","hangul_chars":44,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":566,"line_end":568,"block_type":"line","text":"검색 필터 박스(List 내부 SearchForm) 바로 아래·결과 영역(총 N건+버튼 줄) 바로\n위에 잠금 안내를 얇은 풀폭 한 줄로 배치(정산확정일 때만) — 기존의 짙은 배너 대신\n연한 배경 + 작은 글씨로 가볍게.","hangul_chars":67,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":580,"line_end":581,"block_type":"line","text":"\"총 N건\"(List가 자체 렌더) 줄에 합산 요약을 같은 줄로 이어 붙여\n\"총 N건 · 총 결제금액 ... · 정산 반영금액 ... (반영 N건)\" 한 줄로 통합.","hangul_chars":43,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":646,"line_end":647,"block_type":"line","text":"* 서버 계약: 전송 searchKey는 memLoginId | subCode | ordCode 세 값만 허용 —\n* useOnlyLastKey가 마지막 dot-segment를 취하므로 플랫 키로 지정해 그대로 전송되게 함","hangul_chars":36,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":746,"line_end":746,"block_type":"line","text":"* 기업주문관리 주문상태와 동일 색 규칙 — 주문완료(파랑)/주문취소(빨강)/주문실패(녹색)","hangul_chars":34,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":765,"line_end":766,"block_type":"line","text":"* 행별 정산상태(읽기) — 기획 색상 규칙(2026-07):\n*   정산대기(검정)=미확정 | 정산확정(파랑) | 정산이월(주황) | 정산제외(빨강), 취소 건은 공란","hangul_chars":47,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":785,"line_end":788,"block_type":"line","text":"버그 수정: somSettleAction은 서버 응답에서 order 하위가 아닌 최상위 필드로 내려온다\n(settlement-admin.dto.ts GetAgencySettlementOrderDto / settlement.repository.ts\ngetSettlementOrderList 참고) — order.somSettleAction 경로는 항상 undefined였고,\n그 결과 select가 실제 값과 무관하게 항상 기본값(INCLUDE=\"반영\")으로만 표시되었다.","hangul_chars":62,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/AddCourseCategoryPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/AddCourseCategoryPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/AddCourseCategoryPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/AddCourseCategoryPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/AddCourseCategoryPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/CourseCategoryPage.tsx","lang":"js","line_start":103,"line_end":103,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 노출=파랑 | 비노출=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/DetailCourseCategoryPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/DetailCourseCategoryPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/DetailCourseCategoryPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/DetailCourseCategoryPage.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/DetailCourseCategoryPage.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/DetailCourseCategoryPage.tsx","lang":"js","line_start":64,"line_end":64,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/DetailCourseCategoryPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/DetailCourseCategoryPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/DetailCourseCategoryPage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Category/DetailCourseCategoryPage.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/AddCoursePage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/AddCoursePage.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/AddCoursePage.tsx","lang":"js","line_start":82,"line_end":82,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/AddCoursePage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/AddCoursePage.tsx","lang":"js","line_start":124,"line_end":124,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/AddCoursePage.tsx","lang":"js","line_start":251,"line_end":251,"block_type":"line","text":"챕터 및 영상","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/AddCoursePage.tsx","lang":"js","line_start":279,"line_end":279,"block_type":"line","text":"기존 값 유지하면서 순서 변경","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/AddCoursePage.tsx","lang":"js","line_start":286,"line_end":286,"block_type":"line","text":"순서 업데이트","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/AddCoursePage.tsx","lang":"js","line_start":289,"line_end":289,"block_type":"line","text":"변경된 순서 적용","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":110,"line_end":110,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 추천=파랑 | 미추천=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/CoursePage.tsx","lang":"js","line_start":126,"line_end":126,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 노출=파랑 | 비노출=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":81,"line_end":81,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":84,"line_end":84,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":134,"line_end":134,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":136,"line_end":136,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":137,"line_end":137,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":138,"line_end":138,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":152,"line_end":152,"block_type":"line","text":"🟢 sections 데이터 수동 설정","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":157,"line_end":157,"block_type":"line","text":"🟢 cssOrder 기준 오름차순 정렬","hangul_chars":8,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":160,"line_end":160,"block_type":"line","text":"Drag & Drop을 위한 ID 추가","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":170,"line_end":170,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":304,"line_end":304,"block_type":"line","text":"챕터 및 영상","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":332,"line_end":332,"block_type":"line","text":"기존 값 유지하면서 순서 변경","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":339,"line_end":339,"block_type":"line","text":"순서 업데이트","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/DetailCoursePage.tsx","lang":"js","line_start":342,"line_end":342,"block_type":"line","text":"변경된 순서 적용","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/components/EditSectionData.tsx","lang":"js","line_start":103,"line_end":103,"block_type":"line","text":"저장 성공","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/components/EditSectionData.tsx","lang":"js","line_start":135,"line_end":135,"block_type":"block","text":"챕터명 입력","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/components/EditSectionData.tsx","lang":"js","line_start":153,"line_end":153,"block_type":"block","text":"영상 입력 리스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/List/components/EditSectionData.tsx","lang":"js","line_start":217,"line_end":217,"block_type":"block","text":"추가 버튼","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/CourseReviewPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/CourseReviewPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/CourseReviewPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/CourseReviewPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/CourseReviewPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/CourseReviewPage.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/CourseReviewPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/CourseReviewPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/CourseReviewPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/CourseReviewPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/CourseReviewPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/CourseReviewPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/CourseReviewPage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/CourseReviewPage.tsx","lang":"js","line_start":137,"line_end":137,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 기업=녹색 | 일반=파랑","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/DetailCourseReviewPage.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/DetailCourseReviewPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/DetailCourseReviewPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/DetailCourseReviewPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/DetailCourseReviewPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/DetailCourseReviewPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Course/Review/DetailCourseReviewPage.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/AddBasicCompare001Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/AddBasicCompare001Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/AddBasicCompare001Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/AddBasicCompare001Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/AddBasicCompare001Page.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":97,"line_end":97,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":108,"line_end":108,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/BasicCompare001Page.tsx","lang":"js","line_start":132,"line_end":132,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/DetailBasicCompare001Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/DetailBasicCompare001Page.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/DetailBasicCompare001Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/DetailBasicCompare001Page.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/DetailBasicCompare001Page.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/DetailBasicCompare001Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/DetailBasicCompare001Page.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/DetailBasicCompare001Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/DetailBasicCompare001Page.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare001/DetailBasicCompare001Page.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/AddBasicCompare005Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/AddBasicCompare005Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/AddBasicCompare005Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/AddBasicCompare005Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/AddBasicCompare005Page.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/AddBasicCompare005Page.tsx","lang":"js","line_start":77,"line_end":91,"block_type":"line","text":"{\n  name: \"cpbIsSicked\",\n  label: \"유병자유무\",\n  type: \"select\",\n  options: [\n    {\n      label: \"미포함\",\n      value: \"0\",\n    },\n    {\n      label: \"포함\",\n      value: \"1\",\n    },\n  ],\n},","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":131,"line_end":131,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/BasicCompare005Page.tsx","lang":"js","line_start":231,"line_end":248,"block_type":"line","text":"select: [\n  {\n    label: \"유병자유무\",\n    name: \"cpbIsSicked\",\n    options: [\n      {\n        label: \"미포함\",\n        value: \"0\",\n      },\n      {\n        label: \"포함\",\n        value: \"1\",\n      },\n    ],\n    useOnlyLastKey: false,\n    usePrefix: false,\n  },\n],","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/DetailBasicCompare005Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/DetailBasicCompare005Page.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/DetailBasicCompare005Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/DetailBasicCompare005Page.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/DetailBasicCompare005Page.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/DetailBasicCompare005Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/DetailBasicCompare005Page.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/DetailBasicCompare005Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/DetailBasicCompare005Page.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare005/DetailBasicCompare005Page.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/AddBasicCompare006Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/AddBasicCompare006Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/AddBasicCompare006Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/AddBasicCompare006Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/AddBasicCompare006Page.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/AddBasicCompare006Page.tsx","lang":"js","line_start":77,"line_end":91,"block_type":"line","text":"{\n  name: \"cpbIsSicked\",\n  label: \"유병자유무\",\n  type: \"select\",\n  options: [\n    {\n      label: \"미포함\",\n      value: \"0\",\n    },\n    {\n      label: \"포함\",\n      value: \"1\",\n    },\n  ],\n},","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":131,"line_end":131,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/BasicCompare006Page.tsx","lang":"js","line_start":231,"line_end":248,"block_type":"line","text":"select: [\n  {\n    label: \"유병자유무\",\n    name: \"cpbIsSicked\",\n    options: [\n      {\n        label: \"미포함\",\n        value: \"0\",\n      },\n      {\n        label: \"포함\",\n        value: \"1\",\n      },\n    ],\n    useOnlyLastKey: false,\n    usePrefix: false,\n  },\n],","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/DetailBasicCompare006Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/DetailBasicCompare006Page.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/DetailBasicCompare006Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/DetailBasicCompare006Page.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/DetailBasicCompare006Page.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/DetailBasicCompare006Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/DetailBasicCompare006Page.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/DetailBasicCompare006Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/DetailBasicCompare006Page.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare006/DetailBasicCompare006Page.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/AddBasicCompare007Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/AddBasicCompare007Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/AddBasicCompare007Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/AddBasicCompare007Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/AddBasicCompare007Page.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/AddBasicCompare007Page.tsx","lang":"js","line_start":77,"line_end":91,"block_type":"line","text":"{\n  name: \"cpbIsSicked\",\n  label: \"유병자유무\",\n  type: \"select\",\n  options: [\n    {\n      label: \"미포함\",\n      value: \"0\",\n    },\n    {\n      label: \"포함\",\n      value: \"1\",\n    },\n  ],\n},","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":131,"line_end":131,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/BasicCompare007Page.tsx","lang":"js","line_start":231,"line_end":248,"block_type":"line","text":"select: [\n  {\n    label: \"유병자유무\",\n    name: \"cpbIsSicked\",\n    options: [\n      {\n        label: \"미포함\",\n        value: \"0\",\n      },\n      {\n        label: \"포함\",\n        value: \"1\",\n      },\n    ],\n    useOnlyLastKey: false,\n    usePrefix: false,\n  },\n],","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/DetailBasicCompare007Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/DetailBasicCompare007Page.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/DetailBasicCompare007Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/DetailBasicCompare007Page.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/DetailBasicCompare007Page.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/DetailBasicCompare007Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/DetailBasicCompare007Page.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/DetailBasicCompare007Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/DetailBasicCompare007Page.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare007/DetailBasicCompare007Page.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/AddBasicCompare010Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/AddBasicCompare010Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/AddBasicCompare010Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/AddBasicCompare010Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/AddBasicCompare010Page.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/AddBasicCompare010Page.tsx","lang":"js","line_start":77,"line_end":91,"block_type":"line","text":"{\n  name: \"cpbIsSicked\",\n  label: \"유병자유무\",\n  type: \"select\",\n  options: [\n    {\n      label: \"미포함\",\n      value: \"0\",\n    },\n    {\n      label: \"포함\",\n      value: \"1\",\n    },\n  ],\n},","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":131,"line_end":131,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/BasicCompare010Page.tsx","lang":"js","line_start":231,"line_end":248,"block_type":"line","text":"select: [\n  {\n    label: \"유병자유무\",\n    name: \"cpbIsSicked\",\n    options: [\n      {\n        label: \"미포함\",\n        value: \"0\",\n      },\n      {\n        label: \"포함\",\n        value: \"1\",\n      },\n    ],\n    useOnlyLastKey: false,\n    usePrefix: false,\n  },\n],","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/DetailBasicCompare010Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/DetailBasicCompare010Page.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/DetailBasicCompare010Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/DetailBasicCompare010Page.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/DetailBasicCompare010Page.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/DetailBasicCompare010Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/DetailBasicCompare010Page.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/DetailBasicCompare010Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/DetailBasicCompare010Page.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare010/DetailBasicCompare010Page.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/AddBasicCompare011Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/AddBasicCompare011Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/AddBasicCompare011Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/AddBasicCompare011Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/AddBasicCompare011Page.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/AddBasicCompare011Page.tsx","lang":"js","line_start":77,"line_end":91,"block_type":"line","text":"{\n  name: \"cpbIsSicked\",\n  label: \"유병자유무\",\n  type: \"select\",\n  options: [\n    {\n      label: \"미포함\",\n      value: \"0\",\n    },\n    {\n      label: \"포함\",\n      value: \"1\",\n    },\n  ],\n},","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":131,"line_end":131,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/BasicCompare011Page.tsx","lang":"js","line_start":231,"line_end":248,"block_type":"line","text":"select: [\n  {\n    label: \"유병자유무\",\n    name: \"cpbIsSicked\",\n    options: [\n      {\n        label: \"미포함\",\n        value: \"0\",\n      },\n      {\n        label: \"포함\",\n        value: \"1\",\n      },\n    ],\n    useOnlyLastKey: false,\n    usePrefix: false,\n  },\n],","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/DetailBasicCompare011Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/DetailBasicCompare011Page.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/DetailBasicCompare011Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/DetailBasicCompare011Page.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/DetailBasicCompare011Page.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/DetailBasicCompare011Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/DetailBasicCompare011Page.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/DetailBasicCompare011Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/DetailBasicCompare011Page.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare011/DetailBasicCompare011Page.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/AddBasicCompare012Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/AddBasicCompare012Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/AddBasicCompare012Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/AddBasicCompare012Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/AddBasicCompare012Page.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/AddBasicCompare012Page.tsx","lang":"js","line_start":77,"line_end":91,"block_type":"line","text":"{\n  name: \"cpbIsSicked\",\n  label: \"유병자유무\",\n  type: \"select\",\n  options: [\n    {\n      label: \"미포함\",\n      value: \"0\",\n    },\n    {\n      label: \"포함\",\n      value: \"1\",\n    },\n  ],\n},","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":131,"line_end":131,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/BasicCompare012Page.tsx","lang":"js","line_start":231,"line_end":248,"block_type":"line","text":"select: [\n  {\n    label: \"유병자유무\",\n    name: \"cpbIsSicked\",\n    options: [\n      {\n        label: \"미포함\",\n        value: \"0\",\n      },\n      {\n        label: \"포함\",\n        value: \"1\",\n      },\n    ],\n    useOnlyLastKey: false,\n    usePrefix: false,\n  },\n],","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/DetailBasicCompare012Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/DetailBasicCompare012Page.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/DetailBasicCompare012Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/DetailBasicCompare012Page.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/DetailBasicCompare012Page.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/DetailBasicCompare012Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/DetailBasicCompare012Page.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/DetailBasicCompare012Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/DetailBasicCompare012Page.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/BasicCompare012/DetailBasicCompare012Page.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/AddDetailCompare002Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/AddDetailCompare002Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/AddDetailCompare002Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/AddDetailCompare002Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/AddDetailCompare002Page.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailCompare002Page.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailDetailCompare002Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailDetailCompare002Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailDetailCompare002Page.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailDetailCompare002Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailDetailCompare002Page.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailDetailCompare002Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailDetailCompare002Page.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailDetailCompare002Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailDetailCompare002Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare002/DetailDetailCompare002Page.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/AddDetailCompare003Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/AddDetailCompare003Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/AddDetailCompare003Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/AddDetailCompare003Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/AddDetailCompare003Page.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailCompare003Page.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailDetailCompare003Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailDetailCompare003Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailDetailCompare003Page.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailDetailCompare003Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailDetailCompare003Page.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailDetailCompare003Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailDetailCompare003Page.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailDetailCompare003Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailDetailCompare003Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare003/DetailDetailCompare003Page.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/AddDetailCompare004Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/AddDetailCompare004Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/AddDetailCompare004Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/AddDetailCompare004Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/AddDetailCompare004Page.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailCompare004Page.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailDetailCompare004Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailDetailCompare004Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailDetailCompare004Page.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailDetailCompare004Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailDetailCompare004Page.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailDetailCompare004Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailDetailCompare004Page.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailDetailCompare004Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailDetailCompare004Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare004/DetailDetailCompare004Page.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/AddDetailCompare007Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/AddDetailCompare007Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/AddDetailCompare007Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/AddDetailCompare007Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/AddDetailCompare007Page.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailCompare007Page.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailDetailCompare007Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailDetailCompare007Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailDetailCompare007Page.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailDetailCompare007Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailDetailCompare007Page.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailDetailCompare007Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailDetailCompare007Page.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailDetailCompare007Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailDetailCompare007Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare007/DetailDetailCompare007Page.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/AddDetailCompare008Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/AddDetailCompare008Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/AddDetailCompare008Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/AddDetailCompare008Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/AddDetailCompare008Page.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailCompare008Page.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailDetailCompare008Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailDetailCompare008Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailDetailCompare008Page.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailDetailCompare008Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailDetailCompare008Page.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailDetailCompare008Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailDetailCompare008Page.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailDetailCompare008Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailDetailCompare008Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare008/DetailDetailCompare008Page.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/AddDetailCompare009Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/AddDetailCompare009Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/AddDetailCompare009Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/AddDetailCompare009Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/AddDetailCompare009Page.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailCompare009Page.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailDetailCompare009Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailDetailCompare009Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailDetailCompare009Page.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailDetailCompare009Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailDetailCompare009Page.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailDetailCompare009Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailDetailCompare009Page.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailDetailCompare009Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailDetailCompare009Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare009/DetailDetailCompare009Page.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/AddDetailCompare010Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/AddDetailCompare010Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/AddDetailCompare010Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/AddDetailCompare010Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/AddDetailCompare010Page.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailCompare010Page.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailDetailCompare010Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailDetailCompare010Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailDetailCompare010Page.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailDetailCompare010Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailDetailCompare010Page.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailDetailCompare010Page.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailDetailCompare010Page.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailDetailCompare010Page.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailDetailCompare010Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare010/DetailDetailCompare010Page.tsx","lang":"js","line_start":69,"line_end":69,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/AddDetailCompare011Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/AddDetailCompare011Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/AddDetailCompare011Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/AddDetailCompare011Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/AddDetailCompare011Page.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailCompare011Page.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailDetailCompare011Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailDetailCompare011Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailDetailCompare011Page.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailDetailCompare011Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailDetailCompare011Page.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailDetailCompare011Page.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailDetailCompare011Page.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailDetailCompare011Page.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailDetailCompare011Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare011/DetailDetailCompare011Page.tsx","lang":"js","line_start":69,"line_end":69,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/AddDetailCompare012Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/AddDetailCompare012Page.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/AddDetailCompare012Page.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/AddDetailCompare012Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/AddDetailCompare012Page.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailCompare012Page.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailDetailCompare012Page.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailDetailCompare012Page.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailDetailCompare012Page.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailDetailCompare012Page.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailDetailCompare012Page.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailDetailCompare012Page.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailDetailCompare012Page.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailDetailCompare012Page.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailDetailCompare012Page.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Data/DetailCompare012/DetailDetailCompare012Page.tsx","lang":"js","line_start":69,"line_end":69,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/AddInspectionStandardPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"셀렉트박스 선택값 (기존 분류명 또는 'direct')","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/AddInspectionStandardPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"직접입력 값","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/AddInspectionStandardPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"분류항목명","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/AddInspectionStandardPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"대분류 목록","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/AddInspectionStandardPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"대분류 목록 로드 함수","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/AddInspectionStandardPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"crmName 값만 추출","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/AddInspectionStandardPage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"최초 로드 시 대분류 목록 로드","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/AddInspectionStandardPage.tsx","lang":"js","line_start":65,"line_end":65,"block_type":"line","text":"분류명 결정: 직접입력이면 iscCodeDirect, 아니면 iscCodeSelect","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/AddInspectionStandardPage.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"line","text":"분류명이 기존 목록에 있으면 minor, 없으면 major","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/AddInspectionStandardPage.tsx","lang":"js","line_start":104,"line_end":104,"block_type":"line","text":"필드 정의","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/DetailInspectionStandardPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"셀렉트박스 선택값","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/DetailInspectionStandardPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"직접입력 값","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/DetailInspectionStandardPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"대분류 목록","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/DetailInspectionStandardPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"line","text":"대분류 목록 로드 함수 - Promise 반환하도록 수정","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/DetailInspectionStandardPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"crmName 값만 추출","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/DetailInspectionStandardPage.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"분류명 결정: 직접입력이면 iscCodeDirect, 아니면 iscCodeSelect","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/DetailInspectionStandardPage.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"line","text":"기존 분류명이 목록에 있는지 확인 (인자로 받은 목록 사용)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/DetailInspectionStandardPage.tsx","lang":"js","line_start":124,"line_end":124,"block_type":"line","text":"최초 로드 시 대분류 목록을 먼저 로드한 후 상세 데이터 로드","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/DetailInspectionStandardPage.tsx","lang":"js","line_start":134,"line_end":134,"block_type":"line","text":"필드 정의","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/InspectionStandardPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"데이터 로드 - API 엔드포인트만 다름","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/InspectionStandardPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"검사기준 API","hangul_chars":4,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/InspectionStandardPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"백엔드 응답을 프론트엔드 형식으로 변환","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/InspectionStandardPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"코드노출명","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/InspectionStandardPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/InspectionStandardPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"신규등록","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/InspectionStandardPage.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"상세 페이지 이동","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/InspectionStandardPage.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"line","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/InspectionStandardPage.tsx","lang":"js","line_start":97,"line_end":97,"block_type":"line","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/InspectionStandardPage.tsx","lang":"js","line_start":108,"line_end":108,"block_type":"line","text":"이전 데이터 복구","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/InspectionStandard/InspectionStandardPage.tsx","lang":"js","line_start":124,"line_end":124,"block_type":"line","text":"표시용 리스트","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/AddMedicationStandardPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"셀렉트박스 선택값 (기존 분류명 또는 'direct')","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/AddMedicationStandardPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"직접입력 값","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/AddMedicationStandardPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"분류항목명 (약품명) - 필수","hangul_chars":10,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/AddMedicationStandardPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"분류효능 - 필수","hangul_chars":6,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/AddMedicationStandardPage.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"분류명 목록","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/AddMedicationStandardPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"분류명 목록 로드 함수","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/AddMedicationStandardPage.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"최초 로드 시 분류명 목록 로드","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/AddMedicationStandardPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"분류명 결정: 직접입력이면 categoryNameDirect, 아니면 categoryNameSelect","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/AddMedicationStandardPage.tsx","lang":"js","line_start":82,"line_end":82,"block_type":"line","text":"분류명이 기존 목록에 있으면 기존 분류에 추가, 없으면 신규 분류 생성","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/AddMedicationStandardPage.tsx","lang":"js","line_start":88,"line_end":88,"block_type":"line","text":"신규 분류명 등록","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/AddMedicationStandardPage.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"line","text":"기존 분류명에서 ID 찾기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/AddMedicationStandardPage.tsx","lang":"js","line_start":123,"line_end":123,"block_type":"line","text":"투약기준 등록 (분류항목명 + 효능)","hangul_chars":13,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/AddMedicationStandardPage.tsx","lang":"js","line_start":144,"line_end":144,"block_type":"line","text":"필드 정의","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/DetailMedicationStandardPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"셀렉트박스 선택값","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/DetailMedicationStandardPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"직접입력 값","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/DetailMedicationStandardPage.tsx","lang":"js","line_start":37,"line_end":37,"block_type":"line","text":"분류명 목록","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/DetailMedicationStandardPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"분류명 -> ID 맵","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/DetailMedicationStandardPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"분류명 목록 로드 함수 - Promise 반환하도록 수정","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/DetailMedicationStandardPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"이름 -> ID 맵 생성 (mcName -> mcId)","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/DetailMedicationStandardPage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"분류명 결정: 직접입력이면 mscCategoryDirect, 아니면 mscCategorySelect","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/DetailMedicationStandardPage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"line","text":"분류명으로 카테고리 ID 찾기","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/DetailMedicationStandardPage.tsx","lang":"js","line_start":87,"line_end":87,"block_type":"line","text":"새로운 분류명인 경우 신규 생성","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/DetailMedicationStandardPage.tsx","lang":"js","line_start":141,"line_end":141,"block_type":"line","text":"기존 분류명이 목록에 있는지 확인 (인자로 받은 목록 사용)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/DetailMedicationStandardPage.tsx","lang":"js","line_start":163,"line_end":163,"block_type":"line","text":"최초 로드 시 분류명 목록을 먼저 로드한 후 상세 데이터 로드","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/DetailMedicationStandardPage.tsx","lang":"js","line_start":173,"line_end":173,"block_type":"line","text":"필드 정의","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/MedicationStandardPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"데이터 로드 - API 엔드포인트만 다름","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/MedicationStandardPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"투약기준 API","hangul_chars":4,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/MedicationStandardPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"백엔드 응답을 프론트엔드 형식으로 변환","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/MedicationStandardPage.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/MedicationStandardPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"신규등록","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/MedicationStandardPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"상세 페이지 이동","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/MedicationStandardPage.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"line","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/MedicationStandardPage.tsx","lang":"js","line_start":99,"line_end":99,"block_type":"line","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/MedicationStandardPage.tsx","lang":"js","line_start":110,"line_end":110,"block_type":"line","text":"이전 데이터 복구","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/MedicationStandard/MedicationStandardPage.tsx","lang":"js","line_start":126,"line_end":126,"block_type":"line","text":"표시용 리스트","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"대분류 목록 로드","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"line","text":"알파벳순 정렬","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":74,"line_end":74,"block_type":"line","text":"중분류 목록 로드","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":85,"line_end":85,"block_type":"line","text":"알파벳순 정렬","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"line","text":"소분류 목록 로드","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"line","text":"알파벳순 정렬","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":118,"line_end":118,"block_type":"line","text":"세분류 목록 로드","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":135,"line_end":135,"block_type":"line","text":"알파벳순 정렬","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":146,"line_end":146,"block_type":"line","text":"세세분류 목록 로드","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":172,"line_end":172,"block_type":"line","text":"알파벳순 정렬","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":193,"line_end":193,"block_type":"line","text":"기본값: 노출","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":199,"line_end":199,"block_type":"line","text":"대분류 등록","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":206,"line_end":206,"block_type":"line","text":"중분류 등록","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":214,"line_end":214,"block_type":"line","text":"소분류 등록","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":223,"line_end":223,"block_type":"line","text":"세분류 등록","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":233,"line_end":233,"block_type":"line","text":"세세분류 등록","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":244,"line_end":244,"block_type":"line","text":"세세세분류 등록","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":274,"line_end":274,"block_type":"line","text":"동적 필드 생성","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":278,"line_end":278,"block_type":"line","text":"분류 레벨 선택","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":296,"line_end":296,"block_type":"line","text":"대분류 선택 (대분류 등록시 직접 입력, 나머지는 선택)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":321,"line_end":321,"block_type":"line","text":"중분류 (중분류 이상일 때만)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":346,"line_end":346,"block_type":"line","text":"소분류 (소분류 이상일 때만)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":371,"line_end":371,"block_type":"line","text":"세분류 (세분류 이상일 때만)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":396,"line_end":396,"block_type":"line","text":"세세분류 (세세분류 이상일 때만)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":421,"line_end":421,"block_type":"line","text":"세세세분류 (세세세분류일 때만)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":433,"line_end":433,"block_type":"line","text":"분류항목명","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/AddRecommendedInsurancePage.tsx","lang":"js","line_start":443,"line_end":451,"block_type":"line","text":"TODO: 추천보험 항목 기능 추가 필요시 주석 해제\nfields.push({\n  name: \"diseasePredictionData.dpcInsuranceComment\",\n  label: \"추천보험\",\n  type: \"text\",\n  params: {\n    required: false,\n  },\n});","hangul_chars":21,"class":"4_todo","tags":["4_todo","5_dead"],"classified_by":"keyword","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"레벨별로 적절한 API 메서드 호출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"세세세분류 수정","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"세세분류 수정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":82,"line_end":82,"block_type":"line","text":"세분류 수정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":95,"line_end":95,"block_type":"line","text":"소분류 수정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"line","text":"중분류 수정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":118,"line_end":118,"block_type":"line","text":"대분류 수정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":150,"line_end":150,"block_type":"line","text":"레벨별로 적절한 API 메서드 호출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":152,"line_end":152,"block_type":"line","text":"세세세분류 상세조회","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":162,"line_end":162,"block_type":"line","text":"세세분류 상세조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":171,"line_end":171,"block_type":"line","text":"세분류 상세조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":179,"line_end":179,"block_type":"line","text":"소분류 상세조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":186,"line_end":186,"block_type":"line","text":"중분류 상세조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":192,"line_end":192,"block_type":"line","text":"대분류 상세조회","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":199,"line_end":199,"block_type":"line","text":"API가 직접 데이터를 반환하거나 { data: ... } 형태로 반환","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":202,"line_end":202,"block_type":"line","text":"백엔드 응답 필드명 매핑","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":252,"line_end":252,"block_type":"line","text":"레벨에 따라 표시할 필드 구성","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":256,"line_end":256,"block_type":"line","text":"대분류 코드 (모든 레벨에서 표시)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":268,"line_end":268,"block_type":"line","text":"중분류 코드 (중분류 이상일 때)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":280,"line_end":280,"block_type":"line","text":"소분류 코드 (소분류 이상일 때)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":292,"line_end":292,"block_type":"line","text":"세분류 코드 (세분류일 때)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":304,"line_end":304,"block_type":"line","text":"세세분류 코드 (세세분류일 때)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":316,"line_end":316,"block_type":"line","text":"세세세분류 코드 (세세세분류일 때)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":328,"line_end":328,"block_type":"line","text":"분류항목명","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/DetailRecommendedInsurancePage.tsx","lang":"js","line_start":338,"line_end":346,"block_type":"line","text":"TODO: 추천보험 항목 기능 추가 필요시 주석 해제\nfields.push({\n  name: \"diseasePrediction.dpcInsuranceComment\" as const,\n  label: \"추천보험\",\n  type: \"text\" as const,\n  params: {\n    required: false,\n  },\n});","hangul_chars":21,"class":"4_todo","tags":["4_todo","5_dead"],"classified_by":"keyword","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"검색 필터용 상태","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"대분류 목록 로드","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"중분류 목록 로드 (대분류 선택 시)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":64,"line_end":64,"block_type":"line","text":"소분류 목록 로드 (중분류 선택 시)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":85,"line_end":85,"block_type":"line","text":"세분류 목록 로드 (소분류 선택 시)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":112,"line_end":112,"block_type":"line","text":"세세분류 목록 로드 (세분류 선택 시)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":141,"line_end":141,"block_type":"line","text":"세세세분류 목록 로드 (세세분류 선택 시)","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":172,"line_end":172,"block_type":"line","text":"데이터 로드","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":179,"line_end":179,"block_type":"line","text":"검색 필터에 따라 상위 분류 제외","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":209,"line_end":209,"block_type":"line","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":218,"line_end":218,"block_type":"line","text":"신규등록","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":223,"line_end":223,"block_type":"line","text":"상세 페이지 이동","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":257,"line_end":257,"block_type":"line","text":"selectedIds를 백엔드 형식으로 변환","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":292,"line_end":292,"block_type":"line","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":314,"line_end":314,"block_type":"line","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":325,"line_end":325,"block_type":"line","text":"이전 데이터 복구","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":344,"line_end":344,"block_type":"line","text":"ID 생성 함수","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":354,"line_end":354,"block_type":"line","text":"표시용 리스트","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":424,"line_end":429,"block_type":"line","text":"TODO: 추천보험 항목 기능 추가 필요시 주석 해제\n{\n  key: \"insuranceComment\",\n  label: \"추천보험\",\n  usePrefix: false,\n},","hangul_chars":21,"class":"4_todo","tags":["4_todo","5_dead"],"classified_by":"keyword","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/DiseasePrediction/RecommendedInsurance/RecommendedInsurancePage.tsx","lang":"js","line_start":555,"line_end":561,"block_type":"line","text":"TODO: 추천보험 항목 기능 추가 필요시 주석 해제\n{\n  value: \"insuranceComment\" as any,\n  label: \"추천보험\",\n  usePrefix: false,\n  useOnlyLastKey: true,\n},","hangul_chars":21,"class":"4_todo","tags":["4_todo","5_dead"],"classified_by":"keyword","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"PDF 스타일 적용","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"텍스트 레이어 스타일 적용","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"pdf 정보 입력 버튼 클릭 트리거","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"pdf 미리보기 버튼 클릭 트리거","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"제출 재진입 가드 (전역 loading은 6초 자동해제라 압축 중 풀려 중복 제출됨)","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"line","text":"api: 모든 pdf input타입","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":37,"line_end":37,"block_type":"line","text":"다중팩스 목록","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"파일 데이터 갑지","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"좌표 데이터 감지","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"팩스타입 감지","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":50,"line_end":52,"block_type":"jsdoc","text":"? function: 좌표데이터 pageData를 edit가능한 param으로 평탄화하는 함수","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":63,"line_end":63,"block_type":"line","text":"혹시 남은 빈 항목 제거","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"line","text":"다중팩스 목록에서 빈 항목 제거","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":115,"line_end":115,"block_type":"line","text":"양식 용량 초과 시 백엔드가 NEED_COMPRESS 반환 → 압축 여부 확인 후 재요청","hangul_chars":23,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":122,"line_end":122,"block_type":"line","text":"navigate(-1)은 히스토리 없으면 no-op이라 등록 후 폼에 머물러 중복 제출 유발 → 목록으로 명시 이동","hangul_chars":32,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":140,"line_end":140,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":149,"line_end":149,"block_type":"line","text":"cdn에서 pdf 가져오기","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":157,"line_end":157,"block_type":"line","text":"input에서 pdf 가져오기","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":175,"line_end":175,"block_type":"line","text":"cdn에서 pdf 가져오기","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":195,"line_end":196,"block_type":"line","text":"cdn pdf 가져오기 실패 시\ninput에서 pdf 가져오기","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":207,"line_end":209,"block_type":"jsdoc","text":"? function: 유저가 사용 가능한 데이터 형태로 변형","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":213,"line_end":213,"block_type":"line","text":"기존의 pageData가 있을 경우 병합","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":214,"line_end":214,"block_type":"line","text":"pageData가 없다면 빈 객체를 기본값으로 설정","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":220,"line_end":220,"block_type":"line","text":"groupedByPage의 key는 그대로 두고, value는 currentPageData의 값을 덮어쓰기","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":223,"line_end":223,"block_type":"line","text":"key는 groupedByPage의 값으로, value는 currentPageData에서 가져오는 방식","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":230,"line_end":230,"block_type":"line","text":"병합된 데이터를 setValue에 전달","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":234,"line_end":236,"block_type":"jsdoc","text":"? function: 페이지 첫 접근 시, 데이터 가져오기(상세)","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":253,"line_end":255,"block_type":"jsdoc","text":"? function: file의 변경을 감지하여, pageData를 재정의","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":458,"line_end":458,"block_type":"block","text":"고정팩스: 팩스번호 1개 입력","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":480,"line_end":480,"block_type":"block","text":"가상팩스: 관리자 입력 없음","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":494,"line_end":494,"block_type":"block","text":"다중팩스: 팩스번호 목록 입력","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/AddInvoicePage.tsx","lang":"js","line_start":584,"line_end":584,"block_type":"line","text":"파일을 react-hook-form에 설정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":9,"line_end":9,"block_type":"line","text":"PDF 스타일 적용","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"텍스트 레이어 스타일 적용","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"pdf 정보 입력 버튼 클릭 트리거","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"pdf 미리보기 버튼 클릭 트리거","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"제출 재진입 가드 (전역 loading은 6초 자동해제라 압축 중 풀려 중복 제출됨)","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"api: 저장된 좌표 데이터","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"line","text":"api: 모든 pdf input타입","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"파일 변경 여부","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"다중팩스 목록","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"파일 데이터 변경 감지","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"좌표 데이터 변경 감지","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"팩스타입 감지","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":51,"line_end":53,"block_type":"jsdoc","text":"? function: 좌표데이터 pageData를 edit가능한 param으로 평탄화하는 함수","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":64,"line_end":64,"block_type":"line","text":"혹시 남은 빈 항목 제거","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"다중팩스 목록 처리 - 빈 항목 제거 후 전송","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":113,"line_end":113,"block_type":"line","text":"양식 용량 초과 시 백엔드가 NEED_COMPRESS 반환 → 압축 여부 확인 후 재요청","hangul_chars":23,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":138,"line_end":138,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":147,"line_end":147,"block_type":"line","text":"cdn에서 pdf 가져오기","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":155,"line_end":155,"block_type":"line","text":"input에서 pdf 가져오기","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":173,"line_end":173,"block_type":"line","text":"cdn에서 pdf 가져오기","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":193,"line_end":194,"block_type":"line","text":"cdn pdf 가져오기 실패 시\ninput에서 pdf 가져오기","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":205,"line_end":207,"block_type":"jsdoc","text":"? function: 유저가 사용 가능한 데이터 형태로 변형","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":210,"line_end":210,"block_type":"line","text":"api: 저장된 좌표 데이터","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":211,"line_end":211,"block_type":"line","text":"api: 모든 pdf input타입","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":253,"line_end":255,"block_type":"jsdoc","text":"? function: 페이지 첫 접근 시, 데이터 가져오기(상세)","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":283,"line_end":283,"block_type":"line","text":"다중팩스 목록 초기화","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":329,"line_end":331,"block_type":"jsdoc","text":"? function: file의 변경을 감지하여, pageData를 재정의","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":535,"line_end":535,"block_type":"block","text":"고정팩스: 팩스번호 1개 입력","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":557,"line_end":557,"block_type":"block","text":"가상팩스: 관리자 입력 없음","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":571,"line_end":571,"block_type":"block","text":"다중팩스: 팩스번호 목록 입력","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/DetailInvoicePage.tsx","lang":"js","line_start":658,"line_end":658,"block_type":"line","text":"파일을 react-hook-form에 설정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxConfigPage.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"fxcApiUsageAmount: number; // API이용액 - 주석처리","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxConfigPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"fxcApiUsageAmount: 0, // API이용액 - 주석처리","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxConfigPage.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"setValue(\"fxcApiUsageAmount\", res.fxcApiUsageAmount); // API이용액 - 주석처리","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxConfigPage.tsx","lang":"js","line_start":65,"line_end":65,"block_type":"line","text":"API이용액 - 주석처리 (기본값 0 전달)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxConfigPage.tsx","lang":"js","line_start":90,"line_end":98,"block_type":"line","text":"{\n  name: \"fxcApiUsageAmount\",\n  label: \"API이용액\",\n  type: \"number\",\n  unit: \"원\",\n  params: {\n    required: true,\n  },\n},","hangul_chars":4,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsageDetailPage.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"추가 필드 설정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsageDetailPage.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"setValue(\"fxhApiCostLabel\", `${res.fxhApiCost.toLocaleString()} 머니`); // API이용액 - 주석처리","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsageDetailPage.tsx","lang":"js","line_start":223,"line_end":228,"block_type":"line","text":"{\n  name: \"fxhApiCostLabel\",\n  label: \"API 비용\",\n  type: \"text\",\n  params: { readOnly: true },\n}, // API이용액 - 주석처리","hangul_chars":9,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"S3에 파일이 존재하는지 여부 (30일 후 삭제됨)","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"상태 값 변환 함수","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"회원 타입 변환","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"line","text":"영업대리점 목록 가져오기","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":95,"line_end":95,"block_type":"line","text":"기업명 목록 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"line","text":"목록 데이터에 변환된 상태 값 추가","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":125,"line_end":125,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":138,"line_end":138,"block_type":"jsdoc","text":"FAX 재발송 상태 추적","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":143,"line_end":143,"block_type":"jsdoc","text":"재발송 중 새로고침 방지","hangul_chars":10,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":145,"line_end":145,"block_type":"line","text":"F5, Ctrl+R, Cmd+R 키보드 이벤트 가로채기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":148,"line_end":148,"block_type":"line","text":"F5 또는 Ctrl+R (Windows) 또는 Cmd+R (Mac)","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":156,"line_end":156,"block_type":"line","text":"beforeunload는 백업용 (탭 닫기, 주소창 이동 등)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":172,"line_end":172,"block_type":"jsdoc","text":"재발송 중 페이지 이동 방지 (React Router)","hangul_chars":11,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":199,"line_end":199,"block_type":"line","text":"진행 중에서 제거, 완료에 추가","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":208,"line_end":208,"block_type":"line","text":"진행 중에서 제거, 실패에 추가","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":218,"line_end":218,"block_type":"jsdoc","text":"모든 재발송 완료 시 새로고침 안내","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":220,"line_end":220,"block_type":"line","text":"진행 중인 건이 없고, 완료된 건이 있을 때","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":237,"line_end":237,"block_type":"jsdoc","text":"청구데이터 보기 (새 창으로 PDF 열기)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":269,"line_end":270,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 일반=파랑 | 기업=녹색\ndisplayList에서 이미 라벨로 변환됨(getMemberTypeLabel)","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":316,"line_end":317,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 성공=파랑 | 실패=빨강\ndisplayList에서 이미 라벨로 변환됨(getStatusLabel)","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":328,"line_end":329,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 성공=파랑 | 실패=빨강\ndisplayList에서 이미 라벨로 변환됨(getStatusLabel)","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":366,"line_end":366,"block_type":"line","text":"ivhId가 없거나 S3 파일이 삭제됨 (30일 경과)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":377,"line_end":377,"block_type":"line","text":"파일이 존재하면 보기 버튼 표시","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":400,"line_end":400,"block_type":"line","text":"재발송 가능 조건: 발송 성공 AND 청구데이터 존재 AND S3 파일 존재","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":406,"line_end":406,"block_type":"line","text":"완료 상태","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":418,"line_end":418,"block_type":"line","text":"실패 상태 (재시도 가능 - 단, 재발송 조건 충족 시)","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":438,"line_end":438,"block_type":"line","text":"재발송 불가","hangul_chars":5,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/FaxUsagePage.tsx","lang":"js","line_start":450,"line_end":450,"block_type":"line","text":"재발송 가능","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"팩스타입 값 변환 함수","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":64,"line_end":64,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":85,"line_end":85,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":88,"line_end":88,"block_type":"line","text":"목록 데이터에 변환된 팩스타입 값 추가","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 손해=파랑 | 생명=녹색 — 목록 API가 GET_STATUS로 라벨 변환해 반환","hangul_chars":25,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":137,"line_end":138,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 고정팩스=기본색 | 가상팩스=파랑 | 다중팩스=녹색\ndisplayList에서 이미 라벨로 변환됨(getFaxTypeLabel)","hangul_chars":35,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/InvoicePage.tsx","lang":"js","line_start":149,"line_end":149,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 노출=파랑 | 비노출=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/EditPdfData.tsx","lang":"js","line_start":49,"line_end":51,"block_type":"jsdoc","text":"? function: input 숫자 및 소수점 입력 허용","hangul_chars":10,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/EditPdfData.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"line","text":"현재 arrayData를 가져오기","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/EditPdfData.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"특정 index를 제외한 나머지 데이터로 새로운 배열 생성","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/EditPdfData.tsx","lang":"js","line_start":132,"line_end":132,"block_type":"line","text":"스크롤 속도 조절","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/EditPdfData.tsx","lang":"js","line_start":153,"line_end":153,"block_type":"line","text":"스크롤 속도 조절","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/EditPdfData.tsx","lang":"js","line_start":226,"line_end":226,"block_type":"block","text":"스크롤 가능한 콘텐츠","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/PdfViewr.tsx","lang":"js","line_start":5,"line_end":5,"block_type":"line","text":"PDF 스타일 적용","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/PdfViewr.tsx","lang":"js","line_start":6,"line_end":6,"block_type":"line","text":"텍스트 레이어 스타일 적용","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/PdfViewr.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"특정 페이지 번호 추가","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/PdfViewr.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"\"대리인1성명\",","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/PdfViewr.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"\"대리인1서명\",","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/PdfViewr.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"\"대리인2성명\",","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/PdfViewr.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"\"대리인2서명\",","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/PdfViewr.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"특정 페이지","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/PdfViewr.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"line","text":"좌표 pdf 셋업","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/PdfViewr.tsx","lang":"js","line_start":86,"line_end":87,"block_type":"line","text":"public 폴더의 경로\ncMapUrl: `https://unpkg.com/pdfjs-dist@${pdfjs.version}/cmaps/`,","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/PdfViewr.tsx","lang":"js","line_start":91,"line_end":91,"block_type":"line","text":"이 배열에 의존성을 설정하여 필요할 때만 새로 계산","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/PdfViewr.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"block","text":"미리보기 버튼","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/PdfViewr.tsx","lang":"js","line_start":154,"line_end":154,"block_type":"block","text":"스크롤 가능한 콘텐츠","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Invoice/components/PdfViewr.tsx","lang":"js","line_start":170,"line_end":170,"block_type":"line","text":"특정 페이지만 렌더링","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/AddLossCategoryPage.tsx","lang":"js","line_start":64,"line_end":64,"block_type":"line","text":"서브 카테고리 추가","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/AddLossCategoryPage.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"기존 값 유지하면서 순서 변경","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/AddLossCategoryPage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"line","text":"순서 업데이트","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/AddLossCategoryPage.tsx","lang":"js","line_start":86,"line_end":86,"block_type":"line","text":"변경된 순서 적용","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/AddLossCategoryPage.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"block","text":"카테고리명","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/AddLossCategoryPage.tsx","lang":"js","line_start":128,"line_end":128,"block_type":"block","text":"노출여부","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/AddLossCategoryPage.tsx","lang":"js","line_start":162,"line_end":162,"block_type":"block","text":"서브 카테고리 Drag & Drop 영역","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/AddLossCategoryPage.tsx","lang":"js","line_start":185,"line_end":214,"block_type":"block","text":"<hr />\n          <div className=\"d-flex justify-content-between align-items-center mb-2\">\n            <h5>서브 카테고리</h5>\n            <button\n              type=\"button\"\n              className=\"btn btn-sm btn-success\"\n              onClick={handleAddSubCategory}\n            >\n              + 추가\n            </button>\n          </div> \n          <DndContext\n            collisionDetection={closestCenter}\n            onDragEnd={handleDragEnd}\n          >\n            <SortableContext items={fields.map((sub) => sub.id)}>\n              <ul className=\"list-group\">\n                {fields.map((sub, index) => (\n                  <SortableItem\n                    key={sub.id}\n                    id={sub.id}\n                    sub={sub}\n                    index={index}\n                    register={register}\n                    remove={remove}\n                  />\n                ))}\n              </ul>\n            </SortableContext>\n          </DndContext>","hangul_chars":8,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/AddLossCategoryPage.tsx","lang":"js","line_start":216,"line_end":216,"block_type":"block","text":"하단 버튼","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/AddLossCategoryPage.tsx","lang":"js","line_start":237,"line_end":237,"block_type":"jsdoc","text":"Drag & Drop 가능한 항목 **","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"서브 카테고리 추가","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"기존 값 유지하면서 순서 변경","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"line","text":"순서 업데이트","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"line","text":"변경된 순서 적용","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":87,"line_end":87,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":89,"line_end":89,"block_type":"line","text":"로딩 중이면 중단","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":90,"line_end":90,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"line","text":"기존 setupDetailData 활용 (카테고리 기본 데이터 설정)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":99,"line_end":99,"block_type":"line","text":"🟢 subCategories 데이터 수동 설정","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":104,"line_end":104,"block_type":"line","text":"🟢 lascSort 기준 오름차순 정렬","hangul_chars":8,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"line","text":"Drag & Drop을 위한 ID 추가","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":119,"line_end":119,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":130,"line_end":130,"block_type":"block","text":"카테고리명","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":164,"line_end":164,"block_type":"block","text":"노출여부","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":198,"line_end":198,"block_type":"block","text":"서브 카테고리 Drag & Drop 영역","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":221,"line_end":252,"block_type":"block","text":"<hr />\n\n          <div className=\"d-flex justify-content-between align-items-center mb-2\">\n            <h5>서브 카테고리</h5>\n            <button\n              type=\"button\"\n              className=\"btn btn-sm btn-success\"\n              onClick={handleAddSubCategory}\n            >\n              + 추가\n            </button>\n          </div>\n\n          <DndContext\n            collisionDetection={closestCenter}\n            onDragEnd={handleDragEnd}\n          >\n            <SortableContext items={fields.map((sub) => sub.id)}>\n              <ul className=\"list-group\">\n                {fields.map((sub, index) => (\n                  <SortableItem\n                    key={sub.id}\n                    id={sub.id}\n                    sub={sub}\n                    index={index}\n                    register={register}\n                    remove={remove}\n                  />\n                ))}\n              </ul>\n            </SortableContext>\n          </DndContext>","hangul_chars":8,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/DetailLossCategoryPage.tsx","lang":"js","line_start":278,"line_end":278,"block_type":"block","text":"하단 버튼","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Category/LossCategoryPage.tsx","lang":"js","line_start":103,"line_end":103,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 노출=파랑 | 비노출=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":74,"line_end":74,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":98,"line_end":98,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":99,"line_end":99,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":123,"line_end":123,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":126,"line_end":126,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":128,"line_end":128,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":130,"line_end":130,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":137,"line_end":137,"block_type":"line","text":"파일 임의 setup","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":139,"line_end":139,"block_type":"line","text":"이미지 변환 및 설정","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":158,"line_end":158,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":165,"line_end":165,"block_type":"line","text":"다운로드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":172,"line_end":172,"block_type":"line","text":"Blob을 사용하여 다운로드 처리 (브라우저의 download 속성 문제 우회)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":183,"line_end":183,"block_type":"line","text":"다운로드 시 저장될 파일 이름 설정","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":207,"line_end":207,"block_type":"block","text":"<span>카테고리명</span>","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/DetailLossServicePage.tsx","lang":"js","line_start":377,"line_end":964,"block_type":"block","text":"<div className=\"flex_row_wrap\">\n                <div className=\"col-sm-6 pr-4\">\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"lsaTitle\"\n                    >\n                      카테고리명\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        id=\"lsaTitle\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        defaultValue={category}\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"memName\"\n                    >\n                      회원아이디\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"detail.member.memLoginId\")}\n                        id=\"memName\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"memName\"\n                    >\n                      회원명\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"detail.member.memName\")}\n                        id=\"memName\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"memPhone\"\n                    >\n                      회원연락처\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"detail.member.memPhone\")}\n                        id=\"memPhone\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>{\" \"}\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"isAnswer\"\n                    >\n                      대응여부\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        id=\"isAnswer\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        value={watch(\"detail.comment\") ? \"대응\" : \"미대응\"}\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"col-sm-6\">\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"lsaCreatedAt\"\n                    >\n                      등록일\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"detail.loss.lsaCreatedAt\")}\n                        id=\"lsaCreatedAt\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"lsaUpdatedAt\"\n                    >\n                      수정일\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"detail.loss.lsaUpdatedAt\")}\n                        id=\"lsaUpdatedAt\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"admName\"\n                    >\n                      답변등록 회원명\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"detail.admin.admName\")}\n                        id=\"admName\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"lacmCreatedAt\"\n                    >\n                      답변등록일\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"detail.comment.lacmCreatedAt\")}\n                        id=\"lacmCreatedAt\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"lsaUpdatedAt\"\n                    >\n                      답변수정일\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"detail.comment.lacmUpdatedAt\")}\n                        id=\"lsaUpdatedAt\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"col-sm-12\">\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"lsaTitle\"\n                    >\n                      제목<b>*</b>\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <input\n                        {...register(\"detail.loss.lsaTitle\")}\n                        id=\"lsaTitle\"\n                        className=\"form-control\"\n                        type=\"text\"\n                        readOnly={true}\n                      />\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"col-sm-6 pr-4\">\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdContent\"\n                    >\n                      내용\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <textarea\n                        {...register(\"detail.loss.lsaContent\")}\n                        id=\"lsaContent\"\n                        className=\"form-control\"\n                        readOnly={true}\n                        rows={10}\n                      />\n                    </div>\n                  </div>\n                </div>\n                <div className=\"col-sm-6\">\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"lacmContent\"\n                    >\n                      답변\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <textarea\n                        {...register(\"detail.comment.lacmContent\")}\n                        id=\"lacmContent\"\n                        className=\"form-control\"\n                        rows={10}\n                      />\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"col-sm-12\">\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdCreatedAt\"\n                    >\n                      파일1\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <div className=\"d-flex\">\n                        <div className=\"custom-file flex-grow-1\">\n                          <Controller\n                            name=\"file1\"\n                            control={control}\n                            defaultValue={null as any}\n                            render={({\n                              field: { onChange, value, ...fieldProps },\n                            }) => {\n                              return (\n                                <>\n                                  <input\n                                    key={\n                                      fileLabels[String(\"file1\")] || undefined\n                                    }\n                                    id=\"file1\"\n                                    type=\"file\"\n                                    accept=\".jpg,.png,.pdf,.hwp,.xlsx,.txt\"\n                                    className=\"custom-file-input\"\n                                    onChange={(e: any) => {\n                                      const files = e.target.files;\n                                      if (files?.length) {\n                                        handleFileInput(\"file1\", e);\n                                      }\n                                    }}\n                                    disabled={true}\n                                    {...fieldProps}\n                                  />\n\n                                  <label\n                                    className=\"custom-file-label none\"\n                                    htmlFor=\"file1\"\n                                    style={{\n                                      overflow: \"hidden\",\n                                      textOverflow: \"ellipsis\",\n                                      whiteSpace: \"nowrap\",\n                                    }}\n                                  >\n                                    {fileLabels[\"file1\"] || ``}\n                                  </label>\n                                </>\n                              );\n                            }}\n                          />\n                        </div>\n                        <button\n                          type=\"button\"\n                          className=\"btn btn-outline-secondary ml-2\"\n                          style={{\n                            width: \"90px\",\n                            whiteSpace: \"nowrap\",\n                          }}\n                          onClick={() =>\n                            handleClickDownloadButton(\"file1\", \"loss/file\")\n                          }\n                          disabled={!files[\"file1\"]}\n                        >\n                          다운로드\n                        </button>\n                      </div>\n                    </div>\n                  </div>\n\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdCreatedAt\"\n                    >\n                      파일2\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <div className=\"d-flex\">\n                        <div className=\"custom-file flex-grow-1\">\n                          <Controller\n                            name=\"file2\"\n                            control={control}\n                            defaultValue={null as any}\n                            render={({\n                              field: { onChange, value, ...fieldProps },\n                            }) => {\n                              return (\n                                <>\n                                  <input\n                                    key={\n                                      fileLabels[String(\"file2\")] || undefined\n                                    }\n                                    id=\"file2\"\n                                    type=\"file\"\n                                    accept=\".jpg,.png,.pdf,.hwp,.xlsx,.txt\"\n                                    className=\"custom-file-input\"\n                                    onChange={(e: any) => {\n                                      const files = e.target.files;\n                                      if (files?.length) {\n                                        handleFileInput(\"file2\", e);\n                                      }\n                                    }}\n                                    disabled={true}\n                                    {...fieldProps}\n                                  />\n\n                                  <label\n                                    className=\"custom-file-label none\"\n                                    htmlFor=\"file2\"\n                                    style={{\n                                      overflow: \"hidden\",\n                                      textOverflow: \"ellipsis\",\n                                      whiteSpace: \"nowrap\",\n                                    }}\n                                  >\n                                    {fileLabels[\"file2\"] || ``}\n                                  </label>\n                                </>\n                              );\n                            }}\n                          />\n                        </div>\n                        <button\n                          type=\"button\"\n                          className=\"btn btn-outline-secondary ml-2\"\n                          style={{\n                            width: \"90px\",\n                            whiteSpace: \"nowrap\",\n                          }}\n                          onClick={() =>\n                            handleClickDownloadButton(\"file2\", \"loss/file\")\n                          }\n                          disabled={!files[\"file2\"]}\n                        >\n                          다운로드\n                        </button>\n                      </div>\n                    </div>\n                  </div>\n\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdCreatedAt\"\n                    >\n                      파일3\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <div className=\"d-flex\">\n                        <div className=\"custom-file flex-grow-1\">\n                          <Controller\n                            name=\"file3\"\n                            control={control}\n                            defaultValue={null as any}\n                            render={({\n                              field: { onChange, value, ...fieldProps },\n                            }) => {\n                              return (\n                                <>\n                                  <input\n                                    key={fileLabels[\"file3\"] || undefined}\n                                    id=\"file3\"\n                                    type=\"file\"\n                                    accept=\".jpg,.png,.pdf,.hwp,.xlsx,.txt\"\n                                    className=\"custom-file-input\"\n                                    onChange={(e: any) => {\n                                      const files = e.target.files;\n                                      if (files?.length) {\n                                        handleFileInput(\"file3\", e);\n                                      }\n                                    }}\n                                    disabled={true}\n                                    {...fieldProps}\n                                  />\n\n                                  <label\n                                    className=\"custom-file-label none\"\n                                    htmlFor=\"file3\"\n                                    style={{\n                                      overflow: \"hidden\",\n                                      textOverflow: \"ellipsis\",\n                                      whiteSpace: \"nowrap\",\n                                    }}\n                                  >\n                                    {fileLabels[\"file3\"] || ``}\n                                  </label>\n                                </>\n                              );\n                            }}\n                          />\n                        </div>\n                        <button\n                          type=\"button\"\n                          className=\"btn btn-outline-secondary ml-2\"\n                          style={{\n                            width: \"90px\",\n                            whiteSpace: \"nowrap\",\n                          }}\n                          onClick={() =>\n                            handleClickDownloadButton(\"file3\", \"loss/file\")\n                          }\n                          disabled={!files[\"file3\"]}\n                        >\n                          다운로드\n                        </button>\n                      </div>\n                    </div>\n                  </div>\n\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdCreatedAt\"\n                    >\n                      파일4\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <div className=\"d-flex\">\n                        <div className=\"custom-file flex-grow-1\">\n                          <Controller\n                            name=\"file4\"\n                            control={control}\n                            defaultValue={null as any}\n                            render={({\n                              field: { onChange, value, ...fieldProps },\n                            }) => {\n                              return (\n                                <>\n                                  <input\n                                    key={fileLabels[\"file4\"] || undefined}\n                                    id=\"file4\"\n                                    type=\"file\"\n                                    accept=\".jpg,.png,.pdf,.hwp,.xlsx,.txt\"\n                                    className=\"custom-file-input\"\n                                    onChange={(e: any) => {\n                                      const files = e.target.files;\n                                      if (files?.length) {\n                                        handleFileInput(\"file4\", e);\n                                      }\n                                    }}\n                                    disabled={true}\n                                    {...fieldProps}\n                                  />\n\n                                  <label\n                                    className=\"custom-file-label none\"\n                                    htmlFor=\"file4\"\n                                    style={{\n                                      overflow: \"hidden\",\n                                      textOverflow: \"ellipsis\",\n                                      whiteSpace: \"nowrap\",\n                                    }}\n                                  >\n                                    {fileLabels[\"file4\"] || ``}\n                                  </label>\n                                </>\n                              );\n                            }}\n                          />\n                        </div>\n                        <button\n                          type=\"button\"\n                          className=\"btn btn-outline-secondary ml-2\"\n                          style={{\n                            width: \"90px\",\n                            whiteSpace: \"nowrap\",\n                          }}\n                          onClick={() =>\n                            handleClickDownloadButton(\"file4\", \"loss/file\")\n                          }\n                          disabled={!files[\"file4\"]}\n                        >\n                          다운로드\n                        </button>\n                      </div>\n                    </div>\n                  </div>\n\n                  <div className=\"form-group row\">\n                    <label\n                      className=\"col-sm-12 col-form-label\"\n                      htmlFor=\"brdCreatedAt\"\n                    >\n                      파일5\n                    </label>\n                    <div className=\"col-sm-12 mt-1\">\n                      <div className=\"d-flex\">\n                        <div className=\"custom-file flex-grow-1\">\n                          <Controller\n                            name=\"file5\"\n                            control={control}\n                            defaultValue={null as any}\n                            render={({\n                              field: { onChange, value, ...fieldProps },\n                            }) => {\n                              return (\n                                <>\n                                  <input\n                                    key={\n                                      fileLabels[String(\"file5\")] || undefined\n                                    }\n                                    id=\"file5\"\n                                    type=\"file\"\n                                    accept=\".jpg,.png,.pdf,.hwp,.xlsx,.txt\"\n                                    className=\"custom-file-input\"\n                                    onChange={(e: any) => {\n                                      const files = e.target.files;\n                                      if (files?.length) {\n                                        handleFileInput(\"file5\", e);\n                                      }\n                                    }}\n                                    disabled={true}\n                                    {...fieldProps}\n                                  />\n\n                                  <label\n                                    className=\"custom-file-label none\"\n                                    htmlFor=\"file5\"\n                                    style={{\n                                      overflow: \"hidden\",\n                                      textOverflow: \"ellipsis\",\n                                      whiteSpace: \"nowrap\",\n                                    }}\n                                  >\n                                    {fileLabels[\"file5\"] || ``}\n                                  </label>\n                                </>\n                              );\n                            }}\n                          />\n                        </div>\n                        <button\n                          type=\"button\"\n                          className=\"btn btn-outline-secondary ml-2\"\n                          style={{\n                            width: \"90px\",\n                            whiteSpace: \"nowrap\",\n                          }}\n                          onClick={() =>\n                            handleClickDownloadButton(\"file5\", \"loss/file\")\n                          }\n                          disabled={!files[\"file5\"]}\n                        >\n                          다운로드\n                        </button>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </div>","hangul_chars":86,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/LossServicePage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/LossServicePage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/LossServicePage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/LossServicePage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/LossServicePage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/LossServicePage.tsx","lang":"js","line_start":73,"line_end":74,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 일반=파랑 | 기업=녹색\n서버(GET_STATUS)가 라벨로 변환해 내려줌 — 코드로 올 경우 색만 적용","hangul_chars":36,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/LossServicePage.tsx","lang":"js","line_start":112,"line_end":113,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 대응=파랑 | 미대응=빨강\n기존 기본 포맷(formatCellValue)의 LSA001/LSA002 → 미대응/대응 라벨 변환을 유지하며 색 적용","hangul_chars":39,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/LossServicePage.tsx","lang":"js","line_start":177,"line_end":183,"block_type":"line","text":"{\n  label: \"서브카테고리\",\n  name: \"subCategory.lascId\",\n  options: [{ label: \"전체\", value: \"\" }].concat(subCategory),\n  usePrefix: false,\n  useOnlyLastKey: true,\n},","hangul_chars":8,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Loss/Service/LossServicePage.tsx","lang":"js","line_start":205,"line_end":218,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/ChargeRequest/MoneyChargeRequestApprovalPage.tsx","lang":"js","line_start":173,"line_end":173,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 승인완료=파랑 | 반려=빨강 | 요청취소=주황 | 승인대기=색 미지정","hangul_chars":30,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/General/AddMoneyGeneralPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"특정인일 경우 회원 고유번호(memId, 쉼표로 구분)","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/General/AddMoneyGeneralPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"포인트 내용 (고객에게 보여줄 지급명)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/General/AddMoneyGeneralPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"포인트 사유 (내부용)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/General/AddMoneyGeneralPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"지급 포인트 (양수: 적립, 음수: 적립회수)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/General/AddMoneyGeneralPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"유효기간 (일수)","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/General/AddMoneyGeneralPage.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"구분 필드 감시","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/General/AddMoneyGeneralPage.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"line","text":"기업 목록 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/General/AddMoneyGeneralPage.tsx","lang":"js","line_start":130,"line_end":130,"block_type":"line","text":"타입 변환","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/General/MoneyGeneralPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"data가 변경될 때 list 업데이트","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/General/MoneyGeneralPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"적립/적립회수 타입 라벨","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/General/MoneyGeneralPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"회원타입 라벨","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/General/MoneyGeneralPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"대상타입 라벨","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/History/MoneyHistoryPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"sagName으로 검색","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/History/MoneyHistoryPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"line","text":"기업명 드롭다운 옵션","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/History/MoneyHistoryPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"agcCorporateName으로 검색","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/History/MoneyHistoryPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"구분 타입 라벨","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/History/MoneyHistoryPage.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"회원타입 라벨","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/History/MoneyHistoryPage.tsx","lang":"js","line_start":112,"line_end":112,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 일반=파랑 | 기업=녹색","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/History/MoneyHistoryPage.tsx","lang":"js","line_start":131,"line_end":131,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 적립·충전·지급·환불반려=파랑 | 사용·소멸·지급회수·적립회수·차감·충전취소·환불신청·환불승인=빨강","hangul_chars":46,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/AddMoneyIssuePage.tsx","lang":"js","line_start":89,"line_end":89,"block_type":"line","text":"특정회원 커스텀 렌더링","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/DetailMemberPage.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"고객 노출 내용","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/DetailMemberPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"관리자 내부 사유","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/DetailMemberPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"유효기간 (일수)","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/DetailMemberPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"회원 정보 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/DetailMemberPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"유효기간 계산 (일수 -> 날짜)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/DetailMemberPage.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"회원 머니 적립/차감 API 호출","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MemberSelectModal.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"memId 기준으로 중복 제거","hangul_chars":8,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MemberSelectModal.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"초기 필터링: 이미 선택된 회원 제외","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MemberSelectModal.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"이미 선택된 회원 제외","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MemberSelectModal.tsx","lang":"js","line_start":114,"line_end":114,"block_type":"line","text":"새로 선택된 회원 수 (기존 선택 제외)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MemberSelectModal.tsx","lang":"js","line_start":130,"line_end":130,"block_type":"block","text":"검색 영역","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MemberSelectModal.tsx","lang":"js","line_start":161,"line_end":161,"block_type":"block","text":"회원 목록","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MoneyIssueHistoryPage.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"line","text":"회원 머니 내역 조회 (페이지네이션)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MoneyIssueHistoryPage.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"기본값 10으로 설정","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MoneyIssueHistoryPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"전체 데이터 조회 (요약 정보용 - 페이지네이션 없이)","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MoneyIssueHistoryPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"충분히 큰 값으로 전체 데이터 가져오기","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MoneyIssueHistoryPage.tsx","lang":"js","line_start":98,"line_end":98,"block_type":"line","text":"에러 시 첫 페이지 데이터로 보유 머니만 표시","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MoneyIssueHistoryPage.tsx","lang":"js","line_start":137,"line_end":137,"block_type":"block","text":"하단 내역 테이블","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MoneyIssuePage.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"일반회원만","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MoneyIssuePage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"양식 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MoneyIssuePage.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MoneyIssuePage.tsx","lang":"js","line_start":84,"line_end":84,"block_type":"jsdoc","text":"액셀 업로드","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Issue/MoneyIssuePage.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"jsdoc","text":"액셀 파일 선택 시 처리","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonMemberPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"천단위 쉼표 포맷 함수 (양수만 허용)","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonMemberPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"숫자만 추출 (마이너스 제외)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonMemberPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"천단위 쉼표 추가","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonMemberPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"쉼표 제거하여 숫자로 변환","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonMemberPage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"agcId가 없으면 기업머니관리 페이지로 이동","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonMemberPage.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"기업 정보 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonMemberPage.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"line","text":"숫자 입력 시 천단위 쉼표 포맷 적용","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonMemberPage.tsx","lang":"js","line_start":122,"line_end":122,"block_type":"line","text":"적용머니 쉼표 제거 후 숫자 변환 (회수 시 음수로 변환)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonMemberPage.tsx","lang":"js","line_start":141,"line_end":141,"block_type":"line","text":"유효기간 설정 시 설정기간 검증 (지급일 때만)","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonMemberPage.tsx","lang":"js","line_start":162,"line_end":162,"block_type":"line","text":"회수 시 유효기간 무시","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonMemberPage.tsx","lang":"js","line_start":198,"line_end":198,"block_type":"line","text":"특정회원 선택 완료","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonMemberPage.tsx","lang":"js","line_start":204,"line_end":204,"block_type":"line","text":"선택된 회원 제거","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonMemberPage.tsx","lang":"js","line_start":209,"line_end":209,"block_type":"line","text":"특정회원 커스텀 렌더링","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"포인트 내용 (고객에게 보여줄 지급명)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"포인트 사유 (내부용)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"지급 포인트 (양수: 적립, 음수: 적립회수)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"유효기간 (일수)","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"agcId가 없으면 기업머니관리 페이지로 이동","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"기업 정보 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":101,"line_end":101,"block_type":"line","text":"구분 필드 감시","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":106,"line_end":106,"block_type":"line","text":"대상구분 변경 시 선택된 회원 초기화","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":156,"line_end":156,"block_type":"line","text":"타입 변환","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":208,"line_end":208,"block_type":"line","text":"회원 선택 모달에서 선택 완료","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":214,"line_end":214,"block_type":"line","text":"선택된 회원 삭제","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":219,"line_end":219,"block_type":"line","text":"표시할 회원 수 (축소 시 5명까지)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":228,"line_end":228,"block_type":"block","text":"브레드크럼","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":242,"line_end":242,"block_type":"block","text":"상단: 기업 정보","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":261,"line_end":261,"block_type":"block","text":"대상구분","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":286,"line_end":286,"block_type":"block","text":"특정회원 선택 영역","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":420,"line_end":420,"block_type":"block","text":"적용머니","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":443,"line_end":443,"block_type":"block","text":"유효기간","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/AddMoneyIssueCommonPage.tsx","lang":"js","line_start":482,"line_end":482,"block_type":"block","text":"회원 선택 모달","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/DetailMoneyIssueCommonPage.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"고객 노출 내용","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/DetailMoneyIssueCommonPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"관리자 내부 사유","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/DetailMoneyIssueCommonPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"agcId가 없으면 기업머니관리 페이지로 이동","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/DetailMoneyIssueCommonPage.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"기업 정보 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/DetailMoneyIssueCommonPage.tsx","lang":"js","line_start":69,"line_end":69,"block_type":"line","text":"회원 정보 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/DetailMoneyIssueCommonPage.tsx","lang":"js","line_start":120,"line_end":120,"block_type":"line","text":"회원 머니 지급/회수 API 호출 (기업 머니 사용)","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonHistoryPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"회원 머니 내역 조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonHistoryPage.tsx","lang":"js","line_start":65,"line_end":65,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 적립·충전·지급=파랑 | 사용·소멸·지급회수·적립회수=빨강","hangul_chars":28,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"agcId가 없으면 기업머니관리 페이지로 이동","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":37,"line_end":37,"block_type":"line","text":"기업 정보 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"해당 기업의 회원만 조회","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"data가 변경될 때 list 업데이트","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":65,"line_end":65,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":74,"line_end":74,"block_type":"jsdoc","text":"회원 클릭 시 머니 지급 페이지 이동","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"jsdoc","text":"액셀 양식 다운로드","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":100,"line_end":100,"block_type":"jsdoc","text":"액셀 업로드","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":108,"line_end":108,"block_type":"jsdoc","text":"액셀 파일 선택 시 처리","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":137,"line_end":137,"block_type":"block","text":"상단: 기업 정보 - detail-list-box 스타일","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":183,"line_end":183,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 구독=파랑 | 해지=빨강 (API가 한글 라벨 반환)","hangul_chars":21,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/MoneyIssueCommonPage.tsx","lang":"js","line_start":198,"line_end":198,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 사용=파랑 | 중지=빨강 (API가 한글 라벨 반환)","hangul_chars":21,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModal.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"검색 필터","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModal.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"회원 목록 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModal.tsx","lang":"js","line_start":98,"line_end":98,"block_type":"line","text":"체크박스 토글","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModal.tsx","lang":"js","line_start":120,"line_end":120,"block_type":"line","text":"전체 선택/해제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModal.tsx","lang":"js","line_start":146,"line_end":146,"block_type":"line","text":"선택 완료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModal.tsx","lang":"js","line_start":154,"line_end":154,"block_type":"line","text":"새로 선택된 회원 수 (기존 선택 제외)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModal.tsx","lang":"js","line_start":170,"line_end":170,"block_type":"block","text":"검색 영역","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModal.tsx","lang":"js","line_start":206,"line_end":206,"block_type":"block","text":"회원 목록","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModal.tsx","lang":"js","line_start":299,"line_end":299,"block_type":"block","text":"페이지네이션","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModalForCommon.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"검색 필터","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModalForCommon.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"회원 목록 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModalForCommon.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"기업이 선택된 경우 해당 기업 회원만 조회","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModalForCommon.tsx","lang":"js","line_start":100,"line_end":100,"block_type":"line","text":"체크박스 토글","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModalForCommon.tsx","lang":"js","line_start":122,"line_end":122,"block_type":"line","text":"전체 선택/해제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModalForCommon.tsx","lang":"js","line_start":148,"line_end":148,"block_type":"line","text":"선택 완료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModalForCommon.tsx","lang":"js","line_start":156,"line_end":156,"block_type":"line","text":"선택된 회원 수","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModalForCommon.tsx","lang":"js","line_start":184,"line_end":184,"block_type":"block","text":"검색 영역","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModalForCommon.tsx","lang":"js","line_start":220,"line_end":220,"block_type":"block","text":"회원 목록","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueCommon/SelectMemberModalForCommon.tsx","lang":"js","line_start":305,"line_end":305,"block_type":"block","text":"페이지네이션","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/AddMoneyIssueMemberPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"천단위 쉼표 포맷 함수 (양수만 허용)","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/AddMoneyIssueMemberPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"숫자만 추출 (마이너스 제외)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/AddMoneyIssueMemberPage.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"천단위 쉼표 추가","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/AddMoneyIssueMemberPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"쉼표 제거하여 숫자로 변환","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/AddMoneyIssueMemberPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"line","text":"* 동명 기업(삼성화재 3개 등) 구분 위해 코드 병기","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/AddMoneyIssueMemberPage.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"특정회원 선택 시 검증","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/AddMoneyIssueMemberPage.tsx","lang":"js","line_start":102,"line_end":102,"block_type":"line","text":"적용머니 쉼표 제거 후 숫자 변환 (회수 시 음수로 변환)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/AddMoneyIssueMemberPage.tsx","lang":"js","line_start":114,"line_end":114,"block_type":"line","text":"유효기간 설정 시 설정기간 검증 (지급일 때만)","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/AddMoneyIssueMemberPage.tsx","lang":"js","line_start":132,"line_end":132,"block_type":"line","text":"API 호출을 위한 payload 변환 (회수 시 유효기간 무시)","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/AddMoneyIssueMemberPage.tsx","lang":"js","line_start":137,"line_end":137,"block_type":"line","text":"'general' 또는 'company' - 회원 타입 구분","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/AddMoneyIssueMemberPage.tsx","lang":"js","line_start":176,"line_end":176,"block_type":"line","text":"숫자 입력 시 천단위 쉼표 포맷 적용","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/AddMoneyIssueMemberPage.tsx","lang":"js","line_start":194,"line_end":194,"block_type":"line","text":"특정회원 커스텀 렌더링","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/AddMoneyIssueMemberPage.tsx","lang":"js","line_start":238,"line_end":238,"block_type":"block","text":"구분이 '일반'인 경우 - 회원머니 관리 스타일 모달","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/AddMoneyIssueMemberPage.tsx","lang":"js","line_start":247,"line_end":247,"block_type":"block","text":"구분이 '기업'인 경우 - 기업회원머니 관리 스타일 모달","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/DetailMoneyIssueMemberPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"상세 정보 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/DetailMoneyIssueMemberPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"회원 목록 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/DetailMoneyIssueMemberPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"data가 변경될 때 list 업데이트","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/DetailMoneyIssueMemberPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"대상타입 라벨","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/DetailMoneyIssueMemberPage.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"회원타입 라벨 (member.memType)","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/DetailMoneyIssueMemberPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"날짜 포맷: yyyy-MM-dd HH:mm (만료일 제외)","hangul_chars":9,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/DetailMoneyIssueMemberPage.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"만료일 포맷: yyyy-MM-dd","hangul_chars":5,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/DetailMoneyIssueMemberPage.tsx","lang":"js","line_start":85,"line_end":85,"block_type":"block","text":"상단: 머니 관리 정보 - spec: 대상구분, 머니명, 사유","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/DetailMoneyIssueMemberPage.tsx","lang":"js","line_start":103,"line_end":103,"block_type":"block","text":"하단: 적용 회원 목록","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/DetailMoneyIssueMemberPage.tsx","lang":"js","line_start":132,"line_end":132,"block_type":"line","text":"* 동명 기업(삼성화재 3개 등) 구분 위해 코드 병기","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"* 업로드 전 확인 모달 — 미리보기 결과 + 적용 대기 파일","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"data가 변경될 때 list 업데이트","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"jsdoc","text":"통합 양식 다운로드","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":65,"line_end":65,"block_type":"jsdoc","text":"통합 엑셀 업로드 버튼 클릭 — 파일 선택 (적용 전 미리보기 모달로 확인)","hangul_chars":27,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"jsdoc","text":"파일 선택 시: 적용 안 하고 먼저 미리보기(검증) → 확인 모달 표시","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"line","text":"확인 시 동일 파일로 실제 적용","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":84,"line_end":84,"block_type":"line","text":"모달 오픈","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":99,"line_end":99,"block_type":"jsdoc","text":"미리보기 취소","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"jsdoc","text":"미리보기 확인 → 실제 적립 적용","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":142,"line_end":142,"block_type":"line","text":"대상타입 라벨","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":152,"line_end":152,"block_type":"block","text":"통합 엑셀 업로드용 hidden input","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":161,"line_end":161,"block_type":"block","text":"적립 전 확인 모달 — 명단/금액 사람이 확인 후 적용","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":290,"line_end":290,"block_type":"line","text":"* 동명 기업(삼성화재 3개 등) 구분 위해 코드 병기","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":300,"line_end":300,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 전체회원=파랑 | 구독회원=녹색 | 특정회원=빨강","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/MoneyIssueMemberPage.tsx","lang":"js","line_start":353,"line_end":353,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 미설정=파랑 | 설정=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"서버에서 \"사용\" 또는 \"중지\" 문자열로 옴","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"검색 필터","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"날짜 검색 필터","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"기업 목록 조회 (agcId가 없을 때만)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"line","text":"회원 목록 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"line","text":"기업 필터","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":112,"line_end":112,"block_type":"line","text":"구독상태 필터","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":121,"line_end":121,"block_type":"line","text":"사용여부 필터","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":126,"line_end":126,"block_type":"line","text":"검색어 필터 - searchKey와 searchText를 함께 전달","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":132,"line_end":132,"block_type":"line","text":"날짜 필터","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":159,"line_end":159,"block_type":"line","text":"날짜 버튼 클릭","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":191,"line_end":191,"block_type":"line","text":"체크박스 토글","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":213,"line_end":213,"block_type":"line","text":"전체 선택/해제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":239,"line_end":239,"block_type":"line","text":"선택 완료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":290,"line_end":290,"block_type":"block","text":"검색 영역 - 회색 박스 디자인","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":293,"line_end":293,"block_type":"block","text":"날짜 검색","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":353,"line_end":353,"block_type":"block","text":"구독상태","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":370,"line_end":370,"block_type":"block","text":"사용여부 - 서버에서 0=탈퇴, 1=가입으로 받아서 반대로 처리하므로 1=사용, 0=중지","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":385,"line_end":385,"block_type":"block","text":"소속조직","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":403,"line_end":403,"block_type":"block","text":"검색조건 + 검색어","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":430,"line_end":430,"block_type":"block","text":"검색 버튼","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":445,"line_end":445,"block_type":"block","text":"회원 목록","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectCorpMemberModal.tsx","lang":"js","line_start":539,"line_end":539,"block_type":"block","text":"페이지네이션","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"일반회원관리 (FcPage)의 데이터 타입과 동일","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":64,"line_end":64,"block_type":"line","text":"검색 필터 - 일반회원관리와 동일 (백엔드 파라미터 형식에 맞춤)","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"날짜 검색 필터 (백엔드 파라미터: dateType, startDate, endDate)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"line","text":"영업대리점 목록 조회","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":86,"line_end":86,"block_type":"line","text":"회원 목록 조회 - /admin/fc API 사용","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":95,"line_end":95,"block_type":"line","text":"영업대리점 필터","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":100,"line_end":100,"block_type":"line","text":"탈퇴여부 필터","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"line","text":"추천인기입여부 필터","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":110,"line_end":110,"block_type":"line","text":"검색어 필터 (백엔드 형식: searchKey, searchText)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":116,"line_end":116,"block_type":"line","text":"날짜 필터 (백엔드 형식: dateType, startDate, endDate)","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":143,"line_end":143,"block_type":"line","text":"날짜 버튼 클릭","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":189,"line_end":189,"block_type":"line","text":"체크박스 토글","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":211,"line_end":211,"block_type":"line","text":"전체 선택/해제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":237,"line_end":237,"block_type":"line","text":"선택 완료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":246,"line_end":246,"block_type":"line","text":"구독상태 라벨 변환 (무료체험 포함)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":258,"line_end":258,"block_type":"line","text":"무료체험 확인 (trial.ordExpiredAt이 현재 시간 이후면 무료체험)","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":279,"line_end":279,"block_type":"block","text":"검색 영역 - 회색 박스 디자인","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":282,"line_end":282,"block_type":"block","text":"날짜 검색","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":342,"line_end":342,"block_type":"block","text":"영업대리점명","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":361,"line_end":361,"block_type":"block","text":"탈퇴여부","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":376,"line_end":376,"block_type":"block","text":"추천인기입여부","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":391,"line_end":391,"block_type":"block","text":"검색조건 + 검색어","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":423,"line_end":423,"block_type":"block","text":"검색 버튼","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":438,"line_end":438,"block_type":"block","text":"회원 목록 - 일반회원관리(FcPage)와 동일한 컬럼","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/IssueMember/SelectGeneralMemberModal.tsx","lang":"js","line_start":549,"line_end":549,"block_type":"block","text":"페이지네이션","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"결제건별 이용내역 타입 정의","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"충전취소 내역 타입 정의","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"환불 신청 내역 타입 정의","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"이 결제에서 차감된 금액 (비율 적용된 금액)","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"전체 환불 신청 금액","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"line","text":"간접 환불 (환불반려 지갑에서 차감된 경우)","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"추가 필드 설정 - payment 객체에서 직접 접근 (flat 구조)","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"결제상태 변환","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"line","text":"결제건별 이용내역 조회 (FIFO 추적)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":100,"line_end":100,"block_type":"line","text":"회원타입 라벨","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":120,"line_end":120,"block_type":"line","text":"레거시 상태값 지원","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":155,"line_end":155,"block_type":"line","text":"결제취소 가능 여부: 결제상태가 결제완료인 경우만 (기간 제한 없음)","hangul_chars":27,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":168,"line_end":168,"block_type":"line","text":"사용내역 유무에 따른 알럿 메시지","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":193,"line_end":193,"block_type":"line","text":"페이지네이션","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":197,"line_end":197,"block_type":"line","text":"환불 상태 라벨","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":214,"line_end":214,"block_type":"line","text":"사용 내역 + 충전취소 내역 + 환불 신청 내역 합친 리스트 (날짜 내림차순)","hangul_chars":27,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":226,"line_end":226,"block_type":"line","text":"환불 내역: REJECTED인 경우 신청/반려 두 건으로 분리","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":230,"line_end":230,"block_type":"line","text":"1. 환불 신청 내역 (신청 시점, 마이너스)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":237,"line_end":237,"block_type":"line","text":"2. 환불 반려 내역 (반려 시점, 플러스)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":245,"line_end":245,"block_type":"line","text":"PENDING, COMPLETED, CANCELLED 등은 그대로","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":270,"line_end":270,"block_type":"line","text":"현재 페이지에 해당하는 데이터","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":497,"line_end":497,"block_type":"line","text":"구분 라벨 결정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":524,"line_end":524,"block_type":"line","text":"이 결제에서 차감된 금액과 전체 환불 금액이 다른 경우 표시","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":529,"line_end":529,"block_type":"line","text":"subType에 따라 다르게 표시","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":531,"line_end":531,"block_type":"line","text":"환불 신청 내역 (반려된 건의 신청 시점)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentDetailPage.tsx","lang":"js","line_start":537,"line_end":537,"block_type":"line","text":"환불 반려 내역 (반려 시점, 잔액 복구)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"sagName으로 검색","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"agcCorporateName으로 검색","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentPage.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"회원타입 라벨","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentPage.tsx","lang":"js","line_start":81,"line_end":81,"block_type":"line","text":"결제취소 모달 상태","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentPage.tsx","lang":"js","line_start":100,"line_end":100,"block_type":"line","text":"결제취소 가능 여부","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentPage.tsx","lang":"js","line_start":143,"line_end":144,"block_type":"line","text":"관리자는 모든 머니를 사용했더라도 결제취소 가능\neffectiveBalance === 0 체크 제거","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentPage.tsx","lang":"js","line_start":147,"line_end":147,"block_type":"line","text":"사용내역이 있거나 일부 사용한 경우 모달 표시","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentPage.tsx","lang":"js","line_start":233,"line_end":233,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 기업=녹색 | 일반=파랑","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentPage.tsx","lang":"js","line_start":270,"line_end":270,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 결제완료=파랑 | 결제취소=빨강 | 부분취소=주황","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Payment/MoneyPaymentPage.tsx","lang":"js","line_start":429,"line_end":429,"block_type":"block","text":"결제취소 선택 모달","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Refund/MoneyRefundDetailPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"setupDetailData로 기본 필드 설정","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Refund/MoneyRefundDetailPage.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"추가 필드 설정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Refund/MoneyRefundDetailPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"현재 머니 계산","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Refund/MoneyRefundDetailPage.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"환불 정보 설정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Refund/MoneyRefundDetailPage.tsx","lang":"js","line_start":136,"line_end":136,"block_type":"line","text":"데이터 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Refund/MoneyRefundDetailPage.tsx","lang":"js","line_start":154,"line_end":154,"block_type":"line","text":"회원타입 라벨","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Refund/MoneyRefundDetailPage.tsx","lang":"js","line_start":348,"line_end":348,"block_type":"block","text":"관리자 메모 모달","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Refund/MoneyRefundPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"sagName으로 검색","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Refund/MoneyRefundPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"agcCorporateName으로 검색","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Refund/MoneyRefundPage.tsx","lang":"js","line_start":65,"line_end":65,"block_type":"line","text":"회원타입 라벨","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Refund/MoneyRefundPage.tsx","lang":"js","line_start":101,"line_end":101,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 일반=파랑 | 기업=녹색","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Money/Refund/MoneyRefundPage.tsx","lang":"js","line_start":153,"line_end":153,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 승인완료=파랑 | 거부됨=빨강 | 대기중=색 미지정","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/AddCorpSubscriptionProductPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/AddCorpSubscriptionProductPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/AddCorpSubscriptionProductPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/AddCorpSubscriptionProductPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/AddCorpSubscriptionProductPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"이미지 아직 미사용","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/AddCorpSubscriptionProductPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"구독상품 고정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/AddCorpSubscriptionProductPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/AddCorpSubscriptionProductPage.tsx","lang":"js","line_start":95,"line_end":107,"block_type":"line","text":"{\n  label: \"상품설명\",\n  name: \"prdContent\",\n  type: \"text\",\n},\n{\n  label: \"상품이미지\",\n  name: \"prdImg\",\n  type: \"text\",\n  params: {\n    required: true,\n  },\n},","hangul_chars":9,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/AddCorpSubscriptionProductPage.tsx","lang":"js","line_start":116,"line_end":123,"block_type":"line","text":"{\n  label: \"상품소비자가격\",\n  name: \"prdConsumerPrice\",\n  type: \"number\",\n  params: {\n    required: true,\n  },\n},","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/AddCorpSubscriptionProductPage.tsx","lang":"js","line_start":130,"line_end":130,"block_type":"line","text":"* 무상 제공용 0원 상품 허용","hangul_chars":10,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/AddCorpSubscriptionProductPage.tsx","lang":"js","line_start":134,"line_end":168,"block_type":"line","text":"{\n  label: \"상품정렬(숫자가 높은 것이 상위)\",\n  name: \"prdSort\",\n  type: \"number\",\n  params: {\n    required: true,\n  },\n},\n{\n  label: \"상품추천여부\",\n  name: \"prdRecommend\",\n  type: \"checkbox\",\n  options: [\n    {\n      label: \"추천\",\n      value: 1,\n    },\n  ],\n},\n{\n  label: \"상품노출여부\",\n  name: \"prdShow\",\n  type: \"checkbox\",\n  options: [\n    {\n      label: \"노출\",\n      value: 1,\n    },\n  ],\n},\n{\n  label: \"유의사항\",\n  name: \"prdCaution\",\n  type: \"text\",\n},","hangul_chars":33,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":37,"line_end":37,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/CorpSubscriptionProductPage.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"이미지 아직 미사용","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"구독상품 고정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":72,"line_end":72,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":89,"line_end":89,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":118,"line_end":130,"block_type":"line","text":"{\n  label: \"상품설명\",\n  name: \"prdContent\",\n  type: \"text\",\n},\n{\n  label: \"상품이미지\",\n  name: \"prdImg\",\n  type: \"text\",\n  params: {\n    required: true,\n  },\n},","hangul_chars":9,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":139,"line_end":146,"block_type":"line","text":"{\n  label: \"상품소비자가격\",\n  name: \"prdConsumerPrice\",\n  type: \"number\",\n  params: {\n    required: true,\n  },\n},","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":153,"line_end":153,"block_type":"line","text":"* 무상 제공용 0원 상품 허용","hangul_chars":10,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/CorpSubscription/DetailCorpSubscriptionProductPage.tsx","lang":"js","line_start":157,"line_end":199,"block_type":"line","text":"{\n  label: \"상품정렬(숫자가 높은 것이 상위)\",\n  name: \"prdSort\",\n  type: \"number\",\n  params: {\n    required: true,\n  },\n},\n{\n  label: \"상품추천여부\",\n  name: \"prdRecommend\",\n  type: \"radio\",\n  options: [\n    {\n      label: \"추천\",\n      value: \"추천\",\n    },\n    {\n      label: \"미추천\",\n      value: \"미추천\",\n    },\n  ],\n},\n{\n  label: \"상품노출여부\",\n  name: \"prdShow\",\n  type: \"radio\",\n  options: [\n    {\n      label: \"노출\",\n      value: \"노출\",\n    },\n    {\n      label: \"비노출\",\n      value: \"비노출\",\n    },\n  ],\n},\n{\n  label: \"유의사항\",\n  name: \"prdCaution\",\n  type: \"text\",\n},","hangul_chars":49,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/AddSubscriptionProductPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/AddSubscriptionProductPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"매월 지급 포인트 기본값: 0","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/AddSubscriptionProductPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/AddSubscriptionProductPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/AddSubscriptionProductPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/AddSubscriptionProductPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"이미지 아직 미사용","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/AddSubscriptionProductPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"구독상품 고정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/AddSubscriptionProductPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/AddSubscriptionProductPage.tsx","lang":"js","line_start":87,"line_end":99,"block_type":"line","text":"{\n  label: \"상품설명\",\n  name: \"prdContent\",\n  type: \"text\",\n},\n{\n  label: \"상품이미지\",\n  name: \"prdImg\",\n  type: \"text\",\n  params: {\n    required: true,\n  },\n},","hangul_chars":9,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/AddSubscriptionProductPage.tsx","lang":"js","line_start":108,"line_end":115,"block_type":"line","text":"{\n  label: \"상품소비자가격\",\n  name: \"prdConsumerPrice\",\n  type: \"number\",\n  params: {\n    required: true,\n  },\n},","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/AddSubscriptionProductPage.tsx","lang":"js","line_start":156,"line_end":169,"block_type":"line","text":"{\n  label: \"매월 지급 포인트\",\n  name: \"prdMonthlyPoint\",\n  type: \"number\",\n  params: {\n    min: 0,\n  },\n  infoMsg: \"구독 결제 시 매월 자동으로 지급될 포인트를 설정합니다.\",\n},\n{\n  label: \"유의사항\",\n  name: \"prdCaution\",\n  type: \"text\",\n},","hangul_chars":34,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"이미지 아직 미사용","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"구독상품 고정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":69,"line_end":69,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":74,"line_end":74,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":91,"line_end":91,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":120,"line_end":132,"block_type":"line","text":"{\n  label: \"상품설명\",\n  name: \"prdContent\",\n  type: \"text\",\n},\n{\n  label: \"상품이미지\",\n  name: \"prdImg\",\n  type: \"text\",\n  params: {\n    required: true,\n  },\n},","hangul_chars":9,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":141,"line_end":148,"block_type":"line","text":"{\n  label: \"상품소비자가격\",\n  name: \"prdConsumerPrice\",\n  type: \"number\",\n  params: {\n    required: true,\n  },\n},","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/DetailSubscriptionProductPage.tsx","lang":"js","line_start":197,"line_end":210,"block_type":"line","text":"{\n  label: \"매월 지급 포인트\",\n  name: \"prdMonthlyPoint\",\n  type: \"number\",\n  params: {\n    min: 0,\n  },\n  infoMsg: \"구독 결제 시 매월 자동으로 지급될 포인트를 설정합니다.\",\n},\n{\n  label: \"유의사항\",\n  name: \"prdCaution\",\n  type: \"text\",\n},","hangul_chars":34,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":104,"line_end":108,"block_type":"line","text":"{\n  key: \"prdConsumerPrice\",\n  label: \"상품소비자가격\",\n  usePrefix: false,\n},","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":114,"line_end":118,"block_type":"line","text":"{\n  key: \"prdMonthlyPoint\",\n  label: \"매월 지급 포인트\",\n  usePrefix: false,\n},","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":123,"line_end":123,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 추천=파랑 | 미추천=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Product/Subscription/SubscriptionProductPage.tsx","lang":"js","line_start":134,"line_end":134,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 노출=파랑 | 비노출=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Referral/Benefit/ReferralBenefitPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"line","text":"초기 데이터 로드","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/AddSalesAgencyPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/AddSalesAgencyPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/AddSalesAgencyPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/AddSalesAgencyPage.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":63,"line_end":63,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":65,"line_end":65,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":81,"line_end":81,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgency/SalesAgencyPage.tsx","lang":"js","line_start":115,"line_end":115,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 발송=blue | 미발송=red — 목록 API가 한글 라벨로 변환해 반환(translateReceive)","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/AddSalesAgencyChannelPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/AddSalesAgencyChannelPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/AddSalesAgencyChannelPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/AddSalesAgencyChannelPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":37,"line_end":37,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/AddSearchCodesPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/AddSearchCodesPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/AddSearchCodesPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/AddSearchCodesPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/AddSearchCodesPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/DetailSearchCodesPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/DetailSearchCodesPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/DetailSearchCodesPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/DetailSearchCodesPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/DetailSearchCodesPage.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/DetailSearchCodesPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/DetailSearchCodesPage.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/DetailSearchCodesPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/DetailSearchCodesPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/DetailSearchCodesPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":87,"line_end":87,"block_type":"jsdoc","text":"업로드폼 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Search/Codes/SearchCodesPage.tsx","lang":"js","line_start":102,"line_end":102,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AddAdminPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AddAdminPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AddAdminPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AddAdminPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AddAdminPage.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AdminPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AdminPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AdminPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AdminPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AdminPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AdminPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AdminPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AdminPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AdminPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AdminPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AdminPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AdminPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AdminPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/AdminPage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/DetailAdminPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/DetailAdminPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/DetailAdminPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/DetailAdminPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/DetailAdminPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/DetailAdminPage.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/DetailAdminPage.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/DetailAdminPage.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/DetailAdminPage.tsx","lang":"js","line_start":63,"line_end":63,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Admin/DetailAdminPage.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AddAuthorityPage.tsx","lang":"js","line_start":12,"line_end":14,"block_type":"jsdoc","text":"API 메뉴 타입을 사이드바 MenuItem 타입으로 변환","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AddAuthorityPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AddAuthorityPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"전체 메뉴 목록 조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AddAuthorityPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AddAuthorityPage.tsx","lang":"js","line_start":64,"line_end":64,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AddAuthorityPage.tsx","lang":"js","line_start":65,"line_end":65,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AddAuthorityPage.tsx","lang":"js","line_start":81,"line_end":81,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":37,"line_end":37,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/AuthorityPage.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/DetailAuthorityPage.tsx","lang":"js","line_start":13,"line_end":15,"block_type":"jsdoc","text":"API 메뉴 타입을 사이드바 MenuItem 타입으로 변환","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/DetailAuthorityPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/DetailAuthorityPage.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"전체 메뉴 목록 조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/DetailAuthorityPage.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/DetailAuthorityPage.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/DetailAuthorityPage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/DetailAuthorityPage.tsx","lang":"js","line_start":87,"line_end":87,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/DetailAuthorityPage.tsx","lang":"js","line_start":91,"line_end":91,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/DetailAuthorityPage.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/DetailAuthorityPage.tsx","lang":"js","line_start":93,"line_end":93,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Security/Authority/DetailAuthorityPage.tsx","lang":"js","line_start":111,"line_end":111,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AddAdvertisementPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AddAdvertisementPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AddAdvertisementPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AddAdvertisementPage.tsx","lang":"js","line_start":64,"line_end":64,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":123,"line_end":123,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 랜덤=파랑 | 고정=빨강","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":139,"line_end":139,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 노출=파랑 | 비노출=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":150,"line_end":150,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 연결=파랑 | 미연결=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementPage.tsx","lang":"js","line_start":250,"line_end":255,"block_type":"line","text":"{\n  label: \"노출시작종료일\",\n  value: \"advertisement.adsOpenedAt\",\n  usePrefix: false,\n  useOnlyLastKey: true,\n},","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementStatistics.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"전월/전일 대비 노출수 비율","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementStatistics.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"전월/전일 대비 클릭수 비율","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementStatistics.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"전월/전일 대비 재생수 비율","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementStatistics.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"조건 변경될 때마다 데이터 다시 가져오기","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementStatistics.tsx","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"차트 데이터 생성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementStatistics.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"line","text":"테이블 데이터 생성","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementStatistics.tsx","lang":"js","line_start":116,"line_end":116,"block_type":"line","text":"합계 계산","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/AdvertisementStatistics.tsx","lang":"js","line_start":124,"line_end":124,"block_type":"line","text":"평균 계산","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/DetailAdvertisementPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/DetailAdvertisementPage.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/DetailAdvertisementPage.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/DetailAdvertisementPage.tsx","lang":"js","line_start":109,"line_end":109,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/DetailAdvertisementPage.tsx","lang":"js","line_start":114,"line_end":114,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/DetailAdvertisementPage.tsx","lang":"js","line_start":116,"line_end":116,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/DetailAdvertisementPage.tsx","lang":"js","line_start":117,"line_end":117,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/DetailAdvertisementPage.tsx","lang":"js","line_start":118,"line_end":118,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Advertisement/DetailAdvertisementPage.tsx","lang":"js","line_start":147,"line_end":147,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/AddBannerPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/AddBannerPage.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/AddBannerPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/AddBannerPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/AddBannerPage.tsx","lang":"js","line_start":81,"line_end":81,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/AddBannerPage.tsx","lang":"js","line_start":100,"line_end":100,"block_type":"line","text":"{ label: \"청구서 하단\", value: \"하단\" },","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":102,"line_end":102,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 노출=파랑 | 비노출=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/BannerPage.tsx","lang":"js","line_start":113,"line_end":113,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 연결=파랑 | 미연결=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/DetailBannerPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/DetailBannerPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/DetailBannerPage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/DetailBannerPage.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/DetailBannerPage.tsx","lang":"js","line_start":85,"line_end":85,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/DetailBannerPage.tsx","lang":"js","line_start":90,"line_end":90,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/DetailBannerPage.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/DetailBannerPage.tsx","lang":"js","line_start":93,"line_end":93,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/DetailBannerPage.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/DetailBannerPage.tsx","lang":"js","line_start":118,"line_end":118,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Banner/DetailBannerPage.tsx","lang":"js","line_start":139,"line_end":139,"block_type":"line","text":"{ label: \"청구서 하단\", value: \"하단\" },","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/AddCriteriaPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/AddCriteriaPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/AddCriteriaPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/AddCriteriaPage.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/AddCriteriaPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/CriteriaPage.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 노출=파랑 | 비노출=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/DetailCriteriaPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/DetailCriteriaPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/DetailCriteriaPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/DetailCriteriaPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/DetailCriteriaPage.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/DetailCriteriaPage.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/DetailCriteriaPage.tsx","lang":"js","line_start":82,"line_end":82,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/DetailCriteriaPage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/DetailCriteriaPage.tsx","lang":"js","line_start":84,"line_end":84,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/DetailCriteriaPage.tsx","lang":"js","line_start":91,"line_end":91,"block_type":"line","text":"파일 임의 setup","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/DetailCriteriaPage.tsx","lang":"js","line_start":93,"line_end":93,"block_type":"line","text":"이미지 변환 및 설정","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Criteria/DetailCriteriaPage.tsx","lang":"js","line_start":114,"line_end":114,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/InstitutionBlock/DetailInstitutionBlockPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"기관명(수정 불가)","hangul_chars":7,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/InstitutionBlock/DetailInstitutionBlockPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"\"사용중지\" | \"정상\"","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/InstitutionBlock/DetailInstitutionBlockPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"\"텍스트\" | \"이미지\"","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/InstitutionBlock/DetailInstitutionBlockPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"기존 S3 키(string) 또는 신규 FileList","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/InstitutionBlock/DetailInstitutionBlockPage.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"기관 사용중지 설정 상세/수정 (task-11)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/InstitutionBlock/DetailInstitutionBlockPage.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/InstitutionBlock/DetailInstitutionBlockPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"신규 업로드면 BE가 파일로 교체하므로 키 미전달, 아니면 기존 키 유지","hangul_chars":27,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/InstitutionBlock/DetailInstitutionBlockPage.tsx","lang":"js","line_start":91,"line_end":91,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/InstitutionBlock/InstitutionBlockPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"jsdoc","text":"기관 API 일시사용중지 설정 (task-11) — HIRA/NTS 2건 고정","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/InstitutionBlock/InstitutionBlockPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/InstitutionBlock/InstitutionBlockPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/InstitutionBlock/InstitutionBlockPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"상세(수정) 페이지 이동","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/InstitutionBlock/InstitutionBlockPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 정상=파랑 | 사용중지=빨강","hangul_chars":16,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/AddPopupPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/AddPopupPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/AddPopupPage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/AddPopupPage.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/AddPopupPage.tsx","lang":"js","line_start":86,"line_end":86,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/AddPopupPage.tsx","lang":"js","line_start":99,"line_end":110,"block_type":"line","text":"{\n  name: \"popupData.popType\",\n  label: \"타입\",\n  type: \"select\",\n  options: [\n    { label: \"텍스트\", value: \"POP001\" },\n    { label: \"이미지\", value: \"POP002\" },\n  ],\n  params: {\n    required: true,\n  },\n},","hangul_chars":8,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/AddPopupPage.tsx","lang":"js","line_start":188,"line_end":197,"block_type":"line","text":"{\n  name: \"popupData.popTitle\",\n  label: \"팝업제목\",\n  type: \"text\",\n},\n{\n  name: \"editor\",\n  label: \"텍스트\",\n  type: \"editor\",\n},","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/DetailPopupPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/DetailPopupPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/DetailPopupPage.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/DetailPopupPage.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/DetailPopupPage.tsx","lang":"js","line_start":87,"line_end":87,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/DetailPopupPage.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/DetailPopupPage.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/DetailPopupPage.tsx","lang":"js","line_start":95,"line_end":95,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/DetailPopupPage.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/DetailPopupPage.tsx","lang":"js","line_start":117,"line_end":117,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/DetailPopupPage.tsx","lang":"js","line_start":132,"line_end":143,"block_type":"line","text":"{\n  name: \"popType\",\n  label: \"타입\",\n  type: \"select\",\n  options: [\n    { label: \"텍스트\", value: \"텍스트\" },\n    { label: \"이미지\", value: \"이미지\" },\n  ],\n  params: {\n    required: true,\n  },\n},","hangul_chars":14,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/DetailPopupPage.tsx","lang":"js","line_start":239,"line_end":243,"block_type":"line","text":"{\n  name: \"popTitle\",\n  label: \"팝업제목\",\n  type: \"text\",\n},","hangul_chars":4,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":93,"line_end":97,"block_type":"line","text":"{\n  key: \"popTitle\",\n  label: \"팝업제목\",\n  usePrefix: false,\n},","hangul_chars":4,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 노출=파랑 | 비노출=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":118,"line_end":118,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 연결=파랑 | 미연결=빨강 (텍스트 팝업은 기존과 동일하게 \"-\" 표기)","hangul_chars":30,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":175,"line_end":194,"block_type":"line","text":"{\n  label: \"타입\",\n  name: \"popType\",\n  options: [\n    {\n      label: \"전체\",\n      value: \"\",\n    },\n    {\n      label: \"텍스트\",\n      value: \"POP001\",\n    },\n    {\n      label: \"이미지\",\n      value: \"POP002\",\n    },\n  ],\n  usePrefix: false,\n  useOnlyLastKey: false,\n},","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Popup/PopupPage.tsx","lang":"js","line_start":244,"line_end":249,"block_type":"line","text":"{\n  value: \"popTitle\",\n  label: \"팝업제목\",\n  usePrefix: false,\n  useOnlyLastKey: false,\n},","hangul_chars":4,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/AddPushPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"기업회원 발송 시 특정 기업 agcId 쉼표 구분","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/AddPushPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"예약 발송 시간","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/AddPushPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"알람 클릭 시 이동할 URL","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/AddPushPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"에디터 상세 내용","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/AddPushPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"상세내용 또는 URL","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/AddPushPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"기업회원 발송 시 특정 기업 선택용","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/AddPushPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"* 동일 기업명이 여러 건 있어 코드로 구분 — 기업명(코드)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/AddPushPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"line","text":"기업회원이 아닌 대상으로 바꾸면 선택 초기화","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/AddPushPage.tsx","lang":"js","line_start":75,"line_end":75,"block_type":"line","text":"예약 발송 선택 시 발송 시간 필수","hangul_chars":13,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/AddPushPage.tsx","lang":"js","line_start":113,"line_end":113,"block_type":"line","text":"에디터 설정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/DetailPushPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"에디터 상세 내용","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/DetailPushPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"* 기업회원 발송 시 선택 기업 — 수정 화면에서 누락되면 NULL로 덮어써 전체발송되던 버그(push 13) 방지.","hangul_chars":35,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/DetailPushPage.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"line","text":"* 동일 기업명이 여러 건 있어 코드로 구분 — 기업명(코드)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/DetailPushPage.tsx","lang":"js","line_start":91,"line_end":91,"block_type":"line","text":"* 기존/현재 선택 기업을 반드시 함께 전송 — 안 보내면 backend가 NULL로 덮어써 전체발송됨.","hangul_chars":30,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/DetailPushPage.tsx","lang":"js","line_start":114,"line_end":114,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/DetailPushPage.tsx","lang":"js","line_start":124,"line_end":124,"block_type":"line","text":"* 기존 선택 기업 복원 (쉼표구분 agcId). 없으면 빈 배열=전체. 수정 시 이 값을 다시 보내 누락 방지.","hangul_chars":34,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/DetailPushPage.tsx","lang":"js","line_start":136,"line_end":136,"block_type":"line","text":"에디터에 상세 내용 설정","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/DetailPushPage.tsx","lang":"js","line_start":139,"line_end":139,"block_type":"line","text":"초기 contentType 설정","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/DetailPushPage.tsx","lang":"js","line_start":157,"line_end":157,"block_type":"line","text":"대상 타입 변환","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/DetailPushPage.tsx","lang":"js","line_start":172,"line_end":172,"block_type":"line","text":"발송 상태 변환","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/DetailPushPage.tsx","lang":"js","line_start":189,"line_end":189,"block_type":"line","text":"발송 완료 또는 실패 시 수정 불가","hangul_chars":13,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/DetailPushPage.tsx","lang":"js","line_start":192,"line_end":192,"block_type":"line","text":"에디터 설정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/DetailPushPage.tsx","lang":"js","line_start":227,"line_end":227,"block_type":"line","text":"날짜 포맷팅 함수","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"대상 타입 (ALL: 전체, mem001: 일반회원, mem002: 기업회원)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"발송 상태 (PENDING: 대기, SENT: 발송완료, FAILED: 발송실패)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"발송 일시","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"동작방식 (link: 링크, detail: 상세)","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"line","text":"파라미터 정규화","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":37,"line_end":37,"block_type":"line","text":"pshTargetType을 소문자로 변환 (ALL -> all)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":72,"line_end":72,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":86,"line_end":86,"block_type":"line","text":"발송 완료된 건이 포함되어 있는지 확인","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":114,"line_end":114,"block_type":"jsdoc","text":"푸시 발송 버튼","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":134,"line_end":134,"block_type":"jsdoc","text":"푸시 발송 취소 버튼","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":154,"line_end":154,"block_type":"line","text":"대상 타입 변환 함수","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":177,"line_end":177,"block_type":"line","text":"예약타입 발송방식 변환 함수","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":190,"line_end":190,"block_type":"line","text":"발송 상태 변환 함수","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":207,"line_end":207,"block_type":"line","text":"동작방식 변환 함수","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":220,"line_end":220,"block_type":"line","text":"목록 데이터 변환","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":274,"line_end":274,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 전체회원=기본 | 일반회원=파랑 | 기업회원=녹색","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":285,"line_end":285,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 즉시발송(기획서 표기: 발송완료)=파랑 | 예약발송=녹색","hangul_chars":27,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/PushPage.tsx","lang":"js","line_start":296,"line_end":296,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 대기=검정 | 발송완료=파랑 | 발송실패=주황 | 발송취소=빨강","hangul_chars":28,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/UserSelectModal.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"회원 목록 조회","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/UserSelectModal.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"백엔드 응답 매핑","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/UserSelectModal.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"member와 user 객체에서 데이터 추출","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/UserSelectModal.tsx","lang":"js","line_start":42,"line_end":43,"block_type":"line","text":"* ★보안(클라 AES키 제거): 서버가 회원 PII를 이미 FN_DECRYPT(평문) 또는 maskString(마스킹)해서\n*   보내므로 클라 복호화는 불필요(키 노출 무의미했음). 서버 값을 그대로 사용.","hangul_chars":54,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/UserSelectModal.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"usrId를 id로 사용 (한 회원이 여러 피보험자를 가질 수 있음)","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/UserSelectModal.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"usrId 기준으로 중복 제거 (혹시 같은 user가 중복으로 올 경우 대비)","hangul_chars":22,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/UserSelectModal.tsx","lang":"js","line_start":81,"line_end":81,"block_type":"line","text":"전체 선택/해제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/UserSelectModal.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"개별 선택/해제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/UserSelectModal.tsx","lang":"js","line_start":101,"line_end":101,"block_type":"line","text":"선택된 회원 목록","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/UserSelectModal.tsx","lang":"js","line_start":104,"line_end":104,"block_type":"line","text":"미선택 회원 목록 (검색 필터 적용)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/UserSelectModal.tsx","lang":"js","line_start":109,"line_end":109,"block_type":"line","text":"전체 선택 체크 상태","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/UserSelectModal.tsx","lang":"js","line_start":134,"line_end":134,"block_type":"block","text":"왼쪽: 전체 회원 목록","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/Push/UserSelectModal.tsx","lang":"js","line_start":236,"line_end":236,"block_type":"block","text":"오른쪽: 선택된 회원 목록","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/DetailTreatProviderPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"수정 불가","hangul_chars":4,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/DetailTreatProviderPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"\"사용\" | \"중지\"","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/DetailTreatProviderPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"\"사용\" | \"미사용\" — 분당 rate-limit(타임)","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/DetailTreatProviderPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"수집 분할 횟수 (1=분할없음, 현재 coocon·하이픈)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/DetailTreatProviderPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"벤더 장애 통보 웹훅 URL (빈 값=미발송)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/DetailTreatProviderPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"jsdoc","text":"진료 공급자 설정 수정 — 단가/한도/사용여부. 변경 시 ~15초 내 라우팅 반영(서버 캐시)","hangul_chars":31,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/DetailTreatProviderPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"빈 문자열=미발송(삭제)","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/DetailTreatProviderPage.tsx","lang":"js","line_start":74,"line_end":74,"block_type":"jsdoc","text":"상세데이터 (목록에서 key 매칭)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.css","lang":"css","line_start":82,"line_end":82,"block_type":"block","text":"라우팅 순서 — 드래그 정렬","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.css","lang":"css","line_start":247,"line_end":247,"block_type":"block","text":"사용 상태 뱃지 + 액션 버튼","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.css","lang":"css","line_start":317,"line_end":317,"block_type":"block","text":"모니터링 알림 웹훅","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.css","lang":"css","line_start":411,"line_end":411,"block_type":"block","text":"공급자 테이블","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.css","lang":"css","line_start":504,"line_end":504,"block_type":"block","text":"── 모바일: 테이블 → 세로 카드 + 터치 타겟 확대 ──","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.css","lang":"css","line_start":587,"line_end":587,"block_type":"block","text":"웹훅 · 체크박스 모바일","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"슬롯 = 동시에 처리 가능한 건수 (분당한도 / 플로우비용)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"표시 순서: 중지(0)는 맨 아래, 그 외 tprSort 오름차순","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"드래그 가능한 공급자 행 (중지는 드래그 비활성·하단 고정)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.tsx","lang":"js","line_start":155,"line_end":155,"block_type":"jsdoc","text":"진료 스크래핑 공급자 설정 — 라우팅 순서·슬롯·사용 상태 + 알림 웹훅","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.tsx","lang":"js","line_start":171,"line_end":171,"block_type":"jsdoc","text":"진행건(inflight) — 모니터 overview에서 15초 폴링 (중지예약 카운트다운/자동중지)","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.tsx","lang":"js","line_start":192,"line_end":192,"block_type":"jsdoc","text":"중지예약(2) + 진행 0 → 자동으로 완전중지(0) 전환 (drain 완료)","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.tsx","lang":"js","line_start":217,"line_end":217,"block_type":"jsdoc","text":"드래그 순서변경 — 비중지 공급자에 tprSort 0..n 재할당해 즉시 저장","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.tsx","lang":"js","line_start":236,"line_end":236,"block_type":"line","text":"* 라우팅 순서는 과금·실호출에 직결 — 바로 저장하지 않고 새 순서를 보여주며 확인받는다.","hangul_chars":35,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.tsx","lang":"js","line_start":246,"line_end":246,"block_type":"line","text":"* 취소: 화면 원위치 (저장 안 함)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.tsx","lang":"js","line_start":267,"line_end":267,"block_type":"jsdoc","text":"상태 변경 (사용 1 / 중지예약 2 / 중지 0)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.tsx","lang":"js","line_start":300,"line_end":300,"block_type":"jsdoc","text":"모니터링 알림 웹훅 (URL + 발송 종류)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Site/TreatProvider/TreatProviderPage.tsx","lang":"js","line_start":330,"line_end":330,"block_type":"jsdoc","text":"자동차보험 수집 전체 ON/OFF (전 벤더 공통 전역설정)","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"분석완료 비율","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":37,"line_end":37,"block_type":"line","text":"분석실패 비율","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"인증실패 비율","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"line","text":"분석실패 비율","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"그 외 비율","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"분석완료 건 수","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"분석실패 건 수","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"분석완료 비용","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"분석실패 비용","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":115,"line_end":115,"block_type":"line","text":"조건 변경될 때마다 데이터 다시 가져오기","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":120,"line_end":120,"block_type":"line","text":"차트 데이터 생성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":126,"line_end":126,"block_type":"line","text":"1개의 회색 영역만 표시","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"연한 회색","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":132,"line_end":132,"block_type":"line","text":"연한 회색","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":146,"line_end":146,"block_type":"line","text":"차트 데이터 생성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":154,"line_end":154,"block_type":"line","text":"1개의 회색 영역만 표시","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":157,"line_end":157,"block_type":"line","text":"연한 회색","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":159,"line_end":159,"block_type":"line","text":"인증실패","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":160,"line_end":160,"block_type":"line","text":"분석실패","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":164,"line_end":164,"block_type":"line","text":"연한 회색","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":166,"line_end":166,"block_type":"line","text":"인증실패","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":167,"line_end":167,"block_type":"line","text":"분석실패","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/AnalysisSstatistics/AnalysisSstatisticsPage.tsx","lang":"js","line_start":168,"line_end":168,"block_type":"line","text":"그 외 (회색 계열)","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/RevenueStatistics/RevenueStatisticsPage.tsx","lang":"js","line_start":69,"line_end":69,"block_type":"line","text":"조건 변경될 때마다 데이터 다시 가져오기","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/RevenueStatistics/RevenueStatisticsPage.tsx","lang":"js","line_start":74,"line_end":74,"block_type":"line","text":"차트 데이터 생성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/SignupStatistics/SignupStatisticsPage.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"line","text":"조건 변경될 때마다 데이터 다시 가져오기","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/SignupStatistics/SignupStatisticsPage.tsx","lang":"js","line_start":84,"line_end":84,"block_type":"line","text":"차트 데이터 생성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/SignupStatistics/SignupStatisticsPage.tsx","lang":"js","line_start":105,"line_end":105,"block_type":"line","text":"테이블 데이터 생성","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Statistics/SignupStatistics/SignupStatisticsPage.tsx","lang":"js","line_start":114,"line_end":114,"block_type":"line","text":"합계 계산","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 일반=파랑 | 기업=녹색","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":123,"line_end":123,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 분석=파랑 | 결제=녹색","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":150,"line_end":150,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 성공=파랑 | 실패=빨강","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":161,"line_end":161,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 성공=파랑 | 실패=빨강","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":172,"line_end":172,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 성공=파랑 | 실패=빨강","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":193,"line_end":193,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 사용=파랑 | 미사용=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":261,"line_end":270,"block_type":"line","text":"{\n  label: \"영업채널명\",\n  name: \"salesAgencyChannel.sacCode\",\n  usePrefix: false,\n  useOnlyLastKey: true,\n  options: [\n    { label: \"전체\", value: \"\" },\n    { label: \"해당없음\", value: \"none\" },\n  ].concat(channel),\n},","hangul_chars":11,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Alimtalk/AlimtalkPage.tsx","lang":"js","line_start":340,"line_end":353,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"alert(\"분석이 완료된 정보만 확인 가능\");","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"iframe 팝업으로 유저 사이트 분석 상세 표시","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"const [selectedIds, setSelectedIds] = useState<string[]>([]); // 체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":57,"line_end":63,"block_type":"line","text":"const handleClickDeleteButton = () => {\n  if (selectedIds.length === 0) {\n    // 체크 갯수 유효성\n    alert(ALERT_MSG.DELETE.required);\n    return;\n  }\n  if (!confirm(ALERT_MSG.DELETE.confirm)) return; // 컨펀 유효성","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":65,"line_end":81,"block_type":"line","text":"if (loading) return; // 로딩 유효성\n  setLoading(true); // 로딩\n  api.orderDetailApi // 삭제 api\n    .deleteOrderDetail({ ids: selectedIds.map(Number) })\n    .then((res) => {\n      if (res) {\n        // 성공\n        alert(ALERT_MSG.DELETE.success);\n        setSelectedIds([]);\n        handleRefresh();\n      } else {\n        // 실패\n        alert(ALERT_MSG.DELETE.fail);\n      }\n    })\n    .finally(() => setLoading(false)); // 로딩 종료\n};","hangul_chars":17,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"jsdoc","text":"엑셀 다운로드 (브라우저 네이티브 — 대량도 진행률 보이며 끊김 없음)","hangul_chars":27,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":88,"line_end":88,"block_type":"jsdoc","text":"원본데이터 엑셀 다운로드","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":135,"line_end":135,"block_type":"line","text":"소속조직 필터: 기업(agcId) 선택 시에만 활성화, 기업 변경 시 조직 선택 초기화(resetFields)","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":191,"line_end":191,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 일반=파랑 | 기업=녹색","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":218,"line_end":218,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 분석완료=파랑 | 분석실패=빨강 | 인증실패·자료수집실패=녹색, 그 외 기본색","hangul_chars":35,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":413,"line_end":413,"block_type":"line","text":"두 일의 차이를 계산 (밀리초 단위)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":417,"line_end":417,"block_type":"line","text":"한 달을 밀리초로 변환 (30일 기준)","hangul_chars":12,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":419,"line_end":419,"block_type":"line","text":"한 달 이내인지 확인","hangul_chars":8,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":465,"line_end":474,"block_type":"line","text":"{\n  label: \"영업채널명\",\n  name: \"salesAgencyChannel.sacCode\",\n  usePrefix: false,\n  useOnlyLastKey: true,\n  options: [\n    { label: \"전체\", value: \"\" },\n    { label: \"해당없음\", value: \"none\" },\n  ].concat(channel),\n},","hangul_chars":11,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":498,"line_end":499,"block_type":"line","text":"* 가공 후 최종 name 기준 — \"member.orgId\"로 주면 RHF가 중첩 객체(member={orgId})를\n*   만들어 검색 시 member=[object Object]로 직렬화되는 버그가 있다.","hangul_chars":33,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":588,"line_end":601,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/DetailAnalysisPopup.tsx","lang":"js","line_start":247,"line_end":247,"block_type":"line","text":"스크롤 속도 조절","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/DetailAnalysisPopup.tsx","lang":"js","line_start":266,"line_end":266,"block_type":"line","text":"스크롤 속도 조절","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/DetailAnalysisPopup.tsx","lang":"js","line_start":288,"line_end":289,"block_type":"line","text":"WebkitOverflowScrolling: \"touch\", // 부드러운 스크롤 지원\nscrollBehavior: \"smooth\", // 스크롤 이동 부드럽게","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/IframeAnalysisPopup.tsx","lang":"js","line_start":4,"line_end":12,"block_type":"jsdoc","text":"관리자용 분석 상세 iframe 팝업\n- 유저 사이트의 분석 상세 페이지를 iframe으로 표시\n- admin-view 단명 토큰을 발급받은 뒤 iframe 접근\n- 유저서비스 연결 실패 시 에러 안내 페이지 표시\n\nURL 형식: /popup/analysis-view/:type/:id\n예: /popup/analysis-view/member/13401","hangul_chars":62,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/IframeAnalysisPopup.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"* ★보안(C2): admin 팝업 type(member/b2c/client) → server admin-view scope.","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/IframeAnalysisPopup.tsx","lang":"js","line_start":30,"line_end":31,"block_type":"line","text":"* ★보안(C2): admin-view 단명 토큰을 admin 인증으로 발급받아 iframe URL ?t= 로 전달. server enforce ON 시\n*   이 토큰 없으면 site admin-view 접근 차단(IDOR 방지). enforce OFF면 토큰 유무 무관(무중단).","hangul_chars":41,"class":"1_policy","tags":["1_policy","2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/IframeAnalysisPopup.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"서버 상태 체크 함수","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/IframeAnalysisPopup.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"컴포넌트 마운트 시 서버 상태 체크 + admin-view 단명 토큰 발급(admin 인증 쿠키 사용)","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/IframeAnalysisPopup.tsx","lang":"js","line_start":119,"line_end":119,"block_type":"line","text":"파라미터 검증 실패","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/IframeAnalysisPopup.tsx","lang":"js","line_start":137,"line_end":137,"block_type":"line","text":"연결 실패 에러 화면","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Analysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"jsdoc","text":"엑셀 다운로드 (브라우저 네이티브 — 대량도 진행률 보이며 끊김 없음)","hangul_chars":27,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":97,"line_end":97,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 일반=파랑 | 기업=녹색","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":148,"line_end":148,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 성공=파랑 | 실패=빨강","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":239,"line_end":248,"block_type":"line","text":"{\n  label: \"영업채널명\",\n  name: \"salesAgencyChannel.sacCode\",\n  usePrefix: false,\n  useOnlyLastKey: true,\n  options: [\n    { label: \"전체\", value: \"\" },\n    { label: \"해당없음\", value: \"none\" },\n  ].concat(channel),\n},","hangul_chars":11,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":364,"line_end":375,"block_type":"line","text":"{\n  label:\"페이코\",\n  value:\"CCF004\"\n},\n{\n  label:\"삼성패스\",\n  value:\"CCF005\"\n},\n{\n  label:\"KB모바일\",\n  value:\"CCF006\"\n},","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/AnalysisLog/AnalysisLogPage.tsx","lang":"js","line_start":384,"line_end":391,"block_type":"line","text":"{\n  label:\"신한인증서\",\n  value:\"CCF009\"\n},\n{\n  label:\"토스\",\n  value:\"CCF010\"\n},","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":88,"line_end":88,"block_type":"line","text":"소속조직 필터: 기업(agcId) 선택 시에만 활성화, 기업 변경 시 조직 선택 초기화(resetFields)","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":186,"line_end":187,"block_type":"line","text":"* 주문 생성 시점 계약 스냅샷(ord_billing_type) 기준.\n* 기획 색상: 후불=파랑 | 선불=녹색 | 무상=빨강","hangul_chars":29,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":219,"line_end":220,"block_type":"line","text":"* 정산대기(검정)=이월·미확정 | 정산확정(파랑) | 정산제외(빨강)=확정+미반영\n* | 무상제공(녹색) | 취소·실패는 공란","hangul_chars":41,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":238,"line_end":238,"block_type":"line","text":"* 정산확정된 주문만 표기, 그 외(미정산·제외·무상·취소)는 공란","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":260,"line_end":260,"block_type":"line","text":"* 정산확정된 주문은 취소 불가(서버 E0214 가드와 동일 규칙) — 분석관리 버튼 차단 방식과 통일","hangul_chars":34,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":335,"line_end":336,"block_type":"line","text":"* 가공 후 최종 name 기준 — \"member.orgId\"로 주면 RHF가 중첩 객체(member={orgId})를\n*   만들어 검색 시 member=[object Object]로 직렬화되는 버그가 있다.","hangul_chars":33,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":385,"line_end":398,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":74,"line_end":74,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":81,"line_end":81,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":82,"line_end":82,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscribeFailed/CorpSubscribeFailedPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscribeFailed/CorpSubscribeFailedPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscribeFailed/CorpSubscribeFailedPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscribeFailed/CorpSubscribeFailedPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscribeFailed/CorpSubscribeFailedPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscribeFailed/CorpSubscribeFailedPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscribeFailed/CorpSubscribeFailedPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscribeFailed/CorpSubscribeFailedPage.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscribeFailed/CorpSubscribeFailedPage.tsx","lang":"js","line_start":120,"line_end":129,"block_type":"line","text":"{\n  key: \"change.prdName\",\n  label: \"다음결제예정상품명\",\n  usePrefix: false,\n},\n{\n  key: \"subscribe.subNextPayDay\",\n  label: \"다음결제예정일\",\n  usePrefix: false,\n},","hangul_chars":16,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscribeFailed/CorpSubscribeFailedPage.tsx","lang":"js","line_start":204,"line_end":217,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"소속조직 필터: 기업(agcId) 선택 시에만 활성화, 기업 변경 시 조직 선택 초기화(resetFields)","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":123,"line_end":123,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 구독=파랑 | 해지=빨강 | 변경=녹색","hangul_chars":18,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":157,"line_end":161,"block_type":"line","text":"{\n  key: \"change.prdName\",\n  label: \"변경예정상품명\",\n  usePrefix: false,\n},","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":177,"line_end":191,"block_type":"line","text":"{\n  key: \"subscribe.subChangedAt\",\n  label: \"변경요청일\",\n  usePrefix: false,\n},\n{\n  key: \"subscribe.subChangeCompletedAt\",\n  label: \"변경완료일\",\n  usePrefix: false,\n},\n{\n  key: \"subscribe.subChangeCanceledAt\",\n  label: \"변경취소일\",\n  usePrefix: false,\n},","hangul_chars":15,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":237,"line_end":238,"block_type":"line","text":"* 가공 후 최종 name 기준 — \"member.orgId\"로 주면 RHF가 중첩 객체(member={orgId})를\n*   만들어 검색 시 member=[object Object]로 직렬화되는 버그가 있다.","hangul_chars":33,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":262,"line_end":275,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"jsdoc","text":"페이지 새로고침-","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":87,"line_end":87,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":95,"line_end":95,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":110,"line_end":110,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":247,"line_end":250,"block_type":"block","text":"<li>\n                <span className=\"subject\">회원타입</span>\n                <strong>{watch(\"member.memType\")}</strong>\n              </li>","hangul_chars":4,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":265,"line_end":282,"block_type":"block","text":"<div className=\"mb-4 p-4 bg-light border rounded\">\n            <div className=\"row text-left\">\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원타입</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memType\")}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">기업명</div>\n                <div className=\"fw-bold fs-5\">\n                  {watch(\"agency.agcCorporateName\")}\n                </div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원아이디</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memLoginId\")}</div>\n              </div>\n            </div>\n          </div>","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":345,"line_end":359,"block_type":"line","text":"{\n  key: \"member.memAgency\",\n  label: \"소속명\",\n  usePrefix: false,\n},\n{\n  key: \"member.memLoginId\",\n  label: \"회원아이디\",\n  usePrefix: false,\n},\n{\n  key: \"subscribe.subNumber\",\n  label: \"구독번호\",\n  usePrefix: false,\n},","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":74,"line_end":74,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":81,"line_end":81,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":82,"line_end":82,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":103,"line_end":103,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":161,"line_end":161,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 결제완료=파랑 | 결제취소=빨강 | 결제실패=녹색","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":252,"line_end":261,"block_type":"line","text":"{\n  label: \"영업채널명\",\n  name: \"salesAgencyChannel.sacCode\",\n  usePrefix: false,\n  useOnlyLastKey: true,\n  options: [\n    { label: \"전체\", value: \"\" },\n    { label: \"해당없음\", value: \"none\" },\n  ].concat(channel),\n},","hangul_chars":11,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":275,"line_end":288,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"페이지 새로고침-","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":244,"line_end":251,"block_type":"block","text":"<li>\n                <span className=\"subject\">회원타입</span>\n                <strong>{watch(\"member.memType\")}</strong>\n              </li>\n              <li>\n                <span className=\"subject\">기업명</span>\n                <strong>{watch(\"agency.agcCorporateName\")}</strong>\n              </li>","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":262,"line_end":279,"block_type":"block","text":"<div className=\"mb-4 p-4 bg-light border rounded\">\n            <div className=\"row text-left\">\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원타입</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memType\")}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">기업명</div>\n                <div className=\"fw-bold fs-5\">\n                  {watch(\"agency.agcCorporateName\")}\n                </div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원아이디</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memLoginId\")}</div>\n              </div>\n            </div>\n          </div>","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":342,"line_end":356,"block_type":"line","text":"{\n  key: \"member.memAgency\",\n  label: \"소속명\",\n  usePrefix: false,\n},\n{\n  key: \"member.memLoginId\",\n  label: \"회원아이디\",\n  usePrefix: false,\n},\n{\n  key: \"subscribe.subNumber\",\n  label: \"구독번호\",\n  usePrefix: false,\n},","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":104,"line_end":104,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 구독=파랑 | 해지=빨강 | 변경=녹색","hangul_chars":18,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":206,"line_end":215,"block_type":"line","text":"{\n  label: \"영업채널명\",\n  name: \"salesAgencyChannel.sacCode\",\n  usePrefix: false,\n  useOnlyLastKey: true,\n  options: [\n    { label: \"전체\", value: \"\" },\n    { label: \"해당없음\", value: \"none\" },\n  ].concat(channel),\n},","hangul_chars":11,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":229,"line_end":242,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":70,"line_end":70,"block_type":"block","text":"상태 배너","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":148,"line_end":148,"block_type":"block","text":"섹션 — 흰 바탕 위에 그림자로 뜬 카드 (회색 트레이 없음)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":179,"line_end":179,"block_type":"block","text":"파이프라인 — 2단 플로우 (상단 진행 / 하단 이탈·실패)","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":261,"line_end":261,"block_type":"block","text":"(구) 파이프라인","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":333,"line_end":333,"block_type":"block","text":"요약 KPI 타일","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":387,"line_end":387,"block_type":"block","text":"캡션 (시간 기준 등 안내)","hangul_chars":9,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":403,"line_end":403,"block_type":"block","text":"슬롯 게이지","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":433,"line_end":433,"block_type":"block","text":"테이블 — 가독성","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":471,"line_end":471,"block_type":"block","text":"월집계 합계행 — 아래 벤더행과 구분","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":509,"line_end":509,"block_type":"block","text":"인라인 에러","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":563,"line_end":563,"block_type":"block","text":"단계별 에러","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":646,"line_end":646,"block_type":"block","text":"지표 설명 툴팁 (운영 안내용) — ? 아이콘 hover/focus 시 설명","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":720,"line_end":720,"block_type":"block","text":"표 헤더 안에서는 좌측 기준으로 띄워 화면 밖 잘림 방지","hangul_chars":22,"class":"1_policy","tags":["1_policy","2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":729,"line_end":729,"block_type":"block","text":"위 공간이 없는 영역(단계 흐름·표 헤더)은 툴팁을 아래로 펼쳐 잘림 방지","hangul_chars":28,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":743,"line_end":743,"block_type":"block","text":"── 벤더별 에러 카탈로그 ──","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":804,"line_end":804,"block_type":"block","text":"에러 표 — 사전 전체 + 발생률","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":809,"line_end":809,"block_type":"block","text":"발생 0건은 흐리게 (아는 에러지만 안 뜸)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":818,"line_end":818,"block_type":"block","text":"분류 색칩 — 미분류(unknown)만 빨강, 나머지는 차분하게 구분","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":859,"line_end":859,"block_type":"block","text":"발생률 막대 — 벤더 내 최대 발생률 대비 정규화","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":901,"line_end":901,"block_type":"block","text":"의미 미상(사전 미수록) 에러 표 — 빨강 톤","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":946,"line_end":946,"block_type":"block","text":"── 모바일 미세조정 (cols2 세로·테이블/퍼널 가로스크롤은 위 미디어쿼리에서 이미 대응) ──","hangul_chars":32,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":963,"line_end":963,"block_type":"block","text":"표는 tm-table-wrap이 가로 스크롤하므로 셀이 줄바꿈으로 뭉개지지 않게","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":970,"line_end":970,"block_type":"block","text":"월 단위 집계 — 헤더 + 월 이동 네비","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1016,"line_end":1016,"block_type":"block","text":"일별 총합계","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1083,"line_end":1083,"block_type":"block","text":"두 코호트 그룹 구분선 — 고객기준 첫 열 왼쪽에 굵은 경계","hangul_chars":22,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1084,"line_end":1084,"block_type":"block","text":"진료집계 표 — 숫자정렬·가독성·톤","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1107,"line_end":1107,"block_type":"block","text":"그룹 헤더 밴드 (시도기준 / 고객기준)","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1117,"line_end":1117,"block_type":"block","text":"두 그룹 구분선 (고객기준 첫 열 왼쪽)","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1130,"line_end":1130,"block_type":"block","text":"발생 없는 구간(0) — 흐리게 죽임","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1137,"line_end":1137,"block_type":"block","text":"긍정 비율 색(성공률/최초성공률/회복률/최종성공률)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1150,"line_end":1150,"block_type":"block","text":"실패 카운트(>0) 은은한 강조 / 회복 카운트 초록","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1157,"line_end":1157,"block_type":"block","text":"실패율 등 보조 비율 — 흐리게(2차 정보)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1162,"line_end":1162,"block_type":"block","text":"합계 행 강조","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1173,"line_end":1173,"block_type":"block","text":"긴 기간 대비 — 최대 높이 + 세로 스크롤. 헤더 2줄·일자열·합계행은 고정","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1178,"line_end":1178,"block_type":"block","text":"헤더 1줄(그룹 밴드) — 높이 고정해야 2줄째 오프셋이 정확","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1188,"line_end":1188,"block_type":"block","text":"헤더 2줄(컬럼명) — 그룹밴드 아래에 고정","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1195,"line_end":1195,"block_type":"block","text":"일자/월/벤더 열 좌측 고정 (가로 스크롤 시에도 보이게)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1207,"line_end":1207,"block_type":"block","text":"합계행 하단 고정 — 스크롤해도 항상 보임","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1216,"line_end":1216,"block_type":"block","text":"월/일 집계 탭","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.css","lang":"css","line_start":1298,"line_end":1298,"block_type":"block","text":"기간 range 팝오버 (프리셋 + 2개월 캘린더)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"에러 카테고리 → 색 그룹 (미분류만 빨강, 나머지는 차분하게 구분)","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"line","text":"지표 설명 툴팁 — ? 아이콘에 hover/focus 시 설명 노출 (운영 안내용)","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":95,"line_end":95,"block_type":"line","text":"슬롯 점유 게이지 — total개 세그먼트 중 used개 채움","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":110,"line_end":110,"block_type":"line","text":"처리 단계 흐름 — 대기열 → 인증요청 → 추가인증 → 자료수집 → 분석 → 완료","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":123,"line_end":123,"block_type":"line","text":"퍼널(완료/실패)은 진행단계 backlog와 동일한 24시간 기준으로 통일","hangul_chars":23,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":155,"line_end":155,"block_type":"line","text":"각 단계 아래로 빠지는 이탈/실패 (대기열 / 인증요청·추가인증 / 자료수집·분석 / 완료)","hangul_chars":32,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":220,"line_end":220,"block_type":"line","text":"처리 추이 — 완료/실패 막대 + 성공률 라인 (시간대별)","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":242,"line_end":242,"block_type":"line","text":"* 시스템실패 = 기관·통신·시스템 오류. 스택 세그먼트.","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":254,"line_end":254,"block_type":"line","text":"* 유저실패 = 휴먼에러(인증번호/정보 오입력 등). 스택 세그먼트.","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":266,"line_end":266,"block_type":"line","text":"* 진짜이탈 = SMS 미입력. 스택 세그먼트(완료+시스템+유저+진짜이탈 = 총량 보존)","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":346,"line_end":346,"block_type":"line","text":"대기시간 분포 — 버킷별 막대","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":414,"line_end":414,"block_type":"line","text":"* 월집계 표의 한 행 — 합계행과 벤더행이 동일 구조라 공용.","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":456,"line_end":456,"block_type":"line","text":"* 비율(0~1) → '85.7%'. null이면 '-'.","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":460,"line_end":460,"block_type":"line","text":"* 긍정 비율(높을수록 좋음) 색 — 좋음(≥80)/주의(50~79)/나쁨(<50). null이면 무색.","hangul_chars":21,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":469,"line_end":469,"block_type":"line","text":"* 실패 카운트(>0) 살짝 강조 / 회복 카운트 살짝 초록. 0이면 무색.","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":473,"line_end":473,"block_type":"line","text":"* 진료집계 표의 한 행 — 일자·월·벤더 + 합계행 공용. 시도기준 9열 + 고객코호트 9열.","hangul_chars":29,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":485,"line_end":485,"block_type":"line","text":"* 발생 없는 구간은 흐리게(죽임)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":511,"line_end":511,"block_type":"line","text":"* 오늘/최근15일 기본 기간 (YYYY-MM-DD)","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":517,"line_end":517,"block_type":"line","text":"* 기간 프리셋 버튼 목록","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":535,"line_end":535,"block_type":"line","text":"벤더별 에러 카탈로그 — 실시간 폴링과 별개. 기간(N일)만 바꿔 재조회.","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":540,"line_end":540,"block_type":"line","text":"* 월 단위 집계 — 온디맨드(실시간 폴링과 분리). 기본 = 이번 달.","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":548,"line_end":548,"block_type":"line","text":"* 집계 표 단위 탭 — 월 / 일 / 벤더.","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":551,"line_end":551,"block_type":"line","text":"* 일별 총합계 — 온디맨드(조회 버튼). 기본 최근 15일. 기업상품 다중선택(미선택=전체 통합).","hangul_chars":33,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":554,"line_end":554,"block_type":"line","text":"* 기본 2주(오늘 포함 14일) — 프리셋 '2주'와 일치","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":562,"line_end":562,"block_type":"line","text":"* 기간 팝오버(프리셋 + 2개월 캘린더 range)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":570,"line_end":570,"block_type":"line","text":"* 활성 기간 프리셋(기본 2주)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":589,"line_end":589,"block_type":"line","text":"* 기간 프리셋 — 오늘 기준 상대 범위. 클릭 시 from/to 세팅 + 즉시 조회.","hangul_chars":22,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":619,"line_end":619,"block_type":"line","text":"* 날짜만 세팅 — 실제 조회는 '조회' 버튼으로.","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":630,"line_end":630,"block_type":"line","text":"* 엑셀 내보내기 — 서버에서 스타일 xlsx 생성(제목·그룹헤더·% 서식·색·틀고정). 현재 기간·기업·단위 반영.","hangul_chars":37,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":640,"line_end":641,"block_type":"line","text":"* ★중복 폴링 방어: overview가 느릴 때 이전 요청이 안 끝났는데 setInterval이 새 요청을 계속 쌓으면\n*  DB 커넥션이 고갈될 수 있다. in-flight면 이번 틱은 skip.","hangul_chars":45,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":662,"line_end":662,"block_type":"line","text":"* ★탭이 보일 때만 폴링. 백그라운드 탭은 정지 → 안 보는 화면이 운영서버를 계속 때리는 것 차단.","hangul_chars":36,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":677,"line_end":677,"block_type":"line","text":"* 복귀 즉시 1회 갱신 후 폴링 재개","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":696,"line_end":696,"block_type":"line","text":"* 월 선택 시 온디맨드 조회. cancelled로 이전 응답 무시(빠른 변경 안전). 서버는 월별 캐시.","hangul_chars":30,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":708,"line_end":708,"block_type":"line","text":"* 기업상품 목록 1회 로드(다중선택 옵션 채우기).","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":713,"line_end":713,"block_type":"line","text":"* 최초 진입 시 기본 기간으로 1회 조회. 이후엔 '조회' 버튼으로만(불필요한 반복 스캔 방어).","hangul_chars":34,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":719,"line_end":719,"block_type":"line","text":"* 기간 팝오버 바깥 클릭 시 닫기.","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":768,"line_end":768,"block_type":"block","text":"처리 파이프라인 — 단계별 흐름(현재 살아있는 건수)","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":779,"line_end":779,"block_type":"block","text":"요약 지표 — 처리 / 대기 / 정합성","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":893,"line_end":893,"block_type":"block","text":"최근 추이 — 시간대별 (상세)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":899,"line_end":899,"block_type":"block","text":"업체별 — 밀집 테이블","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":1038,"line_end":1038,"block_type":"block","text":"진료 집계 — 월/일 탭. 둘 다 시도 기준 9열 + 고객 코호트 회복 9열(엑셀 디자인)","hangul_chars":27,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":1134,"line_end":1134,"block_type":"line","text":"* 날짜만 세팅 — 조회는 '조회' 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":1276,"line_end":1276,"block_type":"block","text":"보유(주문) 단위 이탈/완주 — 생성 코호트 기준(정확한 이탈 grain)","hangul_chars":22,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":1340,"line_end":1340,"block_type":"block","text":"1차 인증 · 벤더별 (order_detail 없는 인증실패까지 벤더 귀속)","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":1381,"line_end":1381,"block_type":"block","text":"단계별 에러 + 인증방식 — 좌우","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":1424,"line_end":1424,"block_type":"block","text":"벤더별 에러 카탈로그 — 사전 매핑 + 실발생. 미매핑(미분류) 부각","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":1451,"line_end":1451,"block_type":"block","text":"업체 탭 (codef 계약종료로 제외)","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":1480,"line_end":1480,"block_type":"block","text":"선택된 업체의 사전 전체 에러 + 발생률","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/Subscription/TreatMonitor/TreatMonitorPage.tsx","lang":"js","line_start":1561,"line_end":1561,"block_type":"block","text":"의미 미상(사전 미수록) 에러 — 맨 아래 한 표에 뭉침","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/AddCorpfcPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/AddCorpfcPage.tsx","lang":"js","line_start":54,"line_end":55,"block_type":"line","text":"* 소속조직은 선택사항 — 기업별로 조직을 사용하지 않을 수 있어 미배정 등록 허용.\n*   단, 조직관리자 지정은 관리할 조직이 필요하므로 소속조직 필수.","hangul_chars":58,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/AddCorpfcPage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/AddCorpfcPage.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/AddCorpfcPage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/AddCorpfcPage.tsx","lang":"js","line_start":104,"line_end":104,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/AddCorpfcPage.tsx","lang":"js","line_start":169,"line_end":169,"block_type":"line","text":"* \"- 선택 -\"(빈 값)은 AddDetail이 자동 추가 — 미선택 시 미배정으로 등록된다.","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpPage.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpPage.tsx","lang":"js","line_start":102,"line_end":102,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 계약중=파랑 | 계약종료=빨강","hangul_chars":17,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpPage.tsx","lang":"js","line_start":137,"line_end":150,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":73,"line_end":78,"block_type":"line","text":"{\n  key: \"agency.agcCorporateCode\",\n  label: \"기업코드\",\n  usePrefix: false,\n  colWidth: \"10%\",\n},","hangul_chars":4,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":89,"line_end":90,"block_type":"line","text":"colWidth: \"9%\",\n* 기획 색상 규칙(2026-07): 구독=파랑 | 해지=빨강","hangul_chars":14,"class":"1_policy","tags":["1_policy","5_dead"],"classified_by":"keyword","commented_out":true,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":134,"line_end":135,"block_type":"line","text":"colWidth: \"8%\",\n* 기획 색상 규칙(2026-07): 사용=파랑 | 중지=빨강","hangul_chars":14,"class":"1_policy","tags":["1_policy","5_dead"],"classified_by":"keyword","commented_out":true,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":175,"line_end":188,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":63,"line_end":63,"block_type":"line","text":"소속조직(task-688): 필터 옵션 + 선택 일괄 배정 모달","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"버튼 정리: 양식다운로드/엑셀업로드는 버튼 하나로 묶고 모달에서 세부 항목 선택","hangul_chars":33,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":74,"line_end":74,"block_type":"line","text":"사용중지·구독해지 seat 하한 판정(task 4-4) 안내/차단 모달","hangul_chars":18,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":83,"line_end":87,"block_type":"jsdoc","text":"사용중지·구독해지 API 응답을 seat 하한 판정 에러코드에 맞게 분기 처리.\n  성공(res===true) → successMsg 안내 + 새로고침.\n  SEAT_BELOW_CONTRACT_WARN(내부 관리자) → 경고 모달, [확인하고 강행] 시 force:true 재요청.\n  SEAT_BELOW_CONTRACT(기업 관리자) → 차단 모달, 확인만.\n  그 외 실패 → failMsg(또는 응답 message) 안내.","hangul_chars":75,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":158,"line_end":158,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":162,"line_end":162,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":166,"line_end":168,"block_type":"jsdoc","text":"아이템 삭제 버튼\n! 미사용","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":169,"line_end":175,"block_type":"line","text":"const handleClickDeleteButton = () => {\n  if (modal.selectedIds.length === 0) {\n    // 체크 갯수 유효성\n    alert(ALERT_MSG.DELETE.required);\n    return;\n  }\n  if (!confirm(ALERT_MSG.DELETE.confirm)) return; // 컨펀 유효성","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":177,"line_end":193,"block_type":"line","text":"if (loading) return; // 로딩 유효성\n  setLoading(true); // 로딩 시작\n  api.agencyFcApi // 삭제 api\n    .deleteAgencyFc({ ids: modal.selectedIds.map(Number) })\n    .then((res) => {\n      if (res) {\n        // 성공\n        alert(ALERT_MSG.DELETE.success);\n        modal.setSelectedIds([]);\n        handleRefresh();\n      } else {\n        // 실패\n        alert(ALERT_MSG.DELETE.fail);\n      }\n    })\n    .finally(() => setLoading(false)); // 로딩 종료\n};","hangul_chars":19,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":195,"line_end":195,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":207,"line_end":207,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":218,"line_end":218,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":318,"line_end":318,"block_type":"jsdoc","text":"엑셀업로드 > 신규계정업로드","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":329,"line_end":329,"block_type":"jsdoc","text":"엑셀업로드 > 상태변경업로드","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":389,"line_end":389,"block_type":"line","text":"* 전체 경로(\"대구 > 개발팀\") 우선 표시, 없으면 조직명 → \"미배정\"","hangul_chars":22,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":396,"line_end":396,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 일반 회원=파랑 | 조직관리자=녹색","hangul_chars":19,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":406,"line_end":406,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 구독=파랑 | 해지=빨강","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":441,"line_end":441,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 사용=파랑 | 중지=빨강","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":486,"line_end":486,"block_type":"line","text":"* 양식다운로드 묶음: 계정등록양식 | 상태변경양식 | 조직·권한양식","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":492,"line_end":492,"block_type":"line","text":"* 엑셀업로드 묶음: 신규계정업로드 | 상태변경업로드 | 조직·권한업로드","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":688,"line_end":688,"block_type":"line","text":"* 선택 조직만 검색(하위 미포함) — 서버 기본(orgScope=self). UNASSIGNED=미배정 회원.","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":827,"line_end":827,"block_type":"block","text":"양식다운로드 묶음 — 모달에서 세부 양식 선택","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":873,"line_end":873,"block_type":"block","text":"엑셀업로드 묶음 — 모달에서 업로드 종류 선택","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":919,"line_end":919,"block_type":"block","text":"사용중지·구독해지 seat 하한 판정(task 4-4): 내부 관리자 경고/강행 · 기업 관리자 차단","hangul_chars":28,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":85,"line_end":85,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":86,"line_end":86,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":121,"line_end":121,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":126,"line_end":126,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":128,"line_end":128,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":130,"line_end":130,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":161,"line_end":161,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":168,"line_end":168,"block_type":"line","text":"memIsResigned: 탈퇴, 가입","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":172,"line_end":172,"block_type":"line","text":"사용중지(중지) seat 하한 판정(task 4-4) 안내/차단 모달 — CorpfcPage와 동일 패턴","hangul_chars":21,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":181,"line_end":181,"block_type":"jsdoc","text":"중지 처리 API 응답을 seat 하한 판정 에러코드에 맞게 분기 처리(내부 관리자 화면 — WARN은 강행 가능).","hangul_chars":34,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":228,"line_end":228,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":229,"line_end":229,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":231,"line_end":231,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":531,"line_end":551,"block_type":"block","text":"<div className=\"mb-4 p-4 bg-light border rounded\">\n            <div className=\"row text-left\">\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">기업명</div>\n                <div className=\"fw-bold fs-5\">\n                  {watch(\"agency.agcCorporateName\")}\n                </div>\n                {/* <div className=\"fw-bold fs-5\">{userData?.agcCorporateName}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원아이디</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memLoginId\")}</div>\n                {/* <div className=\"fw-bold fs-5\">{userData?.memLoginId}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원명</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memName\")}</div>\n                {/* <div className=\"fw-bold fs-5\">{userData?.memName}</div>\n              </div>\n            </div>\n          </div>","hangul_chars":11,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":599,"line_end":599,"block_type":"block","text":"사용중지 seat 하한 판정(task 4-4): 내부 관리자 경고/강행 · 기업 관리자 차단 — CorpfcPage와 동일 패턴","hangul_chars":29,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"추천가입내역 타입","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"추천가입내역 리스트","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":64,"line_end":64,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":97,"line_end":97,"block_type":"line","text":"추천인기입여부 변환","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":104,"line_end":104,"block_type":"line","text":"추천인ID 설정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":115,"line_end":115,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/DetailFcPage.tsx","lang":"js","line_start":309,"line_end":324,"block_type":"block","text":"<div className=\"mb-4 p-4 bg-light border rounded\">\n            <div className=\"row text-left\">\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원아이디</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memLoginId\")}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원명</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memName\")}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">소속명</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memAgency\")}</div>\n              </div>\n            </div>\n          </div>","hangul_chars":11,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/FcPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/FcPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/FcPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/FcPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/FcPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/FcPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/FcPage.tsx","lang":"js","line_start":102,"line_end":102,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 구독=파랑 | 해지=빨강 | 무료체험=녹색","hangul_chars":20,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/FcPage.tsx","lang":"js","line_start":149,"line_end":149,"block_type":"line","text":"* 공통 2값 규칙: 긍정(기입)=파랑 | 부정(미기입)=빨강","hangul_chars":18,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/FcPage.tsx","lang":"js","line_start":169,"line_end":169,"block_type":"line","text":"* 공통 2값 규칙: 긍정(가입)=파랑 | 부정(탈퇴)=빨강","hangul_chars":17,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/Fc/FcPage.tsx","lang":"js","line_start":222,"line_end":231,"block_type":"line","text":"{\n  label: \"영업채널명\",\n  name: \"salesAgencyChannel.sacCode\",\n  usePrefix: false,\n  useOnlyLastKey: true,\n  options: [\n    { label: \"전체\", value: \"\" },\n    { label: \"해당없음\", value: \"none\" },\n  ].concat(channel),\n},","hangul_chars":11,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/PushConsent/PushConsentPage.tsx","lang":"js","line_start":89,"line_end":89,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 일반=파랑 | 기업=녹색","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/PushConsent/PushConsentPage.tsx","lang":"js","line_start":120,"line_end":120,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 수신=파랑 | 미수신=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/PushConsent/PushConsentPage.tsx","lang":"js","line_start":132,"line_end":132,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 수신=파랑 | 미수신=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/PushConsent/PushConsentPage.tsx","lang":"js","line_start":144,"line_end":144,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 수신=파랑 | 미수신=빨강","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/User/UserPage.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/User/UserPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/User/UserPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/User/UserPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/User/UserPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"jsdoc","text":"엑셀 다운로드버튼","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/User/UserPage.tsx","lang":"js","line_start":104,"line_end":104,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 일반=파랑 | 기업=녹색","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/User/UserPage.tsx","lang":"js","line_start":190,"line_end":199,"block_type":"line","text":"{\n  label: \"영업채널명\",\n  name: \"salesAgencyChannel.sacCode\",\n  usePrefix: false,\n  useOnlyLastKey: true,\n  options: [\n    { label: \"전체\", value: \"\" },\n    { label: \"해당없음\", value: \"none\" },\n  ].concat(channel),\n},","hangul_chars":11,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/User/User/UserPage.tsx","lang":"js","line_start":224,"line_end":237,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/calendar.css","lang":"css","line_start":1,"line_end":1,"block_type":"block","text":"커스텀 헤더 스타일","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/index.tsx","lang":"js","line_start":61,"line_end":65,"block_type":"jsdoc","text":"캘린더\nselectedDate: 캘린더 선택일 상태값\ncurrentMonth: 날짜 이동용 현재 월 상태값","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/index.tsx","lang":"js","line_start":68,"line_end":72,"block_type":"jsdoc","text":"차트\nchartType: 차트 유형\nstatistics: 차트 데이터","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/index.tsx","lang":"js","line_start":76,"line_end":81,"block_type":"jsdoc","text":"상단 데이터 카드 영역\nmonthlyStats: 월 데이터\ntotalStats: 총 데이터\ncardLoading: 카드 로딩","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/index.tsx","lang":"js","line_start":150,"line_end":152,"block_type":"jsdoc","text":"선택한 날짜에 해당하는 데이터 추출","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/index.tsx","lang":"js","line_start":159,"line_end":162,"block_type":"jsdoc","text":"문의사항 미답변(게시물)\n손해사정서비스 미응대(게시물)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/index.tsx","lang":"js","line_start":172,"line_end":174,"block_type":"jsdoc","text":"상단 카드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/index.tsx","lang":"js","line_start":218,"line_end":218,"block_type":"line","text":"차트 데이터 생성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Admin/index.tsx","lang":"js","line_start":425,"line_end":442,"block_type":"block","text":"<div className=\"row\">\n        <div className=\"col-md-6\">\n          <TotalCardStat\n            icon={FaMoneyBill}\n            label=\"총 결제금액\"\n            value={`${totalStats.paymentAmount.toLocaleString()}원`}\n            color=\"success\"\n          />\n        </div>\n        <div className=\"col-md-6\">\n          <TotalCardStat\n            icon={FaBan}\n            label=\"총 취소금액\"\n            value={`${totalStats.cancelAmount.toLocaleString()}원`}\n            color=\"danger\"\n          />\n        </div>\n      </div>","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"기업관리자: 로그인 사용자의 agcId 강제 주입 (기업 선택 UI 미노출)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":36,"line_end":37,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html) screen-settlement: 기업관리자 전용 조회 화면 —\n* 입금완료·입금철회(입금처리·정산처리) 버튼 및 입금완료 모달 제거, 영업대리점명 필터·목록 조회(getSalesAgencyAll) 제거","hangul_chars":63,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":46,"line_end":47,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html) screen-settlement: 컬럼 제외(영업대리점명·총분석제한수·총분석사용수)\n* 목업 컬럼 순서: No·정산연월·정산코드·기업명·총 구독주문수·정산금액·입금완료여부·입금완료일·등록일","hangul_chars":74,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"line","text":"* 공통 2값 규칙: 긍정(완료)=파랑 | 부정(미완료)=빨강","hangul_chars":18,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/CorpSettlementPage.tsx","lang":"js","line_start":116,"line_end":116,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html) screen-settlement: 검색 구성 = 정산연월(月범위)·입금완료여부·정산코드 (영업대리점명 셀렉트 제외)","hangul_chars":42,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":74,"line_end":74,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":83,"line_end":83,"block_type":"jsdoc","text":"구독내역 엑셀 다운로드","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":253,"line_end":268,"block_type":"block","text":"<div className=\"mb-4 p-4 bg-light border rounded\">\n            <div className=\"row text-left\">\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">기업코드</div>\n                <div className=\"fw-bold fs-5\">\n                  {watch(\"agency.agcCorporateCode\")}\n                </div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">기업명</div>\n                <div className=\"fw-bold fs-5\">\n                  {watch(\"agency.agcCorporateName\")}\n                </div>\n              </div>\n            </div>\n          </div>","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":336,"line_end":336,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 주문완료(파랑)/주문취소(빨강)/주문실패(녹색) — Admin판 주문상태와 동일","hangul_chars":32,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":348,"line_end":367,"block_type":"line","text":"{\n  key: \"payment.pmtCanceledAt\",\n  label: \"결제취소일\",\n  usePrefix: false,\n},\n{\n  key: \"RefundDto.refState\",\n  label: \"환불상태\",\n  usePrefix: false,\n},\n{\n  key: \"RefundDto.refPrice\",\n  label: \"환불금액\",\n  usePrefix: false,\n},\n{\n  key: \"RefundDto.refCompletedAt\",\n  label: \"환불완료날짜\",\n  usePrefix: false,\n},","hangul_chars":19,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":374,"line_end":383,"block_type":"line","text":"{\n  key: \"payment.pmtState\",\n  label: \"결제취소\",\n  usePrefix: false,\n  cell: {\n    type: \"button\",\n    label: \"결제취소\",\n    onClick: (row, index) => {\n      if (!confirm(\"선택한 주문 건의 결제를 취소하시겠습니까?\"))\n        return;","hangul_chars":26,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Corp/CorpSettlement/DetailCorpSettlementPage.tsx","lang":"js","line_start":388,"line_end":404,"block_type":"line","text":"api.orderApi\n        .cancelSubscribeOrder({\n          ordId: row?.order?.ordId,\n          pmtReason: \"\",\n        })\n        .then((res) => {\n          if (!res) {\n            alert(\"결제취소를 실패하였습니다.\");\n          } else {\n            alert(\"성공적으로 결제취소가 완료되었습니다.\");\n            handleRefresh();\n          }\n        })\n        .finally(() => setLoading(false));\n    },\n  },\n},","hangul_chars":29,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Money/History/MoneyHistoryPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"기업관리자: 로그인 사용자의 agcId 강제 주입 (기업 선택 UI 미노출)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Money/History/MoneyHistoryPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"sagName으로 검색","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Money/History/MoneyHistoryPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"구분 타입 라벨","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Money/History/MoneyHistoryPage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"회원타입 라벨","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/MyPage/CorpMyPage.tsx","lang":"js","line_start":18,"line_end":21,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html):\n* 마이페이지 — 기업관리자 = 기업정보(screen-myCorp), 조직관리자 = 내 정보(screen-myOrg).\n* 사이드바 메뉴 미등록(헤더 진입 전용) · 진입 전 현재 비밀번호 본인확인(하단 \"개발팀 전달\").\n* 진입 모달(비밀번호 확인)은 Navbar의 CorpMyPageEntry 참고.","hangul_chars":82,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/MyPage/CorpMyPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"jsdoc","text":"일시 표시용 — 값 없으면 \"-\"","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/MyPage/CorpMyPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"jsdoc","text":"스택형 form-group row (기존 상세 페이지 left/right 반반 패턴과 동일 클래스)","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/MyPage/CorpMyPage.tsx","lang":"js","line_start":38,"line_end":43,"block_type":"jsdoc","text":"마이페이지 · 기업정보 (기업관리자 전용, 목업 screen-myCorp)\n- 좌: 읽기전용(기업코드·기업명·사업자등록번호·대표자명·기업관리자 아이디)\n- 우: 수정 가능(비밀번호·회계팀 이메일) + 등록일·수정일 읽기전용\n- 접근차단상태·계약종료여부는 노출하지 않음(목업 role-note)","hangul_chars":95,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/MyPage/CorpMyPage.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"* 비밀번호는 \"변경 시에만 입력\" — 입력된 경우에만 전송(정책 프런트 선검증)","hangul_chars":29,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/MyPage/CorpMyPage.tsx","lang":"js","line_start":104,"line_end":104,"block_type":"line","text":"저장 성공 시 재조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/MyPage/CorpMyPage.tsx","lang":"js","line_start":114,"line_end":114,"block_type":"block","text":"좌: 읽기전용 기본정보","hangul_chars":9,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/MyPage/CorpMyPage.tsx","lang":"js","line_start":153,"line_end":153,"block_type":"block","text":"우: 수정 가능 항목 + 일자","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/MyPage/CorpMyPage.tsx","lang":"js","line_start":203,"line_end":206,"block_type":"jsdoc","text":"마이페이지 · 내 정보 (조직관리자 전용, 목업 screen-myOrg)\n- 수정 가능: 회원명·연락처·이메일·비밀번호 / 읽기전용: 회원아이디·소속조직","hangul_chars":47,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/MyPage/CorpMyPage.tsx","lang":"js","line_start":263,"line_end":263,"block_type":"line","text":"* 비밀번호는 \"변경 시에만 입력\" — 입력된 경우에만 전송(정책 프런트 선검증)","hangul_chars":29,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/MyPage/CorpMyPage.tsx","lang":"js","line_start":285,"line_end":285,"block_type":"line","text":"저장 성공 시 재조회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/MyPage/CorpMyPage.tsx","lang":"js","line_start":364,"line_end":368,"block_type":"jsdoc","text":"마이페이지 — 역할 분기.\n- useCorpOrgManager() false(기업관리자, CORP_SUPER) → 기업정보\n- true(조직관리자, CORP_ORG) → 내 정보","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/MyPage/CorpMyPage.tsx","lang":"js","line_start":373,"line_end":373,"block_type":"line","text":"* 본인확인(비밀번호 검증) 없이 URL 직접 진입 차단 — 헤더 모달 통과 시 세션 플래그 설정","hangul_chars":32,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/Organization/CorpOrganizationPage.tsx","lang":"js","line_start":5,"line_end":7,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html): 기업조직관리 — 기업관리자(CORP_SUPER) 전용.\n*  기존 OrgManageTab(admin 기업 상세의 조직관리 탭) 사양을 그대로 재사용하는 얇은 래퍼.\n*  페이지 헤더(브레드크럼 \"기업 관리 / 기업조직관리\")는 AdminLayout이 corpMenus에서 자동 생성.","hangul_chars":79,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/Organization/CorpOrganizationPage.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"기업관리자: 로그인 사용자의 agcId 강제 주입 (기업 선택 UI 미노출)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"기업관리자: 로그인 사용자의 agcId 강제 주입 (기업 선택 UI 미노출)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"분석관리 노출레벨 (0: 미노출 | 1: 분석목록만 | 2: 분석목록+상세팝업)","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"노출레벨 2(분석목록+상세팝업) 미만이면 상세팝업 미제공","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"alert(\"분석이 완료된 정보만 확인 가능\");","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"iframe 팝업으로 유저 사이트 분석 상세 표시","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"const [selectedIds, setSelectedIds] = useState<string[]>([]); // 체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":63,"line_end":69,"block_type":"line","text":"const handleClickDeleteButton = () => {\n  if (selectedIds.length === 0) {\n    // 체크 갯수 유효성\n    alert(ALERT_MSG.DELETE.required);\n    return;\n  }\n  if (!confirm(ALERT_MSG.DELETE.confirm)) return; // 컨펀 유효성","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":71,"line_end":87,"block_type":"line","text":"if (loading) return; // 로딩 유효성\n  setLoading(true); // 로딩\n  api.orderDetailApi // 삭제 api\n    .deleteOrderDetail({ ids: selectedIds.map(Number) })\n    .then((res) => {\n      if (res) {\n        // 성공\n        alert(ALERT_MSG.DELETE.success);\n        setSelectedIds([]);\n        handleRefresh();\n      } else {\n        // 실패\n        alert(ALERT_MSG.DELETE.fail);\n      }\n    })\n    .finally(() => setLoading(false)); // 로딩 종료\n};","hangul_chars":17,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":89,"line_end":89,"block_type":"jsdoc","text":"엑셀 다운로드 (브라우저 네이티브 — 대량도 진행률 보이며 끊김 없음)","hangul_chars":27,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":97,"line_end":97,"block_type":"line","text":"* 기획(2026-07, company-mockup): 재분석·원본데이터 다운로드 기능 제외 — 관련 핸들러·영업대리점 옵션 조회(fetch) 코드 제거","hangul_chars":36,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":99,"line_end":99,"block_type":"line","text":"소속조직 필터: 기업관리자는 자기 기업 고정이므로 항상 활성 (GET /corp/organizations)","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":118,"line_end":118,"block_type":"line","text":"* 기획(2026-07, company-mockup): 공통 제외 컬럼(영업대리점명·영업채널명·회원타입·실패사유·처리업체) 및 재분석·분석실패일·원본데이터 컬럼 제거, 목업 컬럼 순서 반영","hangul_chars":57,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":140,"line_end":140,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 분석완료=파랑 | 분석실패=빨강 | 인증실패·자료수집실패=녹색, 그 외 기본색","hangul_chars":35,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":153,"line_end":153,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 분석상태와 동일 규칙 적용","hangul_chars":17,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":252,"line_end":252,"block_type":"line","text":"* 기획(2026-07, company-mockup): 검색 필터에서도 영업대리점명·영업채널명·회원타입·처리업체 제외","hangul_chars":30,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":326,"line_end":339,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/DetailAnalysisPopup.tsx","lang":"js","line_start":247,"line_end":247,"block_type":"line","text":"스크롤 속도 조절","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/DetailAnalysisPopup.tsx","lang":"js","line_start":266,"line_end":266,"block_type":"line","text":"스크롤 속도 조절","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/DetailAnalysisPopup.tsx","lang":"js","line_start":288,"line_end":289,"block_type":"line","text":"WebkitOverflowScrolling: \"touch\", // 부드러운 스크롤 지원\nscrollBehavior: \"smooth\", // 스크롤 이동 부드럽게","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/IframeAnalysisPopup.tsx","lang":"js","line_start":4,"line_end":12,"block_type":"jsdoc","text":"관리자용 분석 상세 iframe 팝업\n- 유저 사이트의 분석 상세 페이지를 iframe으로 표시\n- admin-view 단명 토큰을 발급받은 뒤 iframe 접근\n- 유저서비스 연결 실패 시 에러 안내 페이지 표시\n\nURL 형식: /popup/analysis-view/:type/:id\n예: /popup/analysis-view/member/13401","hangul_chars":62,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/IframeAnalysisPopup.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"* ★보안(C2): admin 팝업 type(member/b2c/client) → server admin-view scope.","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/IframeAnalysisPopup.tsx","lang":"js","line_start":30,"line_end":31,"block_type":"line","text":"* ★보안(C2): admin-view 단명 토큰을 admin 인증으로 발급받아 iframe URL ?t= 로 전달. server enforce ON 시\n*   이 토큰 없으면 site admin-view 접근 차단(IDOR 방지). enforce OFF면 토큰 유무 무관(무중단).","hangul_chars":41,"class":"1_policy","tags":["1_policy","2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/IframeAnalysisPopup.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"서버 상태 체크 함수","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/IframeAnalysisPopup.tsx","lang":"js","line_start":59,"line_end":59,"block_type":"line","text":"컴포넌트 마운트 시 서버 상태 체크 + admin-view 단명 토큰 발급(admin 인증 쿠키 사용)","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/IframeAnalysisPopup.tsx","lang":"js","line_start":119,"line_end":119,"block_type":"line","text":"파라미터 검증 실패","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/IframeAnalysisPopup.tsx","lang":"js","line_start":137,"line_end":137,"block_type":"line","text":"연결 실패 에러 화면","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/Analysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"기업관리자: 로그인 사용자의 agcId 강제 주입 (기업 선택 UI 미노출)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html): 공통 제외(영업대리점명) — 영업대리점 필터·목록 조회 제거","hangul_chars":34,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":60,"line_end":60,"block_type":"line","text":"소속조직 필터: 기업관리자는 자기 기업 고정이므로 항상 활성 (GET /corp/organizations)","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html) screen-order: 공통 제외 컬럼(영업대리점명·영업채널명·회원타입) 및 분석사용완료수·분석진행수 컬럼 제외","hangul_chars":49,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 주문완료=파랑 | 주문취소=빨강 | 주문실패=녹색 (Admin판과 동일)","hangul_chars":28,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":147,"line_end":147,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html) screen-order: 주문취소 기능 제외(주문취소 컬럼·버튼 제거)","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":168,"line_end":168,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html) screen-order: 검색 필터에서도 영업대리점명 제외","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":190,"line_end":203,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":95,"line_end":95,"block_type":"line","text":"* 기획(2026-07, company-mockup): 주문 상세 탭은 조회 전용 — 영업대리점명·분석사용완료수·분석진행수 숨김, 분석제한수는 읽기전용 유지","hangul_chars":44,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":217,"line_end":217,"block_type":"line","text":"* 기획(2026-07, company-mockup): 분석 내역 탭 — 목업 컬럼 구성 반영(분석실패일 제거), 고객 인적사항 마스킹은 서버 적용","hangul_chars":36,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"기업관리자: 로그인 사용자의 agcId 강제 주입 (기업 선택 UI 미노출)","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"소속조직 필터: 기업관리자는 자기 기업 고정이므로 항상 활성 (GET /corp/organizations)","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":129,"line_end":133,"block_type":"line","text":"{\n  key: \"change.prdName\",\n  label: \"변경예정상품명\",\n  usePrefix: false,\n},","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":149,"line_end":163,"block_type":"line","text":"{\n  key: \"subscribe.subChangedAt\",\n  label: \"변경요청일\",\n  usePrefix: false,\n},\n{\n  key: \"subscribe.subChangeCompletedAt\",\n  label: \"변경완료일\",\n  usePrefix: false,\n},\n{\n  key: \"subscribe.subChangeCanceledAt\",\n  label: \"변경취소일\",\n  usePrefix: false,\n},","hangul_chars":15,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":217,"line_end":230,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"페이지 새로고침-","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":205,"line_end":208,"block_type":"block","text":"<li>\n                <span className=\"subject\">회원타입</span>\n                <strong>{watch(\"member.memType\")}</strong>\n              </li>","hangul_chars":4,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":223,"line_end":240,"block_type":"block","text":"<div className=\"mb-4 p-4 bg-light border rounded\">\n            <div className=\"row text-left\">\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원타입</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memType\")}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">기업명</div>\n                <div className=\"fw-bold fs-5\">\n                  {watch(\"agency.agcCorporateName\")}\n                </div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원아이디</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memLoginId\")}</div>\n              </div>\n            </div>\n          </div>","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":303,"line_end":317,"block_type":"line","text":"{\n  key: \"member.memAgency\",\n  label: \"소속명\",\n  usePrefix: false,\n},\n{\n  key: \"member.memLoginId\",\n  label: \"회원아이디\",\n  usePrefix: false,\n},\n{\n  key: \"subscribe.subNumber\",\n  label: \"구독번호\",\n  usePrefix: false,\n},","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/AddCorpfcPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"URL 파라미터 대신 로그인 사용자의 agcId 사용","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/AddCorpfcPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/AddCorpfcPage.tsx","lang":"js","line_start":65,"line_end":65,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/AddCorpfcPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/AddCorpfcPage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/AddCorpfcPage.tsx","lang":"js","line_start":101,"line_end":101,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"기업관리자 본인의 agcId 가져오기","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpPage.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"기업관리자 본인의 agcId 가져오기","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"리스트 데이터 가져오기 - 본인 기업 회원만 조회","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"URL 파라미터 대신 로그인 사용자의 agcId 사용","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html 63~65행 org-excl): 조직관리자(CORP_ORG)에겐 조직변경·관리자권한설정·조직·권한양식/업로드 숨김","hangul_chars":41,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"버튼 정리(Admin 기업회원관리와 동일 구조): 양식다운로드/엑셀업로드는 버튼 하나로 묶고 모달에서 세부 항목 선택","hangul_chars":44,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":99,"line_end":99,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":103,"line_end":103,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":108,"line_end":108,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":120,"line_end":120,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":131,"line_end":131,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":190,"line_end":190,"block_type":"jsdoc","text":"엑셀업로드 > 신규계정업로드","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":201,"line_end":201,"block_type":"jsdoc","text":"엑셀업로드 > 상태변경업로드","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":254,"line_end":254,"block_type":"line","text":"* 전체 경로(\"대구 > 개발팀\") 우선 표시, 없으면 조직명 → \"미배정\"","hangul_chars":22,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":261,"line_end":261,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 일반 회원=파랑 | 조직관리자=녹색","hangul_chars":19,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":271,"line_end":271,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 구독=파랑 | 해지=빨강","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":306,"line_end":306,"block_type":"line","text":"* 기획 색상 규칙(2026-07): 사용=파랑 | 중지=빨강","hangul_chars":14,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":344,"line_end":345,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html 374~407행 액션 바): 양식다운로드 → 엑셀업로드 → 엑셀다운로드 → 구독상태변경 → 조직변경 → 관리자권한설정 → 사용여부 → 신규등록 순서.\n* 엑셀다운로드는 위젯 내장 버튼(항상 맨 앞 렌더)이라 목업 순서를 맞추기 위해 커스텀 버튼으로 전환(기존 핸들러 재사용).","hangul_chars":107,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":348,"line_end":348,"block_type":"line","text":"* 양식다운로드 묶음: 계정등록양식 | 상태변경양식 | 조직·권한양식","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":354,"line_end":354,"block_type":"line","text":"* 엑셀업로드 묶음: 신규계정업로드 | 상태변경업로드 | 조직·권한업로드","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":449,"line_end":449,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html 394~396행 org-excl): 조직변경·관리자권한설정은 조직관리자에게 숨김","hangul_chars":33,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":703,"line_end":703,"block_type":"block","text":"양식다운로드 묶음 — 모달에서 세부 양식 선택","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":710,"line_end":710,"block_type":"block","text":"기획(2026-07, company-mockup/기업조직관리자_콘솔.html 1106~1123행): 계정등록양식 | 상태변경양식 | 조직·권한양식(조직관리자 숨김) 3개 항목","hangul_chars":40,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":749,"line_end":749,"block_type":"block","text":"엑셀업로드 묶음 — 모달에서 업로드 종류 선택","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":756,"line_end":756,"block_type":"block","text":"기획(2026-07, company-mockup/기업조직관리자_콘솔.html 1125~1143행): 신규계정업로드 | 상태변경업로드 | 조직·권한업로드(조직관리자 숨김) 3개 항목","hangul_chars":43,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"URL 파라미터 대신 로그인 사용자의 agcId 사용","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"line","text":"컨펌 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":81,"line_end":81,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":82,"line_end":82,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":117,"line_end":117,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":122,"line_end":122,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":124,"line_end":124,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":125,"line_end":125,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":126,"line_end":126,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":151,"line_end":151,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":158,"line_end":158,"block_type":"line","text":"memIsResigned: 탈퇴, 가입","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":162,"line_end":162,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":163,"line_end":163,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":165,"line_end":165,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":177,"line_end":177,"block_type":"line","text":"* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html 521~524행 org-excl): 조직관리자에겐 조직·관리자 권한 탭 미노출","hangul_chars":30,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Corp/index.tsx","lang":"js","line_start":8,"line_end":8,"block_type":"line","text":"기업관리자 메인 페이지 접근 시 기업회원 관리 페이지로 자동 리다이렉트","hangul_chars":30,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Login/Login.tsx","lang":"js","line_start":17,"line_end":19,"block_type":"line","text":"* 로그인 path 분리(2026-07 기획, planning/company-mockup/로그인_기업조직관리자.html):\n*  기존 /login = 기업·조직 관리자 전용 2탭, 통합·채널 관리자는 /manage/login 으로 분리.\n*  기업/조직 화면에는 통합·채널 로그인의 존재(진입 링크)를 노출하지 않는다.","hangul_chars":71,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Login/Login.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"페이지 첫 로드 시 로컬스토리지에서 loginType 불러오기 (variant별 허용 타입만)","hangul_chars":25,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/Login/Login.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"탭 클릭 시 상태 변경 + 로컬스토리지 저장","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Login/Login.tsx","lang":"js","line_start":86,"line_end":86,"block_type":"block","text":"로그인 폼 영역","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Login/Login.tsx","lang":"js","line_start":95,"line_end":95,"block_type":"block","text":"슬라이딩 인디케이터","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Login/login.css","lang":"css","line_start":144,"line_end":144,"block_type":"block","text":"로그인 탭 - Segmented Control with Sliding Indicator","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Login/login.css","lang":"css","line_start":154,"line_end":154,"block_type":"block","text":"슬라이딩 인디케이터","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Login/login.css","lang":"css","line_start":200,"line_end":200,"block_type":"block","text":"── 로그인 path 분리(2026-07): 2탭 화면(기업/조직 · 통합/채널) 보완 ──","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Login/login.css","lang":"css","line_start":201,"line_end":201,"block_type":"block","text":"2탭 인디케이터 폭 — 원본 4탭(/4)과 달리 /2","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Login/login.css","lang":"css","line_start":206,"line_end":206,"block_type":"block","text":"로고 아래 관리자 유형 표기","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Login/login.css","lang":"css","line_start":215,"line_end":215,"block_type":"block","text":"카드 상단 안내 타이틀","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Login/login.css","lang":"css","line_start":223,"line_end":223,"block_type":"block","text":"폼 하단 힌트 문구","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":63,"line_end":63,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgency/DetailSalesAgencyPage.tsx","lang":"js","line_start":86,"line_end":86,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/AddSalesAgencyChannelPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/AddSalesAgencyChannelPage.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/AddSalesAgencyChannelPage.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/AddSalesAgencyChannelPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/DetailSalesAgencyChannelPage.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"jsdoc","text":"아이템 신규등록페이지 이동 버튼","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"true면 외부 클릭시 닫힘","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"line","text":"체크박스 상태","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":63,"line_end":63,"block_type":"jsdoc","text":"아이템 삭제 버튼","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"line","text":"체크 갯수 유효성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"컨펀 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Sales/SalesAgencyChannel/SalesAgencyChannelPage.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"line","text":"alert(\"분석이 완료된 정보만 확인 가능\");","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/AnalysisPage.tsx","lang":"js","line_start":298,"line_end":311,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/DetailAnalysisPopup.tsx","lang":"js","line_start":247,"line_end":247,"block_type":"line","text":"스크롤 속도 조절","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/DetailAnalysisPopup.tsx","lang":"js","line_start":266,"line_end":266,"block_type":"line","text":"스크롤 속도 조절","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/DetailAnalysisPopup.tsx","lang":"js","line_start":288,"line_end":289,"block_type":"line","text":"WebkitOverflowScrolling: \"touch\", // 부드러운 스크롤 지원\nscrollBehavior: \"smooth\", // 스크롤 이동 부드럽게","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Analysis/SubDetailAnalysisPrescribePopup.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/CorpSubscriptionOrderPage.tsx","lang":"js","line_start":192,"line_end":205,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpOrder/DetailCorpSubscriptionOrderPage.tsx","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":101,"line_end":105,"block_type":"line","text":"{\n  key: \"change.prdName\",\n  label: \"변경예정상품명\",\n  usePrefix: false,\n},","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/CorpSubscriptionPage.tsx","lang":"js","line_start":172,"line_end":185,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"jsdoc","text":"페이지 새로고침-","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":70,"line_end":70,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":197,"line_end":200,"block_type":"block","text":"<li>\n                <span className=\"subject\">회원타입</span>\n                <strong>{watch(\"member.memType\")}</strong>\n              </li>","hangul_chars":4,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":215,"line_end":232,"block_type":"block","text":"<div className=\"mb-4 p-4 bg-light border rounded\">\n            <div className=\"row text-left\">\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원타입</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memType\")}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">기업명</div>\n                <div className=\"fw-bold fs-5\">\n                  {watch(\"agency.agcCorporateName\")}\n                </div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원아이디</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memLoginId\")}</div>\n              </div>\n            </div>\n          </div>","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/CorpSubscription/DetailCorpSubscriptionPage.tsx","lang":"js","line_start":295,"line_end":309,"block_type":"line","text":"{\n  key: \"member.memAgency\",\n  label: \"소속명\",\n  usePrefix: false,\n},\n{\n  key: \"member.memLoginId\",\n  label: \"회원아이디\",\n  usePrefix: false,\n},\n{\n  key: \"subscribe.subNumber\",\n  label: \"구독번호\",\n  usePrefix: false,\n},","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/DetailSubscriptionOrderPage.tsx","lang":"js","line_start":66,"line_end":66,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Order/SubscriptionOrderPage.tsx","lang":"js","line_start":192,"line_end":205,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":36,"line_end":36,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"페이지 새로고침-","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":55,"line_end":55,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":227,"line_end":234,"block_type":"block","text":"<li>\n                <span className=\"subject\">회원타입</span>\n                <strong>{watch(\"member.memType\")}</strong>\n              </li>\n              <li>\n                <span className=\"subject\">기업명</span>\n                <strong>{watch(\"agency.agcCorporateName\")}</strong>\n              </li>","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":245,"line_end":262,"block_type":"block","text":"<div className=\"mb-4 p-4 bg-light border rounded\">\n            <div className=\"row text-left\">\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원타입</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memType\")}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">기업명</div>\n                <div className=\"fw-bold fs-5\">\n                  {watch(\"agency.agcCorporateName\")}\n                </div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원아이디</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memLoginId\")}</div>\n              </div>\n            </div>\n          </div>","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/DetailSubscriptionPage.tsx","lang":"js","line_start":325,"line_end":339,"block_type":"line","text":"{\n  key: \"member.memAgency\",\n  label: \"소속명\",\n  usePrefix: false,\n},\n{\n  key: \"member.memLoginId\",\n  label: \"회원아이디\",\n  usePrefix: false,\n},\n{\n  key: \"subscribe.subNumber\",\n  label: \"구독번호\",\n  usePrefix: false,\n},","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":29,"line_end":29,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/Subscription/Subscription/SubscriptionPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpPage.tsx","lang":"js","line_start":9,"line_end":9,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpPage.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpPage.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":73,"line_end":78,"block_type":"line","text":"{\n  key: \"agency.agcCorporateCode\",\n  label: \"기업코드\",\n  usePrefix: false,\n  colWidth: \"10%\",\n},","hangul_chars":4,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcAllPage.tsx","lang":"js","line_start":168,"line_end":181,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":33,"line_end":33,"block_type":"jsdoc","text":"페이지 새로고침","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/CorpfcPage.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":48,"line_end":48,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":85,"line_end":85,"block_type":"line","text":"memIsResigned: 탈퇴, 가입","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":89,"line_end":89,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":90,"line_end":90,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Corpfc/DetailCorpfcPage.tsx","lang":"js","line_start":262,"line_end":282,"block_type":"block","text":"<div className=\"mb-4 p-4 bg-light border rounded\">\n            <div className=\"row text-left\">\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">기업명</div>\n                <div className=\"fw-bold fs-5\">\n                  {watch(\"agency.agcCorporateName\")}\n                </div>\n                {/* <div className=\"fw-bold fs-5\">{userData?.agcCorporateName}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원아이디</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memLoginId\")}</div>\n                {/* <div className=\"fw-bold fs-5\">{userData?.memLoginId}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원명</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memName\")}</div>\n                {/* <div className=\"fw-bold fs-5\">{userData?.memName}</div>\n              </div>\n            </div>\n          </div>","hangul_chars":11,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/DetailFcPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/DetailFcPage.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/DetailFcPage.tsx","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"글로벌스토어","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/DetailFcPage.tsx","lang":"js","line_start":37,"line_end":37,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/DetailFcPage.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/DetailFcPage.tsx","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/DetailFcPage.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"jsdoc","text":"상세데이터 가져오기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/DetailFcPage.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"로딩 유효성","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/DetailFcPage.tsx","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"로딩 시작","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/DetailFcPage.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"상세 조회 api","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/DetailFcPage.tsx","lang":"js","line_start":79,"line_end":79,"block_type":"line","text":"로딩 종료","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/DetailFcPage.tsx","lang":"js","line_start":215,"line_end":230,"block_type":"block","text":"<div className=\"mb-4 p-4 bg-light border rounded\">\n            <div className=\"row text-left\">\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원아이디</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memLoginId\")}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">회원명</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memName\")}</div>\n              </div>\n              <div className=\"col-md-4 mb-2\">\n                <div className=\"text-muted small\">소속명</div>\n                <div className=\"fw-bold fs-5\">{watch(\"member.memAgency\")}</div>\n              </div>\n            </div>\n          </div>","hangul_chars":11,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/FcPage.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/FcPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/FcPage.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/FcPage.tsx","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/FcPage.tsx","lang":"js","line_start":30,"line_end":30,"block_type":"jsdoc","text":"아이템 상세페이지 이동 버튼","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/Fc/FcPage.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"엑셀 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/User/UserPage.tsx","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"리스트의 각 아이템 타입 추출","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/User/UserPage.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"리스트 컨텍스트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/User/UserPage.tsx","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"리스트 상태","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/User/UserPage.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"line","text":"리스트 데이터 가져오기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/User/UserPage.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"jsdoc","text":"엑셀 다운로드버튼","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/User/User/UserPage.tsx","lang":"js","line_start":196,"line_end":209,"block_type":"line","text":"combo: [\n  {\n    label: \"기업명\",\n    name: \"agency.agcId\",\n    options: [\n      {\n        label: \"전체\",\n        value: \"\",\n      },\n    ].concat(corp),\n    useOnlyLastKey: true,\n    usePrefix: false,\n  },\n],","hangul_chars":5,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/calendar.css","lang":"css","line_start":1,"line_end":1,"block_type":"block","text":"커스텀 헤더 스타일","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/index.tsx","lang":"js","line_start":59,"line_end":63,"block_type":"jsdoc","text":"캘린더\nselectedDate: 캘린더 선택일 상태값\ncurrentMonth: 날짜 이동용 현재 월 상태값","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/index.tsx","lang":"js","line_start":66,"line_end":70,"block_type":"jsdoc","text":"차트\nchartType: 차트 유형\nstatistics: 차트 데이터","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/index.tsx","lang":"js","line_start":74,"line_end":79,"block_type":"jsdoc","text":"상단 데이터 카드 영역\nmonthlyStats: 월 데이터\ntotalStats: 총 데이터\ncardLoading: 카드 로딩","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/index.tsx","lang":"js","line_start":148,"line_end":150,"block_type":"jsdoc","text":"선택한 날짜에 해당하는 데이터 추출","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/index.tsx","lang":"js","line_start":157,"line_end":159,"block_type":"jsdoc","text":"상단 카드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/index.tsx","lang":"js","line_start":203,"line_end":203,"block_type":"line","text":"차트 데이터 생성","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/Sales/index.tsx","lang":"js","line_start":402,"line_end":419,"block_type":"block","text":"<div className=\"row\">\n        <div className=\"col-md-6\">\n          <TotalCardStat\n            icon={FaMoneyBill}\n            label=\"총 결제금액\"\n            value={`${totalStats.paymentAmount.toLocaleString()}원`}\n            color=\"success\"\n          />\n        </div>\n        <div className=\"col-md-6\">\n          <TotalCardStat\n            icon={FaBan}\n            label=\"총 취소금액\"\n            value={`${totalStats.cancelAmount.toLocaleString()}원`}\n            color=\"danger\"\n          />\n        </div>\n      </div>","hangul_chars":12,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/Catalog.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"line","text":"* '미기재' = 시나리오 비어있고 + 메모도 없음. 메모를 달면 '메모됨'으로 해소.","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/Flow.tsx","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"유저 단계별로 그룹핑","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/Flow.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"같은 native 코드가 여러 단계/시나리오에 중복 등장 → 코드별 테두리색 부여(배경은 상태색 유지)","hangul_chars":35,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/Flow.tsx","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"* 최대 구분 팔레트(Trubetskoy) — 검정/다크 포함, 인접 항목이 확실히 다른 색","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/Flow.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"block","text":"시나리오에 없는데 테스트로 관측된 신규 코드","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/InfoTip.tsx","lang":"js","line_start":4,"line_end":6,"block_type":"jsdoc","text":"ⓘ hover 시 커스텀 툴팁. body로 portal 렌더 → sticky/overflow stacking context에 안 갇힘.","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/MappingStatus.tsx","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"* '간편(카카오)'→'카카오', '휴대폰SMS'→'SMS', '공동인증서'→'인증서'","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/MappingStatus.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"line","text":"* 커버리지 결과 수정/삭제 (배포된 관리자에서 누적 데이터 직접 편집)","hangul_chars":27,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/Tester.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"line","text":"* 서버 /scenarios 미응답 시 폴백 (단일 출처: 서버)","hangul_chars":14,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/Tester.tsx","lang":"js","line_start":41,"line_end":41,"block_type":"line","text":"* 시나리오 목록은 서버에서 단일 출처로 로드 (matrix/flow와 동일)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/Tester.tsx","lang":"js","line_start":45,"line_end":45,"block_type":"block","text":"폴백 유지","hangul_chars":4,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/TreatErrorTestPage.tsx","lang":"js","line_start":18,"line_end":22,"block_type":"jsdoc","text":"진료내역 벤더 오류 테스터 (숨김 라우트 /treat-error-test).\n사이드바에 노출되지 않으며 URL 직접 입력으로만 접근. 탭은 ?tab= 으로 URL에 반영되어 새로고침해도 유지.\n서버(insuniverse-server)의 /admin/treat-test/* 를 호출 → 서버가 VPC NAT EIP로 벤더 API 접근.","hangul_chars":68,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/api.ts","lang":"js","line_start":3,"line_end":4,"block_type":"line","text":"* 서버(insuniverse-server) /admin/treat-test/* 호출. AdminJwtAuthGuard(_aaT 쿠키)로 보호됨.\n* 서버가 stg/prod VPC의 NAT EIP로 벤더 API를 호출 → 화이트리스트 통과.","hangul_chars":28,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/api.ts","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"* 수정/삭제 (배포된 관리자에서 누적 데이터 편집)","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/treat-error-test.css","lang":"css","line_start":1,"line_end":3,"block_type":"block","text":"진료내역 오류 테스터 — 하니스 web/styles.css를 .tet 루트로 스코프 이식.\n   admin 전역 스타일(.card, button, label 등)과 충돌 방지를 위해 전부 .tet 하위로 한정.\n   단 .floattip 은 InfoTip이 document.body로 portal 렌더하므로 전역 유지.","hangul_chars":55,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/treat-error-test.css","lang":"css","line_start":54,"line_end":54,"block_type":"block","text":"portal(body) 렌더이므로 전역","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/pages/TreatErrorTest/treat-error-test.css","lang":"css","line_start":87,"line_end":87,"block_type":"block","text":"코드 상세 모달","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/fetch/fetchList.ts","lang":"js","line_start":6,"line_end":6,"block_type":"line","text":"목록을 조회하는 공통 API 함수","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/fetch/fetchList.ts","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"유효성 에러 시 쓰로우","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/fetch/fetchList.ts","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"/all 엔드포인트인 경우 page 파라미터 제거","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/fetch/fetchList.ts","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"검사기준, 투약기준, 병명예측 API의 경우 searchKey와 searchText를 필드명으로 변환","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/api/fetch/fetchList.ts","lang":"js","line_start":29,"line_end":29,"block_type":"line","text":"params로 쿼리 문자열 생성","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/index.ts","lang":"js","line_start":7,"line_end":9,"block_type":"jsdoc","text":"* Axios 인스턴스 생성","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/index.ts","lang":"js","line_start":15,"line_end":18,"block_type":"jsdoc","text":"* 요청 인터셉터\nHTPP 요청을 보낸 후 응답을 받기 전에 요청 객체를 변경할 수 있습니다.","hangul_chars":32,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/index.ts","lang":"js","line_start":35,"line_end":38,"block_type":"jsdoc","text":"* 응답 인터셉터\nHTTP 응답 에러를 처리합니다.","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/index.ts","lang":"js","line_start":48,"line_end":50,"block_type":"jsdoc","text":"TODO: 에러코드 확인 필요","hangul_chars":8,"class":"4_todo","tags":["4_todo"],"classified_by":"keyword","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/serverTime.ts","lang":"js","line_start":8,"line_end":10,"block_type":"jsdoc","text":"* Axios 인스턴스 생성","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/utils/utils.ts","lang":"js","line_start":1,"line_end":1,"block_type":"line","text":"API 호출 시 쿼리 파라미터를 만들기 위한 함수","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/utils/utils.ts","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"URLSearchParams가 자동으로 인코딩하므로 encodeURIComponent 제거","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/utils/utils.ts","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"CODEF 상태 코드를 한글로 변환","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/utils/utils.ts","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"CODEF 요청타입","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/utils/utils.ts","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"CODEF 요청주체","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/utils/utils.ts","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"CODEF 요청단계","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/utils/utils.ts","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"CODEF 인증타입","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/utils/utils.ts","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"CODEF 결과상태","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/utils/utils.ts","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"CF-QUEUE(전 공급자 만석 → 대기열 진입). 실패 아님","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/validate/validate.ts","lang":"js","line_start":4,"line_end":4,"block_type":"line","text":"값이 존재하는지 확인하는 헬퍼 함수","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/validate/validate.ts","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"페이지 검증","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/api/validate/validate.ts","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"날짜 형식 검증 (YYYY-MM 또는 YYYY-MM-DD 허용)","hangul_chars":10,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/api/validate/validate.ts","lang":"js","line_start":26,"line_end":26,"block_type":"line","text":"문자열 필드 검증","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/constants/errorCodes.ts","lang":"js","line_start":1,"line_end":1,"block_type":"line","text":"에러 코드 상수 정의","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/constants/errorCodes.ts","lang":"js","line_start":3,"line_end":3,"block_type":"line","text":"SQL 관련 에러 (SQLxxxx)","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/constants/errorCodes.ts","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"제휴사 관련 (03xx)","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/constants/errorCodes.ts","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"제휴사 지점 관련 (04xx)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/constants/errorCodes.ts","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"굿즈 관련 (10xx)","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/constants/errorCodes.ts","lang":"js","line_start":37,"line_end":37,"block_type":"line","text":"상품 관련 (12xx)","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/constants/errorCodes.ts","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"기업회원 사용중지·구독해지 seat 하한 판정 (계약 구독계정수 act_subscription_seat)","hangul_chars":23,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/constants/errorCodes.ts","lang":"js","line_start":41,"line_end":41,"block_type":"jsdoc","text":"처리 후 활성 구독계정수 < 계약 하한. 기업 관리자는 즉시 차단(force 무시)","hangul_chars":26,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/constants/errorCodes.ts","lang":"js","line_start":43,"line_end":43,"block_type":"jsdoc","text":"처리 후 활성 구독계정수 < 계약 하한. 내부 관리자는 경고만(force=true 재요청 시 허용)","hangul_chars":29,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":6,"line_end":8,"block_type":"jsdoc","text":"* 빈 값일 경우 true를 반환","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"빈 객체 확인","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"빈 배열 확인","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"빈 문자열 확인","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":31,"line_end":33,"block_type":"jsdoc","text":"* 입력한 값이 JSON형식인지 판별","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":44,"line_end":46,"block_type":"jsdoc","text":"* 원하는 키값의 파라메터를 반환","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":53,"line_end":55,"block_type":"jsdoc","text":"* 주소에 있는 param value를, key값을 이용하여 추출하는 함수","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":76,"line_end":78,"block_type":"jsdoc","text":"* 제외를 원하는 키값의 파라메터를 제외한 쿼리스트링을 반환","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":91,"line_end":93,"block_type":"jsdoc","text":"* 디자이스 정보를 반환","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":121,"line_end":121,"block_type":"line","text":"기본 설정","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":130,"line_end":130,"block_type":"line","text":"모바일 여부","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":133,"line_end":133,"block_type":"line","text":"기기 및 운영 체제 감지","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":154,"line_end":154,"block_type":"line","text":"운영 체제 버전 감지","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":162,"line_end":162,"block_type":"line","text":"브라우저 감지 및 버전 추출","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":191,"line_end":193,"block_type":"jsdoc","text":"* 현재 브라우저의 온/오프라인 상태 여부 확인","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":199,"line_end":201,"block_type":"jsdoc","text":"* 현재 thread 수 확인","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":207,"line_end":210,"block_type":"jsdoc","text":"* 언어 종류 확인\n- 'ko-KR' 등등","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":216,"line_end":219,"block_type":"jsdoc","text":"* 기기 가로세로 확인\n- desktop(pc), portrait(세로), landscape(가로)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":229,"line_end":231,"block_type":"jsdoc","text":"* 로컬스토리지에 데이터 저장","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":234,"line_end":234,"block_type":"line","text":"불필요하나 타입에러때문에 작성해둠","hangul_chars":16,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":242,"line_end":244,"block_type":"jsdoc","text":"* 로컬스토리지 데이터 가져오기","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":248,"line_end":248,"block_type":"line","text":"불필요하나 타입에러때문에 작성해둠","hangul_chars":16,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":254,"line_end":256,"block_type":"jsdoc","text":"* 로컬스토리지 업데이트하기","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":265,"line_end":268,"block_type":"jsdoc","text":"@param {string} key\n* 로컬스토리지 삭제하기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":274,"line_end":276,"block_type":"jsdoc","text":"* 세션스토리지에 데이터 저장","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":282,"line_end":284,"block_type":"jsdoc","text":"* 세션스토리지 데이터 가져오기","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":288,"line_end":288,"block_type":"line","text":"불필요하나 타입에러때문에 작성해둠","hangul_chars":16,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":294,"line_end":296,"block_type":"jsdoc","text":"* 세션스토리지 업데이트하기","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":305,"line_end":307,"block_type":"jsdoc","text":"* 세션스토리지 삭제하기","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":313,"line_end":315,"block_type":"jsdoc","text":"* 쿠키 저장","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":332,"line_end":334,"block_type":"jsdoc","text":"* 쿠키 가져오기","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":347,"line_end":354,"block_type":"jsdoc","text":"@param {string} id\n@returns {} clientHeight: number, offsetHeight: number, scrollHeight: number\n요소의 높이 가져오기\n- clientHeight 는 요소의 내부 높이입니다. 패딩 값은 포함되며, 스크롤바, 테두리, 마진은 제외됩니다.\n- offsetHeight 는 요소의 높이입니다. 패딩, 스크롤 바, 테두리(Border)가 포함됩니다. 마진은 제외됩니다.\n- scrollHeight  는 요소에 들어있는 컨텐츠의 전체 높이입니다. 패딩과 테두리가 포함됩니다. 마진은 제외됩니다.","hangul_chars":114,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":371,"line_end":374,"block_type":"jsdoc","text":"* 원하는 응답 헤더 정보를 반환\n- 예시(content-type, cross-origin-opener-policy, date","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":406,"line_end":408,"block_type":"jsdoc","text":"* 원하는 길이의 영문 랜덤문자열 생성","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":421,"line_end":423,"block_type":"jsdoc","text":"원하는 구간의 랜덤 숫자 반환","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":429,"line_end":431,"block_type":"jsdoc","text":"* 지정된 지연 시간 후 콜백 함수를 실행","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":450,"line_end":452,"block_type":"jsdoc","text":"* 첫 번째 호출 시 콜백 함수를 바로 실행하지 않고, 지정 지연 시간이 지난 후에 실행합니다.","hangul_chars":35,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":468,"line_end":470,"block_type":"jsdoc","text":"* 첫 번째 호출 시 콜백 함수를 바로 실행하고, 이후 지정 지연 시간 동안 추가 호출을 무시합니다.","hangul_chars":37,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":487,"line_end":489,"block_type":"jsdoc","text":"* 함수 주기 실행","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":508,"line_end":510,"block_type":"jsdoc","text":"* script태그를 재귀적으로 생성","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":523,"line_end":523,"block_type":"line","text":"`key`를 `keyof HTMLScriptElement`로 캐스팅하여 사용합니다.","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":525,"line_end":525,"block_type":"line","text":"`script` 객체의 속성에 안전하게 접근합니다.","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":540,"line_end":542,"block_type":"jsdoc","text":"* 원하는 길이의 임의의 문자열 postfix를 생성","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":555,"line_end":557,"block_type":"jsdoc","text":"* 원하는 길이의 임의의 숫자 postfix를 생성","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":567,"line_end":569,"block_type":"jsdoc","text":"* 숫자를 한글로 변환","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":597,"line_end":597,"block_type":"line","text":"단위가 십 이상인 '일'글자는 출력하지 않는다. ex) 일십 -> 십","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":613,"line_end":615,"block_type":"jsdoc","text":"* 오늘 날자 요일문자열로 변경","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":625,"line_end":628,"block_type":"jsdoc","text":"* 주말여부 확인\n- 주말: true","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":632,"line_end":632,"block_type":"line","text":"0은 일요일, 6은 토요일을 나타냅니다.","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":655,"line_end":657,"block_type":"jsdoc","text":"* 원하는 길이의 dot을 반환","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":667,"line_end":671,"block_type":"jsdoc","text":"* 매개변수로 전달받은 문자열에 원하는 간격마다 원하는 문자열을 추가한다\n- ex입력) formatAddXString(\"20240202\", \"422\", \"-\");\n- ex결과) \"2024-02-24\"","hangul_chars":35,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":700,"line_end":707,"block_type":"jsdoc","text":"* 가상요소스타일 수정\n@param selector  .waiting-box .prog-bar::after\n@param pseudoElement '::after'\n@param property 'width'\n@param value '80%'\n- If the issue occurs with document.styleSheets, setting up tsconfig.json is mandatory. -> \"downlevelIteration\": true","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":719,"line_end":719,"block_type":"line","text":"rule이 CSSStyleRule인지 확인","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":726,"line_end":726,"block_type":"line","text":"원하는 규칙을 찾으면 더 이상 검색하지 않음","hangul_chars":18,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":730,"line_end":730,"block_type":"line","text":"외부 스타일 시트 접근 시 예외 처리","hangul_chars":14,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":745,"line_end":749,"block_type":"jsdoc","text":"* HTML 문자열을 HTML요소로 파싱하여 엔티티를 디코딩\n- 입력: HTML 엔티티를 포함할 수 있는 문자열     ex) \"Hello &lt;strong&gt;World&lt;/strong&gt; &amp; welcome to &copy; 2024!\";\n- 출력: HTML 엔티티가 일반 문자로 변환된 문자열 ex) \"Hello <strong>World</strong> & welcome to © 2024!\"","hangul_chars":50,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":751,"line_end":751,"block_type":"line","text":"문자열이 null이나 undefined가 아닌지 확인","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":756,"line_end":756,"block_type":"line","text":"HTML 문서로 파싱","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":763,"line_end":763,"block_type":"line","text":"파싱된 HTML 문서의 body에서 textContent를 반환","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":768,"line_end":773,"block_type":"jsdoc","text":"* HTML 문자열에서 HTML엔티티와 HTML태그를 제거하고, 텍스트를 라인별로 분리하여 공백이 아닌 라인만을 반환\n1) 정규 표현식을 사용하여 HTML 엔티티(&[^;]+;)와 HTML 태그(<[^>]+>)를 제거합니다.\n2) 개행 문자를 기준으로 문자열을 라인별로 분리합니다.\n3) 공백이 아닌 라인만 남깁니다.","hangul_chars":95,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":782,"line_end":788,"block_type":"jsdoc","text":"* HTML 문자열을 처리하여 여러 가지 변환 작업을 수행\n1) HTML 엔티티 디코딩: HTML 문자열을 HTML요소로 파싱하여 엔티티를 디코딩 (ex: &lt; -> <)\n2) 선택적으로 폰트 타입을 변경\n3) 선택적으로 최소 폰트 사이즈를 조정\n4) 선택적으로 줄 바꿈을 <br> 태그로 변환하거나 제거","hangul_chars":89,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":802,"line_end":802,"block_type":"line","text":"폰트 NotoKR, Arial, sans-serif 고정","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":811,"line_end":811,"block_type":"line","text":"폰트 사이즈 조정","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":828,"line_end":832,"block_type":"jsdoc","text":"* 지정된 (작게 보기, 크게 보기) 폰트 사이즈 크기 변환\n- B(big): 72.5%\n- S(small): 62.5%","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":856,"line_end":859,"block_type":"jsdoc","text":"* 무작위로 섞인 배열을 반환\n- Fisher-Yates shuffle","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":869,"line_end":871,"block_type":"jsdoc","text":"* 숫자가 십의 자리 이상이면 그대로 반환하고, 일의 자리 숫자라면 앞에 0을 붙여서 두 자리 형식으로 반환합니다.","hangul_chars":44,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":881,"line_end":883,"block_type":"jsdoc","text":"* 에디터로 작성되지 않은 문자열에 url형식의 문자열이 있다면 a태그로 변환","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":896,"line_end":901,"block_type":"jsdoc","text":"* 두 일 사이의 차이를 일 단위로 계산합니다.\n@param {string | Date} date1 - 첫 번째 일 (문자열 또는 Date 객체)\n@param {string | Date} date2 - 두 번째 일 (문자열 또는 Date 객체)\n@returns {number} - 두 일 사이의 차이 (일 단위)","hangul_chars":49,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":907,"line_end":907,"block_type":"line","text":"입력이 문자열인 경우 Date 객체로 변환","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":911,"line_end":911,"block_type":"line","text":"두 일의 타임스탬프 차이를 밀리초 단위로 계산","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":914,"line_end":914,"block_type":"line","text":"밀리초를 일 단위로 변환","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":917,"line_end":917,"block_type":"line","text":"옵션에 따라 양수 또는 음수를 반환","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":919,"line_end":919,"block_type":"line","text":"음수 포함","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":921,"line_end":921,"block_type":"line","text":"항상 양수","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":926,"line_end":931,"block_type":"jsdoc","text":"* 오늘이 두 일 사이에 포함되는지 확인합니다.\n@param {string | Date} date1 - 첫 번째 일 (문자열 또는 Date 객체)\n@param {string | Date} date2 - 두 번째 일 (문자열 또는 Date 객체)\n@returns {boolean} - 오늘이 두 일 사이에 포함되면 true, 그렇지 않으면 false","hangul_chars":58,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":937,"line_end":937,"block_type":"line","text":"오늘이 startDate와 endDate 사이에 있는지 확인","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":942,"line_end":944,"block_type":"jsdoc","text":"* 할인율 계산","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":954,"line_end":958,"block_type":"jsdoc","text":"* 일 계산 M/DD\n- fill.month(default:false): 1의자리 0 채우기\n- fill.day(default:false): 1의자리 0 채우기","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":964,"line_end":964,"block_type":"line","text":"월은 0부터 시작하므로 +1","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":977,"line_end":979,"block_type":"jsdoc","text":"* 오전 오후 시간 계산","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":985,"line_end":985,"block_type":"line","text":"12시를 0으로 변환 방지","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":991,"line_end":993,"block_type":"jsdoc","text":"* 오전 오후 시간 분 계산","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1000,"line_end":1000,"block_type":"line","text":"12시를 0으로 변환 방지","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1006,"line_end":1011,"block_type":"jsdoc","text":"* 현재 시간과, 미래의 특정 시간 사이의 (시간, 분, 초) 차이\n@param {string} targetTime - 목표 시간 (ISO 8601 형식의 일 문자열)\n@param {Date} currentTime - 현재 시간\n@returns {Object} - 남은 시간","hangul_chars":40,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1023,"line_end":1023,"block_type":"line","text":"목표 시간이 이미 지났는지 확인","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1034,"line_end":1034,"block_type":"line","text":"남은 시간 계산","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1055,"line_end":1058,"block_type":"jsdoc","text":"@param {string} inputTime - 입력 시간 (ISO 8601 형식의 일 문자열)\n@returns {TimeAgoResult} - 상대적인 시간 문자열","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1063,"line_end":1063,"block_type":"line","text":"입력 시간과 현재 시간 사이의 차이를 밀리초 단위로 계산","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1066,"line_end":1066,"block_type":"line","text":"차이를 초, 분, 시간, 일, 월, 년으로 변환","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1071,"line_end":1071,"block_type":"line","text":"대략적인 월 계산","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1072,"line_end":1072,"block_type":"line","text":"대략적인 년 계산","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1074,"line_end":1074,"block_type":"line","text":"차이에 따라 적절한 문자열 반환","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1091,"line_end":1095,"block_type":"jsdoc","text":"* HTML 문자열에서 태그를 제외한 순수 텍스트의 길이를 계산\n@param {string} htmlString - HTML 형식의 문자열\n@returns {number} - 순수 텍스트의 길이","hangul_chars":36,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1097,"line_end":1097,"block_type":"line","text":"HTML 태그를 제거하기 위한 정규 표현식","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1099,"line_end":1099,"block_type":"line","text":"텍스트의 길이를 반환","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1107,"line_end":1114,"block_type":"jsdoc","text":"주어진 목표 일까지 남은 D-Day를 계산합니다.\n@param {string} targetDate - 목표 일 (ISO 8601 형식의 일 문자열)\n@param {Date} [currentDate] - 현재 일 (기본값은 현재 시스템 시간)\n@returns {DDayResult} - D-Day 결과 객체\n1) targetDate가 미래 일일 경우, days는 목표 일까지 남은 일수를 반환합니다.\n2) targetDate가 현재 일와 같거나 이전 일일 경우, days는 0으로 설정되고 isPassedTime은 true로 설정됩니다.","hangul_chars":95,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1122,"line_end":1122,"block_type":"line","text":"목표 일가 현재 일보다 이전인지 확인","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1130,"line_end":1130,"block_type":"line","text":"목표 일와 현재 일 사이의 차이를 계산 (밀리초 단위)","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1133,"line_end":1133,"block_type":"line","text":"밀리초를 일 단위로 변환","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1143,"line_end":1145,"block_type":"jsdoc","text":"* 바코드 하이픈 추가","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1184,"line_end":1186,"block_type":"jsdoc","text":"* 서버시간 가져오기","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1202,"line_end":1204,"block_type":"jsdoc","text":"* 휴대폰번호 입력값 포맷팅","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1206,"line_end":1206,"block_type":"line","text":"숫자만 남기기","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1209,"line_end":1209,"block_type":"line","text":"하이픈 넣기 (ex: 010-1234-5678)","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1214,"line_end":1214,"block_type":"line","text":"하이픈 영역 이후 값이 사라질 때도 정상적으로 지워지도록 처리","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1221,"line_end":1223,"block_type":"jsdoc","text":"* 사업자등록번호 입력값 포맷팅","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1225,"line_end":1225,"block_type":"line","text":"숫자만 남기기","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1228,"line_end":1228,"block_type":"line","text":"하이픈 넣기 (ex: 010-1234-5678)","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1233,"line_end":1233,"block_type":"line","text":"하이픈 영역 이후 값이 사라질 때도 정상적으로 지워지도록 처리","hangul_chars":26,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1243,"line_end":1243,"block_type":"line","text":"숫자만 남기기","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1259,"line_end":1261,"block_type":"jsdoc","text":"중첩된 키 경로에 따라 객체에서 값을 가져오는 함수","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1274,"line_end":1274,"block_type":"line","text":"값이 존재하는 쌍만 필터링","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1283,"line_end":1285,"block_type":"jsdoc","text":"임의의 객체배열을 원하는 형태로 변경","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1292,"line_end":1292,"block_type":"line","text":"유동적인 속성을 허용","hangul_chars":9,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1295,"line_end":1295,"block_type":"line","text":"여기서 모든 키에 대한 타입을 정의","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1297,"line_end":1297,"block_type":"line","text":"각 키에 해당하는 값을 매핑","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1299,"line_end":1299,"block_type":"line","text":"정확한 타입 반환","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1302,"line_end":1313,"block_type":"line","text":"const transformOptions = <T, K extends string>(\n  options: Option<T>[],\n  keys: { [key in K]: keyof T } // 유동적인 속성을 허용\n): Array<{ [key in K]: T[keyof T] }> => {\n  return options.map((option) => {\n    const transformed: Partial<{ [key in K]: T[keyof T] }> = {}; // 여기서 모든 키에 대한 타입을 정의\n    for (const key in keys) {\n      transformed[key] = option[keys[key]]; // 각 키에 해당하는 값을 매핑\n    }\n    return transformed as { [key in K]: T[keyof T] }; // 정확한 타입 반환\n  });\n};","hangul_chars":41,"class":"1_policy","tags":["1_policy","5_dead"],"classified_by":"keyword","commented_out":true,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1316,"line_end":1318,"block_type":"jsdoc","text":"파일 다운로드","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1320,"line_end":1320,"block_type":"line","text":"Blob 객체 생성","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1326,"line_end":1326,"block_type":"line","text":"Content-Disposition 헤더에서 파일명 추출","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1330,"line_end":1330,"block_type":"line","text":"기본 파일명","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1336,"line_end":1336,"block_type":"line","text":"URL 디코딩을 통해 파일명 추출","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1344,"line_end":1344,"block_type":"line","text":"URL 디코딩을 통해 파일명 추출","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1350,"line_end":1350,"block_type":"line","text":"임시 링크를 생성하여 파일 다운로드","hangul_chars":15,"class":"4_todo","tags":["4_todo"],"classified_by":"keyword","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1356,"line_end":1356,"block_type":"line","text":"메모리 누수를 방지하기 위해 Object URL 제거","hangul_chars":14,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1361,"line_end":1363,"block_type":"jsdoc","text":"입력값 공백 제거","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1367,"line_end":1367,"block_type":"line","text":"현재 값에서 콤마 제거","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1369,"line_end":1369,"block_type":"line","text":"숫자와 콤마만 남기기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1371,"line_end":1371,"block_type":"line","text":"콤마 포맷팅","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1378,"line_end":1380,"block_type":"jsdoc","text":"입력값 공백 제거","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1391,"line_end":1398,"block_type":"jsdoc","text":"영문만입력가능(대문자, 소문자, 구분x)\n한글만입력가능\n숫자만입력가능(최소값, 최대값)\n특수문자만입력가능(지정문자열 배열)\n\n- 혼합 가능","hangul_chars":55,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1405,"line_end":1405,"block_type":"line","text":"기본적으로 공백 제거","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1465,"line_end":1468,"block_type":"jsdoc","text":"//!--------------------------------------------------------------------\n팝업 띄우는 함수","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1484,"line_end":1484,"block_type":"line","text":"화면 중앙에 위치하도록 계산","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1488,"line_end":1488,"block_type":"line","text":"팝업 옵션 문자열 생성","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1500,"line_end":1500,"block_type":"line","text":"팝업 열기","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1503,"line_end":1503,"block_type":"line","text":"팝업이 차단되었는지 확인","hangul_chars":11,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1512,"line_end":1515,"block_type":"jsdoc","text":"//!--------------------------------------------------------------------\n객체 평탄화, 마지막key값으로 저장, 중복키값 무시","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1520,"line_end":1520,"block_type":"line","text":"중첩 객체를 재귀 호출","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1523,"line_end":1523,"block_type":"line","text":"중복 키가 없을 때만 추가","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1536,"line_end":1536,"block_type":"line","text":"월은 0부터 시작하므로 +1","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1537,"line_end":1537,"block_type":"line","text":"일 두 자릿수로 맞추기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1543,"line_end":1546,"block_type":"jsdoc","text":"중첩된 1단계 객체를 병합합니다.\n예: { \"A\": { \"X\": \"1\" } } + { \"A\": { \"Y\": \"2\" } } => { \"A\": { \"X\": \"1\", \"Y\": \"2\" } }","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1570,"line_end":1577,"block_type":"jsdoc","text":"문자열을 원하는 위치와 길이에 따라 *로 마스킹 처리합니다.\n\n@param str 원본 문자열\n@param start 마스킹 시작 인덱스 (0부터 시작)\n@param length 마스킹할 문자 수\n@returns 마스킹된 문자열","hangul_chars":55,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1608,"line_end":1610,"block_type":"jsdoc","text":"유튜브 아이디 추출","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1618,"line_end":1620,"block_type":"jsdoc","text":"에디터 빈값 체크","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1622,"line_end":1622,"block_type":"line","text":"undefined, null, 빈 문자열","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1625,"line_end":1625,"block_type":"line","text":"가장 흔한 빈값","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1626,"line_end":1626,"block_type":"line","text":"모든 태그 제거","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1627,"line_end":1627,"block_type":"line","text":"공백 제거","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/common.helper.ts","lang":"js","line_start":1632,"line_end":1636,"block_type":"jsdoc","text":"* 서버 스트리밍 파일을 브라우저 네이티브 다운로드로 받는다.\n - blob을 JS 메모리에 다 받을 때까지 멈춘 듯 보이던 문제 해결 → 브라우저 다운로드 바에 진행률 표시.\n - 인증은 쿠키(_aT) 자동 포함. cross-origin이면 download 속성은 무시되고 서버 Content-Disposition이 파일명/다운로드 강제.","hangul_chars":91,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/detail.helper.ts","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"이미지 변환 및 설정","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/detail.helper.ts","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"DataTransfer 객체 생성","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/detail.helper.ts","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"input 엘리먼트 찾기","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/detail.helper.ts","lang":"js","line_start":50,"line_end":50,"block_type":"line","text":"input의 files 속성 직접 설정","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/detail.helper.ts","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"강제로 change 이벤트 발생","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/invoice.helper.ts","lang":"js","line_start":133,"line_end":133,"block_type":"line","text":"주민등록번호","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/invoice.helper.ts","lang":"js","line_start":339,"line_end":339,"block_type":"line","text":"pageData의 각 페이지를 순회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/invoice.helper.ts","lang":"js","line_start":341,"line_end":341,"block_type":"line","text":"arrayData 내의 각 항목을 순회","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/invoice.helper.ts","lang":"js","line_start":355,"line_end":355,"block_type":"line","text":"`style`을 그대로 복사","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"sortKey와 리스트아이템을 그리는 데이터 접근에 사용","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":42,"line_end":42,"block_type":"jsdoc","text":"sortKey사용시 설정한 prefix 사용 유무","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":44,"line_end":44,"block_type":"jsdoc","text":"값 변환 함수 (cell.type=\"render\" 대신 간편하게 사용)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":72,"line_end":72,"block_type":"jsdoc","text":"행 데이터 기준 클릭 차단 조건 — true 반환 시 버튼 비활성(기본 규칙에 추가로 적용)","hangul_chars":30,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":77,"line_end":77,"block_type":"line","text":"반환 타입 수정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":86,"line_end":86,"block_type":"jsdoc","text":"정렬기능 on/off","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":119,"line_end":119,"block_type":"jsdoc","text":"일검색 시간대: \"past\" | \"future\" --- 과거, 미래","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":122,"line_end":122,"block_type":"jsdoc","text":"일검색 label option의 value (제너릭)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":124,"line_end":124,"block_type":"jsdoc","text":"일검색 라벨명","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":126,"line_end":126,"block_type":"jsdoc","text":"value값 사용시 prefix 사용 유무","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":132,"line_end":132,"block_type":"jsdoc","text":"URL에 날짜 파라미터가 없을 때 적용할 기본 날짜 범위 버튼","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":138,"line_end":138,"block_type":"jsdoc","text":"일검색 시간대: \"past\" | \"future\" --- 과거, 미래","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":141,"line_end":141,"block_type":"jsdoc","text":"일검색 label option의 value (제너릭)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":143,"line_end":143,"block_type":"jsdoc","text":"일검색 라벨명","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":145,"line_end":145,"block_type":"jsdoc","text":"value값 사용시 prefix 사용 유무","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":155,"line_end":155,"block_type":"jsdoc","text":"select검색 key값 (제너릭)","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":157,"line_end":157,"block_type":"jsdoc","text":"name값 사용시 prefix 사용 유무","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":161,"line_end":161,"block_type":"jsdoc","text":"select검색 라벨명=첫번째 option","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":172,"line_end":172,"block_type":"jsdoc","text":"select박스 너비 (기본값: 240px)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":174,"line_end":174,"block_type":"jsdoc","text":"select 비활성화 (종속 필터: 상위 필터 미선택 시 등)","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":176,"line_end":176,"block_type":"jsdoc","text":"이 select 변경 시 값을 초기화(\"\")할 종속 필드명 목록(가공 후 최종 name 기준)","hangul_chars":24,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":182,"line_end":182,"block_type":"jsdoc","text":"select검색 key값 (제너릭)","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":184,"line_end":184,"block_type":"jsdoc","text":"name값 사용시 prefix 사용 유무","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":188,"line_end":188,"block_type":"jsdoc","text":"select검색 라벨명=첫번째 option","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":204,"line_end":204,"block_type":"jsdoc","text":"텍스트검색 label option의 value","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":206,"line_end":206,"block_type":"jsdoc","text":"텍스트검색 라벨명 (제너릭)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":208,"line_end":208,"block_type":"jsdoc","text":"value값 사용시 prefix 사용 유무","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":217,"line_end":217,"block_type":"line","text":"주어진 key에 camelCase를 적용하고, 선택적으로 prefix를 붙여 반환하는 함수","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":219,"line_end":220,"block_type":"line","text":"카멜 케이스 변환\nprefix가 있을 경우 camelKey에 prefix를 추가","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":224,"line_end":224,"block_type":"line","text":"KeyPath<T>로 타입 단언","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":227,"line_end":227,"block_type":"line","text":"columns 배열의 각 key에 대해 camelCase와 prefix를 적용한 새 배열을 반환하는 함수","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":243,"line_end":243,"block_type":"line","text":"applyPrefixToSearchFields 타입가드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":320,"line_end":320,"block_type":"line","text":"searchFields의 columns 배열의 각 key에 대해 camelCase와 prefix를 적용한 새 배열을 반환하는 함수","hangul_chars":23,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":439,"line_end":466,"block_type":"line","text":"// 타입 가드를 사용하여 각 타입에 맞게 result에 할당\n  if (isInputField(searchFields)) {\n    result = {\n      ...result,\n      input: {\n        options: searchFields.input.options.map((option) => {\n          const splitDotValue = option.value.split(\".\");\n          return {\n            ...option,\n            value: toCamelCaseWithPrefix<T>(\n              !option.useOnlyLastKey\n                ? option.value\n                : splitDotValue[splitDotValue.length - 1],\n              option.usePrefix ? prefix : undefined\n            ),\n          };\n        }),\n        placeholder: searchFields.input.placeholder,\n      },\n    };\n  }\n  if (isDateField(searchFields)) {\n    result = {\n      ...result,\n      date: {\n        timeScope: searchFields.date.timeScope,\n        options: searchFields.date.options.map((option) => {\n          const splitDotValue = option.value.split(\".\");","hangul_chars":18,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/list.helper.ts","lang":"js","line_start":548,"line_end":549,"block_type":"line","text":"return result as SearchField<T>; // 필요한 타입 단언을 사용하여 반환\n};","hangul_chars":14,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/messageHandler.ts","lang":"js","line_start":11,"line_end":11,"block_type":"line","text":"메시지 타입 정의","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/messageHandler.ts","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"일반 알림 메시지 핸들러","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/messageHandler.ts","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"에러 코드 메시지 핸들러","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/messageHandler.ts","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"SQL 관련 에러 (SQLxxxx)","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/messageHandler.ts","lang":"js","line_start":34,"line_end":34,"block_type":"line","text":"case ERROR_CODES.SQL_FOREIGN_KEY_FAIL: //미사용 \"삭제할 수 없는 참조 데이터가 존재합니다.\"","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/messageHandler.ts","lang":"js","line_start":37,"line_end":38,"block_type":"line","text":"case ERROR_CODES.SQL_SYNTAX_ERROR: //미사용 \"SQL 문법에 오류가 있습니다.\"\ncase ERROR_CODES.SQL_DEFAULT_ERROR: //미사용 \"알 수 없는 데이터베이스 에러가 발생했습니다.\"","hangul_chars":35,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/messageHandler.ts","lang":"js","line_start":40,"line_end":40,"block_type":"line","text":"제휴사 관련","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/messageHandler.ts","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"제휴사 지점 관련","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/messageHandler.ts","lang":"js","line_start":72,"line_end":72,"block_type":"line","text":"굿즈 관련","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/messageHandler.ts","lang":"js","line_start":88,"line_end":88,"block_type":"line","text":"상품 관련","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/messageHandler.ts","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"기본 에러","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/sanitize.helper.ts","lang":"js","line_start":3,"line_end":12,"block_type":"jsdoc","text":"저장형 XSS 방지용 HTML sanitize 헬퍼.\n\nQuill 리치텍스트(굵게/색/이미지/링크/리스트 등)는 보존하면서\n스크립트/이벤트 핸들러 등 위험 요소만 제거하는 관대한 기본 설정을 사용한다.\nDOMPurify 기본값이 이미 <script>, on* 핸들러, javascript: URL 등을 제거하고\n일반 서식 태그·style·img·a 는 보존한다.\n\n링크 새 탭(target) 속성만 추가로 허용한다.","hangul_chars":103,"class":"1_policy","tags":["1_policy","2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":1,"line_end":7,"block_type":"jsdoc","text":"* react-hook-form 사용예시\nregister={register(\"name\", {\n      validate: email,\n      required: \"필수 항목입니다.\",\n    })}","hangul_chars":11,"class":"1_policy","tags":["1_policy","5_dead"],"classified_by":"keyword","commented_out":true,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":9,"line_end":11,"block_type":"jsdoc","text":"* 입력값의 필수값 체크","hangul_chars":9,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":16,"line_end":18,"block_type":"jsdoc","text":"* 입력값의 이메일여부 체크","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":25,"line_end":27,"block_type":"jsdoc","text":"* 입력값의 휴대폰 형식 체크 01XxxxxXXXX","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":34,"line_end":36,"block_type":"jsdoc","text":"* 입력값의 휴대폰 형식 체크 01X-XXXX-XXXX","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":43,"line_end":45,"block_type":"jsdoc","text":"* 입력값의 휴대폰 형식 체크 01XxxxxXXXX or 01X-XXXX-XXXX","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":54,"line_end":56,"block_type":"jsdoc","text":"* 입력값의 url 형식 체크","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":65,"line_end":67,"block_type":"jsdoc","text":"* 입력값의 ip 형식 체크","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":76,"line_end":78,"block_type":"jsdoc","text":"* 입력값의 url 또는 ip 형식 체크","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":87,"line_end":89,"block_type":"jsdoc","text":"* 입력값의 숫자 체크","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":94,"line_end":97,"block_type":"jsdoc","text":"* 설정숫자범위 입력값 체크\n- min <= value <= max","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":103,"line_end":106,"block_type":"jsdoc","text":"* 설정숫자범위 입력값 체크\n- min <= value","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":112,"line_end":115,"block_type":"jsdoc","text":"* 설정숫자범위 입력값 체크\n- value <= max","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":121,"line_end":123,"block_type":"jsdoc","text":"* 입력값의 max length 체크","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":128,"line_end":130,"block_type":"jsdoc","text":"* 입력값의 min length 체크","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":135,"line_end":138,"block_type":"jsdoc","text":"* 설정일범위 입력값 체크\n- min <= value","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":148,"line_end":151,"block_type":"jsdoc","text":"* 설정일범위 입력값 체크\n- value <= max","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":161,"line_end":164,"block_type":"jsdoc","text":"* 비밀번호 패턴 체크\n- 알파벳, 숫자, 특수문자, length","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":176,"line_end":179,"block_type":"jsdoc","text":"* 대소문자, 숫자 조합 패턴\n- 알파벳, 숫자, length","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":190,"line_end":193,"block_type":"jsdoc","text":"* 비밀번호 동일성 체크\n- value1 === value2","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":198,"line_end":203,"block_type":"jsdoc","text":"폼 데이터의 필수 필드 공백 검증\n@param data 폼 데이터\n@param fields 필드 설정 정보\n@returns 검증 및 trim이 완료된 데이터","hangul_chars":33,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":207,"line_end":207,"block_type":"line","text":"required 필드이고 문자열인 경우에만 trim 처리","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/helpers/validate.helper.ts","lang":"js","line_start":214,"line_end":214,"block_type":"line","text":"필수 필드인데 trim 후 빈 문자열이면 에러 처리","hangul_chars":17,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/hooks/useFetchList.ts","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"데이터 fetching을 처리하는 커스텀 훅","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useFetchList.ts","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"limit이 없으면 기본값 10 적용","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useFetchList.ts","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"url이 바뀔 시","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":3,"line_end":3,"block_type":"line","text":"타입 정의","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"SessionStorage 제거 함수","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":43,"line_end":43,"block_type":"line","text":"세션 스토리지에서 값을 읽어와 useState로 관리","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"상태 변경 시 세션 스토리지에도 값 저장","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":68,"line_end":68,"block_type":"line","text":"useList 커스텀 훅","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":79,"line_end":79,"block_type":"line","text":"정렬 로직","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":94,"line_end":94,"block_type":"line","text":"페이지네이션 처리된 리스트","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":101,"line_end":101,"block_type":"line","text":"페이지네이션 객체","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":114,"line_end":114,"block_type":"line","text":"페이지 범위 검사 함수","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":138,"line_end":138,"block_type":"line","text":"이미 해당 키로 정렬된 항목이 있으면 방향을 반전","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":142,"line_end":142,"block_type":"line","text":"기존 항목을 업데이트한 후 배열에 반영","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":146,"line_end":146,"block_type":"line","text":"해당 키로 정렬된 항목이 없으면 새로운 항목 추가 (기본 asc)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":150,"line_end":150,"block_type":"line","text":"업데이트된 정렬 설정 적용 (세션 스토리지와 state에 저장)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":155,"line_end":155,"block_type":"line","text":"이전 경로를 sessionStorage에서 가져옴","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.bak.txt","lang":"js","line_start":158,"line_end":158,"block_type":"line","text":"현재 경로를 sessionStorage에 저장","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.ts","lang":"js","line_start":15,"line_end":15,"block_type":"jsdoc","text":"고정/공통: url쿼리","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.ts","lang":"js","line_start":18,"line_end":18,"block_type":"jsdoc","text":"고정/공통: 페이지이동, 정렬","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.ts","lang":"js","line_start":24,"line_end":24,"block_type":"jsdoc","text":"페이지 사이즈 변경 핸들러","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.ts","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"첫 페이지로 이동","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.ts","lang":"js","line_start":31,"line_end":31,"block_type":"line","text":"페이지 상단으로 스크롤","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.ts","lang":"js","line_start":35,"line_end":35,"block_type":"jsdoc","text":"현재 limit 값 (기본값: 10)","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useList.ts","lang":"js","line_start":38,"line_end":38,"block_type":"jsdoc","text":"고정/공통: 페이지네이션 객체","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/usePageAction.ts","lang":"js","line_start":17,"line_end":17,"block_type":"line","text":"페이지 상단으로 스크롤","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/usePagination.ts","lang":"js","line_start":22,"line_end":22,"block_type":"line","text":"총 아이템 개수","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/usePagination.ts","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"현재 페이지","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/usePagination.ts","lang":"js","line_start":24,"line_end":24,"block_type":"line","text":"한 페이지에 그려질 아이템 개수","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/usePagination.ts","lang":"js","line_start":25,"line_end":25,"block_type":"line","text":"한 페이지에 그려질 페이지 개수","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/usePagination.ts","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"총 페이지","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/usePagination.ts","lang":"js","line_start":38,"line_end":38,"block_type":"line","text":"페이지네이션 객체","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/usePagination.ts","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"페이지 범위 검사 함수","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useQueryParam.ts","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"추가적인 키-값 쌍 지원","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useQueryParam.ts","lang":"js","line_start":30,"line_end":30,"block_type":"line","text":"숫자 파라미터를 안전하게 파싱하는 유틸리티 함수","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useQueryParam.ts","lang":"js","line_start":39,"line_end":39,"block_type":"line","text":"일 파라미터를 YYYY-MM-DD 형식으로 안전하게 파싱하는 유틸리티 함수","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useQueryParam.ts","lang":"js","line_start":47,"line_end":47,"block_type":"line","text":"YYYY-MM 형식이면 그대로 반환","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useQueryParam.ts","lang":"js","line_start":53,"line_end":53,"block_type":"line","text":"YYYY-MM-DD 형식이면서 유효하면 그대로 반환","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useQueryParam.ts","lang":"js","line_start":56,"line_end":56,"block_type":"line","text":"그 외 형식은 Date로 파싱해서 시도 (ex. 2025/04/17 같은 형식)","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useQueryParam.ts","lang":"js","line_start":82,"line_end":82,"block_type":"line","text":"추가적인 키-값 쌍을 동적으로 포함","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useQueryParam.ts","lang":"js","line_start":85,"line_end":85,"block_type":"line","text":"기본 키가 아닌 경우만 추가","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useQueryParam.ts","lang":"js","line_start":86,"line_end":86,"block_type":"line","text":"문자열 값으로 추가","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useQueryParam.ts","lang":"js","line_start":94,"line_end":96,"block_type":"jsdoc","text":"주어진 key의 쿼리 파라미터 값을 업데이트하거나 추가하는 함수","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/hooks/useWindowWidth.ts","lang":"js","line_start":10,"line_end":10,"block_type":"line","text":"컴포넌트 언마운트 시 이벤트 제거","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/layouts/Header/Header.tsx","lang":"js","line_start":5,"line_end":7,"block_type":"jsdoc","text":"* 메뉴 항목을 순서대로 나열하는 함수","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/layouts/Header/Header.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"앞에 추가","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/layouts/Header/Header.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"line","text":"자식 항목으로 이동","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/layouts/Header/Header.tsx","lang":"js","line_start":24,"line_end":26,"block_type":"jsdoc","text":"* 이동경로 컴퍼넌트","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/layouts/Header/Header.tsx","lang":"js","line_start":83,"line_end":85,"block_type":"jsdoc","text":"* 페이지 헤더 컴퍼넌트","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/layouts/Header/Header.tsx","lang":"js","line_start":98,"line_end":98,"block_type":"line","text":"컴파운드 컴포넌트로 서브 컴포넌트 등록","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/layouts/Navbar/Navbar.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"* 마이페이지 본인확인 플래그 초기화 — 재로그인 시 다시 비밀번호 확인 필요","hangul_chars":30,"class":"4_todo","tags":["4_todo"],"classified_by":"keyword","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/layouts/Navbar/Navbar.tsx","lang":"js","line_start":50,"line_end":51,"block_type":"block","text":"//* 기획(2026-07, company-mockup/기업조직관리자_콘솔.html): corp(기업/조직관리자) 전용\n            마이페이지 진입 아이콘 — 비밀번호 확인 모달 후 이동. admin/sales에는 미노출","hangul_chars":46,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/layouts/Sidebar/Sidebar.tsx","lang":"js","line_start":20,"line_end":22,"block_type":"jsdoc","text":"* path와 targetPath의 일치 여부를 확인하는 함수","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/layouts/Sidebar/Sidebar.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"line","text":"null 또는 undefined 제거","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/layouts/Sidebar/Sidebar.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"line","text":"`isActive` 조건 수정","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/layouts/Sidebar/Sidebar.tsx","lang":"js","line_start":174,"line_end":174,"block_type":"block","text":"중간 구분선","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/layouts/Sidebar/Sidebar.tsx","lang":"js","line_start":191,"line_end":191,"block_type":"block","text":"중간 구분선","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/layouts/Sidebar/Sidebar.tsx","lang":"js","line_start":208,"line_end":208,"block_type":"block","text":"B2C 서비스 관리","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/layouts/Sidebar/Sidebar.tsx","lang":"js","line_start":225,"line_end":225,"block_type":"block","text":"하단 구분선","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/coupon/issued.ts","lang":"js","line_start":16,"line_end":16,"block_type":"line","text":"doccode 대신 description으로 변경","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/coupon/issued.ts","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"필요한 필드만 남김","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/index.ts","lang":"js","line_start":2,"line_end":2,"block_type":"line","text":"객체일 경우 평탄화","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/index.ts","lang":"js","line_start":3,"line_end":3,"block_type":"line","text":"기본 타입은 그대로 반환","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":57,"line_end":57,"block_type":"jsdoc","text":"분석기본->상세 id","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":59,"line_end":59,"block_type":"jsdoc","text":"세부코드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":61,"line_end":61,"block_type":"jsdoc","text":"수술에 해당하는 경우","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":63,"line_end":63,"block_type":"jsdoc","text":"검사에 해당하는 경우","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":65,"line_end":65,"block_type":"jsdoc","text":"숨은보험 치아에 해당하는 경우","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":67,"line_end":67,"block_type":"jsdoc","text":"숨은보험 수술에 해당하는 경우","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":69,"line_end":69,"block_type":"jsdoc","text":"숨은보험 기타에 해당하는 경우","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":71,"line_end":71,"block_type":"jsdoc","text":"치아고지 틀니에 해당하는 경우","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":73,"line_end":73,"block_type":"jsdoc","text":"치아고지 1년에 해당하는 경우","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":75,"line_end":75,"block_type":"jsdoc","text":"치아고지 5년에 해당하는 경우","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":107,"line_end":107,"block_type":"jsdoc","text":"분석기본id","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":115,"line_end":115,"block_type":"jsdoc","text":"진료타입\t입원/외래","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":117,"line_end":117,"block_type":"jsdoc","text":"진단코드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":121,"line_end":121,"block_type":"jsdoc","text":"방문일수\t1: 내원, 1이상 입원","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":123,"line_end":123,"block_type":"jsdoc","text":"11(6)대 질병에 해당하는 경우  ---like 기타 11대질병(건강체) |  6대질병(유병자)","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":125,"line_end":125,"block_type":"jsdoc","text":"숨은보험 진단에 해당하는 경우","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":127,"line_end":127,"block_type":"jsdoc","text":"치아고지 1년에 해당하는 경우 b:1년 진단명 d: 치아고지세부","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":129,"line_end":129,"block_type":"jsdoc","text":"치아고지 5년에 해당하는 경우 b:5년 진단명 d: 치아고지세부","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":131,"line_end":131,"block_type":"jsdoc","text":"기타에 해당하는 경우","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":133,"line_end":133,"block_type":"jsdoc","text":"유병자여부\t1: 유병자","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":135,"line_end":135,"block_type":"jsdoc","text":"투약정보노티값\tex) 혈압, 당뇨, 고지혈증 약 처방 여부 체크","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":139,"line_end":139,"block_type":"jsdoc","text":"투약정보중복여부","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":157,"line_end":157,"block_type":"jsdoc","text":"투약일-약국","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":159,"line_end":159,"block_type":"jsdoc","text":"수술에 해당하는 경우","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":161,"line_end":161,"block_type":"jsdoc","text":"검사에 해당하는 경우","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":163,"line_end":163,"block_type":"jsdoc","text":"해당기본에 대한 상세수량","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":169,"line_end":169,"block_type":"jsdoc","text":"숨은보험 기타","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":171,"line_end":171,"block_type":"jsdoc","text":"숨은보험 수술","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":173,"line_end":173,"block_type":"jsdoc","text":"숨은보험 치아","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":209,"line_end":209,"block_type":"line","text":"외래 총진료비","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":210,"line_end":210,"block_type":"line","text":"입원 총진료비","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":216,"line_end":216,"block_type":"jsdoc","text":"분석상세id","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":218,"line_end":218,"block_type":"jsdoc","text":"진료시작일","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":220,"line_end":220,"block_type":"jsdoc","text":"병/의원&약국","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":224,"line_end":224,"block_type":"jsdoc","text":"타입(외래/입원)","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":226,"line_end":226,"block_type":"jsdoc","text":"주상병코드","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":228,"line_end":228,"block_type":"jsdoc","text":"주상병명","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":230,"line_end":230,"block_type":"jsdoc","text":"진료일수","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":232,"line_end":232,"block_type":"jsdoc","text":"총진료비","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/type/subscription/analysis.ts","lang":"js","line_start":234,"line_end":234,"block_type":"jsdoc","text":"자동차보험 총진료비","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Card.tsx","lang":"js","line_start":3,"line_end":3,"block_type":"line","text":"CardHeader 컴포넌트","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Card.tsx","lang":"js","line_start":8,"line_end":8,"block_type":"line","text":"CardBody 컴포넌트","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Card.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"CardTitle 컴포넌트","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Card.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"CardText 컴포넌트","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Card.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"CardFooter 컴포넌트","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Card.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"Card 컴포넌트","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Card.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"line","text":"컴파운드 컴포넌트로 서브 컴포넌트 등록","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/ExcelUploadModal.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"'file' 키로 파일을 추가","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/ExcelUploadModal.tsx","lang":"js","line_start":39,"line_end":39,"block_type":"line","text":"객체 형태의 응답 처리 (새로운 형식)","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/ExcelUploadModal.tsx","lang":"js","line_start":46,"line_end":46,"block_type":"line","text":"현재 URL로 이동해서 리스트 재조회","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/ExcelUploadModal.tsx","lang":"js","line_start":52,"line_end":52,"block_type":"line","text":"실패 시 메시지 표시","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/ExcelUploadModal.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"레거시 응답 처리 (기존 형식)","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/ExcelUploadModal.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"현재 URL로 이동해서 리스트 재조회","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/ExcelUploadModal.tsx","lang":"js","line_start":87,"line_end":90,"block_type":"line","text":"// File을 Base64로 변환\nconst reader = new FileReader();\nreader.onloadend = () => {\n  const base64String = (reader.result as string)?.split(\",\")[1]; // Base64 데이터만 추출","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/ExcelUploadModal.tsx","lang":"js","line_start":92,"line_end":101,"block_type":"line","text":"// API 요청 보내기\n  upload(base64String).then((res) => {\n    if (res) {\n      // 업로드 성공\n    } else\n      [\n        // 업로드 실패\n      ];\n  });\n};","hangul_chars":15,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/ExcelUploadModal.tsx","lang":"js","line_start":103,"line_end":103,"block_type":"line","text":"reader.readAsDataURL(file); // 파일을 Base64 문자열로 읽기","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/ExcelUploadModal.tsx","lang":"js","line_start":112,"line_end":112,"block_type":"line","text":"컴포넌트가 언마운트될 때 modal-open 클래스를 제거합니다.","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Form.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"line","text":"컴파운드 컴포넌트로서의 서브 컴포넌트 등록","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Input.tsx","lang":"js","line_start":44,"line_end":44,"block_type":"line","text":"FormGroup 컴포넌트","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Input.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"InputGroup 컴포넌트","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Input.tsx","lang":"js","line_start":54,"line_end":54,"block_type":"line","text":"InputGroupText 컴포넌트","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Input.tsx","lang":"js","line_start":62,"line_end":62,"block_type":"line","text":"Append 컴포넌트","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Input.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"Input 컴포넌트","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Input.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"line","text":"컴파운드 컴포넌트로서의 서브 컴포넌트 등록","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Modal.tsx","lang":"js","line_start":10,"line_end":10,"block_type":"jsdoc","text":"true면 모달을 화면 수직 중앙에 배치(modal-dialog-centered)","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Modal.tsx","lang":"js","line_start":12,"line_end":12,"block_type":"jsdoc","text":"size 프리셋 대신 모달 폭을 직접 지정","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Modal.tsx","lang":"js","line_start":14,"line_end":14,"block_type":"jsdoc","text":"modal-content에 덧붙일 클래스(그림자·라운드 등 스타일 보강용)","hangul_chars":20,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Modal.tsx","lang":"js","line_start":16,"line_end":16,"block_type":"jsdoc","text":"지정 시 modal-footer 영역을 별도로 렌더링(버튼 등)","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Modal.tsx","lang":"js","line_start":34,"line_end":34,"block_type":"line","text":"모달이 열릴 때","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Modal.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"line","text":"스크롤 막기","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Modal.tsx","lang":"js","line_start":37,"line_end":37,"block_type":"line","text":"모달이 닫힐 때","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Modal.tsx","lang":"js","line_start":42,"line_end":42,"block_type":"line","text":"컴포넌트 언마운트 시 스타일 초기화","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Timer.tsx","lang":"js","line_start":5,"line_end":5,"block_type":"line","text":"초기 시간 (초 단위)","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Timer.tsx","lang":"js","line_start":6,"line_end":6,"block_type":"line","text":"타이머 종료 시 호출되는 함수","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/Timer.tsx","lang":"js","line_start":28,"line_end":28,"block_type":"line","text":"컴포넌트 언마운트 시 인터벌 클리어","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/statusText.tsx","lang":"js","line_start":3,"line_end":8,"block_type":"jsdoc","text":"목록 상태값 글자색 공용 헬퍼 (2026-07 기획 요청)\n- 공통 규칙: 긍정=파랑 | 부정=빨강 | 제3상태=녹색/주황 | 기본=검정(색 미지정)\n- 사용: format: (row) => statusText(라벨, \"blue\")\n  또는 매핑 테이블과 함께 statusTextByMap(값, VIEW_MAP)","hangul_chars":58,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/shared/ui/statusText.tsx","lang":"js","line_start":18,"line_end":18,"block_type":"jsdoc","text":"라벨에 상태색 적용 — color 미지정/black이면 기본색 그대로","hangul_chars":19,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/shared/ui/statusText.tsx","lang":"js","line_start":35,"line_end":35,"block_type":"jsdoc","text":"값 → {label,color} 매핑 테이블로 표기. 미매핑 값은 fallback(기본: 원래 값 그대로)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail copy.tsx","lang":"js","line_start":7,"line_end":7,"block_type":"line","text":"필드 메타데이터 타입 정의","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail copy.tsx","lang":"js","line_start":13,"line_end":13,"block_type":"jsdoc","text":"인풋타입","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail copy.tsx","lang":"js","line_start":15,"line_end":15,"block_type":"jsdoc","text":"인풋요소","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail copy.tsx","lang":"js","line_start":19,"line_end":19,"block_type":"jsdoc","text":"오류메세지","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail copy.tsx","lang":"js","line_start":21,"line_end":21,"block_type":"jsdoc","text":"히든여부","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail copy.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"jsdoc","text":"클래스네임","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail copy.tsx","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"타입 별 옵션을 설정할 타입 정의","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail copy.tsx","lang":"js","line_start":58,"line_end":58,"block_type":"line","text":"제너릭 타입을 받는 Props","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail copy.tsx","lang":"js","line_start":65,"line_end":65,"block_type":"line","text":"제너릭 타입을 받는 Props","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail copy.tsx","lang":"js","line_start":69,"line_end":69,"block_type":"line","text":"필드 메타데이터 배열","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail copy.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"line","text":"AddDetail 컴포넌트","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":176,"line_end":179,"block_type":"line","text":"try {\n  // FormData를 사용하여 파일 업로드\n  const formData = new FormData();\n  formData.append(\"file\", file);","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":181,"line_end":186,"block_type":"line","text":"// 실제 API 호출\n  const response = await axios.post(\"/api/upload\", formData, {\n    headers: {\n      \"Content-Type\": \"multipart/form-data\",\n    },\n  });","hangul_chars":4,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":188,"line_end":189,"block_type":"line","text":"// API 응답에서 이미지 URL 얻기 (가정: response.data.url)\n  const imageUrl = response.data.url;","hangul_chars":11,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":191,"line_end":197,"block_type":"line","text":"// Quill 에디터에 이미지 삽입\n  const quill = quillRef.current.getEditor();\n  const range = quill.getSelection();\n  quill.insertEmbed(range.index, \"image\", imageUrl); // 이미지 URL을 에디터에 삽입\n} catch (error) {\n  console.error(\"이미지 업로드 실패:\", error);\n}","hangul_chars":27,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":252,"line_end":252,"block_type":"line","text":"기업 조직관리자(또는 role 불명 corp) = 조회전용 → 저장/수정/커스텀 처리 버튼 숨김","hangul_chars":28,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":276,"line_end":276,"block_type":"line","text":"색상 변경 옵션 추가","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":285,"line_end":285,"block_type":"line","text":"코드 블록 추가","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":310,"line_end":310,"block_type":"line","text":"다운로드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":323,"line_end":323,"block_type":"line","text":"Blob을 사용하여 다운로드 처리 (브라우저의 download 속성 문제 우회)","hangul_chars":22,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":334,"line_end":334,"block_type":"line","text":"다운로드 시 저장될 파일 이름 설정","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":355,"line_end":355,"block_type":"line","text":"로컬 상태 업데이트","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":395,"line_end":395,"block_type":"line","text":"모달 닫을 때 URL 해제","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":434,"line_end":434,"block_type":"line","text":"검사기준, 투약기준, 추천보험 페이지는 코드명 검증 제외","hangul_chars":23,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":450,"line_end":450,"block_type":"line","text":"영문/숫자만 있는지 체크","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":473,"line_end":473,"block_type":"line","text":"required가 true인 필드만 필터링","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":479,"line_end":479,"block_type":"line","text":"custom 타입 필드는 폼 요소가 아니므로 여기서 스킵 (handleSuccess에서 별도 검증)","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":485,"line_end":485,"block_type":"line","text":"토글 required 유효성 검사","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":501,"line_end":501,"block_type":"line","text":"해당 조건들을 만족하지 않으면 검사 스킵","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":534,"line_end":534,"block_type":"line","text":"code가 포함된 필드는 공백 제거 후 검증 (검사기준, 투약기준, 추천보험, 병명예측 페이지 제외, select 타입 제외)","hangul_chars":39,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":564,"line_end":564,"block_type":"line","text":"name이 포함된 필드는 공백 제거 (cpdName, cpbName 등)","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":576,"line_end":576,"block_type":"line","text":"필수 필드 검증 (파일 타입 제외)","hangul_chars":12,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":603,"line_end":603,"block_type":"line","text":"팝업용 + 배너용","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":628,"line_end":628,"block_type":"line","text":"팝업 상세 예외처리","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":638,"line_end":638,"block_type":"line","text":"배너 상세 예외처리","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":809,"line_end":809,"block_type":"line","text":"텍스트 줄바꿈 방지","hangul_chars":8,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":853,"line_end":853,"block_type":"line","text":"react-hook-form의 required 비활성화","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":855,"line_end":860,"block_type":"line","text":"HTML5 required 속성 제거\n{...register(field.name as unknown as Path<T>, {\n  required: field.params?.required, // react-hook-form의 required 비활성화\n})}\nrequired={field.params?.required} // HTML5 required 속성 제거\nonInvalid={(field.params?.onInvalid as any) ?? undefined}","hangul_chars":13,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":904,"line_end":904,"block_type":"line","text":"react-hook-form의 required 비활성화","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":906,"line_end":906,"block_type":"line","text":"HTML5 required 속성 제거","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":937,"line_end":937,"block_type":"line","text":"react-hook-form의 required 비활성화","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":1000,"line_end":1000,"block_type":"block","text":"서브 카테고리 Drag & Drop 영역","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":1036,"line_end":1036,"block_type":"line","text":"react-hook-form의 required 비활성화","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":1053,"line_end":1053,"block_type":"line","text":"커스텀 onInput 핸들러가 있으면 먼저 실행","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":1056,"line_end":1056,"block_type":"line","text":"커스텀 핸들러가 있으면 기본 처리 스킵","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":1064,"line_end":1064,"block_type":"line","text":"form 데이터 업데이트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":1071,"line_end":1071,"block_type":"line","text":"form 데이터 업데이트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":1082,"line_end":1082,"block_type":"line","text":"form 데이터 업데이트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":1094,"line_end":1094,"block_type":"line","text":"form 데이터 업데이트","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":1177,"line_end":1177,"block_type":"line","text":"컴포넌트 언마운트 시 생성된 URL 정리","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/AddDetail.tsx","lang":"js","line_start":1371,"line_end":1371,"block_type":"jsdoc","text":"Drag & Drop 가능한 항목 **","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":89,"line_end":89,"block_type":"line","text":"idKey는 T의 키 중 하나로 설정","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":90,"line_end":90,"block_type":"line","text":"컬럼 배열 타입","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":91,"line_end":91,"block_type":"line","text":"리스트 데이터","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":92,"line_end":92,"block_type":"line","text":"상세 URL (옵션)","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":93,"line_end":93,"block_type":"line","text":"체크박스 선택 여부","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":94,"line_end":94,"block_type":"line","text":"체크된 ID 목록","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":95,"line_end":95,"block_type":"line","text":"항목 선택 함수","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":96,"line_end":96,"block_type":"line","text":"상세이동 함수","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":97,"line_end":97,"block_type":"line","text":"순차 인덱스 표시 여부","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":98,"line_end":98,"block_type":"line","text":"체크박스 비활성화 조건 함수","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":133,"line_end":133,"block_type":"line","text":"자동 줄바꿈 허용","hangul_chars":7,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":134,"line_end":134,"block_type":"line","text":"패딩 추가","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":135,"line_end":135,"block_type":"line","text":"줄 간격 조정","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":136,"line_end":136,"block_type":"line","text":"폰트 크기 조정","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":198,"line_end":198,"block_type":"line","text":"타입 추론을 위한 할당","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":200,"line_end":200,"block_type":"line","text":"예외처리","hangul_chars":4,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":218,"line_end":218,"block_type":"line","text":"예외처리","hangul_chars":4,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":242,"line_end":248,"block_type":"line","text":"if (\n  [\"분석완료\", \"자료수집완료\"].find((str) =>\n    item?.orderDetail?.codState?.includes(str)\n  )\n) {\n  disabled = false;\n}","hangul_chars":10,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":346,"line_end":346,"block_type":"line","text":"B2C 담당회원아이디 검색 버튼 활성화 조건","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/DataTable.tsx","lang":"js","line_start":362,"line_end":363,"block_type":"line","text":"* 컬럼 정의의 행 단위 차단 조건 — true면 기본 규칙과 무관하게 비활성\n*   (예: 기업주문관리 주문취소 — 정산확정 건 클릭 차단)","hangul_chars":45,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"jsdoc","text":"sortKey사용시 설정한 prefix","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":73,"line_end":73,"block_type":"jsdoc","text":"id: 상세이동 및 삭제시 키값으로 사용","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":76,"line_end":76,"block_type":"jsdoc","text":"리스트 데이터","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":78,"line_end":78,"block_type":"jsdoc","text":"데이터 테이블에 노출할 리스트 아이템","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":80,"line_end":80,"block_type":"jsdoc","text":"페이지네이션을 그리는데 사용되는 객체값","hangul_chars":18,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":82,"line_end":82,"block_type":"jsdoc","text":"thead의 정렬UI 설정에 사용","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":84,"line_end":84,"block_type":"jsdoc","text":"데이터정렬 함수","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":86,"line_end":86,"block_type":"jsdoc","text":"체크박스 값","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":88,"line_end":88,"block_type":"jsdoc","text":"체크박스 값 저장","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":91,"line_end":91,"block_type":"jsdoc","text":"액션버튼 함수","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":93,"line_end":93,"block_type":"jsdoc","text":"검색 필드","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":95,"line_end":95,"block_type":"jsdoc","text":"순차 인덱스 표시 여부","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":97,"line_end":97,"block_type":"jsdoc","text":"페이지 사이즈 변경 핸들러","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":101,"line_end":101,"block_type":"jsdoc","text":"페이지 사이즈 선택기 표시 여부","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":103,"line_end":103,"block_type":"jsdoc","text":"주의사항 정보","hangul_chars":6,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":105,"line_end":106,"block_type":"jsdoc","text":"검색결과 요약(합산 등)을 검색폼 바로 아래·액션버튼 바로 위에 끼워 넣는 슬롯.\n 액션버튼 줄(\"총 N건\" + 버튼들)과 한 영역처럼 보이도록 이 자리에 배치한다.","hangul_chars":59,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":108,"line_end":109,"block_type":"jsdoc","text":"opt-in: 결과 요약을 별도 줄이 아니라 \"총 N건\" 바로 옆에 같은 줄로 이어 붙인다.\n 미지정 시 기존 렌더(별도 줄 없음)와 동일 — 다른 화면에는 영향 없음.","hangul_chars":53,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":111,"line_end":111,"block_type":"jsdoc","text":"체크박스 비활성화 조건 함수","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":113,"line_end":113,"block_type":"jsdoc","text":"처리성 액션(등록/삭제/업로드/커스텀) 숨김 여부. 미지정 시 기업 조직관리자면 자동 조회전용","hangul_chars":37,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":140,"line_end":140,"block_type":"line","text":"기업 조직관리자(또는 role 불명 corp) = 조회전용. prop 명시 시 그 값 우선.","hangul_chars":22,"class":"1_policy","tags":["1_policy","2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":145,"line_end":145,"block_type":"line","text":"체크박스가 체크된 상태인지 확인합니다.","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":148,"line_end":148,"block_type":"line","text":"비활성화된 항목 제외","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":150,"line_end":150,"block_type":"line","text":"체크된 경우 리스트의 각 아이템의 \"code\" 값을 배열로 수집하고, 체크 해제된 경우 빈 배열을 반환합니다.","hangul_chars":39,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":166,"line_end":166,"block_type":"line","text":"전체 체크박스 상태를 위해 모든 아이템이 선택되었는지 확인","hangul_chars":25,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":170,"line_end":170,"block_type":"line","text":"비활성화되지 않은 항목들만 카운트","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":177,"line_end":177,"block_type":"line","text":"prefix와 camelCase 처리가 적용된 columns 생성","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":183,"line_end":183,"block_type":"line","text":"searchFields의 prefix와 camelCase 처리가 적용된 columns 생성","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":192,"line_end":192,"block_type":"block","text":"주의사항을 검색 영역 위에 표시","hangul_chars":13,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":267,"line_end":267,"block_type":"block","text":"페이지 사이즈 선택기를 주의사항 자리에 배치","hangul_chars":19,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/List.tsx","lang":"js","line_start":338,"line_end":344,"block_type":"block","text":"if (key === \"onRecoveryForCompare\" && action?.handler) {\n                return (\n                  <ActionButtonsBox.UploadButton key={key} onClick={action.handler}>\n                    {action?.text || \"이전데이터복구\"}\n                  </ActionButtonsBox.UploadButton>\n                );\n              }","hangul_chars":7,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/PageSizeSelector.tsx","lang":"js","line_start":8,"line_end":9,"block_type":"jsdoc","text":"\"총 N건\" 옆에 결과 요약(합산 등)을 같은 줄로 이어 붙이는 opt-in 슬롯.\n 미지정 시 기존 렌더와 동일 — 다른 화면에는 영향 없음.","hangul_chars":44,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/PageSizeSelector.tsx","lang":"js","line_start":20,"line_end":20,"block_type":"line","text":"* 1000/10000: 정산 상세 등에서 대량 일괄 선택(단가/반영 변경)용 — 만건 표시는 렌더가 다소 무거울 수 있음","hangul_chars":36,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/PageSizeSelector.tsx","lang":"js","line_start":23,"line_end":23,"block_type":"line","text":"showSelector가 false이거나 onChangePageSize가 없으면 총 개수만 표시","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/PageSizeSelector.tsx","lang":"js","line_start":65,"line_end":65,"block_type":"block","text":"합산 요약(suffix)은 셀렉터 유무와 무관하게 표시 — 셀렉터 모드에서 누락되던 회귀 수정","hangul_chars":32,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":37,"line_end":41,"block_type":"jsdoc","text":"* (1개) 일검색: start, end\n* (1개) 텍스트검색: select type, input text\n* (N개) 상태검색: select type","hangul_chars":15,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"jsdoc","text":"검색버튼","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":54,"line_end":56,"block_type":"line","text":"* dot 표기 필드명(setValue(\"a.b\"))이 만든 중첩 객체는 쿼리스트링으로 직렬화하면\n*   \"[object Object]\"가 되어 서버 입력값 오류(E0003)를 유발 → 제출 전에 제거.\n*   과거 오염된 URL에서 유입된 \"[object Object]\" 문자열 값도 함께 정리.","hangul_chars":63,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"line","text":"searchText가 없으면 searchKey 삭제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":71,"line_end":71,"block_type":"line","text":"startDate or endDate가 없으면 dateType 삭제","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":85,"line_end":85,"block_type":"jsdoc","text":"검색조건 리셋","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":90,"line_end":90,"block_type":"jsdoc","text":"일검색에서 버튼 클릭시 적용","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":107,"line_end":107,"block_type":"line","text":"기본 종료일 설정","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":249,"line_end":249,"block_type":"line","text":"필드 업데이트","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":256,"line_end":256,"block_type":"jsdoc","text":"URL의 queryparam값을 파싱하여, input에 넣어줌","hangul_chars":11,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":259,"line_end":259,"block_type":"line","text":"기본 키 배열","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":271,"line_end":271,"block_type":"line","text":"추가적인 키-값 쌍을 담을 객체 생성","hangul_chars":14,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":276,"line_end":276,"block_type":"line","text":"기본 키를 제외한 키-값 쌍 추가","hangul_chars":12,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":295,"line_end":295,"block_type":"line","text":"URL에 날짜 파라미터가 없고 defaultButton이 설정된 경우 기본 날짜 범위 적용","hangul_chars":24,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":301,"line_end":301,"block_type":"line","text":"추가적인 키-값 쌍 저장","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":318,"line_end":318,"block_type":"jsdoc","text":"검색창 랜더링","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":540,"line_end":540,"block_type":"line","text":"종속 필터 초기화(예: 기업 변경 시 소속조직 선택 리셋)","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":616,"line_end":616,"block_type":"line","text":"👈 드롭다운을 body에 붙여줌","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":630,"line_end":630,"block_type":"line","text":"👈 드롭다운이 위에 보이도록 z-index 설정","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":698,"line_end":1008,"block_type":"block","text":"{isDateField(field) && !isMonthField(field) && (\n            <div className=\"col_bigbox mr-1\">\n              <div className=\"col-sbox select select-100\">\n                <Controller\n                  name=\"dateType\"\n                  control={control}\n                  render={({ field: { onChange, value } }) => (\n                    <select\n                      className=\"in-box select s-in mr-1\"\n                      value={value || \"\"}\n                      onChange={onChange}\n                    >\n                      {field.date.options.map((option) => (\n                        <option key={option.value} value={option.value}>\n                          {option.label}\n                        </option>\n                      ))}\n                    </select>\n                  )}\n                />\n              </div>\n              <div className=\"year-box mr-1\">\n                <Controller\n                  name=\"startDate\"\n                  control={control}\n                  render={({ field: { onChange, value } }) => (\n                    <input\n                      type=\"date\"\n                      className=\"in-box\"\n                      value={value || \"\"}\n                      onChange={onChange}\n                    />\n                  )}\n                />\n                <p>~</p>\n                <Controller\n                  name=\"endDate\"\n                  control={control}\n                  render={({ field: { onChange, value } }) => (\n                    <input\n                      type=\"date\"\n                      className=\"in-box\"\n                      value={value || \"\"}\n                      onChange={onChange}\n                    />\n                  )}\n                />\n              </div>\n              <div className=\"col-sbox\">\n                {field.date.buttons?.map((button) => (\n                  <button\n                    type=\"button\"\n                    className=\"btn btn-secondary btn_margin mr-1\"\n                    key={button}\n                    onClick={() =>\n                      setDateRange(button, field.date.timeScope, \"date\")\n                    }\n                  >\n                    {DateButtonKR[button]}\n                  </button>\n                ))}\n              </div>\n            </div>\n          )}\n          {isMonthField(field) && !isDateField(field) && (\n            <div className=\"col_bigbox mr-1\">\n              <div className=\"col-sbox select select-100\">\n                <Controller\n                  name=\"dateType\"\n                  control={control}\n                  render={({ field: { onChange, value } }) => (\n                    <select\n                      className=\"in-box select s-in mr-1\"\n                      value={value || \"\"}\n                      onChange={onChange}\n                    >\n                      {field.month.options.map((option) => (\n                        <option key={option.value} value={option.value}>\n                          {option.label}\n                        </option>\n                      ))}\n                    </select>\n                  )}\n                />\n              </div>\n              <div className=\"year-box mr-1\">\n                <Controller\n                  name=\"startDate\"\n                  control={control}\n                  render={({ field: { onChange, value } }) => (\n                    <input\n                      type=\"month\"\n                      className=\"in-box\"\n                      value={value || \"\"}\n                      onChange={onChange}\n                    />\n                  )}\n                />\n                <p>~</p>\n                <Controller\n                  name=\"endDate\"\n                  control={control}\n                  render={({ field: { onChange, value } }) => (\n                    <input\n                      type=\"month\"\n                      className=\"in-box\"\n                      value={value || \"\"}\n                      onChange={onChange}\n                    />\n                  )}\n                />\n              </div>\n              <div className=\"col-sbox\">\n                {field.month.buttons?.map((button) => (\n                  <button\n                    type=\"button\"\n                    className=\"btn btn-secondary btn_margin mr-1\"\n                    key={button}\n                    onClick={() =>\n                      setDateRange(button, field.month.timeScope, \"month\")\n                    }\n                  >\n                    {DateButtonKR[button]}\n                  </button>\n                ))}\n              </div>\n            </div>\n          )}\n          {isSelectField(field) && (\n            <>\n              {_.map(field.select, (select, index) => (\n                <div\n                  key={`sel_${index}`}\n                  className=\"d-inline-flex align-items-center bg-white rounded mr-2 in-box select\"\n                  style={{\n                    width: \"240px\",\n                    height: \"38px\",\n                    paddingRight: \"0\",\n                    border: \"1px solid #ced4da\",\n                  }}\n                >\n                  <label\n                    className=\"mb-0 pr-2 py-2 text-secondary\"\n                    style={{\n                      fontSize: \"13px\",\n                      whiteSpace: \"nowrap\",\n                      color: \"#333\",\n                    }}\n                  >\n                    {select.label}\n                  </label>\n\n                  <div className=\"border-left\" style={{ height: \"16px\" }} />\n\n                  <Controller\n                    name={select.name}\n                    control={control}\n                    render={({ field: { onChange, value } }) => {\n                      return (\n                        <div className=\"col-sbox select\">\n                          <select\n                            className=\"form-control border-0 bg-transparent in-box\"\n                            style={{\n                              fontSize: \"15px\",\n                              lineHeight: \"unset\",\n                              cursor: \"pointer\",\n                              padding: \"6px 24px 8px 12px\",\n                            }}\n                            title={\n                              select.options.find(\n                                (option) => option.value === value\n                              )?.label || \"\"\n                            }\n                            value={value || \"\"}\n                            onChange={(e) => {\n                              onChange(e);\n                              select?.onChange(e.currentTarget.value);\n                            }}\n                          >\n                            {select.options.map((option) => (\n                              <option key={option.value} value={option.value}>\n                                {option.label}\n                              </option>\n                            ))}\n                          </select>\n                        </div>\n                      );\n                    }}\n                  />\n                </div>\n              ))}\n            </>\n          )}\n          {isComboField(field) && (\n            <>\n              {_.map(field.combo, (select, index) => (\n                <div\n                  key={`sel_${index}`}\n                  className=\"d-inline-flex align-items-center bg-white rounded mr-2\"\n                  style={{\n                    width: \"240px\",\n                    height: \"38px\",\n                    border: \"1px solid #ced4da\",\n                  }}\n                >\n                  <label\n                    className=\"mb-0 px-3 py-2 text-secondary\"\n                    style={{\n                      fontSize: \"13px\",\n                      lineHeight: \"1.5\",\n                      height: \"38px\",\n                      whiteSpace: \"nowrap\",\n                      color: \"#333\",\n                    }}\n                  >\n                    {select.label}\n                  </label>\n\n                  <div\n                    className=\"border-left\"\n                    style={{ height: \"16px\", margin: \"8px 0\" }}\n                  />\n\n                  <Controller\n                    name={select.name}\n                    control={control}\n                    render={({ field: { onChange, value } }) => {\n                      const selectedOption = select.options.find(\n                        (opt: any) => String(opt.value) === String(value)\n                      );\n\n                      return (\n                        <div style={{ flex: 1 }}>\n                          <Select\n                            classNamePrefix=\"custom-select\"\n                            options={select.options}\n                            value={selectedOption}\n                            onChange={(selectedOption) => {\n                              onChange(selectedOption?.value || \"\");\n                              select?.onChange(selectedOption?.value || \"\");\n                            }}\n                            isClearable\n                            placeholder=\"선택 또는 검색\"\n                            menuPortalTarget={document.body} // 👈 드롭다운을 body에 붙여줌\n                            styles={{\n                              control: (provided) => ({\n                                ...provided,\n                                border: \"none\",\n                                boxShadow: \"none\",\n                                minHeight: \"36px\",\n                              }),\n                              container: (provided) => ({\n                                ...provided,\n                                fontSize: \"15px\",\n                              }),\n                              menuPortal: (base) => ({\n                                ...base,\n                                zIndex: 9999, // 👈 드롭다운이 위에 보이도록 z-index 설정\n                              }),\n                              indicatorSeparator: () => ({\n                                display: \"none\",\n                              }),\n                              indicatorsContainer: (base, props) => ({}),\n                            }}\n                          />\n                        </div>\n                      );\n                    }}\n                  />\n                </div>\n              ))}\n            </>\n          )}\n          {isInputField(field) && (\n            <div className=\"col_bigbox mr-1\">\n              <div className=\"col-sbox select\">\n                <Controller\n                  name=\"searchKey\"\n                  control={control}\n                  render={({ field: { onChange, value } }) => {\n                    return (\n                      <select\n                        className=\"in-box select s-in mr-1\"\n                        value={value || \"\"}\n                        onChange={onChange}\n                      >\n                        {field.input.options.map((option) => (\n                          <option key={option.value} value={option.value}>\n                            {option.label}\n                          </option>\n                        ))}\n                      </select>\n                    );\n                  }}\n                />\n              </div>\n              <Controller\n                name=\"searchText\"\n                control={control}\n                render={({ field: { onChange, value } }) => (\n                  <input\n                    type=\"text\"\n                    className=\"in-box select-100 search-w mr-1\"\n                    placeholder={field.input.placeholder}\n                    value={value || \"\"}\n                    onChange={onChange}\n                  />\n                )}\n              />\n            </div>\n          )}","hangul_chars":28,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":1015,"line_end":1019,"block_type":"line","text":"* URL(queryParams)이 바뀔 때만 폼을 재초기화한다.\n*   fields는 부모 리렌더마다 identity가 바뀌는 인라인 객체라, fields 기준으로 재초기화하면\n*   select onChange(예: 기업명 → 소속조직 옵션 로딩 state 변경)로 리렌더될 때마다\n*   사용자가 방금 바꾼 선택값이 URL의 이전 값으로 되돌아가는 버그가 생긴다(기업구독/기업주문 필터).\neslint-disable-next-line react-hooks/exhaustive-deps","hangul_chars":102,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/SearchForm.tsx","lang":"js","line_start":1025,"line_end":1025,"block_type":"line","text":"쿼리스트링 키밸류쌍을 검색 useForm에 setValue로 저장함","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchFormX.tsx","lang":"js","line_start":32,"line_end":32,"block_type":"line","text":"YYYY-MM-DD 형식으로 변환","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchFormX.tsx","lang":"js","line_start":40,"line_end":45,"block_type":"jsdoc","text":"TODO: 확장 가능한 기능\n1. 당일, 일주일, 한달 버튼 사용자 지정 생성(현재 버튼 고정)\n2. 당일, 일주일, 한달 버튼 과거/미래 선택 가능(현재는 과거 고정)\n3. 일자검색이 단일이 아닌 복수가 필요할 경우, name중복이 되기에 그에 맞는 props값을 받는 수정이 가능","hangul_chars":90,"class":"4_todo","tags":["4_todo"],"classified_by":"keyword","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchFormX.tsx","lang":"js","line_start":49,"line_end":49,"block_type":"line","text":"daysOffset만큼 이전 일 계산","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchFormX.tsx","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"endDate는 오늘 일로 설정","hangul_chars":7,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchFormX.tsx","lang":"js","line_start":57,"line_end":57,"block_type":"block","text":"일자검색 타입 선택","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchFormX.tsx","lang":"js","line_start":67,"line_end":67,"block_type":"block","text":"시작일 ~ 종료일","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchFormX.tsx","lang":"js","line_start":81,"line_end":81,"block_type":"block","text":"당일: 0일 전","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchFormX.tsx","lang":"js","line_start":90,"line_end":90,"block_type":"block","text":"일주일: 7일 전","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchFormX.tsx","lang":"js","line_start":99,"line_end":99,"block_type":"block","text":"한달: 30일 전","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchFormX.tsx","lang":"js","line_start":118,"line_end":118,"block_type":"block","text":"검색타입 선택","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchFormX.tsx","lang":"js","line_start":129,"line_end":129,"block_type":"block","text":"검색영역","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchFormX.tsx","lang":"js","line_start":137,"line_end":137,"block_type":"block","text":"검색버튼","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/SearchFormX.tsx","lang":"js","line_start":140,"line_end":140,"block_type":"block","text":"초기화버튼","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/noticeInfo.ts","lang":"js","line_start":1,"line_end":1,"block_type":"line","text":"각 페이지별 주의사항 정보","hangul_chars":11,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"src/widgets/noticeInfo.ts","lang":"js","line_start":3,"line_end":3,"block_type":"line","text":"기업구독실패","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/noticeInfo.ts","lang":"js","line_start":8,"line_end":8,"block_type":"line","text":"분석관리","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/noticeInfo.ts","lang":"js","line_start":13,"line_end":13,"block_type":"line","text":"기본/세부데이터 관리","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/noticeInfo.ts","lang":"js","line_start":18,"line_end":18,"block_type":"line","text":"알림톡관리","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/noticeInfo.ts","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"기업관리","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/noticeInfo.ts","lang":"js","line_start":51,"line_end":51,"block_type":"line","text":"기업계약관리","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/noticeInfo.ts","lang":"js","line_start":63,"line_end":63,"block_type":"line","text":"기업회원관리","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/noticeInfo.ts","lang":"js","line_start":83,"line_end":83,"block_type":"line","text":"일반주문 관리","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/noticeInfo.ts","lang":"js","line_start":97,"line_end":97,"block_type":"line","text":"기업주문 관리","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/noticeInfo.ts","lang":"js","line_start":112,"line_end":112,"block_type":"line","text":"기업정산관리","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"src/widgets/noticeInfo.ts","lang":"js","line_start":117,"line_end":117,"block_type":"line","text":"고객센터 카테고리","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":33,"line_end":34,"block_type":"line","text":"옵션은 아래와 같은 형식으로 구성되어 있습니다.\n\"모듈 키\": 모듈 값                        /* 설명: 사용가능 옵션 (설명이 \"~ 여부\"인 경우 'true', 'false') */","hangul_chars":42,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":36,"line_end":36,"block_type":"block","text":"//* 기본 옵션","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":37,"line_end":37,"block_type":"line","text":"\"incremental\": true,                   /* 증분 컴파일 설정 여부 */","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":38,"line_end":38,"block_type":"block","text":"사용할 특정 ECMAScript 버전 설정: 'ES3' (기본), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 혹은 'ESNEXT'.","hangul_chars":13,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":39,"line_end":40,"block_type":"line","text":"\"module\": \"commonjs\" /* 모듈을 위한 코드 생성 설정: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,\n\"lib\": [],                             /* 컴파일에 포함될 라이브러리 파일 목록 */","hangul_chars":27,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":41,"line_end":41,"block_type":"block","text":"자바스크립트 파일 컴파일 허용 여부","hangul_chars":15,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":42,"line_end":42,"block_type":"line","text":"\"checkJs\": true /* .js 파일의 오류 검사 여부 */","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":43,"line_end":43,"block_type":"block","text":"JSX 코드 생성 설정: 'preserve', 'react-native', 혹은 'react'.","hangul_chars":8,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":44,"line_end":56,"block_type":"line","text":"\"declaration\": true,                   /* '.d.ts' 파일 생성 여부. */\n\"declarationMap\": true,                /* 각 '.d.ts' 파일의 소스맵 생성 여부. */\n\"sourceMap\": true,                     /* '.map' 파일 생성 여부. */\n\"outFile\": \"./\",                       /* 단일 파일로 합쳐서 출력합니다. */\n\"outDir\": \"./\",                        /* 해당 디렉토리로 결과 구조를 보냅니다. */\n\"rootDir\": \"./\",                       /* 입력 파일의 루트 디렉토리(rootDir) 설정으로 --outDir로 결과 디렉토리 구조를 조작할 때 사용됩니다. */\n\"composite\": true,                     /* 프로젝트 컴파일 여부 */\n\"tsBuildInfoFile\": \"./\",               /* 증분 컴파일 정보를 저장할 파일 */\n\"removeComments\": true,                /* 주석 삭제 여부 */\n\"noEmit\": true,                        /* 결과 파일 내보낼지 여부 */\n\"importHelpers\": true,                 /* 'tslib'에서 헬퍼를 가져올 지 여부 */\n\"downlevelIteration\": true,            /* 타겟이 'ES5', 'ES3'일 때에도 'for-of', spread 그리고 destructuring 문법 모두 지원 */\n\"isolatedModules\": true,               /* 각 파일을 분리된 모듈로 트랜스파일 ('ts.transpileModule'과 비슷합니다). */","hangul_chars":172,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":58,"line_end":58,"block_type":"block","text":"//* 엄격한 타입-확인 옵션","hangul_chars":9,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":59,"line_end":66,"block_type":"line","text":"\"strict\": true /* 모든 엄격한 타입-체킹 옵션 활성화 여부 */,\n\"noImplicitAny\": true,                 /* 'any' 타입으로 구현된 표현식 혹은 정의 에러처리 여부 */\n\"strictNullChecks\": true,              /* 엄격한 null 확인 여부 */\n\"strictFunctionTypes\": true,           /* 함수 타입에 대한 엄격한 확인 여부 */\n\"strictBindCallApply\": true,           /* 함수에 엄격한 'bind', 'call' 그리고 'apply' 메소드 사용 여부 */\n\"strictPropertyInitialization\": true,  /* 클래스의 값 초기화에 엄격한 확인 여부 */\n\"noImplicitThis\": true,                /* 'any' 타입으로 구현된 'this' 표현식 에러처리 여부 */\n\"alwaysStrict\": true,                  /* strict mode로 분석하고 모든 소스 파일에 \"use strict\"를 추가할 지 여부 */","hangul_chars":124,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":68,"line_end":68,"block_type":"block","text":"//* 추가적인 확인","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":69,"line_end":72,"block_type":"line","text":"\"noUnusedLocals\": true,                /* 사용되지 않은 지역 변수에 대한 에러보고 여부 */\n\"noUnusedParameters\": true,            /* 사용되지 않은 파라미터에 대한 에러보고 여부 */\n\"noImplicitReturns\": true,             /* 함수에서 코드의 모든 경로가 값을 반환하지 않을 시 에러보고 여부 */\n\"noFallthroughCasesInSwitch\": true,    /* switch문에서 fallthrough 케이스에 대한 에러보고 여부 */","hangul_chars":80,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":74,"line_end":74,"block_type":"block","text":"//* 모듈 해석 옵션","hangul_chars":6,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":75,"line_end":84,"block_type":"line","text":"\"moduleResolution\": \"node\",            /* 모듈 해석 방법 설정: 'node' (Node.js) 혹은 'classic' (TypeScript pre-1.6). */\n\"baseUrl\": \"./\",                       /* non-absolute한 모듈 이름을 처리할 기준 디렉토리 */\n\"paths\": {},                           /* 'baseUrl'를 기준으로 불러올 모듈의 위치를 재지정하는 엔트리 시리즈 */\n\"rootDirs\": [],                        /* 결합된 컨텐츠가 런타임에서의 프로젝트 구조를 나타내는 루트 폴더들의 목록 */\n\"typeRoots\": []                        /* 타입 정의를 포함할 폴더 목록, 설정 안 할 시 기본적으로 ./node_modules/@types로 설정 */\n\"types\": [],                           /* 컴파일중 포함될 타입 정의 파일 목록 */\n\"allowSyntheticDefaultImports\": true,  /* default export이 아닌 모듈에서도 default import가 가능하게 할 지 여부, 해당 설정은 코드 추출에 영향은 주지 않고, 타입확인에만 영향을 줍니다. */\n\"esModuleInterop\": true /* 모든 imports에 대한 namespace 생성을 통해 CommonJS와 ES Modules 간의 상호 운용성이 생기게할 지 여부,  'allowSyntheticDefaultImports'를 암시적으로 승인합니다. */,\n\"preserveSymlinks\": true,              /* symlik의 실제 경로를 처리하지 않을 지 여부 */\n\"allowUmdGlobalAccess\": true,          /* UMD 전역을 모듈에서 접근할 수 있는 지 여부 */","hangul_chars":236,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":86,"line_end":86,"block_type":"block","text":"//* 소스 맵 옵션","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":87,"line_end":90,"block_type":"line","text":"\"sourceRoot\": \"\",                      /* 소스 위치 대신 디버거가 알아야 할 TypeScript 파일이 위치할 곳 */\n\"mapRoot\": \"\",                         /* 생성된 위치 대신 디버거가 알아야 할 맵 파일이 위치할 곳 */\n\"inlineSourceMap\": true,               /* 분리된 파일을 가지고 있는 대신, 단일 파일을 소스 맵과 가지고 있을 지 여부 */\n\"inlineSources\": true,                 /* 소스맵과 나란히 소스를 단일 파일로 내보낼 지 여부, '--inlineSourceMap' 혹은 '--sourceMap'가 설정되어 있어야 한다. */","hangul_chars":107,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":92,"line_end":92,"block_type":"block","text":"//* 실험적 옵션","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":93,"line_end":94,"block_type":"line","text":"\"experimentalDecorators\": true,        /* ES7의 decorators에 대한 실험적 지원 여부 */\n\"emitDecoratorMetadata\": true,         /* decorator를 위한 타입 메타데이터를 내보내는 것에 대한 실험적 지원 여부 */","hangul_chars":37,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":96,"line_end":96,"block_type":"block","text":"//* 추가적 옵션","hangul_chars":5,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"tsconfig.node.json","lang":"jsonc","line_start":97,"line_end":98,"block_type":"line","text":"\"skipLibCheck\": true /* 정의 파일의 타입 확인을 건너 뛸 지 여부 */,\n\"forceConsistentCasingInFileNames\": true /* 같은 파일에 대한 일관되지 않은 참조를 허용하지 않을 지 여부 */","hangul_chars":41,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"vite.config.constants.ts","lang":"js","line_start":21,"line_end":27,"block_type":"jsdoc","text":"vite는 비동기적으로 불러오는 chunk내에 css코드가 포함된 경우, 이를 자동으로 추출해 파일로 분리하고 해당 chunk를 불러올 떄\nlink태그를 이용해 분리된 css코드를 불러오고 css가 모두 계산된 후에 chunk를 렌더링 한다.\ncss가 렌더링될 때 화면이 깜빡이는 FOUC현상을 회피하기 위해서\n\n모든 css가 일반적인 각각의 파일로 저장된 경우라면 굳이 codeSplit을 사용할 필요가 없기 때문에 false를 사용하면 된다.","hangul_chars":138,"class":"2_rationale","tags":["2_rationale"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"vite.config.constants.ts","lang":"js","line_start":33,"line_end":33,"block_type":"line","text":"Change // CommonJS 모듈과 ES 모듈의 혼합 사용을 허용. CommonJS 모듈을 ES 모듈로 변환할 수 있도록 설정","hangul_chars":28,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"vite.config.constants.ts","lang":"js","line_start":34,"line_end":50,"block_type":"jsdoc","text":"minify: boolean | 'terser' | 'esbuild'\n\nbuild:\n필요없는 공백 및 주석 삭제하여 파일용량 최소화\n서버측에서 이해할 수 있는 언어로의 변환 또는 스크립트 해석이 불가능 하도록 암호화\n\nboolean: 코드 경량화 사용 여부\n\nterser:\nminifier 빌드툴\n복호화 수준이 그리 높지 않다. 변수명을 줄이는 정도\n\nesbuild:\n기본값\nterser보다 20~40배 빠르며 압축률은 1~2%정도밖에 떨어지지 않음","hangul_chars":111,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"vite.config.constants.ts","lang":"js","line_start":51,"line_end":58,"block_type":"line","text":"콘솔로그 제거하기\nminify: \"terser\",\nterserOptions: {\n  compress: {\n    drop_console: true,\n    drop_debugger: true,\n  },\n},","hangul_chars":8,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"vite.config.constants.ts","lang":"js","line_start":61,"line_end":63,"block_type":"line","text":"! define\n* ★보안: process.env를 번들에 통째 인라인하면 미사용 시크릿(클라 노출용 키)까지 번들에 박힌다.\n*   민감 키는 제외 — 코드 참조가 0이므로 빼도 안전하고, 번들에서 값 자체가 사라진다.","hangul_chars":65,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"vite.config.constants.ts","lang":"js","line_start":87,"line_end":88,"block_type":"line","text":"! clearScreen\n* 특정 메시지를 기록할 때 Vite가 터미널 화면을 지우지 않도록 하려면 로 설정","hangul_chars":29,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"vite.config.constants.ts","lang":"js","line_start":91,"line_end":92,"block_type":"line","text":"! logLevel\n* 콘솔 출력 세부 정보를 조정합니다. 기본값은 'info'입니다.","hangul_chars":21,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"vite.config.constants.ts","lang":"js","line_start":111,"line_end":116,"block_type":"jsdoc","text":"* 캐시 파일을 저장할 디렉토리\n* 이 디렉터리의 파일은 vite에서 생성한 미리 번들된 dep 또는 기타 캐시 파일이므로 성능을 향상시킬 수 있습니다.\n* --force 플래그를 사용하거나 디렉토리를 수동으로 삭제하여 캐시 파일을 재생성할 수 있습니다.\n* default: \"node_modules/.vite\"","hangul_chars":90,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"vite.config.constants.ts","lang":"js","line_start":135,"line_end":135,"block_type":"line","text":"이미 사용중인 포트에 대한 자동 실행 여부","hangul_chars":17,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"vite.config.ts","lang":"js","line_start":14,"line_end":14,"block_type":"line","text":"빈 CSS 파일에 대한 경고 무시","hangul_chars":10,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"vite.config.ts","lang":"js","line_start":21,"line_end":21,"block_type":"line","text":"const data = await asyncFunction() // config 구성에 비동기 함수를 호출해야 할 경우","hangul_chars":16,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"vite.config.ts","lang":"js","line_start":23,"line_end":24,"block_type":"line","text":"mode를 기준으로 env를 로드\n세 번째 매개변수를 \"\"로 설정하여 \"VITE_\"접두사에 관계없이 모든 env를 로드","hangul_chars":34,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
{"file":"vite.config.ts","lang":"js","line_start":27,"line_end":27,"block_type":"line","text":"* dev specific config // dev or serve시 사용될 config","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"vite.config.ts","lang":"js","line_start":30,"line_end":31,"block_type":"line","text":"default: \"/\"\n* env를 재 정의","hangul_chars":4,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"vite.config.ts","lang":"js","line_start":41,"line_end":41,"block_type":"line","text":"* 플러그인","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"vite.config.ts","lang":"js","line_start":46,"line_end":47,"block_type":"line","text":"command === 'build'\n* build specific config // build시 사용될 config","hangul_chars":4,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"vite.config.ts","lang":"js","line_start":50,"line_end":51,"block_type":"line","text":"default: \"/\"\n* env를 재 정의","hangul_chars":4,"class":"5_dead","tags":["5_dead"],"classified_by":"code","commented_out":true,"policy_candidate":false,"legal_boilerplate":false}
{"file":"vite.config.ts","lang":"js","line_start":61,"line_end":61,"block_type":"line","text":"* 플러그인","hangul_chars":4,"class":"3_impl","tags":[],"classified_by":"fallback","commented_out":false,"policy_candidate":false,"legal_boilerplate":false}
{"file":"vite.config.ts","lang":"js","line_start":66,"line_end":68,"block_type":"line","text":"* ★보안: 프로덕션/스테이징 빌드에서 console·debugger 제거. 회원 PII(이름/전화/분석데이터)가\n*   다수 console.log로 번들에 남아 브라우저 콘솔·확장·세션리플레이에 노출되던 것 차단. dev(serve)는\n*   유지(디버깅). esbuild는 serve 브랜치엔 없으므로 build에서만 drop.","hangul_chars":76,"class":"1_policy","tags":["1_policy"],"classified_by":"keyword","commented_out":false,"policy_candidate":true,"legal_boilerplate":false}
