Files
sam-api/lang/ko/error.php
hskwon 2d9217c9b4 feat: 견적 시스템 API
- 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>
2025-09-24 17:43:29 +09:00

48 lines
2.1 KiB
PHP

<?php
/**
* 시스템/도메인 에러 메시지 (클라이언트 피드백용 고정 문자열)
* - DB 데이터 아님
* - 공통 핸들러/서비스에서 예외 메시지로 사용
* - 예: throw new NotFoundHttpException(__('error.not_found'));
*/
return [
// 4xx 공통
'not_found' => '존재하지 않는 URI 또는 데이터입니다.', // 404 일반
'tenant_id' => '활성 테넌트가 없습니다.', // 400 (Service::tenantId() 미설정)
'unauthenticated' => '인증에 실패했습니다.', // 401
'forbidden' => '요청에 대한 권한이 없습니다.', // 403
'bad_request' => '잘못된 요청입니다.', // 400 (검증 외 일반 케이스)
// 검증/파라미터
'validation_failed' => '요청 데이터 검증에 실패했습니다.', // 422
'missing_parameter' => '필수 파라미터가 누락되었습니다.', // 400
// 리소스별 (선택: :resource 자리표시자 사용)
'not_found_resource' => ':resource 정보를 찾을 수 없습니다.', // 예: __('error.not_found_resource', ['resource' => '제품'])
// 비즈니스 규칙
'duplicate' => '중복된 데이터가 존재합니다.',
'conflict' => '요청이 현재 상태와 충돌합니다.', // 409
'state_invalid' => '현재 상태에서는 처리할 수 없습니다.', // 409/400
// 서버 오류
'server_error' => '서버 처리 중 오류가 발생했습니다.', // 5xx 일반
// 견적 관련 에러
'estimate' => [
'cannot_delete_sent_or_approved' => '발송되었거나 승인된 견적은 삭제할 수 없습니다.',
'invalid_status_transition' => '현재 상태에서는 변경할 수 없습니다.',
],
// BOM 템플릿 관련
'bom_template' => [
'not_found' => '적용 가능한 BOM 템플릿을 찾을 수 없습니다.',
],
// 모델셋 관련
'modelset' => [
'has_dependencies' => '연관된 제품 또는 하위 카테고리가 있어 삭제할 수 없습니다.',
],
];