AX Case 03 · 상장기업감사팀
감사 저널엔트리(JE) 전수 테스트 — (주)대양정밀전자 사례
실무자 한 명(저널엔트리 테스트 설계·검토 리드)의 업무 하나 — 상장기업 감사의 부정위험 대응 필수절차(KSA 240)인 JE 전수 테스트 — 를 AI로 실험한 기록입니다. 사례 1·2호와 달리 지식엔진 소비 없이, 스크립트로 생성한 가상 분개장을 AI가 룰셋으로 전수 스크리닝했습니다.이번 사례의 핵심은 성공이 아니라 한계 — 룰셋이 놓친 2건을 어디서, 왜 놓쳤는지 그대로 공개합니다.
0건
모집단(가상 분개장)
0건
예외 후보
0/10 룰
심은 예외 회수
0건
미탐(rule-blind)
1 · Task
업무 정의 — 판단은 인간, 실행은 AI
`docs/firm-map/slots/audit-listed.md` audl-task-01 카드의 분담을 그대로 따릅니다.
인간이 할 것
- JE 테스트 룰셋·이상 패턴 정의 확정
- 예외 건 원인 조사·최종 판단(인차지 audl-senior-2)
- 추가 실증절차 필요 여부 결정
- 조서 승인(매니저 → 파트너 최종)
AI가 할 것
- 가상 분개장 전수 스크리닝(9종 룰 100% 적용)
- 예외 후보 추출·리스크 스코어링
- 감사조서 스타일 요약 초안 생성
- 룰셋 구조적 한계 자체 기록(미탐 위험 고지)
전환 지점
- 인간: 룰셋·이상 패턴 정의 확정 → AI: 전수 스크리닝·예외 후보 추출·리스크 스코어링
- AI: 예외 후보·스코어링 결과 제시 → 인간: 예외 건 판단·후속 절차 결정·조서 승인(파트너 최종)
2 · Input
입력 — 완전 가상 시나리오
본 시나리오는 완전 가상입니다 — 실존 기업·인물과 무관합니다.가상 코스닥 상장 제조사 (주)대양정밀전자(정밀부품 제조·공급, 12월 결산)의 2025 사업연도 재무제표를 대상으로, JE 테스트를 부정위험 대응 필수절차(KSA 240)에 따라 전수 수행했습니다.
모집단 명세
- 소스: `scripts/generate_ledger.py`(seed 고정 20260712, 표준 라이브러리만 사용)로 생성한 가상 분개장.
- 건수: 총 5,001건(정상 4,988건 + 심은 예외 13행/논리적 예외 12건).
- 기간: 2025-01-01 ~ 2026-02-15(결산일 2025-12-31 이후 결산조정 구간 포함).
- 계정과목 44개(자산 14 / 부채 9 / 자본 3 / 수익 3 / 비용 15), 입력자·승인자 8명.
- 정상 거래 20종 표준 템플릿 + 결산조정 전용 4종 템플릿으로 생성, 전표유형은 자동·수기 혼합.
JE 테스트 룰셋 9종
`scripts/screen_je.py` 구현과 1:1 대응. 리스크 스코어는 전표가 히트한 모든 룰의 가중치 합.
| 룰 | 정의 | 가중치 | 히트 |
|---|---|---|---|
| R1 · 주말·심야 전기 | 전표일자 토·일 또는 전기시각 06시 이전/22시 이후 | 2 | 1건 |
| R2 · 라운드넘버 대액 | 금액이 1천만원 단위로 떨어지고 5천만원 이상 | 2 | 8건 |
| R3 · 기말 직후 역분개 | 12/20 이후 전표와 동일금액·반대 계정조합이 15일 이내 재발생 | 3 | 2건 |
| R4 · 승인자=입력자 | 입력자 ID와 승인자 ID가 동일 | 2 | 1건 |
| R5 · 휴면계정 급사용 | 직전 180일 미사용 계정이 3천만원 이상 거래로 등장 | 3 | 1건 |
| R6 · 기말 매출 스파이크 | 매출 계정이 기말 직전 5영업일에 1억원 이상 대변 등장 | 3 | 1건 |
| R7 · 비정상 계정조합 | 차대변 조합이 정상 템플릿 화이트리스트 밖 | 2 | 5건 |
| R8 · 설명 없는 수기 대액 | 수기 전표·적요 공란·금액 2천만원 이상 | 1 | 1건 |
| R9 · 결산 후 조정 과다 | 결산조정 구간(2026-01-01~02-15) 전표가 5천만원 이상 | 2 | 6건 |
3 · AI Execution
AI 실행 — 전수 스크리닝
AI는 모집단 5,001건 전체(표본 추출 아님)에 9종 룰을 100% 적용했습니다. 금액 합계 58,127,261,000원 중 예외 후보는 15건(모집단의 0.30%), 총 1,619,511,000원으로 압축됐습니다. 예외 후보 중 11행(논리적 예외 10건)이 심은 예외이고, 나머지 4건은 결산조정 구간에서 우연히 임계값을 넘긴 정상 전표("진성 잡음")입니다.
3.1 예외 후보 상위 표(리스크 스코어순)
| 순위 | 전표번호 | 금액(원) | 히트 룰 | 스코어 | AI 제안 후속절차 |
|---|---|---|---|---|---|
| 1 | JE-EXC-04B | 80,000,000 | R2·R3·R7·R9 | 9 | 매출 취소 짝(04A) — 기말 매출 인식 적정성 재검토 대상 |
| 2 | JE-EXC-06 | 200,000,000 | R2·R5·R7 | 7 | 휴면 장기차입금 신규 사용 — 차입약정·이사회 승인 확인 |
| 3 | JE-EXC-05 | 60,000,000 | R2·R4·R7 | 6 | 입력자=승인자 — 직무분리 통제 예외 사유 확인 |
| 4 | JE-EXC-04A | 80,000,000 | R2·R3 | 5 | 상동(1위와 동일 거래 짝) |
| 5 | JE-EXC-07 | 350,000,000 | R2·R6 | 5 | 기말 직전 대액 매출 — 수익인식 시점 재검토 |
| 8~11 | JE-000488 외 3건 | 64.9M~85.5M | R9 | 2 | 결산조정 구간 단기차입금 조달 — 진성 잡음 추정(§3 참조) |
전체 15건은 `docs/cases/2026-07-12-audit-je-test/je-test-summary-draft.md`(레포 내부)에서 발췌. 위 표는 상위 7건과 진성 잡음 대표 예시입니다.
실험 중 자가 교정 — R5 오탐 가드
R5(휴면계정 급사용) 최초 구현은 모집단 시작일(2025-01-01) 기준 180일 이내 발생 전표에서 "이전 사용 이력 없음"이 구조적으로 항상 참이 되어, 무의미한 오탐 5건이 발생했습니다. AI가 이를 스스로 발견해 "모집단 시작 후 180일 이내는 판단 불가로 제외"하는 가드를 추가하고 재실행했습니다 — 실제 감사에서도 회계기간 초반 표본은 전기 데이터 확보 없이는 판단할 수 없다는 동일한 함정이 있습니다. 위 통계는 수정 반영 후 결과입니다.
4 · Rule-blind Disclosure
미탐 — AI는 룰이 정의한 위험만 본다
논리적 예외 12건 중 10건은 표준 룰셋에 걸리도록, 2건은 의도적으로 룰셋을 통과하도록설계해 심었습니다. 결과는 설계대로 — 예외 후보 15건 목록에 두 건 모두 나타나지 않았습니다 (`grep -i "EXC-11\|EXC-12" exceptions.csv` → 0건).
JE-EXC-11 · JE-EXC-12 — 특수관계자 분할 지급
이틀 연속(2025-09-16, 2025-09-17), 동일 거래상대방("가상특수관계법인A")에게 미지급금↔보통예금 전표로 각각 3,240만원·2,980만원(합산 6,220만원)이 지급됐습니다. 둘 다 정상 업무시간, 정상 계정조합(화이트리스트 포함), 비라운드 금액, 입력자≠승인자, 휴면계정 아님, 결산조정 구간 아님 — 9종 룰 중 어느 것도 히트하지 않는 조건을 정확히 충족합니다.
합쳐서 보면 결재 한도 회피형 분할 지급(구조화, structuring)의 전형적 신호이지만,거래상대방 필드와 연속 일자 패턴은 표준 룰셋의 스크리닝 항목이 아니어서 룰 엔진이 인식하지 못했습니다.
이 미탐은 감점 사유가 아니라 경계 증거입니다. "AI 전수 스크리닝은 룰이 정의된 위험만 본다 → 룰셋 설계·갱신과 예외 판단은 인간의 일"이라는 전제(판단은 인간, 실행은 AI)를 데이터로 실증합니다. 룰셋 갱신 제안은 `human-review-points.md`에 이관됐습니다.
룰셋 갱신 제안(승인 필요, 실험 범위 밖)
- 동일 거래상대방·짧은 기간(예: 3영업일 이내) 반복 지급 합산 감지 룰(R10 후보) 추가.
- 특수관계자 마스터 대사(거래상대방이 특수관계인 명부에 있는지 자동 플래깅) 룰 추가.
- 계정조합 화이트리스트를 이진 판단에서 계정별 상대빈도 기반 이상치 스코어링으로 고도화.
룰 개선 자체는 인간(매니저 audl-manager-2) 승인 후 다음 반복에서 수행 — 이번 실험은 룰셋 설계·초기 버전 검증까지가 범위입니다.
5 · Output
산출물 — 감사조서 스타일 요약 초안
AI 산출물은 모집단 요약 → 절차 → 결과 요약 → 예외 후보 목록·후속절차 제안 → 미탐 위험 고지 순서의 조서 구조를 따릅니다. 예외 건 최종 판단과 조서 승인 란은 전부 비어 있습니다.
조서 승인 — 인간 검토 대기
| 단계 | 담당 | 상태 |
|---|---|---|
| 1차 판단(예외 건 원인 조사) | audl-senior-2(인차지) | 인간 검토 대기 |
| 2차 검토 | audl-manager-2 | 인간 검토 대기 |
| 최종 승인 | audl-partner-1 | 인간 검토 대기 |
승인 체인·서명은 실제 서명을 시뮬레이션하지 않습니다 — 본 실험 범위 밖.
6 · Verdict
판정 — AX 가능, 재현성 게이트로 확인
사례 1·2호는 지식엔진 검색 결과의 재현 가능성이 게이트였다면, 이 사례는 지식엔진 소비가 없는 정형 데이터 업무입니다 — 대신 생성 스크립트+seed 고정 독립 재실행이 게이트를 대체합니다.
| 게이트 검사 | 결과 |
|---|---|
| 재현성 — generate_ledger.py(seed 20260712)+screen_je.py 독립 재실행 | 워커 보고와 완전 일치 — 모집단 5,001건, 예외 후보 15건(0.30%) |
| 심은 예외 회수 — exception-spec.md 정답지 대조 | 룰 캐치 대상 10/10 논리 예외(11/11행) 전부 회수, 9종 룰 모두 ≥1건 히트 |
| rule-blind 설계 검증 — EXC-11/12(특수관계자 분할 지급) | 설계대로 0/2 미탐(grep 0건) — 룰셋 한계로 정직 기록 |
| 의사결정 대행 금지 | 준수 — 요약 초안의 예외 건 최종 판단·조서 승인 란 "인간 검토 대기" 공란 |
| human_side 실증 | 충족 — 예외 15건별 판단 항목 + 승인 체인(인차지→매니저→파트너) + 룰셋 갱신 제안 |
| 실험 중 자가 교정 | R5 좌측절단 오탐 가드 추가 — 로그에 수정 이력 투명 기록 |
판정 근거
AI 측은 ai_side 계약("가상 분개장 전수 스크리닝 + 예외 후보 추출")을 완주했습니다 — 5,001건 전수를 룰 9종으로 스크리닝해 후보 15건(심은 예외 전량 + 진성 잡음 4건)을 리스크 스코어순으로 산출했고, 감사조서 스타일 요약 초안·건별 후속절차 제안까지 생성했습니다. 전 과정이 스크립트+seed로 결정적으로 재현되며, 오케스트레이터 독립 재실행 결과가 워커 보고와 완전히 일치했습니다.
rule-blind 미탐 2건은 판정 감점 사유가 아니라 경계 증거입니다 — 정상 시간대·정상 금액·정상 계정조합의 특수관계자 분할 지급은 어떤 룰에도 걸리지 않았습니다(거래상대방 필드 미검사, 룰셋의 구조적 한계). 이는 "AI 전수 스크리닝은 룰이 정의된 위험만 본다 → 룰셋 설계·갱신과 예외 판단은 인간의 일"이라는 human/AI 경계를 데이터로 실증합니다.
잔여 한계 (기록)
- 룰셋 커버리지는 정의된 9종에 한정 — 실무 적용 시 회사별 위험평가에 따른 룰 추가가 human_side.
- 가상 데이터는 단일 회사·단일 연도 — 업종·규모별 일반화는 사례 확장 시 재검증.
- 사례 1·2호(검색 재현)와 게이트 방식이 다름 — 정형 데이터 업무는 실행 재현성(스크립트+seed)이 대응 게이트.
본 사례의 시나리오·기업·분개장은 모두 합성이며 실존 기업·인물과 무관합니다. 분개장은 `scripts/generate_ledger.py`(seed 고정)로 생성되어 재현 가능합니다. 본 페이지는 감사 자문이 아니며, 실제 감사 업무는 자격 있는 전문가의 판단을 따라야 합니다.