Kailing Technology비용 관리 환급 시스템 › 전표 규칙 엔진은 어떻게 설계합니까

증빙 규칙 엔진 설계: 지출결의에서 증빙 전환은 단순한 매핑 테이블이 아닙니다

Kailing Technology · 2026-09-05

경비청구서는 '누가, 무슨 일로, 얼마를 썼는지'를 기록하고, 전표는 '차변·대변 계정, 금액, 보조 회계 차원'을 요구합니다. 중간의 그 번역 층은 하나의 표로 해결할 수 없습니다——동일한 비용 유형이라도 부서, 프로젝트, 세금계산서 종류에 따라 계정과목이 달라집니다。진정으로 필요한 것은 구성 가능하고 추적 가능하며 시산 가능한 규칙 엔진입니다.

엔진은 증빙에서 네 가지 유형의 정보를 추론해야 합니다

목표 도출결정 요인설명
차변 계정비용 유형 + 부서 / 프로젝트 등 차원비용의 귀속, 가장 핵심적이면서도 가장 복잡
대변 과목결제 방식'누가 먼저 돈을 선지급했는가'에 의해 결정됨
세액 분할계산서 종류 + 비용 유형 공제 가능성 + 세율비용 금액이 세금 포함인지 결정
보조 회계 차원전표 필드 직접 전달매핑은 필요 없지만, 완전성은 검증해야 함

네 가지 중 첫 번째 유형만 복잡한 규칙이 필요하지만, 바로 그것이 전체 솔루션의 성패를 좌우하는 부분입니다.

가장 흔히 범하는 설계 오류: 조건을 고정 열로 작성하는 것

많은 구현에서 매칭 조건을 규칙표의 고정 열로 설계합니다——한 열은 dept_id, 한 열은 project_id, 한 열은 invoice_type. 이렇게 하면 다음과 같은 결과가 발생합니다:매칭 차원을 하나 추가할 때마다 표 구조를 바꾸고, 코드를 바꾸고, 다시 배포해야 합니다

올바른 방법은 규칙과 조건을 두 개의 표로 나누고, 조건 행 수에 제한이 없으며, 서로 AND 관계입니다.

voucher_rule 매핑 규칙 메인 테이블 rule_type 규칙 유형: 차변 과목 / 대변 과목 / 세액 처리 target_subject 해당 시 사용하는 회계과목 코드 priority 우선순위, 숫자가 작을수록 우선 effective_from 효력 발생일 effective_to 효력 종료일(공백 = 장기 유효) enabled 사용 여부 remark 업무 의미 설명(재무 담당자 열람용) voucher_rule_cond 규칙 조건 테이블(하나의 규칙에 여러 조건 포함 가능, AND) rule_id 소속 규칙 field 필드명: expense_type / dept / project_type / pay_method ... operator 연산자: = / in / like / is_null value 조건 값

이렇게 설계하면 새로운 매칭 차원을 추가할 때 field의 열거형에 값만 추가하면 되고, 테이블 구조를 변경하거나 배포할 필요가 없습니다.

계정과목 마스터 데이터는 생략할 수 없습니다

계정과목은 규칙 테이블에 코드 문자열 하나만 저장해서는 안 되며, 독립적인 마스터 데이터 테이블이 있어야 합니다. 핵심은 required_dims 이 필드——이는 시스템이 증빙 생성 단계에서 차원 완전성 검증을 완료할 수 있게 하여, 총계정에 푸시된 후 거부되는 것을 기다리지 않도록 합니다.

subject 회계과목 마스터 데이터 code 과목 코드 name 과목 명칭 is_leaf 말단 과목 여부(말단 과목만 기장 허용) direction 잔액 방향: 차변 / 대변 required_dims 필수 보조 회계 차원, 예: ["dept", "project"] effective_from 사용 개시일

우선순위는 재무 담당자가 수동으로 입력하게 해서는 안 됩니다.

재무 담당자가 우선순위 숫자를 수작업으로 입력하게 하면 거의 반드시 오류가 발생합니다——그들은 모든 규칙의 정밀도를 머릿속에서 비교해야 합니다. 더 신뢰할 수 있는 방법은 시스템이 조건 수에 따라 자동으로 계산하는 것입니다:조건이 많을수록 규칙이 더 정확하고 우선순위가 높음

priority = 1000 - (조건 수 × 100) 규칙 A: 비용유형=출장비 AND 부서=영업부 → 2개 조건 → priority 800 규칙 B: 비용유형=출장비 → 1개 조건 → priority 900 규칙 C: (무조건, 기본) → 0개 조건 → priority 1000 영업부의 출장비가 A, B, C에 동시에 해당되면 priority 오름차순으로 A를 선택

