Files
sam-docs/features/ai-interviewer-knowledge-system.md
김보곤 14b5dcb3ef docs: [features] AI 인터뷰어 지식 기반 시스템 기획서
- SAM Knowledge Base(SKB) 3계층 설계: 시스템구조/도메인전문/매핑규칙
- 32개 SAM 모듈 × 5단계 비즈니스 플로우 학습 체계
- 6개 업종 프리셋 (블라인드/금속가공/기계조립/식품/건설/범용)
- 도메인 간 크로스체크 규칙 (BOM↔품목, 단가↔BOM, 공식↔치수 등)
- 의존성 기반 인터뷰 순서 자동 결정 (Phase A~E)
- 답변→SAM 테이블 실시간 매핑 + 누락 자동 감지
2026-03-22 22:57:55 +09:00

20 KiB

AI 인터뷰어 지식 기반 시스템 기획

작성일: 2026-03-22 상태: 기획 중 담당: R&D실


1. 개요

1.1 목적

현재 AI 인터뷰어는 질문 목록을 순서대로 물어보는 수준이다. 이를 SAM 시스템 전체를 학습한 AI 전문 컨설턴트로 진화시킨다. AI가 SAM의 견적, BOM, 단가, 생산, 품질, 재고, 인사, 회계 등 모든 모듈의 데이터 구조와 비즈니스 로직을 이해하고, 그 지식을 바탕으로 고객사 현장에서 빠짐없이 정보를 수집한다.

1.2 현재 vs 목표

[현재] 질문 리스트 기반
┌─────────────────┐     ┌──────────┐     ┌──────────┐
│ 225개 고정 질문   │ ──→ │ AI가 읽음 │ ──→ │ 순서대로  │
│ (12개 도메인)     │     │          │     │ 질문      │
└─────────────────┘     └──────────┘     └──────────┘
문제: AI가 SAM을 모름 → 답변의 적합성 판단 불가 → 후속 질문 품질 낮음

[목표] SAM 지식 기반
┌─────────────────┐     ┌──────────────────┐     ┌──────────────┐
│ SAM Knowledge    │     │ AI가 SAM 전문가   │     │ 맥락 기반     │
│ Base (SKB)       │ ──→ │ 로서 대화         │ ──→ │ 체계적 질문    │
│ 32개 도메인 학습  │     │                  │     │ + 실시간 검증  │
└─────────────────┘     └──────────────────┘     └──────────────┘
효과: AI가 SAM을 안다 → 답변 즉시 검증 → 누락/모순 감지 → 설정 자동 매핑

1.3 핵심 원칙

✅ AI는 SAM의 모든 테이블, 필드, 비즈니스 규칙을 학습한 상태로 인터뷰한다
✅ 고객 답변을 실시간으로 SAM 설정에 매핑하며, 매핑 불가 시 추가 질문한다
✅ 인터뷰 결과는 SAM 테넌트 설정으로 직접 변환 가능한 형태로 저장된다
✅ 업종별 사전 지식 프리셋을 제공하여 인터뷰 시간을 단축한다

2. SAM Knowledge Base (SKB) 설계

2.1 SKB 구조

AI에게 주입하는 지식을 3계층으로 구조화한다:

Layer 1: 시스템 구조 지식 (SAM이 뭘 할 수 있는가)
  ├── 32개 도메인별 테이블/필드/관계
  ├── 비즈니스 플로우 (견적→수주→생산→출하→정산)
  └── 멀티테넌트 구조 (tenant_id, 권한, 메뉴)

Layer 2: 도메인 전문 지식 (제조업이 어떻게 운영되는가)
  ├── 업종별 특성 (블라인드, 방화셔터, 금속가공, 식품 등)
  ├── 산업 표준 용어
  └── 일반적인 공정/단가/품질 패턴

Layer 3: 매핑 규칙 (답변을 SAM 설정으로 어떻게 변환하는가)
  ├── 답변 → SAM 테이블 매핑 규칙
  ├── 데이터 변환 공식
  └── 검증 규칙 (필수값, 범위, 참조 무결성)

2.2 Layer 1 — SAM 시스템 구조 지식

