kpaa / data /keyword_intents.yaml
scvcoder's picture
Initial backend code: src/kpaa, runtime data, requirements
94f1300 verified
# 의도 메타데이터 — KPAA v2 라우팅 데이터.
#
# v2부터 라우팅 1차는 **LLM 의도 분류기**(Gemma 4 E2B JSON-mode 1샷)가 담당.
# 이 yaml은 (1) LLM 분류 결과의 intent name → 조문 힌트(jo_hints)/소스 보강용 메타데이터,
# (2) LLM 호출 실패·timeout 시 rule_route fallback 의 키워드 사전 (keywords 필드).
#
# 즉 keywords 큐레이션 부담은 사라졌고 (LLM이 자연어 의도 파악) keywords는 *fallback 안전망*만 됨.
# intent 이름과 jo_hints/sources는 LLM 분류기 결과와 직접 연결되므로 정확하게 유지.
#
# 항목 형식:
# - intent: 의도 식별자 (snake_case) — llm_router.INTENT_LIST 와 1:1 매칭되어야 함
# keywords: rule_route fallback 매칭 키워드 (소문자/대소문자 무관, 부분일치)
# jo_hints: 개인정보 보호법 조문 번호 (없으면 빈 리스트)
# sources: 보강용 데이터 카테고리 (chain orchestrator 가 기본값을 결정하고, 여기 sources는 union으로 병합)
# - case : 상담사례 1,745건 (로컬 SQLite)
# - law : 본법(개인정보보호법) 조문 + jo_targets 명시 시 라이브
# - related_law : data/related_laws.yaml 의 매칭된 법령 본문 (라이브)
# - pipc : 개인정보보호위원회 결정문
# - interpretation: 법령해석례
# - precedent : 판례 (대법원·하급심)
# - admin_rule : 행정규칙(고시)
- intent: 동의_수집
keywords: [동의, 수집, 받아도, 받아도되, 마케팅, 광고, 홍보]
jo_hints: ["15", "22"]
sources: [case, law, pipc, precedent]
- intent: 민감정보
keywords: [민감정보, 진료기록, 건강, 질병, 병력, 환자, 사진, 안면, 지문, 홍채, 생체]
jo_hints: ["23"]
# 의료기관 사례 → 의료법까지 가져오게 related_law 활성. 환자/병원 키워드 매칭 시.
sources: [case, law, related_law, pipc, precedent]
- intent: 고유식별정보
keywords: [주민등록번호, 주민번호, 외국인등록번호, 운전면허, 여권번호, 고유식별, 식별번호]
jo_hints: ["24", "24의2"]
# 주민등록법까지 → related_law 활성
sources: [case, law, related_law, pipc, precedent]
- intent: 영상정보처리
keywords: [CCTV, cctv, 영상정보, 영상정보처리기기, 안내문, 안내판, 매장, 카메라, 녹음]
jo_hints: ["25"]
# CCTV 녹음은 통신비밀보호법까지 → related_law 활성
sources: [case, law, related_law, pipc, precedent]
- intent: 유출신고
keywords: [유출, 분실, 도난, 신고, 통지, 침해, 누출]
jo_hints: ["34"]
# 안전성 확보조치 기준 고시까지 → admin_rule 활성
sources: [case, law, pipc, admin_rule]
- intent: 처리위탁
keywords: [위탁, 외주, 클라우드, 처리위탁, 수탁]
jo_hints: ["26"]
sources: [case, law, pipc, admin_rule]
- intent: 제3자제공
keywords: [제3자, 제공, 공유, 양도, 매각]
jo_hints: ["17", "18"]
sources: [case, law, pipc, precedent]
- intent: 채용
keywords: [채용, 이력서, 직원, 입사지원, 면접, 인사, 근로]
jo_hints: ["15", "23", "24의2"]
sources: [case, law, pipc]
- intent: 처리방침
keywords: [처리방침, 개인정보처리방침, 방침, 게시, 공개]
jo_hints: ["30"]
sources: [case, law, admin_rule]
- intent: 파기
keywords: [파기, 보관기간, 보유기간, 보존, 폐기, 보관]
jo_hints: ["21"]
sources: [case, law, interpretation]
- intent: 아동
keywords: [아동, 미성년, 14, 만14세, 어린이, 청소년, 학생]
jo_hints: ["22의2"]
sources: [case, law, pipc]
- intent: 정보주체_권리
keywords: [열람, 정정, 삭제, 처리정지, 권리, 본인요청]
jo_hints: ["35", "36", "37"]
sources: [case, law, pipc, interpretation]
- intent: 안전조치
keywords: [안전조치, 암호화, 접근권한, 접근통제, 안전성, 보안]
jo_hints: ["29"]
# 안전성 확보조치 기준 고시가 핵심 → admin_rule 우선
sources: [law, admin_rule, pipc]
- intent: 보호책임자
keywords: [개인정보보호책임자, CPO, 책임자, 보호책임자]
jo_hints: ["31"]
sources: [law, admin_rule]
# 판례·처벌 사례 요청 — "○○법 위반 판례", "처벌 사례", "어떻게 판결됐어"
# precedent 카테고리를 명시적으로 활성화하기 위한 intent.
- intent: 판례_요청
keywords:
- 판례
- 판결
- 판시
- 사건번호
- 위반
- 위반사례
- 처벌
- 처분
- 손해배상
- 형사
jo_hints: []
sources: [law, precedent, pipc]
# 메타/정의/일반 질문 — "○○법이 뭐야", "정의", "원칙"
- intent: 법령_일반
keywords:
- 개인정보보호법
- 개인정보 보호법
- 보호법
- 개인정보가
- 개인정보란
- 정보주체
- 개인정보처리자
- 가명정보
- 민감정보가
- 정의
- 원칙
- 개념
- 의미
- 뭐야
- 뭐예요
- 무엇
- 알려줘
- 설명
- 무엇인가요
jo_hints: ["1", "2", "3"]
sources: [law] # 정의 질문엔 본법 조문만 — 노이즈 방지
# 관련 법령 — 사용자가 "다른 법", "함께 적용" 등을 묻거나
# 정통망법·신용정보법·의료법 같은 특정 관련 법령을 언급하면 매칭.
# (실제 법령명별 keywords는 data/related_laws.yaml 의 각 item에 있음 — 라우터가 거기서 자동 매칭)
- intent: 관련_법령
keywords:
- 관련
- 관련된
- 다른
- 함께 적용
- 참조
- 어떤
- 적용되는
jo_hints: []
sources: [related_law]
# 개정 이력 — "개정 내용", "바뀐 점", "신·구법 비교" 같이 *언제·어떻게 바뀌었는지*
# 묻는 질문. 매칭되면 신구법비교(oldnew) 소스가 union 으로 활성화 — 어느 chain
# 에서든 본법 신구법 본문이 추가로 붙는다.
- intent: 개정_이력
keywords:
- 개정
- 바뀐
- 바뀌었
- 변경된
- 신구법
- 신·구
- 신구
- 개정안
- 개정 이력
- 개정사항
- 어떻게
jo_hints: []
# oldnew=법령 단위 신구비교, article_history=조문 단위 시점별 변경 이력.
# 둘은 *세분화 수준이 다른 보완 관계* — 함께 활성화. article_history 는
# plan.jo_targets 가 명시될 때만 fetch (구현 측에서 gating).
sources: [oldnew, law, article_history]