# SAM API 작업 현황 ## TODO - 운영용 작업지시 취소 기능 (Production Work Order Cancellation) ### 배경 - 현재 `revertProductionOrder()`는 **개발/테스트용** (전체 초기화 - work_orders 및 하위 데이터 삭제) - 운영 환경에서는 **비즈니스 취소** 개념이 필요 (이력 보존 + 역분개) - 개발용과 운영용이 **별도 공존**해야 함 ### 요구사항 1. **상태 변경**: `pending`/`in_progress` → `cancelled` (completed는 취소 거부) 2. **자재 역분개**: 삭제가 아닌 역분개 트랜잭션 생성 (이력 보존) 3. **사유 기록 필수**: `cancelled_at`, `cancelled_by`, `cancel_reason` 필드 추가 4. **단건 처리**: 특정 작업지시 1건 단위로 취소 (전체 초기화와 구분) 5. **감사 추적**: 취소 이력이 감사 로그에 남아야 함 ### 영향 범위 - `WorkOrderService.php` - `cancelWorkOrder()` 메서드 신규 - `work_orders` 테이블 - `cancelled_at`, `cancelled_by`, `cancel_reason` (options JSON 활용 가능) - `stock_transactions` - 역분개 트랜잭션 생성 로직 - 프론트엔드 - 취소 사유 입력 모달 + 취소 버튼 조건부 표시 ### 우선순위: 🟡 중간 (Phase 4 이후) --- ## TODO - 건설관리 Backend API 미개발 모듈 | 모듈 | 설명 | |------|------| | bidding | 입찰관리 | | site-briefings | 현장설명회 | | structure-review | 구조검토 | | labor-management | 노무관리 (Labor API는 별도 완료) | --- ## 최근 커밋 이력 (참고용) | 날짜 | 커밋 | 내용 | |------|------|------| | 2026-02-21 | `5ecd966` | 견적 converted 상태 데이터 기반 변경 | | 2026-02-21 | `b0547c4` | FG 수식 산출 입력폼/파싱/폴백 추가 | | 2026-02-19 | `23029b1` | 작업지시 show() materialInputs eager loading 추가 | | 2026-02-19 | `316d412` | 슬랫 작업일지 데이터 파이프라인 구축 |