AI가 학습해야 할 SAM 모듈을 비즈니스 플로우 순서로 정리한다:

2.2.1 기초 설정 모듈

모듈 SAM 테이블 AI가 알아야 할 것 인터뷰 시 수집 대상
테넌트 tenants 회사 기본정보, 업종, 사업자번호 회사명, 업종, 사업장 수
부서 departments 계층 구조, 소속 인원 조직도, 부서별 역할
사용자/권한 users, roles, permissions 역할별 접근 범위 직급 체계, 메뉴 접근 권한
공통코드 common_codes, classifications 드롭다운 선택지 사용 중인 분류 코드
메뉴 menus 사용할 기능 범위 필요한 메뉴/기능 목록

2.2.2 품목/설계 모듈

모듈 SAM 테이블 AI가 알아야 할 것 인터뷰 시 수집 대상
품목분류 categories, category_fields 계층 구조, 동적 필드 제품군, 분류 기준
품목마스터 item_masters, item_fields 3계층 양식 (L1~L3) 품목 속성, 규격
설계모델 models, model_versions 버전 관리, 상태 흐름 제품 모델 코드 체계
BOM bom_templates, bom_template_items 완제품→부품 트리 BOM 구조, 수량 공식
단가 price_histories 시간축 단가 관리 단가표, 변경 주기

2.2.3 영업/견적 모듈

모듈 SAM 테이블 AI가 알아야 할 것 인터뷰 시 수집 대상
거래처 clients 고객/공급업체 구분 거래처 목록, 등급
견적 quotes, quote_items 견적 흐름, 개정 관리 견적 양식, 항목 구조
수주 orders, order_items 견적→수주 변환 수주 프로세스
계산공식 quote_formulas 치수→BOM→단가 자동계산 오픈사이즈→제작사이즈 공식

2.2.4 생산/품질 모듈

모듈 SAM 테이블 AI가 알아야 할 것 인터뷰 시 수집 대상
작업지시 work_orders 생산 계획 → 실적 공정 흐름, 작업반
생산실적 production_results 실적 보고, 불량 실적 보고 방식
입고/검사 material_receipts, material_inspections 자재 입고 → 검사 검사 기준, 불량 유형
LOT 관리 lots, lot_sales LOT 추적, 이력 LOT 체계, 추적 필요 범위
재고 stocks 안전재고, 실사 창고, 재고 관리 방식

2.2.5 회계/인사 모듈

모듈 SAM 테이블 AI가 알아야 할 것 인터뷰 시 수집 대상
매출/매입 sales, purchases 세금계산서 연동 매출/매입 처리 방식
입출금 deposits, withdrawals 은행 연동 결제 조건, 수금 관리
바로빌 barobill_members 전자세금계산서 바로빌 사용 여부
인사 HR 관련 테이블 근태, 급여, 휴가 근무 형태, 급여 체계
결재 approvals, approval_steps 전자결재 흐름 결재선, 위임 규칙

2.3 Layer 2 — 업종별 도메인 지식 프리셋

고객사 업종을 선택하면, AI가 해당 업종의 일반적인 패턴을 미리 알고 있는 상태에서 시작한다:

업종 프리셋 핵심 특성 인터뷰 초점
블라인드/스크린 치수 기반 견적, 방화인증, 설치유형 분기 공식 계산, 조건부 부품 선택
금속 가공 소재별 단가, 절단/절곡/용접 공정 공정 순서, LOSS율, 외주
기계 조립 다단계 BOM, 서브어셈블리 BOM 레벨, 리드타임, 조립 순서
식품 제조 유통기한, 로트 추적, HACCP LOT 관리, 검사 항목, 원산지
건설/시공 프로젝트 기반, 위치별 산출, 실행예산 공사 구분, 노무비, 간접경비
전자/반도체 부품 수급, PCB BOM, 검사 장비 대체품, 리비전, 검사 자동화
범용 제조 표준 MRP, 안전재고, 외주 관리 전체 균형 파악

2.4 Layer 3 — 답변→SAM 매핑 규칙