자동 계산을 기반으로 수동 미세 조정 진입점을 유지하여 동일 조건 수이지만 선후를 구분해야 하는 특수 상황을 처리합니다.

반드시 예외 처리 규칙이 있어야 합니다

매칭 절차는 다음과 같습니다: 후보 규칙 선별(유형 매칭, 활성화됨, 전표 일자가 유효 기간 내 포함) → 각 조건이 모두 충족되는지 항목별 판단 → 여러 건에 해당하면 priority 오름차순으로 첫 번째 선택 → 해당 없으면 기본 규칙 적용.

예비 규칙은 생략할 수 없습니다. 이것이 없으면 고객이 비용 유형을 하나 추가할 때마다 증빙 생성이 실패하게 되는데, 이때는 이미 경비청구서가 승인되어 반려할 수 없어 업무가 바로 막힙니다. 예비 계정(예: 「미분류 비용」)을 두면 업무가 먼저 흘러가고 재무가 사후에 조정할 수 있습니다.

시산 기능 역시 생략할 수 없습니다

엔진은 반드시 시산 기능을 제공해야 합니다: 과거 경비 정산서 한 장을 입력하면 완전한 추론 체인을 출력합니다 — 어떤 규칙에 적중했는지, 왜 적중했는지, 최종적으로 어떤 계정이 생성되는지.

시산 출력 항목콘텐츠 예시
요약 입력비용 유형=출장비-숙박, 부서=영업부, 전표 종류=전용 계산서, 세율 6%
후보 규칙적중 3건: 규칙A(800) / 규칙B(900) / 기본(1000)
최종 채택규칙 A —— 조건 「비용유형=출장비」「부서=영업부」 모두 충족
도출 결과차변 660101 판매비용——출장비

이 기능이 없으면 규칙 설정 오류를 전표 생성 시 오류가 발생할 때까지 발견할 수 없어 문제 해결 비용이 매우 높고, 재무 담당자도 자체 검증을 할 수 없습니다.

과거 증빙은 규칙 변경의 영향을 받을 수 없습니다

반년 후 재무가 매핑 규칙을 조정해도 당신은 여전히 '이 과거 전표가 당시 왜 이 계정과목이었는지'를 설명할 수 있어야 한다. 이는 두 가지 메커니즘에 의존한다: 규칙표의 effective_from / effective_to 효력 기간, 그리고 증빙 분개에 hit_rule_id 규칙 스냅샷 기록

증빙 생성 시 '전표 일자'가 속한 기간에 따라 규칙 버전을 선택하며, 현재 시간에 따르지 않습니다.

이 시나리오는 Kailing Technology 비용통제 시스템에서 어떻게 처리합니까

규칙과 조건이 분리된 데이터 모델로, 매칭 차원을 추가해도 테이블 구조를 바꾸거나 버전을 배포하지 않습니다; 우선순위는 조건 수에 따라 자동 계산되고 수동 미세조정이 유지됩니다; 기본 규칙과 시산 도구를 내장하여 재무가 과거 전표를 직접 입력해 전체 추론 체인을 확인할 수 있습니다; 전표 분개는 적중 규칙 스냅샷을 기록하여 규칙 변경이 이미 생성된 과거 전표에 영향을 주지 않습니다.

Kailing Technology 비용 통제 및 경비 청구 시스템 알아보기 →

흔한 질문

경비 정산을 증빙으로 전환할 때 매핑 테이블 하나로는 안 되나요?

안 됩니다. 동일한 비용 유형이라도 부서, 프로젝트, 세금계산서 종류에 따라 계정과목이 달라질 수 있어, 일대일 매핑 테이블로는 다중 조건 매칭과 우선순위를 표현할 수 없습니다.

우선순위를 왜 재무 담당자가 입력하게 해서는 안 되나요?

재무는 모든 규칙의 정확도를 머릿속으로 비교해야 하며, 규칙이 많아지면 반드시 오류가 발생합니다. 조건 수에 따라 자동으로 계산하는 것이 더 신뢰할 수 있으며, 예외 처리를 위해 수동 미세 조정을 남겨두는 것이 좋습니다.

예비 규칙이 계정 과목을 잘못 기재하게 만들 수 있나요?

소량의 전표가 분류 대기 비용으로 들어가지만, 이는 전표 생성 실패나 승인된 지출결의서가 멈추는 것보다 훨씬 낫습니다. 재무는 사후에 일괄 조정할 수 있습니다.

규칙이 바뀌면 이전 전표도 바뀌나요?

아니요. 규칙표에는 유효 기간이 있고, 전표 분개에 당시 적중한 규칙 ID가 기록되며, 전표 일자에 따라 규칙 버전을 선택하여 과거 전표를 완전히 추적할 수 있습니다.