Phase 5 · 실전 자동화 플랫폼 제작

상용화 가능한 AI 회계 업무자동화 SaaS 플랫폼

36단계까지 만든 엔진은 훌륭하지만 '나 혼자 쓰는 스크립트'에 불과합니다.
이번 단계에서는 수백 개의 회계사무소가 각자 로그인해 남의 데이터를 볼 수 없이 독립적으로 AI 업무 자동화를 사용할 수 있도록 만드는 B2B SaaS(Software as a Service) 아키텍처를 완성합니다.

예상 학습 시간 : 450분
난이도 : ★★★★★
사전 단계 : Workflow Engine (Step 36)
다음 단계 : 38단계 - 회계 데이터 수집 자동화 (OCR)
01

B2B 회계 SaaS 플랫폼의 탄생

SaaS란 사용자가 PC에 프로그램을 설치하는 대신 브라우저로 접속해 사용하는 서비스입니다.
단순한 파이썬 프로그램을 넘어 회원가입 ➡️ 구독료 결제 ➡️ 직원 초대 ➡️ AI 결산 실행으로 이어지는 실제 상용 서비스의 뼈대를 세우게 됩니다.

[ 인터넷 ] │ ┌─────────────┼─────────────┐ ▼ ▼ ▼ [김회계사무소] [이회계사무소] [박회계사무소] (Tenant A) (Tenant B) (Tenant C) │ │ │ └─────────────┼─────────────┘ ▼ [ AI 회계 자동화 플랫폼 서버 ]
02

가장 중요한 개념: 멀티테넌시(Multi-Tenancy)

하나의 데이터베이스 안에 수많은 회계사무소(Tenant)의 데이터가 공존합니다. 이때 A사무소의 데이터가 B사무소 화면에 노출되는 것은 회계 보안상 치명적인 대형 사고입니다.
이를 방지하기 위해 데이터베이스의 모든 테이블(거래처, 거래내역, 증빙, 워크플로우 등)에 반드시 office_id(소속 사무소 ID)를 추가해야 합니다.

SQL sql
CREATE TABLE transactions (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    office_id BIGINT NOT NULL,  -- ★ 필수: 이 데이터의 주인(Tenant)
    customer_id BIGINT NOT NULL,
    transaction_date DATE,
    amount DECIMAL(18,2)
);
03

데이터 유출을 막는 완벽한 SQL 작성법

사용자가 악의적으로 브라우저 주소창의 거래처 번호를 /customer/101로 조작했을 때 데이터가 조회되면 안 됩니다.

파라미터 조작 방어

위험한 코드: `SELECT * FROM customers WHERE id = 101` (남의 거래처도 보일 수 있음)
안전한 코드: `SELECT * FROM customers WHERE id = 101 AND office_id = 현재로그인된사무소ID`

즉, 파이썬(FastAPI) 백엔드에서 JWT 토큰이나 세션에 기록된 office_id를 추출해 모든 쿼리에 강제로 주입해야 합니다.

04

사용자 역할과 권한 (RBAC)

하나의 사무소 안에도 대표 회계사, 담당 과장, 수습 사원 등 권한이 다릅니다. Role-Based Access Control을 구현합니다.

Role (역할)조회AI 업무 지시결산 승인 (Approve)시스템 설정
ADMIN (대표)
ACCOUNTANT (회계사)제한적
STAFF (일반직원)✕ (불가)✕ (불가)
VIEWER (수습/조회용)✕ (불가)✕ (불가)✕ (불가)
05

FastAPI와 Worker 분리 아키텍처

사용자가 "결산 시작"을 누르고 10분 동안 모래시계만 쳐다보게 할 수는 없습니다.

Web Browser (Frontend) │ [1. 결산 지시 POST] │ ▼ FastAPI (API Server) ─── [2. Task DB 생성 및 큐 삽입] │ [3. 즉시 Task_id 반환] │ ▼ (브라우저는 팝업 "작업 시작됨") =================== (백그라운드) =================== Redis Queue │ ┌────────┴────────┐ ▼ ▼ Python Worker 1 Python Worker 2 (AI 오케스트레이션 및 Workflow 실행)
06

[명심] AI 프롬프트 데이터 최소화 원칙

회계 데이터에는 급여, 주민번호, 기밀 거래 등 민감한 개인정보가 넘쳐납니다. OpenAI나 Anthropic API를 호출할 때 데이터베이스 전체를 프롬프트에 쏟아붓는 것은 최악의 보안 위반입니다.

Data Minimization (데이터 최소화)

Python 백엔드가 데이터를 사전 필터링하고 익명화해야 합니다.
"매출 내역 전체"를 보내지 말고, "최고액 매출처 5건, 이상 징후 거래 3건의 금액과 날짜" 등 AI가 판단을 내리는 데 필요한 최소한의 가공 데이터만 전송하는 구조를 유지해야 합니다.

07

AI 토큰 과금(Billing) 시스템

SaaS 플랫폼이 돈을 벌려면 요금제가 있어야 합니다. 특히 AI API를 호출할 때마다 토큰 비용이 발생하므로 무제한 사용을 막아야 합니다.

if office_usage_this_month >= subscription_plan_limit:
    raise Exception("이번 달 AI 사용량을 초과했습니다. Pro 요금제로 업그레이드 하세요.")

모든 AI 호출 시 소모된 토큰(Input/Output)을 ai_usage DB에 낱낱이 기록하여 사무소별로 원가를 통제합니다.

08

38단계 예고: 실무 밀착형 "회계 데이터 수집과 OCR"

축하합니다! 37단계까지 여러분은 파이썬 기초부터 거대한 AI SaaS 시스템의 백엔드를 구축하는 대장정을 마쳤습니다.

다음 38단계부터는 가장 실무적인 영역(Document AI)으로 들어갑니다.
흩어져 있는 엑셀, PDF 영수증, 세금계산서를 파이썬과 OCR을 이용해 자동으로 읽어들이고, 데이터를 정제하여 회계 DB에 꽂아 넣는 데이터 수집 파이프라인 자동화를 집중적으로 다룹니다.

Step 36 : AI Workflow Engine Phase 6 공사중