AI가 답변을 받으면 즉시 SAM 설정으로 매핑 가능한지 판단한다:

고객 답변: "제품은 방화스크린, 방화셔터, 일반 블라인드 3종류입니다"

AI 내부 매핑:
┌─────────────────────────────────────────────────────┐
│ 매핑 대상: categories 테이블                          │
│                                                     │
│  INSERT categories (name, type, parent_id)           │
│  ├── ('방화스크린', 'PRODUCT', null)                   │
│  ├── ('방화셔터', 'PRODUCT', null)                     │
│  └── ('일반 블라인드', 'PRODUCT', null)                 │
│                                                     │
│ 후속 질문 자동 생성:                                   │
│  → "방화스크린의 하위 모델이 있나요?"                    │
│  → "방화스크린은 KC 인증 제품인가요?"                    │
│  → "세 제품의 BOM 구조가 비슷한가요, 완전히 다른가요?"    │
│                                                     │
│ 누락 감지:                                            │
│  ⚠ category_fields 미정의 → 각 제품별 속성 질문 필요    │
│  ⚠ 분류 코드 체계 미수집 → 코드 명명 규칙 질문 필요      │
└─────────────────────────────────────────────────────┘

3. AI 인터뷰 프로세스 설계

3.1 전체 흐름

1단계: 사전 준비
  ├── 업종 프리셋 선택 (또는 자동 판별)
  ├── SKB Layer 1~3 시스템 프롬프트에 주입
  └── 기존 인터뷰 데이터 로드 (이전 세션 이어하기)

2단계: 기초 인터뷰 (1~2시간)
  ├── 회사 개요 파악 (업종, 규모, 주요 제품)
  ├── 현재 시스템 파악 (기존 ERP, 엑셀, 수작업 범위)
  ├── 핵심 Pain Point 파악 (가장 불편한 점)
  └── AI가 SAM 모듈 활성화 범위 자동 추천

3단계: 도메인별 심층 인터뷰 (도메인당 30분~1시간)
  ├── AI가 도메인 순서를 자동 결정 (의존성 기반)
  │   예: 품목분류 → BOM → 단가 → 견적 → 생산 순
  ├── 각 도메인에서:
  │   ├── SAM 테이블 기준으로 필요한 데이터 체크리스트 자동 생성
  │   ├── 답변 즉시 매핑 + 누락/모순 실시간 감지
  │   ├── 파일 수집 (엑셀 단가표, BOM, 견적서 등)
  │   └── 음성/사진 수집 (공정 설명, 현장 사진)
  └── 도메인 간 크로스체크 (BOM 부품이 품목마스터에 있는지 등)

4단계: 검증 및 확정
  ├── AI가 수집된 전체 데이터 정합성 검증
  ├── 누락 항목 리스트 생성 → 보충 인터뷰
  ├── 고객 확인 (수집 결과 리뷰)
  └── 최종 확정 → SAM 설정 자동 생성

3.2 AI 인터뷰 순서 (의존성 기반 자동 결정)

Phase A: 기초 (먼저 수집해야 나머지가 가능)
  ① 회사 개요 + 업종 특성
  ② 품목 분류 체계
  ③ 주요 제품 목록 + 코드 체계

Phase B: 설계/구조 (Phase A 완료 후)
  ④ BOM 구조 (← 품목 분류 필요)
  ⑤ 치수/변수 계산 (← 제품 목록 필요)
  ⑥ 부품 구성 상세 (← BOM 필요)

Phase C: 가격/수량 (Phase B 완료 후)
  ⑦ 단가 체계 (← 부품 목록 필요)
  ⑧ 수량 수식 (← BOM + 치수 필요)
  ⑨ 조건부 로직 (← 부품 + 단가 필요)

Phase D: 프로세스 (Phase A 이후 독립적)
  ⑩ 생산 공정 (← 제품/BOM 참조)
  ⑪ 품질 관리 (← 공정 참조)
  ⑫ 물류/재고 (← 품목 참조)

Phase E: 영업/관리 (언제든 가능)
  ⑬ 영업/고객
  ⑭ 견적서 양식 (← 단가+수량 완료 후 최적)
  ⑮ 회계/인사 (독립적)
  ⑯ 결재/문서 (독립적)

