[{"data":1,"prerenderedAt":4345},["ShallowReactive",2],{"doc:\u002Fadmin-plan":3},{"id":4,"title":5,"body":6,"description":422,"extension":4339,"meta":4340,"navigation":3337,"path":4341,"seo":4342,"stem":4343,"__hash__":4344},"docs\u002FADMIN-PLAN.md","관리자(malgn-helper-admin) 기획서",{"type":7,"value":8,"toc":4260},"minimark",[9,19,31,34,39,52,96,113,115,119,133,213,218,368,377,381,400,407,409,413,423,427,453,457,480,485,488,656,660,663,795,799,902,906,1024,1028,1031,1135,1139,1145,1149,1183,1190,1193,1199,1201,1205,1211,1217,1222,1239,1244,1255,1261,1267,1269,1275,1280,1338,1343,1385,1395,1400,1443,1448,1492,1497,1505,1507,1513,1517,1528,1611,1620,1788,1797,1800,1906,1918,1923,1962,1966,1973,1979,1987,2017,2024,2033,2038,2099,2104,2118,2125,2128,2180,2183,2200,2204,2261,2263,2269,2273,2310,2315,2328,2332,2358,2360,2371,2375,2386,2394,2396,2405,2417,2421,2488,2493,2499,2504,2512,2517,2543,2545,2549,2563,2568,2597,2602,2608,2613,2624,2629,2649,2654,2678,2680,2688,2692,2706,2710,2718,2720,2728,2740,2743,2751,2753,2759,2764,2801,2811,2817,2819,2825,2839,2841,2847,2870,2872,2878,2904,2906,2912,2916,2930,2934,2948,2954,2956,2960,2964,3116,3120,3153,3157,3233,3240,3242,3246,3250,3261,3284,3288,3291,3559,3562,3673,3675,3679,3684,3688,3721,3727,3731,3758,3768,3772,3787,3795,3799,3828,3833,3837,3862,3867,3869,3873,3911,3913,3917,4130,4134,4247,4249,4253,4256],[10,11,13,14,18],"h1",{"id":12},"관리자malgn-helper-admin-기획서","관리자(",[15,16,17],"code",{},"malgn-helper-admin",") 기획서",[20,21,22],"blockquote",{},[23,24,25,26,30],"p",{},"최종 현행화 — 2026-06-08 · ",[27,28,29],"strong",{},"맑은소프트 직원 전용"," (협력사 미고려) · 3 역할(관리자·개발자·상담사) · 챗봇 도입 전 필요한 전부 + 설정·계정 포함 MVP",[32,33],"hr",{},[35,36,38],"h2",{"id":37},"_1-목적","1. 목적",[23,40,41,43,44,47,48,51],{},[15,42,17],{},"은 CS 챗봇(",[15,45,46],{},"malgn-helper",")이 정상 동작하기 위한 ",[27,49,50],{},"자산 큐레이션과 운영 도구","를 담는다.",[53,54,55,62,68,78,84,90],"ul",{},[56,57,58,61],"li",{},[27,59,60],{},"자료 자산",": 매뉴얼·PDF·동영상 등 챗봇이 답변 근거로 삼을 원본 문서",[56,63,64,67],{},[27,65,66],{},"표준답변 자산",": 검증된 한국어 답변(1순위 소스)",[56,69,70,73,74,77],{},[27,71,72],{},"이미지 자산",": 게시물·답변에서 추출되어 자동 캡션된 화면 자산 (",[15,75,76],{},"hp_image_asset",")",[56,79,80,83],{},[27,81,82],{},"운영 모니터링",": LLM 비용·Q&A 평가·챗 로그·에스컬레이션",[56,85,86,89],{},[27,87,88],{},"설정",": 모델·시스템 프롬프트·캐싱·안전 가드",[56,91,92,95],{},[27,93,94],{},"계정·권한",": 운영자\u002F상담사 분리",[20,97,98],{},[23,99,100,101,104,105,108,109,112],{},"기존 PMS의 ",[15,102,103],{},"\u002Fadmin\u002Fcost",", ",[15,106,107],{},"\u002Fadmin\u002Fevals"," 페이지는 ",[27,110,111],{},"유지"," — 상담사가 PMS 흐름 안에서 보던 경험을 끊지 않는다. admin은 같은 데이터를 운영자 관점으로 재구성해 제공.",[32,114],{},[35,116,118],{"id":117},"_2-사용자역할","2. 사용자·역할",[23,120,121,124,125,128,129,132],{},[27,122,123],{},"전제"," — 맑은소프트 직원 전용. 협력사·고객사는 admin 접근 불가. 식별은 ",[15,126,127],{},"@malgnsoft.com"," 이메일 + 메모리에 등록된 직원 룰(",[15,130,131],{},"tb_user.company='맑은소프트'",").",[134,135,136,155],"table",{},[137,138,139],"thead",{},[140,141,142,146,149,152],"tr",{},[143,144,145],"th",{},"역할",[143,147,148],{},"약자",[143,150,151],{},"주요 책임",[143,153,154],{},"핵심 화면",[156,157,158,177,195],"tbody",{},[140,159,160,166,171,174],{},[161,162,163],"td",{},[27,164,165],{},"관리자",[161,167,168],{},[15,169,170],{},"admin",[161,172,173],{},"시스템 전반 책임, 계정·예산·정책 결정",[161,175,176],{},"모든 화면",[140,178,179,184,189,192],{},[161,180,181],{},[27,182,183],{},"개발자(기술 지원)",[161,185,186],{},[15,187,188],{},"developer",[161,190,191],{},"자료 인덱싱·AI 설정·캐싱·연동·이미지 큐레이션",[161,193,194],{},"자료·이미지·설정·로그·통계",[140,196,197,202,207,210],{},[161,198,199],{},[27,200,201],{},"상담사",[161,203,204],{},[15,205,206],{},"agent",[161,208,209],{},"표준답변 제안·에스컬레이션 처리·챗 로그 검토",[161,211,212],{},"표준답변·에스컬레이션·챗 로그·이미지 조회",[214,215,217],"h3",{"id":216},"_2-1-권한-매트릭스","2-1. 권한 매트릭스",[134,219,220,235],{},[137,221,222],{},[140,223,224,227,230,233],{},[143,225,226],{},"액션",[143,228,165],{"align":229},"center",[143,231,232],{"align":229},"개발자",[143,234,201],{"align":229},[156,236,237,250,261,273,288,300,311,322,333,344,355],{},[140,238,239,242,245,247],{},[161,240,241],{},"자료 업로드·재인덱싱·삭제",[161,243,244],{"align":229},"✅",[161,246,244],{"align":229},[161,248,249],{"align":229},"❌",[140,251,252,255,257,259],{},[161,253,254],{},"자료 조회",[161,256,244],{"align":229},[161,258,244],{"align":229},[161,260,244],{"align":229},[140,262,263,266,268,270],{},[161,264,265],{},"표준답변 등록·편집",[161,267,244],{"align":229},[161,269,244],{"align":229},[161,271,272],{"align":229},"✅ (제안)",[140,274,275,282,284,286],{},[161,276,277,278,281],{},"표준답변 ",[27,279,280],{},"승인","·반려·삭제",[161,283,244],{"align":229},[161,285,244],{"align":229},[161,287,249],{"align":229},[140,289,290,293,295,297],{},[161,291,292],{},"이미지 카탈로그 편집·태깅·숨김",[161,294,244],{"align":229},[161,296,244],{"align":229},[161,298,299],{"align":229},"❌ (조회만)",[140,301,302,305,307,309],{},[161,303,304],{},"챗 로그 열람",[161,306,244],{"align":229},[161,308,244],{"align":229},[161,310,244],{"align":229},[140,312,313,316,318,320],{},[161,314,315],{},"에스컬레이션 처리",[161,317,244],{"align":229},[161,319,244],{"align":229},[161,321,244],{"align":229},[140,323,324,327,329,331],{},[161,325,326],{},"AI 설정·안전 가드·캐싱",[161,328,244],{"align":229},[161,330,244],{"align":229},[161,332,249],{"align":229},[140,334,335,338,340,342],{},[161,336,337],{},"외부 연동(Slack·이메일)",[161,339,244],{"align":229},[161,341,244],{"align":229},[161,343,249],{"align":229},[140,345,346,349,351,353],{},[161,347,348],{},"계정 초대·역할 변경·비활성",[161,350,244],{"align":229},[161,352,249],{"align":229},[161,354,249],{"align":229},[140,356,357,360,362,365],{},[161,358,359],{},"감사 로그 열람",[161,361,244],{"align":229},[161,363,364],{"align":229},"✅ (자기 + 시스템)",[161,366,367],{"align":229},"❌ (자기 것만)",[20,369,370],{},[23,371,372,373,376],{},"개발자와 관리자는 운영 책임을 공유한다. 차이는 ",[27,374,375],{},"계정 관리·예산 정책"," 한정.",[214,378,380],{"id":379},"_2-2-역할-결정-흐름","2-2. 역할 결정 흐름",[53,382,383,388,397],{},[56,384,385,386],{},"가입 시 기본 ",[15,387,206],{},[56,389,390,391,393,394,396],{},"관리자가 ",[15,392,188],{}," 또는 ",[15,395,170],{},"으로 승격",[56,398,399],{},"초대 링크에는 역할 미리 지정 가능 (관리자만 발급)",[23,401,402,403,406],{},"API 측 미들웨어: ",[15,404,405],{},"requireRole('admin' | 'developer' | 'agent' | { any: [...] })",".",[32,408],{},[35,410,412],{"id":411},"_3-정보-구조-ia","3. 정보 구조 (IA)",[414,415,420],"pre",{"className":416,"code":418,"language":419},[417],"language-text","malgn-helper-admin.pages.dev\n├─ \u002F                          홈 · 전체 KPI 대시보드 · 최근 활동\n├─ \u002Flogin                     로그인 (구글 OAuth 또는 자체)\n│\n├─ \u002Fmaterials                 자료 ───────────────────────────────────\n│  ├─ \u002Fmaterials              목록 (검색·필터·인덱싱 상태)\n│  ├─ \u002Fmaterials\u002Fupload       업로드 (드래그앤드롭 + 메타 입력)\n│  └─ \u002Fmaterials\u002F:id          상세 (원본 다운로드·재인덱싱·삭제)\n│\n├─ \u002Fstandard-answers          표준답변 ─────────────────────────────────\n│  ├─ \u002Fstandard-answers       목록 (검색·태그·사용량·승인 상태)\n│  ├─ \u002Fstandard-answers\u002F:id   상세·편집 (질문 패턴 \u002F 답변 HTML \u002F 사용량)\n│  └─ \u002Fstandard-answers\u002Fsuggestions  자동 추출 후보 (LLM이 제안)\n│\n├─ \u002Fimages                    이미지 카탈로그 ─────────────────────────\n│  ├─ \u002Fimages                 목록 (썸네일 그리드, title·description 검색)\n│  └─ \u002Fimages\u002F:id             상세 (메타·사용 게시물 역추적·태그·숨김)\n│\n├─ \u002Fchat-logs                 챗봇 응답 로그 ──────────────────────────  (Phase 2 준비)\n│  ├─ \u002Fchat-logs              세션 목록 (사용자·시각·답변 수·만족도)\n│  └─ \u002Fchat-logs\u002F:sessionId   세션 상세 (메시지 흐름·인용 출처·피드백)\n│\n├─ \u002Funcovered                 미커버 질문 큐 ──────────────────────────  (Phase 2 준비, 별도 페이지)\n│  └─ \u002Funcovered\u002F:id          상세 + AI 초안 생성 + 표준답변·자료 연결\n│\n├─ \u002Fescalations               에스컬레이션 큐 ────────────────────────  (Phase 2 준비)\n│  ├─ \u002Fescalations            대기 큐 (질문·신뢰도·우선순위)\n│  └─ \u002Fescalations\u002F:id        처리 (상담사 답변 작성·표준답변 등록)\n│\n├─ \u002Fqa-evals                  Q&A 평가 (PMS와 병행) ──────────────────\n│  ├─ \u002Fqa-evals               목록 (= PMS \u002Fadmin\u002Fevals 동일)\n│  └─ \u002Fqa-evals\u002F:id           상세 (= QaEvalCard 모달)\n│\n├─ \u002Fcost                      LLM 비용 (PMS와 병행) ──────────────────\n│  └─ \u002Fcost                   대시보드 (= PMS \u002Fadmin\u002Fcost 동일)\n│\n├─ \u002Fsettings                  설정 ─────────────────────────────────────\n│  ├─ \u002Fsettings\u002Fai            AI 설정 (모델·온도·맥스토큰·시스템 프롬프트)\n│  ├─ \u002Fsettings\u002Fsafety        안전 가드 (PII·금칙어·\"모름\" 임계값)\n│  ├─ \u002Fsettings\u002Fcache         캐싱 (TTL·invalidation 규칙)\n│  └─ \u002Fsettings\u002Fintegrations  외부 연동 (Slack·이메일·티켓)\n│\n└─ \u002Faccounts                  계정·권한 ───────────────────────────────\n   ├─ \u002Faccounts               사용자 목록\n   └─ \u002Faccounts\u002F:id           역할·활성\u002F비활성·감사 로그\n","text",[15,421,418],{"__ignoreMap":422},"",[214,424,426],{"id":425},"_3-1-글로벌-레이아웃","3-1. 글로벌 레이아웃",[53,428,429,435,441,447],{},[56,430,431,434],{},[27,432,433],{},"좌측 사이드바",": 5개 그룹 × 메뉴 (§3-2 참조)",[56,436,437,440],{},[27,438,439],{},"상단바",": 검색 입력 \u002F 환경 토글(개발\u002F운영) \u002F 사용자 메뉴(역할·로그아웃)",[56,442,443,446],{},[27,444,445],{},"본문",": 좌측 패널 240px + 본문, 모바일은 hamburger",[56,448,449,452],{},[27,450,451],{},"디자인 톤",": PMS와 일관 (Tailwind v4 + Pretendard + Notion-clean 라이트 모드 고정)",[214,454,456],{"id":455},"_3-2-사이드바-메뉴-정의","3-2. 사이드바 메뉴 정의",[23,458,459,460,463,464,466,467,470,471,466,473,476,477,479],{},"권한별 가시성 — ",[15,461,462],{},"A","=관리자(",[15,465,170],{},") · ",[15,468,469],{},"D","=개발자(",[15,472,188],{},[15,474,475],{},"S","=상담사(",[15,478,206],{},").\n배지(badge)는 대기·미처리 카운트 등 운영자 주의 환기용. 아이콘은 heroicons 24-outline 기준.",[481,482,484],"h4",{"id":483},"그룹-1-운영-보드","그룹 1. 운영 보드",[23,486,487],{},"가장 자주 보는 작업 큐 — 사이드바 최상단.",[134,489,490,515],{},[137,491,492],{},[140,493,494,497,500,503,506,509,511,513],{},[143,495,496],{},"#",[143,498,499],{},"라벨",[143,501,502],{},"경로",[143,504,505],{},"아이콘",[143,507,508],{},"배지",[143,510,462],{"align":229},[143,512,469],{"align":229},[143,514,475],{"align":229},[156,516,517,544,575,602,629],{},[140,518,519,522,525,530,535,538,540,542],{},[161,520,521],{},"1.1",[161,523,524],{},"홈",[161,526,527],{},[15,528,529],{},"\u002F",[161,531,532],{},[15,533,534],{},"i-heroicons-home",[161,536,537],{},"—",[161,539,244],{"align":229},[161,541,244],{"align":229},[161,543,244],{"align":229},[140,545,546,549,552,557,562,569,571,573],{},[161,547,548],{},"1.2",[161,550,551],{},"미커버 질문",[161,553,554],{},[15,555,556],{},"\u002Funcovered",[161,558,559],{},[15,560,561],{},"i-heroicons-question-mark-circle",[161,563,564,565,568],{},"대기 N건 (",[15,566,567],{},"pending"," 빈도≥3)",[161,570,244],{"align":229},[161,572,244],{"align":229},[161,574,244],{"align":229},[140,576,577,580,583,588,593,596,598,600],{},[161,578,579],{},"1.3",[161,581,582],{},"에스컬레이션",[161,584,585],{},[15,586,587],{},"\u002Fescalations",[161,589,590],{},[15,591,592],{},"i-heroicons-bell-alert",[161,594,595],{},"대기 N건",[161,597,244],{"align":229},[161,599,244],{"align":229},[161,601,244],{"align":229},[140,603,604,607,610,615,620,623,625,627],{},[161,605,606],{},"1.4",[161,608,609],{},"챗봇 로그",[161,611,612],{},[15,613,614],{},"\u002Fchat-logs",[161,616,617],{},[15,618,619],{},"i-heroicons-chat-bubble-left-right",[161,621,622],{},"24h 부정 피드백 N",[161,624,244],{"align":229},[161,626,244],{"align":229},[161,628,244],{"align":229},[140,630,631,634,637,642,647,650,652,654],{},[161,632,633],{},"1.5",[161,635,636],{},"Q&A 평가",[161,638,639],{},[15,640,641],{},"\u002Fqa-evals",[161,643,644],{},[15,645,646],{},"i-heroicons-clipboard-document-check",[161,648,649],{},"점수\u003C3 N건",[161,651,244],{"align":229},[161,653,244],{"align":229},[161,655,244],{"align":229},[481,657,659],{"id":658},"그룹-2-지식-자산","그룹 2. 지식 자산",[23,661,662],{},"챗봇 답변의 근거가 되는 데이터.",[134,664,665,685],{},[137,666,667],{},[140,668,669,671,673,675,677,679,681,683],{},[143,670,496],{},[143,672,499],{},[143,674,502],{},[143,676,505],{},[143,678,508],{},[143,680,462],{"align":229},[143,682,469],{"align":229},[143,684,475],{"align":229},[156,686,687,714,741,769],{},[140,688,689,692,695,700,705,708,710,712],{},[161,690,691],{},"2.1",[161,693,694],{},"표준답변",[161,696,697],{},[15,698,699],{},"\u002Fstandard-answers",[161,701,702],{},[15,703,704],{},"i-heroicons-bookmark-square",[161,706,707],{},"승인 대기 N",[161,709,244],{"align":229},[161,711,244],{"align":229},[161,713,244],{"align":229},[140,715,716,719,722,727,732,735,737,739],{},[161,717,718],{},"2.2",[161,720,721],{},"자료",[161,723,724],{},[15,725,726],{},"\u002Fmaterials",[161,728,729],{},[15,730,731],{},"i-heroicons-document-text",[161,733,734],{},"인덱싱 실패 N",[161,736,244],{"align":229},[161,738,244],{"align":229},[161,740,244],{"align":229},[140,742,743,746,749,754,759,762,764,766],{},[161,744,745],{},"2.3",[161,747,748],{},"이미지 카탈로그",[161,750,751],{},[15,752,753],{},"\u002Fimages",[161,755,756],{},[15,757,758],{},"i-heroicons-photo",[161,760,761],{},"미큐레이션 N",[161,763,244],{"align":229},[161,765,244],{"align":229},[161,767,768],{"align":229},"✅ (조회만)",[140,770,771,774,777,782,787,789,791,793],{},[161,772,773],{},"2.4",[161,775,776],{},"토픽·서비스 카탈로그",[161,778,779],{},[15,780,781],{},"\u002Fcatalog",[161,783,784],{},[15,785,786],{},"i-heroicons-tag",[161,788,537],{},[161,790,244],{"align":229},[161,792,244],{"align":229},[161,794,537],{"align":229},[481,796,798],{"id":797},"그룹-3-분석비용","그룹 3. 분석·비용",[134,800,801,821],{},[137,802,803],{},[140,804,805,807,809,811,813,815,817,819],{},[143,806,496],{},[143,808,499],{},[143,810,502],{},[143,812,505],{},[143,814,508],{},[143,816,462],{"align":229},[143,818,469],{"align":229},[143,820,475],{"align":229},[156,822,823,850,876],{},[140,824,825,828,831,836,841,844,846,848],{},[161,826,827],{},"3.1",[161,829,830],{},"LLM 비용",[161,832,833],{},[15,834,835],{},"\u002Fcost",[161,837,838],{},[15,839,840],{},"i-heroicons-currency-dollar",[161,842,843],{},"예산 ≥80% 시 경고",[161,845,244],{"align":229},[161,847,244],{"align":229},[161,849,537],{"align":229},[140,851,852,855,858,863,868,870,872,874],{},[161,853,854],{},"3.2",[161,856,857],{},"응답 품질 통계",[161,859,860],{},[15,861,862],{},"\u002Fanalytics\u002Fquality",[161,864,865],{},[15,866,867],{},"i-heroicons-chart-bar",[161,869,537],{},[161,871,244],{"align":229},[161,873,244],{"align":229},[161,875,537],{"align":229},[140,877,878,881,884,889,894,896,898,900],{},[161,879,880],{},"3.3",[161,882,883],{},"사용량 통계",[161,885,886],{},[15,887,888],{},"\u002Fanalytics\u002Fusage",[161,890,891],{},[15,892,893],{},"i-heroicons-chart-pie",[161,895,537],{},[161,897,244],{"align":229},[161,899,244],{"align":229},[161,901,537],{"align":229},[481,903,905],{"id":904},"그룹-4-설정","그룹 4. 설정",[134,907,908,926],{},[137,909,910],{},[140,911,912,914,916,918,920,922,924],{},[143,913,496],{},[143,915,499],{},[143,917,502],{},[143,919,505],{},[143,921,462],{"align":229},[143,923,469],{"align":229},[143,925,475],{"align":229},[156,927,928,952,976,1000],{},[140,929,930,933,936,941,946,948,950],{},[161,931,932],{},"4.1",[161,934,935],{},"AI 설정",[161,937,938],{},[15,939,940],{},"\u002Fsettings\u002Fai",[161,942,943],{},[15,944,945],{},"i-heroicons-sparkles",[161,947,244],{"align":229},[161,949,244],{"align":229},[161,951,537],{"align":229},[140,953,954,957,960,965,970,972,974],{},[161,955,956],{},"4.2",[161,958,959],{},"안전 가드",[161,961,962],{},[15,963,964],{},"\u002Fsettings\u002Fsafety",[161,966,967],{},[15,968,969],{},"i-heroicons-shield-check",[161,971,244],{"align":229},[161,973,244],{"align":229},[161,975,537],{"align":229},[140,977,978,981,984,989,994,996,998],{},[161,979,980],{},"4.3",[161,982,983],{},"캐싱",[161,985,986],{},[15,987,988],{},"\u002Fsettings\u002Fcache",[161,990,991],{},[15,992,993],{},"i-heroicons-circle-stack",[161,995,244],{"align":229},[161,997,244],{"align":229},[161,999,537],{"align":229},[140,1001,1002,1005,1008,1013,1018,1020,1022],{},[161,1003,1004],{},"4.4",[161,1006,1007],{},"외부 연동",[161,1009,1010],{},[15,1011,1012],{},"\u002Fsettings\u002Fintegrations",[161,1014,1015],{},[15,1016,1017],{},"i-heroicons-link",[161,1019,244],{"align":229},[161,1021,244],{"align":229},[161,1023,537],{"align":229},[481,1025,1027],{"id":1026},"그룹-5-시스템","그룹 5. 시스템",[23,1029,1030],{},"사이드바 하단 — 자주 안 쓰는 관리.",[134,1032,1033,1053],{},[137,1034,1035],{},[140,1036,1037,1039,1041,1043,1045,1047,1049,1051],{},[143,1038,496],{},[143,1040,499],{},[143,1042,502],{},[143,1044,505],{},[143,1046,508],{},[143,1048,462],{"align":229},[143,1050,469],{"align":229},[143,1052,475],{"align":229},[156,1054,1055,1082,1108],{},[140,1056,1057,1060,1063,1068,1073,1076,1078,1080],{},[161,1058,1059],{},"5.1",[161,1061,1062],{},"계정",[161,1064,1065],{},[15,1066,1067],{},"\u002Faccounts",[161,1069,1070],{},[15,1071,1072],{},"i-heroicons-users",[161,1074,1075],{},"초대 대기 N",[161,1077,244],{"align":229},[161,1079,537],{"align":229},[161,1081,537],{"align":229},[140,1083,1084,1087,1090,1095,1100,1102,1104,1106],{},[161,1085,1086],{},"5.2",[161,1088,1089],{},"감사 로그",[161,1091,1092],{},[15,1093,1094],{},"\u002Faudit-logs",[161,1096,1097],{},[15,1098,1099],{},"i-heroicons-clipboard-document-list",[161,1101,537],{},[161,1103,244],{"align":229},[161,1105,244],{"align":229},[161,1107,537],{"align":229},[140,1109,1110,1113,1116,1122,1127,1129,1131,1133],{},[161,1111,1112],{},"5.3",[161,1114,1115],{},"API 문서",[161,1117,1118,1121],{},[15,1119,1120],{},"https:\u002F\u002Fmalgn-helper-api.malgnsoft.workers.dev\u002Fdoc"," (외부)",[161,1123,1124],{},[15,1125,1126],{},"i-heroicons-code-bracket",[161,1128,537],{},[161,1130,244],{"align":229},[161,1132,244],{"align":229},[161,1134,537],{"align":229},[214,1136,1138],{"id":1137},"_3-3-사이드바-시각-구조","3-3. 사이드바 시각 구조",[414,1140,1143],{"className":1141,"code":1142,"language":419},[417],"┌─────────────────────────┐\n│  🟢 맑은도우미 관리자       │ ← 로고 + 환경 토글(dev\u002Fprod)\n├─────────────────────────┤\n│  ━━ 운영 보드 ━━━━━━━━━━│\n│  🏠 홈                   │\n│  ❓ 미커버 질문        [12]│ ← 빨강 배지 (pending 큐)\n│  🔔 에스컬레이션        [3]│ ← 노랑 배지\n│  💬 챗봇 로그           [5]│ ← 회색 배지 (24h 부정 피드백)\n│  📋 Q&A 평가            [2]│\n│                          │\n│  ━━ 지식 자산 ━━━━━━━━━━│\n│  🔖 표준답변            [4]│ ← 노랑 (승인 대기)\n│  📄 자료                 │\n│  🖼  이미지 카탈로그     │\n│  🏷  토픽·서비스           │\n│                          │\n│  ━━ 분석·비용 ━━━━━━━━━│\n│  💲 LLM 비용             │\n│  📊 응답 품질            │\n│  🥧 사용량               │\n│                          │\n│  ━━ 설정 ━━━━━━━━━━━━━│\n│  ✨ AI 설정              │\n│  🛡  안전 가드            │\n│  🗄  캐싱                │\n│  🔗 외부 연동            │\n│                          │\n│  ━━ 시스템 ━━━━━━━━━━━│\n│  👥 계정                 │\n│  📜 감사 로그            │\n│  \u003C\u002F> API 문서 ↗         │\n├─────────────────────────┤\n│  👤 김현희 (개발자)        │ ← 사용자 메뉴 (역할·로그아웃)\n└─────────────────────────┘\n",[15,1144,1142],{"__ignoreMap":422},[214,1146,1148],{"id":1147},"_3-4-메뉴-가시성접근-제어-규칙","3-4. 메뉴 가시성·접근 제어 규칙",[53,1150,1151,1161,1171,1177],{},[56,1152,1153,1156,1157,1160],{},[27,1154,1155],{},"숨김 vs 비활성"," — 권한 없는 메뉴는 사이드바에서 ",[27,1158,1159],{},"완전히 숨김"," (메뉴 표 X 표시 항목). 직접 URL 접근 시 API가 403 반환 → admin은 \"권한 없음\" 안내 페이지",[56,1162,1163,1166,1167,1170],{},[27,1164,1165],{},"배지 새로고침"," — 5분마다 폴링 (",[15,1168,1169],{},"GET \u002Fadmin\u002Fbadges"," 응답을 reactive ref에 반영) 또는 라우트 변경 시 갱신",[56,1172,1173,1176],{},[27,1174,1175],{},"그룹 헤더 클릭"," — 그룹 접기\u002F펼치기. 사용자 preference는 localStorage 저장",[56,1178,1179,1182],{},[27,1180,1181],{},"검색"," — 상단바 검색은 전역 검색 (표준답변·자료·이미지·미커버 전체 LIKE) → 결과 페이지에서 카테고리별 필터",[214,1184,1186,1187,1189],{"id":1185},"_3-5-신규-카탈로그-페이지-catalog-그룹-24","3-5. 신규 카탈로그 페이지 — ",[15,1188,781],{}," (그룹 2.4)",[23,1191,1192],{},"토픽·서비스 카탈로그 한 페이지에서 통합 관리. 운영자가 자주 추가하지는 않지만 잘못된 분류 정정용으로 진입.",[414,1194,1197],{"className":1195,"code":1196,"language":419},[417],"[탭] 토픽(11) | 서비스(6)\n\n토픽 탭:\n[+ 새 토픽]\nslug         scope    label        설명                          정렬   상태\ndomain       common   도메인        DNS·SSL 등                   1      활성\nseo          common   SEO          ...                          2      활성\nfeature      service  기능          제품 기능 관련                10     활성\n...\n\n서비스 탭:\n[+ 새 서비스]\nslug          이름          비고                              정렬   상태\nlms-general   범용 LMS       일반 학습관리                       1      활성\nlms-refund    환급 LMS       고용보험 환급                       2      활성\n...\n",[15,1198,1196],{"__ignoreMap":422},[32,1200],{},[35,1202,1204],{"id":1203},"_4-화면-명세","4. 화면 명세",[214,1206,1208,1209],{"id":1207},"_4-1-홈","4-1. 홈 — ",[15,1210,529],{},[23,1212,1213,1216],{},[27,1214,1215],{},"목적",": 운영 상태 한눈에. 상담사는 자기 작업, 운영자는 시스템 전체.",[23,1218,1219],{},[27,1220,1221],{},"KPI 카드 (운영자)",[53,1223,1224,1227,1230,1233,1236],{},[56,1225,1226],{},"자료 총 N건 · 인덱싱 완료 X% · 미처리 N건",[56,1228,1229],{},"표준답변 N건 · 승인 대기 N건 · 이번 주 신규 N건",[56,1231,1232],{},"챗봇 응답 N건 (Phase 2) · 평균 신뢰도 X%",[56,1234,1235],{},"에스컬레이션 N건 대기 · 평균 처리 시간 X시간",[56,1237,1238],{},"이번 달 LLM 비용 $X.XX · 예산 대비 X%",[23,1240,1241],{},[27,1242,1243],{},"KPI 카드 (상담사)",[53,1245,1246,1249,1252],{},[56,1247,1248],{},"내가 등록한 표준답변 N건",[56,1250,1251],{},"내가 처리한 에스컬레이션 N건",[56,1253,1254],{},"최근 7일 평가 점수 평균",[23,1256,1257,1260],{},[27,1258,1259],{},"최근 활동 피드"," — 시간순 (자료 업로드·표준답변 추가·평가 등록·에스컬레이션 해결)",[414,1262,1265],{"className":1263,"code":1264,"language":419},[417],"┌────────────────────────────────────────────────────────┐\n│  📊 시스템 현황                       [상담사 모드 보기 ↗]│\n├──────────────┬──────────────┬──────────────┬───────────│\n│ 자료         │ 표준답변      │ 이번 달 비용  │ 에스컬레이션│\n│ 142건        │ 87건         │ $12.45       │ 3건 대기   │\n│ 인덱싱 96%   │ 승인대기 4    │ 예산 25%     │ 평균 2h 처리│\n└──────────────┴──────────────┴──────────────┴───────────┘\n┌────────────────────────────────────────────────────────┐\n│  📜 최근 활동                                            │\n│  ─ 09:14  표준답변 #88 등록 — \"알림톡 비용 안내\" (장지혜)  │\n│  ─ 09:02  자료 인덱싱 완료 — manual-v2.3.pdf (32 청크)    │\n│  ─ 08:51  에스컬레이션 해결 — \"비밀번호 변경\" (김현희)     │\n└────────────────────────────────────────────────────────┘\n",[15,1266,1264],{"__ignoreMap":422},[32,1268],{},[214,1270,1272,1273],{"id":1271},"_4-2-자료-관리-materials","4-2. 자료 관리 — ",[15,1274,726],{},[23,1276,1277],{},[27,1278,1279],{},"자산 종류 2가지",[134,1281,1282,1295],{},[137,1283,1284],{},[140,1285,1286,1289,1292],{},[143,1287,1288],{},"종류",[143,1290,1291],{},"설명",[143,1293,1294],{},"인덱싱",[156,1296,1297,1314],{},[140,1298,1299,1308,1311],{},[161,1300,1301,1304,1305,77],{},[27,1302,1303],{},"파일 자산"," (",[15,1306,1307],{},"file",[161,1309,1310],{},"PDF·MD·HTML·DOCX 직접 업로드 → R2 저장",[161,1312,1313],{},"텍스트 추출 → 청크 → 임베딩 → OpenSearch",[140,1315,1316,1324,1331],{},[161,1317,1318,1304,1321,77],{},[27,1319,1320],{},"URL 자산",[15,1322,1323],{},"url",[161,1325,1326,1327,1330],{},"외부\u002F사내 페이지·",[27,1328,1329],{},"동영상 URL"," 등록만",[161,1332,1333,1334,1337],{},"URL 페이지는 크롤링 후 텍스트 청크화. 동영상은 메타(제목·설명·태그)만 인덱싱하고, ",[27,1335,1336],{},"필요시 Whisper로 자막 추출 트리거","(별도 액션)",[23,1339,1340],{},[27,1341,1342],{},"핵심 기능",[53,1344,1345,1352,1368,1375,1382],{},[56,1346,1347,1348,1351],{},"파일 드래그앤드롭 또는 ",[27,1349,1350],{},"URL 입력 폼"," (제목·설명·태그)",[56,1353,1354,1355,1357,1358,1357,1361,1364,1365],{},"자동 인덱싱 — ",[15,1356,567],{}," → ",[15,1359,1360],{},"processing",[15,1362,1363],{},"indexed"," \u002F ",[15,1366,1367],{},"failed",[56,1369,1370,1371,1374],{},"재인덱싱(",[15,1372,1373],{},"reindex",") · 삭제(soft delete)",[56,1376,1377,1378,1381],{},"동영상 URL 자산은 ",[27,1379,1380],{},"\"자막 추출(Whisper)\" 액션 버튼"," — 누르면 비동기 Whisper 호출 후 텍스트 청크에 합산. 기본 비활성, 필요할 때만",[56,1383,1384],{},"검색은 메타·본문 LIKE(MVP), 추후 OpenSearch full-text",[23,1386,1387,1390,1391,1394],{},[27,1388,1389],{},"목록 표 컬럼",": 제목 · 종류(파일\u002FURL) · 형식 · 인덱싱 상태 · 청크 수 · 업로더 · 등록일 · 액션\n",[27,1392,1393],{},"상세 페이지",": 메타데이터, 원본(파일은 다운로드\u002FURL은 새 탭), 청크 미리보기(처음 5개), \"재인덱싱\"·\"자막 추출\"(동영상만)·\"삭제\"·\"태그 편집\" 액션",[23,1396,1397],{},[27,1398,1399],{},"필요 테이블 (신규)",[53,1401,1402,1430],{},[56,1403,1404,1407,1408,1304,1411,529,1413,529,1415,1418,1419,529,1422,529,1424,529,1427,1429],{},[15,1405,1406],{},"hp_material"," — id, title, ",[27,1409,1410],{},"kind",[15,1412,1307],{},[15,1414,1323],{},[15,1416,1417],{},"video_url","), file_path(R2 key, file·video일 때만), source_url(url·video_url일 때만), mime, size, description, tags(JSON), uploader_id, project_id(NULL = 전사), indexing_status(pending\u002Fprocessing\u002Findexed\u002Ffailed), chunk_count, indexed_at, transcript_status(",[15,1420,1421],{},"none",[15,1423,567],{},[15,1425,1426],{},"done",[15,1428,1367],{},", video_url 전용), status(1\u002F-1), created_at",[56,1431,1432,1435,1436,529,1439,1442],{},[15,1433,1434],{},"hp_material_chunk"," — id, material_id, chunk_idx, body(TEXT), token_count, embedding(LONGBLOB or OpenSearch only), source(",[15,1437,1438],{},"body",[15,1440,1441],{},"transcript","), created_at",[23,1444,1445],{},[27,1446,1447],{},"필요 API (신규)",[53,1449,1450,1456,1462,1468,1474,1480,1486],{},[56,1451,1452,1455],{},[15,1453,1454],{},"POST \u002Fmaterials\u002Ffile"," (multipart) — 파일 업로드 + 인덱싱 시작",[56,1457,1458,1461],{},[15,1459,1460],{},"POST \u002Fmaterials\u002Furl"," (JSON) — URL\u002F동영상 URL 등록",[56,1463,1464,1467],{},[15,1465,1466],{},"GET \u002Fmaterials"," — 목록·필터 (kind, indexing_status, search)",[56,1469,1470,1473],{},[15,1471,1472],{},"GET \u002Fmaterials\u002F:id"," — 상세 (청크 포함)",[56,1475,1476,1479],{},[15,1477,1478],{},"POST \u002Fmaterials\u002F:id\u002Freindex"," — 재인덱싱",[56,1481,1482,1485],{},[15,1483,1484],{},"POST \u002Fmaterials\u002F:id\u002Ftranscribe"," — Whisper 자막 추출 (video_url만)",[56,1487,1488,1491],{},[15,1489,1490],{},"DELETE \u002Fmaterials\u002F:id"," — soft delete",[23,1493,1494],{},[27,1495,1496],{},"의존",[53,1498,1499,1502],{},[56,1500,1501],{},"OpenSearch 셋업 (Phase 1 후반)",[56,1503,1504],{},"Whisper API 키 (선택, 동영상 자막 필요할 때)",[32,1506],{},[214,1508,1510,1511],{"id":1509},"_4-3-표준답변-관리-standard-answers","4-3. 표준답변 관리 — ",[15,1512,699],{},[481,1514,1516],{"id":1515},"_4-3-1-분류-체계-scope-topic-service","4-3-1. 분류 체계 (Scope · Topic · Service)",[23,1518,1519,1520,1523,1524,1527],{},"표준답변은 ",[27,1521,1522],{},"2축 분류"," + ",[27,1525,1526],{},"태그","로 관리:",[134,1529,1530,1543],{},[137,1531,1532],{},[140,1533,1534,1537,1540],{},[143,1535,1536],{},"축",[143,1538,1539],{},"값",[143,1541,1542],{},"의미",[156,1544,1545,1560,1572,1585,1598],{},[140,1546,1547,1552,1557],{},[161,1548,1549],{},[27,1550,1551],{},"scope",[161,1553,1554],{},[15,1555,1556],{},"common",[161,1558,1559],{},"어떤 솔루션이든 동일하게 적용되는 답변 (도메인·SEO·일반 IT 등)",[140,1561,1562,1564,1569],{},[161,1563],{},[161,1565,1566],{},[15,1567,1568],{},"service",[161,1570,1571],{},"특정 솔루션에만 적용되는 답변 (기능·법령·정책 등)",[140,1573,1574,1579,1582],{},[161,1575,1576],{},[27,1577,1578],{},"topic",[161,1580,1581],{},"슬러그 코드",[161,1583,1584],{},"주제 — 검색·필터·자동 추천에 사용",[140,1586,1587,1592,1595],{},[161,1588,1589],{},[27,1590,1591],{},"service_tag",[161,1593,1594],{},"솔루션 슬러그 (NULL = scope=common)",[161,1596,1597],{},"어느 서비스의 답변인지",[140,1599,1600,1605,1608],{},[161,1601,1602],{},[27,1603,1604],{},"tags",[161,1606,1607],{},"JSON 배열",[161,1609,1610],{},"자유 태그 (운영자 큐레이션)",[23,1612,1613,1304,1616,1619],{},[27,1614,1615],{},"기본 topic 카탈로그",[15,1617,1618],{},"hp_topic"," 테이블로 관리, 운영자가 추가 가능):",[134,1621,1622,1636],{},[137,1623,1624],{},[140,1625,1626,1628,1631,1633],{},[143,1627,1551],{},[143,1629,1630],{},"topic 슬러그",[143,1632,499],{},[143,1634,1635],{},"예시",[156,1637,1638,1653,1668,1683,1698,1713,1728,1743,1758,1773],{},[140,1639,1640,1642,1647,1650],{},[161,1641,1556],{},[161,1643,1644],{},[15,1645,1646],{},"domain",[161,1648,1649],{},"도메인",[161,1651,1652],{},"도메인 연결·DNS·SSL",[140,1654,1655,1657,1662,1665],{},[161,1656,1556],{},[161,1658,1659],{},[15,1660,1661],{},"seo",[161,1663,1664],{},"SEO",[161,1666,1667],{},"메타·sitemap·robots.txt",[140,1669,1670,1672,1677,1680],{},[161,1671,1556],{},[161,1673,1674],{},[15,1675,1676],{},"it-general",[161,1678,1679],{},"일반 IT",[161,1681,1682],{},"브라우저 캐시·쿠키·HTTPS",[140,1684,1685,1687,1692,1695],{},[161,1686,1556],{},[161,1688,1689],{},[15,1690,1691],{},"account",[161,1693,1694],{},"계정·로그인",[161,1696,1697],{},"비밀번호·OTP·세션",[140,1699,1700,1702,1707,1710],{},[161,1701,1556],{},[161,1703,1704],{},[15,1705,1706],{},"payment",[161,1708,1709],{},"결제 일반",[161,1711,1712],{},"카드·세금계산서·환불 절차",[140,1714,1715,1717,1722,1725],{},[161,1716,1568],{},[161,1718,1719],{},[15,1720,1721],{},"feature",[161,1723,1724],{},"기능",[161,1726,1727],{},"알림톡·SMS·게시판·LMS 등",[140,1729,1730,1732,1737,1740],{},[161,1731,1568],{},[161,1733,1734],{},[15,1735,1736],{},"legal",[161,1738,1739],{},"법령·약관",[161,1741,1742],{},"개인정보·전자상거래·교육법",[140,1744,1745,1747,1752,1755],{},[161,1746,1568],{},[161,1748,1749],{},[15,1750,1751],{},"policy",[161,1753,1754],{},"정책",[161,1756,1757],{},"사용·요금·약관 정책",[140,1759,1760,1762,1767,1770],{},[161,1761,1568],{},[161,1763,1764],{},[15,1765,1766],{},"pricing",[161,1768,1769],{},"요금·계약",[161,1771,1772],{},"단가표·계약 조건",[140,1774,1775,1777,1782,1785],{},[161,1776,1568],{},[161,1778,1779],{},[15,1780,1781],{},"integration",[161,1783,1784],{},"연동·API",[161,1786,1787],{},"외부 API·웹훅",[23,1789,1790,1304,1793,1796],{},[27,1791,1792],{},"기본 service_tag 카탈로그",[15,1794,1795],{},"hp_service"," 테이블, 운영자가 추가)",[23,1798,1799],{},"맑은소프트 LMS 패밀리 — 같은 LMS라도 도메인 규정·법령·기능 옵션이 달라서 표준답변을 분리해야 함:",[134,1801,1802,1815],{},[137,1803,1804],{},[140,1805,1806,1809,1812],{},[143,1807,1808],{},"slug",[143,1810,1811],{},"이름",[143,1813,1814],{},"도메인·특수성",[156,1816,1817,1830,1843,1856,1869,1882,1895],{},[140,1818,1819,1824,1827],{},[161,1820,1821],{},[15,1822,1823],{},"lms-general",[161,1825,1826],{},"범용 LMS",[161,1828,1829],{},"일반 학습관리 (베이스 라인)",[140,1831,1832,1837,1840],{},[161,1833,1834],{},[15,1835,1836],{},"lms-refund",[161,1838,1839],{},"환급 LMS",[161,1841,1842],{},"고용보험 환급 과정 — 환급법령·증빙·이수율 룰",[140,1844,1845,1850,1853],{},[161,1846,1847],{},[15,1848,1849],{},"lms-public",[161,1851,1852],{},"공공 LMS",[161,1854,1855],{},"공공기관 — 입찰·관급·법정 의무교육·접근성(WCAG)",[140,1857,1858,1863,1866],{},[161,1859,1860],{},[15,1861,1862],{},"lms-security",[161,1864,1865],{},"민간보안 LMS",[161,1867,1868],{},"정보보호 의무교육(개인정보보호법·정보통신망법) · ISMS-P 컴플라이언스 · 보안등급별 컨텐츠 분리 · 접근 로그·이수 증명",[140,1870,1871,1876,1879],{},[161,1872,1873],{},[15,1874,1875],{},"lms-hybrid",[161,1877,1878],{},"혼합 LMS",[161,1880,1881],{},"환급+민간 등 복합 — 두 도메인 룰 동시 적용",[140,1883,1884,1889,1892],{},[161,1885,1886],{},[15,1887,1888],{},"lms-global",[161,1890,1891],{},"글로벌 LMS",[161,1893,1894],{},"다국어·다지역 — i18n·결제·세금·시간대·법령",[140,1896,1897,1900,1903],{},[161,1898,1899],{},"...",[161,1901,1902],{},"(운영자 추가)",[161,1904,1905],{},"LMS 외 솔루션이 도입되면 추가",[20,1907,1908],{},[23,1909,1910,1911,1914,1915,1917],{},"분류 효과: 같은 ",[15,1912,1913],{},"topic=legal"," 문의여도 환급(고용보험법) vs 공공(전자정부법) vs 글로벌(GDPR)이 전혀 다른 답변. ",[15,1916,1591],{}," 일치를 우선 매칭하여 정답률 확보.",[23,1919,1920],{},[27,1921,1922],{},"매칭 규칙 (챗봇 응답·표준답변 추천)",[1924,1925,1926,1934,1943,1949,1959],"ol",{},[56,1927,1928,1929,1523,1931,1933],{},"사용자 질문 → LLM이 ",[15,1930,1551],{},[15,1932,1578],{}," 추론",[56,1935,1936,1939,1940,1942],{},[15,1937,1938],{},"scope=service","이면 사용자가 사용 중인 서비스(",[15,1941,1591],{},")로 필터",[56,1944,1945,1948],{},[15,1946,1947],{},"scope=common","이면 service 무관하게 매칭",[56,1950,1951,1952,1954,1955,1958],{},"동점 시 ",[15,1953,1604],{}," 매치 수 + ",[15,1956,1957],{},"usage_count"," 우선순위",[56,1960,1961],{},"매칭 결과 N개를 LLM 컨텍스트에 첨부",[481,1963,1965],{"id":1964},"_4-3-2-화면","4-3-2. 화면",[23,1967,1968],{},[27,1969,1970,1971],{},"목록 — ",[15,1972,699],{},[414,1974,1977],{"className":1975,"code":1976,"language":419},[417],"[🔍 검색]  [scope: common\u002Fservice ▾]  [topic ▾]  [service ▾]  [상태 ▾]    [+ 새 표준답변]\n\n#   label              scope    topic        service     사용  업데이트       상태       \n84  환급 이수율 기준        service  legal        lms-refund    42회  06-07 14:21   ● 승인됨   \n83  비밀번호 변경           common   account      —             12회  06-06 09:10   ◯ 대기     \n82  도메인 SSL 갱신         common   domain       —             28회  06-05 11:00   ● 승인됨   \n81  공공기관 접근성 인증    service  legal        lms-public     5회  06-05 09:00   ● 승인됨   \n80  LMS 수료증 출력         service  feature      lms-general    7회  06-04 17:45   ● 승인됨   \n79  다국어 결제 통화        service  pricing      lms-global     3회  06-03 11:00   ◯ 대기     \n",[15,1978,1976],{"__ignoreMap":422},[23,1980,1981],{},[27,1982,1983,1984],{},"상세·편집 — ",[15,1985,1986],{},"\u002Fstandard-answers\u002F:id",[53,1988,1989,2001,2004,2010],{},[56,1990,1991,1992,529,1994,529,1996,529,1998,2000],{},"좌측: 메타 (",[15,1993,1551],{},[15,1995,1578],{},[15,1997,1568],{},[15,1999,1604],{},") + 사용 통계 + 출처 역추적",[56,2002,2003],{},"우측: HTML 답변 에디터 (Rich text, Tailwind prose preview)",[56,2005,2006,2009],{},[27,2007,2008],{},"하단: 이미지 자동 추천 패널"," (다음 §4-3-3 참조)",[56,2011,2012,2013,2016],{},"액션: 저장 · 승인 · 반려 · 영구 삭제(",[15,2014,2015],{},"status=-2",", 매우 드물게)",[481,2018,2020,2021,2023],{"id":2019},"_4-3-3-이미지-자동-배치-hp_image_asset-활용","4-3-3. 이미지 자동 배치 (",[15,2022,76],{}," 활용)",[23,2025,2026,2029,2030,2032],{},[27,2027,2028],{},"기획 의도",": 표준답변 작성 시 ",[15,2031,76],{},"의 캡션·설명으로 적절한 이미지를 자동 매칭·삽입. 운영자가 일일이 src를 찾을 필요 없음.",[23,2034,2035],{},[27,2036,2037],{},"3가지 동작 방식",[1924,2039,2040,2063,2079],{},[56,2041,2042,2045],{},[27,2043,2044],{},"에디터 사이드 패널 — 추천 이미지 그리드",[53,2046,2047,2053,2056],{},[56,2048,2049,2050,2052],{},"현재 입력 중인 답변 본문에서 LLM이 키워드 추출 → ",[15,2051,76],{}," 검색 (title·description LIKE 또는 임베딩 유사도)",[56,2054,2055],{},"썸네일 + title 표시",[56,2057,2058,2059,2062],{},"클릭 → 커서 위치에 ",[15,2060,2061],{},"\u003Cfigure>\u003Cimg src=...>\u003Cfigcaption>{title}\u003C\u002Ffigcaption>\u003C\u002Ffigure>"," 삽입",[56,2064,2065,2068],{},[27,2066,2067],{},"\"AI 자동 삽입\" 버튼",[53,2069,2070,2073,2076],{},[56,2071,2072],{},"LLM이 답변 전체를 읽고 적절한 위치에 자동으로 이미지 + 캡션 삽입",[56,2074,2075],{},"미리보기 → 운영자 승인 → 적용",[56,2077,2078],{},"이미 PMS Q&A 분석에서 D축 templates 생성 시 같은 흐름 동작 중 — 그 로직 재사용",[56,2080,2081,2084,2085],{},[27,2082,2083],{},"이미지 추출 후 자동 표준답변화"," (반대 흐름)",[53,2086,2087,2093,2096],{},[56,2088,2089,2092],{},[15,2090,2091],{},"\u002Fimages\u002F:id"," 상세 화면에 \"이 이미지를 사용하는 표준답변 만들기\" 액션",[56,2094,2095],{},"이미지의 title·description을 시작점으로 LLM이 표준답변 초안 생성",[56,2097,2098],{},"운영자 검토 후 저장",[23,2100,2101],{},[27,2102,2103],{},"필요 보강",[53,2105,2106,2111],{},[56,2107,2108,2110],{},[15,2109,76],{},"에 임베딩(embedding) 컬럼 추가 또는 OpenSearch 색인 (이미지 의미 검색용)",[56,2112,2113,2114,2117],{},"표준답변 ↔ 이미지 다대다 관계 추적: ",[15,2115,2116],{},"hp_standard_answer_image"," (sa_id, image_id, position) — 어느 표준답변이 어느 이미지를 인용하는지 역추적용",[481,2119,2121,2122,77],{"id":2120},"_4-3-4-스키마-보강-hp_standard_answer","4-3-4. 스키마 보강 (",[15,2123,2124],{},"hp_standard_answer",[23,2126,2127],{},"추가 컬럼:",[53,2129,2130,2135,2144,2153,2159,2168,2174],{},[56,2131,2132,2134],{},[15,2133,1551],{}," ENUM('common', 'service') NOT NULL DEFAULT 'service'",[56,2136,2137,2139,2140,2143],{},[15,2138,1578],{}," VARCHAR(50) NOT NULL — ",[15,2141,2142],{},"hp_topic.slug","와 매칭",[56,2145,2146,2148,2149,2152],{},[15,2147,1591],{}," VARCHAR(50) NULL — ",[15,2150,2151],{},"hp_service.slug","와 매칭 (scope=service일 때만 필수)",[56,2154,2155,2158],{},[15,2156,2157],{},"approval_status"," ENUM('pending','approved','rejected') NOT NULL DEFAULT 'pending'",[56,2160,2161,2163,2164,2167],{},[15,2162,1604],{}," JSON DEFAULT '",[2165,2166],"span",{},"'",[56,2169,2170,2173],{},[15,2171,2172],{},"approved_by"," VARCHAR(100) NULL",[56,2175,2176,2179],{},[15,2177,2178],{},"approved_at"," DATETIME NULL",[23,2181,2182],{},"신규 테이블 2종:",[53,2184,2185,2190,2195],{},[56,2186,2187,2189],{},[15,2188,1618],{}," — slug PK, scope, label, description, sort_order, status",[56,2191,2192,2194],{},[15,2193,1795],{}," — slug PK, name, description, sort_order, status",[56,2196,2197,2199],{},[15,2198,2116],{}," — sa_id, image_id, position (FK), PRIMARY KEY (sa_id, image_id)",[481,2201,2203],{"id":2202},"_4-3-5-필요-api-보강","4-3-5. 필요 API (보강)",[53,2205,2206,2219,2231,2237,2243,2249,2255],{},[56,2207,2208,2211,2212,2211,2215,2218],{},[15,2209,2210],{},"GET \u002Ftopics"," · ",[15,2213,2214],{},"POST \u002Ftopics",[15,2216,2217],{},"PATCH \u002Ftopics\u002F:slug"," — 토픽 카탈로그 CRUD",[56,2220,2221,2211,2224,2211,2227,2230],{},[15,2222,2223],{},"GET \u002Fservices",[15,2225,2226],{},"POST \u002Fservices",[15,2228,2229],{},"PATCH \u002Fservices\u002F:slug"," — 서비스 카탈로그 CRUD",[56,2232,2233,2236],{},[15,2234,2235],{},"GET \u002Fstandard-answers?scope=&topic=&service_tag=&search="," — 필터 보강",[56,2238,2239,2242],{},[15,2240,2241],{},"PATCH \u002Fstandard-answers\u002F:id\u002Fapprove"," — 승인",[56,2244,2245,2248],{},[15,2246,2247],{},"POST \u002Fstandard-answers\u002F:id\u002Fimages"," — 이미지 연결",[56,2250,2251,2254],{},[15,2252,2253],{},"POST \u002Fstandard-answers\u002F:id\u002Fsuggest-images"," — LLM이 이미지 자동 추천 (top N)",[56,2256,2257,2260],{},[15,2258,2259],{},"POST \u002Fstandard-answers\u002Fdraft"," — 이미지 → 표준답변 초안 생성",[32,2262],{},[214,2264,2266,2267],{"id":2265},"_4-4-이미지-카탈로그-images","4-4. 이미지 카탈로그 — ",[15,2268,753],{},[23,2270,2271],{},[27,2272,1342],{},[53,2274,2275,2280,2290,2297,2307],{},[56,2276,2277,2279],{},[15,2278,76],{}," 전체 시각화 — 썸네일 그리드",[56,2281,2282,2283,2211,2286,2289],{},"검색 — ",[15,2284,2285],{},"title",[15,2287,2288],{},"description"," LIKE",[56,2291,2292,2293,2296],{},"필터 — ",[15,2294,2295],{},"source"," (inquiry\u002Freply) · 프로젝트 · 사용 횟수",[56,2298,2299,2300,2303,2304,77],{},"상세 — 메타 · ",[15,2301,2302],{},"first_seen_post_id"," 역추적 · 태그 편집 · 숨김(",[15,2305,2306],{},"status=-1",[56,2308,2309],{},"챗봇 컨텍스트 활용 미리보기 — \"이 이미지 설명이 답변에 인용될 때 모습\"",[23,2311,2312],{},[27,2313,2314],{},"필요 컬럼 보강",[53,2316,2317,2322],{},[56,2318,2319,2321],{},[15,2320,1604],{}," (JSON) — 운영자가 큐레이션",[56,2323,2324,2327],{},[15,2325,2326],{},"is_curated"," (TINYINT) — 운영자가 검토 완료 표시",[23,2329,2330],{},[27,2331,1447],{},[53,2333,2334,2340,2346,2352],{},[56,2335,2336,2339],{},[15,2337,2338],{},"GET \u002Fimage-assets"," — 목록·검색·페이지네이션",[56,2341,2342,2345],{},[15,2343,2344],{},"GET \u002Fimage-assets\u002F:id"," — 상세",[56,2347,2348,2351],{},[15,2349,2350],{},"PATCH \u002Fimage-assets\u002F:id"," — title·description·tags 편집",[56,2353,2354,2357],{},[15,2355,2356],{},"DELETE \u002Fimage-assets\u002F:id"," — soft hide",[32,2359],{},[214,2361,2363,2364,2366,2367],{"id":2362},"_4-5-챗봇-응답-로그-chat-logs-phase-2-준비","4-5. 챗봇 응답 로그 — ",[15,2365,614],{}," ",[2368,2369,2370],"em",{},"(Phase 2 준비)",[23,2372,2373],{},[27,2374,1342],{},[53,2376,2377,2380,2383],{},[56,2378,2379],{},"세션 단위 목록 — 사용자·시작 시각·메시지 수·평균 신뢰도·만족도(👍\u002F👎)",[56,2381,2382],{},"세션 상세 — 메시지 흐름 (질문·답변·인용 출처·신뢰도) + 사용자 피드백 + 처리 시간",[56,2384,2385],{},"필터 — 일자·만족도·신뢰도",[20,2387,2388],{},[23,2389,2390,2393],{},[27,2391,2392],{},"참고",": \"답변 없는 PMS 게시물\"과는 다른 개념. 게시물은 상담사가 직접 PMS에서 답변하고, 미커버 질문은 챗봇 → 자료\u002F표준답변으로 흐름이 다름.",[32,2395],{},[214,2397,2399,2400,2366,2402],{"id":2398},"_4-5-1-미커버-질문-uncovered-phase-2-준비-별도-전용-페이지","4-5-1. 미커버 질문 — ",[15,2401,556],{},[2368,2403,2404],{},"(Phase 2 준비, 별도 전용 페이지)",[23,2406,2407,2409,2410,2413,2414,2416],{},[27,2408,2028],{},": 챗봇이 답을 못 한 질문을 챗 로그에서 따로 모아 ",[27,2411,2412],{},"자료·표준답변 보강 작업 큐","로 운영. ",[15,2415,614],{},"와 분리해 운영자·개발자가 한눈에 누락된 지식 영역을 본다.",[23,2418,2419],{},[27,2420,1342],{},[53,2422,2423,2436,2442,2463,2469,2479],{},[56,2424,2425,2428,2429,393,2432,2435],{},[27,2426,2427],{},"누적 큐",": 챗봇이 ",[15,2430,2431],{},"is_unknown=true",[15,2433,2434],{},"confidence \u003C 0.5","로 분기한 질문을 모음",[56,2437,2438,2441],{},[27,2439,2440],{},"자동 클러스터링",": 의미 유사 질문 묶음 (임베딩 cosine ≥ 0.8). 같은 의미면 묶어서 \"주 5건\" 같은 빈도 표시",[56,2443,2444,2447,2448,2450,2451,2454,2455,2458,2459,2462],{},[27,2445,2446],{},"상태 관리"," — ",[15,2449,567],{},"(대기) \u002F ",[15,2452,2453],{},"working","(작업 중) \u002F ",[15,2456,2457],{},"resolved","(표준답변\u002F자료 추가됨) \u002F ",[15,2460,2461],{},"wont_fix","(범위 외)",[56,2464,2465,2468],{},[27,2466,2467],{},"표준답변 등록 트리거"," — 큐 항목 클릭 → 답변 초안 작성 모달 (§4-5-2 참조)",[56,2470,2471,2474,2475,2478],{},[27,2472,2473],{},"자료 업로드 트리거"," — 큐 항목에 \"관련 매뉴얼 추가\" 액션 → ",[15,2476,2477],{},"\u002Fmaterials\u002Fupload","로 미리 채워서 이동",[56,2480,2481,2484,2485,2487],{},[27,2482,2483],{},"필터·정렬"," — 빈도 ↓ \u002F 최근 \u002F ",[15,2486,1551],{}," 추정 \u002F 상태별",[23,2489,2490],{},[27,2491,2492],{},"화면 구조 (목록)",[414,2494,2497],{"className":2495,"code":2496,"language":419},[417],"[🔍 검색]  [상태 ▾]  [scope ▾]  [빈도 ▾]                          [정렬: 빈도 ↓]\n\n#   대표 질문                              빈도  마지막 발생      추정 scope\u002Ftopic   상태       액션\n148 알림톡 발신 프로필 등록 어떻게?           12   06-08 09:14    service\u002Ffeature   ◯ 대기     [답변 작성][자료 추가]\n147 SSL 인증서 갱신 절차                       8   06-07 17:00    common\u002Fdomain     ◯ 대기     [답변 작성]\n146 LMS 수강 이력 엑셀 추출                   6   06-07 11:23    service\u002Ffeature   ● 작업중  \n145 결제 영수증 발급                          15   06-06 14:00    common\u002Fpayment    ✓ 해결됨   [표준답변 #88 보기]\n",[15,2498,2496],{"__ignoreMap":422},[23,2500,2501],{},[27,2502,2503],{},"필요 테이블",[53,2505,2506],{},[56,2507,2508,2511],{},[15,2509,2510],{},"hp_uncovered_question"," — id, sample_question(대표 질문), cluster_id(같은 의미 묶음 키), occurrence_count, last_seen_at, estimated_scope, estimated_topic, estimated_service_tag, status, resolved_by_sa_id(FK to hp_standard_answer), resolved_by_material_id(FK to hp_material), assigned_to, created_at",[23,2513,2514],{},[27,2515,2516],{},"필요 API",[53,2518,2519,2525,2531,2537],{},[56,2520,2521,2524],{},[15,2522,2523],{},"GET \u002Funcovered"," — 목록·필터",[56,2526,2527,2530],{},[15,2528,2529],{},"PATCH \u002Funcovered\u002F:id\u002Fassign"," — 담당자 지정",[56,2532,2533,2536],{},[15,2534,2535],{},"POST \u002Funcovered\u002F:id\u002Fdraft-sa"," — 미커버 질문을 시드로 표준답변 초안 생성 (§4-5-2)",[56,2538,2539,2542],{},[15,2540,2541],{},"POST \u002Funcovered\u002F:id\u002Fresolve"," — 표준답변·자료 연결하여 해결 처리",[32,2544],{},[214,2546,2548],{"id":2547},"_4-5-2-ai-초안-생성-챗봇-응답-로직-그대로-재사용","4-5-2. AI 초안 생성 — 챗봇 응답 로직 그대로 재사용",[23,2550,2551,2554,2555,2562],{},[27,2552,2553],{},"기획 결정",": 별도 prompt를 만들지 않는다. ",[27,2556,2557,2558,2561],{},"챗봇 응답 파이프라인(",[15,2559,2560],{},"POST \u002Fchat",")을 그대로 호출","하여 응답을 받고, 운영자가 검토·편집해 표준답변으로 저장한다.",[23,2564,2565],{},[27,2566,2567],{},"진입점",[1924,2569,2570,2579,2588],{},[56,2571,2572,1304,2575,2578],{},[27,2573,2574],{},"에스컬레이션 처리 화면",[15,2576,2577],{},"\u002Fescalations\u002F:id",") — \"AI 초안 생성\" 버튼",[56,2580,2581,1304,2584,2587],{},[27,2582,2583],{},"미커버 질문 큐",[15,2585,2586],{},"\u002Funcovered\u002F:id",") — \"답변 작성\" 클릭 시 자동으로 초안 생성",[56,2589,2590,1304,2593,2596],{},[27,2591,2592],{},"표준답변 신규 등록",[15,2594,2595],{},"\u002Fstandard-answers\u002Fnew",") — 질문 입력 후 \"AI 초안 받기\" 옵션",[23,2598,2599],{},[27,2600,2601],{},"동작 흐름",[414,2603,2606],{"className":2604,"code":2605,"language":419},[417],"운영자: 질문 입력 (또는 미커버 항목 클릭)\n   ↓\nAPI: POST \u002Fchat (Phase 2 챗봇 응답 API 그대로)\n   - 표준답변 매칭 우선 → 하이브리드 검색 → LLM 답변 + 출처 + 신뢰도\n   ↓\n응답: 답변 본문 + 인용 출처(표준답변 id, 자료 청크 id, 이미지 id)\n   ↓\n화면: HTML 에디터에 본문 자동 채움 + 우측에 출처 패널\n   ↓\n운영자: 편집 → scope\u002Ftopic\u002Fservice 분류 지정 → 저장\n   ↓\n승인 후 → 챗봇이 이후 매칭에 사용\n",[15,2607,2605],{"__ignoreMap":422},[23,2609,2610],{},[27,2611,2612],{},"장점",[53,2614,2615,2618,2621],{},[56,2616,2617],{},"별도 prompt 관리 부담 없음 (한 모델·한 prompt 유지)",[56,2619,2620],{},"챗봇 응답 품질이 곧 초안 품질 — 챗봇 개선 = 초안 개선",[56,2622,2623],{},"출처 인용이 자동으로 따라옴 → 표준답변 저장 시 출처 메타데이터 함께 저장",[23,2625,2626],{},[27,2627,2628],{},"필요 테이블 (신규, Phase 2)",[53,2630,2631,2637,2643],{},[56,2632,2633,2636],{},[15,2634,2635],{},"hp_chat_session"," — id, user_id(익명 hash 가능), started_at, ended_at, message_count, status",[56,2638,2639,2642],{},[15,2640,2641],{},"hp_chat_message"," — id, session_id, role(user\u002Fassistant), content, citations(JSON, hp_standard_answer.id 또는 hp_material_chunk.id), confidence, latency_ms, model, created_at",[56,2644,2645,2648],{},[15,2646,2647],{},"hp_chat_feedback"," — session_id, message_id, rating(1\u002F-1), comment, created_at",[23,2650,2651],{},[27,2652,2653],{},"필요 API (신규, Phase 2)",[53,2655,2656,2661,2667,2672],{},[56,2657,2658,2660],{},[15,2659,2560],{}," — 응답 생성 (스트리밍)",[56,2662,2663,2666],{},[15,2664,2665],{},"GET \u002Fchat-sessions"," — 목록",[56,2668,2669,2345],{},[15,2670,2671],{},"GET \u002Fchat-sessions\u002F:id",[56,2673,2674,2677],{},[15,2675,2676],{},"POST \u002Fchat-feedback"," — 피드백",[32,2679],{},[214,2681,2683,2684,2366,2686],{"id":2682},"_4-6-에스컬레이션-큐-escalations-phase-2-준비","4-6. 에스컬레이션 큐 — ",[15,2685,587],{},[2368,2687,2370],{},[23,2689,2690],{},[27,2691,1342],{},[53,2693,2694,2697,2700,2703],{},[56,2695,2696],{},"챗봇이 \"모름\" 또는 신뢰도 임계값 미만으로 분기한 질문 큐",[56,2698,2699],{},"대기·진행·완료 탭",[56,2701,2702],{},"상담사 답변 작성 → 사용자 알림 + 표준답변 등록 옵션",[56,2704,2705],{},"우선순위 (사용자 만족도·VIP·신뢰도·반복 횟수)",[23,2707,2708],{},[27,2709,1399],{},[53,2711,2712],{},[56,2713,2714,2717],{},[15,2715,2716],{},"hp_escalation"," — id, session_id, message_id, question, status(pending\u002Fin_progress\u002Fresolved), assigned_to, priority, created_at, resolved_at, resolution",[32,2719],{},[214,2721,2723,2724,2211,2726],{"id":2722},"_4-7-qa-평가-llm-비용-qa-evals-cost","4-7. Q&A 평가 \u002F LLM 비용 — ",[15,2725,641],{},[15,2727,835],{},[23,2729,2730,2731,104,2733,2735,2736,2739],{},"PMS의 ",[15,2732,107],{},[15,2734,103],{},"와 동일 데이터·UI. 동일 컴포넌트(",[15,2737,2738],{},"QaEvalCard"," 등) 재사용. 운영자가 PMS를 안 켜고도 모니터링 가능.",[23,2741,2742],{},"추후 admin 전용 부가 기능:",[53,2744,2745,2748],{},[56,2746,2747],{},"평가 기준선(score \u003C 3) 알림",[56,2749,2750],{},"비용 예산 알림 (월 한도 임박 시 Slack)",[32,2752],{},[214,2754,2756,2757],{"id":2755},"_4-8-ai-설정-settingsai","4-8. AI 설정 — ",[15,2758,940],{},[23,2760,2761],{},[27,2762,2763],{},"관리 항목",[53,2765,2766,2773,2776,2783,2794],{},[56,2767,2768,2769,2772],{},"기본 모델 (",[15,2770,2771],{},"gpt-4.1-mini"," · 다른 모델 선택)",[56,2774,2775],{},"Vision 모델 (이미지 있을 때 자동 업그레이드 여부)",[56,2777,2778,2779,2782],{},"시스템 프롬프트 — 챗봇 (",[15,2780,2781],{},"PHASE2_CHAT_SYSTEM_PROMPT",") · 평가 · 추천답변 별도 편집",[56,2784,2785,2211,2788,2211,2791],{},[15,2786,2787],{},"temperature",[15,2789,2790],{},"max_tokens",[15,2792,2793],{},"timeout",[56,2795,2796,2797,2800],{},"LLM 캐싱 TTL (",[15,2798,2799],{},"llm_input_hash"," 24h 등)",[23,2802,2803,2806,2807,2810],{},[27,2804,2805],{},"저장 위치",": 신규 ",[15,2808,2809],{},"hp_setting"," (key\u002Fvalue JSON) 또는 단순 KV 바인딩",[23,2812,2813,2816],{},[27,2814,2815],{},"Diff 미리보기"," — 변경 적용 전 영향 받을 엔드포인트 명시",[32,2818],{},[214,2820,2822,2823],{"id":2821},"_4-9-안전-가드-settingssafety","4-9. 안전 가드 — ",[15,2824,964],{},[53,2826,2827,2830,2833,2836],{},[56,2828,2829],{},"\"모름\" 분기 임계값 (confidence \u003C X)",[56,2831,2832],{},"PII 마스킹 패턴 (이메일·전화·계좌 등 정규식 목록)",[56,2834,2835],{},"금칙어 사전 (정치·종교·욕설)",[56,2837,2838],{},"응답 길이 제한·언어 제한",[32,2840],{},[214,2842,2844,2845],{"id":2843},"_4-10-캐싱-settingscache","4-10. 캐싱 — ",[15,2846,988],{},[53,2848,2849,2859,2864,2867],{},[56,2850,2851,2854,2855,2858],{},[15,2852,2853],{},"hp_briefing","·",[15,2856,2857],{},"hp_qa_eval"," 캐시 TTL",[56,2860,2861,2863],{},[15,2862,2124],{}," 자주 묻는 답변 in-memory 캐시 크기",[56,2865,2866],{},"캐시 무효화 트리거 (자료 업로드 시 등)",[56,2868,2869],{},"수동 캐시 비우기 액션",[32,2871],{},[214,2873,2875,2876],{"id":2874},"_4-11-외부-연동-settingsintegrations","4-11. 외부 연동 — ",[15,2877,1012],{},[53,2879,2880,2886,2892,2898],{},[56,2881,2882,2885],{},[27,2883,2884],{},"Slack"," — 에스컬레이션·비용 임계 알림 (Webhook URL 등록)",[56,2887,2888,2891],{},[27,2889,2890],{},"이메일"," — SendGrid·SMTP (선택)",[56,2893,2894,2897],{},[27,2895,2896],{},"티켓 시스템"," — Jira·Zendesk·기존 CS (Phase 2 후반)",[56,2899,2900,2903],{},[27,2901,2902],{},"SSO"," — Google OAuth (Phase 1 후반)",[32,2905],{},[214,2907,2909,2910],{"id":2908},"_4-12-계정권한-accounts","4-12. 계정·권한 — ",[15,2911,1067],{},[23,2913,2914],{},[27,2915,1342],{},[53,2917,2918,2921,2924,2927],{},[56,2919,2920],{},"사용자 목록 — 이메일 · 역할(admin\u002Fagent) · 마지막 로그인 · 활성 여부",[56,2922,2923],{},"초대 — 이메일 invite + 역할 지정 (운영자만)",[56,2925,2926],{},"역할 변경 · 비활성화",[56,2928,2929],{},"감사 로그 — 각 계정의 액션 시간순 (자료 업로드, 표준답변 승인 등)",[23,2931,2932],{},[27,2933,1399],{},[53,2935,2936,2942],{},[56,2937,2938,2941],{},[15,2939,2940],{},"hp_account"," — id, email, name, role(admin\u002Fagent), status, last_login_at, created_at",[56,2943,2944,2947],{},[15,2945,2946],{},"hp_audit_log"," — id, account_id, action(material.upload, sa.approve 등), entity_type, entity_id, payload(JSON), created_at",[23,2949,2950,2953],{},[27,2951,2952],{},"인증 방식",": Cloudflare Access SSO 또는 자체 비밀번호 + JWT. 1차는 Cloudflare Access(이미 가이드 있음).",[32,2955],{},[35,2957,2959],{"id":2958},"_5-데이터api-종합-추가-사항","5. 데이터·API 종합 추가 사항",[214,2961,2963],{"id":2962},"_5-1-신규-테이블-총-11종","5-1. 신규 테이블 (총 11종)",[134,2965,2966,2979],{},[137,2967,2968],{},[140,2969,2970,2973,2976],{},[143,2971,2972],{},"테이블",[143,2974,2975],{},"단계",[143,2977,2978],{},"비고",[156,2980,2981,3004,3022,3038,3049,3060,3073,3090,3103],{},[140,2982,2983,2989,2992],{},[161,2984,2985,2211,2987],{},[15,2986,1406],{},[15,2988,1434],{},[161,2990,2991],{},"Phase 1 후반",[161,2993,2994,2995,2997,2998,529,3000,529,3002],{},"자료 업로드·인덱싱. ",[15,2996,1410],{},"=",[15,2999,1307],{},[15,3001,1323],{},[15,3003,1417],{},[140,3005,3006,3010,3012],{},[161,3007,3008],{},[15,3009,1618],{},[161,3011,2991],{},[161,3013,3014,3015,1523,3017,1523,3019,77],{},"표준답변 토픽 카탈로그 (",[15,3016,1551],{},[15,3018,1808],{},[15,3020,3021],{},"label",[140,3023,3024,3028,3030],{},[161,3025,3026],{},[15,3027,1795],{},[161,3029,2991],{},[161,3031,3032,3033,1523,3035,77],{},"솔루션 카탈로그 (",[15,3034,1808],{},[15,3036,3037],{},"name",[140,3039,3040,3044,3046],{},[161,3041,3042],{},[15,3043,2116],{},[161,3045,2991],{},[161,3047,3048],{},"표준답변 ↔ 이미지 다대다 (역추적·자동 삽입)",[140,3050,3051,3055,3057],{},[161,3052,3053],{},[15,3054,2809],{},[161,3056,2991],{},[161,3058,3059],{},"키\u002F값 JSON 설정",[140,3061,3062,3068,3070],{},[161,3063,3064,2211,3066],{},[15,3065,2940],{},[15,3067,2946],{},[161,3069,2991],{},[161,3071,3072],{},"계정·감사",[140,3074,3075,3083,3088],{},[161,3076,3077,2211,3079,2211,3081],{},[15,3078,2635],{},[15,3080,2641],{},[15,3082,2647],{},[161,3084,3085],{},[27,3086,3087],{},"Phase 2",[161,3089,609],{},[140,3091,3092,3096,3100],{},[161,3093,3094],{},[15,3095,2716],{},[161,3097,3098],{},[27,3099,3087],{},[161,3101,3102],{},"에스컬레이션 큐",[140,3104,3105,3109,3113],{},[161,3106,3107],{},[15,3108,2510],{},[161,3110,3111],{},[27,3112,3087],{},[161,3114,3115],{},"미커버 질문 작업 큐 (클러스터링 포함)",[214,3117,3119],{"id":3118},"_5-2-기존-테이블-보강","5-2. 기존 테이블 보강",[53,3121,3122,3141],{},[56,3123,3124,2447,3126,104,3128,104,3130,104,3132,104,3134,104,3136,104,3138,3140],{},[15,3125,2124],{},[15,3127,1551],{},[15,3129,1578],{},[15,3131,1591],{},[15,3133,2157],{},[15,3135,1604],{},[15,3137,2172],{},[15,3139,2178],{}," 추가",[56,3142,3143,2447,3145,104,3147,3149,3150,3140],{},[15,3144,76],{},[15,3146,1604],{},[15,3148,2326],{},", (선택) ",[15,3151,3152],{},"embedding",[214,3154,3156],{"id":3155},"_5-3-신규-api-그룹","5-3. 신규 API 그룹",[134,3158,3159,3167],{},[137,3160,3161],{},[140,3162,3163,3165],{},[143,3164,502],{},[143,3166,1215],{},[156,3168,3169,3182,3192,3205,3215,3224],{},[140,3170,3171,3179],{},[161,3172,3173,3175,3176,77],{},[15,3174,726],{}," (CRUD + ",[15,3177,3178],{},"\u002Freindex",[161,3180,3181],{},"자료 관리",[140,3183,3184,3190],{},[161,3185,3186,3189],{},[15,3187,3188],{},"\u002Fimage-assets"," (CRUD)",[161,3191,748],{},[140,3193,3194,3202],{},[161,3195,3196,2211,3199],{},[15,3197,3198],{},"\u002Fstandard-answers\u002F:id\u002Fapprove",[15,3200,3201],{},"\u002Freject",[161,3203,3204],{},"승인 워크플로",[140,3206,3207,3212],{},[161,3208,3209],{},[15,3210,3211],{},"\u002Fsettings\u002F*",[161,3213,3214],{},"AI·안전·캐싱 설정",[140,3216,3217,3222],{},[161,3218,3219,3221],{},[15,3220,1067],{}," (CRUD + invite)",[161,3223,1062],{},[140,3225,3226,3230],{},[161,3227,3228],{},[15,3229,1094],{},[161,3231,3232],{},"감사 로그 조회",[23,3234,3235,3236,3239],{},"OpenAPI(",[15,3237,3238],{},"\u002Fdoc",")에 모두 추가.",[32,3241],{},[35,3243,3245],{"id":3244},"_6-권한인증","6. 권한·인증",[214,3247,3249],{"id":3248},"_6-1-인증","6-1. 인증",[23,3251,3252,1304,3255,3260],{},[27,3253,3254],{},"Cloudflare Access SSO",[3256,3257,3259],"a",{"href":3258},"CLOUDFLARE-ACCESS","CLOUDFLARE-ACCESS.md"," 가이드 적용)",[53,3262,3263,3266,3274,3281],{},[56,3264,3265],{},"admin 도메인 전체 보호 — 외부 접근 차단",[56,3267,3268,3269,3273],{},"이메일 도메인 화이트리스트 = ",[27,3270,3271],{},[15,3272,127],{}," 만 (협력사·고객사 차단)",[56,3275,3276,3277,3280],{},"세션 토큰을 API가 검증 (",[15,3278,3279],{},"cf-access-jwt-assertion"," 헤더)",[56,3282,3283],{},"외부 운영자 초대 케이스가 없으므로 자체 비밀번호 로직 불필요",[214,3285,3287],{"id":3286},"_6-2-권한-가드","6-2. 권한 가드",[23,3289,3290],{},"API 측 미들웨어:",[414,3292,3296],{"className":3293,"code":3294,"language":3295,"meta":422,"style":422},"language-ts shiki shiki-themes github-light github-dark","type Role = 'admin' | 'developer' | 'agent';\n\nfunction requireRole(...allowed: Role[]) {\n  return async (c, next) => {\n    const user = c.get('user'); \u002F\u002F CF Access JWT에서 추출 (email, role)\n    if (!user) return c.json({ error: 'unauthorized' }, 401);\n    if (!user.email.endsWith('@malgnsoft.com')) return c.json({ error: 'forbidden' }, 403);\n    if (!allowed.includes(user.role)) return c.json({ error: 'forbidden' }, 403);\n    await next();\n  };\n}\n","ts",[15,3297,3298,3332,3339,3365,3393,3423,3460,3501,3535,3547,3553],{"__ignoreMap":422},[2165,3299,3302,3306,3310,3313,3317,3320,3323,3325,3328],{"class":3300,"line":3301},"line",1,[2165,3303,3305],{"class":3304},"szBVR","type",[2165,3307,3309],{"class":3308},"sScJk"," Role",[2165,3311,3312],{"class":3304}," =",[2165,3314,3316],{"class":3315},"sZZnC"," 'admin'",[2165,3318,3319],{"class":3304}," |",[2165,3321,3322],{"class":3315}," 'developer'",[2165,3324,3319],{"class":3304},[2165,3326,3327],{"class":3315}," 'agent'",[2165,3329,3331],{"class":3330},"sVt8B",";\n",[2165,3333,3335],{"class":3300,"line":3334},2,[2165,3336,3338],{"emptyLinePlaceholder":3337},true,"\n",[2165,3340,3342,3345,3348,3351,3353,3357,3360,3362],{"class":3300,"line":3341},3,[2165,3343,3344],{"class":3304},"function",[2165,3346,3347],{"class":3308}," requireRole",[2165,3349,3350],{"class":3330},"(",[2165,3352,1899],{"class":3304},[2165,3354,3356],{"class":3355},"s4XuR","allowed",[2165,3358,3359],{"class":3304},":",[2165,3361,3309],{"class":3308},[2165,3363,3364],{"class":3330},"[]) {\n",[2165,3366,3368,3371,3374,3376,3379,3381,3384,3387,3390],{"class":3300,"line":3367},4,[2165,3369,3370],{"class":3304},"  return",[2165,3372,3373],{"class":3304}," async",[2165,3375,1304],{"class":3330},[2165,3377,3378],{"class":3355},"c",[2165,3380,104],{"class":3330},[2165,3382,3383],{"class":3355},"next",[2165,3385,3386],{"class":3330},") ",[2165,3388,3389],{"class":3304},"=>",[2165,3391,3392],{"class":3330}," {\n",[2165,3394,3396,3399,3403,3405,3408,3411,3413,3416,3419],{"class":3300,"line":3395},5,[2165,3397,3398],{"class":3304},"    const",[2165,3400,3402],{"class":3401},"sj4cs"," user",[2165,3404,3312],{"class":3304},[2165,3406,3407],{"class":3330}," c.",[2165,3409,3410],{"class":3308},"get",[2165,3412,3350],{"class":3330},[2165,3414,3415],{"class":3315},"'user'",[2165,3417,3418],{"class":3330},"); ",[2165,3420,3422],{"class":3421},"sJ8bj","\u002F\u002F CF Access JWT에서 추출 (email, role)\n",[2165,3424,3426,3429,3431,3434,3437,3440,3442,3445,3448,3451,3454,3457],{"class":3300,"line":3425},6,[2165,3427,3428],{"class":3304},"    if",[2165,3430,1304],{"class":3330},[2165,3432,3433],{"class":3304},"!",[2165,3435,3436],{"class":3330},"user) ",[2165,3438,3439],{"class":3304},"return",[2165,3441,3407],{"class":3330},[2165,3443,3444],{"class":3308},"json",[2165,3446,3447],{"class":3330},"({ error: ",[2165,3449,3450],{"class":3315},"'unauthorized'",[2165,3452,3453],{"class":3330}," }, ",[2165,3455,3456],{"class":3401},"401",[2165,3458,3459],{"class":3330},");\n",[2165,3461,3463,3465,3467,3469,3472,3475,3477,3480,3483,3485,3487,3489,3491,3494,3496,3499],{"class":3300,"line":3462},7,[2165,3464,3428],{"class":3304},[2165,3466,1304],{"class":3330},[2165,3468,3433],{"class":3304},[2165,3470,3471],{"class":3330},"user.email.",[2165,3473,3474],{"class":3308},"endsWith",[2165,3476,3350],{"class":3330},[2165,3478,3479],{"class":3315},"'@malgnsoft.com'",[2165,3481,3482],{"class":3330},")) ",[2165,3484,3439],{"class":3304},[2165,3486,3407],{"class":3330},[2165,3488,3444],{"class":3308},[2165,3490,3447],{"class":3330},[2165,3492,3493],{"class":3315},"'forbidden'",[2165,3495,3453],{"class":3330},[2165,3497,3498],{"class":3401},"403",[2165,3500,3459],{"class":3330},[2165,3502,3504,3506,3508,3510,3513,3516,3519,3521,3523,3525,3527,3529,3531,3533],{"class":3300,"line":3503},8,[2165,3505,3428],{"class":3304},[2165,3507,1304],{"class":3330},[2165,3509,3433],{"class":3304},[2165,3511,3512],{"class":3330},"allowed.",[2165,3514,3515],{"class":3308},"includes",[2165,3517,3518],{"class":3330},"(user.role)) ",[2165,3520,3439],{"class":3304},[2165,3522,3407],{"class":3330},[2165,3524,3444],{"class":3308},[2165,3526,3447],{"class":3330},[2165,3528,3493],{"class":3315},[2165,3530,3453],{"class":3330},[2165,3532,3498],{"class":3401},[2165,3534,3459],{"class":3330},[2165,3536,3538,3541,3544],{"class":3300,"line":3537},9,[2165,3539,3540],{"class":3304},"    await",[2165,3542,3543],{"class":3308}," next",[2165,3545,3546],{"class":3330},"();\n",[2165,3548,3550],{"class":3300,"line":3549},10,[2165,3551,3552],{"class":3330},"  };\n",[2165,3554,3556],{"class":3300,"line":3555},11,[2165,3557,3558],{"class":3330},"}\n",[23,3560,3561],{},"라우트 별 적용 예:",[134,3563,3564,3574],{},[137,3565,3566],{},[140,3567,3568,3571],{},[143,3569,3570],{},"라우트",[143,3572,3573],{},"가드",[156,3575,3576,3590,3603,3614,3624,3636,3647,3662],{},[140,3577,3578,3585],{},[161,3579,3580,2211,3583],{},[15,3581,3582],{},"POST \u002Fmaterials\u002F*",[15,3584,1490],{},[161,3586,3587],{},[15,3588,3589],{},"requireRole('admin', 'developer')",[140,3591,3592,3598],{},[161,3593,3594,2211,3596],{},[15,3595,1466],{},[15,3597,1472],{},[161,3599,3600],{},[15,3601,3602],{},"requireRole('admin', 'developer', 'agent')",[140,3604,3605,3610],{},[161,3606,3607],{},[15,3608,3609],{},"POST \u002Fstandard-answers",[161,3611,3612],{},[15,3613,3602],{},[140,3615,3616,3620],{},[161,3617,3618],{},[15,3619,2241],{},[161,3621,3622],{},[15,3623,3589],{},[140,3625,3626,3632],{},[161,3627,3628,2211,3630],{},[15,3629,2350],{},[15,3631,2356],{},[161,3633,3634],{},[15,3635,3589],{},[140,3637,3638,3643],{},[161,3639,3640],{},[15,3641,3642],{},"POST \u002Fsettings\u002F*",[161,3644,3645],{},[15,3646,3589],{},[140,3648,3649,3657],{},[161,3650,3651,2211,3654],{},[15,3652,3653],{},"POST \u002Faccounts\u002F*",[15,3655,3656],{},"PATCH \u002Faccounts\u002F:id\u002Frole",[161,3658,3659],{},[15,3660,3661],{},"requireRole('admin')",[140,3663,3664,3669],{},[161,3665,3666],{},[15,3667,3668],{},"GET \u002Faudit-logs",[161,3670,3671],{},[15,3672,3589],{},[32,3674],{},[35,3676,3678],{"id":3677},"_7-단계별-구현-우선순위-5주-기준","7. 단계별 구현 우선순위 (5주 기준)",[20,3680,3681],{},[23,3682,3683],{},"각 주차는 누적. 이전 주차 산출물 위에 추가.",[214,3685,3687],{"id":3686},"week-1-골격-인증","Week 1 — 골격 + 인증",[53,3689,3690,3693,3696,3701,3714],{},[56,3691,3692],{},"글로벌 레이아웃(사이드바·상단바·로그인 페이지)",[56,3694,3695],{},"Cloudflare Access SSO 적용 + JWT 검증 미들웨어",[56,3697,3698,3700],{},[15,3699,529],{}," 홈 (KPI 카드 mockup, 실제 데이터는 다음 주차)",[56,3702,3703,3704,2854,3706,2854,3708,2854,3710,2854,3712,77],{},"신규 테이블 5종 DDL (",[15,3705,1406],{},[15,3707,1434],{},[15,3709,2809],{},[15,3711,2940],{},[15,3713,2946],{},[56,3715,3716,2211,3718,3720],{},[15,3717,2124],{},[15,3719,76],{}," 컬럼 보강",[23,3722,3723,3726],{},[27,3724,3725],{},"산출물 검증",": 로그인 후 빈 홈 진입, 사이드바·역할 분기 동작",[214,3728,3730],{"id":3729},"week-2-표준답변-이미지-카탈로그","Week 2 — 표준답변 + 이미지 카탈로그",[53,3732,3733,3738,3744,3749],{},[56,3734,3735,3737],{},[15,3736,699],{}," 목록·상세·편집·승인 워크플로",[56,3739,3740,3743],{},[15,3741,3742],{},"\u002Fstandard-answers\u002Fsuggestions"," (자동 추출 후보 검토)",[56,3745,3746,3748],{},[15,3747,753],{}," 그리드·검색·태그·숨김",[56,3750,3751,3752,2211,3755,3757],{},"API: ",[15,3753,3754],{},"\u002Fstandard-answers\u002F:id\u002Fapprove|reject",[15,3756,3188],{}," CRUD",[23,3759,3760,3763,3764,3767],{},[27,3761,3762],{},"검증",": 운영자가 PMS에서 저장한 표준답변을 admin에서 승인, 챗봇이 ",[15,3765,3766],{},"approved","만 사용하는지 확인",[214,3769,3771],{"id":3770},"week-3-자료-업로드-인덱싱","Week 3 — 자료 업로드 + 인덱싱",[53,3773,3774,3779,3784],{},[56,3775,3776,3778],{},[15,3777,726],{}," 업로드·목록·재인덱싱·삭제",[56,3780,3751,3781,3783],{},[15,3782,726],{}," CRUD + R2 업로드 + 청크 + 임베딩 + OpenSearch 색인 (동기 MVP)",[56,3785,3786],{},"인덱싱 상태 폴링 UI",[23,3788,3789,3791,3792,3794],{},[27,3790,3762],{},": 매뉴얼 PDF 1건 업로드 → 청크 N개 색인 완료 → ",[15,3793,753],{}," 자동 채워짐",[214,3796,3798],{"id":3797},"week-4-설정-통합-모니터링","Week 4 — 설정 + 통합 모니터링",[53,3800,3801,3811,3818,3821],{},[56,3802,3803,2211,3805,2211,3807,2211,3809],{},[15,3804,940],{},[15,3806,964],{},[15,3808,988],{},[15,3810,1012],{},[56,3812,3813,2211,3815,3817],{},[15,3814,641],{},[15,3816,835],{}," (PMS와 동일 데이터, admin 톤으로 재구성)",[56,3819,3820],{},"홈 KPI 카드 실제 데이터 연동",[56,3822,3823,3824,3827],{},"자동 추출 후보(",[15,3825,3826],{},"hp_standard_answer\u002Fsuggestions",") 알림 → Slack 연동",[23,3829,3830,3832],{},[27,3831,3762],{},": 시스템 프롬프트 편집 후 챗봇·평가 호출 결과 변화 반영, 비용 임계 알림 동작",[214,3834,3836],{"id":3835},"week-5-계정권한감사-phase-2-준비","Week 5 — 계정·권한·감사 + Phase 2 준비",[53,3838,3839,3844,3849,3856],{},[56,3840,3841,3843],{},[15,3842,1067],{}," CRUD · 역할·초대",[56,3845,3846,3848],{},[15,3847,1094],{}," 감사 로그",[56,3850,3851,2211,3853,3855],{},[15,3852,614],{},[15,3854,587],{}," 페이지 골격 (Phase 2 챗봇 데이터 도착 전까지는 mockup)",[56,3857,3858,3859,3861],{},"모든 액션 감사 로그 기록 (",[15,3860,2946],{}," INSERT)",[23,3863,3864,3866],{},[27,3865,3762],{},": 운영자가 상담사 초대 → 상담사 가입 → 역할 가드 동작, 감사 로그 누적",[32,3868],{},[35,3870,3872],{"id":3871},"_8-다음-단계-이-기획서-승인-후","8. 다음 단계 (이 기획서 승인 후)",[1924,3874,3875,3887,3893,3899,3905],{},[56,3876,3877,1523,3880,3883,3884,3886],{},[27,3878,3879],{},"신규 테이블 5종 DDL 작성",[15,3881,3882],{},"\u002Fadmin\u002Fmigrate\u002F*"," 일회용 엔드포인트 (",[15,3885,76],{}," 패턴 재활용)",[56,3888,3889,3892],{},[27,3890,3891],{},"Cloudflare Access 셋업"," + admin 도메인 보호 적용",[56,3894,3895,3898],{},[27,3896,3897],{},"Week 1 골격 구현 시작"," — 사이드바·로그인·홈",[56,3900,3901,3904],{},[27,3902,3903],{},"OpenSearch 도메인 발주·셋업"," (자료 인덱싱 의존)",[56,3906,3907,3910],{},[27,3908,3909],{},"WBS 갱신"," — 본 기획의 5주차를 P1-3 \u002F P1-4 산하 task로 분해",[32,3912],{},[35,3914,3916],{"id":3915},"_9-결정-사항-기록","9. 결정 사항 기록",[134,3918,3919,3932],{},[137,3920,3921],{},[140,3922,3923,3926,3929],{},[143,3924,3925],{},"결정",[143,3927,3928],{},"일자",[143,3930,3931],{},"근거",[156,3933,3934,3948,3965,3979,3988,4001,4013,4026,4043,4075,4090,4105,4120],{},[140,3935,3936,3942,3945],{},[161,3937,3938,3939,3941],{},"사용자 = ",[27,3940,29],{}," (협력사·고객사 차단)",[161,3943,3944],{},"2026-06-08",[161,3946,3947],{},"사용자 합의",[140,3949,3950,3961,3963],{},[161,3951,3952,3953,3955,3956,3958,3959,77],{},"역할 3개 — 관리자(",[15,3954,170],{},") · 개발자(",[15,3957,188],{},") · 상담사(",[15,3960,206],{},[161,3962,3944],{},[161,3964,3947],{},[140,3966,3967,3974,3976],{},[161,3968,3969,3970,3973],{},"PMS ",[15,3971,3972],{},"\u002Fadmin\u002F*"," 페이지와 admin은 병행",[161,3975,3944],{},[161,3977,3978],{},"상담사 PMS 흐름 유지",[140,3980,3981,3984,3986],{},[161,3982,3983],{},"MVP = 챗봇 도입 전 필요한 전부 + 설정 + 계정",[161,3985,3944],{},[161,3987,3947],{},[140,3989,3990,3996,3998],{},[161,3991,3992,3993,3995],{},"인증은 Cloudflare Access SSO (",[15,3994,127],{}," 도메인 한정)",[161,3997,3944],{},[161,3999,4000],{},"직원 전용 + 기존 가이드",[140,4002,4003,4009,4011],{},[161,4004,4005,4008],{},[27,4006,4007],{},"동영상 자료는 URL 등록만",", Whisper 자막은 필요할 때 수동 트리거",[161,4010,3944],{},[161,4012,3947],{},[140,4014,4015,4021,4023],{},[161,4016,4017,4020],{},[27,4018,4019],{},"자료 보존 무기한"," (특별한 일 없는 한)",[161,4022,3944],{},[161,4024,4025],{},"사용자 합의 (자산 가치 우선)",[140,4027,4028,4038,4040],{},[161,4029,4030],{},[27,4031,4032,4033,529,4035,4037],{},"표준답변 분류 = scope(",[15,4034,1556],{},[15,4036,1568],{},") + topic + service_tag + tags",[161,4039,3944],{},[161,4041,4042],{},"사용자 합의 (도메인·SEO·일반 IT는 공통, 기능·법령은 서비스별)",[140,4044,4045,4067,4069],{},[161,4046,4047,1304,4050,529,4052,529,4055,529,4058,529,4061,529,4064,77],{},[27,4048,4049],{},"service_tag 기본 카탈로그 = LMS 패밀리 6종",[15,4051,1823],{},[15,4053,4054],{},"-refund",[15,4056,4057],{},"-public",[15,4059,4060],{},"-security",[15,4062,4063],{},"-hybrid",[15,4065,4066],{},"-global",[161,4068,3944],{},[161,4070,4071,4072,4074],{},"사용자 합의 — 같은 LMS라도 도메인 룰 달라 표준답변 분리 필요. ",[15,4073,1862],{},"는 정보보호 의무교육·ISMS-P 컴플라이언스 영역",[140,4076,4077,4085,4087],{},[161,4078,4079],{},[27,4080,4081,4082,4084],{},"AI 초안 생성 = 챗봇 응답 로직(",[15,4083,2560],{},") 재사용",[161,4086,3944],{},[161,4088,4089],{},"사용자 합의 (별도 prompt 안 만듦)",[140,4091,4092,4100,4102],{},[161,4093,4094],{},[27,4095,4096,4097,4099],{},"미커버 질문 = ",[15,4098,556],{}," 별도 전용 페이지",[161,4101,3944],{},[161,4103,4104],{},"사용자 합의 (작업 큐로 운영)",[140,4106,4107,4115,4117],{},[161,4108,4109],{},[27,4110,4111,4112,4114],{},"표준답변 작성 시 ",[15,4113,76],{}," 자동 추천·삽입",[161,4116,3944],{},[161,4118,4119],{},"사용자 합의 (이미지 캡션·설명 활용)",[140,4121,4122,4125,4127],{},[161,4123,4124],{},"다크모드 비활성 (CSS body bg 라이트 고정)",[161,4126,3944],{},[161,4128,4129],{},"PMS와 일관",[214,4131,4133],{"id":4132},"운영-정책-기본값-추가-합의-없을-시-적용","운영 정책 기본값 (추가 합의 없을 시 적용)",[134,4135,4136,4148],{},[137,4137,4138],{},[140,4139,4140,4143,4146],{},[143,4141,4142],{},"항목",[143,4144,4145],{},"기본값",[143,4147,3931],{},[156,4149,4150,4173,4190,4205,4218,4234],{},[140,4151,4152,4157,4170],{},[161,4153,4154],{},[27,4155,4156],{},"미커버 질문(uncovered) 알림 임계값",[161,4158,4159,4162,4163,4166,4167],{},[27,4160,4161],{},"챗봇(Phase 2)이 \"모름\"으로 분기","하거나 신뢰도 \u003C 0.5로 응답한 질문 중, 같은 의미가 ",[27,4164,4165],{},"주 3건"," 이상 누적되면 표준답변 후보로 큐 등록 + Slack DM. ",[2368,4168,4169],{},"답변 없는 게시물(inquiry-only)과는 별개 — 게시물은 이미 PMS에서 상담사가 처리",[161,4171,4172],{},"챗봇 지식 베이스의 구멍을 자료·표준답변 보강 신호로 환산",[140,4174,4175,4180,4187],{},[161,4176,4177],{},[27,4178,4179],{},"미커버 알림 채널",[161,4181,4182,4183,4186],{},"Slack ",[15,4184,4185],{},"#cs-helper-ops"," 채널 (Webhook 등록 후) — 부재 시 admin 홈의 \"후보 알림\" 카드만",[161,4188,4189],{},"외부 의존 최소화",[140,4191,4192,4197,4202],{},[161,4193,4194],{},[27,4195,4196],{},"상담사 답변 작성 시 AI 초안",[161,4198,4199,4201],{},[27,4200,2574],{},"에 \"초안 생성\" 버튼 (선택). 표준답변 등록 화면에는 없음(이미 LLM이 생성한 6개 변형이 PMS 측에 있음)",[161,4203,4204],{},"에스컬레이션 = 진짜 새 답변, 표준답변 = 큐레이션",[140,4206,4207,4212,4215],{},[161,4208,4209],{},[27,4210,4211],{},"데이터 보존 — 챗 로그",[161,4213,4214],{},"메시지 본문 90일 \u002F 메타(세션·피드백·신뢰도) 1년 \u002F 1년 후 익명화 후 통계 보관",[161,4216,4217],{},"개인정보 최소화 + 품질 평가용 보존",[140,4219,4220,4225,4231],{},[161,4221,4222],{},[27,4223,4224],{},"데이터 보존 — 자료",[161,4226,4227,4230],{},[27,4228,4229],{},"특별한 일이 없는 한 무기한 보관"," (soft delete + 영구 삭제는 운영자가 명시적으로 트리거). 청크·임베딩은 즉시 OpenSearch에서 제거",[161,4232,4233],{},"자산 가치 우선 (사용자 결정 — 챗봇 학습 베이스)",[140,4235,4236,4241,4244],{},[161,4237,4238],{},[27,4239,4240],{},"데이터 보존 — 표준답변·이미지",[161,4242,4243],{},"무기한 soft delete (수동 영구 삭제만 가능)",[161,4245,4246],{},"자산 가치 우선",[32,4248],{},[35,4250,4252],{"id":4251},"_10-열린-질문-확정-전","10. 열린 질문 (확정 전)",[23,4254,4255],{},"남아있는 결정 없음 — 모든 항목 §9 기본값으로 확정. 운영 중 조정 시 §9의 \"기본값\"을 갱신하고 history에 기록.",[4257,4258,4259],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":422,"searchDepth":3341,"depth":3341,"links":4261},[4262,4263,4267,4281,4318,4323,4327,4334,4335,4338],{"id":37,"depth":3334,"text":38},{"id":117,"depth":3334,"text":118,"children":4264},[4265,4266],{"id":216,"depth":3341,"text":217},{"id":379,"depth":3341,"text":380},{"id":411,"depth":3334,"text":412,"children":4268},[4269,4270,4277,4278,4279],{"id":425,"depth":3341,"text":426},{"id":455,"depth":3341,"text":456,"children":4271},[4272,4273,4274,4275,4276],{"id":483,"depth":3367,"text":484},{"id":658,"depth":3367,"text":659},{"id":797,"depth":3367,"text":798},{"id":904,"depth":3367,"text":905},{"id":1026,"depth":3367,"text":1027},{"id":1137,"depth":3341,"text":1138},{"id":1147,"depth":3341,"text":1148},{"id":1185,"depth":3341,"text":4280},"3-5. 신규 카탈로그 페이지 — \u002Fcatalog (그룹 2.4)",{"id":1203,"depth":3334,"text":1204,"children":4282},[4283,4285,4287,4297,4299,4301,4303,4304,4306,4308,4310,4312,4314,4316],{"id":1207,"depth":3341,"text":4284},"4-1. 홈 — \u002F",{"id":1271,"depth":3341,"text":4286},"4-2. 자료 관리 — \u002Fmaterials",{"id":1509,"depth":3341,"text":4288,"children":4289},"4-3. 표준답변 관리 — \u002Fstandard-answers",[4290,4291,4292,4294,4296],{"id":1515,"depth":3367,"text":1516},{"id":1964,"depth":3367,"text":1965},{"id":2019,"depth":3367,"text":4293},"4-3-3. 이미지 자동 배치 (hp_image_asset 활용)",{"id":2120,"depth":3367,"text":4295},"4-3-4. 스키마 보강 (hp_standard_answer)",{"id":2202,"depth":3367,"text":2203},{"id":2265,"depth":3341,"text":4298},"4-4. 이미지 카탈로그 — \u002Fimages",{"id":2362,"depth":3341,"text":4300},"4-5. 챗봇 응답 로그 — \u002Fchat-logs (Phase 2 준비)",{"id":2398,"depth":3341,"text":4302},"4-5-1. 미커버 질문 — \u002Funcovered (Phase 2 준비, 별도 전용 페이지)",{"id":2547,"depth":3341,"text":2548},{"id":2682,"depth":3341,"text":4305},"4-6. 에스컬레이션 큐 — \u002Fescalations (Phase 2 준비)",{"id":2722,"depth":3341,"text":4307},"4-7. Q&A 평가 \u002F LLM 비용 — \u002Fqa-evals · \u002Fcost",{"id":2755,"depth":3341,"text":4309},"4-8. AI 설정 — \u002Fsettings\u002Fai",{"id":2821,"depth":3341,"text":4311},"4-9. 안전 가드 — \u002Fsettings\u002Fsafety",{"id":2843,"depth":3341,"text":4313},"4-10. 캐싱 — \u002Fsettings\u002Fcache",{"id":2874,"depth":3341,"text":4315},"4-11. 외부 연동 — \u002Fsettings\u002Fintegrations",{"id":2908,"depth":3341,"text":4317},"4-12. 계정·권한 — \u002Faccounts",{"id":2958,"depth":3334,"text":2959,"children":4319},[4320,4321,4322],{"id":2962,"depth":3341,"text":2963},{"id":3118,"depth":3341,"text":3119},{"id":3155,"depth":3341,"text":3156},{"id":3244,"depth":3334,"text":3245,"children":4324},[4325,4326],{"id":3248,"depth":3341,"text":3249},{"id":3286,"depth":3341,"text":3287},{"id":3677,"depth":3334,"text":3678,"children":4328},[4329,4330,4331,4332,4333],{"id":3686,"depth":3341,"text":3687},{"id":3729,"depth":3341,"text":3730},{"id":3770,"depth":3341,"text":3771},{"id":3797,"depth":3341,"text":3798},{"id":3835,"depth":3341,"text":3836},{"id":3871,"depth":3334,"text":3872},{"id":3915,"depth":3334,"text":3916,"children":4336},[4337],{"id":4132,"depth":3341,"text":4133},{"id":4251,"depth":3334,"text":4252},"md",{},"\u002Fadmin-plan",{"title":5,"description":422},"ADMIN-PLAN","jbwozLXFNt4cA0XJVU1msQ5ZteYm6UK-mkkhssXeExc",1780986551103]