기획 2026-10-17 docs/planning/2026-10-17-2-MVP-범위와-일정.md GitHub에서 보기

MVP 범위와 일정

  • 작성일: 2026-10-17
  • 상태: 확정 (변경 시 Changelog 기록)

1. 목표

2026-10-23까지 3분 안에 시연할 수 있는 MVP를 만들고, GitHub 링크를 첨부해 지원서를 낸다(마감 10-25, 조기 마감 가능). 지원 후에도 면접 전까지 2단계를 계속 진행한다.

2. 핵심 시나리오 (MVP)

  1. 작성자(preparer)가 감사 대상(engagement)을 만든다. 입력값은 회사명, 회계연도, 결산일, 수행중요성 금액이다.
  2. 합성 총계정원장(GL) CSV를 업로드하거나, 내장 생성기로 만든다.
  3. 테스트를 실행하면 룰 기반 분개 테스트가 병렬로 돌고, 진행률이 화면에 실시간으로 보인다.
  4. 걸러진 전표마다 AI 에이전트가 위험도, 근거, 추가 감사절차를 제안한다. 제안만 하고 결론은 내리지 않는다.
  5. 작성자가 각 항목에 판단(이상 없음 / 추가 확인 필요 / 예외)과 코멘트를 남긴다.
  6. 검토자(reviewer)가 검토 후 승인하거나 반려한다. 작성자 본인은 승인할 수 없다(직무분리).
  7. 위의 모든 행위(사람, AI, 시스템)를 감사 로그에서 시간순으로 볼 수 있다.

3. 기능 범위

기능 MVP 2단계
로그인 (phx.gen.auth) O
engagement 생성, 멤버 역할(작성자/검토자) 지정 O
GL CSV 업로드 (검증, 대량 적재) O
합성 GL 생성기 (이상 전표 주입, 정답 라벨 포함) O
룰 기반 분개 테스트 (6~8개) O
실시간 진행률 (PubSub + LiveView) O
AI 트리아지 (Claude API, fake 구현 포함) O
작성자 판단, 검토자 승인/반려 (직무분리) O
append-only 감사 로그와 조회 화면 O
Presence (지금 누가 같은 화면을 보고 있는지) O
배포 (데모 URL) O
OpenTelemetry trace (HTTP -> Oban -> LLM) O
Terraform + Azure 배포 O
ClickHouse + 벤포드 법칙 분석 O
Ash Framework로 일부 영역 재구현 O
미계상부채 검토 등 두 번째 감사 절차 O

4. 범위 밖

  • 실제 고객 데이터, 외부 ERP 연동
  • 다중 통화 (MVP는 KRW만)
  • 이메일 발송 (로컬 메일박스로 대체)
  • 정교한 권한 체계 (engagement 단위 역할 2개만)

5. 분개 데이터 계약 (GL CSV 컬럼)

도메인 문서(룰 정의)와 설계 문서(스키마)가 동시에 참조하는 공통 계약이다. 컬럼을 추가하거나 바꾸려면 메인 세션의 승인을 받는다.

컬럼 타입 필수 설명
entry_number string O 전표번호. 같은 번호의 행들이 하나의 전표를 이룬다
line_number integer O 전표 내 행 번호 (1부터)
posting_date date O 전기일 (장부에 반영된 날)
document_date date O 증빙일 (거래가 실제 일어난 날)
entered_at datetime O 시스템 입력 일시 (KST, 시간대 판단용)
fiscal_year integer O 회계연도
fiscal_period integer O 회계기간 (1~12, 결산 조정은 13)
account_code string O 계정 코드
account_name string O 계정명
debit decimal O 차변 금액 (없으면 0)
credit decimal O 대변 금액 (없으면 0)
description string 적요
counterparty string 거래처
entered_by string O 입력자 사용자 ID
approved_by string 승인자 사용자 ID (자동 전표는 비어 있을 수 있음)
source string O manual(수기) 또는 system(자동)

검증 규칙:

  • 한 행은 차변과 대변 중 정확히 하나만 0보다 크다.
  • 같은 entry_number의 차변 합계와 대변 합계가 같아야 한다.
  • 금액은 KRW 원 단위 정수이고, 저장은 numeric(18,2)로 한다.
  • 같은 entry_number의 행들은 헤더 필드(posting_date, document_date, entered_at, fiscal_year, fiscal_period, entered_by, approved_by, source, counterparty)가 모두 같아야 한다. 어긋나면 적재를 거부한다.
  • posting_date의 연월과 fiscal_period가 어긋나면 경고만 남기고 적재한다. fiscal_period = 13은 예외다.
  • source = manual인데 approved_by가 비어 있어도 거부하지 않는다. 승인 통제 이탈 룰이 찾아야 할 대상이기 때문이다.
  • entered_at은 시간대 표기가 없는 KST 일시로 해석한다. 형식은 YYYY-MM-DD HH:MM:SS이고 오프셋(+09:00, Z)이 붙으면 거부한다.
  • 같은 entry_number의 행들은 파일 안에서 연속으로 나와야 한다. 떨어져 나오면 거부한다(스트리밍 적재에서 전표 단위로 검증하기 위해서다).
  • debit, credit의 소수부는 0이어야 한다(1000 또는 1000.00). 그 외는 거부한다.

6. 일정

날짜 작업 완료 기준
10/17 (금) 작업 원칙, 툴체인, Phoenix 스캐폴딩, 도메인/설계 문서 mix test 통과, 문서 3종
10/18 (토) 스키마와 마이그레이션, 인증, engagement, 합성 GL 생성기, CSV 적재 2만 행 적재 테스트 통과
10/19 (일) 룰 엔진과 Oban worker, 실시간 진행률 정답 라벨 대비 룰 적중 테스트 통과
10/20 (월) AI 트리아지 (behaviour, Claude 구현, fake) 키 없이 fake로 전체 흐름 동작
10/21 (화) 작성자 판단, 검토자 승인, 직무분리, 감사 로그 화면, Presence LiveView 테스트 통과
10/22 (수) 디자인 정리, 배포, 시드 데이터 데모 URL 접속 가능
10/23 (목) README, 데모 GIF, 지원서 제출 제출 완료
10/24 이후 2단계 (OpenTelemetry, Terraform+Azure, ClickHouse, Ash) 면접 전까지

7. 성공 기준

  • 2장의 시나리오를 3분 안에 끊김 없이 시연할 수 있다.
  • mix precommit(컴파일 경고 0, 포맷, 테스트)이 통과한다.
  • 외부에서 접속 가능한 데모 URL이 있다.
  • README에 아키텍처, Why Elixir, 학습 기록 링크가 있다.

8. 미결정 사항

  • MVP 배포처: 빠른 배포(Fly.io 등)를 먼저 하고 2단계에 Azure로 옮길지, 처음부터 Azure로 갈지 (10/22 전에 결정)

Changelog

  • 2026-10-17: 최초 작성
  • 2026-10-17: 5장 검증 규칙 4개 추가 (도메인 문서 요청 V1-V4 승인)
  • 2026-10-17: 5장 검증 규칙 3개 추가 (설계 문서 요청: 전표 행 연속, entered_at 형식, 원 단위 금액)