20 KiB
SAM ERP API 개발 작업 계획 - D1.0 변경사항
작성일: 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 대기
📚 참고 문서
핵심 참고 문서
| 문서 | 경로 | 용도 |
|---|---|---|
| 기존 개발 계획 | erp-api-development-plan.md |
D0.8 기준 Phase 1-4 |
| 개발 공통 정책 | ../guides/PROJECT_DEVELOPMENT_POLICY.md |
개발 표준 및 정책 |
| D0.8 스토리보드 | SAM_ERP_Storyboard_D0.8_251216/ |
이전 버전 UI 참조 |
| D1.0 스토리보드 | SAM_ERP_Storyboard_D1.0_251218/ |
최신 UI/UX 참조 |
기존 코드 참조
| 항목 | 경로 | 상태 |
|---|---|---|
Board 모델 |
api/app/Models/Boards/Board.php |
✅ 존재 |
BoardSetting 모델 |
api/app/Models/Boards/BoardSetting.php |
✅ 존재 |
BoardComment 모델 |
api/app/Models/Boards/BoardComment.php |
✅ 존재 |
Plan 모델 |
api/app/Models/Tenants/Plan.php |
✅ 존재 |
Subscription 모델 |
api/app/Models/Tenants/Subscription.php |
✅ 존재 |
PushNotificationSetting |
api/app/Models/PushNotificationSetting.php |
✅ 존재 |
📊 D1.0 개발 범위 요약
| Phase | 구분 | 항목수 | 신규 테이블 | API 수 | 상태 |
|---|---|---|---|---|---|
| Phase 5 | 기본 확장 | 4개 | 1개 | ~14개 | ✅ 완료 |
| Phase 6 | 핵심 신규 | 2개 | 4개 | ~17개 | 🔄 진행중 |
| Phase 7 | 게시판 연동 | 3개 | 0개 | ~30개 | ⬜ 대기 |
| Phase 8 | SaaS 확장 | 3개 | 0개 | ~10개 | ⬜ 대기 |
| 합계 | 12개 | ~5개 | ~71개 |
🚀 Phase 5: D1.0 기본 확장 (예상 1-2주)
기존 테이블/모델 활용, API 추가 중심
5.1 사용자 초대 기능 🆕
슬라이드: 2 | 경로: 인사관리 > 사원관리 > 사용자 초대
-
테이블 생성
user_invitations마이그레이션-- user_invitations (사용자 초대) id, tenant_id, email, role_id, message, token, status (pending/accepted/expired), invited_by, expires_at, accepted_at, created_at, updated_at- 마이그레이션 실행 및 검증
-
모델 생성
UserInvitation모델 (BelongsToTenant)- 관계 정의 (inviter, role)
- 토큰 생성 헬퍼
-
서비스 구현
UserInvitationService생성- 이메일 초대 발송 로직
- 초대 수락 로직 (사원 정보 자동 매핑)
- 토큰 만료 처리
-
API 엔드포인트 (4개)
POST /v1/users/invite- 사용자 초대 (이메일 발송)GET /v1/users/invitations- 초대 목록POST /v1/users/invitations/{token}/accept- 초대 수락DELETE /v1/users/invitations/{id}- 초대 취소
-
Swagger 문서
UserInvitationApi.php작성- 스키마 정의 (UserInvitation, InviteRequest, AcceptRequest)
-
테스트
- Feature 테스트 작성
- 수동 API 테스트
5.2 알림설정 확장 🔄
슬라이드: 19-22 | 경로: 기준정보 > 알림설정
기존 구성요소:
-
PushNotificationSetting모델 존재 (Push 알림용) -
일반 알림설정은 신규 필요
-
테이블 확장
notification_settings테이블 확인/생성-- notification_settings (알림 설정) id, tenant_id, user_id, category, type, email_enabled, push_enabled, sms_enabled, created_at, updated_at- Seeder: 기본 알림 유형 17개 등록
-
모델 생성/수정
NotificationSetting모델 (BelongsToTenant)- 카테고리별 그룹화 메서드
-
서비스 구현
NotificationSettingService생성- 카테고리별 조회/수정 로직
- 사용자별 기본값 생성 로직
-
알림 유형 정의 (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작성
-
테스트
- Feature 테스트 작성
- 수동 API 테스트
5.3 계정정보 수정 (탈퇴/사용중지) 🔄
슬라이드: 24 | 경로: 계정정보
-
서비스 구현
AccountService생성/확장- 회원 탈퇴 로직 (모든 테넌트에서 탈퇴, SAM 탈퇴)
- 사용 중지 로직 (특정 테넌트에서만 중지)
- 약관 동의 정보 관리
-
API 엔드포인트 (4개)
POST /v1/account/withdraw- 회원 탈퇴POST /v1/account/suspend- 사용 중지 (특정 테넌트)GET /v1/account/agreements- 약관 동의 정보 조회PUT /v1/account/agreements- 약관 동의 정보 수정
-
Swagger 문서
AccountApi.php확장
-
테스트
- Feature 테스트 작성
- 수동 API 테스트
5.4 매출 상세 확장 (거래명세서) 🔄
슬라이드: 9 | 경로: 회계관리 > 매출관리 > 매출 상세
기존 구성요소:
-
Sale모델,SaleService존재 -
TaxInvoice모델 존재 (세금계산서) -
서비스 확장
SaleService확장- 거래명세서 조회 로직
- 거래명세서 발행 로직
- 거래명세서 이메일 발송 로직
-
API 엔드포인트 (3개)
GET /v1/sales/{id}/statement- 거래명세서 조회POST /v1/sales/{id}/statement/issue- 거래명세서 발행POST /v1/sales/{id}/statement/send- 거래명세서 이메일 발송
-
Swagger 문서
SaleApi.php확장 (거래명세서 관련 추가)
-
테스트
- Feature 테스트 작성
- 수동 API 테스트
🔨 Phase 6: D1.0 핵심 신규 개발 (예상 2-3주)
신규 테이블 + API 전체 신규 구현
6.1 악성채권 추심관리 🆕
슬라이드: 10-13 | 경로: 회계관리 > 악성채권 추심관리
-
테이블 생성 (3개)
bad_debts마이그레이션-- bad_debts (악성채권) id, tenant_id, client_id, debt_amount, status, overdue_days, assigned_user_id, occurred_at, closed_at, is_active, options(json), created_by, updated_by, deleted_by, created_at, updated_at, deleted_atbad_debt_documents마이그레이션-- bad_debt_documents (필요 서류) id, bad_debt_id, document_type, file_id, created_atbad_debt_memos마이그레이션-- bad_debt_memos (메모) id, bad_debt_id, content, created_by, created_at- 마이그레이션 실행 및 검증
-
모델 생성 (3개)
BadDebt모델 (BelongsToTenant, SoftDeletes)- 상태 상수: COLLECTING, LEGAL_ACTION, RECOVERED, BAD_DEBT
- 관계: client, assignedUser, documents, memos
BadDebtDocument모델- 문서 유형: business_license, tax_invoice, additional
BadDebtMemo모델
-
서비스 구현
BadDebtService생성- 악성채권 등록/수정/삭제 로직
- 상태 전이 로직 (추심중→법적조치→회수완료/대손처리)
- 요약 통계 (총 채권, 상태별 금액)
- 서류 첨부/삭제 로직
- 메모 추가/삭제 로직
-
API 엔드포인트 (11개)
GET /v1/bad-debts- 악성채권 목록POST /v1/bad-debts- 악성채권 등록GET /v1/bad-debts/summary- 상단 요약 (총 채권, 상태별 금액)GET /v1/bad-debts/{id}- 악성채권 상세PUT /v1/bad-debts/{id}- 악성채권 수정DELETE /v1/bad-debts/{id}- 악성채권 삭제PATCH /v1/bad-debts/{id}/toggle- 설정 ON/OFFPOST /v1/bad-debts/{id}/documents- 서류 첨부DELETE /v1/bad-debts/{id}/documents/{docId}- 서류 삭제POST /v1/bad-debts/{id}/memos- 메모 추가DELETE /v1/bad-debts/{id}/memos/{memoId}- 메모 삭제
-
Swagger 문서
BadDebtApi.php작성- 스키마 정의 (BadDebt, BadDebtDocument, BadDebtMemo, Summary)
-
테스트
- Feature 테스트 작성
- 수동 API 테스트
6.2 팝업관리 ✅
슬라이드: 15-16 | 경로: 기준정보 > 팝업관리 완료일: 2025-12-19
-
테이블 생성 (1개)
popups마이그레이션-- popups (팝업) id, tenant_id, target_type, target_id, title, content, status, started_at, ended_at, options, created_by, updated_by, deleted_by, created_at, updated_at, deleted_at- 마이그레이션 실행 및 검증
-
모델 생성
Popup모델 (BelongsToTenant, SoftDeletes)- target_type: all, department
- status: active, inactive
- 활성 팝업 스코프 (기간 + 상태 체크)
-
서비스 구현
PopupService생성- 팝업 CRUD 로직
- 활성 팝업 조회 로직 (로그인 후 노출용)
- 기간 유효성 검사 로직
-
API 엔드포인트 (6개)
GET /v1/popups- 팝업 목록 (관리자용)POST /v1/popups- 팝업 등록GET /v1/popups/active- 활성 팝업 목록 (사용자용)GET /v1/popups/{id}- 팝업 상세PUT /v1/popups/{id}- 팝업 수정DELETE /v1/popups/{id}- 팝업 삭제
-
Swagger 문서
PopupApi.php작성
-
테스트
- Feature 테스트 작성
- 수동 API 테스트
📋 Phase 7: D1.0 게시판 연동 (예상 1-2주)
기존 Board 모델 활용, API 엔드포인트 추가
기존 구성요소 (api 프로젝트):
Board모델: is_system, board_type, board_code, name, extra_settingsBoardSetting모델: 커스텀 필드 정의BoardComment모델: 댓글Post모델: 게시글 (확인 필요)
7.1 게시판관리 🆕
슬라이드: 17-18 | 경로: 기준정보 > 게시판관리
-
기존 모델 확인/확장
Board모델 확인BoardSetting모델 확인- 필요시 필드 추가 (allow_comments, max_pinned 등)
-
서비스 구현
BoardSettingService생성- 테넌트별 게시판 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}- 게시판 삭제
-
Swagger 문서
BoardSettingApi.php작성
-
테스트
- Feature 테스트 작성
- 수동 API 테스트
7.2 게시판 (사용자용) 🆕
슬라이드: 3-7 | 경로: 게시판
-
기존 모델 확인/확장
Post모델 확인/생성- 상단 노출 필드 (is_pinned, pinned_at)
- 댓글 허용 필드 (allow_comments)
- 조회수 필드 (view_count)
-
서비스 구현
PostService생성- 게시글 CRUD 로직
- 상단 노출 로직 (최대 5개 제한)
- 조회수 증가 로직
- 나의 게시글 조회 로직
-
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}- 댓글 삭제
-
Swagger 문서
BoardApi.php작성 (사용자용)PostApi.php작성
-
테스트
- Feature 테스트 작성
- 수동 API 테스트
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 테스트
💼 Phase 8: D1.0 SaaS 확장 (예상 1-2주)
기존 Plan/Subscription/Payment 모델 활용
8.1 구독관리 🆕
슬라이드: 28 | 경로: 구독관리
기존 구성요소:
-
Plan모델: name, code, price, features(json) -
Subscription모델: tenant_id, plan_id, started_at, ended_at, status -
서비스 확장
SubscriptionService확장- 현재 구독 정보 조회 로직
- 사용량 조회 로직 (사용자 수, 저장공간, API 호출)
- 자료 내보내기 로직 (비동기 처리)
- 서비스 해지 로직 (데이터 보관 정책)
-
API 엔드포인트 (5개)
GET /v1/subscriptions/current- 현재 구독 정보GET /v1/subscriptions/usage- 사용량 조회POST /v1/subscriptions/export- 자료 내보내기 요청GET /v1/subscriptions/export/{id}- 내보내기 상태 조회POST /v1/subscriptions/cancel- 서비스 해지
-
Swagger 문서
SubscriptionApi.php작성
-
테스트
- Feature 테스트 작성
- 수동 API 테스트
8.2 결제내역 🆕
슬라이드: 29 | 경로: 결제내역
기존 구성요소:
-
Payment모델: subscription_id, amount, payment_method, paid_at, status -
서비스 확장
PaymentService확장- 결제 내역 목록 조회 로직
- 거래명세서 생성 로직
-
API 엔드포인트 (2개)
GET /v1/payments- 결제 내역 목록GET /v1/payments/{id}/statement- 거래명세서 조회
-
Swagger 문서
PaymentApi.php작성
-
테스트
- Feature 테스트 작성
- 수동 API 테스트
8.3 회사 추가 🔄
슬라이드: 25-27 | 경로: 회사정보
-
서비스 구현
CompanyService생성- 사업자등록번호 유효성 검사 (바로빌 연동)
- 회사 추가 신청 로직 (매니저 알림)
- 신청 목록 조회 (관리자용)
-
API 엔드포인트 (3개)
POST /v1/companies/check- 사업자등록번호 유효성 검사POST /v1/companies/request- 회사 추가 신청GET /v1/companies/requests- 회사 추가 신청 목록 (관리자용)
-
Swagger 문서
CompanyApi.php작성
-
테스트
- Feature 테스트 작성
- 수동 API 테스트
📋 기획 확인 필요 항목
⚠️ API 구현 전 비즈니스 로직 확정 필요
D1.0 신규 확인 필요
- 사용자 초대 시 권한 범위 (테넌트 단위 vs 전사)
- 악성채권 자동 판정 조건 (연체일수 기준, 기본 90일?)
- 팝업 노출 우선순위 (복수 팝업 시)
- 서비스 해지 시 데이터 보관 기간
- 자료 내보내기 포맷 (Excel, CSV, JSON)
- 상단 노출 게시글 최대 개수 (기본 5개)
- 1:1 문의 상담분류 목록 (문의하기, 신고하기, 건의사항, 서비스 오류)
기존 확인 사항 (D0.8)
- 테넌트: 신청→승인→만료→해지 전이 조건
- 전자결재→회계: 지출결의서 승인 시 출금 자동 생성?
- 바로빌 API 비용 확인
📝 작업 일지
2025-12-19
- D1.0 스토리보드 분석 완료 (38페이지)
- D0.8 대비 변경사항 식별 (신규 8개, 수정 4개)
- D1.0 개발 계획 문서 작성 (Phase 5-8)
- 기존 코드베이스 분석 (Board, Plan, Subscription 모델 확인)
YYYY-MM-DD
- (작업 내용 기록)
✅ 완료 기준
Phase 5 완료 조건 (기본 확장)
- 사용자 초대 API 구현 완료
- 알림설정 API 확장 완료
- 계정정보 API 확장 완료
- 매출 거래명세서 API 구현 완료
- Swagger 문서 완성
- Pint 코드 포맷팅 완료
Phase 6 완료 조건 (핵심 신규)
- 악성채권 추심관리 전체 구현 ✅ 2025-12-18
- 팝업관리 전체 구현 ✅ 2025-12-19
- 마이그레이션 검증 완료
- Swagger 문서 완성
Phase 7 완료 조건 (게시판 연동)
- 게시판관리 API 구현 완료
- 게시판 (사용자용) API 구현 완료
- 고객센터 API 구현 완료
- 시드 데이터 (시스템 게시판) 등록
Phase 8 완료 조건 (SaaS 확장)
- 구독관리 API 구현 완료
- 결제내역 API 구현 완료
- 회사 추가 API 구현 완료
- 자료 내보내기 기능 구현
전체 완료 조건
- 모든 D1.0 API 구현 완료 (~71개)
- Swagger 문서 100%
- 통합 테스트 통과
- 프론트엔드 연동 준비 완료
🔗 관련 링크
- 기존 개발 계획:
erp-api-development-plan.md - API Swagger UI: http://sam.kr/api-docs/index.html
- 개발 공통 정책:
../guides/PROJECT_DEVELOPMENT_POLICY.md - D1.0 스토리보드:
SAM_ERP_Storyboard_D1.0_251218/