[{"data":1,"prerenderedAt":2801},["ShallowReactive",2],{"doc:\u002Flegacy-db-inventory":3},{"id":4,"title":5,"body":6,"description":925,"extension":2794,"meta":2795,"navigation":2796,"path":2797,"seo":2798,"stem":2799,"__hash__":2800},"docs\u002FLEGACY-DB-INVENTORY.md","레거시 DB 인벤토리 — pms (테스트 서버)",{"type":7,"value":8,"toc":2762},"minimark",[9,19,30,33,36,41,82,84,88,140,142,146,553,560,562,566,573,781,787,893,904,909,911,915,919,978,981,1035,1043,1045,1049,1234,1237,1251,1315,1320,1343,1349,1352,1355,1426,1432,1442,1539,1545,1548,1557,1567,1572,1606,1613,1671,1677,1719,1725,1728,1737,1777,1783,1886,1899,1904,2024,2027,2104,2108,2185,2190,2192,2203,2205,2209,2216,2557,2570,2586,2588,2592,2619,2621,2625,2706,2708,2712,2719,2749,2758],[10,11,13,14,18],"h1",{"id":12},"레거시-db-인벤토리-pms-테스트-서버","레거시 DB 인벤토리 — ",[15,16,17],"code",{},"pms"," (테스트 서버)",[20,21,22],"blockquote",{},[23,24,25,26,29],"p",{},"조사일: 2026-05-18\n대상: ",[15,27,28],{},"db.malgn.co.kr:3306\u002Fpms"," (테스트 서버, 읽기 권한 계정)\n목적: AI 챗봇 학습 자산화 가능성 평가 및 인제스트 매핑 정의",[23,31,32],{},"자격 증명은 본 문서에 기록하지 않는다. 운영 시크릿 채널로 관리.",[34,35],"hr",{},[37,38,40],"h2",{"id":39},"_1-결론-요약","1. 결론 요약",[42,43,44,53,72,79],"ul",{},[45,46,47,48,52],"li",{},"이 DB는 ",[49,50,51],"strong",{},"CS 전용 DB가 아니라 맑은소프트의 사내 PMS(프로젝트 관리 시스템)",".",[45,54,55,56,59,60,63,64,67,68,71],{},"그러나 ",[15,57,58],{},"tb_post"," + ",[15,61,62],{},"tb_post_comment","에 ",[49,65,66],{},"고객 문의와 맑은소프트 직원의 답변이 함께 누적","되어 있어 ",[49,69,70],{},"CS Q&A 자산","으로 가치가 있다.",[45,73,74,75,78],{},"합리적 필터를 적용하면 ",[49,76,77],{},"약 1,358건의 Q&A 후보","가 확보된다 (Site 1: 1,146, Site 2: 212).",[45,80,81],{},"HTML 본문·테스트 글·이미지 전용 글 등 정제가 필요. 정제 후 OpenSearch 인덱싱 대상으로 활용 가능.",[34,83],{},[37,85,87],{"id":86},"_2-db-메타","2. DB 메타",[89,90,91,104],"table",{},[92,93,94],"thead",{},[95,96,97,101],"tr",{},[98,99,100],"th",{},"항목",[98,102,103],{},"값",[105,106,107,116,124,132],"tbody",{},[95,108,109,113],{},[110,111,112],"td",{},"Engine",[110,114,115],{},"MySQL 8.0.42",[95,117,118,121],{},[110,119,120],{},"Charset",[110,122,123],{},"utf8mb3",[95,125,126,129],{},[110,127,128],{},"Tables",[110,130,131],{},"26개",[95,133,134,137],{},[110,135,136],{},"성격",[110,138,139],{},"PMS(게시판·프로젝트·채팅·일정·투표 통합)",[34,141],{},[37,143,145],{"id":144},"_3-테이블-인벤토리-행수-기준-상위","3. 테이블 인벤토리 (행수 기준 상위)",[89,147,148,164],{},[92,149,150],{},[95,151,152,155,158,161],{},[98,153,154],{},"테이블",[98,156,157],{},"행수",[98,159,160],{},"용도 추정",[98,162,163],{},"CS AI 활용성",[105,165,166,182,198,214,229,244,267,283,299,315,337,352,368,383,398,413,428,444,458,473,489,504,519,538],{},[95,167,168,173,176,179],{},[110,169,170],{},[15,171,172],{},"tb_post_read",[110,174,175],{},"364,140",[110,177,178],{},"게시글 읽음 처리",[110,180,181],{},"✕ 사용 안 함",[95,183,184,189,192,195],{},[110,185,186],{},[15,187,188],{},"tb_post_file",[110,190,191],{},"79,180",[110,193,194],{},"게시글 첨부파일 메타",[110,196,197],{},"◎ 텍스트 문서는 본문 부착, 이미지\u002F동영상은 별도 정책 (§6 첨부파일 처리 전략)",[95,199,200,205,208,211],{},[110,201,202],{},[15,203,204],{},"tb_post_share",[110,206,207],{},"68,380",[110,209,210],{},"게시글 공유 이력",[110,212,213],{},"✕",[95,215,216,221,224,227],{},[110,217,218],{},[15,219,220],{},"tb_project_user",[110,222,223],{},"22,292",[110,225,226],{},"프로젝트-사용자 매핑",[110,228,213],{},[95,230,231,236,239,242],{},[110,232,233],{},[15,234,235],{},"tb_diligence",[110,237,238],{},"7,137",[110,240,241],{},"근태\u002F근면 데이터",[110,243,213],{},[95,245,246,252,257,262],{},[110,247,248],{},[49,249,250],{},[15,251,62],{},[110,253,254],{},[49,255,256],{},"5,684",[110,258,259],{},[49,260,261],{},"게시글 댓글 (답변 본문)",[110,263,264],{},[49,265,266],{},"◎ 핵심 자산",[95,268,269,274,277,280],{},[110,270,271],{},[15,272,273],{},"tb_project",[110,275,276],{},"4,448",[110,278,279],{},"프로젝트 메타",[110,281,282],{},"△ 컨텍스트 (project_id 매핑)",[95,284,285,290,293,296],{},[110,286,287],{},[15,288,289],{},"tb_post_label",[110,291,292],{},"3,778",[110,294,295],{},"게시글 라벨(태그)",[110,297,298],{},"△ 카테고리 후보",[95,300,301,306,309,312],{},[110,302,303],{},[15,304,305],{},"tb_user",[110,307,308],{},"3,037",[110,310,311],{},"사용자",[110,313,314],{},"△ 작성자 메타용",[95,316,317,323,328,333],{},[110,318,319],{},[49,320,321],{},[15,322,58],{},[110,324,325],{},[49,326,327],{},"2,437",[110,329,330],{},[49,331,332],{},"게시글 본문 (질문\u002F요청)",[110,334,335],{},[49,336,266],{},[95,338,339,344,347,350],{},[110,340,341],{},[15,342,343],{},"tb_post_bookmark",[110,345,346],{},"2,046",[110,348,349],{},"즐겨찾기",[110,351,213],{},[95,353,354,359,362,365],{},[110,355,356],{},[15,357,358],{},"tb_chat_message",[110,360,361],{},"1,814",[110,363,364],{},"사내 실시간 채팅",[110,366,367],{},"✕ CS와 무관, 짧은 잡담 위주",[95,369,370,375,378,381],{},[110,371,372],{},[15,373,374],{},"tb_post_task",[110,376,377],{},"1,464",[110,379,380],{},"게시글 → 작업 변환",[110,382,213],{},[95,384,385,390,393,396],{},[110,386,387],{},[15,388,389],{},"tb_session",[110,391,392],{},"686",[110,394,395],{},"로그인 세션",[110,397,213],{},[95,399,400,405,408,411],{},[110,401,402],{},[15,403,404],{},"tb_user_log",[110,406,407],{},"457",[110,409,410],{},"사용자 활동 로그",[110,412,213],{},[95,414,415,420,423,426],{},[110,416,417],{},[15,418,419],{},"tb_post_alram",[110,421,422],{},"187",[110,424,425],{},"게시글 알림",[110,427,213],{},[95,429,430,435,438,441],{},[110,431,432],{},[15,433,434],{},"tb_post_template",[110,436,437],{},"90",[110,439,440],{},"문서 템플릿 (회의록\u002F보고서 등)",[110,442,443],{},"△ 양식이라 답변 데이터는 아님",[95,445,446,451,453,456],{},[110,447,448],{},[15,449,450],{},"tb_post_poll_user",[110,452,437],{},[110,454,455],{},"투표 응답",[110,457,213],{},[95,459,460,465,468,471],{},[110,461,462],{},[15,463,464],{},"tb_chat_file",[110,466,467],{},"81",[110,469,470],{},"채팅 첨부",[110,472,213],{},[95,474,475,480,483,486],{},[110,476,477],{},[15,478,479],{},"tb_site",[110,481,482],{},"63",[110,484,485],{},"사이트(테넌트) 정보",[110,487,488],{},"○ 필터 키",[95,490,491,496,499,502],{},[110,492,493],{},[15,494,495],{},"tb_post_poll",[110,497,498],{},"33",[110,500,501],{},"게시글 투표",[110,503,213],{},[95,505,506,511,514,517],{},[110,507,508],{},[15,509,510],{},"tb_sequence",[110,512,513],{},"22",[110,515,516],{},"시퀀스 카운터",[110,518,213],{},[95,520,521,530,533,536],{},[110,522,523,526,527],{},[15,524,525],{},"tb_group_user",", ",[15,528,529],{},"tb_group",[110,531,532],{},"8\u002F6",[110,534,535],{},"그룹",[110,537,213],{},[95,539,540,545,548,551],{},[110,541,542],{},[15,543,544],{},"tb_post_confirm",[110,546,547],{},"0",[110,549,550],{},"(미사용)",[110,552,213],{},[20,554,555],{},[23,556,557,559],{},[15,558,358],{}," 샘플: \"네~^^\", \"감사합니다ㅎㅎ\" 등 사내 메신저 대화 — CS 자산으로 활용 부적합.",[34,561],{},[37,563,565],{"id":564},"_4-핵심-테이블-스키마-관련-컬럼만","4. 핵심 테이블 스키마 (관련 컬럼만)",[567,568,570,572],"h3",{"id":569},"tb_post-질문요청-본문",[15,571,58],{}," (질문\u002F요청 본문)",[89,574,575,588],{},[92,576,577],{},[95,578,579,582,585],{},[98,580,581],{},"컬럼",[98,583,584],{},"타입",[98,586,587],{},"의미 \u002F 활용",[105,589,590,603,615,627,642,654,670,683,698,713,725,744,756,769],{},[95,591,592,597,600],{},[110,593,594],{},[15,595,596],{},"id",[110,598,599],{},"int",[110,601,602],{},"게시글 PK",[95,604,605,610,612],{},[110,606,607],{},[15,608,609],{},"site_id",[110,611,599],{},[110,613,614],{},"테넌트(사이트) — 필터 키",[95,616,617,622,624],{},[110,618,619],{},[15,620,621],{},"project_id",[110,623,599],{},[110,625,626],{},"프로젝트 컨텍스트",[95,628,629,637,639],{},[110,630,631,526,634],{},[15,632,633],{},"type",[15,635,636],{},"ctype",[110,638,599],{},[110,640,641],{},"게시글 구분 — 필터 후보",[95,643,644,649,651],{},[110,645,646],{},[15,647,648],{},"template_id",[110,650,599],{},[110,652,653],{},"사용된 템플릿",[95,655,656,664,667],{},[110,657,658,526,661],{},[15,659,660],{},"label_id",[15,662,663],{},"label",[110,665,666],{},"int\u002Fvarchar",[110,668,669],{},"카테고리 후보",[95,671,672,677,680],{},[110,673,674],{},[15,675,676],{},"writer",[110,678,679],{},"varchar",[110,681,682],{},"작성자(질문자)",[95,684,685,690,693],{},[110,686,687],{},[15,688,689],{},"subject",[110,691,692],{},"varchar(255)",[110,694,695],{},[49,696,697],{},"제목 = 질문 요약",[95,699,700,705,708],{},[110,701,702],{},[15,703,704],{},"content",[110,706,707],{},"longtext",[110,709,710],{},[49,711,712],{},"본문 = 질문 상세 (HTML)",[95,714,715,720,722],{},[110,716,717],{},[15,718,719],{},"is_notice",[110,721,599],{},[110,723,724],{},"공지 여부 — 제외",[95,726,727,739,741],{},[110,728,729,732,733,732,736],{},[15,730,731],{},"is_task","\u002F",[15,734,735],{},"is_schedule",[15,737,738],{},"is_poll",[110,740,599],{},[110,742,743],{},"작업\u002F일정\u002F투표 — 제외",[95,745,746,751,753],{},[110,747,748],{},[15,749,750],{},"comm_cnt",[110,752,599],{},[110,754,755],{},"댓글 수 — Q&A 페어 여부",[95,757,758,763,766],{},[110,759,760],{},[15,761,762],{},"reg_date",[110,764,765],{},"varchar(14)",[110,767,768],{},"YYYYMMDDHHMMSS — 신선도",[95,770,771,776,778],{},[110,772,773],{},[15,774,775],{},"status",[110,777,599],{},[110,779,780],{},"1 = 정상",[567,782,784,786],{"id":783},"tb_post_comment-답변-본문",[15,785,62],{}," (답변 본문)",[89,788,789,799],{},[92,790,791],{},[95,792,793,795,797],{},[98,794,581],{},[98,796,584],{},[98,798,587],{},[105,800,801,812,824,835,848,861,872,882],{},[95,802,803,807,809],{},[110,804,805],{},[15,806,596],{},[110,808,599],{},[110,810,811],{},"댓글 PK",[95,813,814,819,821],{},[110,815,816],{},[15,817,818],{},"post_id",[110,820,599],{},[110,822,823],{},"부모 게시글 FK",[95,825,826,830,832],{},[110,827,828],{},[15,829,676],{},[110,831,679],{},[110,833,834],{},"작성자(답변자)",[95,836,837,841,843],{},[110,838,839],{},[15,840,704],{},[110,842,707],{},[110,844,845],{},[49,846,847],{},"답변 본문 (HTML)",[95,849,850,855,858],{},[110,851,852],{},[15,853,854],{},"private_yn",[110,856,857],{},"char(1)",[110,859,860],{},"'Y' 비공개 댓글 — 제외",[95,862,863,867,869],{},[110,864,865],{},[15,866,762],{},[110,868,765],{},[110,870,871],{},"등록일",[95,873,874,878,880],{},[110,875,876],{},[15,877,775],{},[110,879,599],{},[110,881,780],{},[95,883,884,888,890],{},[110,885,886],{},[15,887,689],{},[110,889,679],{},[110,891,892],{},"보통 비어 있음",[567,894,896,526,898,526,900,526,902],{"id":895},"tb_site-tb_project-tb_user-tb_post_label",[15,897,479],{},[15,899,273],{},[15,901,305],{},[15,903,289],{},[42,905,906],{},[45,907,908],{},"메타데이터 결합용 — 작성자명·사이트명·프로젝트명·라벨명을 인덱스 메타 필드로 첨부.",[34,910],{},[37,912,914],{"id":913},"_5-qa-후보-데이터-규모","5. Q&A 후보 데이터 규모",[567,916,918],{"id":917},"적용-필터","적용 필터",[920,921,926],"pre",{"className":922,"code":923,"language":924,"meta":925,"style":925},"language-sql shiki shiki-themes github-light github-dark","WHERE p.status = 1\n  AND p.comm_cnt >= 1\n  AND p.is_task = 0\n  AND p.is_schedule = 0\n  AND p.is_poll = 0\n  AND p.is_notice = 0\n  AND p.subject NOT LIKE '테스트%'\n  AND CHAR_LENGTH(p.content) >= 20\n","sql","",[15,927,928,936,942,948,954,960,966,972],{"__ignoreMap":925},[929,930,933],"span",{"class":931,"line":932},"line",1,[929,934,935],{},"WHERE p.status = 1\n",[929,937,939],{"class":931,"line":938},2,[929,940,941],{},"  AND p.comm_cnt >= 1\n",[929,943,945],{"class":931,"line":944},3,[929,946,947],{},"  AND p.is_task = 0\n",[929,949,951],{"class":931,"line":950},4,[929,952,953],{},"  AND p.is_schedule = 0\n",[929,955,957],{"class":931,"line":956},5,[929,958,959],{},"  AND p.is_poll = 0\n",[929,961,963],{"class":931,"line":962},6,[929,964,965],{},"  AND p.is_notice = 0\n",[929,967,969],{"class":931,"line":968},7,[929,970,971],{},"  AND p.subject NOT LIKE '테스트%'\n",[929,973,975],{"class":931,"line":974},8,[929,976,977],{},"  AND CHAR_LENGTH(p.content) >= 20\n",[567,979,980],{"id":980},"결과",[89,982,983,996],{},[92,984,985],{},[95,986,987,990,993],{},[98,988,989],{},"Site",[98,991,992],{},"Site 이름",[98,994,995],{},"후보 게시글",[105,997,998,1009,1020],{},[95,999,1000,1003,1006],{},[110,1001,1002],{},"1",[110,1004,1005],{},"(주)맑은소프트",[110,1007,1008],{},"1,146",[95,1010,1011,1014,1017],{},[110,1012,1013],{},"2",[110,1015,1016],{},"맑은소프트 내부",[110,1018,1019],{},"212",[95,1021,1022,1025,1030],{},[110,1023,1024],{},"—",[110,1026,1027],{},[49,1028,1029],{},"합계",[110,1031,1032],{},[49,1033,1034],{},"1,358",[20,1036,1037],{},[23,1038,1039,1040,52],{},"Site 1이 외부 고객 문의 + 내부 글이 섞여 있을 가능성 있음. ",[49,1041,1042],{},"표본 검수 후 site별 채택 여부 재결정 필요",[34,1044],{},[37,1046,1048],{"id":1047},"_6-데이터-품질-이슈","6. 데이터 품질 이슈",[89,1050,1051,1061],{},[92,1052,1053],{},[95,1054,1055,1058],{},[98,1056,1057],{},"이슈",[98,1059,1060],{},"처리 방안",[105,1062,1063,1079,1095,1106,1118,1131,1151,1163,1171,1182,1190,1198,1209,1223],{},[95,1064,1065,1072],{},[110,1066,1067,1068,1071],{},"본문이 HTML (",[15,1069,1070],{},"\u003Cp>...",")",[110,1073,1074,1075,1078],{},"인덱싱 전 HTML 정제 (태그 제거, 엔티티 디코드, ",[15,1076,1077],{},"\u003Cimg>"," 제거 후 alt만 보존)",[95,1080,1081,1088],{},[110,1082,1083,1084,1087],{},"일부 글은 ",[49,1085,1086],{},"이미지만"," 있음 (스크린샷 캡처)",[110,1089,1090,1091,1094],{},"아래 ",[49,1092,1093],{},"이미지 처리 전략"," 참조 — 단계별 도입",[95,1096,1097,1103],{},[110,1098,1099,1102],{},[15,1100,1101],{},"\u003Cimg src=\"\u002Fdata\u002F...\">"," 내부 경로",[110,1104,1105],{},"메타 필드로 보존 후 외부 접근 가능한 URL로 치환 (R2 서명 URL 또는 프록시)",[95,1107,1108,1115],{},[110,1109,1110,1111,1114],{},"테스트 글(",[15,1112,1113],{},"테스트%",")이 많음",[110,1116,1117],{},"제목·작성자·날짜 기반 필터, 화이트리스트 검토",[95,1119,1120,1126],{},[110,1121,1122,1125],{},[15,1123,1124],{},"private_yn = 'Y'"," 비공개 댓글",[110,1127,1128],{},[49,1129,1130],{},"반드시 제외",[95,1132,1133,1141],{},[110,1134,1135,1137,1138,1140],{},[15,1136,762],{},"가 ",[15,1139,765],{}," (YYYYMMDDHHMMSS)",[110,1142,1143,1144,732,1147,1150],{},"인덱싱 시 ",[15,1145,1146],{},"DATETIME",[15,1148,1149],{},"epoch"," 변환, 신선도 가중치 적용",[95,1152,1153,1156],{},[110,1154,1155],{},"동일 질문에 여러 댓글",[110,1157,1158,1159,1162],{},"모든 댓글을 후보로 보되 ",[49,1160,1161],{},"마지막 답변 또는 staff 답변 우선"," 등 정책 결정 필요",[95,1164,1165,1168],{},[110,1166,1167],{},"작성자가 동일한 Q&A (자기 답변)",[110,1169,1170],{},"셀프 답변은 신뢰도 낮춤 또는 제외",[95,1172,1173,1176],{},[110,1174,1175],{},"PII 가능성 (이메일·전화·이름)",[110,1177,1178,1179],{},"인제스트 단계에서 마스킹 또는 사내용으로만 사용. ",[49,1180,1181],{},"공개 챗봇에 그대로 노출 금지",[95,1183,1184,1187],{},[110,1185,1186],{},"사용자 작성 IP 컬럼 보유",[110,1188,1189],{},"인덱싱 대상에서 제외",[95,1191,1192,1195],{},[110,1193,1194],{},"Site별로 도메인이 다를 수 있음",[110,1196,1197],{},"사이트 1(맑은소프트 운영)만 우선 채택 후 확장",[95,1199,1200,1203],{},[110,1201,1202],{},"댓글이 1건 ↔ 다건(스레드)으로 섞임",[110,1204,1090,1205,1208],{},[49,1206,1207],{},"스레드 처리 전략"," 참조",[95,1210,1211,1217],{},[110,1212,1213,1214,1216],{},"비공개 댓글(",[15,1215,1124],{},")이 9.3% 존재",[110,1218,1090,1219,1222],{},[49,1220,1221],{},"비공개 댓글 처리 전략"," 참조 — 단순 제외 아님",[95,1224,1225,1228],{},[110,1226,1227],{},"첨부파일이 Q&A 후보 64.9%에 존재 (총 78,784건)",[110,1229,1090,1230,1233],{},[49,1231,1232],{},"첨부파일 처리 전략"," 참조 — 파일 종류별 분기",[567,1235,1093],{"id":1236},"이미지-처리-전략",[23,1238,1239,1240,1243,1244,1246,1247,1250],{},"본 DB의 게시글 본문은 ",[15,1241,1242],{},"\u003Cp>"," 텍스트와 ",[15,1245,1101],{}," 이미지가 함께 들어 있다. 가치 있는 Q&A는 보통 텍스트 본문이 충분하고, 이미지만 있는 글은 테스트·사내 스크린샷이 대부분이라 ",[49,1248,1249],{},"단계별 도입","으로 비용과 복잡도를 통제한다.",[89,1252,1253,1269],{},[92,1254,1255],{},[95,1256,1257,1260,1263,1266],{},[98,1258,1259],{},"단계",[98,1261,1262],{},"처리 방식",[98,1264,1265],{},"비용",[98,1267,1268],{},"적용 시점",[105,1270,1271,1287,1301],{},[95,1272,1273,1276,1282,1284],{},[110,1274,1275],{},"A. 텍스트만 (MVP)",[110,1277,1278,1279,1281],{},"HTML·",[15,1280,1077],{}," 태그 제거 후 본문 길이가 임계값(예: 30자) 미만이면 인덱싱 제외. 이미지 URL은 메타 필드로만 보존",[110,1283,547],{},[110,1285,1286],{},"Phase 1 즉시",[95,1288,1289,1292,1295,1298],{},[110,1290,1291],{},"B. OCR 추가",[110,1293,1294],{},"텍스트와 이미지가 함께 있는 글에서 스크린샷의 텍스트(에러 메시지·관리자 화면 등)만 추출해 본문 뒤에 부착",[110,1296,1297],{},"낮음 (Cloudflare AI \u002F 외부 OCR)",[110,1299,1300],{},"Phase 1 후반 ~ Phase 2",[95,1302,1303,1306,1309,1312],{},[110,1304,1305],{},"C. Vision LLM 캡션",[110,1307,1308],{},"Claude Vision으로 이미지 내용 요약 캡션 생성 → 의미 검색 강화",[110,1310,1311],{},"중간 (토큰 비용)",[110,1313,1314],{},"Phase 2 품질 고도화",[23,1316,1317],{},[49,1318,1319],{},"공통 원칙",[42,1321,1322,1329,1336],{},[45,1323,1324,1325,1328],{},"모든 단계에서 ",[49,1326,1327],{},"이미지 URL을 메타 필드로 보존"," → 챗봇 답변에서 \"관련 화면 참고: \u003C링크>\"로 인용 가능.",[45,1330,1331,1332,1335],{},"이미지 경로(",[15,1333,1334],{},"\u002Fdata\u002F...",")는 외부 접근 가능한 URL로 치환 (R2 서명 URL 또는 프록시).",[45,1337,1338,1339,1342],{},"단계 전환은 ",[49,1340,1341],{},"미커버 질문 분석 결과","로 결정. 이미지 정보 없이 풀리지 않는 질문이 의미 있게 쌓이면 B 도입.",[23,1344,1345,1348],{},[49,1346,1347],{},"트레이드오프",": 텍스트만은 단순·저비용이지만 \"이 화면에서 어떻게 해요?\" 같은 시각 의존 질문을 놓침. OCR\u002FVision은 잡을 수 있지만 복잡도·비용 증가.",[567,1350,1207],{"id":1351},"스레드-처리-전략",[23,1353,1354],{},"게시글당 댓글 수 분포 (status=1 + 테스트 제외 후, 1,358건 후보 기준):",[89,1356,1357,1370],{},[92,1358,1359],{},[95,1360,1361,1364,1367],{},[98,1362,1363],{},"댓글 수",[98,1365,1366],{},"게시글 수",[98,1368,1369],{},"비율",[105,1371,1372,1383,1393,1404,1415],{},[95,1373,1374,1377,1380],{},[110,1375,1376],{},"1 (단일 응답)",[110,1378,1379],{},"487",[110,1381,1382],{},"36%",[95,1384,1385,1388,1391],{},[110,1386,1387],{},"2~3 (짧은 스레드)",[110,1389,1390],{},"486",[110,1392,1382],{},[95,1394,1395,1398,1401],{},[110,1396,1397],{},"4~6 (중간 스레드)",[110,1399,1400],{},"238",[110,1402,1403],{},"18%",[95,1405,1406,1409,1412],{},[110,1407,1408],{},"7~15 (긴 스레드)",[110,1410,1411],{},"129",[110,1413,1414],{},"9%",[95,1416,1417,1420,1423],{},[110,1418,1419],{},"16+ (매우 긴)",[110,1421,1422],{},"18",[110,1424,1425],{},"1%",[23,1427,1428,1431],{},[49,1429,1430],{},"약 64%가 스레드형"," — 단일 Q&A 페어로 가정하면 안 된다. 후속 질의·재확인·해결 과정을 모두 활용해야 답변 품질이 살아난다.",[23,1433,1434,1437,1438,1441],{},[49,1435,1436],{},"원칙",": 스레드를 ",[49,1439,1440],{},"하나의 Q&A 도큐먼트로 압축","해서 인덱싱한다.",[89,1443,1444,1453],{},[92,1445,1446],{},[95,1447,1448,1450],{},[98,1449,100],{},[98,1451,1452],{},"처리",[105,1454,1455,1463,1474,1489,1497,1505,1513,1525],{},[95,1456,1457,1460],{},[110,1458,1459],{},"단위",[110,1461,1462],{},"1개 게시글(+ 그 게시글의 모든 가시 댓글) = 1 도큐먼트",[95,1464,1465,1468],{},[110,1466,1467],{},"본문 구성",[110,1469,1470,1473],{},[15,1471,1472],{},"질문(Q) → 답변1(A) → 추가질문(Q2) → 답변2(A2) → ..."," 시간순 결합",[95,1475,1476,1479],{},[110,1477,1478],{},"화자 표기",[110,1480,1481,1482,526,1485,1488],{},"각 턴 앞에 작성자\u002F역할 라벨 (",[15,1483,1484],{},"고객:",[15,1486,1487],{},"상담사:"," 등) 부착 — LLM이 화자 추적 가능하게",[95,1490,1491,1494],{},[110,1492,1493],{},"잡담 필터",[110,1495,1496],{},"본문 길이 5자 미만, \"ddddd\" 같은 반복 문자 등 노이즈 댓글 제거 (post 94221 사례 참조)",[95,1498,1499,1502],{},[110,1500,1501],{},"임베딩 입력",[110,1503,1504],{},"결합된 전체 텍스트 (Q+A 누적)",[95,1506,1507,1510],{},[110,1508,1509],{},"BM25 인덱스",[110,1511,1512],{},"제목·질문·답변 분리 필드 + 결합 필드 둘 다 보유해 가중치 조절 가능",[95,1514,1515,1518],{},[110,1516,1517],{},"청킹",[110,1519,1520,1521,1524],{},"결합 본문이 임계값(예: 2000자) 초과 시 의미 단위 분할, 단 동일 ",[15,1522,1523],{},"doc_id","로 묶음",[95,1526,1527,1530],{},[110,1528,1529],{},"메타",[110,1531,1532,526,1535,1538],{},[15,1533,1534],{},"turn_count",[15,1536,1537],{},"last_reply_at"," 보존 → 신선도·복잡도 가중치",[23,1540,1541,1544],{},[49,1542,1543],{},"비잡담 검증",": 댓글 노이즈(\"ddddd\", \"xxxxxx\") 검출 룰 — 동일 문자 반복, 길이 5자 미만, 의미 없는 단일 단어 등.",[567,1546,1221],{"id":1547},"비공개-댓글-처리-전략",[23,1549,1550,1553,1554,52],{},[15,1551,1552],{},"tb_post_comment.private_yn = 'Y'"," 댓글은 활성 댓글 5,021건 중 ",[49,1555,1556],{},"513건 (약 9.3%)",[23,1558,1559,1562,1563,1566],{},[49,1560,1561],{},"관찰",": 일부 스레드는 ",[49,1564,1565],{},"알맹이 답변이 비공개에만 존재","한다 (예: post 94221 — 공개 댓글은 잡담, 비공개 댓글이 실제 답변). 따라서 단순 제외하면 답변 자산을 잃는다. 그러나 비공개는 의도적으로 고객 비노출이므로 챗봇 노출은 금지.",[23,1568,1569],{},[49,1570,1571],{},"해결: 가시성(visibility) 메타 필드로 계층 인덱싱.",[89,1573,1574,1584],{},[92,1575,1576],{},[95,1577,1578,1581],{},[98,1579,1580],{},"인덱스 도큐먼트의 visibility",[98,1582,1583],{},"포함 댓글",[105,1585,1586,1596],{},[95,1587,1588,1593],{},[110,1589,1590],{},[15,1591,1592],{},"internal",[110,1594,1595],{},"공개 + 비공개 댓글 모두 결합",[95,1597,1598,1603],{},[110,1599,1600],{},[15,1601,1602],{},"public",[110,1604,1605],{},"공개 댓글만 결합",[23,1607,1608,1609,1612],{},"같은 게시글에 대해 두 개 변형을 만들지 않고, ",[49,1610,1611],{},"하나의 도큐먼트에 두 본문 필드","를 유지하는 방식도 가능:",[89,1614,1615,1625],{},[92,1616,1617],{},[95,1618,1619,1622],{},[98,1620,1621],{},"인덱스 필드",[98,1623,1624],{},"내용",[105,1626,1627,1637,1647,1661],{},[95,1628,1629,1634],{},[110,1630,1631],{},[15,1632,1633],{},"body_public",[110,1635,1636],{},"공개 댓글만으로 구성한 결합 본문 (Phase 2 챗봇용 BM25\u002F임베딩)",[95,1638,1639,1644],{},[110,1640,1641],{},[15,1642,1643],{},"body_internal",[110,1645,1646],{},"비공개 포함 결합 본문 (Phase 1 상담사 보조용 BM25\u002F임베딩)",[95,1648,1649,1658],{},[110,1650,1651,1654,1655],{},[15,1652,1653],{},"embedding_public"," \u002F ",[15,1656,1657],{},"embedding_internal",[110,1659,1660],{},"각 본문 기준 벡터",[95,1662,1663,1668],{},[110,1664,1665],{},[15,1666,1667],{},"has_internal_only_answer",[110,1669,1670],{},"공개 본문에는 답이 없고 비공개에만 있는 경우 표시 (Phase 2에서 자동 에스컬레이션 후보)",[23,1672,1673,1676],{},[49,1674,1675],{},"Phase별 사용",":",[89,1678,1679,1689],{},[92,1680,1681],{},[95,1682,1683,1686],{},[98,1684,1685],{},"Phase",[98,1687,1688],{},"검색 대상",[105,1690,1691,1703],{},[95,1692,1693,1696],{},[110,1694,1695],{},"Phase 1 (상담사 보조)",[110,1697,1698,1654,1700,1702],{},[15,1699,1643],{},[15,1701,1657],{}," — 내부 지식 활용 정당",[95,1704,1705,1708],{},[110,1706,1707],{},"Phase 2 (고객 챗봇)",[110,1709,1710,1654,1712,1714,1715,1718],{},[15,1711,1633],{},[15,1713,1653],{}," — 공개 자산만 사용. ",[15,1716,1717],{},"has_internal_only_answer = true","인 케이스는 \"확인 후 답변 드리겠습니다\" 또는 에스컬레이션",[23,1720,1721,1724],{},[49,1722,1723],{},"금지",": 비공개 댓글 본문이 Phase 2 챗봇 응답에 직접 인용되거나 출처로 노출되어선 안 됨.",[567,1726,1232],{"id":1727},"첨부파일-처리-전략",[23,1729,1730,1732,1733,1736],{},[15,1731,188],{},"은 게시글\u002F댓글에 첨부된 파일 메타. 활성 78,784건이 존재하고 ",[49,1734,1735],{},"Q&A 후보 1,358건 중 881건(64.9%)이 첨부 보유"," — 무시 시 답변 자산의 절반 손실.",[23,1738,1739,1742,1743,1746,1747,732,1750,1753,1754,1757,1758,1761,1762,1746,1765,732,1768,732,1771,1753,1774,52],{},[49,1740,1741],{},"스키마 핵심",": ",[15,1744,1745],{},"module","(",[15,1748,1749],{},"post",[15,1751,1752],{},"editor",") + ",[15,1755,1756],{},"module_id","(게시글 id) + ",[15,1759,1760],{},"realname","(원본 파일명) + ",[15,1763,1764],{},"filetype",[15,1766,1767],{},"file",[15,1769,1770],{},"image",[15,1772,1773],{},"movie",[15,1775,1776],{},"filesize",[23,1778,1779,1782],{},[49,1780,1781],{},"파일 종류 분포"," (확장자 상위):",[89,1784,1785,1801],{},[92,1786,1787],{},[95,1788,1789,1792,1795,1798],{},[98,1790,1791],{},"분류",[98,1793,1794],{},"확장자",[98,1796,1797],{},"건수",[98,1799,1800],{},"평균\u002F최대 크기",[105,1802,1803,1817,1831,1845,1859,1873],{},[95,1804,1805,1808,1811,1814],{},[110,1806,1807],{},"이미지",[110,1809,1810],{},"png, jpg, gif, jpeg, bmp",[110,1812,1813],{},"38,063",[110,1815,1816],{},"평균 ~수백KB",[95,1818,1819,1822,1825,1828],{},[110,1820,1821],{},"텍스트 문서",[110,1823,1824],{},"pdf(11k), pptx(7k), hwp(5k), xlsx(5k), docx(2k), ppt(1.4k), doc(0.7k), txt(0.3k), csv(0.2k)",[110,1826,1827],{},"34,125",[110,1829,1830],{},"pdf 평균 2.3MB, pptx 평균 6.7MB \u002F 최대 530MB",[95,1832,1833,1836,1839,1842],{},[110,1834,1835],{},"압축",[110,1837,1838],{},"zip",[110,1840,1841],{},"3,374",[110,1843,1844],{},"평균 35MB \u002F 최대 1.1GB",[95,1846,1847,1850,1853,1856],{},[110,1848,1849],{},"동영상",[110,1851,1852],{},"mp4, mov, swf",[110,1854,1855],{},"566",[110,1857,1858],{},"mp4 평균 113MB \u002F 최대 1.1GB",[95,1860,1861,1864,1867,1870],{},[110,1862,1863],{},"디자인",[110,1865,1866],{},"psd, ai",[110,1868,1869],{},"1,294",[110,1871,1872],{},"평균 수MB ~ 수십MB",[95,1874,1875,1878,1881,1884],{},[110,1876,1877],{},"기타",[110,1879,1880],{},"exe, sql, r, ttf 등",[110,1882,1883],{},"소량",[110,1885,1024],{},[20,1887,1888],{},[23,1889,1890,1891,1894,1895,1898],{},"한국어 환경 특이점: ",[49,1892,1893],{},"HWP(한컴) 5,094건"," — 별도 추출기(",[15,1896,1897],{},"hwp.js"," 등) 필요.",[1900,1901,1903],"h4",{"id":1902},"종류별-처리-정책","종류별 처리 정책",[89,1905,1906,1922],{},[92,1907,1908],{},[95,1909,1910,1913,1916,1919],{},[98,1911,1912],{},"파일 종류",[98,1914,1915],{},"Phase 1 MVP",[98,1917,1918],{},"Phase 1 후반",[98,1920,1921],{},"Phase 2",[105,1923,1924,1941,1955,1973,1986,2000,2012],{},[95,1925,1926,1932,1935,1938],{},[110,1927,1928,1929,1071],{},"인라인 이미지 (",[15,1930,1931],{},"module=editor",[110,1933,1934],{},"§6 이미지 처리 전략 Stage A",[110,1936,1937],{},"Stage B (OCR)",[110,1939,1940],{},"Stage C (Vision LLM)",[95,1942,1943,1946,1949,1952],{},[110,1944,1945],{},"이미지 첨부 (png\u002Fjpg\u002Fgif\u002Fjpeg\u002Fbmp)",[110,1947,1948],{},"동일 — 메타만 보존",[110,1950,1951],{},"OCR 텍스트 본문 부착",[110,1953,1954],{},"Vision 캡션",[95,1956,1957,1962,1968,1971],{},[110,1958,1959,1961],{},[49,1960,1821],{}," (pdf\u002Fdocx\u002Fhwp\u002Ftxt\u002Fcsv\u002Fxlsx)",[110,1963,1964,1967],{},[49,1965,1966],{},"추출 텍스트를 본문에 부착"," → 검색 대상",[110,1969,1970],{},"청킹·구조 보존 개선",[110,1972,1024],{},[95,1974,1975,1978,1981,1984],{},[110,1976,1977],{},"슬라이드 (pptx\u002Fppt)",[110,1979,1980],{},"텍스트 추출 (크기 상한 50MB)",[110,1982,1983],{},"슬라이드 단위 청킹",[110,1985,1024],{},[95,1987,1988,1991,1994,1997],{},[110,1989,1990],{},"압축파일 (zip)",[110,1992,1993],{},"미추출, 메타만",[110,1995,1996],{},"사례 검토 후 선택 도입",[110,1998,1999],{},"Queue로 처리 검토",[95,2001,2002,2005,2007,2009],{},[110,2003,2004],{},"동영상 (mp4\u002Fmov\u002Fswf)",[110,2006,1993],{},[110,2008,1024],{},[110,2010,2011],{},"Queue + 트랜스크립트 (Whisper 등)",[95,2013,2014,2017,2020,2022],{},[110,2015,2016],{},"디자인\u002F실행 (psd\u002Fai\u002Fexe)",[110,2018,2019],{},"파일명만 메타",[110,2021,1024],{},[110,2023,1024],{},[1900,2025,1319],{"id":2026},"공통-원칙",[42,2028,2029,2041,2070,2076,2086,2092],{},[45,2030,2031,2034,2035,732,2037,2040],{},[49,2032,2033],{},"원본은 R2에 보관",". DB의 ",[15,2036,1760],{},[15,2038,2039],{},"filename","을 R2 키로 매핑. 답변 인용 시 R2 서명 URL 발급.",[45,2042,2043,2046,2047,2049,2050],{},[49,2044,2045],{},"가시성 상속",": 댓글에 첨부된 파일은 그 댓글의 ",[15,2048,854],{}," 값을 상속.\n",[42,2051,2052,2061,2067],{},[45,2053,2054,2055,2057,2058,2060],{},"공개 댓글 첨부 → 텍스트는 ",[15,2056,1633],{},"·",[15,2059,1643],{}," 모두에 부착",[45,2062,2063,2064,2066],{},"비공개 댓글 첨부 → ",[15,2065,1643],{},"에만 부착, Phase 2 챗봇에서 노출 금지",[45,2068,2069],{},"게시글 본문 첨부 → 공개 취급",[45,2071,2072,2075],{},[49,2073,2074],{},"크기 상한",": Phase 1에서는 50MB 초과 파일은 Queue 도입 전까지 보류. 메타만 인덱스에 보존.",[45,2077,2078,2081,2082,2085],{},[49,2079,2080],{},"추출 실패 허용",": 손상된 파일·미지원 포맷은 메타만 남기고 ",[15,2083,2084],{},"extraction_status: failed",". 인덱싱 중단 사유 아님.",[45,2087,2088,2091],{},[49,2089,2090],{},"PII",": 추출 텍스트에도 PII 검출·마스킹 적용 (이메일·전화·주민번호).",[45,2093,2094,2097,2098,2103],{},[49,2095,2096],{},"챗봇 인용",": 답변에 \"참고: ",[2099,2100,2102],"a",{"href":2101},"r2-url","filename.pdf","\" 형식으로 출처 첨부 명시.",[1900,2105,2107],{"id":2106},"라이브러리-후보-선정-보류","라이브러리 후보 (선정 보류)",[89,2109,2110,2120],{},[92,2111,2112],{},[95,2113,2114,2117],{},[98,2115,2116],{},"포맷",[98,2118,2119],{},"후보",[105,2121,2122,2135,2148,2158,2169,2177],{},[95,2123,2124,2127],{},[110,2125,2126],{},"PDF",[110,2128,2129,526,2132],{},[15,2130,2131],{},"pdf-parse",[15,2133,2134],{},"pdfjs-dist",[95,2136,2137,2140],{},[110,2138,2139],{},"DOCX",[110,2141,2142,526,2145],{},[15,2143,2144],{},"mammoth",[15,2146,2147],{},"docx",[95,2149,2150,2153],{},[110,2151,2152],{},"HWP",[110,2154,2155,2157],{},[15,2156,1897],{}," (한국 환경 필수)",[95,2159,2160,2163],{},[110,2161,2162],{},"XLSX\u002FXLS",[110,2164,2165,2168],{},[15,2166,2167],{},"xlsx"," (SheetJS)",[95,2170,2171,2174],{},[110,2172,2173],{},"PPTX",[110,2175,2176],{},"자체 unzip + slide XML 파싱 또는 외부 변환 서비스",[95,2178,2179,2182],{},[110,2180,2181],{},"TXT\u002FCSV",[110,2183,2184],{},"직접 읽기",[20,2186,2187],{},[23,2188,2189],{},"Cloudflare Workers의 CPU\u002F메모리 제한으로 동기 추출은 일부 포맷·소형 파일만 가능. 대용량\u002F복잡 추출은 별도 인덱서(로컬 백필 스크립트 또는 Phase 2 Queue Worker)에서 처리.",[1900,2191,1347],{"id":1347},[42,2193,2194,2197,2200],{},[45,2195,2196],{},"텍스트 문서 추출만 도입해도 답변 자산이 크게 늘어남(881건의 첨부 중 상당수가 매뉴얼·로그·샘플).",[45,2198,2199],{},"그러나 추출 라이브러리·실패 케이스·대용량 처리 인프라 비용 증가.",[45,2201,2202],{},"동영상 트랜스크립트는 즉시 도입 시 비용이 가장 크므로 Phase 2 Queue 도입과 정합.",[34,2204],{},[37,2206,2208],{"id":2207},"_7-권장-인제스트-매핑-초안","7. 권장 인제스트 매핑 (초안)",[23,2210,2211,2212,2215],{},"OpenSearch ",[15,2213,2214],{},"chunks"," 인덱스 한 도큐먼트당:",[89,2217,2218,2230],{},[92,2219,2220],{},[95,2221,2222,2224,2227],{},[98,2223,1621],{},[98,2225,2226],{},"출처",[98,2228,2229],{},"비고",[105,2231,2232,2246,2261,2281,2301,2315,2330,2346,2358,2370,2385,2399,2414,2427,2443,2456,2472,2484,2496,2510,2522,2543],{},[95,2233,2234,2238,2243],{},[110,2235,2236],{},[15,2237,1523],{},[110,2239,2240],{},[15,2241,2242],{},"legacy:post:{tb_post.id}",[110,2244,2245],{},"안정적 식별자",[95,2247,2248,2253,2258],{},[110,2249,2250],{},[15,2251,2252],{},"source_type",[110,2254,2255],{},[15,2256,2257],{},"\"legacy_pms_qna\"",[110,2259,2260],{},"출처 구분",[95,2262,2263,2270,2278],{},[110,2264,2265,1654,2267],{},[15,2266,609],{},[15,2268,2269],{},"site_name",[110,2271,2272,59,2275],{},[15,2273,2274],{},"tb_post.site_id",[15,2276,2277],{},"tb_site.name",[110,2279,2280],{},"필터·메타",[95,2282,2283,2290,2298],{},[110,2284,2285,1654,2287],{},[15,2286,621],{},[15,2288,2289],{},"project_name",[110,2291,2292,59,2295],{},[15,2293,2294],{},"tb_post.project_id",[15,2296,2297],{},"tb_project.name",[110,2299,2300],{},"컨텍스트",[95,2302,2303,2307,2312],{},[110,2304,2305],{},[15,2306,663],{},[110,2308,2309],{},[15,2310,2311],{},"tb_post_label.name",[110,2313,2314],{},"카테고리",[95,2316,2317,2322,2327],{},[110,2318,2319],{},[15,2320,2321],{},"title",[110,2323,2324],{},[15,2325,2326],{},"tb_post.subject",[110,2328,2329],{},"제목",[95,2331,2332,2337,2343],{},[110,2333,2334],{},[15,2335,2336],{},"question_text",[110,2338,2339,2340],{},"정제된 ",[15,2341,2342],{},"tb_post.content",[110,2344,2345],{},"질문 본문",[95,2347,2348,2352,2355],{},[110,2349,2350],{},[15,2351,1633],{},[110,2353,2354],{},"공개 댓글만으로 구성한 스레드 결합 본문 (Q→A→Q2→A2…, 화자 라벨 포함)",[110,2356,2357],{},"Phase 2 검색·임베딩",[95,2359,2360,2364,2367],{},[110,2361,2362],{},[15,2363,1643],{},[110,2365,2366],{},"비공개 포함 스레드 결합 본문",[110,2368,2369],{},"Phase 1 검색·임베딩",[95,2371,2372,2376,2382],{},[110,2373,2374],{},[15,2375,1653],{},[110,2377,2378,2381],{},[15,2379,2380],{},"title + question_text + body_public"," 기준 벡터",[110,2383,2384],{},"Phase 2 k-NN",[95,2386,2387,2391,2396],{},[110,2388,2389],{},[15,2390,1657],{},[110,2392,2393,2381],{},[15,2394,2395],{},"title + question_text + body_internal",[110,2397,2398],{},"Phase 1 k-NN",[95,2400,2401,2405,2411],{},[110,2402,2403],{},[15,2404,1667],{},[110,2406,2407,2408],{},"공개 본문에는 답이 없고 비공개에만 있는 경우 ",[15,2409,2410],{},"true",[110,2412,2413],{},"Phase 2 자동 에스컬레이션 트리거",[95,2415,2416,2421,2424],{},[110,2417,2418],{},[15,2419,2420],{},"image_urls",[110,2422,2423],{},"본문\u002F댓글에서 추출한 이미지 URL 배열",[110,2425,2426],{},"인용용 메타 (외부 접근 URL로 치환)",[95,2428,2429,2434,2440],{},[110,2430,2431],{},[15,2432,2433],{},"attachments_public",[110,2435,2436,2437],{},"공개 영역(게시글 본문\u002F공개 댓글)의 첨부 배열 — ",[15,2438,2439],{},"{filename, r2_url, filetype, size, visibility, extraction_status}",[110,2441,2442],{},"Phase 2 인용 가능",[95,2444,2445,2450,2453],{},[110,2446,2447],{},[15,2448,2449],{},"attachments_internal",[110,2451,2452],{},"비공개 댓글 첨부까지 포함한 전체 배열",[110,2454,2455],{},"Phase 1 전용",[95,2457,2458,2463,2469],{},[110,2459,2460],{},[15,2461,2462],{},"extracted_text_public",[110,2464,2465,2466,2468],{},"공개 첨부에서 추출한 텍스트(",[15,2467,1633],{},"에 부착 전 원본)",[110,2470,2471],{},"청킹·재처리 용",[95,2473,2474,2479,2482],{},[110,2475,2476],{},[15,2477,2478],{},"extracted_text_internal",[110,2480,2481],{},"비공개 포함 첨부 추출 텍스트",[110,2483,2455],{},[95,2485,2486,2490,2493],{},[110,2487,2488],{},[15,2489,1534],{},[110,2491,2492],{},"게시글 + 가시 댓글 수",[110,2494,2495],{},"가중치·신선도 보조",[95,2497,2498,2503,2508],{},[110,2499,2500],{},[15,2501,2502],{},"asker",[110,2504,2505],{},[15,2506,2507],{},"tb_post.writer",[110,2509,1529],{},[95,2511,2512,2517,2520],{},[110,2513,2514],{},[15,2515,2516],{},"answerers",[110,2518,2519],{},"가시 댓글 작성자 배열",[110,2521,1529],{},[95,2523,2524,2531,2540],{},[110,2525,2526,1654,2529],{},[15,2527,2528],{},"reg_date_at",[15,2530,1537],{},[110,2532,2533,2536,2537,2539],{},[15,2534,2535],{},"tb_post.reg_date"," \u002F 마지막 댓글 ",[15,2538,762],{}," 변환",[110,2541,2542],{},"신선도",[95,2544,2545,2550,2555],{},[110,2546,2547],{},[15,2548,2549],{},"comment_count",[110,2551,2552],{},[15,2553,2554],{},"tb_post.comm_cnt",[110,2556,1529],{},[23,2558,2559,2562,2563,2565,2566,2569],{},[49,2560,2561],{},"청킹 전략",": 스레드를 1 도큐먼트로 압축. 결합 본문(스레드 + 추출 첨부 텍스트)이 2000자 이상이면 의미 단위 분할 (동일 ",[15,2564,1523],{}," 유지). 짧은 단일 Q&A는 분할 없이 그대로. 첨부 추출 텍스트는 본문 결합 시 ",[15,2567,2568],{},"[첨부:{filename}]"," 헤더 뒤에 부착해 LLM이 출처를 인지 가능하게.",[23,2571,2572,2575,2576,59,2578,2580,2581,59,2583,2585],{},[49,2573,2574],{},"Phase별 쿼리",": Phase 1은 ",[15,2577,1643],{},[15,2579,1657],{},", Phase 2는 ",[15,2582,1633],{},[15,2584,1653],{},"을 검색 대상으로. 색인은 같은 도큐먼트라 운영 동기화 비용 1배수.",[34,2587],{},[37,2589,2591],{"id":2590},"_8-표준-답변-후보-식별-전략","8. 표준 답변 후보 식별 전략",[42,2593,2594,2601,2607],{},[45,2595,2596,2597,2600],{},"동일\u002F유사 질문에 같은 답변이 반복 등장 → ",[49,2598,2599],{},"표준 답변 후보","로 자동 추출.",[45,2602,2603,2604,2606],{},"댓글 작성자가 맑은소프트 직원(",[15,2605,305],{},"에서 staff 플래그\u002F도메인으로 식별) → 신뢰도 가중치 상향.",[45,2608,2609,2610,2614,2615,2618],{},"후보 답변은 ",[2099,2611,2613],{"href":2612},"ROADMAP","ROADMAP.md"," ",[49,2616,2617],{},"1.9 피드백 루프","의 자동 추천 흐름과 연결.",[34,2620],{},[37,2622,2624],{"id":2623},"_9-다음-단계-실행-항목","9. 다음 단계 (실행 항목)",[2626,2627,2628,2638,2644,2654,2660,2666,2672,2678,2687,2693],"ol",{},[45,2629,2630,2633,2634,2637],{},[49,2631,2632],{},"표본 검수",": site 1의 Q&A 후보 30~50건 추출 → 실제 CS 답변\u002F내부 잡담 비율 확인 → 추가 필터 도출. ",[49,2635,2636],{},"스레드형\u002F단일형 분포와 비공개 댓글 영향","도 함께 평가.",[45,2639,2640,2643],{},[49,2641,2642],{},"HTML 정제 PoC",": 5건 정도를 직접 정제해서 토큰 수·내용 유효성 측정.",[45,2645,2646,2649,2650,2653],{},[49,2647,2648],{},"노이즈 댓글 필터 룰"," 작성: 5자 미만, 동일 문자 반복(",[15,2651,2652],{},"ddddd"," 등), 의미 없는 단일 단어 탐지.",[45,2655,2656,2659],{},[49,2657,2658],{},"PII 검출 룰"," 작성: 이메일\u002F전화\u002F주민번호 정규식 + 마스킹 규칙.",[45,2661,2662,2665],{},[49,2663,2664],{},"가시성 정책 합의",": Phase 1에서 비공개 댓글 활용 범위·노출 경로(상담사 화면에서만) 명문화. 첨부파일도 동일 정책 상속.",[45,2667,2668,2671],{},[49,2669,2670],{},"첨부 추출기 선정 PoC",": PDF\u002FDOCX\u002FHWP\u002FXLSX 추출 라이브러리 후보 평가 (한국어·표·이미지 포함 PDF에서의 정확도, Worker 적합성).",[45,2673,2674,2677],{},[49,2675,2676],{},"R2 마이그레이션 계획",": 78,784개 첨부의 R2 이관 전략 (전체 백필? 인덱싱 대상만? URL 매핑 테이블 유지?).",[45,2679,2680,2683,2684,2686],{},[49,2681,2682],{},"인제스트 파이프라인 설계",": 일회성 백필 + 증분 동기화 (",[15,2685,762],{}," 기준) 정책. 스레드는 마지막 댓글 갱신 시 재인덱싱. 첨부 추출 실패는 메타만 보존.",[45,2688,2689,2692],{},[49,2690,2691],{},"사이트 채택 범위"," 합의: site 1만? 1+2? 다른 site는 외부 고객사 데이터라 사용 가능 여부 별도 확인 필요.",[45,2694,2695,2698,2699,526,2702,2705],{},[49,2696,2697],{},"법적\u002F내부 검토",": 고객 문의 본문에 포함된 회사명·개인정보 사용 가능 범위, ",[49,2700,2701],{},"비공개 댓글의 학습 자산화 가능 여부",[49,2703,2704],{},"첨부 파일(특히 고객사 자료) 활용 가능 범위"," 확인.",[34,2707],{},[37,2709,2711],{"id":2710},"_10-미사용-결정","10. 미사용 결정",[23,2713,2714,2715,2718],{},"다음은 본 DB에서 ",[49,2716,2717],{},"사용하지 않음","으로 결론:",[42,2720,2721,2726,2731,2737,2743],{},[45,2722,2723,2725],{},[15,2724,358],{}," — 짧은 사내 메신저, CS 자산 아님",[45,2727,2728,2730],{},[15,2729,434],{}," — 양식\u002F템플릿이라 답변 데이터 부재",[45,2732,2733,2736],{},[49,2734,2735],{},"이미지만 있는 게시글"," (Stage A 한정) — §6 이미지 처리 전략 참조. Stage B\u002FC 도입 시 재평가",[45,2738,2739,2742],{},[49,2740,2741],{},"노이즈 댓글"," (5자 미만, 동일 문자 반복 등) — §6 스레드 처리 전략의 노이즈 필터로 제외",[45,2744,2745,2748],{},[49,2746,2747],{},"압축파일(zip)·동영상·디자인\u002F실행 파일"," (Phase 1 MVP 한정) — §6 첨부파일 처리 전략 참조. zip은 검토 후 결정, 동영상은 Phase 2 Queue 도입 시 트랜스크립트 처리",[20,2750,2751],{},[23,2752,2753,2754,2757],{},"비공개 댓글·첨부는 ",[49,2755,2756],{},"사용하지 않음이 아님",". Phase 1 한정으로 활용. §6 비공개 댓글 \u002F 첨부파일 처리 전략 참조.",[2759,2760,2761],"style",{},"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":925,"searchDepth":944,"depth":944,"links":2763},[2764,2765,2766,2767,2775,2779,2790,2791,2792,2793],{"id":39,"depth":938,"text":40},{"id":86,"depth":938,"text":87},{"id":144,"depth":938,"text":145},{"id":564,"depth":938,"text":565,"children":2768},[2769,2771,2773],{"id":569,"depth":944,"text":2770},"tb_post (질문\u002F요청 본문)",{"id":783,"depth":944,"text":2772},"tb_post_comment (답변 본문)",{"id":895,"depth":944,"text":2774},"tb_site, tb_project, tb_user, tb_post_label",{"id":913,"depth":938,"text":914,"children":2776},[2777,2778],{"id":917,"depth":944,"text":918},{"id":980,"depth":944,"text":980},{"id":1047,"depth":938,"text":1048,"children":2780},[2781,2782,2783,2784],{"id":1236,"depth":944,"text":1093},{"id":1351,"depth":944,"text":1207},{"id":1547,"depth":944,"text":1221},{"id":1727,"depth":944,"text":1232,"children":2785},[2786,2787,2788,2789],{"id":1902,"depth":950,"text":1903},{"id":2026,"depth":950,"text":1319},{"id":2106,"depth":950,"text":2107},{"id":1347,"depth":950,"text":1347},{"id":2207,"depth":938,"text":2208},{"id":2590,"depth":938,"text":2591},{"id":2623,"depth":938,"text":2624},{"id":2710,"depth":938,"text":2711},"md",{},true,"\u002Flegacy-db-inventory",{"title":5,"description":925},"LEGACY-DB-INVENTORY","MVuHo3jfJLkG6636XqgrMRYQqAP8eWNZzepIP9DcbCY",1780986551103]