- DummyDataSeeder 및 개별 시더 추가 (Client, BadDebt, Deposit 등)
- payments.paid_at nullable 마이그레이션
- subscriptions 취소 컬럼 추가
- clients 테이블 bad_debt 컬럼 제거
- PlanController, ClientService 수정
- 불필요한 claudedocs, flow-test 파일 정리
- flow-tester-auth.json: 인증 API 테스트 설정 추가
- flow-tester-client.json: Client API 테스트 설정 업데이트
- flow-tester-item-master.json: ItemMaster API 테스트 설정 추가
- LOGICAL_RELATIONSHIPS.md: 논리 관계 문서 업데이트
- 거래처 유형(client_type), 연락처(mobile, fax), 담당자 정보 필드 추가
- 발주처 설정(account_id/password, payment_day) 필드 추가
- 약정 세금(tax_agreement, tax_amount, tax_start/end_date) 필드 추가
- 악성채권(bad_debt 관련 5개 필드) 정보 필드 추가
- Model, Service, FormRequest, Swagger 문서 업데이트
- 견적 API 계획에 문서 발송 API(email/fax/kakao) 요구사항 추가
- 마이그레이션 생성: quotes, quote_items, quote_revisions 테이블
- Model 생성: Quote, QuoteItem, QuoteRevision
- BelongsToTenant, SoftDeletes 트레이트 적용
- 상태 관리 메서드 및 스코프 구현
- 개발 계획서 작성 및 진행 상황 문서화
- 삭제 전 product_components 테이블에서 사용 여부 확인
- BOM 구성품으로 사용 중인 품목 삭제 차단 (400 에러)
- 일괄 삭제에도 동일한 참조 체크 적용
- 품목 관련 에러 메시지 추가 (error.item.*)
- 품목 삭제 API 테스트 플로우 JSON 추가
- 동기화 상태 분류 (new, up_to_date, updatable, customized, deleted)
- 동기화 액션 유형 (개별, 신규 가져오기, 기존 업데이트, 선택 동기화)
- 커스터마이징 메뉴 보호 정책 (force 옵션)
- 동기화 전용 API 스펙 4개 엔드포인트
- MenuSyncService 메서드 설계
- MNG 동기화 센터 UI 와이어프레임
- MENU_INTEGRATION_SYSTEM_DESIGN.md: 글로벌-테넌트 메뉴 연결 시스템 설계
- global_menu_id, is_customized 컬럼 추가 계획
- API 엔드포인트 설계 (글로벌/테넌트 메뉴 관리)
- MNG 화면 설계 (복제, 동기화 기능)
- 구현 Phase 1~4 계획
- MENU_INSERT_QUERIES.sql: PDF 기획서 기반 신규 메뉴 23개 INSERT 쿼리
- 인사관리 (근태/휴가/급여)
- 전자결재 (기안함/결재함/참조함)
- 게시판, 보고서, 계정정보, 회사정보, 구독관리, 결제내역, 고객센터
- 기준정보 관리 하위 8개 메뉴
[추가된 파일]
- app/Models/Tenants/TenantStatField.php
- 테넌트별 통계 필드 설정 모델
- Scopes: forTable, critical, withAggregation, ordered
- 통계 시스템의 메타 정보 제공
- claudedocs/mes/HYBRID_STRUCTURE_GUIDE.md
- 하이브리드 구조 사용 가이드 문서
- 데이터베이스 구조 설명
- 코드 예제 (Product, ProductComponent 생성)
- 통계 쿼리 예제
- 성능 고려사항 및 주의사항
[모델 기능]
- BelongsToTenant, ModelTrait 적용
- aggregation_types JSON 자동 캐스팅
- tenant, target_table, field_key 조합으로 통계 필드 관리
[문서 내용]
- 고정 필드 vs 동적 필드 선택 기준
- attributes JSON 사용법
- 통계 쿼리 예제 (JSON_EXTRACT)
- CategoryField와 연동 방법
- 향후 Virtual Column 최적화 가이드
- 통합 품목 조회 API (materials + products UNION)
- ItemsService, ItemsController, Swagger 문서 생성
- 타입 필터링 (FG/PT/SM/RM/CS), 검색, 카테고리 지원
- Collection merge 방식으로 UNION 쿼리 안정화
- 품목-가격 통합 조회
- PricingService.getPriceByType() 추가 (SALE/PURCHASE 지원)
- 단일 품목 조회 시 판매가/매입가 선택적 포함
- 고객그룹 가격 우선순위 적용 및 시계열 조회
- 자재 타입 명시적 관리
- materials.material_type 컬럼 추가 (SM/RM/CS)
- 기존 데이터 344개 자동 변환 (RAW→RM, SUB→SM)
- 인덱스 추가로 조회 성능 최적화
- DB 데이터 정규화
- products.product_type: 760개 정규화 (PRODUCT→FG, PART/SUBASSEMBLY→PT)
- 타입 코드 표준화로 API 일관성 확보
최종 데이터: 제품 760개(FG 297, PT 463), 자재 344개(SM 215, RM 129)
- UserUpdateRequest.php 생성 (검증 로직 분리)
- PasswordChangeRequest.php 생성 (비밀번호 변경 검증)
- SwitchTenantRequest.php 생성 (테넌트 전환 검증)
- UserApi.php에 Request 스키마 추가
- UserController.php FormRequest 적용 및 DI 패턴 적용
- MemberService static 호출 → DI 인스턴스 호출
- lang/ko/message.php user 메시지 키 추가
- SAM API Development Rules 준수 완료
- ClientStoreRequest.php 생성 (검증 로직 분리)
- ClientUpdateRequest.php 생성 (검증 로직 분리)
- ClientController.php FormRequest 적용 및 패턴 통일
- lang/ko/message.php client 메시지 키 추가
- ApiResponse::handle 패턴 통일 (메시지 두 번째 인자)
- SAM API Development Rules 준수 완료
- ProductStoreRequest, ProductUpdateRequest 생성
- ProductController에 FormRequest 적용
- 하드코딩된 메시지를 i18n 키로 변경
- lang/ko/message.php에 product 관련 메시지 키 추가
- SAM API Development Rules 준수
Phase 3-1: ProductApi.php Swagger 점검 완료
- AuthApi.php 응답 형식 실제 코드와 일치화
- logout: {success, message, data} → {message}
- debug-apikey: description 및 응답 형식 추가
- login API 검증 완료
- 요청/응답 스키마와 실제 코드 일치 확인
- user, tenant, menus 구조 정확성 검증
- signup API 중복 확인
- AuthApi.php와 RegisterApi.php 동일 엔드포인트
- RegisterApi.php가 더 상세 (테넌트 생성 포함)
- SWAGGER_AUDIT.md 업데이트
- Phase 2 완료 상태로 변경
- 발견 이슈 4건 추가 (모두 해결)
- SAMInfo.php Auth 태그 상세화
- 인증 흐름 설명 추가 (API Key + Bearer Token)
- 사용 예시 코드 추가
- IP 기반 접근 제어 안내 추가
- RegisterApi.php 보안 어노테이션 추가
- security={"ApiKeyAuth": {}} 설정
- "Authentication: Not Required" 오류 해결
- SWAGGER_AUDIT.md 작업 추적 문서 생성
- Phase별 점검 계획 수립
- 표준 체크리스트 정의
- 진행 상황 추적 체계 구축