Files
sam-docs/dev/changes/20260128_document_management_phase1_5.md

59 lines
2.0 KiB
Markdown
Raw Permalink Normal View History

# 변경 내용 요약
**날짜:** 2026-01-28
**작업자:** Claude
**Phase:** 1.5 - Service 생성
## 📋 변경 개요
문서 관리 시스템의 DocumentService 클래스를 생성하여 문서 CRUD 및 결재 워크플로우 비즈니스 로직을 구현했습니다.
## 📁 수정된 파일
- `app/Services/DocumentService.php` (신규) - 문서 관리 서비스
## 🔧 상세 변경 사항
### 1. DocumentService 구현
**주요 기능:**
#### 문서 목록/상세
- `list(array $params)` - 페이징, 필터링, 검색 지원
- `show(int $id)` - 상세 조회 (템플릿, 결재선, 데이터, 첨부파일 포함)
#### 문서 생성/수정/삭제
- `create(array $data)` - 문서 생성 (결재선, 데이터, 첨부파일 포함)
- `update(int $id, array $data)` - 문서 수정 (반려 상태 → DRAFT 전환)
- `destroy(int $id)` - 문서 삭제 (DRAFT 상태만 가능)
#### 결재 처리
- `submit(int $id)` - 결재 요청 (DRAFT → PENDING)
- `approve(int $id, ?string $comment)` - 결재 승인
- `reject(int $id, string $comment)` - 결재 반려
- `cancel(int $id)` - 결재 취소/회수 (작성자만)
#### 헬퍼 메서드
- `generateDocumentNo()` - 문서번호 생성 (DOC-YYYYMMDD-NNNN)
- `createApprovals()` - 결재선 생성
- `saveDocumentData()` - 문서 데이터 저장 (EAV)
- `attachFiles()` - 첨부파일 연결
**구현 특징:**
- Service-First 아키텍처 준수
- Multi-tenancy 지원 (tenantId() 필터링)
- DB 트랜잭션 처리
- 순차 결재 로직 (이전 단계 완료 확인)
- i18n 에러 메시지 키 사용
## ✅ 테스트 체크리스트
- [x] PHP 문법 검사 통과
- [x] Service 클래스 로드 성공
- [x] Pint 포맷팅 완료
- [ ] API 통합 테스트 (Phase 1.6 이후)
## ⚠️ 배포 시 주의사항
특이사항 없음
## 🔗 관련 문서
- Phase 1.1: 마이그레이션 (`20260128_document_management_phase1_1.md`)
- Phase 1.2: 모델 생성 (별도 문서 없음, 커밋 참조)
- 계획 문서: `docs/dev_plans/document-management-system-plan.md`