작업 이력

작업 이력 — 2026-06-17

기획 (planner)

표준답변 수집·큐레이션 강화 정본화 — docs/STANDARD-ANSWER-CURATION.md 신규

표준답변(hp_standard_answer)의 분류·승인·중복·선순환·KPI 정책을 단일 정본으로 정의. ADMIN-PLAN §4-3·HP-SCHEMA §3-3·REQUIREMENTS FR-1/5/7과 정합, 충돌 항목은 §8에 명시.

  • 분류 체계 — scope(common/service) + topic_id/service_id(FK, slug 아님) + tags. 002 마이그레이션이 hp_topic/hp_service를 id PK로 실체화한 것에 맞춰 id FK를 정본으로 결정(slug는 운영자 정정 가능해 불안정).
  • 승인 워크플로status(1/-1 soft-delete)와 approval_status(draft/reviewing/approved/rejected/archived) 분리. 모든 수집 진입점은 draft 진입, 챗봇은 approved만 사용(FR-1 AC-1.2). agent=제안·분류·검토착수, 승인=developer/admin.
  • 중복 감지·병합 — 저장 전 질문 유사도(P1 LIKE 자카드≥0.6 → P1후반 cosine≥0.85/0.92). 병합 시 채택수 합산·출처 보존·merged_into_id 기록.
  • 수집 선순환 — PMS QaEvalCard·suggestions·미커버 전환·자료추출 4진입점 → draft → approved → 채택(usage_count) 환류. 커버리지 갭(미커버↑+표준답변↓)을 보강 방향타로.
  • 커버리지 KPI — 표준답변 수·승인율·승인대기·채택률·미커버 수·커버리지 갭·중복 의심·신선도.

발견한 정본 불일치 (현행화 대기)

  • 8-A 카탈로그 시드 불일치: 002 실데이터(login/enrollment/payment/refund/...; step/lms-general/lms-mixed/lms-private/lms-public-security/lms-global) ↔ ADMIN-PLAN §4-3-1 문서(domain/seo/...; lms-refund/-public/-security/-hybrid). T1 확정 후 ADMIN-PLAN 현행화 필요. 본 문서 §2-2가 잠정 정본.
  • 8-B hp_standard_answer 컬럼 미실체화: ADMIN-PLAN §4-3-4가 계획한 scope/topic/service_tag/approval_status/tags가 002에 미반영, 현 POST /standard-answers 코드도 미수용. ADMIN-PLAN의 topic VARCHAR/service_tagtopic_id/service_id INT로 정정 권고.
  • 8-C 승인 워크플로 미구현: PATCH /:id/approve 미존재, status 1/-1뿐.
  • ADMIN-PLAN §4-3 머리에 본 정본으로의 상호참조·현행화 대기 주석 추가.

후속 핸드오프

  • dba: 003 마이그레이션 — hp_standard_answer에 scope/topic_id/service_id/tags/approval_status/approved_by·at/rejection_reason/merged_into_id/source_uncovered_id/embedding 보강 + 인덱스. ⚠ 운영 DB MySQL 5.6.51 → tags는 LONGTEXT, ENUM은 가능. 버전 타깃 확정.
  • api: POST /standard-answers 분류 수용·draft 강제·similar[] 동봉, GET 분류 필터, PATCH /:id/transition(상태 전이), /check-duplicate, /:id/merge, 챗봇 매칭 approved 필터. suggestions 분류 추론(T6).
  • admin: 목록 분류·승인상태 필터 실데이터 연동, 상세 분류 셀렉터·승인/반려·중복 경고 패널, 승인대기 배지, KPI 카드.
  • pms: QaEvalCard 저장 시 선택적 분류 입력 + "승인 후 사용" 안내.
  • privacy-officer: 비공개 출처 파생 표준답변의 P2 노출 가드(출처 마스킹, FR-10, T8).
  • 미정 TODO 8건(T1~T8): 카탈로그 정본·중복 임계 튜닝·승인본 수정 규칙·다중 출처·채택 구분 집계·suggestions 추론·법령 토픽·비공개 가드.

배포

16:41 — malgn-helper-admin → Cloudflare Pages

목록 페이지 페이지네이션 통일 + standard-answers 삭제 패널 버그픽스. admin 단일 레포 배포(api/pms/mng 무관, api는 prod가 이미 limit/offset 지원).

  • 변경(7파일): components/admin/Pagination.vue 신규(AdminPagination) · components/admin/DataTable.vue #footer 슬롯 추가(비파괴) · pages/qa-evals.vue·standard-answers.vue·images.vue 서버 limit/offset 페이지네이션 · pages/accounts.vue 자체 페이저 → AdminPagination 통일 · pages/audit-logs.vue 클라이언트 임시 페이징 · standard-answers.vue confirmDelete 비교를 null 대입 앞으로 이동(삭제 패널 버그픽스)
  • 커밋/배포: 5d0e5dd → origin/main. Cloudflare Pages alias https://cc55dd94.malgn-helper-admin.pages.dev, buildId e513ed5a-85f1-4dc6-a1d0-752d78fd6899
  • 검증: prod root 200 · SSR 셸 /qa-evals·/standard-answers·/images·/accounts·/audit-logs 전부 200 · 빌드 산출 Pagination-BoUy2Q0a.mjs + 5개 라우트 청크 포함 · 클라이언트 Pagination 청크(/_nuxt/G2xIz5Qz.js) 200 · prod latest.json buildId == 로컬 빌드(라이브 일치). 런타임 페이저 동작은 인증 필요 → SSR 셸 200 + 빌드까지 검증 범위.