3.3 도메인 간 크로스체크 규칙

AI가 여러 도메인의 답변을 비교하여 모순/누락을 감지한다:

체크 규칙 비교 대상 감지 예시
BOM 부품 ⊂ 품목마스터 bom_structure ↔ product_classification "BOM에 '연기차단재'가 있는데 품목 분류에 없음"
단가 품목 = BOM 품목 pricing_structure ↔ bom_structure "단가표에 '모터 500K'가 있는데 BOM에서 미사용"
공식 변수 = 치수 변수 quantity_formula ↔ dimension_formula "수량 공식에 'H2'를 쓰는데 치수에서 미정의"
공정 부품 ⊂ BOM 부품 production_process ↔ bom_structure "조립 공정에서 '브라켓'을 쓰는데 BOM에 없음"
검사 항목 ⊂ 품목 quality_control ↔ product_classification "수입검사 대상에 없는 자재 발견"
견적 항목 = 단가 항목 quote_format ↔ pricing_structure "견적서 '운반비'에 대한 단가 기준 미수집"

4. SAM Knowledge Base 파일 구조

4.1 프롬프트 관리 체계

SKB를 코드로 관리하여 시스템 프롬프트에 동적으로 주입한다:

mng/config/
  interview_knowledge/
    system_prompt_base.md        ← AI 역할 정의 + SAM 개요
    modules/
      01_tenant_setup.md         ← 테넌트/부서/권한 지식
      02_item_classification.md  ← 품목분류 + 카테고리 지식
      03_bom_design.md           ← 설계/BOM/모델 지식
      04_pricing.md              ← 단가/원가 지식
      05_quotation.md            ← 견적/수주 지식
      06_production.md           ← 생산/공정 지식
      07_quality.md              ← 품질/검사 지식
      08_inventory.md            ← 재고/물류 지식
      09_finance.md              ← 매출/매입/회계 지식
      10_hr.md                   ← 인사/급여 지식
      11_approval.md             ← 결재/문서 지식
      12_barobill.md             ← 바로빌/세금계산서 지식
    presets/
      blinds.md                  ← 블라인드/스크린 업종
      metal_fabrication.md       ← 금속가공 업종
      machine_assembly.md        ← 기계조립 업종
      food_manufacturing.md      ← 식품 제조 업종
      construction.md            ← 건설/시공 업종
      general_manufacturing.md   ← 범용 제조업
    mapping_rules/
      answer_to_table.md         ← 답변→테이블 매핑 규칙
      validation_rules.md        ← 검증 규칙
      cross_check_rules.md       ← 도메인 간 크로스체크

4.2 프롬프트 주입 전략

전체 SKB를 한번에 넣으면 토큰 낭비이므로, 현재 도메인에 필요한 지식만 선별 주입한다:

인터뷰 시작
  ↓
system_prompt_base.md (항상)
  + 업종 프리셋 (해당 시)
  + 현재 도메인 모듈 (예: 04_pricing.md)
  + 이전 도메인 수집 결과 요약 (크로스체크용)
  + 매핑 규칙 (answer_to_table.md 해당 부분)
  ↓
도메인 전환 시 → 프롬프트 교체

4.3 모듈 지식 파일 구조 (예시: 04_pricing.md)

# SAM 단가 체계 지식

## SAM 테이블 구조
- price_histories: 품목별 시간축 단가 (effective_from, effective_to)
- pricing_rules: 계산 규칙 (면적기반, 중량기반, 수량기반)
- 관련: products, materials, categories

## 필수 수집 항목
□ 단가 관리 주체 (엑셀/ERP/구두)
□ 단가 변경 주기
□ 단가 구성요소 (재료비, 가공비, 관리비, 이윤)
□ 고객별/거래처별 차등 여부
□ LOSS율 적용 방식
□ 마진율 설정 방식
□ 환율 적용 품목 여부
□ 할인 정책

