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