AX Case 12 · 포렌식·컴플라이언스팀 · Forensic LoS 첫 사례
부정 징후 전수 스크리닝 — (주)한벽물산 이상 패턴 룰셋 사례
본 사례는 완전 가상·교육 목적입니다 — 실존 기업·인물과 무관하며, 부정 수법의 실행 절차는 다루지 않습니다. 실무자 한 명(부정 징후 전수 스크리닝 설계 리드)의 업무 하나 — 가상 지출·전표 데이터의 이상 패턴 룰셋 6종 전수 적용, 위험 스코어 산출, 이상 후보 목록 집계 — 를 AI로 실험한 기록입니다. 포렌식·컴플라이언스팀의 첫 공개 사례이자, 정형 데이터 패턴의 새 유형(통계·행위 이상탐지)입니다. 핵심 콘텐츠는 성공이 아니라 두 가지 정직한 기록 — AI가 반복해서 틀리고 인간이 기준을 정하며 고친 잡음 보정 과정과, 승인관계(공모)라는 새로운 rule-blind 사각지대입니다.
0건
전표 전수(직원 120·거래처 382)
0건
위험 스코어 플래그
0종
이상 패턴 룰셋 전량 회수
0건
공모 미탐(rule-blind)
1 · Task
업무 정의 — 판단은 인간, 실행은 AI
`docs/firm-map/slots/forensic.md` for-task-01 카드의 분담을 그대로 따릅니다. 포렌식 업무 대부분(인터뷰·법적 대응)은 대면·책임 구조상 AI 대체 여지가 좁지만, 부정조사의 초입 단계인 전수 스크리닝만은 예외입니다.
인간이 할 것
- 이상 패턴 룰셋·임계값 확정(매니저 for-manager-1)
- 이상 후보의 부정 의도 최종 판단·정밀조사 대상 선정
- 관계자 인터뷰·법적 대응 수행(대면, AI 대체 불가)
- 부정조사보고서 최종 승인(파트너 for-partner-1)
AI가 할 것
- 가상 지출·전표 데이터 전수 스크리닝(룰 6종 적용)
- 룰 매칭 수 기반 위험 스코어 산출
- 이상 후보 목록 자동 집계 + 부서/거래처/직원 단위 집계
- 룰셋 구조적 한계 자체 기록(미탐 위험 고지)
전환 지점
- 인간: 이상 패턴 룰셋·임계값 확정 → AI: 지출·전표 전수 스크리닝·위험 스코어 산출·이상 후보 목록 집계
- AI: 스크리닝 결과·스코어 제시 → 인간: 부정 의도 판단·정밀조사 대상 선정·인터뷰·법적 대응(AI는 판정 불가, 징후 탐지까지)
2 · Input
입력 — 완전 가상 시나리오
본 시나리오는 완전 가상입니다 — 실존 기업·인물과 무관합니다(등장 법인·거래처명 전부 합성). 가상 비상장 중견 유통·서비스업체 (주)한벽물산의 FY2025(2025-01-01~12-31) 지출·전표 데이터를 대상으로, 부정조사 초입 단계의 이상 패턴 전수 스크리닝을 의뢰받았습니다.
모집단 명세
- 소스: `scripts/generate_expenses.py`(seed 고정 20260712e, 표준 라이브러리만 사용)로 생성.
- 직원 120명(부서 8개, 부서별 승인자 1명 포함), 거래처 382곳.
- 전표 9,649건(정상 모집단 9,400건 + 심은 이상 시나리오 249건).
- 정상 모집단은 로그균등분포 금액(벤포드 법칙에 자연 수렴)·평일 업무시간대 처리로 설계해, 룰 6종의 "정상 대비 이상"이라는 전제가 성립하도록 했습니다.
이상 패턴 룰셋 6종
`scripts/screen_fraud.py` 구현과 1:1 대응. 위험 스코어는 룰별 기본 가중치(R2·R4·R5=3, R3·R6=2) 합산 + 2개 이상 룰 동시 매칭 시 중첩 가중(+2)으로 산출합니다. R1(벤포드)은 부서 단위 통계 지표라 개별 건 스코어에 직접 반영하지 않습니다.
| 룰 | 이름 | 판정 단위 | 탐지 결과 |
|---|---|---|---|
| R1 | 벤포드 편차 | 부서(8개 중) | 1개 부서(구매팀, MAD 3.61) |
| R2 | 중복 지급 | 건 쌍 | 2쌍(4건) |
| R3 | 라운드넘버 클러스터 | 거래처 | 2건(설계 1건 + 잡음 병합 1건) |
| R4 | 승인한도 직하 분할 | 거래처·직원 그룹 | 5그룹(설계 2건 + 잔존 잡음 3건) |
| R5 | 휴면 거래처 재활성 | 건 | 2건 |
| R6 | 주말·심야 처리 집중 | 직원 | 1명(6건) |
R1(벤포드)은 건 단위 부정 판정이 아닙니다. 벤포드 법칙은 모집단 통계 지표이며, 구매팀이 임계값(MAD 3.0%p)을 넘은 것은 "구매팀 지출 전체를 정밀조사 우선순위로 올릴 근거"일 뿐, 특정 전표가 부정이라는 의미가 아닙니다 — 이 정직성은 산출물 전체에서 일관되게 명시합니다.
3 · AI Execution
AI 실행 — 룰 6종 전수 스크리닝 + 중첩 가중 스코어
AI는 전표 9,649건 전수를 6종 룰에 각각 통과시켜 35건을 플래그했습니다. 2개 이상 룰에 동시 매칭된 건은 중첩 가중(+2)으로 우선순위를 높였고, 부서(R1)·거래처(R3)·직원(R6) 단위 집계는 개별 건 판정과 분리해 별도 표기했습니다.
3.1 위험 스코어 상위 목록(35건 중 상위 5건)
| 순위 | 전표 | 부서 | 거래처 | 금액(원) | 매칭 룰 | 스코어 |
|---|---|---|---|---|---|---|
| 1 | TX009621 | 총무팀 | 거래처0050 | 2,450,000 | R2_DUP, R4_SPLIT | 8 |
| 2 | TX009622 | 총무팀 | 거래처0050 | 2,450,000 | R2_DUP, R4_SPLIT | 8 |
| 3 | TX009633 | 연구개발팀 | 거래처0300 | 2,800,000 | R3_ROUND, R4_SPLIT | 7 |
| 4 | TX009634 | 연구개발팀 | 거래처0300 | 2,900,000 | R3_ROUND, R4_SPLIT | 7 |
| 5 | TX009635 | 연구개발팀 | 거래처0300 | 2,700,000 | R3_ROUND, R4_SPLIT | 7 |
상위 5건은 2개 룰 동시 매칭으로 중첩 가중이 적용된 최상위 우선순위 그룹입니다. R5(휴면 거래처)·R6(주말·심야)는 개별 스코어가 낮아도(3~2점) 룰 성격상(고액 재개·근태 이상) 전건 우선 검토 대상입니다. 전체 상세는 `docs/cases/2026-07-12-forensic-screening/screening-memo.md` (레포 내부)에서 발췌.
실험 중 자가 교정 — "AI는 반복 가능하게 틀리고, 고치는 기준은 인간이 정한다"
최초 구현에서 세 가지 신호 문제가 순차로 드러났습니다. 정직하게 기록합니다.
- 벤포드(R1) 신호 부족. 개별 전표 34건 주입으로는 부서 통계의 정상 표본변동(MAD 1.5~2.8%p)에 묻혀 미탐지됐습니다. 정상 모집단 생성 로직 자체가 균등분포라 벤포드 법칙에서 자연히 벗어나 있었다는 점도 원인이었습니다. 정상 모집단을 로그균등분포로 교체하고 주입량을 부서 거래의 약 15.7%(220건)까지 늘린 뒤에야 구매팀 MAD가 3.61로 명확히 분리됐습니다 — 벤포드 판정은 부서 지출 상당 비중이 왜곡돼야 통계적으로 유의미해진다는 방법론적 한계 자체를 실증한 결과입니다.
- 주말·심야(R6) 잡음 다발(최초 110개 직원 그룹 오탐). 정상 거래일을 요일 제한 없이 무작위로 뽑았더니 9,400건 중 약 2/7이 우연히 주말에 걸려 거의 모든 직원이 우연한 주말 거래 4건 이상을 보유하게 됐습니다. 거래일 생성을 평일만 뽑도록(요일 재추첨) 수정한 뒤 잡음 110개 그룹이 설계된 1개로 수렴했습니다.
- 승인한도 분할(R4) 잡음 다발(최초 13개 그룹). "개별 금액이 한도 미만"이라는 조건만으로는 근접일에 우연히 겹치는 소액 정상 지출까지 다수 플래그됐습니다 (설계 2건 대비 6.5배). "개별 금액이 한도의 50~100% 구간"으로 조건을 좁혀 "한도 직하"라는 원래 취지에 맞게 재구현한 뒤 5개 그룹(설계 2건 + 잔존 잡음 3건)으로 축소됐습니다.
보정 후에도 R3·R4에는 정상 population과의 우연한 근접·중첩으로 인한 잡음이 소량 남습니다(마케팅팀 거래처0104, 영업팀 거래처0322 등). 이 잡음을 0으로 완전 제거하지 않고 "정밀조사 우선순위에서 제외 검토 대상"으로 그대로 노출한 것은 실무 스크리닝의 상시 오탐 여지를 숨기지 않기 위해서입니다 — 임계값·모집단 튜닝 판단이 human_side라는 것을 이 보정 과정 자체가 증언합니다.
4 · Rule-blind Disclosure
미탐 — 공모(교차 승인), 룰은 정의된 위험만 본다 다섯 번째 확인
룰 6종은 전부 단일 전표(또는 단일 거래처/부서/직원)의 속성 기반이며, 승인관계 네트워크를 검사하지 않습니다. 이 구조적 한계를 실증하기 위해 공모 시나리오 2건을 의도적으로 심었고, 결과는 설계대로 — 전수 스크리닝 결과물에 전혀 나타나지 않았습니다(grep -i "COLLUSION" flagged.csv → 결과 없음, grep -i "COLLUSION" expenses.csv → 원본에는 2행 존재).
교차 승인 2건 — 관계 구조가 사각지대
영업팀·마케팅팀 승인자 2명이 서로의 지출을 교차 승인한 건(접대비 218만원, 광고선전비 195만원)은 개별 금액·시기·거래처 어느 속성으로도 이상하지 않아 룰 6종 어디에도 걸리지 않았습니다. 승인 권한 자체는 정상적으로 분리돼 있어(SoD 위반 아님) 권한 매트릭스 검사로도 잡히지 않고, 두 승인자가 번갈아 서로를 승인하는 관계 패턴만 비정상입니다.
금액·시기·라운드넘버가 전부 정상적으로 보여도 승인 권한이 상호적으로 남용되는 패턴은 이 스크리닝으로 탐지되지 않습니다 — 신원/승인관계 교차 분석(그래프 기반)이 별도로 필요하다는 구조적 한계를 그대로 명시합니다.
이 미탐은 감점 사유가 아니라 경계 증거입니다.사례 3호(감사 JE 전수 테스트, 거래상대방 갭),사례 7호(SoD 스크리닝, 차명 사용),사례 10호(연결조정, 계정매핑 갭),사례 11호(조회 대사, 위조 위험)에 이은 다섯 번째 실증 — 검사 대상(전표 필드/신원 교차/계정 매핑/총액 매칭/승인 관계)은 매번 다르지만, "정의된 신호 밖은 못 본다"는 같은 패턴이 도메인을 바꿔가며 반복 재현되고 있습니다. 이번 사례는 특히 단일 개체가 아니라 관계 구조 자체가 사각지대라는 점에서 새로운 유형입니다.
룰셋 갱신 제안(승인 필요, 실험 범위 밖)
- 동일 두 승인자가 서로의 지출을 교대로 승인하는 패턴을 찾는 승인관계 네트워크(그래프 기반) 룰(R7 후보) 착수 검토.
- 승인자 간 업무상 밀접도(같은 프로젝트·거래처 공유 이력)를 조직도·업무 기록과 연계해 교차 승인 빈도 이상치를 별도 지표로 분리.
룰 확장 자체는 인간(시니어매니저 for-sm-1) 승인 후 다음 반복에서 수행 — 이번 실험은 단일 전표 속성 기반 룰 6종 검증까지가 범위입니다.
5 · Output
산출물 — "부정 판정"이 아니라 정밀조사 우선순위 후보 목록
AI 산출물은 모집단 요약 → 절차 → 룰별 탐지 결과 → 위험 스코어 상위 목록 → 부서/거래처/ 직원 단위 집계 → 미탐 위험 고지 순서의 조서 구조를 따릅니다. 이상 후보의 부정 의도 확정, 정밀조사 대상 선정, 인터뷰, 법적 대응, 조서 최종 승인은 전부 인간 검토 대기로 공란입니다 — 이 산출물의 이름을 "부정조사보고서"가 아니라 "스크리닝 조서(정밀조사 우선순위 후보 목록)"로 붙인 것 자체가 경계 표시입니다.
조서 승인 — 인간 검토 대기
| 단계 | 담당 | 상태 |
|---|---|---|
| 룰셋·임계값 확정 검토 | for-manager-1 | 인간 검토 대기 |
| 정밀조사 대상 선정·1차 판단 | for-sm-1 | 인간 검토 대기 |
| 최종 승인 | for-partner-1 | 인간 검토 대기 |
승인 체인·서명, 인터뷰, 법적 대응은 실제 절차를 시뮬레이션하지 않습니다 — 본 실험 범위 밖. 공모(교차 승인) 미탐 사실은 조서 §6(미탐 위험 고지)에 명시적으로 남깁니다.
6 · Verdict
판정 — AX 가능, 재현성+회수율 이중 게이트
이 사례는 지식엔진 소비가 없는 정형 데이터 업무입니다 — 생성 스크립트+seed 고정 독립 재실행이 게이트를 대체합니다(사례 3호·7호·10호와 동일 방식, Forensic LoS에서의 첫 적용).
| 게이트 검사 | 결과 |
|---|---|
| 재현성 — generate_expenses.py(seed 20260712e)+screen_fraud.py 독립 재실행 | 완전 일치 — 직원 120·거래처 382·전표 9,649건, flagged 35건, 구매팀 MAD 3.61(유일 플래그) |
| 심은 이상 회수 — 정답지 대조 | 룰 6종 전량 — R1 벤포드 1/1 부서, R2 중복 4/4, R3 라운드 1/1(+잡음 병합), R4 분할 2그룹 5건(+잔존 잡음), R5 휴면 2/2, R6 주말·심야 6/6 |
| rule-blind 검증 — 공모(교차 승인) 2건 | 0/2 미탐 재현(flagged grep 0 vs 원장 2) — 개별 룰이 승인관계 네트워크를 보지 않는 구조적 한계로 정직 기록 |
| 벤포드 사용 정직성 | 준수 — 모집단(부서) 단위 지표로만 사용, 건 단위 판정 미사용 명시 |
| 의사결정 대행 금지 | 준수 — 부정 판정·정밀조사 대상 선정·인터뷰·법적 대응 전부 human-review-points 이관 |
| issue-back 기록 | 해당 없음 — 엔진 실호출 0건(통계·패턴 매칭 업무) |
판정 근거
AI는 ai_side 계약("룰 6종 전수 스크리닝 + 위험 스코어 + 이상 후보 목록")을 완주했습니다 — 9,649건 전수가 결정적으로 재현되고, 룰 중첩 가중 스코어가 분할+중복 같은 복합 징후를 상위로 올리며, 심은 이상이 룰별로 전량 회수됩니다. 정형 패턴의 다섯 번째 성립이자 새 유형(통계·행위 이상탐지) — 잡음 보정 5건을 숨기지 않고 기록한 것이 이 사례의 콘텐츠 가치입니다. 룰 스크리닝의 실효는 룰 자체가 아니라 임계값·모집단 이해에 달려 있고, 그 튜닝 판단이 human_side라는 것을 보정 과정 자체가 증언합니다.
rule-blind 미탐(공모)은 다섯 번째 축적입니다 — 개별 전표·개별 승인은 전부 정상인데 승인관계의 패턴(교차 승인)만 비정상인 케이스는 건 단위 룰로 원리적으로 못 잡습니다. JE(거래상대방)·SoD(차명)·연결(계정매핑)·조회 대사(위조)에 이어, 이번엔 관계 구조가 사각지대임을 실증합니다. 네트워크 분석 확장 제안과 부정 의도 판단은 human_side로 이관했습니다.
잔여 한계 (기록)
- 룰 6종은 대표 징후군 — 실무 적용 시 업종·ERP별 임계값 캘리브레이션이 human_side.
- 벤포드 편차는 부정의 증거가 아니라 정밀조사 트리거(위양성 가능성 명시).
- 부정 판정·인터뷰·법적 대응은 AX 범위 외(사실관계 조사·인터뷰 업무 이후 영역).
정형 패턴이 5개 도메인(감사·내부통제·연결·비상장 감사·포렌식)을 관통했습니다 — "AI 전수 스크리닝 + 예외만 인간" 서사가 법인 전 LoS에서 재사용됨을 확인합니다. 잡음 보정의 투명 기록은 "AI가 한 번에 맞힌다"가 아니라 "AI는 반복 가능하게 틀리고, 고치는 기준은 인간이 정한다"는 어스회계법인 서사의 정직성 축을 강화합니다.
본 사례의 시나리오·기업·거래처·직원·거래 데이터·등장 법인명은 모두 합성이며 실존 기업· 인물과 무관합니다. 데이터는 `scripts/generate_expenses.py`(seed 고정)로 생성되어 재현 가능합니다. 본 페이지는 부정조사·법률 자문이 아니며, 실제 부정조사는 자격 있는 전문가의 판단과 법률 검토를 따라야 합니다.