[{"data":1,"prerenderedAt":685},["ShallowReactive",2],{"doc:\u002Fhistory\u002Fhistory.20260617":3},{"id":4,"title":5,"body":6,"description":648,"extension":678,"meta":679,"navigation":680,"path":681,"seo":682,"stem":683,"__hash__":684},"docs\u002Fhistory\u002Fhistory.20260617.md","작업 이력 — 2026-06-17",{"type":7,"value":8,"toc":647},"minimark",[9,13,18,28,41,118,122,183,187,257,260,268,275,370,381,404,508,512,522,529,541,548,576,583,589,599,603,608,617,624,633,638],[10,11,5],"h1",{"id":12},"작업-이력-2026-06-17",[14,15,17],"h2",{"id":16},"기획-planner","기획 (planner)",[19,20,22,23,27],"h3",{"id":21},"표준답변-수집큐레이션-강화-정본화-docsstandard-answer-curationmd-신규","표준답변 수집·큐레이션 강화 정본화 — ",[24,25,26],"code",{},"docs\u002FSTANDARD-ANSWER-CURATION.md"," 신규",[29,30,31,32,35,36,40],"p",{},"표준답변(",[24,33,34],{},"hp_standard_answer",")의 ",[37,38,39],"strong",{},"분류·승인·중복·선순환·KPI"," 정책을 단일 정본으로 정의. ADMIN-PLAN §4-3·HP-SCHEMA §3-3·REQUIREMENTS FR-1\u002F5\u002F7과 정합, 충돌 항목은 §8에 명시.",[42,43,44,70,96,106,112],"ul",{},[45,46,47,50,51,54,55,58,59,54,62,65,66,69],"li",{},[37,48,49],{},"분류 체계"," — scope(common\u002Fservice) + ",[24,52,53],{},"topic_id","\u002F",[24,56,57],{},"service_id","(FK, slug 아님) + tags. 002 마이그레이션이 ",[24,60,61],{},"hp_topic",[24,63,64],{},"hp_service","를 id PK로 실체화한 것에 맞춰 ",[37,67,68],{},"id FK를 정본","으로 결정(slug는 운영자 정정 가능해 불안정).",[45,71,72,75,76,79,80,83,84,87,88,91,92,95],{},[37,73,74],{},"승인 워크플로"," — ",[24,77,78],{},"status","(1\u002F-1 soft-delete)와 ",[24,81,82],{},"approval_status","(draft\u002Freviewing\u002Fapproved\u002Frejected\u002Farchived) ",[37,85,86],{},"분리",". 모든 수집 진입점은 ",[24,89,90],{},"draft"," 진입, 챗봇은 ",[24,93,94],{},"approved","만 사용(FR-1 AC-1.2). agent=제안·분류·검토착수, 승인=developer\u002Fadmin.",[45,97,98,101,102,105],{},[37,99,100],{},"중복 감지·병합"," — 저장 전 질문 유사도(P1 LIKE 자카드≥0.6 → P1후반 cosine≥0.85\u002F0.92). 병합 시 채택수 합산·출처 보존·",[24,103,104],{},"merged_into_id"," 기록.",[45,107,108,111],{},[37,109,110],{},"수집 선순환"," — PMS QaEvalCard·suggestions·미커버 전환·자료추출 4진입점 → draft → approved → 채택(usage_count) 환류. 커버리지 갭(미커버↑+표준답변↓)을 보강 방향타로.",[45,113,114,117],{},[37,115,116],{},"커버리지 KPI"," — 표준답변 수·승인율·승인대기·채택률·미커버 수·커버리지 갭·중복 의심·신선도.",[19,119,121],{"id":120},"발견한-정본-불일치-현행화-대기","발견한 정본 불일치 (현행화 대기)",[42,123,124,145,170,180],{},[45,125,126,129,130,133,134,137,138,133,141,144],{},[37,127,128],{},"8-A 카탈로그 시드 불일치",": 002 실데이터(",[24,131,132],{},"login\u002Fenrollment\u002Fpayment\u002Frefund\u002F...","; ",[24,135,136],{},"step\u002Flms-general\u002Flms-mixed\u002Flms-private\u002Flms-public-security\u002Flms-global",") ↔ ADMIN-PLAN §4-3-1 문서(",[24,139,140],{},"domain\u002Fseo\u002F...",[24,142,143],{},"lms-refund\u002F-public\u002F-security\u002F-hybrid","). T1 확정 후 ADMIN-PLAN 현행화 필요. 본 문서 §2-2가 잠정 정본.",[45,146,147,153,154,157,158,54,161,164,165,54,167,169],{},[37,148,149,150,152],{},"8-B ",[24,151,34],{}," 컬럼 미실체화",": ADMIN-PLAN §4-3-4가 계획한 scope\u002Ftopic\u002Fservice_tag\u002Fapproval_status\u002Ftags가 002에 미반영, 현 ",[24,155,156],{},"POST \u002Fstandard-answers"," 코드도 미수용. ADMIN-PLAN의 ",[24,159,160],{},"topic VARCHAR",[24,162,163],{},"service_tag","를 ",[24,166,53],{},[24,168,57],{}," INT로 정정 권고.",[45,171,172,175,176,179],{},[37,173,174],{},"8-C 승인 워크플로 미구현",": ",[24,177,178],{},"PATCH \u002F:id\u002Fapprove"," 미존재, status 1\u002F-1뿐.",[45,181,182],{},"ADMIN-PLAN §4-3 머리에 본 정본으로의 상호참조·현행화 대기 주석 추가.",[19,184,186],{"id":185},"후속-핸드오프","후속 핸드오프",[42,188,189,202,233,239,245,251],{},[45,190,191,194,195,197,198,201],{},[37,192,193],{},"dba",": 003 마이그레이션 — ",[24,196,34],{},"에 scope\u002Ftopic_id\u002Fservice_id\u002Ftags\u002Fapproval_status\u002Fapproved_by·at\u002Frejection_reason\u002Fmerged_into_id\u002Fsource_uncovered_id\u002Fembedding 보강 + 인덱스. ⚠ 운영 DB MySQL 5.6.51 → ",[24,199,200],{},"tags","는 LONGTEXT, ENUM은 가능. 버전 타깃 확정.",[45,203,204,175,207,209,210,213,214,217,218,221,222,225,226,229,230,232],{},[37,205,206],{},"api",[24,208,156],{}," 분류 수용·draft 강제·",[24,211,212],{},"similar[]"," 동봉, ",[24,215,216],{},"GET"," 분류 필터, ",[24,219,220],{},"PATCH \u002F:id\u002Ftransition","(상태 전이), ",[24,223,224],{},"\u002Fcheck-duplicate",", ",[24,227,228],{},"\u002F:id\u002Fmerge",", 챗봇 매칭 ",[24,231,94],{}," 필터. suggestions 분류 추론(T6).",[45,234,235,238],{},[37,236,237],{},"admin",": 목록 분류·승인상태 필터 실데이터 연동, 상세 분류 셀렉터·승인\u002F반려·중복 경고 패널, 승인대기 배지, KPI 카드.",[45,240,241,244],{},[37,242,243],{},"pms",": QaEvalCard 저장 시 선택적 분류 입력 + \"승인 후 사용\" 안내.",[45,246,247,250],{},[37,248,249],{},"privacy-officer",": 비공개 출처 파생 표준답변의 P2 노출 가드(출처 마스킹, FR-10, T8).",[45,252,253,256],{},[37,254,255],{},"미정 TODO 8건(T1~T8)",": 카탈로그 정본·중복 임계 튜닝·승인본 수정 규칙·다중 출처·채택 구분 집계·suggestions 추론·법령 토픽·비공개 가드.",[14,258,259],{"id":259},"배포",[19,261,263,264,267],{"id":262},"_1641-malgn-helper-admin-cloudflare-pages","16:41 — ",[24,265,266],{},"malgn-helper-admin"," → Cloudflare Pages",[29,269,270,271,274],{},"목록 페이지 페이지네이션 통일 + standard-answers 삭제 패널 버그픽스. ",[37,272,273],{},"admin 단일 레포"," 배포(api\u002Fpms\u002Fmng 무관, api는 prod가 이미 limit\u002Foffset 지원).",[42,276,277,320,336],{},[45,278,279,175,282,285,286,289,290,293,294,297,298,301,302,301,305,308,309,312,313,316,317,319],{},[37,280,281],{},"변경(7파일)",[24,283,284],{},"components\u002Fadmin\u002FPagination.vue"," 신규(",[24,287,288],{},"AdminPagination",") · ",[24,291,292],{},"components\u002Fadmin\u002FDataTable.vue"," ",[24,295,296],{},"#footer"," 슬롯 추가(비파괴) · ",[24,299,300],{},"pages\u002Fqa-evals.vue","·",[24,303,304],{},"standard-answers.vue",[24,306,307],{},"images.vue"," 서버 limit\u002Foffset 페이지네이션 · ",[24,310,311],{},"pages\u002Faccounts.vue"," 자체 페이저 → AdminPagination 통일 · ",[24,314,315],{},"pages\u002Faudit-logs.vue"," 클라이언트 임시 페이징 · ",[24,318,304],{}," confirmDelete 비교를 null 대입 앞으로 이동(삭제 패널 버그픽스)",[45,321,322,175,325,328,329,332,333],{},[37,323,324],{},"커밋\u002F배포",[24,326,327],{},"5d0e5dd"," → origin\u002Fmain. Cloudflare Pages alias ",[24,330,331],{},"https:\u002F\u002Fcc55dd94.malgn-helper-admin.pages.dev",", buildId ",[24,334,335],{},"e513ed5a-85f1-4dc6-a1d0-752d78fd6899",[45,337,338,341,342,301,345,301,348,301,351,301,354,357,358,361,362,365,366,369],{},[37,339,340],{},"검증",": prod root 200 · SSR 셸 ",[24,343,344],{},"\u002Fqa-evals",[24,346,347],{},"\u002Fstandard-answers",[24,349,350],{},"\u002Fimages",[24,352,353],{},"\u002Faccounts",[24,355,356],{},"\u002Faudit-logs"," 전부 200 · 빌드 산출 ",[24,359,360],{},"Pagination-BoUy2Q0a.mjs"," + 5개 라우트 청크 포함 · 클라이언트 Pagination 청크(",[24,363,364],{},"\u002F_nuxt\u002FG2xIz5Qz.js",") 200 · prod ",[24,367,368],{},"latest.json"," buildId == 로컬 빌드(라이브 일치). 런타임 페이저 동작은 인증 필요 → SSR 셸 200 + 빌드까지 검증 범위.",[19,371,373,374,377,378,380],{"id":372},"봇-서비스별-구분-db-malgn-helper-apiworkers-malgn-helper-adminpages","봇 서비스별 구분 — DB + ",[24,375,376],{},"malgn-helper-api","(Workers) + ",[24,379,266],{},"(Pages)",[29,382,383,384,389,390,392,393,395,396,399,400,403],{},"봇을 솔루션(서비스)별로 구분 관리. 설계 정본 ",[385,386,388],"a",{"href":387},"..\u002FBOTS-PLAN","BOTS-PLAN.md",". 봇 1개 = 서비스 1개(",[24,391,57],{}," nullable=공통), 서비스 목록은 ",[24,394,64],{}," 카탈로그 정본에서 동적 로드(하드코딩 ",[24,397,398],{},"SERVICE_OPTS"," 제거 → 슬러그 불일치 8-A 해소). 자료(material) 연결은 연기(",[24,401,402],{},"\u002Fmaterials"," 백엔드 부재).",[42,405,406,429,449,485,491],{},[45,407,408,175,411,75,414,417,418,420,421,424,425,428],{},[37,409,410],{},"DB(선적용)",[24,412,413],{},"malgn-helper-api\u002Fmigrations\u002F004_bots.sql",[24,415,416],{},"hp_bot","(",[24,419,78],{}," TINYINT 소프트삭제 + ",[24,422,423],{},"bot_status"," ENUM 라이프사이클 분리, JSON=LONGTEXT, FK 미설정). 운영 PMS(",[24,426,427],{},"221.143.42.213",") 적용·검증: 시드 3건(공통봇 service_id NULL · LMS 일반 lms-general · 공공 보안 lms-public-security\u002Fdraft).",[45,430,431,293,433,436,437,440,441,444,445,448],{},[37,432,206],{},[24,434,435],{},"460016d"," (Version ",[24,438,439],{},"7dedeed5-5e63-4e55-b11c-ef4db4e42bff","): ",[24,442,443],{},"\u002Fadmin\u002Fbots"," CRUD(GET developer \u002F POST·PATCH·DELETE admin, 소프트삭제 status=-1, BotDto camelCase + serviceName 조인). 검증: 무인증 ",[24,446,447],{},"GET \u002Fadmin\u002Fbots"," → 401, 루트 200.",[45,450,451,293,453,456,457,440,460,463,464,467,468,471,472,475,476,480,481,484],{},[37,452,237],{},[24,454,455],{},"705665e"," (alias ",[24,458,459],{},"https:\u002F\u002F06aa3612.malgn-helper-admin.pages.dev",[24,461,462],{},"use-bots.ts"," localStorage→API(serviceId 단일+공통), ",[24,465,466],{},"bots\u002Findex.vue"," 서비스별 그룹핑+동적 필터, ",[24,469,470],{},"bots\u002F[id].vue"," 서비스 구분 드롭다운, ",[24,473,474],{},"use-admin-menu.ts"," 봇 메뉴 roles=",[477,478,479],"span",{},"admin,developer",". 검증: prod ",[24,482,483],{},"\u002Fbots"," 200 + 봇 라우트 청크.",[45,486,487,490],{},[37,488,489],{},"QA",": api↔admin 계약 23필드·파라미터 전수 일치, service_id 공통·소프트삭제·JSON·권한 정합, 빌드 3종 통과(블로커 0). 런타임 CRUD는 인증 세션 필요로 미검증.",[45,492,493,175,496,499,500,503,504,507],{},[37,494,495],{},"후속",[24,497,498],{},"hp_bot_source"," 자료 연결(materials API 이후), 봇 챗 파이프라인 런타임 사용(Phase 2), 봇별 ",[24,501,502],{},"escalation_threshold"," vs 전역 ",[24,505,506],{},"confidence_threshold"," 우선순위 정책.",[19,509,511],{"id":510},"배포-로그-시각별","배포 로그 (시각별)",[513,514,515],"blockquote",{},[29,516,517,518,521],{},"배포 시각·커밋 로그(워크스페이스 ",[24,519,520],{},"deploy.sh"," 기록, helper repo에서 이관). 위 서술과 동일 배포의 시각 상세 + mng 이슈보드 이식 배포 포함.",[523,524,526,527,267],"h4",{"id":525},"_1207-malgn-helper-admin-cloudflare-pages","12:07 — ",[24,528,266],{},[42,530,531,538],{},[45,532,533,534,537],{},"커밋: ",[24,535,536],{},"9488a74"," (신규 커밋: yes)",[45,539,540],{},"메시지: feat(standard-answers): 003 큐레이션 API 연동 — 분류 필터\u002F배지·승인 전이·중복 경고·승인대기 사이드바 배지",[523,542,544,545,267],{"id":543},"_1249-malgn-helper-mng-cloudflare-pages","12:49 — ",[24,546,547],{},"malgn-helper-mng",[42,549,550,555,558,561,564,567,570,573],{},[45,551,533,552,537],{},[24,553,554],{},"21509d4",[45,556,557],{},"메시지: feat(mng): noti-mng 기능 이식 — 이슈 게시판·로그인\u002F회원가입·참여자·주간작업·홈 최근이슈",[45,559,560],{},"인증: HMAC 쿠키 세션(helper_mng_session) + PBKDF2, 첫 가입자 자동 admin",[45,562,563],{},"이슈 게시판: 정책\u002F이슈\u002F공지\u002F논의 + 마크다운 + 이미지 업로드(R2) + 답글",[45,565,566],{},"참여자 관리(가입 승인·등급), 계정(프로필\u002F비번)",[45,568,569],{},"주간 작업(\u002Fweekly, helper WBS 티어 매핑), no-cache 미들웨어",[45,571,572],{},"게이트: 새 기능만 로그인(\u002Fissues,\u002Fmembers,\u002Faccount,\u002Fuploads). 문서·이력·대시보드는 공개·프리렌더 유지",[45,574,575],{},"맑은오피스 SSO 제외. DB: member\u002Fissue\u002Fissue_comment 추가, R2 FILES 바인딩",[29,577,578,579],{},"Co-Authored-By: Claude Opus 4.8 (1M context) ",[385,580,582],{"href":581},"mailto:noreply@anthropic.com","noreply@anthropic.com",[523,584,586,587,267],{"id":585},"_1255-malgn-helper-mng-cloudflare-pages","12:55 — ",[24,588,547],{},[42,590,591,596],{},[45,592,533,593,537],{},[24,594,595],{},"8ee7c2c",[45,597,598],{},"메시지: chore(mng): GNB에서 현황판 메뉴·GitHub 링크 제거",[29,600,578,601],{},[385,602,582],{"href":581},[523,604,263,606,267],{"id":605},"_1641-malgn-helper-admin-cloudflare-pages-1",[24,607,266],{},[42,609,610,614],{},[45,611,533,612,537],{},[24,613,327],{},[45,615,616],{},"메시지: feat(admin): 목록 페이지 페이지네이션(AdminPagination) + standard-answers 삭제 패널 버그픽스",[523,618,620,621,623],{"id":619},"_1759-malgn-helper-api-cloudflare-workers","17:59 — ",[24,622,376],{}," → Cloudflare Workers",[42,625,626,630],{},[45,627,533,628,537],{},[24,629,435],{},[45,631,632],{},"메시지: feat(bots): hp_bot 스키마(004) + \u002Fadmin\u002Fbots CRUD (서비스별 구분·공통봇)",[523,634,620,636,267],{"id":635},"_1759-malgn-helper-admin-cloudflare-pages",[24,637,266],{},[42,639,640,644],{},[45,641,533,642,537],{},[24,643,455],{},[45,645,646],{},"메시지: feat(bots): 서비스별 봇 화면 API 연동(그룹핑·서비스 구분·메뉴 게이트)",{"title":648,"searchDepth":649,"depth":649,"links":650},"",3,[651,658],{"id":16,"depth":652,"text":17,"children":653},2,[654,656,657],{"id":21,"depth":649,"text":655},"표준답변 수집·큐레이션 강화 정본화 — docs\u002FSTANDARD-ANSWER-CURATION.md 신규",{"id":120,"depth":649,"text":121},{"id":185,"depth":649,"text":186},{"id":259,"depth":652,"text":259,"children":659},[660,662,664],{"id":262,"depth":649,"text":661},"16:41 — malgn-helper-admin → Cloudflare Pages",{"id":372,"depth":649,"text":663},"봇 서비스별 구분 — DB + malgn-helper-api(Workers) + malgn-helper-admin(Pages)",{"id":510,"depth":649,"text":511,"children":665},[666,669,671,673,674,676],{"id":525,"depth":667,"text":668},4,"12:07 — malgn-helper-admin → Cloudflare Pages",{"id":543,"depth":667,"text":670},"12:49 — malgn-helper-mng → Cloudflare Pages",{"id":585,"depth":667,"text":672},"12:55 — malgn-helper-mng → Cloudflare Pages",{"id":605,"depth":667,"text":661},{"id":619,"depth":667,"text":675},"17:59 — malgn-helper-api → Cloudflare Workers",{"id":635,"depth":667,"text":677},"17:59 — malgn-helper-admin → Cloudflare Pages","md",{},true,"\u002Fhistory\u002Fhistory.20260617",{"title":5,"description":648},"history\u002Fhistory.20260617","5mEV6Y6uq90fKTVA89Q_y1Pcd7f5TTixpKIVIV0zO3M",1783932938622]