diff --git a/plans/erp-api-development-plan-d1.0-changes.md b/plans/erp-api-development-plan-d1.0-changes.md index 5bea992..6e94e98 100644 --- a/plans/erp-api-development-plan-d1.0-changes.md +++ b/plans/erp-api-development-plan-d1.0-changes.md @@ -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개)