문서

PMS 문의·답변 → 표준답변 수집 절차 — 도메인 기획·정책 정본

최초 작성 — 2026-06-18 · 기획자(planner) · PMS(tb_post/tb_post_comment)에 누적된 문의·답변을 표준답변/표준 안내답변으로 수집·분류·등록하는 단계별 절차의 정본

상위/연계 정본: STANDARD-ANSWER-CURATION.md(큐레이션·승인 워크플로) · ADMIN-PLAN.md §4-3 · HP-SCHEMA.md · PROJECT-INQUIRY-ANALYSIS.md · REQUIREMENTS.md

포지셔닝: 이 문서는 STANDARD-ANSWER-CURATION.md상위 수집 파이프라인이다. 본 문서는 "PMS에서 무엇을 어떤 순서로 끌어와 어떻게 분류·태깅해 draft로 만드는가"(수집 단계)를 정의하고, draft 이후의 검토·승인·중복/병합·KPI는 큐레이션 정본에 위임한다. 두 문서의 경계는 §4-6 단계 ⑦에서 명시한다.


1. 개요

1-1. 목적

PMS(맑은프로젝트게시판)에는 약 1,358건의 Q&A 후보가 200여 프로젝트에 누적돼 있다(PROJECT-INQUIRY-ANALYSIS.md). 이 자산을 챗봇/상담사 보조의 1순위 소스인 표준답변(hp_standard_answer)으로 환류시키려면, 수집 대상 선별 → 서비스 자동 배정 → 안내글/Q&A 분기 → 토픽 분류 → 후보 가치 판단 → draft 등록 → 검토·승인까지의 절차가 표준화돼야 한다.

이 문서는 그 **단계별 절차(파이프라인)**를 정본화하고, 각 단계의 입력·처리·출력·자동/수동 경계를 못박는다. 실제 DDL·코드·인덱스는 dba/api/admin/pms가 만들며, 본 문서는 그들에게 넘길 요구사항을 §9에 분해한다.

1-2. 범위

포함제외
PMS 문의 스캔 대상 선별(기간·프로젝트·제외 룰)실제 마이그레이션 SQL·인덱스 작성(dba)
게시판 그룹(tb_project_group.name) → hp_service 자동 배정 규칙(정본)챗봇 응답 매칭 알고리즘(FR-1, 큐레이션 §2-3)
작성자 staff 판정 → 안내글 vs Q&A 분기 정책승인 후 상태 전이·중복/병합·KPI(STANDARD-ANSWER-CURATION.md §3~6)
토픽 LLM 자동 분류 입력/출력/신뢰도 정책OpenSearch 인덱싱 설계(자료 측)
hp_service 7서비스 재정의 제안 + 안내글 별도 테이블(hp_announce) 설계 권고비공개 자료 P2 노출 가드 상세(privacy-officer, 큐레이션 §8-D)

1-3. 권한 (수집 단계, ADMIN-PLAN.md §2-1 준수)

액션admindeveloperagent
수집 잡 실행(스캔·자동 배정·분류)❌(트리거만 요청)
수집 큐 검토(후보 채택/기각)✅(제안)
draft 등록(분류·유형 태깅 확정)✅(제안 저장)
승인(approved)

수집 단계의 서비스 자동 배정·staff 판정은 결정적(rule) 처리라 자동, 토픽 분류·후보 채택은 사람 검토 게이트가 있다(§7).


2. 전체 파이프라인 한눈에 (7단계)

  ① 스캔            ② 서비스 배정       ③ 안내글/Q&A 분기   ④ 토픽 분류
 PMS tb_post   →  group.name→service  →  작성자 staff?    →  LLM topic 추론
 (기간·프로젝트)    (A 매핑, 결정적)      (C, 결정적)          (B, LLM + 보류)
 제외 룰 적용                              │                     │
      │                                   ├─ staff 첫글 → 안내글  │
      ▼                                   └─ 그 외 → Q&A          ▼
 ⑤ 후보 가치 판단  →  ⑥ draft 등록  →  ⑦ 검토·승인
 답변 존재·재사용성    분류·트랙별 테이블   admin이 approved
 (반자동: 점수+사람)   approval_status=draft  → 큐레이션 정본으로 위임
                       Q&A→hp_standard_answer / 안내글→hp_announce
  • 결정적(자동) 단계: ① 제외 룰, ② 서비스 배정, ③ staff 판정.
  • LLM + 보류 단계: ④ 토픽 분류(신뢰도 낮으면 미분류 보류).
  • 반자동(점수 + 사람) 단계: ⑤ 후보 가치 판단.
  • 수동(사람 확정) 단계: ⑥ draft 확정 태깅, ⑦ 승인.

