증빙 규칙 엔진 설계: 지출결의에서 증빙 전환은 단순한 매핑 테이블이 아닙니다
경비청구서는 '누가, 무슨 일로, 얼마를 썼는지'를 기록하고, 전표는 '차변·대변 계정, 금액, 보조 회계 차원'을 요구합니다. 중간의 그 번역 층은 하나의 표로 해결할 수 없습니다——동일한 비용 유형이라도 부서, 프로젝트, 세금계산서 종류에 따라 계정과목이 달라집니다。진정으로 필요한 것은 구성 가능하고 추적 가능하며 시산 가능한 규칙 엔진입니다.
엔진은 증빙에서 네 가지 유형의 정보를 추론해야 합니다
| 목표 도출 | 결정 요인 | 설명 |
|---|---|---|
| 차변 계정 | 비용 유형 + 부서 / 프로젝트 등 차원 | 비용의 귀속, 가장 핵심적이면서도 가장 복잡 |
| 대변 과목 | 결제 방식 | '누가 먼저 돈을 선지급했는가'에 의해 결정됨 |
| 세액 분할 | 계산서 종류 + 비용 유형 공제 가능성 + 세율 | 비용 금액이 세금 포함인지 결정 |
| 보조 회계 차원 | 전표 필드 직접 전달 | 매핑은 필요 없지만, 완전성은 검증해야 함 |
네 가지 중 첫 번째 유형만 복잡한 규칙이 필요하지만, 바로 그것이 전체 솔루션의 성패를 좌우하는 부분입니다.
가장 흔히 범하는 설계 오류: 조건을 고정 열로 작성하는 것
많은 구현에서 매칭 조건을 규칙표의 고정 열로 설계합니다——한 열은 dept_id, 한 열은 project_id, 한 열은 invoice_type. 이렇게 하면 다음과 같은 결과가 발생합니다:매칭 차원을 하나 추가할 때마다 표 구조를 바꾸고, 코드를 바꾸고, 다시 배포해야 합니다。
올바른 방법은 규칙과 조건을 두 개의 표로 나누고, 조건 행 수에 제한이 없으며, 서로 AND 관계입니다.
이렇게 설계하면 새로운 매칭 차원을 추가할 때 field의 열거형에 값만 추가하면 되고, 테이블 구조를 변경하거나 배포할 필요가 없습니다.
계정과목 마스터 데이터는 생략할 수 없습니다
계정과목은 규칙 테이블에 코드 문자열 하나만 저장해서는 안 되며, 독립적인 마스터 데이터 테이블이 있어야 합니다. 핵심은 required_dims 이 필드——이는 시스템이 증빙 생성 단계에서 차원 완전성 검증을 완료할 수 있게 하여, 총계정에 푸시된 후 거부되는 것을 기다리지 않도록 합니다.
우선순위는 재무 담당자가 수동으로 입력하게 해서는 안 됩니다.
재무 담당자가 우선순위 숫자를 수작업으로 입력하게 하면 거의 반드시 오류가 발생합니다——그들은 모든 규칙의 정밀도를 머릿속에서 비교해야 합니다. 더 신뢰할 수 있는 방법은 시스템이 조건 수에 따라 자동으로 계산하는 것입니다:조건이 많을수록 규칙이 더 정확하고 우선순위가 높음。
자동 계산을 기반으로 수동 미세 조정 진입점을 유지하여 동일 조건 수이지만 선후를 구분해야 하는 특수 상황을 처리합니다.
반드시 예외 처리 규칙이 있어야 합니다
매칭 절차는 다음과 같습니다: 후보 규칙 선별(유형 매칭, 활성화됨, 전표 일자가 유효 기간 내 포함) → 각 조건이 모두 충족되는지 항목별 판단 → 여러 건에 해당하면 priority 오름차순으로 첫 번째 선택 → 해당 없으면 기본 규칙 적용.
예비 규칙은 생략할 수 없습니다. 이것이 없으면 고객이 비용 유형을 하나 추가할 때마다 증빙 생성이 실패하게 되는데, 이때는 이미 경비청구서가 승인되어 반려할 수 없어 업무가 바로 막힙니다. 예비 계정(예: 「미분류 비용」)을 두면 업무가 먼저 흘러가고 재무가 사후에 조정할 수 있습니다.
시산 기능 역시 생략할 수 없습니다
엔진은 반드시 시산 기능을 제공해야 합니다: 과거 경비 정산서 한 장을 입력하면 완전한 추론 체인을 출력합니다 — 어떤 규칙에 적중했는지, 왜 적중했는지, 최종적으로 어떤 계정이 생성되는지.
| 시산 출력 항목 | 콘텐츠 예시 |
|---|---|
| 요약 입력 | 비용 유형=출장비-숙박, 부서=영업부, 전표 종류=전용 계산서, 세율 6% |
| 후보 규칙 | 적중 3건: 규칙A(800) / 규칙B(900) / 기본(1000) |
| 최종 채택 | 규칙 A —— 조건 「비용유형=출장비」「부서=영업부」 모두 충족 |
| 도출 결과 | 차변 660101 판매비용——출장비 |
이 기능이 없으면 규칙 설정 오류를 전표 생성 시 오류가 발생할 때까지 발견할 수 없어 문제 해결 비용이 매우 높고, 재무 담당자도 자체 검증을 할 수 없습니다.
과거 증빙은 규칙 변경의 영향을 받을 수 없습니다
반년 후 재무가 매핑 규칙을 조정해도 당신은 여전히 '이 과거 전표가 당시 왜 이 계정과목이었는지'를 설명할 수 있어야 한다. 이는 두 가지 메커니즘에 의존한다: 규칙표의 effective_from / effective_to 효력 기간, 그리고 증빙 분개에 hit_rule_id 규칙 스냅샷 기록。
증빙 생성 시 '전표 일자'가 속한 기간에 따라 규칙 버전을 선택하며, 현재 시간에 따르지 않습니다.
이 시나리오는 Kailing Technology 비용통제 시스템에서 어떻게 처리합니까
규칙과 조건이 분리된 데이터 모델로, 매칭 차원을 추가해도 테이블 구조를 바꾸거나 버전을 배포하지 않습니다; 우선순위는 조건 수에 따라 자동 계산되고 수동 미세조정이 유지됩니다; 기본 규칙과 시산 도구를 내장하여 재무가 과거 전표를 직접 입력해 전체 추론 체인을 확인할 수 있습니다; 전표 분개는 적중 규칙 스냅샷을 기록하여 규칙 변경이 이미 생성된 과거 전표에 영향을 주지 않습니다.
흔한 질문
안 됩니다. 동일한 비용 유형이라도 부서, 프로젝트, 세금계산서 종류에 따라 계정과목이 달라질 수 있어, 일대일 매핑 테이블로는 다중 조건 매칭과 우선순위를 표현할 수 없습니다.
재무는 모든 규칙의 정확도를 머릿속으로 비교해야 하며, 규칙이 많아지면 반드시 오류가 발생합니다. 조건 수에 따라 자동으로 계산하는 것이 더 신뢰할 수 있으며, 예외 처리를 위해 수동 미세 조정을 남겨두는 것이 좋습니다.
소량의 전표가 분류 대기 비용으로 들어가지만, 이는 전표 생성 실패나 승인된 지출결의서가 멈추는 것보다 훨씬 낫습니다. 재무는 사후에 일괄 조정할 수 있습니다.
아니요. 규칙표에는 유효 기간이 있고, 전표 분개에 당시 적중한 규칙 ID가 기록되며, 전표 일자에 따라 규칙 버전을 선택하여 과거 전표를 완전히 추적할 수 있습니다.
