2026-02-22 03:04:54 +09:00
|
|
|
# SAM API 작업 현황
|
2025-12-09 09:40:01 +09:00
|
|
|
|
2026-02-22 03:04:54 +09:00
|
|
|
## TODO - 운영용 작업지시 취소 기능 (Production Work Order Cancellation)
|
2025-12-09 09:40:01 +09:00
|
|
|
|
2026-02-22 03:04:54 +09:00
|
|
|
### 배경
|
|
|
|
|
- 현재 `revertProductionOrder()`는 **개발/테스트용** (전체 초기화 - work_orders 및 하위 데이터 삭제)
|
|
|
|
|
- 운영 환경에서는 **비즈니스 취소** 개념이 필요 (이력 보존 + 역분개)
|
|
|
|
|
- 개발용과 운영용이 **별도 공존**해야 함
|
2025-12-09 09:40:01 +09:00
|
|
|
|
2026-02-22 03:04:54 +09:00
|
|
|
### 요구사항
|
|
|
|
|
1. **상태 변경**: `pending`/`in_progress` → `cancelled` (completed는 취소 거부)
|
|
|
|
|
2. **자재 역분개**: 삭제가 아닌 역분개 트랜잭션 생성 (이력 보존)
|
|
|
|
|
3. **사유 기록 필수**: `cancelled_at`, `cancelled_by`, `cancel_reason` 필드 추가
|
|
|
|
|
4. **단건 처리**: 특정 작업지시 1건 단위로 취소 (전체 초기화와 구분)
|
|
|
|
|
5. **감사 추적**: 취소 이력이 감사 로그에 남아야 함
|
2025-12-09 09:40:01 +09:00
|
|
|
|
2026-02-22 03:04:54 +09:00
|
|
|
### 영향 범위
|
|
|
|
|
- `WorkOrderService.php` - `cancelWorkOrder()` 메서드 신규
|
|
|
|
|
- `work_orders` 테이블 - `cancelled_at`, `cancelled_by`, `cancel_reason` (options JSON 활용 가능)
|
|
|
|
|
- `stock_transactions` - 역분개 트랜잭션 생성 로직
|
|
|
|
|
- 프론트엔드 - 취소 사유 입력 모달 + 취소 버튼 조건부 표시
|
2025-12-09 09:40:01 +09:00
|
|
|
|
2026-02-22 03:04:54 +09:00
|
|
|
### 우선순위: 🟡 중간 (Phase 4 이후)
|
2025-12-09 09:40:01 +09:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
2026-02-22 03:04:54 +09:00
|
|
|
## TODO - 건설관리 Backend API 미개발 모듈
|
feat: [quote] 견적 API Phase 2-3 완료 (Service + Controller Layer)
Phase 2 - Service Layer:
- QuoteService: 견적 CRUD + 상태관리 (확정/전환)
- QuoteNumberService: 견적번호 채번 (KD-{PREFIX}-YYMMDD-SEQ)
- FormulaEvaluatorService: 수식 평가 엔진 (SUM, IF, ROUND 등)
- QuoteCalculationService: 자동산출 (스크린/철재 제품)
- QuoteDocumentService: PDF 생성 및 이메일/카카오 발송
Phase 3 - Controller Layer:
- QuoteController: 16개 엔드포인트
- FormRequest 7개: Index, Store, Update, BulkDelete, Calculate, SendEmail, SendKakao
- QuoteApi.php: Swagger 문서 (12개 스키마, 16개 엔드포인트)
- routes/api.php: 16개 라우트 등록
i18n 키 추가:
- error.php: quote_not_found, formula_* 등
- message.php: quote.* 성공 메시지
2025-12-04 22:03:40 +09:00
|
|
|
|
2026-02-22 03:04:54 +09:00
|
|
|
| 모듈 | 설명 |
|
feat: [quote] 견적 API Phase 2-3 완료 (Service + Controller Layer)
Phase 2 - Service Layer:
- QuoteService: 견적 CRUD + 상태관리 (확정/전환)
- QuoteNumberService: 견적번호 채번 (KD-{PREFIX}-YYMMDD-SEQ)
- FormulaEvaluatorService: 수식 평가 엔진 (SUM, IF, ROUND 등)
- QuoteCalculationService: 자동산출 (스크린/철재 제품)
- QuoteDocumentService: PDF 생성 및 이메일/카카오 발송
Phase 3 - Controller Layer:
- QuoteController: 16개 엔드포인트
- FormRequest 7개: Index, Store, Update, BulkDelete, Calculate, SendEmail, SendKakao
- QuoteApi.php: Swagger 문서 (12개 스키마, 16개 엔드포인트)
- routes/api.php: 16개 라우트 등록
i18n 키 추가:
- error.php: quote_not_found, formula_* 등
- message.php: quote.* 성공 메시지
2025-12-04 22:03:40 +09:00
|
|
|
|------|------|
|
2026-02-22 03:04:54 +09:00
|
|
|
| bidding | 입찰관리 |
|
|
|
|
|
| site-briefings | 현장설명회 |
|
|
|
|
|
| structure-review | 구조검토 |
|
|
|
|
|
| labor-management | 노무관리 (Labor API는 별도 완료) |
|
feat: [quote] 견적 API Phase 2-3 완료 (Service + Controller Layer)
Phase 2 - Service Layer:
- QuoteService: 견적 CRUD + 상태관리 (확정/전환)
- QuoteNumberService: 견적번호 채번 (KD-{PREFIX}-YYMMDD-SEQ)
- FormulaEvaluatorService: 수식 평가 엔진 (SUM, IF, ROUND 등)
- QuoteCalculationService: 자동산출 (스크린/철재 제품)
- QuoteDocumentService: PDF 생성 및 이메일/카카오 발송
Phase 3 - Controller Layer:
- QuoteController: 16개 엔드포인트
- FormRequest 7개: Index, Store, Update, BulkDelete, Calculate, SendEmail, SendKakao
- QuoteApi.php: Swagger 문서 (12개 스키마, 16개 엔드포인트)
- routes/api.php: 16개 라우트 등록
i18n 키 추가:
- error.php: quote_not_found, formula_* 등
- message.php: quote.* 성공 메시지
2025-12-04 22:03:40 +09:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
2026-02-22 03:04:54 +09:00
|
|
|
## 최근 커밋 이력 (참고용)
|
feat: [quote] 견적 API Phase 2-3 완료 (Service + Controller Layer)
Phase 2 - Service Layer:
- QuoteService: 견적 CRUD + 상태관리 (확정/전환)
- QuoteNumberService: 견적번호 채번 (KD-{PREFIX}-YYMMDD-SEQ)
- FormulaEvaluatorService: 수식 평가 엔진 (SUM, IF, ROUND 등)
- QuoteCalculationService: 자동산출 (스크린/철재 제품)
- QuoteDocumentService: PDF 생성 및 이메일/카카오 발송
Phase 3 - Controller Layer:
- QuoteController: 16개 엔드포인트
- FormRequest 7개: Index, Store, Update, BulkDelete, Calculate, SendEmail, SendKakao
- QuoteApi.php: Swagger 문서 (12개 스키마, 16개 엔드포인트)
- routes/api.php: 16개 라우트 등록
i18n 키 추가:
- error.php: quote_not_found, formula_* 등
- message.php: quote.* 성공 메시지
2025-12-04 22:03:40 +09:00
|
|
|
|
2026-02-22 03:04:54 +09:00
|
|
|
| 날짜 | 커밋 | 내용 |
|
feat: [quote] 견적 API Phase 2-3 완료 (Service + Controller Layer)
Phase 2 - Service Layer:
- QuoteService: 견적 CRUD + 상태관리 (확정/전환)
- QuoteNumberService: 견적번호 채번 (KD-{PREFIX}-YYMMDD-SEQ)
- FormulaEvaluatorService: 수식 평가 엔진 (SUM, IF, ROUND 등)
- QuoteCalculationService: 자동산출 (스크린/철재 제품)
- QuoteDocumentService: PDF 생성 및 이메일/카카오 발송
Phase 3 - Controller Layer:
- QuoteController: 16개 엔드포인트
- FormRequest 7개: Index, Store, Update, BulkDelete, Calculate, SendEmail, SendKakao
- QuoteApi.php: Swagger 문서 (12개 스키마, 16개 엔드포인트)
- routes/api.php: 16개 라우트 등록
i18n 키 추가:
- error.php: quote_not_found, formula_* 등
- message.php: quote.* 성공 메시지
2025-12-04 22:03:40 +09:00
|
|
|
|------|------|------|
|
2026-02-22 03:04:54 +09:00
|
|
|
| 2026-02-21 | `5ecd966` | 견적 converted 상태 데이터 기반 변경 |
|
|
|
|
|
| 2026-02-21 | `b0547c4` | FG 수식 산출 입력폼/파싱/폴백 추가 |
|
|
|
|
|
| 2026-02-19 | `23029b1` | 작업지시 show() materialInputs eager loading 추가 |
|
|
|
|
|
| 2026-02-19 | `316d412` | 슬랫 작업일지 데이터 파이프라인 구축 |
|