296 lines
8.2 KiB
Markdown
296 lines
8.2 KiB
Markdown
|
|
# 전자결재 (슬라이드 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) 지출 예상 내역서 화면에서 찾을 경우: 설정된 체크 상태 유지
|
||
|
|
- 2) 문서 작성 화면에서 설정했을 경우: 모든 체크 항목 설정된 상태
|
||
|
|
|
||
|
|
### 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 # 카카오톡 공유
|
||
|
|
```
|