수집 파이프라인의 **출력은 항상 draft**다. 무검증 답변이 챗봇에 직행하지 않게 하는 게이트(STANDARD-ANSWER-CURATION.md §3-4·FR-1 AC-1.2).


3. 그룹 → 서비스 자동 배정 (A 규칙 · 정본)

3-1. 매핑 테이블 (정본 — 고정)

PMS tb_project_group.name(API가 이미 group_name으로 조회 — ../malgn-helper-api/src/index.ts /pms/projects)을 hp_service에 결정적으로 매핑한다.

2026-06-18 현행화 — api(DRAFT 분석)가 발견한 실측 DB 그룹명으로 매핑 표를 교체했다(TOPIC-CATALOG-DRAFT.md §1-3). 이전 표의 OTT서비스(공백 누락)·글로벌이러닝 서비스(≠실측 글로벌LMS 서비스맑은이러닝 종료(누락) 등을 실측값으로 정정. 매칭 키는 아래 "PMS 그룹명(실측)" 컬럼이다.

#PMS 그룹명(tb_project_group.name 실측)서비스(라벨)hp_service.slug비고
1OTT 서비스OTTott공백 포함(이전 표 OTT서비스 오기)
2맑은이러닝 서비스범용general고객 12,249 — 최대
3맑은이러닝 서비스(오픈전)범용general오픈전/후 구분은 서비스 식별 무관
4맑은이러닝 종료범용(종료)general신규 매핑 — 범용 종료분. §5-1 노후 가드 태그 부여
5글로벌LMS 서비스글로벌global실측명(≠글로벌이러닝 서비스)
6공공클라우드 서비스공공public
7유지보수 프로젝트유지보수maintenance
8환급과정 유지보수환급refund
9독립LMS 서비스독립standalone
10완료프로젝트혼합(종료)(보류)범용/특화 혼재 — hold_service 후 사람 분류. §3-3
11진행프로젝트혼합(보류)
12파트너게시판협력사(보류)협력사 트랙 별도 검토(§3-3·HARVEST 협력사 정책)

서비스는 7종(OTT·범용·글로벌·공공·유지보수·환급·독립). 그룹 #2·#3·#4 세 그룹이 "범용"(general)에 매핑된다(오픈전/오픈후/종료 구분은 서비스 식별엔 영향 없음 — 동일 범용 자산. 단 맑은이러닝 종료는 노후 가드 태그). #10~#12(완료/진행/파트너)는 자동 배정 않고 hold_service 보류.

3-2. 매칭 방식·정규화

  • 매칭 키는 tb_project_group.nametrim + 정확 일치(대소문자·공백 정규화). PMS 그룹명은 운영자가 수기 입력하므로 공백/괄호 변형 흡수(예: 맑은이러닝 서비스(오픈전) 전각 괄호 → 반각 정규화).
  • 매핑은 코드 상수가 아니라 데이터로 둔다(운영자가 catalog에서 편집 가능). → §4-A hp_service_group_map 또는 hp_service.match_group_names JSON 중 택1(dba 결정, §9-A).

3-3. 미매핑 그룹 처리 규칙

표에 없는 그룹명(신규 그룹, 사내 게시판 등)을 만나면:

상황처리
매핑 테이블에 없는 그룹명service_id = NULL + harvest_status='hold_service'로 보류. 자동 배정하지 않는다(임의 추정 금지).
사내 게시판 그룹(예: 01.~/09.~/몽골개발팀·보고/결재·이러닝컨설팅팀·종료/마감/보관·이러닝개발팀·학습조직·이러닝사업팀)수집 대상에서 제외(§5-2 제외 룰). 표준답변 자산 아님(PROJECT-INQUIRY-ANALYSIS.md §7).
[영업] 일반LMS(project_id=153)Q&A 형식 깨짐 → 수집 보류·별도 검토(PROJECT-INQUIRY-ANALYSIS.md §8-4). 자동 서비스 배정 안 함.

보류된 미매핑 그룹은 admin 수집 큐에 "서비스 미배정"으로 모여, 운영자가 (a) 매핑 테이블에 그룹 추가 또는 (b) 수집 제외를 결정한다.


4. hp_service 카탈로그 재정의 (002 → 재시드 제안)

4-1. 충돌 — 002 시드는 사용자 7서비스와 다름

../malgn-helper-api/migrations/002_admin_console.sqlhp_service 시드는 step/lms-general/lms-mixed/lms-private/lms-public-security/lms-global 6종으로, 사용자가 준 A 규칙의 7서비스(OTT·범용·글로벌·공공·유지보수·환급·독립)와 불일치한다. A 규칙은 PMS 그룹명에서 직접 도출된 실데이터 기반이므로 이쪽을 정본으로 재정의한다.

4-2. 재시드 제안 (slug/name 안)

slugnamenote매핑 그룹
ottOTTOTT 서비스OTT서비스
general범용맑은이러닝(범용 LMS)맑은이러닝 서비스 / 〃(오픈전)
global글로벌글로벌이러닝(해외·영문)글로벌이러닝 서비스
public공공공공클라우드공공클라우드 서비스
maintenance유지보수유지보수 프로젝트유지보수 프로젝트
refund환급환급과정 유지보수(고용보험 환급)환급과정 유지보수
standalone독립독립 LMS(온프레미스/단독)독립LMS 서비스

4-3. 마이그레이션 영향 (dba 위임)

  • 002 시드 6종(step/lms-*)은 목업 기반 가상값으로, 실제 hp_standard_answer.service_id 참조가 아직 없다(분류 컬럼 자체가 미실체화 — STANDARD-ANSWER-CURATION.md §8-B). 따라서 재시드 시 데이터 유실 위험은 낮다.
  • 결정 필요(dba): (a) 002 시드 6종을 status=-1 soft-delete 후 7종 신규 INSERT, 또는 (b) 기존 행을 7종으로 UPDATE(slug 재매핑). 운영 catalog에서 이미 편집됐는지 확인 후 결정.
  • 큐레이션 정본의 미정 항목 **T1(카탈로그 정본 확정)**이 이 재정의로 부분 해소된다 → STANDARD-ANSWER-CURATION.md §2-2·§7-2 T1과 ADMIN-PLAN.md §4-3-1 표를 이 7서비스로 현행화(§10 핸드오프).

⚠ 이 재정의는 hp_service(서비스 축)만 다룬다. hp_topic(토픽 축) 정본은 별도이며 §6·큐레이션 T1에서 다룬다.


5. 단계별 절차 — 상세

5-1. ① PMS 문의 스캔 (대상 선별)

항목내용
입력스캔 파라미터: 기간(reg_date 범위)·프로젝트/그룹 한정(선택)·최소 본문 길이
처리tb_post(status=1, 본문≥20자) + 댓글(tb_post_comment) 존재 여부 조인. Task/일정/투표/공지·테스트 글 제외(PROJECT-INQUIRY-ANALYSIS.md 대상 정의 계승)
출력수집 후보 게시글 목록(post_id·project_id·group_id·group_name·작성자·댓글 수)
경계자동(배치/온디맨드). 기간·프로젝트 선택은 운영자가 지정

스캔 범위 권고(노후화 리스크 반영):

  • 데이터 대부분 2022년 상반기 → 최신 답변 우선. 1차 스캔은 2025~2026 활동분 또는 운영자가 지정한 Top 프로젝트부터(PROJECT-INQUIRY-ANALYSIS.md §8-7).
  • 종료 프로젝트(*)는 수집 가능하되 "현재 시스템과 다를 수 있음" 가드 태그 부여(§6-tags, PROJECT-INQUIRY-ANALYSIS.md §7).

5-2. ① 제외 룰 (수집 대상에서 빼는 것 — 결정적)

2026-06-18 제외 룰 보강 — api(DRAFT §1-3)가 사내 게시판이 그룹명에 숫자 prefix가 없는 경우(보고/결재·이러닝컨설팅팀·종료/마감/보관·이러닝개발팀·학습조직·이러닝사업팀 — 모두 staff 100%)를 지적. 프로젝트명 ^[0-9]+\. REGEXP만으로는 안 걸린다. 아래에 그룹명 화이트리스트 + staff비중 안전망을 추가한다.

제외 대상판정
사내 업무 게시판(숫자 prefix)프로젝트명 REGEXP '^[0-9]+\\.'(예: 01. 결재…, 09. 대표님께…)
사내 게시판 그룹명 화이트리스트(숫자 prefix 없음)tb_project_group.name IN ('보고/결재','이러닝컨설팅팀','종료/마감/보관','이러닝개발팀','학습조직','이러닝사업팀','몽골개발팀', …) — 운영자 편집 가능 데이터로 관리(§3-2 매핑과 동일 저장소, exclude 플래그)
staff비중 안전망(보조 룰)위 룰에 안 걸렸으나 그룹 단위 **고객(비staff) 문의 0건 & staff 100%**인 그룹은 사내로 추정 → 자동 제외하지 않고 hold_internal수집 큐에 보류(운영자가 화이트리스트 추가/포함 결정). 임의 제외 금지(추정 가드)
영업 메모[영업] 일반LMS(project_id=153) — Q&A 형식 아님(보류, §3-3)
미매핑 그룹§3-3 — 서비스 보류(수집은 큐에 올리되 hold_service)
본문 부실본문 <20자, 댓글(답변) 0건 → Q&A 가치 없음(단 안내글은 댓글 0이어도 유효, §5-3 분기 후 재판단)

5-3. ③ 안내글 vs Q&A 분기 (C 규칙 · 결정적)

※ 단계 순서상 ②(서비스 배정) 다음이 ③(분기)이나, 분기 룰이 이후 모든 처리(④토픽·⑤가치판단)에 영향을 주므로 먼저 상술한다.

핵심 룰: 게시글의 첫 작성자가 우리 회사 직원(isStaff@malgnsoft.com OR company='맑은소프트', ../malgn-helper-api/src/classify.ts)이면 그 글은 질문이 아니라 "안내글"(고객 대상 공지·안내)일 가능성이 높다.

작성자(첫 글)글 성격수집 트랙출력 테이블
staff안내글(공지·정책 안내)표준 안내답변 트랙hp_announce(별도 테이블)
고객/협력사Q&A(문의)표준답변(Q&A) 트랙hp_standard_answer
  • 입력: 게시글 작성자(tb_post.user_idtb_user.email/company)에 classify.tsisStaff 적용. API는 이미 u_is_staff 계산식을 /pms/posts/:id/announce-eval에서 사용 중(../malgn-helper-api/src/index.ts:1483).
  • 처리: isStaff=true → 안내글 트랙. 안내글은 본문 자체가 답변 콘텐츠(질문+답변 쌍이 아님) → ⑤ 가치 판단 기준이 다르다(§5-5).
  • 출력: 트랙별 테이블 분리 — Q&A는 hp_standard_answer, 안내글은 hp_announce(아래 설계). 안내글 처리에는 기존 /pms/posts/:id/announce-eval/generate(직원 안내글 3축 평가 + 안내문 템플릿 3종 생성, ../malgn-helper-api/src/index.ts:1470) 재활용.
  • 경계: 자동(결정적 룰). 단, "staff가 고객 질문을 대리 등록한 경우"(예: 전화 문의를 직원이 받아 적음)는 안내글이 아닐 수 있어 → ⑥/⑦ 사람 검토에서 트랙(테이블) 정정 가능(오버라이드, §7).

안내글 = 별도 테이블 hp_announce (2026-06-18 결정 — answer_type ENUM 권고 폐기)

변경 이력: 본 절은 이전에 안내글을 hp_standard_answer.answer_type ENUM('qa','announce') 단일 컬럼으로 구분하는 안 A를 권고했다. 2026-06-18 사용자 결정으로 안 A를 폐기하고, 안내글 전용 테이블 hp_announce물리 분리한다(아래 3안 중 (이전)C안 채택). 사유: 안내글(공지)과 Q&A는 데이터 형상(질문 유무)·승인 기준·챗봇 사용 방식·관리 메뉴가 본질적으로 달라, 한 테이블에 섞으면 NULL 컬럼·분기 조건이 누적되고 관리자 UX가 모호해진다. 운영자(기획)는 표준답변과 안내글을 admin에서 별도 메뉴로 다루기로 확정(§9-C) — 테이블 분리가 메뉴 분리와 정합.

hp_announce 설계 개요 (DDL·인덱스는 dba 소관 — 본 절은 요구사항/연결점):

항목내용
목적직원이 작성한 고객 대상 공지·안내문의 표준 자산(질문-답변 쌍 아님). "표준 안내답변"
핵심 컬럼(제안)id · title(안내 주제/제목 — 필수, 공지문엔 명시 질문 없음) · body(안내 본문 HTML) · scope ENUM('common','service') · topic_id(hp_topic) · service_id(hp_service) · tags · source_post_id(출처) · valid_from/valid_to(공지 유효기간 — 일회성 점검 vs 항구 정책 구분) · approval_status(승인 워크플로 공유) · approved_by/approved_at/rejection_reason · usage_count/last_used_at · status(1/-1)
hp_standard_answer공유하는 것분류 축(scope/topic_id/service_id/tags) · 승인 워크플로 상태 모델(draft/reviewing/approved/rejected/archived, STANDARD-ANSWER-CURATION.md §3) · 채택 신호(usage_count) · 출처 추적(source_post_id) · 카탈로그(hp_topic/hp_service)
hp_standard_answer다른(1) 질문 컬럼 없음title이 식별자(Q&A는 question+answer 쌍). (2) 유효기간(valid_from/valid_to) — 공지는 시한성. (3) 챗봇 사용 방식 — Q&A는 매칭 1순위 소스(FR-1), 안내글은 매칭이 아니라 "관련 공지 참조"로 노출(말투·출처 다름). (4) P2 노출 가드 — 공지가 특정 업체·내부 정책을 담을 수 있어 일반화 검증 필수(§9-E)
의도적 비공유(중복 허용)승인 워크플로·중복/병합·KPI 로직 일부 중복 운영을 감수한다. 이전 안 A가 우려한 "로직 두 벌"은 인정하되, 데이터 형상·관리 메뉴·챗봇 사용의 본질적 차이가 분리 이득이 더 크다고 판단(사용자 결정). 공통 로직(상태 전이 검증 등)은 api에서 헬퍼로 공유 가능

안내글에 question을 억지로 채우던 이전 미정 TODO H3(질문 NULL 허용 규칙)은 hp_announce.title로 해소 — 안내글에는 question 개념 자체가 없다.

마이그레이션: answer_type 컬럼은 신설하지 않는다(004 후보에서 제외). 대신 hp_announce 신규 테이블(dba). hp_standard_answer는 Q&A 전용으로 단순 유지(CURATION §9-A 003 분류 컬럼은 그대로).

5-4. ② 서비스 자동 배정

항목내용
입력게시글의 group_name(스캔 ①에서 조인됨)
처리§3-1 매핑 테이블로 service_id 결정. 미매핑 시 §3-3 보류
출력service_id(또는 NULL+hold_service)
경계자동(결정적). 미매핑만 사람에게

5-5. ④ 토픽 LLM 분류 (B 규칙)

항목내용
입력문의 본문(Q&A는 질문 본문, 안내글은 안내 본문) + hp_topic 카탈로그(활성 토픽의 slug·label·description)
처리LLM이 본문을 읽고 카탈로그 중 가장 적합한 topic을 1개(또는 상위 N) 선택 + 신뢰도(confidence) 반환. 적합 토픽이 없으면 신규 토픽 제안(label·근거) 또는 미분류
출력topic_id + confidence, 또는 topic_id=NULL(미분류 보류) + 신규 토픽 제안 메모
경계LLM 자동 추론 + 신뢰도 게이트(낮으면 사람)

프롬프트 입력/출력 규약:

  • 입력: { 본문, scope_hint(공통/서비스), 서비스명, 카탈로그[{slug,label,description}] }. 이름·회사로 도메인 추정 금지(분류 규칙 — 본문 내용만 근거).
  • 출력(JSON): { topic_slug | null, confidence(0~1), new_topic_suggestion?: {label, reason}, reason }.
  • 신뢰도 정책:
    • confidence ≥ 임계(기본 0.6, hp_settingsafetyconfidence_threshold 재사용 검토 또는 분류 전용 키)topic_id 자동 태깅(단 ⑥에서 사람이 최종 확인).
    • confidence < 임계topic_id=NULL 미분류 보류 + 수집 큐에 "토픽 확인 필요"로 표시.
    • new_topic_suggestion 있으면 → 자동 생성 금지, 운영자 검토 후 catalog에 토픽 추가 결정(임의 카탈로그 증식 방지).

scope(common/service) 자체도 LLM이 보조 추론하나, 서비스 특화 여부 최종 판단은 사람이 ⑥에서 확정(서비스 배정 ②는 결정적이지만 "이 답변이 그 서비스에만 유효한지 vs 전사 공통인지"는 의미 판단).

5-6. ⑤ 표준답변 후보 가치 판단 (반자동)

수집 후보가 표준답변으로 등록할 가치가 있는지 점수화 후 운영자가 채택한다.

트랙가치 판단 기준
Q&A(a) 답변(댓글) 존재·충실도 — 답이 없으면 표준답변 불가, (b) 재사용성 — 특정 업체 1회성 vs 일반화 가능, (c) 신선도(reg_date 가중치 — 2022년은 감점), (d) 중복 여부(이미 유사 표준답변 존재? → 큐레이션 §4-1 중복검사 연계)
안내글(a) 공지/정책의 항구성 — 일회성 점검 공지 vs 항구적 정책 안내, (b) 일반화 가능성, (c) announce-eval 3축 점수 활용
  • 처리: 규칙 점수(신선도·답변 유무·길이) + 선택적 LLM 보조(재사용성 판단). 점수는 정렬·추천용이고 채택 결정은 사람.
  • 출력: 채택(→⑥) / 기각 / 보류.
  • 경계: 반자동 — 점수로 우선순위를 매기되 채택은 운영자가 확정(§7).

5-7. ⑥ draft 등록 (분류·유형 태깅 확정)

항목내용
입력채택된 후보 + 자동 배정 결과(service_id) + LLM 토픽(topic_id/보류) + 트랙(Q&A/안내글)
처리트랙별 테이블에 INSERT — Q&A는 hp_standard_answer, 안내글은 hp_announce. 항상 approval_status='draft'. 분류(scope/topic_id/service_id)·출처(source_post_id)·가드 태그(종료 프로젝트·노후) 기록
출력draft 표준답변 row(분류·유형 태깅 완료, 미확정 토픽은 NULL)
경계사람 확정(자동 배정값을 운영자가 검토·수정 후 저장)

이 단계의 출력이 STANDARD-ANSWER-CURATION.md의 입력(진입점 ①~④와 동급의 "PMS 수집" 진입점)이 된다.

5-8. ⑦ admin 검토·승인 (→ 큐레이션 정본에 위임)

  • draft → reviewing → approved 전이·중복/병합·반려 사유·KPI는 전적으로 STANDARD-ANSWER-CURATION.md §3~6이 정본.
  • 본 수집 문서의 책임은 draft 생성까지. ⑦은 경계 명시용으로만 기술한다.
  • 안내글(hp_announce)도 동일 승인 워크플로(상태 모델)를 타되, admin은 "표준 안내답변" 별도 메뉴(hp_announce 목록)에서 검토한다 — Q&A 표준답변 메뉴와 분리(§9-C).

6. 자동 / 반자동 / 수동 경계 (요약)

단계처리경계사람 개입 지점
① 스캔·제외 룰결정적 쿼리자동기간·프로젝트 선택
② 서비스 배정그룹명 매핑(A)자동미매핑 보류만
③ 안내글/Q&A 분기staff 판정(C)자동대리등록 오버라이드
④ 토픽 분류LLM 추론(B)LLM + 보류저신뢰·신규토픽 검토
⑤ 가치 판단점수 + LLM 보조반자동채택/기각 확정
⑥ draft 등록INSERT(태깅)수동 확정자동값 검토·수정
⑦ 승인상태 전이수동admin 승인(큐레이션 정본)

원칙: 결정적으로 답이 나오는 것(제외 룰·서비스 매핑·staff 판정)은 자동, 의미 판단(토픽·재사용성·채택)은 사람이 최종 확정. LLM은 분류·점수의 보조이며 단독 등록·승인 권한 없음(안전 가드 — 추측 금지 정책 정합).


7. 정책 결정 사항 / 미정 TODO

7-1. 결정 (이 문서로 확정)

결정근거
그룹→서비스 매핑(§3-1, A)을 정본으로 고정, 매핑은 데이터로(코드 상수 X)운영자 편집·신규 그룹 대응
hp_service7서비스로 재정의(OTT·범용·글로벌·공공·유지보수·환급·독립)A 규칙이 실데이터(PMS 그룹) 기반. 002 시드 6종은 목업
미매핑 그룹은 자동 배정 금지·보류(추정 금지)분류 규칙(이름·패턴 추정 금지)
안내글은 별도 테이블 hp_announce(2026-06-18 결정 — answer_type ENUM 안 폐기)데이터 형상(질문 유무)·승인 기준·챗봇 사용·관리 메뉴가 본질적으로 달라 분리. 분류 축·상태 모델은 공유 — §5-3
admin에서 표준답변(Q&A)과 표준 안내답변(안내글)을 별도 메뉴테이블 분리와 정합·운영 명료성(§9-C)
staff 첫 작성글 → 안내글 트랙(hp_announce), 그 외 → Q&A(hp_standard_answer)C 규칙 + classify.ts isStaff 재사용
수집 출력은 항상 draft무검증 답변 챗봇 직행 차단(FR-1 AC-1.2)
토픽은 LLM 추론 + 신뢰도 게이트(저신뢰 미분류 보류)안전 가드(추측 금지)·임의 카탈로그 증식 방지
결정적 단계만 자동, 의미 판단(토픽·채택)은 사람 확정§6 원칙

7-2. 미정 TODO

#항목누가 결정영향
H1그룹 매핑 저장처 — hp_service_group_map 신규 테이블 vs hp_service.match_group_names JSONdba+기획§3-2, §9-A
H2hp_service 재시드 방식 — 002 6종 soft-delete 후 INSERT vs UPDATE 재매핑dba§4-3
H3안내글 question NULL 규칙해소: hp_announce 별도 테이블·title 사용(안내글에 question 개념 없음)(완료 2026-06-18)§5-3
H3bhp_announce 신규 테이블 DDL·인덱스·승인 워크플로 헬퍼 공유 범위dba+api§5-3
H4토픽 분류 신뢰도 임계 — safety confidence_threshold(0.6) 재사용 vs 분류 전용 hp_setting기획+api§5-5
H51차 스캔 범위 — 2025~2026 활동분 우선 vs Top 프로젝트 우선 vs 전체기획+CS§5-1
H6종료 프로젝트(*)·노후(2022) 가드 태그 표현 — tags vs 전용 컬럼기획+dba§5-1
H7hp_topic 토픽 정본 확정해소: TOPIC-CATALOG.md 24토픽 확정(2026-06-18)(완료)§6, 큐레이션 §2-2
H8안내글 P2 노출 정책(공지성 출처 표기·말투) — privacy-officer 협의privacy-officer§9-E
H9staff 대리등록(직원이 고객 질문 대필) 식별 보조 룰기획+api§5-3

8. 정합·현행화 (다른 정본과의 충돌)

ID충돌현행화 방향
H-Ahp_service 시드 불일치 — 002(step/lms-* 6종) vs 본 문서 7서비스본 문서 §4-2를 정본으로 dba 재시드. STANDARD-ANSWER-CURATION.md §2-2·T1 및 ADMIN-PLAN.md §4-3-1 service 표를 7서비스로 현행화
H-B안내글 분리 — 이전 answer_type ENUM 권고를 폐기, hp_announce 별도 테이블로큐레이션 §2-1 분류 축에서 answer_type 행 제거 + "안내글은 hp_announce 별도 테이블·별도 메뉴" 상호참조. dba는 hp_announce 신규(004 후보)
H-Chp_standard_answer.service_id/topic_id 미실체화(큐레이션 §8-B)본 수집 절차는 큐레이션 003(분류 컬럼)에 의존. Q&A 분류 컬럼 + hp_announce 신규 후 수집 가동
H-D토픽 카탈로그 정본 — 확정(TOPIC-CATALOG.md 24토픽)큐레이션 T1(토픽)·ADMIN-PLAN §4-3-1 토픽 표를 24토픽으로 현행화

9. 연결점 — 후속 작업 요구사항

실제 DDL·코드·인덱스는 dba/api/admin/pms가 만든다. 아래는 요구사항이다.

9-A. DBA — 스키마 요구사항

  • hp_service 재시드(§4-2, 7서비스). 002 6종 처리 방식 결정(H2).
  • 그룹→서비스 매핑 저장처(H1): hp_service_group_map(group_name VARCHAR, service_id INT) 신규 또는 hp_service.match_group_names(LONGTEXT JSON — 운영 DB MySQL 5.6.51 호환). 정규화 룰(전각 괄호 등)은 애플리케이션.
  • hp_announce 신규 테이블(004 후보, §5-3). 핵심 컬럼: title/body/scope/topic_id/service_id/tags/source_post_id/valid_from/valid_to/approval_status/approved_by/approved_at/rejection_reason/usage_count/last_used_at/status. 인덱스: idx_approval (approval_status, status)·idx_scope_topic (scope, topic_id, service_id, status). hp_standard_answeranswer_type 컬럼 추가하지 않음.
  • 승인 워크플로 상태 전이 검증은 hp_standard_answer공통 헬퍼로 공유(api).
  • 수집 출처 추적: source_post_id INT(이미 큐레이션 §9-A 제안)·harvest_status(hold_service/hold_topic 등 수집 보류 상태) 컬럼 검토.
  • ※ 큐레이션 §9-A의 분류 컬럼(scope/topic_id/service_id/approval_status)이 선행 의존(003) — 본 004는 그 위에 얹는다.

9-B. API — 엔드포인트 요구사항

엔드포인트(제안)역할가드
POST /pms/harvest/scan기간·프로젝트 스캔 → 후보 목록(제외 룰·서비스 배정·staff 분기 자동 적용)developer↑
〃 응답 항목각 후보에 service_id(또는 hold_service)·트랙(qa/announce)·댓글 유무·신선도 점수 포함
POST /pms/harvest/classify-topic본문+카탈로그(24토픽) → LLM 토픽 추론(topic_slug/confidence/신규제안), 저신뢰 보류developer↑, rateLimitLlm
POST /standard-answers(확장)Q&A 채택분 draft 등록 — scope/topicId/serviceId·sourcePostId 수용(큐레이션 §9-B와 통합)
POST /announces(신규)안내글 채택분 draft 등록 — title/body/scope/topicId/serviceId/validFrom/validTo/sourcePostIddeveloper↑
POST /pms/posts/:id/announce-eval/generate(재활용)안내글 3축 평가 + 안내문 템플릿 → 안내답변 draft 후보serviceToken(현행)
서비스 배정 헬퍼group_name → service_id 매핑 룩업(매핑 데이터 기반)내부
staff 판정classify.ts isStaff 재사용(이미 announce-eval에서 사용)내부

9-C. ADMIN — 화면 요구사항

  • 수집 큐레이션 화면(신규 또는 /standard-answers 내 탭): 스캔 트리거 → 후보 목록(서비스 자동배정·토픽 추론·트랙(Q&A/안내글) 표시) → 채택/기각 → draft 저장. 미매핑(hold_service)·저신뢰 토픽(hold_topic)을 별도 필터로.
  • 표준답변(Q&A)·표준 안내답변(안내글) 별도 메뉴: 안내글은 hp_announce 전용 메뉴(/announces)로 분리 — Q&A /standard-answers와 다른 목록·승인 흐름·필드(유효기간 등). 단순 탭이 아니라 별도 IA 메뉴(사용자 결정 2026-06-18).
  • catalog(/catalog)의 hp_service7서비스로 현행화(재시드 후 자동 반영) + 그룹 매핑 편집 UI(H1 결정 시).

9-D. PMS — 요구사항

  • QaEvalCard/안내글 카드에서 "표준답변으로 저장"(→hp_standard_answer)·"표준 안내답변으로 저장"(→hp_announce) 시 자동 배정된 서비스·추론 토픽 프리필 표시(운영자가 PMS 안에서도 채택 가능). 저장은 항상 draft임을 명시.
  • 안내글(staff 첫 글) 화면은 기존 announce-eval 결과를 그대로 활용.

9-E. PRIVACY-OFFICER — 협의 요구사항

  • 안내글(hp_announce)의 P2 고객 챗봇 노출 정책(H8): 공지성 안내가 특정 업체·내부 정책을 담을 수 있어, 일반화 검증·출처 표기·말투 가드 필요. 비공개 댓글 파생분은 큐레이션 §8-D/FR-10과 동일하게 가드.

10. 핸드오프 요약

대상넘기는 것
dbahp_service 7서비스 재시드(H2) · 그룹 매핑 저장처(H1) + 사내 게시판 제외 화이트리스트(§5-2) · hp_announce 신규 테이블(004, H3b) · harvest_status. 큐레이션 003(Q&A 분류 컬럼) 선행 의존. hp_topic 24토픽 재시드(TOPIC-CATALOG.md §4)
api/pms/harvest/scan·/classify-topic(24토픽 입력) 신규 · POST /standard-answers(Q&A)·POST /announces(안내글) · 서비스 매핑/staff 판정 헬퍼 · 승인 전이 공통 헬퍼 · announce-eval 재활용
admin수집 큐레이션 화면 · 표준답변(Q&A)·표준 안내답변(hp_announce) 별도 메뉴 · catalog 7서비스·24토픽 현행화 · 그룹 매핑 편집
pms저장 카드에 자동배정·토픽·트랙(Q&A→hp_standard_answer/안내글→hp_announce) 프리필
privacy-officer안내글 P2 노출 가드(H8)
도메인 오너(기획+CS)hp_topic 토픽 정본 — 확정(TOPIC-CATALOG.md 24토픽) · 1차 스캔 범위(H5)

본 문서가 확정·재정의한 7서비스·24토픽(TOPIC-CATALOG.md안내글 별도 테이블(hp_announce)·관리자 메뉴 분리STANDARD-ANSWER-CURATION.md §2-2·T1과 ADMIN-PLAN.md §4-3 표의 현행화 트리거다. dba 재시드가 진행되면 두 정본을 함께 갱신하고 docs/history/에 누적한다.

토픽 생성 범위 = 2022~2026 전 프로젝트(확정 — 사용자 결정 2026-06-18, TOPIC-CATALOG.md §1).

Malgn Helper(고객상담 AI 챗봇) 프로젝트 문서·작업 이력