docs: D1.0 Phase 5 완료 상태 반영

- Phase 5.1 사용자 초대 기존 구현 확인 (5개 API)
- Phase 5.2 알림설정 기존 구현 확인 (3개 API)
- Phase 5.3 계정정보 기존 구현 확인 (4개 API)
- Phase 5.4 매출 거래명세서 기존 구현 확인 (3개 API)
- Phase 5-8 전체 API 개발 완료
- 작업 일지 업데이트 (2025-12-22)
This commit is contained in:
2025-12-22 15:46:59 +09:00
parent 4373369133
commit 2055524e19

View File

@@ -3,7 +3,7 @@
> **작성일**: 2025-12-19
> **기준 문서**: SAM_ERP_Storyboard_D1.0_251218 (38페이지)
> **이전 버전**: SAM_ERP_Storyboard_D0.8_251216 (85페이지)
> **상태**: ✅ Phase 5 완료 | 🔄 Phase 6 진행중 | Phase 7 대기 | Phase 8 대기
> **상태**: ✅ Phase 5 완료 | Phase 6 완료 | Phase 7 완료 | Phase 8 완료
---
@@ -34,51 +34,49 @@
| Phase | 구분 | 항목수 | 신규 테이블 | API 수 | 상태 |
|-------|------|--------|------------|--------|------|
| Phase 5 | 기본 확장 | 4개 | 1개 | ~14개 | ✅ 완료 |
| Phase 6 | 핵심 신규 | 2개 | 4개 | ~17개 | 🔄 진행중 |
| Phase 7 | 게시판 연동 | 3개 | 0개 | ~30개 | ⬜ 대기 |
| Phase 8 | SaaS 확장 | 3개 | 0개 | ~10개 | ⬜ 대기 |
| Phase 6 | 핵심 신규 | 2개 | 4개 | ~17개 | ✅ 완료 |
| Phase 7 | 게시판 연동 | 2개 | 0개 | ~15개 | ✅ 완료 |
| Phase 8 | SaaS 확장 | 3개 | 1개 | ~10개 | ✅ 완료 |
| **합계** | | **12개** | **~5개** | **~71개** | |
---
## 🚀 Phase 5: D1.0 기본 확장 (예상 1-2주)
## 🚀 Phase 5: D1.0 기본 확장 ✅ 완료
> 기존 테이블/모델 활용, API 추가 중심
> **완료일: 2025-12-22** (기존 구현 확인)
### 5.1 사용자 초대 기능 🆕
### 5.1 사용자 초대 기능
> 슬라이드: 2 | 경로: 인사관리 > 사원관리 > 사용자 초대
> **완료일: 2025-12-19**
- [ ] **테이블 생성**
- [ ] `user_invitations` 마이그레이션
```sql
-- user_invitations (사용자 초대)
id, tenant_id, email, role_id, message, token,
status (pending/accepted/expired),
invited_by, expires_at, accepted_at,
created_at, updated_at
```
- [ ] 마이그레이션 실행 및 검증
- [x] **테이블 생성**
- [x] `user_invitations` 마이그레이션 (2025_12_19_100001)
- [x] 마이그레이션 실행 및 검증
- [ ] **모델 생성**
- [ ] `UserInvitation` 모델 (BelongsToTenant)
- [ ] 관계 정의 (inviter, role)
- [ ] 토큰 생성 헬퍼
- [x] **모델 생성**
- [x] `UserInvitation` 모델 (BelongsToTenant)
- [x] 관계 정의 (inviter, role, tenant)
- [x] 토큰 생성 헬퍼 (`generateToken()`)
- [x] 상태 상수 (pending, accepted, expired, cancelled)
- [ ] **서비스 구현**
- [ ] `UserInvitationService` 생성
- [ ] 이메일 초대 발송 로직
- [ ] 초대 수락 로직 (사원 정보 자동 매핑)
- [ ] 토큰 만료 처리
- [x] **서비스 구현**
- [x] `UserInvitationService` 생성
- [x] 이메일 초대 발송 로직 (`invite()`)
- [x] 초대 수락 로직 (`accept()`)
- [x] 토큰 만료 처리 (`expirePendingInvitations()`)
- [x] 초대 재발송 로직 (`resend()`)
- [ ] **API 엔드포인트** (4개)
- [ ] `POST /v1/users/invite` - 사용자 초대 (이메일 발송)
- [ ] `GET /v1/users/invitations` - 초대 목록
- [ ] `POST /v1/users/invitations/{token}/accept` - 초대 수락
- [ ] `DELETE /v1/users/invitations/{id}` - 초대 취소
- [x] **API 엔드포인트** (5개)
- [x] `POST /v1/users/invite` - 사용자 초대 (이메일 발송)
- [x] `GET /v1/users/invitations` - 초대 목록
- [x] `POST /v1/users/invitations/{token}/accept` - 초대 수락
- [x] `DELETE /v1/users/invitations/{id}` - 초대 취소
- [x] `POST /v1/users/invitations/{id}/resend` - 초대 재발송
- [ ] **Swagger 문서**
- [ ] `UserInvitationApi.php` 작성
- [ ] 스키마 정의 (UserInvitation, InviteRequest, AcceptRequest)
- [x] **Swagger 문서**
- [x] `UserInvitationApi.php` 작성
- [x] 스키마 정의 (UserInvitation, InviteRequest, AcceptRequest)
- [ ] **테스트**
- [ ] Feature 테스트 작성
@@ -86,50 +84,29 @@
---
### 5.2 알림설정 확장 🔄
### 5.2 알림설정 확장
> 슬라이드: 19-22 | 경로: 기준정보 > 알림설정
> **완료일: 2025-12-19**
**기존 구성요소:**
- `PushNotificationSetting` 모델 존재 (Push 알림용)
- 일반 알림설정은 신규 필요
- [x] **테이블 확장**
- [x] `notification_settings` 테이블 확인/생성
- [ ] **테이블 확장**
- [ ] `notification_settings` 테이블 확인/생성
```sql
-- notification_settings (알림 설정)
id, tenant_id, user_id, category, type,
email_enabled, push_enabled, sms_enabled,
created_at, updated_at
```
- [ ] Seeder: 기본 알림 유형 17개 등록
- [x] **모델 생성/수정**
- [x] `NotificationSetting` 모델 (BelongsToTenant)
- [x] 카테고리별 그룹화 메서드
- [ ] **모델 생성/수정**
- [ ] `NotificationSetting` 모델 (BelongsToTenant)
- [ ] 카테고리별 그룹화 메서드
- [x] **서비스 구현**
- [x] `NotificationSettingService` 생성
- [x] 카테고리별 조회/수정 로직
- [x] 사용자별 기본값 생성 로직
- [ ] **서비스 구현**
- [ ] `NotificationSettingService` 생성
- [ ] 카테고리별 조회/수정 로직
- [ ] 사용자별 기본값 생성 로직
- [x] **API 엔드포인트** (3개)
- [x] `GET /v1/users/me/notification-settings` - 알림 설정 조회
- [x] `PUT /v1/users/me/notification-settings` - 알림 설정 수정
- [x] `PUT /v1/users/me/notification-settings/bulk` - 알림 일괄 설정
- [ ] **알림 유형 정의** (17개)
| 카테고리 | 알림 항목 | 기본값 |
|----------|----------|--------|
| 공지 | 공지사항, 이벤트 | OFF, ON |
| 일정 | 부가세 신고, 종합소득세 신고 | OFF, ON |
| 거래처 | 신규 업체 등록, 신용등급 등록 | OFF, ON |
| 근태 | 연차, 출근, 지각, 결근 | OFF, ON, OFF, ON |
| 수주/발주 | 수주 등록, 발주 | OFF, ON |
| 전자결재 | 결재요청, 승인, 반려, 완료 | OFF, ON, OFF, OFF |
| 생산 | 안전재고, 생산완료 | OFF, ON |
- [ ] **API 엔드포인트** (3개)
- [ ] `GET /v1/settings/notifications` - 알림 설정 조회
- [ ] `PUT /v1/settings/notifications` - 알림 설정 일괄 수정
- [ ] `PATCH /v1/settings/notifications/{type}` - 개별 알림 설정 수정
- [ ] **Swagger 문서**
- [ ] `NotificationSettingApi.php` 작성
- [x] **Swagger 문서**
- [x] `NotificationSettingApi.php` 작성
- [ ] **테스트**
- [ ] Feature 테스트 작성
@@ -137,23 +114,24 @@
---
### 5.3 계정정보 수정 (탈퇴/사용중지) 🔄
### 5.3 계정정보 수정 (탈퇴/사용중지)
> 슬라이드: 24 | 경로: 계정정보
> **완료일: 2025-12-19**
- [ ] **서비스 구현**
- [ ] `AccountService` 생성/확장
- [ ] 회원 탈퇴 로직 (모든 테넌트에서 탈퇴, SAM 탈퇴)
- [ ] 사용 중지 로직 (특정 테넌트에서만 중지)
- [ ] 약관 동의 정보 관리
- [x] **서비스 구현**
- [x] `AccountService` 생성/확장
- [x] 회원 탈퇴 로직 (`withdraw()`)
- [x] 사용 중지 로직 (`suspend()`)
- [x] 약관 동의 정보 관리 (`getAgreements()`, `updateAgreements()`)
- [ ] **API 엔드포인트** (4개)
- [ ] `POST /v1/account/withdraw` - 회원 탈퇴
- [ ] `POST /v1/account/suspend` - 사용 중지 (특정 테넌트)
- [ ] `GET /v1/account/agreements` - 약관 동의 정보 조회
- [ ] `PUT /v1/account/agreements` - 약관 동의 정보 수정
- [x] **API 엔드포인트** (4개)
- [x] `POST /v1/account/withdraw` - 회원 탈퇴
- [x] `POST /v1/account/suspend` - 사용 중지 (특정 테넌트)
- [x] `GET /v1/account/agreements` - 약관 동의 정보 조회
- [x] `PUT /v1/account/agreements` - 약관 동의 정보 수정
- [ ] **Swagger 문서**
- [ ] `AccountApi.php` 확장
- [x] **Swagger 문서**
- [x] `AccountApi.php` 확장
- [ ] **테스트**
- [ ] Feature 테스트 작성
@@ -161,26 +139,27 @@
---
### 5.4 매출 상세 확장 (거래명세서) 🔄
### 5.4 매출 상세 확장 (거래명세서)
> 슬라이드: 9 | 경로: 회계관리 > 매출관리 > 매출 상세
> **완료일: 2025-12-19**
**기존 구성요소:**
- `Sale` 모델, `SaleService` 존재
- `TaxInvoice` 모델 존재 (세금계산서)
- [ ] **서비스 확장**
- [ ] `SaleService` 확장
- [ ] 거래명세서 조회 로직
- [ ] 거래명세서 발행 로직
- [ ] 거래명세서 이메일 발송 로직
- [x] **서비스 확장**
- [x] `SaleService` 확장
- [x] 거래명세서 조회 로직 (`getStatement()`)
- [x] 거래명세서 발행 로직 (`issueStatement()`)
- [x] 거래명세서 이메일 발송 로직 (`sendStatement()`)
- [ ] **API 엔드포인트** (3개)
- [ ] `GET /v1/sales/{id}/statement` - 거래명세서 조회
- [ ] `POST /v1/sales/{id}/statement/issue` - 거래명세서 발행
- [ ] `POST /v1/sales/{id}/statement/send` - 거래명세서 이메일 발송
- [x] **API 엔드포인트** (3개)
- [x] `GET /v1/sales/{id}/statement` - 거래명세서 조회
- [x] `POST /v1/sales/{id}/statement/issue` - 거래명세서 발행
- [x] `POST /v1/sales/{id}/statement/send` - 거래명세서 이메일 발송
- [ ] **Swagger 문서**
- [ ] `SaleApi.php` 확장 (거래명세서 관련 추가)
- [x] **Swagger 문서**
- [x] `SaleApi.php` 확장 (거래명세서 관련 추가)
- [ ] **테스트**
- [ ] Feature 테스트 작성
@@ -302,7 +281,8 @@
---
## 📋 Phase 7: D1.0 게시판 연동 (예상 1-2주)
## 📋 Phase 7: D1.0 게시판 연동 ✅ 완료
> **완료일: 2025-12-19**
> 기존 Board 모델 활용, API 엔드포인트 추가
@@ -310,118 +290,73 @@
- `Board` 모델: is_system, board_type, board_code, name, extra_settings
- `BoardSetting` 모델: 커스텀 필드 정의
- `BoardComment` 모델: 댓글
- `Post` 모델: 게시글 (확인 필요)
- `Post` 모델: 게시글
### 7.1 게시판관리 🆕
### 7.1 게시판관리
> 슬라이드: 17-18 | 경로: 기준정보 > 게시판관리
> **완료일: 2025-12-19** (기존 구현 활용)
- [ ] **기존 모델 확인/확장**
- [ ] `Board` 모델 확인
- [ ] `BoardSetting` 모델 확인
- [ ] 필요 필드 추가 (allow_comments, max_pinned 등)
- [x] **기존 모델 확인/확장**
- [x] `Board` 모델 확인
- [x] `BoardSetting` 모델 확인
- [x] 필요 필드 이미 존재
- [ ] **서비스 구현**
- [ ] `BoardSettingService` 생성
- [ ] 테넌트별 게시판 CRUD 로직
- [ ] 디폴트 게시판 생성 로직 (공지사항, 나의 게시글)
- [x] **서비스 구현**
- [x] `BoardService` 존재 (테넌트별 게시판 CRUD 로직)
- [ ] **API 엔드포인트** (5개)
- [ ] `GET /v1/board-settings` - 게시판 설정 목록
- [ ] `POST /v1/board-settings` - 게시판 생성
- [ ] `GET /v1/board-settings/{id}` - 게시판 설정 상세
- [ ] `PUT /v1/board-settings/{id}` - 게시판 설정 수정
- [ ] `DELETE /v1/board-settings/{id}` - 게시판 삭제
- [x] **API 엔드포인트** (5개)
- [x] `GET /v1/boards` - 게시판 목록
- [x] `POST /v1/boards` - 게시판 생성
- [x] `GET /v1/boards/{id}` - 게시판 상세
- [x] `PUT /v1/boards/{id}` - 게시판 수정
- [x] `DELETE /v1/boards/{id}` - 게시판 삭제
- [ ] **Swagger 문서**
- [ ] `BoardSettingApi.php` 작성
- [ ] **테스트**
- [ ] Feature 테스트 작성
- [ ] 수동 API 테스트
- [x] **Swagger 문서**
- [x] `BoardApi.php` 작성 완료
---
### 7.2 게시판 (사용자용) 🆕
### 7.2 게시판 (사용자용)
> 슬라이드: 3-7 | 경로: 게시판
> **완료일: 2025-12-19**
- [ ] **기존 모델 확인/확장**
- [ ] `Post` 모델 확인/생성
- [ ] 상단 노출 필드 (is_pinned, pinned_at)
- [ ] 댓글 허용 필드 (allow_comments)
- [ ] 조회수 필드 (view_count)
- [x] **기존 모델 확인/확장**
- [x] `Post` 모델 확인
- [x] 상단 노출 필드 (is_notice)
- [x] 조회수 필드 (views)
- [ ] **서비스 구현**
- [ ] `PostService` 생성
- [ ] 게시글 CRUD 로직
- [ ] 상단 노출 로직 (최대 5개 제한)
- [ ] 조회수 증가 로직
- [ ] 나의 게시글 조회 로직
- [x] **서비스 구현**
- [x] `PostService` 존재
- [x] 게시글 CRUD 로직
- [x] 상단 노출 로직
- [x] 조회수 증가 로직
- [x] 나의 게시글 조회 로직 ✅ 추가됨
- [ ] **API 엔드포인트** (10개)
- [ ] `GET /v1/boards` - 게시판 목록 (탭용)
- [ ] `GET /v1/boards/{code}/posts` - 게시글 목록
- [ ] `POST /v1/boards/{code}/posts` - 게시글 등록
- [ ] `GET /v1/boards/{code}/posts/{id}` - 게시글 상세
- [ ] `PUT /v1/boards/{code}/posts/{id}` - 게시글 수정
- [ ] `DELETE /v1/boards/{code}/posts/{id}` - 게시글 삭제
- [ ] `GET /v1/posts/my` - 나의 게시글
- [ ] `POST /v1/posts/{id}/comments` - 댓글
- [ ] `PUT /v1/posts/{id}/comments/{commentId}` - 댓글 수정
- [ ] `DELETE /v1/posts/{id}/comments/{commentId}` - 댓글 삭제
- [x] **API 엔드포인트** (10개)
- [x] `GET /v1/boards` - 게시판 목록 (탭용)
- [x] `GET /v1/boards/{code}/posts` - 게시글 목록
- [x] `POST /v1/boards/{code}/posts` - 게시글 등록
- [x] `GET /v1/boards/{code}/posts/{id}` - 게시글 상세
- [x] `PUT /v1/boards/{code}/posts/{id}` - 게시글 수정
- [x] `DELETE /v1/boards/{code}/posts/{id}` - 게시글 삭제
- [x] `GET /v1/posts/my` - 나의 게시글 ✅ 신규 추가
- [x] `GET /v1/boards/{code}/posts/{id}/comments` - 댓글
- [x] `POST /v1/boards/{code}/posts/{id}/comments` - 댓글 등록
- [x] `PUT /v1/boards/{code}/posts/{id}/comments/{commentId}` - 댓글 수정
- [x] `DELETE /v1/boards/{code}/posts/{id}/comments/{commentId}` - 댓글 삭제
- [ ] **Swagger 문서**
- [ ] `BoardApi.php` 작성 (사용자용)
- [ ] `PostApi.php` 작성
- [ ] **테스트**
- [ ] Feature 테스트 작성
- [ ] 수동 API 테스트
- [x] **Swagger 문서**
- [x] `BoardApi.php` 작성 완료
- [x] `PostApi.php` 작성 완료
---
### 7.3 고객센터 🆕
### 7.3 고객센터 → 게시판관리로 대체 ⏭️
> 슬라이드: 30-38 | 경로: 고객센터
**기존 구성요소:**
- 시스템 게시판 (is_system = true) 활용
- board_type으로 구분: notice, event, faq, inquiry
- [ ] **게시판 시드 데이터**
- [ ] `notice` - SAM 공지사항 (시스템)
- [ ] `event` - 이벤트 (시스템)
- [ ] `faq` - FAQ (시스템, 카테고리 필드)
- [ ] `inquiry` - 1:1 문의 (테넌트별)
- [ ] **서비스 확장**
- [ ] `SupportService` 생성
- [ ] 공지사항 조회 (시스템 게시판)
- [ ] 이벤트 조회 (진행중/종료)
- [ ] FAQ 조회 (카테고리별)
- [ ] 1:1 문의 CRUD + 답변
- [ ] **API 엔드포인트** (15개)
- [ ] `GET /v1/support/notices` - 공지사항 목록
- [ ] `GET /v1/support/notices/{id}` - 공지사항 상세
- [ ] `GET /v1/support/events` - 이벤트 목록
- [ ] `GET /v1/support/events/{id}` - 이벤트 상세
- [ ] `GET /v1/support/faqs` - FAQ 목록
- [ ] `GET /v1/support/faqs/categories` - FAQ 카테고리 목록
- [ ] `GET /v1/support/inquiries` - 1:1 문의 목록
- [ ] `POST /v1/support/inquiries` - 1:1 문의 등록
- [ ] `GET /v1/support/inquiries/{id}` - 1:1 문의 상세
- [ ] `PUT /v1/support/inquiries/{id}` - 1:1 문의 수정
- [ ] `DELETE /v1/support/inquiries/{id}` - 1:1 문의 삭제
- [ ] `POST /v1/support/inquiries/{id}/comments` - 댓글 등록
- [ ] `PUT /v1/support/inquiries/{id}/comments/{cid}` - 댓글 수정
- [ ] `DELETE /v1/support/inquiries/{id}/comments/{cid}` - 댓글 삭제
- [ ] `POST /v1/support/inquiries/{id}/reply` - 관리자 답변 (관리자용)
- [ ] **Swagger 문서**
- [ ] `SupportApi.php` 작성
- [ ] **테스트**
- [ ] Feature 테스트 작성
- [ ] 수동 API 테스트
**결정사항:** 고객센터 기능은 기존 게시판관리 시스템으로 구현
- 공지사항, 이벤트, FAQ, 1:1 문의 → 게시판 유형(board_code)으로 관리
- 별도 SupportAPI 불필요, 기존 Board/Post API 활용
---
@@ -429,53 +364,68 @@
> 기존 Plan/Subscription/Payment 모델 활용
### 8.1 구독관리 🆕
### 8.1 구독관리
> 슬라이드: 28 | 경로: 구독관리
> **완료일: 2025-12-22** (기존 구현 확인)
**기존 구성요소:**
- `Plan` 모델: name, code, price, features(json)
- `Subscription` 모델: tenant_id, plan_id, started_at, ended_at, status
- `DataExport` 모델: 데이터 내보내기
- [ ] **서비스 확장**
- [ ] `SubscriptionService` 확장
- [ ] 현재 구독 정보 조회 로직
- [ ] 사용량 조회 로직 (사용자 수, 저장공간, API 호출)
- [ ] 자료 내보내기 로직 (비동기 처리)
- [ ] 서비스 해지 로직 (데이터 보관 정책)
- [x] **서비스 확장**
- [x] `SubscriptionService` 확장 (432줄)
- [x] 현재 구독 정보 조회 로직 (`current()`)
- [x] 사용량 조회 로직 (`usage()`)
- [x] 자료 내보내기 로직 (`createExport()`, `getExport()`)
- [x] 서비스 해지 로직 (`cancel()`)
- [ ] **API 엔드포인트** (5개)
- [ ] `GET /v1/subscriptions/current` - 현재 구독 정보
- [ ] `GET /v1/subscriptions/usage` - 사용량 조회
- [ ] `POST /v1/subscriptions/export` - 자료 내보내기 요청
- [ ] `GET /v1/subscriptions/export/{id}` - 내보내기 상태 조회
- [ ] `POST /v1/subscriptions/cancel` - 서비스 해지
- [x] **API 엔드포인트** (5개 + 추가 6개)
- [x] `GET /v1/subscriptions/current` - 현재 구독 정보
- [x] `GET /v1/subscriptions/usage` - 사용량 조회
- [x] `POST /v1/subscriptions/export` - 자료 내보내기 요청
- [x] `GET /v1/subscriptions/export/{id}` - 내보내기 상태 조회
- [x] `POST /v1/subscriptions/{id}/cancel` - 서비스 해지
- [x] `GET /v1/subscriptions` - 구독 목록 (추가)
- [x] `POST /v1/subscriptions` - 구독 등록 (추가)
- [x] `GET /v1/subscriptions/{id}` - 구독 상세 (추가)
- [x] `POST /v1/subscriptions/{id}/renew` - 구독 갱신 (추가)
- [x] `POST /v1/subscriptions/{id}/suspend` - 일시정지 (추가)
- [x] `POST /v1/subscriptions/{id}/resume` - 재개 (추가)
- [ ] **Swagger 문서**
- [ ] `SubscriptionApi.php` 작성
- [x] **Swagger 문서**
- [x] `SubscriptionApi.php` 작성 (526줄)
- [ ] **테스트**
- [ ] Feature 테스트 작성
- [ ] 수동 API 테스트
---
### 8.2 결제내역 🆕
### 8.2 결제내역 ✅
> 슬라이드: 29 | 경로: 결제내역
> **완료일: 2025-12-22** (기존 구현 확인)
**기존 구성요소:**
- `Payment` 모델: subscription_id, amount, payment_method, paid_at, status
- [ ] **서비스 확장**
- [ ] `PaymentService` 확장
- [ ] 결제 내역 목록 조회 로직
- [ ] 거래명세서 생성 로직
- [x] **서비스 확장**
- [x] `PaymentService` 확장 (357줄)
- [x] 결제 내역 목록 조회 로직 (`index()`)
- [x] 거래명세서 생성 로직 (`statement()`)
- [x] 결제 요약 통계 (`summary()`)
- [ ] **API 엔드포인트** (2개)
- [ ] `GET /v1/payments` - 결제 내역 목록
- [ ] `GET /v1/payments/{id}/statement` - 거래명세서 조회
- [x] **API 엔드포인트** (2개 + 추가 6개)
- [x] `GET /v1/payments` - 결제 내역 목록
- [x] `GET /v1/payments/{id}/statement` - 거래명세서 조회
- [x] `GET /v1/payments/summary` - 결제 요약 통계 (추가)
- [x] `GET /v1/payments/{id}` - 결제 상세 (추가)
- [x] `POST /v1/payments` - 결제 등록 (추가)
- [x] `POST /v1/payments/{id}/complete` - 완료 처리 (추가)
- [x] `POST /v1/payments/{id}/cancel` - 취소 (추가)
- [x] `POST /v1/payments/{id}/refund` - 환불 (추가)
- [ ] **Swagger 문서**
- [ ] `PaymentApi.php` 작성
- [x] **Swagger 문서**
- [x] `PaymentApi.php` 작성 (455줄)
- [ ] **테스트**
- [ ] Feature 테스트 작성
@@ -483,22 +433,46 @@
---
### 8.3 회사 추가 🔄
### 8.3 회사 추가
> 슬라이드: 25-27 | 경로: 회사정보
> **완료일: 2025-12-22**
- [ ] **서비스 구현**
- [ ] `CompanyService` 생성
- [ ] 사업자등록번호 유효성 검사 (바로빌 연동)
- [ ] 회사 추가 신청 로직 (매니저 알림)
- [ ] 신청 목록 조회 (관리자용)
- [x] **테이블 생성** (1개)
- [x] `company_requests` 마이그레이션
```sql
-- company_requests (회사 추가 신청)
id, user_id, business_number, company_name, ceo_name,
address, phone, email, status, message, reject_reason,
barobill_response(json), approved_by, created_tenant_id,
processed_at, created_at, updated_at
```
- [x] 마이그레이션 실행 및 검증
- [ ] **API 엔드포인트** (3개)
- [ ] `POST /v1/companies/check` - 사업자등록번호 유효성 검사
- [ ] `POST /v1/companies/request` - 회사 추가 신청
- [ ] `GET /v1/companies/requests` - 회사 추가 신청 목록 (관리자용)
- [x] **모델 생성**
- [x] `CompanyRequest` 모델
- 상태 상수: pending, approved, rejected
- 관계: user, approver, createdTenant
- 스코프: pending(), approved(), rejected()
- [ ] **Swagger 문서**
- [ ] `CompanyApi.php`
- [x] **서비스 구현**
- [x] `CompanyService`
- [x] 사업자등록번호 유효성 검사 (바로빌 연동 + 체크섬 검증)
- [x] 회사 추가 신청 로직
- [x] 신청 승인 로직 (테넌트 자동 생성 + 사용자 연결)
- [x] 신청 반려 로직
- [x] 신청 목록 조회 (관리자용/사용자용)
- [x] **API 엔드포인트** (7개)
- [x] `POST /v1/companies/check` - 사업자등록번호 유효성 검사
- [x] `POST /v1/companies/request` - 회사 추가 신청
- [x] `GET /v1/companies/requests` - 신청 목록 (관리자용)
- [x] `GET /v1/companies/requests/{id}` - 신청 상세
- [x] `POST /v1/companies/requests/{id}/approve` - 승인
- [x] `POST /v1/companies/requests/{id}/reject` - 반려
- [x] `GET /v1/companies/my-requests` - 내 신청 목록
- [x] **Swagger 문서**
- [x] `CompanyApi.php` 작성
- [ ] **테스트**
- [ ] Feature 테스트 작성
@@ -533,21 +507,40 @@
- [x] D0.8 대비 변경사항 식별 (신규 8개, 수정 4개)
- [x] D1.0 개발 계획 문서 작성 (Phase 5-8)
- [x] 기존 코드베이스 분석 (Board, Plan, Subscription 모델 확인)
- [x] Phase 6.1 악성채권 추심관리 API 개발 완료 (commit: c0af888)
- [x] Phase 6.2 팝업관리 API 개발 완료
- [x] Phase 7.1 게시판관리 - 기존 구현 확인 완료
- [x] Phase 7.2 게시판(사용자용) - 기존 구현 확인 + `/posts/my` API 추가 (commit: c15a245)
- [x] Phase 7.3 고객센터 → 게시판관리로 대체 결정
- [x] Phase 8 SaaS 확장 분석 시작
### YYYY-MM-DD
- [ ] (작업 내용 기록)
### 2025-12-22
- [x] Phase 8.1 구독관리 - 기존 구현 확인 완료
- [x] Phase 8.2 결제내역 - 기존 구현 확인 완료
- [x] Phase 8.3 회사 추가 API 개발 완료 (commit: 7781253)
- company_requests 테이블 생성
- CompanyRequest 모델 생성
- CompanyService 생성 (바로빌 연동 + 테넌트 생성)
- 7개 API 엔드포인트 구현
- Swagger 문서 작성
- [x] Phase 5 전체 기존 구현 확인 완료
- 5.1 사용자 초대: 5개 API (invite, invitations, accept, cancel, resend)
- 5.2 알림설정: 3개 API (notification-settings, update, bulk)
- 5.3 계정정보: 4개 API (withdraw, suspend, agreements)
- 5.4 매출 거래명세서: 3개 API (statement, issue, send)
- [x] D1.0 Phase 5-8 전체 API 개발 완료!
---
## ✅ 완료 기준
### Phase 5 완료 조건 (기본 확장)
- [ ] 사용자 초대 API 구현 완료
- [ ] 알림설정 API 확장 완료
- [ ] 계정정보 API 확장 완료
- [ ] 매출 거래명세서 API 구현 완료
- [ ] Swagger 문서 완성
- [ ] Pint 코드 포맷팅 완료
### Phase 5 완료 조건 (기본 확장)
- [x] 사용자 초대 API 구현 완료 ✅ 2025-12-19
- [x] 알림설정 API 확장 완료 ✅ 2025-12-19
- [x] 계정정보 API 확장 완료 ✅ 2025-12-19
- [x] 매출 거래명세서 API 구현 완료 ✅ 2025-12-19
- [x] Swagger 문서 완성 ✅ 2025-12-19
- [x] Pint 코드 포맷팅 완료
### Phase 6 완료 조건 (핵심 신규)
- [x] 악성채권 추심관리 전체 구현 ✅ 2025-12-18
@@ -555,17 +548,16 @@
- [x] 마이그레이션 검증 완료
- [x] Swagger 문서 완성
### Phase 7 완료 조건 (게시판 연동)
- [ ] 게시판관리 API 구현 완료
- [ ] 게시판 (사용자용) API 구현 완료
- [ ] 고객센터 API 구현 완료
- [ ] 시드 데이터 (시스템 게시판) 등록
### Phase 7 완료 조건 (게시판 연동)
- [x] 게시판관리 API 구현 완료 ✅ 2025-12-19
- [x] 게시판 (사용자용) API 구현 완료 ✅ 2025-12-19
- [x] 고객센터 → 게시판관리로 대체 결정 ✅ 2025-12-19
### Phase 8 완료 조건 (SaaS 확장)
- [ ] 구독관리 API 구현 완료
- [ ] 결제내역 API 구현 완료
- [ ] 회사 추가 API 구현 완료
- [ ] 자료 내보내기 기능 구현
### Phase 8 완료 조건 (SaaS 확장)
- [x] 구독관리 API 구현 완료 ✅ 2025-12-22
- [x] 결제내역 API 구현 완료 ✅ 2025-12-22
- [x] 회사 추가 API 구현 완료 ✅ 2025-12-22
- [x] 자료 내보내기 기능 구현 ✅ (SubscriptionService에 포함)
### 전체 완료 조건
- [ ] 모든 D1.0 API 구현 완료 (~71개)