Files
sam-docs/projects/api-integration/phase-3-api-mapping/gap-analysis.md

363 lines
8.8 KiB
Markdown
Raw Normal View History

# Gap 분석 보고서
> **작성일**: 2025-12-20
> **분석 범위**: React ↔ Laravel API 연동 현황
> **목적**: Mock 데이터 → 실제 API 전환을 위한 우선순위 도출
---
## Executive Summary
### 현재 상태
| 지표 | 값 |
|------|-----|
| 총 React 페이지 | 109개 |
| API 연동 완료 | 8개 (7.3%) |
| Mock 데이터 사용 | 95개 (87.2%) |
| 부분 연동 | 4개 (3.7%) |
| 미구현 | 2개 (1.8%) |
### 핵심 발견사항
1. **Items + Master Data 모듈만 완전 연동** (100%)
2. **Sales 모듈 절반 연동** (거래처/단가 O, 견적/주문 X)
3. **나머지 8개 모듈은 전체 Mock 데이터** (Accounting, HR, Board, Approval, Settings, Dashboard, Reports, Production, Customer Center)
4. **권한 관리는 localStorage 사용** → API 전환 필요
---
## 1. 모듈별 Gap 분석
### 1.1 ✅ 완료 모듈 (연동률 100%)
#### Items 모듈
- **상태**: 완전 연동
- **Gap**: 없음
- **비고**: 파일 업로드, BOM 관리 포함
#### Master Data 모듈
- **상태**: 완전 연동
- **Gap**: 없음
- **비고**: 50+ 마스터 데이터 API 연동
---
### 1.2 🟡 부분 연동 모듈
#### Sales 모듈 (50% 연동)
| 기능 | 상태 | Gap |
|------|------|-----|
| 거래처 관리 | ✅ | - |
| 단가 관리 | ✅ | - |
| 견적 관리 | 🆕 | `QuoteController` 필요 |
| 주문 관리 | 🆕 | `OrderController` 필요 |
| 영업 실적 | 🆕 | 리포트 API 필요 |
**필요 API 목록**:
```
POST /api/v1/quotes
GET /api/v1/quotes
GET /api/v1/quotes/{id}
PUT /api/v1/quotes/{id}
DELETE /api/v1/quotes/{id}
POST /api/v1/quotes/{id}/send
POST /api/v1/quotes/{id}/convert-to-order
GET /api/v1/orders
POST /api/v1/orders
GET /api/v1/orders/{id}
PUT /api/v1/orders/{id}
GET /api/v1/reports/sales-performance
```
---
### 1.3 🔴 Mock 데이터 모듈 (연동률 0%)
#### Accounting 모듈 (17 페이지)
**현재 상태**: 모든 페이지에서 `generateMockData()` 함수 사용
**필요 API 우선순위**:
| 우선순위 | 기능 | 필요 API | 복잡도 |
|---------|------|----------|--------|
| 🔴 높음 | 매출 관리 | `SalesController` CRUD | 중 |
| 🔴 높음 | 매입 관리 | `PurchaseController` CRUD | 중 |
| 🔴 높음 | 수금 관리 | `CollectionController` CRUD | 중 |
| 🔴 높음 | 지급 관리 | `PaymentController` CRUD | 중 |
| 🟡 중간 | 전표 관리 | `SlipController` CRUD | 상 |
| 🟡 중간 | 세금계산서 | `TaxInvoiceController` + 외부연동 | 상 |
| 🟢 낮음 | 장부 조회 | `LedgerController` (조회 전용) | 하 |
| 🟢 낮음 | 결산 | `ClosingController` | 상 |
**예상 개발 규모**: Controller 8개, 모델 10+개
---
#### HR 모듈 (9 페이지)
**현재 상태**: 모든 페이지에서 Mock 데이터 사용
**필요 API 우선순위**:
| 우선순위 | 기능 | 필요 API | 복잡도 |
|---------|------|----------|--------|
| 🔴 높음 | 사원 관리 | `EmployeeController` CRUD | 중 |
| 🔴 높음 | 부서 관리 | `DepartmentController` CRUD | 하 |
| 🔴 높음 | 근태 관리 | `AttendanceController` + 출퇴근 | 중 |
| 🟡 중간 | 휴가 관리 | `LeaveController` + 승인 | 중 |
| 🟡 중간 | 급여 관리 | `SalaryController` + 계산 | 상 |
| 🟢 낮음 | 카드 관리 | `EmployeeCardController` | 하 |
| 🟢 낮음 | HR 설정 | `HrSettingController` | 하 |
**예상 개발 규모**: Controller 7개, 모델 8+개
---
#### Board 모듈 (6 페이지)
**현재 상태**: Mock 데이터 사용
**필요 API**:
```
GET /api/v1/boards
GET /api/v1/boards/{boardType}/posts
POST /api/v1/boards/{boardType}/posts
GET /api/v1/posts/{id}
PUT /api/v1/posts/{id}
DELETE /api/v1/posts/{id}
POST /api/v1/posts/{id}/comments
GET /api/v1/posts/{id}/files
POST /api/v1/posts/{id}/files
```
**예상 개발 규모**: Controller 3개, 모델 3개
---
#### Approval 모듈 (4 페이지)
**현재 상태**: Mock 데이터 사용
**필요 API**:
```
GET /api/v1/approvals
POST /api/v1/approvals
GET /api/v1/approvals/{id}
POST /api/v1/approvals/{id}/approve
POST /api/v1/approvals/{id}/reject
GET /api/v1/approval-templates
GET /api/v1/approval-lines
POST /api/v1/approval-lines
```
**예상 개발 규모**: Controller 3개, 모델 4개
---
#### Settings 모듈 (10 페이지)
**현재 상태**:
- 권한 관리: localStorage 사용 (⚠️ 보안 이슈)
- 기타: Mock 데이터
**필요 API**:
```
# 권한 관리 (우선순위 높음)
GET /api/v1/permissions
POST /api/v1/permissions
GET /api/v1/roles
POST /api/v1/roles
PUT /api/v1/roles/{id}/permissions
# 사용자 관리
GET /api/v1/users
POST /api/v1/users
PUT /api/v1/users/{id}
# 메뉴 관리
GET /api/v1/menus
PUT /api/v1/menus
# 시스템 설정
GET /api/v1/settings
PUT /api/v1/settings
```
**⚠️ 특별 주의**: 권한 관리 localStorage → API 전환 우선
---
#### Dashboard 모듈 (1 페이지)
**현재 상태**: 빈 페이지 (미구현)
**필요 API**:
```
GET /api/v1/dashboard/summary
GET /api/v1/dashboard/sales-chart
GET /api/v1/dashboard/inventory-status
GET /api/v1/dashboard/recent-activities
GET /api/v1/dashboard/pending-approvals
```
---
#### Reports 모듈 (2 페이지)
**현재 상태**: Mock 데이터
**필요 API**:
```
GET /api/v1/reports/sales
GET /api/v1/reports/purchase
GET /api/v1/reports/inventory
GET /api/v1/reports/financial
GET /api/v1/reports/comprehensive
```
---
#### Customer Center 모듈 (6 페이지)
**현재 상태**: Mock 데이터
**필요 API**:
```
GET /api/v1/notices
GET /api/v1/faqs
GET /api/v1/inquiries
POST /api/v1/inquiries
GET /api/v1/inquiries/{id}
```
---
#### Production 모듈 (4 페이지)
**현재 상태**: Mock 데이터 (초기 개발 단계)
**필요 API**:
```
GET /api/v1/production-orders
POST /api/v1/production-orders
GET /api/v1/production-orders/{id}
PUT /api/v1/production-orders/{id}
POST /api/v1/production-orders/{id}/start
POST /api/v1/production-orders/{id}/complete
GET /api/v1/work-orders
POST /api/v1/work-performance
```
---
## 2. 우선순위 권장사항
### Phase 1: 핵심 비즈니스 (1-2주)
| 순위 | 모듈 | 작업 | 이유 |
|------|------|------|------|
| 1 | Settings | 권한 API 전환 | 🔴 보안 이슈 |
| 2 | Sales | 견적 관리 API | 핵심 영업 기능 |
| 3 | Accounting | 매출/매입 API | 핵심 회계 기능 |
### Phase 2: 운영 지원 (2-3주)
| 순위 | 모듈 | 작업 | 이유 |
|------|------|------|------|
| 4 | HR | 사원/근태 API | 기본 인사 관리 |
| 5 | Approval | 결재 시스템 API | 업무 프로세스 |
| 6 | Board | 게시판 API | 커뮤니케이션 |
### Phase 3: 부가 기능 (3-4주)
| 순위 | 모듈 | 작업 | 이유 |
|------|------|------|------|
| 7 | Dashboard | 대시보드 API | 경영 현황 |
| 8 | Reports | 리포트 API | 분석 기능 |
| 9 | Customer Center | 고객센터 API | 지원 기능 |
| 10 | Production | 생산 관리 API | 제조 기능 |
---
## 3. 기술적 Gap
### 3.1 API 클라이언트 패턴 불일치
| 패턴 | 사용처 | 문제점 |
|------|--------|--------|
| `/api/proxy/*` | Items, Clients | ✅ 표준 패턴 |
| `/api/v1/*` | Pricing | Server Actions 사용 |
| `generateMockData()` | 대부분 | Mock 데이터 |
**권장사항**: `/api/proxy/*` 패턴으로 통일
### 3.2 인증 토큰 처리
- **현재**: HttpOnly Cookie (access_token)
- **문제**: 일부 페이지에서 토큰 갱신 미처리
- **권장**: 토큰 갱신 미들웨어 적용
### 3.3 에러 처리
- **현재**: 페이지별 개별 처리
- **권장**: 글로벌 에러 핸들러 + Toast 알림 통일
---
## 4. 개발 예상 규모
### API 개발 (Laravel)
| 항목 | 수량 |
|------|------|
| 신규 Controller | 25+ |
| 신규 Model | 30+ |
| 신규 Migration | 20+ |
| FormRequest | 40+ |
| Resource | 30+ |
### React 연동
| 항목 | 수량 |
|------|------|
| API 클라이언트 함수 | 80+ |
| Mock → API 전환 페이지 | 95개 |
| 새 타입 정의 | 50+ |
---
## 5. 리스크 및 대응
| 리스크 | 영향도 | 대응 방안 |
|--------|--------|----------|
| 권한 관리 localStorage | 🔴 높음 | 즉시 API 전환 필요 |
| Mock 데이터 의존도 | 🟡 중간 | 점진적 전환 |
| API 응답 형식 불일치 | 🟡 중간 | Resource 클래스 표준화 |
| 다중 테넌트 미적용 | 🔴 높음 | BelongsToTenant 확인 |
---
## 6. 다음 단계 권장
1. **즉시 조치**
- [ ] Settings 권한 API 개발 및 localStorage 제거
- [ ] API 응답 표준 정의 (Resource 클래스)
2. **Phase 4 준비**
- [ ] 영업 모듈 견적 API 개발
- [ ] 회계 모듈 매출/매입 API 개발
3. **표준화 작업**
- [ ] API 클라이언트 패턴 통일
- [ ] 에러 처리 글로벌화
- [ ] 토큰 갱신 자동화
---
*이 문서는 Phase 3 API 분석의 일부로 작성되었습니다.*