From ab740bc878677f7bcfa40400c9750b80f5410aae Mon Sep 17 00:00:00 2001 From: hskwon Date: Thu, 18 Dec 2025 20:29:01 +0900 Subject: [PATCH] =?UTF-8?q?ERP=20API=20=EA=B0=9C=EB=B0=9C=20=EA=B3=84?= =?UTF-8?q?=ED=9A=8D=20Phase=203=20=EC=A7=84=ED=96=89=EC=83=81=ED=99=A9=20?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 가지급금(Loan) API Swagger 문서 완료 - 바로빌 연동 API 완료 표시 (테이블, 모델, 서비스, 12개 엔드포인트) --- plans/erp-api-development-plan.md | 156 ++++++++++++++++++++++++++---- 1 file changed, 139 insertions(+), 17 deletions(-) diff --git a/plans/erp-api-development-plan.md b/plans/erp-api-development-plan.md index 8cf198f..8f2e3ef 100644 --- a/plans/erp-api-development-plan.md +++ b/plans/erp-api-development-plan.md @@ -2,7 +2,7 @@ > **작성일**: 2025-12-17 > **기준 문서**: SAM_ERP_Storyboard_D0.8_251216 -> **상태**: ✅ Phase 1 완료 | ✅ Phase 2 완료 (3/3: 전자결재 + 급여관리 + 대시보드) +> **상태**: ✅ Phase 1 완료 | ✅ Phase 2 완료 | 🟡 Phase 3 진행중 (3/4: AI리포트 + 가지급금 + 바로빌) --- @@ -437,29 +437,127 @@ - [x] 테이블 생성 (`loans`) - 2025-12-18 - [x] 서비스 구현 (인정이자 계산) - LoanService - [x] API 구현 - LoanController, FormRequest 5개, 9개 라우트 -- [ ] Swagger 문서 - 별도 작성 예정 +- [x] Swagger 문서 - `LoanApi.php` (스키마 7개, 엔드포인트 9개) -### 3.8 바로빌 연동 -- [ ] 테이블 생성 (`tax_invoices`) -- [ ] 외부 API 연동 서비스 -- [ ] API 구현 -- [ ] Swagger 문서 +### 3.8 바로빌 연동 ✅ +> **완료일**: 2025-12-18 | **커밋**: `8ad4d7c` + +- [x] **테이블 생성** + - [x] `barobill_settings` 마이그레이션 (테넌트별 바로빌 설정, 인증서 암호화) + - [x] `tax_invoices` 마이그레이션 (세금계산서 발행 내역) + +- [x] **모델 생성** + - [x] `BarobillSetting` 모델 (cert_key 암호화 - Laravel Crypt) + - [x] `TaxInvoice` 모델 (5개 상태, 3개 유형, 공급자/공급받는자 정보) + +- [x] **서비스 구현** + - [x] `BarobillService` 생성 (바로빌 API 연동, 테스트/운영 환경 구분) + - [x] `TaxInvoiceService` 생성 (CRUD, 발행, 취소, 상태조회, 통계) + +- [x] **API 엔드포인트** (12개) + - [x] `GET /v1/barobill-settings` - 바로빌 설정 조회 + - [x] `PUT /v1/barobill-settings` - 바로빌 설정 저장 + - [x] `POST /v1/barobill-settings/test-connection` - 연동 테스트 + - [x] `GET /v1/tax-invoices` - 목록 조회 + - [x] `POST /v1/tax-invoices` - 세금계산서 생성 + - [x] `GET /v1/tax-invoices/summary` - 요약 통계 + - [x] `GET /v1/tax-invoices/{id}` - 상세 조회 + - [x] `PUT /v1/tax-invoices/{id}` - 수정 + - [x] `DELETE /v1/tax-invoices/{id}` - 삭제 + - [x] `POST /v1/tax-invoices/{id}/issue` - 발행 + - [x] `POST /v1/tax-invoices/{id}/cancel` - 취소 + - [x] `GET /v1/tax-invoices/{id}/check-status` - 국세청 전송 상태 + +- [x] **Swagger 문서** + - [x] `BarobillSettingApi.php` 작성 + - [x] `TaxInvoiceApi.php` 작성 + +- [ ] **테스트** + - [ ] Feature 테스트 작성 + - [ ] 수동 API 테스트 --- ## 💼 Phase 4: SaaS 기능 (별도 일정) -### 3.6 구독/결제 관리 -- [ ] 테이블 생성 (`subscriptions`, `payments`) -- [ ] PG 연동 서비스 -- [ ] API 구현 -- [ ] Swagger 문서 +> ⚠️ **기존 코드베이스 분석 결과 반영** (2025-12-18) +> - 구독/결제: 이미 모델 존재 → 신규 테이블 불필요, API 확장만 필요 +> - 고객센터: mng 게시판 기능으로 대체 가능 → 신규 개발 불필요 -### 3.7 고객센터 -- [ ] 테이블 생성 (`support_tickets`, `faqs`) -- [ ] 서비스 구현 -- [ ] API 구현 -- [ ] Swagger 문서 +### 3.6 구독/결제 관리 (기존 모델 확장) + +**기존 구성요소 (이미 존재):** +| 항목 | 위치 | 상태 | +|------|------|------| +| `Plan` 모델 | `api/app/Models/Tenants/Plan.php` | ✅ 완성 | +| `Subscription` 모델 | `api/app/Models/Tenants/Subscription.php` | ✅ 완성 | +| `Payment` 모델 | `api/app/Models/Tenants/Payment.php` | ✅ 완성 | +| 테넌트 구독 조회 | `api/admin/tenants/{id}/subscription` | ✅ 라우트 존재 | +| 관리 페이지 | `public/tenant/subscription/` | ✅ 3개 파일 | + +**기존 스키마:** +```php +// Plan: name, code, description, price, billing_cycle, features(json), is_active +// Subscription: tenant_id, plan_id, started_at, ended_at, status +// Payment: subscription_id, amount, payment_method, transaction_id, paid_at, status, memo +``` + +**추가 개발 필요 (API 확장):** +- [ ] **Plan API** (관리자용) + - [ ] `GET /v1/admin/plans` - 요금제 목록 + - [ ] `POST /v1/admin/plans` - 요금제 등록 + - [ ] `PUT /v1/admin/plans/{id}` - 요금제 수정 + - [ ] `DELETE /v1/admin/plans/{id}` - 요금제 삭제 + +- [ ] **Subscription API** (테넌트용) + - [ ] `GET /v1/subscriptions/current` - 현재 구독 조회 + - [ ] `POST /v1/subscriptions` - 구독 신청 + - [ ] `PUT /v1/subscriptions/{id}` - 구독 변경 + - [ ] `POST /v1/subscriptions/{id}/cancel` - 구독 해지 + +- [ ] **Payment API** + - [ ] `GET /v1/payments` - 결제 내역 + - [ ] `POST /v1/payments` - 결제 처리 (PG 연동) + - [ ] `GET /v1/payments/{id}` - 결제 상세 + +- [ ] **PG 연동** (별도 검토) + - [ ] 토스페이먼츠 / 아임포트 연동 + - [ ] 자동결제(정기결제) 구현 + +- [ ] **Swagger 문서** + - [ ] `PlanApi.php`, `SubscriptionApi.php`, `PaymentApi.php` + +### 3.7 고객센터 (mng 게시판 활용) + +**기존 구성요소 (이미 존재 - mng):** +| 항목 | 위치 | 상태 | +|------|------|------| +| `Board` 모델 | `mng/app/Models/Boards/Board.php` | ✅ 완성 | +| `Post` 모델 | `mng/app/Models/Boards/Post.php` | ✅ 완성 | +| `BoardSetting` | `mng/app/Models/Boards/BoardSetting.php` | ✅ 동적 필드 지원 | +| `BoardService` | `mng/app/Services/BoardService.php` | ✅ 520줄 | +| API 라우트 | `api/admin/boards/*` | ✅ 20개+ 라우트 | + +**게시판 구조:** +- `is_system = true` → 시스템 전체용 (공지사항, FAQ) +- `is_system = false` → 테넌트별 개별 게시판 (문의게시판) +- 템플릿 기반 생성 지원 (`createBoardFromTemplate`) + +**추가 개발 필요 (템플릿 추가):** +- [ ] **게시판 템플릿 정의** (`config/board_templates.php`) + - [ ] `faq` - FAQ 게시판 템플릿 + - [ ] `inquiry` - 1:1 문의 템플릿 + - [ ] `notice` - 공지사항 템플릿 + +- [ ] **API 라우트 확장** (api 프로젝트) + - [ ] `GET /v1/boards/{code}/posts` - 게시글 목록 (사용자용) + - [ ] `POST /v1/boards/{code}/posts` - 게시글 작성 + - [ ] `GET /v1/boards/{code}/posts/{id}` - 게시글 상세 + +- [ ] **Swagger 문서** + - [ ] `BoardApi.php` (사용자용 API) + +**참고:** mng의 `BoardService`는 시스템/테넌트 게시판 모두 지원하므로 신규 테이블 생성 불필요 --- @@ -563,6 +661,30 @@ - Google Gemini API 연동 - 비즈니스 데이터 수집 (매출/매입/입출금/미수금/카드/계좌) +- [x] **가지급금 관리 API 구현 완료** (커밋: `9b3dd2f`) + - 마이그레이션 1개 (`loans`) + - 모델 1개 (`Loan`) + - 서비스 1개 (`LoanService` - 인정이자 계산 포함) + - 컨트롤러 1개, FormRequest 5개 + - API 엔드포인트 9개 + - Swagger 문서 (`LoanApi.php`) + +- [x] **바로빌 세금계산서 연동 API 구현 완료** (커밋: `8ad4d7c`) + - 마이그레이션 2개 (`barobill_settings`, `tax_invoices`) + - 모델 2개 (`BarobillSetting`, `TaxInvoice`) + - 서비스 2개 (`BarobillService`, `TaxInvoiceService`) + - 컨트롤러 2개, FormRequest 6개 + - API 엔드포인트 12개 + - Swagger 문서 2개 (`BarobillSettingApi.php`, `TaxInvoiceApi.php`) + - 바로빌 API 연동 (테스트/운영 환경 구분) + - 인증서 키 암호화 (Laravel Crypt) + - 세금계산서 발행/취소/상태조회/통계 + +- [x] **Phase 4 계획 수정** (기존 코드베이스 분석 반영) + - 구독/결제: `Plan`, `Subscription`, `Payment` 모델 이미 존재 → 신규 테이블 불필요 + - 고객센터: mng 게시판 기능(`Board`, `Post`, `BoardService`)으로 대체 가능 + - 계획 문서 수정: 신규 개발 → 기존 모델 확장으로 변경 + ### YYYY-MM-DD - [ ] (작업 내용 기록)