AI 제작 가이드

개발 외주로 사내 견적 승인 시스템 만들기

할인율·금액별 승인자 지정, 수정본 재승인, 버전별 이력 보관을 중심으로 견적 승인 시스템 개발의 화면·API·DB 구현 범위와 검수 기준을 설명합니다.

핵심 요약

1. 할인율과 견적 금액에 따라 승인자를 정하고, 승인받은 견적 버전을 화면에서 확인하게 합니다. 2. Django, LangGraph, PostgreSQL을 화면·API·DB와 연결해 승인 절차를 구현합니다. 3. 승인 경로 계산, 수정본 재승인, 중복 처리 방지와 이력 조회는 자체 개발합니다.

견적을 고친 뒤에도 승인 완료 표시가 남으면, 담당자는 바뀐 금액까지 승인받았다고 오해할 수 있습니다. 개발 외주를 맡길 때는 승인 버튼뿐 아니라 수정 전후의 견적을 구분하는 기준까지 정해야 합니다. 아래는 B2B 견적 승인 시스템 개발을 위한 구현 범위와 검수 방법입니다.

할인율과 금액으로 승인 경로 계산하기

영업 담당자는 거래처, 품목, 수량, 단가와 할인율을 입력합니다. 승인 기준 금액에 부가세를 포함할지, 할인율은 품목별인지 견적 전체 기준인지 먼저 정합니다. 화면의 요청을 받는 API는 서버에서 금액을 다시 계산하고 승인 규정표와 대조하도록 만듭니다.

금액과 할인율 기준에 동시에 해당하면 필요한 승인자를 합치고, 같은 담당자는 한 번만 승인하도록 구현할 수 있습니다. ‘승인 요청’ 전에는 계산된 금액과 승인 순서를 보여줍니다. 검수할 때는 각 구간의 경계값과 소수점 처리 결과를 넣어 담당자가 예상한 승인자가 나오는지 확인합니다.

개발 외주 기능 구현 요약
자료: 트램스 · 개발 외주 기능 구현 요약

Django 권한 검사로 승인 버튼과 처리 연결하기

Django authentication은 사용자·그룹·권한을 다루는 인증 체계를 제공합니다. 여기에 영업 담당자, 팀장, 최종 승인자의 업무 범위를 연결하는 규칙을 별도로 만듭니다. 견적 상세 화면에는 로그인한 사용자가 처리할 수 있는 승인·반려 버튼을 표시합니다.

버튼을 숨기는 것만으로 처리를 제한하지 않고, 승인 요청을 받는 서버에서 해당 견적의 승인자인지 다시 검사합니다. 앞 단계의 승인이 끝났는지와 대결 권한의 적용 기간도 함께 확인하도록 만듭니다. 권한 없는 사용자가 직접 요청을 보내거나 자기 차례 전에 승인하면, 이력은 바뀌지 않고 처리할 수 없는 이유가 표시되어야 합니다.

견적 버전과 승인 이력을 함께 저장하기

견적과 승인을 저장하는 DB에는 견적 번호와 별도로 각 수정본을 식별하는 버전 번호를 둡니다. 승인 요청 시점의 품목, 금액, 할인율과 적용한 승인 경로를 한 묶음으로 보관합니다. 승인 이력은 견적 번호만 참조하지 않고 해당 버전과 승인자, 처리 시각, 의견을 함께 기록합니다.

개발 외주 업무 처리 순서
자료: 트램스 · 개발 외주 업무 처리 순서

승인 요청한 견적을 고치면 기존 내용을 덮어쓰지 않고 새 버전을 생성하게 만듭니다. 화면에는 현재 버전과 과거 승인 버전을 나란히 표시하고, 달라진 품목과 금액을 비교할 수 있게 합니다. 이전 버전의 승인은 그 버전에만 남기며, 새 견적에는 새 승인 요청이 필요하다는 안내를 보여줍니다.

LangGraph로 승인 대기와 재요청 이어가기

LangGraph의 interrupt는 실행을 멈추고 외부 입력을 받은 뒤 이어갈 수 있습니다. 이를 사용할 경우 견적 제출 뒤 승인 입력을 기다리는 흐름에 연결합니다. 어떤 할인율에서 누구를 기다릴지, 어떤 사용자의 응답을 받아들일지는 애플리케이션에서 직접 구현합니다.

수정본을 제출하면 이전 버전의 대기 요청을 더 이상 처리하지 못하게 하고, 새 버전으로 승인 경로를 다시 계산합니다. 예를 들어 팀장이 승인한 뒤 영업 담당자가 할인율을 바꿨는데 최종 승인자가 예전 알림을 누르는 상황을 검수합니다. 이때 예전 요청은 진행되지 않아야 하며, 수정본에는 팀장 승인부터 다시 필요하다는 안내와 새 견적 링크가 보여야 합니다.

개발 외주 기술별 역할
자료: 트램스 · 개발 외주 기술별 역할

PostgreSQL로 승인 확정과 발송 기록 다루기

PostgreSQL은 여러 DB 변경을 모두 반영하거나 취소하는 트랜잭션을 제공하며, 외부 API까지 함께 취소하지는 않습니다. 승인 이력 추가와 해당 버전의 승인 완료 기록을 이 처리 단위로 묶어 저장합니다. 동시에 요청이 들어오면 한 견적의 승인과 수정을 순서대로 처리하고, 저장 직전에 버전을 다시 확인하도록 구현합니다.

승인 버튼을 연속으로 눌러도 같은 승인이 두 번 기록되지 않게 처리하고, 저장 도중 실패하면 두 기록이 함께 취소되는지 확인합니다. 이메일이나 외부 영업 시스템으로 보내는 작업은 승인 저장 후 별도로 수행하며 발송할 버전을 고정합니다. 전송에 실패하면 승인 결과는 유지하고 발송 실패를 표시하며, 재시도 전에 기존 전송 결과를 확인하는 절차를 둡니다.

품목·수량·단가·할인·부가세가 담긴 익명 견적서와 금액·할인율별 승인자·대결자를 적은 규정표를 준비해 주세요. 트램스에 두 자료를 바탕으로 견적 작성·재승인·발송 연동을 포함한 개발 외주 범위를 문의해 주세요. 트램스 AI 제작 문의 (https://trams.co.kr/ai-si/contact/#inquiry)

참고 자료

  1. https://trams.co.kr/ai-si/
  2. https://docs.langchain.com/oss/python/langgraph/interrupts
  3. https://docs.djangoproject.com/en/5.2/topics/auth/default/
  4. https://www.postgresql.org/docs/current/tutorial-transactions.html
TRAMS AI

비슷한 AI 서비스를
사업에 적용하고 싶으신가요?

아이디어와 필요한 기능을 알려주시면 제작 범위와 방법을 검토합니다.

프로젝트 문의