Files
sam-docs/specs/erp-analysis/05-approval.md
hskwon a3a18b4b63 ERP 스토리보드 분석 문서 추가 (Gap Analysis 포함)
- 00-overview.md: 전체 개요
- 01-common.md: 공통 요소
- 02-auth.md: 인증/인가
- 03-gps-attendance.md: GPS 출퇴근
- 04-hr-management.md: 인사관리
- 05-approval.md: 전자결재
- 06-accounting.md: 회계/급여
- 07-master-data.md: 기준정보
- 08-reports.md: 리포트
- 99-gap-analysis.md: Gap 분석
2025-12-18 20:29:23 +09:00

8.2 KiB

전자결재 (슬라이드 47-59)

1. 개요

전자결재 모듈은 기안함, 결재함, 참조함으로 구성되며, 품의서, 지출결의서, 지출 예상 내역서 등의 문서를 처리합니다.

2. 기안함 (슬라이드 48-54)

2.1 문서 상태

상태 설명
임시저장 문서 작성 중, 임시저장된 상태
진행 모든 결재자 중 일부 승인된 상태, 결재 요청을 받은 상태
결재요청 결재 요청을 받은 상태
반려 결재자 중 반려한 사람이 있는 상태

2.2 기안함 현황 카드

항목 설명
진행 진행 중인 문서 수
전체 전체 문서 수
반려 반려된 문서 수
임시 저장 임시저장 문서 수

2.3 문서 작성 버튼

  • 클릭: 문서 작성 화면으로 이동

2.4 상세 버튼

  • 클릭: 문서 상세 팝업 표시

2.5 삭제 버튼

  • 클릭:
    1. 임시저장 상태일 경우: "정말 이(1)건을 삭제 처리하시겠습니까?" 확인 Alert 표시, 확인 시 해당 문서 삭제 처리
    2. 임시저장 상태가 아닐 경우: "임시저장 상태만 삭제가 가능합니다." 알림 Alert 표시

2.6 수정 버튼

  • 클릭:
    1. 임시저장 상태일 경우: 문서 작성 화면으로 이동
    2. 임시저장 상태가 아닐 경우: 문서 상세 팝업 표시

2.7 필터 셀렉트 박스

  • 종류: 전체, 임시저장, 진행, 완료, 반려
  • 디폴트: 전체

2.8 정렬 셀렉트 박스

  • 종류: 최신순, 등록순
  • 디폴트: 최신순

3. 문서 작성 (슬라이드 49-54)

3.1 상세 버튼

  • 클릭: 문서 상세 팝업 표시

3.2 문서 유형 셀렉트 박스, 검색

  • 종류: 품의서, 지출결의서, 지출 예상 내역서
  • 선택한 문서 유형의 화면으로 변경 표시

3.3 결재자 셀렉트 박스, 검색&다중 선택

  • 항목: 부서명, 직책명, 사원명 표시
  • 종류: 전체, 모든 사원 목록
  • 디폴트: 전체

3.4 참조자 셀렉트 박스, 검색&다중 선택

  • 항목: 부서명, 직책명, 사원명 표시
  • 종류: 전체, 모든 사원 목록
  • 디폴트: 전체

3.5 버튼 영역

버튼 설명
상세 문서 상세 팝업 표시
삭제 임시저장 상태만 삭제 가능
삼신 결재선 마감 경우 숨김
임시저장 임시저장 처리

4. 품의서 (슬라이드 50)

4.1 구매처 정보

필드명 필수 설명
구매처 Y
구매처 결제일 Y

4.2 품의서 정보

필드명 필수 설명
제목 Y
품의 내역 Y 녹음 버튼: 마이크 사용 가능할 경우에만 버튼 활성화, 녹음 중지 버튼으로 변경, 음성 내용을 텍스트로 변경하여 (1-1) 인풋박스 영역에 표시
품의 사유 Y
예상 비용 Y

4.3 참고 이미지 정보

  • 첨부파일 찾기

5. 지출결의서 (슬라이드 51-52)

5.1 지출 정보

필드명 필수 설명
지출 요청일 Y
결제일 Y

5.2 지출결의서 정보

필드명 필수 설명
적요 Y
금액 Y
비고 N

5.3 결제 정보

필드명 필수 설명
카드 Y 종류: 등록된 카드 목록, 디폴트: 첫번째 카드
총 비용 - 지출결의서 정보의 금액 합계 표시

5.4 참고 이미지 정보

  • 첨부파일 찾기

6. 지출 예상 내역서 (슬라이드 53-54)

6.1 지출 예상 내역서 목록

  • 체크 설정/해제 토글
    1. 지출 예상 내역서 화면에서 찾을 경우: 설정된 체크 상태 유지
    1. 문서 작성 화면에서 설정했을 경우: 모든 체크 항목 설정된 상태

