Skip to content

ERP 공통 운영 준비도 — Backend handoff

책임 경계

  • 예산·전표·현금흐름 실적은 회계 도메인이 소유합니다.
  • 결재 문서와 결재선은 전자결재가 소유합니다.
  • 카드·세금계산서·현금영수증 원본은 증빙 수집 도메인이 소유합니다.
  • 구매요청·발주·입고는 구매·재고가 소유합니다.
  • 고객 딜·영업 계약 갱신은 CRM이 소유합니다.
  • Leyve 상품 계약·구독은 Company 구독 도메인이 소유합니다.

공통 운영 계층은 위 원본을 복제하지 않고 식별자와 상태 전이를 참조합니다.

Import session 계약

권장 API:

text
POST /companies/{companyId}/import-sessions
POST /import-sessions/{sessionId}/files
GET  /import-sessions/{sessionId}/preview
POST /import-sessions/{sessionId}/validate
POST /import-sessions/{sessionId}/commit
GET  /import-sessions/{sessionId}/errors

요구사항:

  • companyId, officeId, 템플릿 버전, 업로더를 서버에서 검증합니다.
  • external_id + record_type + company_id를 멱등 키로 사용합니다.
  • 검증과 확정을 분리하고 확정 요청에도 idempotency key를 요구합니다.
  • 오류 행은 원본 행 번호와 필드별 오류 코드를 반환합니다.
  • 5,000행 초과 파일은 분할 또는 비동기 작업으로 전환합니다.
  • 확정 전에는 업무 원본 테이블에 쓰지 않습니다.

Audit event 계약

최소 필드:

json
{
  "eventVersion": 1,
  "action": "expense.updated",
  "entityType": "expense",
  "entityId": "EXP-001",
  "actorId": "user-id",
  "companyId": "company-id",
  "officeId": "office-id-or-null",
  "reason": "계정과목 정정",
  "before": {},
  "after": {},
  "requestId": "request-id",
  "occurredAt": "2026-07-13T00:00:00.000Z"
}
  • 감사 이벤트는 append-only로 저장합니다.
  • 업무 트랜잭션 성공과 감사 이벤트 기록의 원자성을 보장하거나 outbox로 전달합니다.
  • 조회 권한은 Company와 허용 Office 교집합으로 제한합니다.
  • 민감 필드는 저장 전 분류하고 조회 시 마스킹합니다.
  • 감사로그 조회·다운로드·보존정책 변경도 감사 이벤트로 남깁니다.
  • 사용자 로컬 시각이 아니라 서버 UTC 시각을 사용합니다.

예산·지출 연결 상태

권장 상태는 draft → submitted → approved → evidence_matched → posting_candidate → posted입니다. 결재 승인과 회계 전기를 같은 상태로 합치지 않습니다. 취소·반려·전기취소는 원본 삭제 대신 역전이와 사유를 기록합니다.

제조 범위 제외

BOM·MRP·제조 SCM은 현행 구매·재고의 단순 확장이 아닙니다. 품목 버전, 공정, 생산오더, 소요량 전개, 재공품과 제조원가 계약이 없으므로 이번 API 범위에서 제외합니다.