봇 서비스별 구분 — DB + malgn-helper-api(Workers) + malgn-helper-admin(Pages)

봇을 솔루션(서비스)별로 구분 관리. 설계 정본 BOTS-PLAN.md. 봇 1개 = 서비스 1개(service_id nullable=공통), 서비스 목록은 hp_service 카탈로그 정본에서 동적 로드(하드코딩 SERVICE_OPTS 제거 → 슬러그 불일치 8-A 해소). 자료(material) 연결은 연기(/materials 백엔드 부재).

  • DB(선적용): malgn-helper-api/migrations/004_bots.sqlhp_bot(status TINYINT 소프트삭제 + bot_status ENUM 라이프사이클 분리, JSON=LONGTEXT, FK 미설정). 운영 PMS(221.143.42.213) 적용·검증: 시드 3건(공통봇 service_id NULL · LMS 일반 lms-general · 공공 보안 lms-public-security/draft).
  • api 460016d (Version 7dedeed5-5e63-4e55-b11c-ef4db4e42bff): /admin/bots CRUD(GET developer / POST·PATCH·DELETE admin, 소프트삭제 status=-1, BotDto camelCase + serviceName 조인). 검증: 무인증 GET /admin/bots → 401, 루트 200.
  • admin 705665e (alias https://06aa3612.malgn-helper-admin.pages.dev): use-bots.ts localStorage→API(serviceId 단일+공통), bots/index.vue 서비스별 그룹핑+동적 필터, bots/[id].vue 서비스 구분 드롭다운, use-admin-menu.ts 봇 메뉴 roles=admin,developer. 검증: prod /bots 200 + 봇 라우트 청크.
  • QA: api↔admin 계약 23필드·파라미터 전수 일치, service_id 공통·소프트삭제·JSON·권한 정합, 빌드 3종 통과(블로커 0). 런타임 CRUD는 인증 세션 필요로 미검증.
  • 후속: hp_bot_source 자료 연결(materials API 이후), 봇 챗 파이프라인 런타임 사용(Phase 2), 봇별 escalation_threshold vs 전역 confidence_threshold 우선순위 정책.

배포 로그 (시각별)

배포 시각·커밋 로그(워크스페이스 deploy.sh 기록, helper repo에서 이관). 위 서술과 동일 배포의 시각 상세 + mng 이슈보드 이식 배포 포함.

12:07 — malgn-helper-admin → Cloudflare Pages

  • 커밋: 9488a74 (신규 커밋: yes)
  • 메시지: feat(standard-answers): 003 큐레이션 API 연동 — 분류 필터/배지·승인 전이·중복 경고·승인대기 사이드바 배지

12:49 — malgn-helper-mng → Cloudflare Pages

  • 커밋: 21509d4 (신규 커밋: yes)
  • 메시지: feat(mng): noti-mng 기능 이식 — 이슈 게시판·로그인/회원가입·참여자·주간작업·홈 최근이슈
  • 인증: HMAC 쿠키 세션(helper_mng_session) + PBKDF2, 첫 가입자 자동 admin
  • 이슈 게시판: 정책/이슈/공지/논의 + 마크다운 + 이미지 업로드(R2) + 답글
  • 참여자 관리(가입 승인·등급), 계정(프로필/비번)
  • 주간 작업(/weekly, helper WBS 티어 매핑), no-cache 미들웨어
  • 게이트: 새 기능만 로그인(/issues,/members,/account,/uploads). 문서·이력·대시보드는 공개·프리렌더 유지
  • 맑은오피스 SSO 제외. DB: member/issue/issue_comment 추가, R2 FILES 바인딩

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

12:55 — malgn-helper-mng → Cloudflare Pages

  • 커밋: 8ee7c2c (신규 커밋: yes)
  • 메시지: chore(mng): GNB에서 현황판 메뉴·GitHub 링크 제거

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

16:41 — malgn-helper-admin → Cloudflare Pages

  • 커밋: 5d0e5dd (신규 커밋: yes)
  • 메시지: feat(admin): 목록 페이지 페이지네이션(AdminPagination) + standard-answers 삭제 패널 버그픽스

17:59 — malgn-helper-api → Cloudflare Workers

  • 커밋: 460016d (신규 커밋: yes)
  • 메시지: feat(bots): hp_bot 스키마(004) + /admin/bots CRUD (서비스별 구분·공통봇)

17:59 — malgn-helper-admin → Cloudflare Pages

  • 커밋: 705665e (신규 커밋: yes)
  • 메시지: feat(bots): 서비스별 봇 화면 API 연동(그룹핑·서비스 구분·메뉴 게이트)
Malgn Helper(고객상담 AI 챗봇) 프로젝트 문서·작업 이력