- 사용자 등록 + 테넌트 생성 + 시스템 관리자 권한 자동 부여
- 사업자번호 조건부 검증 (active 테넌트만 unique)
- 글로벌 메뉴 자동 복제 (parent_id 매핑 알고리즘)
- DB 트랜잭션으로 전체 프로세스 원자성 보장
추가:
- RegisterRequest: FormRequest 검증 (conditional unique)
- RegisterService: 9-step 통합 비즈니스 로직
- RegisterController: ApiResponse::handle() 패턴
- RegisterApi: 완전한 Swagger 문서
수정:
- MenusStep: 글로벌 메뉴 복제 로직 구현
- message.php: 'registered' 키 추가
- error.php: 4개 에러 메시지 추가
- routes/api.php: POST /api/v1/register 라우트
SAM API Rules 준수:
- Service-First, FormRequest, i18n, Swagger, DB Transaction
- CommonComponents.php: ApiResponse/ErrorResponse 글로벌 스키마 수정
- property="status" → property="success" (boolean)
- property="data" → property="error" (object with code/details)
- AuthApi, AdminApi, UserApi: 개별 응답 스키마 수정
- signup(): allOf 구조로 변경
- index(): Laravel LengthAwarePaginator 구조 적용
- updateMe(): Member schema 참조로 변경
- PermissionApi, MaterialApi, DepartmentApi: 로컬 스키마 재정의 제거
- ClientGroupService: 삭제된 데이터 자동 복원 기능 구현
- store(): withTrashed()로 삭제된 데이터 확인 후 restore()
- update(): 삭제된 코드 존재 시 에러 반환
- ClientApi: client_group_id 필드 추가
- Client, ClientCreateRequest, ClientUpdateRequest 스키마에 추가
- lang/ko/error.php, lang/en/error.php: 에러 메시지 추가
- duplicate_code, has_clients, code_exists_in_deleted
- Swagger 문서 재생성 및 검증 완료
## 주요 변경사항
### BOM 시스템 통합 및 정리
- 기본 BOM 시스템 완전 제거 (미완성 3-tier 구조)
- app/Http/Controllers/Api/V1/BomController.php 삭제
- app/Services/BomService.php 삭제
- app/Models/Products/Bom.php 삭제
- app/Models/Products/BomItem.php 삭제
- BOM 역할 명확화: Product BOM (운영용) + Design BOM (설계용)
- Tag 모델에서 불필요한 BOM 참조 제거
### API 그룹핑 최적화
- Products & Materials 통합: /v1/products/materials/*
- Settings & Configuration 통합: /v1/settings/*
- 필드 설정: /v1/settings/fields/*
- 옵션 관리: /v1/settings/options/*
- 공통 코드: /v1/settings/common/*
- 기존 분산된 라우트 통합으로 일관성 향상
### 번역 완성도 향상
- 영어 에러 메시지 누락 항목 추가
- Settings, Materials, File 관련 메시지 보완
- 한국어/영어 번역 파일 동기화 완료
### 시스템 품질 개선
- API 구조 논리적 재구성으로 사용자 경험 향상
- 코드 복잡도 감소 및 유지보수성 개선
- 불필요한 컨트롤러/서비스 제거로 시스템 단순화
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 5130의 71개 하드코딩 컬럼을 동적 카테고리 필드 시스템으로 전환
- 모터 브라켓 계산 등 핵심 비즈니스 로직 FormulaParser에 통합
- 파라미터 기반 동적 견적 폼 시스템 구축
- 견적 상태 워크플로 (DRAFT → SENT → APPROVED/REJECTED/EXPIRED)
- 모델셋 관리 API: 카테고리+제품+BOM 통합 관리
- 견적 관리 API: 생성/수정/복제/상태변경/미리보기 기능
주요 구현 사항:
- EstimateController/EstimateService: 견적 비즈니스 로직
- ModelSetController/ModelSetService: 모델셋 관리 로직
- Estimate/EstimateItem 모델: 견적 데이터 구조
- 동적 견적 필드 마이그레이션: 스크린/철재 제품 구조
- API 라우트 17개 엔드포인트 추가
- 다국어 메시지 지원 (성공/에러 메시지)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Design BOM 템플릿 diff/clone 엔드포인트 추가
- 컨트롤러 검증 로직 FormRequest 분리(DiffRequest/CloneRequest/Upsert/ReplaceItems)
- BomTemplateService에 diffTemplates/cloneTemplate/replaceItems/쇼우 로직 정리
- ModelVersionController createDraft FormRequest 적용 및 서비스 호출 정리
- 모델버전 release 전 유효성 검사(존재/활성/테넌트 일치, qty>0, 중복 금지) 추가
- DB enum 미사용 방침 준수(status 문자열 유지)
- model_versions 인덱스 최적화(tenant_id, model_id, status / 기간 범위)
- Swagger 문서(Design BOM) 및 i18n 메시지 키 추가
- 모든 서비스를 인스턴스구조로 변경예정
* 규모가 커질수록 → 인스턴스(=DI) 설계가 유리
* 작고 단순한 유틸/순수 함수만 스태틱으로 유지
* DI/모킹/테스트 쉬움 (서비스 교체·부분 테스트 가능)
* 의존성 교체 쉬움 (Repo/캐시/로거…)
* 상태·컨텍스트 주입 명확 (테넌트/유저/트랜잭션)