6.2 항목

필드명 설명
예상 지급일
품목
지출금액
거래처
계좌

6.3 합계

항목 설명
지출 합계
계좌 잔액
최종 차액

7. 결재함 (슬라이드 55-58)

7.1 상태

상태 설명
진행 결재 하위 상태
예정 결재 순번에 의한 대기
결재요청 결재 요청을 받은 상태

7.2 결재함 현황 카드

항목 설명
결재 요청 결재 요청 문서 수
완료 완료 문서 수
반려 반려 문서 수
예정 예정 문서 수

7.3 승인 버튼

  • 클릭: "정말 (1)건을 승인하시겠습니까?" 확인 Alert 표시
  • 확인 버튼 클릭 시 "승인이 완료되었습니다." 알림 Alert 표시

7.4 반려 버튼

  • 클릭: "정말 (1)건을 반려하시겠습니까?" 확인 Alert 표시
  • 확인 버튼 클릭 시 "반려가 완료되었습니다." 알림 Alert 표시

7.5 필터 셀렉트 박스

  • 종류: 전체, 결재 요청, 예정, 완료, 반려
  • 1/3 완료: 결재선 승인 진행도에 따라 표시
  • 디폴트: 전체

7.6 수정 버튼

  • 클릭: 문서 상세 팝업 표시

8. 참조함 (슬라이드 59)

8.1 열람 버튼

  • 클릭: "정말 (1)건을 열람 처리하시겠습니까?" 확인 Alert 표시
  • 확인 버튼 클릭 시 "열람 처리가 완료되었습니다." 알림 Alert 표시

8.2 미열람 버튼

  • 클릭: "정말 (1)건을 미열람 처리하시겠습니까?" 확인 Alert 표시
  • 확인 버튼 클릭 시 "미열람 처리가 완료되었습니다." 알림 Alert 표시

8.3 필터 셀렉트 박스

  • 종류: 전체, 열람, 미열람
  • 디폴트: 전체

9. 문서 상세 팝업 (슬라이드 56-58)

9.1 버튼 영역

버튼 설명
복제 문서 작성 화면으로 이동 (새글)
수정 결재선 중에서는 누구나 수정 가능, 해당 문서 작성 화면으로 이동
반려 결재선 마감 경우 숨김
승인 결재선 마감 경우 숨김
인쇄
공유 (5-1) 팝업 표시
닫기

9.2 결재선 영역

  • 승인/반려 시 해당 아이콘 표시

9.3 공유 버튼

공유 방식 설명
PDF
이메일
카카오톡

데이터 모델

ApprovalDocument (결재 문서)

- id: bigint
- tenant_id: bigint (FK)
- document_number: string
- document_type: enum('request', 'expense', 'expense_estimate')
- title: string
- status: enum('draft', 'pending', 'in_progress', 'approved', 'rejected')
- drafter_id: bigint (FK) # 기안자
- content: json # 문서 내용
- attachments: json
- created_at: timestamp
- submitted_at: timestamp

ApprovalLine (결재선)

- id: bigint
- document_id: bigint (FK)
- approver_id: bigint (FK)
- order: int
- status: enum('pending', 'approved', 'rejected')
- comment: text
- approved_at: timestamp

ApprovalReference (참조자)

- id: bigint
- document_id: bigint (FK)
- referee_id: bigint (FK)
- is_read: boolean
- read_at: timestamp

ExpenseItem (지출 항목)

- id: bigint
- document_id: bigint (FK)
- description: string
- amount: decimal
- note: text

API 도출

기안함 API

GET    /api/approvals/drafts             # 기안 목록
POST   /api/approvals                    # 문서 작성
PUT    /api/approvals/{id}               # 문서 수정
DELETE /api/approvals/{id}               # 문서 삭제
POST   /api/approvals/{id}/submit        # 문서 제출 (결재 요청)
POST   /api/approvals/{id}/save-draft    # 임시저장
GET    /api/approvals/{id}               # 문서 상세
GET    /api/approvals/drafts/summary     # 기안함 현황

결재함 API

GET    /api/approvals/inbox              # 결재함 목록
POST   /api/approvals/{id}/approve       # 승인
POST   /api/approvals/{id}/reject        # 반려
GET    /api/approvals/inbox/summary      # 결재함 현황

참조함 API

GET    /api/approvals/references         # 참조함 목록
POST   /api/approvals/{id}/mark-read     # 열람 처리
POST   /api/approvals/{id}/mark-unread   # 미열람 처리

문서 공유 API

GET    /api/approvals/{id}/pdf           # PDF 다운로드
POST   /api/approvals/{id}/share/email   # 이메일 공유
POST   /api/approvals/{id}/share/kakao   # 카카오톡 공유