docs: 개발 계획 및 변경 이력 문서 추가
- 작업지시 계획 문서 업데이트 - MES 통합 분석, 서버 컴포넌트 감사 계획 추가 - 수주관리, 인수인계서 API 연동 변경 이력 추가 - sub/ 하위 계획 문서들 추가 (카테고리, 계약, 품목, 단가 등) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
94
changes/20250108_order_management_phase1.md
Normal file
94
changes/20250108_order_management_phase1.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# 변경 내용 요약
|
||||
|
||||
**날짜:** 2025-01-08
|
||||
**작업자:** Claude Code
|
||||
**이슈:** Order Management API Phase 1.1
|
||||
|
||||
## 📋 변경 개요
|
||||
수주관리(Order Management) API의 기본 CRUD 및 상태 관리 기능을 구현했습니다.
|
||||
WorkOrderService/Controller 패턴을 참고하여 SAM API 규칙을 준수하는 OrderService와 OrderController를 생성했습니다.
|
||||
|
||||
## 📁 수정/추가된 파일
|
||||
|
||||
### 신규 생성 (7개)
|
||||
- `app/Services/OrderService.php` - 수주 비즈니스 로직 서비스
|
||||
- `app/Http/Controllers/Api/V1/OrderController.php` - 수주 API 컨트롤러
|
||||
- `app/Http/Requests/Order/StoreOrderRequest.php` - 생성 요청 검증
|
||||
- `app/Http/Requests/Order/UpdateOrderRequest.php` - 수정 요청 검증
|
||||
- `app/Http/Requests/Order/UpdateOrderStatusRequest.php` - 상태 변경 요청 검증
|
||||
- `app/Swagger/v1/OrderApi.php` - Swagger API 문서
|
||||
|
||||
### 수정 (5개)
|
||||
- `routes/api.php` - OrderController import 및 라우트 추가
|
||||
- `lang/ko/message.php` - 수주 관련 메시지 키 추가
|
||||
- `lang/en/message.php` - 수주 관련 메시지 키 추가
|
||||
- `lang/ko/error.php` - 수주 에러 메시지 키 추가
|
||||
- `lang/en/error.php` - 수주 에러 메시지 키 추가
|
||||
|
||||
## 🔧 상세 변경 사항
|
||||
|
||||
### 1. OrderService
|
||||
**기능:**
|
||||
- `index()` - 목록 조회 (검색/필터링/페이징)
|
||||
- `stats()` - 통계 조회 (상태별 건수/금액)
|
||||
- `show()` - 단건 조회
|
||||
- `store()` - 생성 (수주번호 자동생성)
|
||||
- `update()` - 수정 (완료/취소 상태 수정 불가)
|
||||
- `destroy()` - 삭제 (진행중/완료 상태 삭제 불가)
|
||||
- `updateStatus()` - 상태 변경 (전환 규칙 검증)
|
||||
|
||||
**내부 메서드:**
|
||||
- `validateStatusTransition()` - 상태 전환 규칙 검증
|
||||
- `calculateItemAmounts()` - 품목 금액 계산 (공급가, 세액, 합계)
|
||||
- `generateOrderNo()` - 수주번호 자동 생성 (ORD{YYYYMMDD}{0001})
|
||||
|
||||
### 2. OrderController
|
||||
**엔드포인트:**
|
||||
- `GET /api/v1/orders` - 목록 조회
|
||||
- `GET /api/v1/orders/stats` - 통계 조회
|
||||
- `POST /api/v1/orders` - 생성
|
||||
- `GET /api/v1/orders/{id}` - 단건 조회
|
||||
- `PUT /api/v1/orders/{id}` - 수정
|
||||
- `DELETE /api/v1/orders/{id}` - 삭제
|
||||
- `PATCH /api/v1/orders/{id}/status` - 상태 변경
|
||||
|
||||
### 3. FormRequest 클래스
|
||||
**StoreOrderRequest:**
|
||||
- 주문유형, 카테고리, 거래처 정보, 금액, 배송, 품목 배열 검증
|
||||
|
||||
**UpdateOrderRequest:**
|
||||
- Store와 유사하나 order_no 제외 (수정 불가)
|
||||
|
||||
**UpdateOrderStatusRequest:**
|
||||
- status 필드만 검증 (Rule::in 사용)
|
||||
|
||||
### 4. 상태 전환 규칙
|
||||
```
|
||||
DRAFT → CONFIRMED, CANCELLED
|
||||
CONFIRMED → IN_PROGRESS, CANCELLED
|
||||
IN_PROGRESS → COMPLETED, CANCELLED
|
||||
COMPLETED → (변경 불가)
|
||||
CANCELLED → DRAFT (복구 가능)
|
||||
```
|
||||
|
||||
### 5. Swagger 문서
|
||||
**스키마:**
|
||||
- Order, OrderItem, OrderPagination, OrderStats
|
||||
- OrderCreateRequest, OrderUpdateRequest, OrderItemRequest, OrderStatusRequest
|
||||
|
||||
## ✅ 검증 완료 항목
|
||||
- [x] Pint 코드 스타일 검사 (6개 파일 자동 수정)
|
||||
- [x] Swagger 문서 생성 (`php artisan l5-swagger:generate`)
|
||||
- [x] Service-First 아키텍처 준수
|
||||
- [x] FormRequest 검증 패턴 사용
|
||||
- [x] i18n 메시지 키 사용
|
||||
- [x] Multi-tenancy (BelongsToTenant) 지원
|
||||
- [x] 감사 로그 컬럼 (created_by, updated_by, deleted_by)
|
||||
|
||||
## ⚠️ 배포 시 주의사항
|
||||
- Order 모델은 기존에 이미 존재함 (마이그레이션 불필요)
|
||||
- Swagger UI에서 API 테스트 가능: http://api.sam.kr/api-docs/index.html
|
||||
|
||||
## 🔗 관련 문서
|
||||
- 계획 문서: `docs/plans/order-management-plan.md`
|
||||
- 참고 패턴: `app/Services/WorkOrderService.php`, `app/Http/Controllers/Api/V1/WorkOrderController.php`
|
||||
81
changes/20260109_handover_report_api_integration.md
Normal file
81
changes/20260109_handover_report_api_integration.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# 변경 내용 요약
|
||||
|
||||
**날짜:** 2026-01-09
|
||||
**작업자:** Claude Code
|
||||
**이슈:** Phase 1.2 인수인계보고서관리 Frontend API 연동
|
||||
|
||||
## 📋 변경 개요
|
||||
|
||||
인수인계보고서관리(Handover Report) Frontend의 actions.ts를 Mock 데이터에서 실제 API 연동으로 변환했습니다.
|
||||
|
||||
## 📁 수정된 파일
|
||||
|
||||
| 파일 | 변경 내용 |
|
||||
|------|----------|
|
||||
| `react/src/components/business/construction/handover-report/actions.ts` | Mock → API 완전 변환 |
|
||||
| `docs/plans/sub/handover-report-plan.md` | 진행 상태 업데이트 |
|
||||
|
||||
## 🔧 상세 변경 사항
|
||||
|
||||
### 1. actions.ts 완전 재작성 (499줄)
|
||||
|
||||
**제거된 코드:**
|
||||
- `MOCK_REPORTS` 배열 (7개 목업 데이터)
|
||||
- `MOCK_REPORT_DETAILS` 객체 (상세 목업 데이터)
|
||||
- 모든 목업 기반 로직
|
||||
|
||||
**추가된 코드:**
|
||||
|
||||
#### 헬퍼 함수
|
||||
```typescript
|
||||
// API 요청 헬퍼 (쿠키 기반 인증)
|
||||
async function apiRequest<T>(endpoint, options): Promise<ApiResult<T>>
|
||||
|
||||
// 타입 변환 함수들
|
||||
function transformHandoverReport(apiData): HandoverReport
|
||||
function transformHandoverReportDetail(apiData): HandoverReportDetail
|
||||
function transformToApiRequest(data): Record<string, unknown>
|
||||
```
|
||||
|
||||
#### API 연동 함수
|
||||
| 함수명 | HTTP Method | Endpoint | 용도 |
|
||||
|--------|-------------|----------|------|
|
||||
| `getHandoverReportList` | GET | `/construction/handover-reports` | 목록 조회 |
|
||||
| `getHandoverReportStats` | GET | `/construction/handover-reports/stats` | 통계 조회 |
|
||||
| `getHandoverReportDetail` | GET | `/construction/handover-reports/{id}` | 상세 조회 |
|
||||
| `createHandoverReport` | POST | `/construction/handover-reports` | 등록 (신규) |
|
||||
| `updateHandoverReport` | PUT | `/construction/handover-reports/{id}` | 수정 |
|
||||
| `deleteHandoverReport` | DELETE | `/construction/handover-reports/{id}` | 삭제 |
|
||||
| `deleteHandoverReports` | DELETE | `/construction/handover-reports/bulk` | 일괄 삭제 |
|
||||
|
||||
#### 타입 변환 매핑
|
||||
- `snake_case` (API) ↔ `camelCase` (Frontend)
|
||||
- 중첩 객체 처리: `managers`, `items`, `external_equipment_cost`
|
||||
- null 안전 처리 및 기본값 설정
|
||||
|
||||
### 2. handover-report-plan.md 업데이트
|
||||
|
||||
- 상태: ⏳ 대기 → 🔄 진행중
|
||||
- Frontend 작업 상태 갱신
|
||||
- 마지막 업데이트 날짜 변경
|
||||
|
||||
## ✅ 검증 결과
|
||||
|
||||
- [x] TypeScript 타입 검사: 오류 없음
|
||||
- [x] ESLint 검사: 오류 없음
|
||||
- [x] 타입 정합성: types.ts와 완전 일치
|
||||
|
||||
## ⚠️ 알려진 이슈 (별도 작업 필요)
|
||||
|
||||
`HandoverReportListClient.tsx`에 기존 타입 불일치 존재:
|
||||
- `partnerId` - HandoverReport 타입에 없음
|
||||
- `contractManagerId` - HandoverReport 타입에 없음
|
||||
- `constructionPMId` - HandoverReport 타입에 없음
|
||||
|
||||
→ 이번 작업 범위 외, 별도 수정 필요
|
||||
|
||||
## 🔗 관련 문서
|
||||
|
||||
- [상위 계획](../plans/construction-api-integration-plan.md)
|
||||
- [세부 계획](../plans/sub/handover-report-plan.md)
|
||||
- [API 백엔드](../../api/app/Services/Construction/HandoverReportService.php)
|
||||
Reference in New Issue
Block a user