## 매핑 규칙
- "단가 변경 주기: 분기" → tenants.options.pricing_update_cycle = "quarterly"
- "면적 기반 단가 45,000원/㎡" → price_histories (unit=㎡, price=45000)
- "LOSS율 5%" → bom_template_items.waste_rate = 5.0

## 검증 규칙
- 단가가 0원인 품목이 BOM에 존재하면 경고
- 단가 변경 주기 미수집 시 → 반드시 재질문
- 마진율 + LOSS율 합계가 30% 초과 시 → 확인 질문

## 업종별 차이
- 블라인드: 면적/길이 기반 단가가 주력
- 금속가공: 중량 기반 + 가공비 별도
- 식품: 원재료 시세 연동, 환율 영향

5. 구현 계획

5.1 파일 구조

파일 역할
config/interview_knowledge/*.md SKB 지식 파일 (12개 모듈 + 프리셋 + 매핑)
AiInterviewService.php 기존 서비스에 SKB 로딩 + 크로스체크 추가
InterviewKnowledgeLoader.php 도메인별 프롬프트 조립 서비스
InterviewCrossChecker.php 도메인 간 정합성 검증 서비스
InterviewQuestionMasterSeeder.php SAM 테이블 기반 질문 자동 생성

5.2 구현 단계

Step 1: SKB 지식 파일 작성 (12개 모듈)

SAM의 실제 테이블/필드/관계를 분석하여 각 모듈별 지식 파일을 작성한다. 각 파일에는:

  • SAM 테이블 구조 (실제 컬럼 기반)
  • 필수 수집 항목 체크리스트
  • 답변→테이블 매핑 규칙
  • 검증 규칙
  • 업종별 차이

Step 2: 업종 프리셋 작성 (6개)

업종별 일반 패턴, SAM 활성화 모듈 추천, 인터뷰 우선순위를 정의한다.

Step 3: InterviewKnowledgeLoader 구현

class InterviewKnowledgeLoader
{
    // 현재 도메인에 필요한 지식만 선별 로딩
    public function buildPrompt(string $domain, ?string $preset, array $previousResults): string

    // 이전 도메인 결과를 요약하여 크로스체크 컨텍스트 생성
    public function buildCrossCheckContext(int $projectId): string

    // 업종 프리셋 로딩
    public function loadPreset(string $presetCode): string
}

Step 4: InterviewCrossChecker 구현

class InterviewCrossChecker
{
    // 도메인 간 정합성 검증
    public function validate(int $projectId): array

    // BOM 부품이 품목마스터에 있는지 확인
    public function checkBomVsItems(array $bomData, array $itemData): array

    // 단가 품목이 BOM에 있는지 확인
    public function checkPricingVsBom(array $pricingData, array $bomData): array
}

Step 5: AiInterviewService 개선

기존 buildSystemPrompt()InterviewKnowledgeLoader로 교체:

// 변경 전
$systemPrompt = $this->buildSystemPrompt($domain, $category, $allQuestions);

// 변경 후
$loader = new InterviewKnowledgeLoader();
$systemPrompt = $loader->buildPrompt(
    domain: $domain,
    preset: $project->company_type,  // 업종 프리셋
    previousResults: $this->getPreviousDomainResults($projectId)
);

Step 6: 프로젝트 생성 시 업종 선택 UI 추가

프로젝트 생성 모달에 업종 프리셋 선택 드롭다운 추가.


6. 기대 효과

6.1 정량적

지표 현재 목표
인터뷰 1회 소요 시간 3~4시간 1.5~2시간
누락 항목 발견율 수동 검토 95% 자동 감지
SAM 설정 자동 매핑율 0% 70%
재방문 인터뷰 필요 횟수 2~3회 0~1회

6.2 정성적

  • 신입 컨설턴트도 AI 인터뷰어와 함께 현장 방문하면 베테랑 수준의 정보 수집 가능
  • 업종별 프리셋으로 고객이 "이런 것도 아시네요"라는 신뢰감 획득
  • 인터뷰 결과가 바로 SAM 설정으로 변환되므로 구축 기간 단축
  • 도메인 간 크로스체크로 "나중에 발견되는 빠진 정보" 방지

관련 문서


최종 업데이트: 2026-03-22