Commit Graph

77 Commits

Author SHA1 Message Date
8d3ea4bb39 feat: 단가 관리 API 구현 및 Flow Tester 호환성 개선
- Price, PriceRevision 모델 추가 (PriceHistory 대체)
- PricingService: CRUD, 원가 조회, 확정 기능
- PricingController: statusCode 파라미터로 201 반환 지원
- NotFoundHttpException(404) 적용 (존재하지 않는 리소스)
- FormRequest 분리 (Store, Update, Index, Cost, ByItems)
- Swagger 문서 업데이트
- ApiResponse::handle()에 statusCode 옵션 추가
- prices/price_revisions 마이그레이션 및 데이터 이관
2025-12-08 19:03:50 +09:00
5131bfff98 feat: item_fields 테이블에 is_active 컬럼 추가
- 마이그레이션: is_active 컬럼 추가 (기본값 true)
- ItemField 모델: fillable, casts에 is_active 추가
- ItemFieldService: store, storeIndependent, clone, update 메서드에 is_active 처리
- FormRequest: is_active 유효성 검사 규칙 추가
- API Flow 테스트 시나리오 추가 (docs/api-flows/)
- docs/INDEX.md에 api-flows 섹션 추가

ModelTrait::scopeActive() 메서드 사용을 위한 필수 컬럼
2025-12-05 14:40:09 +09:00
2b57910ca5 chore: 누락된 마이그레이션 추가
- create_quote_formula_tables: 견적 수식 테이블 5개
  - quote_formula_categories (카테고리)
  - quote_formulas (수식)
  - quote_formula_ranges (범위값)
  - quote_formula_mappings (매핑값)
  - quote_formula_items (품목 출력)

- add_api_logs_to_admin_api_flow_runs_table: API Flow 로그 컬럼
2025-12-04 22:20:09 +09:00
d164bb4c4a feat: [client] 거래처 API 2차 필드 추가 및 견적 계획 업데이트
- 거래처 유형(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) 요구사항 추가
2025-12-04 21:13:58 +09:00
96e9a0ba18 feat: [quote] 견적관리 API 기반 구축 (Phase 1)
- 마이그레이션 생성: quotes, quote_items, quote_revisions 테이블
- Model 생성: Quote, QuoteItem, QuoteRevision
- BelongsToTenant, SoftDeletes 트레이트 적용
- 상태 관리 메서드 및 스코프 구현
- 개발 계획서 작성 및 진행 상황 문서화
2025-12-04 17:17:05 +09:00
165512e121 feat: [client] Client API 사업자 정보 필드 및 toggle 버그 수정
- business_no, business_type, business_item 필드 추가
- toggle 로직 수정: boolean 캐스팅 호환 (is_active === 'Y' → !is_active)
2025-12-04 15:58:08 +09:00
695afb8a86 chore: flow_runs 테이블 failed_step 컬럼 변경 및 문서 업데이트 2025-12-03 16:49:33 +09:00
198ba8688c feat: PM 이슈에 팀/담당자/고객사 필드 추가
- department_id, team: 부서 (하이브리드 FK + 문자열)
- assignee_id, assignee_name: 담당자 (하이브리드)
- client: 고객사명 (문자열)
2025-12-02 22:11:15 +09:00
a72a744612 feat: 글로벌 메뉴 분리 및 테넌트 메뉴 동기화 시스템 구현
- global_menus 테이블 분리를 위한 menus 컬럼 추가 (global_menu_id, is_customized)
- GlobalMenuController: 글로벌 메뉴 CRUD API
- GlobalMenuService: 글로벌 메뉴 비즈니스 로직
- MenuSyncService: 테넌트 메뉴 동기화 서비스
- MenuBootstrapService: 테넌트 초기 메뉴 생성 로직 개선
- MenuController: 메뉴 재동기화 엔드포인트 추가
2025-12-02 22:11:08 +09:00
84eb4f5ab4 fix: global_menus 마이그레이션에 테이블 존재 체크 추가
- 개발 서버에서 테이블 이미 존재 시 에러 발생 방지
- Schema::hasTable() 체크로 중복 생성 스킵
2025-12-02 22:08:49 +09:00
d9348c0714 feat: global_menus 테이블 분리 및 모델 구현
- global_menus 테이블 생성 (ID 1번부터 시작)
- 기존 menus(tenant_id IS NULL) → global_menus 데이터 이전
- GlobalMenu 모델 생성
- Menu.globalMenu() 관계를 GlobalMenu 모델로 변경
2025-12-02 20:43:29 +09:00
2605d06f91 fix: products 테이블 category_id nullable로 변경
- 외래 키 제약조건으로 인한 INSERT 오류 해결
- category_id 기본값 null 설정
- ON DELETE SET NULL로 외래 키 제약조건 변경
2025-12-02 16:35:19 +09:00
a4a0248a83 fix: products 테이블 category_id 기본값 0 설정
- category_id 필드에 기본값이 없어 INSERT 오류 발생하던 문제 해결
2025-12-02 16:31:34 +09:00
88794c3ce4 feat: [pm] 이슈 일정 필드 추가 마이그레이션
- admin_pm_issues 테이블에 start_date, due_date, estimated_hours 컬럼 추가
- due_date 인덱스 추가
2025-12-02 16:06:18 +09:00
2f2999bb39 chore: archived_records record_type을 varchar로 변경
- enum('tenant','user') → varchar(50)
- 확장성 확보 (department, menu, role 등 추가 가능)
2025-12-02 15:49:31 +09:00
95ae0234c8 feat: 사용자 must_change_password 컬럼 추가
- users 테이블에 must_change_password 컬럼 추가 (boolean, default: false)
- 신규 사용자 생성/비밀번호 초기화 시 강제 비밀번호 변경 기능 지원

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 23:44:45 +09:00
aa93c19da1 feat: [daily-logs] 일일 스크럼 테이블 마이그레이션 추가
테이블:
- admin_pm_daily_logs: 일일 로그 (날짜, 프로젝트, 요약)
- admin_pm_daily_log_entries: 로그 항목 (담당자, 내용, 상태)

관계:
- tenant_id → tenants (multi-tenant)
- project_id → admin_pm_projects (선택적)
- created_by, updated_by, deleted_by → users
2025-12-01 14:22:04 +09:00
47a6facb6b feat: [archived-records] archived_records 테이블에 tenant_id 컬럼 추가
- 테넌트별 아카이브 필터링을 위한 tenant_id 컬럼 추가
- FK 제약조건 없음 (삭제된 테넌트 참조 가능)
- 기존 테넌트 레코드에 main_data.id로 tenant_id 업데이트

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 00:43:44 +09:00
7c40c2395a feat: 마이그레이션 추가
- tenant_type 필드 추가 마이그레이션
- 프로젝트 관리 테이블 생성 마이그레이션
2025-11-30 21:05:55 +09:00
d27e47108d feat: [boards] 게시판 API 시스템 구현
- BoardController, PostController 추가
- Board, BoardSetting 모델 수정
- BoardService 추가
- FormRequest 클래스 추가
- Swagger 문서 추가 (BoardApi, PostApi)
- 게시판 시스템 필드 마이그레이션 추가
2025-11-30 21:05:33 +09:00
d9192045da feat: [pm] is_urgent 필드 마이그레이션 추가
- admin_pm_tasks, admin_pm_issues 테이블에 is_urgent boolean 필드 추가
- 작업/이슈 긴급 토글 기능 지원
2025-11-28 18:08:44 +09:00
aa2962314f feat: item_fields에 field_key, is_locked 컬럼 추가
- field_key: {ID}_{key} 형식으로 고유키 생성
- is_locked, locked_by, locked_at 잠금 컬럼 추가
- ItemFieldService: store/update/clone 로직 수정
- FormRequest: field_key 검증 규칙 추가
- Swagger 스키마 업데이트
2025-11-28 17:39:14 +09:00
b70d79a8d5 feat: API Flow Tester 테이블 마이그레이션 추가
- admin_api_flows: 플로우 정의 저장 테이블
- admin_api_flow_runs: 실행 이력 및 로그 테이블
2025-11-27 18:49:09 +09:00
efa2a84d2c feat(item-master): 잠금 기능 추가 및 FK 레거시 코드 정리
## 잠금 기능 (Lock Feature)
- entity_relationships 테이블에 is_locked, locked_by, locked_at 컬럼 추가
- EntityRelationship 모델에 잠금 관련 헬퍼 메서드 추가
- LockCheckTrait 생성 (destroy 시 잠금 체크 공통 로직)
- 각 Service의 destroy() 메서드에 잠금 체크 적용
- API 응답에 is_locked 필드 포함
- 한국어 에러 메시지 추가

## FK 레거시 코드 정리
- ItemMasterSeeder: entity_relationships 기반으로 전환
- ItemPage 모델: FK 기반 sections() 관계 제거
- ItemSectionService: clone() 메서드 FK 제거
- SectionTemplateService: page_id 컬럼 참조 제거
- EntityRelationship::link() 파라미터 순서 통일

## 기타
- Swagger 스키마에 is_locked 속성 추가
- 프론트엔드 가이드 문서 추가
2025-11-27 15:51:00 +09:00
9588945922 refactor(item-master): 독립 엔티티 아키텍처 적용 및 Swagger 보완
- FK 컬럼 제거: item_sections.page_id, item_fields.section_id, item_bom_items.section_id
- entity_relationships 테이블로 전환하여 독립 엔티티 구조 확립
- ItemMasterField 관련 파일 삭제 (Controller, Service, Model, Requests)
- destroy 메서드 독립 엔티티 아키텍처 적용 (관계 링크만 삭제)
- Swagger 스키마에서 FK 참조 제거
- FormRequest 및 Swagger에 group_id(계층번호) 필드 추가
2025-11-27 10:28:51 +09:00
1d2dadc7da feat(api): item_master_fields 속성을 item_fields로 이관
- item_fields에 category, description, is_common 컬럼 추가
- section_id를 nullable로 변경 (독립 필드 지원)
- item_master_fields 데이터를 item_fields로 이관 (section_id = NULL)
- 기존 item_master_fields 테이블 유지 (하위 호환성)
2025-11-27 09:09:18 +09:00
68260e89e4 feat(api): archived_records 테이블에 batch 필드 추가
- batch_id (uuid): 일괄 삭제 작업 그룹 식별자
- batch_description (string): 작업 설명 (예: 테넌트 ABC 삭제)
- batch_id 인덱스 추가
2025-11-26 23:16:39 +09:00
628d902b0c fix: item_sections.page_id nullable 변경
- 섹션 템플릿(is_template=true)은 특정 페이지에 속하지 않으므로 page_id가 null 허용
- section-templates API 500 에러 해결
2025-11-26 17:07:05 +09:00
bccfa19791 feat: Item Master 하이브리드 구조 전환 및 독립 API 추가
- CASCADE FK → 독립 엔티티 + entity_relationships 링크 테이블
- 독립 API 10개 추가 (섹션/필드/BOM CRUD, clone, usage)
- SectionTemplate 모델 제거 → ItemSection.is_template 통합
- 페이지-섹션, 섹션-필드, 섹션-BOM 링크/언링크 API 14개 추가
- Swagger 문서 업데이트
2025-11-26 14:09:31 +09:00
80ca551026 feat: 소프트삭제 및 타임스탬프 감사 컬럼 추가
- deleted_at이 있는 30개 테이블에 deleted_by 추가
- created_at이 있는 38개 비즈니스 테이블에 created_by, updated_by 추가
- 시스템 테이블 제외
- nullable, COMMENT 포함
- 롤백(down) 메서드 구현
2025-11-24 19:30:23 +09:00
7109fc5199 feat: ItemMaster 데이터베이스 구조 구축 (9개 테이블)
- 마이그레이션 9개 생성 (unit_options, section_templates, item_master_fields, item_pages, item_sections, item_fields, item_bom_items, custom_tabs, tab_columns)
- Eloquent 모델 9개 구현 (ItemMaster 네임스페이스)
- ItemMasterSeeder 작성 및 테스트 데이터 생성

주요 특징:
- Multi-tenant 지원 (BelongsToTenant trait)
- Soft Delete 적용 (deleted_at, deleted_by)
- 감사 로그 지원 (created_by, updated_by)
- JSON 필드로 동적 속성 지원 (display_condition, validation_rules, options, properties)
- FK 제약조건 및 Composite Index 설정
- 계층 구조 (ItemPage → ItemSection → ItemField/ItemBomItem)

SAM API Development Rules 준수
2025-11-20 16:36:55 +09:00
8ce8a35f30 fix: is_active 마이그레이션에 컬럼 존재 여부 체크 추가
- Schema::hasColumn()으로 컬럼 존재 여부 확인
- 개발 서버와 로컬 환경의 스키마 차이 대응
- 중복 컬럼 추가 오류 방지
2025-11-17 16:41:57 +09:00
517d5940e9 feat: products 및 materials 테이블에 is_active 컬럼 추가
- is_active 컬럼 추가 마이그레이션 (default 1)
- Product 모델 fillable 및 casts 업데이트
- Material 모델 fillable 및 casts 업데이트
- Material 모델에 material_type fillable 추가
- ModelTrait의 scopeActive() 메서드 지원
2025-11-17 14:55:31 +09:00
4749761519 feat: 품목 파일 업로드 API 구현 (절곡도, 시방서, 인정서)
- Products 테이블에 9개 파일 관련 필드 추가
  - bending_diagram, bending_details (JSON)
  - specification_file, specification_file_name
  - certification_file, certification_file_name
  - certification_number, certification_start_date, certification_end_date

- ItemsFileController 구현 (Code-based API)
  - POST /items/{code}/files - 파일 업로드
  - DELETE /items/{code}/files/{type} - 파일 삭제
  - 파일 타입: bending_diagram, specification, certification

- ItemsFileUploadRequest 검증
  - 파일 타입별 MIME 검증 (이미지/문서)
  - 파일 크기 제한 (10MB/20MB)
  - 인증 정보 및 절곡 상세 정보 검증

- Swagger 문서 작성 (ItemsFileApi.php)
  - 업로드/삭제 API 스펙
  - 스키마: ItemFileUploadResponse, ItemFileDeleteResponse
2025-11-17 13:40:07 +09:00
62d671edcf refactor: stat_snapshots 테이블 제거 (통계 시스템과 분리)
[변경 이유]
- 추후 별도 통계 시스템 구축 예정
- stat_snapshots는 캐싱용 스냅샷과 통계 시스템 역할이 겹침
- 역할 분리를 위해 제거

[변경 사항]
- stat_snapshots 테이블 rollback 및 마이그레이션 파일 삭제
- tenant_stat_fields 테이블은 유지 (통계 시스템의 메타 정보로 활용)

[유지되는 구조]
- tenant_stat_fields: 각 테넌트가 통계를 원하는 필드 선언
- 통계 시스템 구축 시 이 메타 정보를 기반으로 통계 생성

[향후 계획]
- 각 테넌트별 통계 데이터를 별도 통계 시스템에서 처리
- 리포트 기능에서 테넌트별 커스텀 통계 제공
2025-11-14 11:29:22 +09:00
342d15196e refactor: BP-MES Phase 1 하이브리드 구조 전환
- products 테이블: 6개 고정 필드 + attributes JSON
- product_components 테이블: 수식/조건 + attributes JSON
- tenant_stat_fields 테이블: 테넌트별 통계 필드 설정
- stat_snapshots 테이블: 통계 캐싱
- BP-MES CategoryFields Seeder: 제품/부품/절곡품 카테고리 필드
- BP-MES TenantStatFields Seeder: 통계 필드 설정

[변경 사항]
삭제:
- 2025_11_13_120000_extend_products_table_for_bp_mes.php
- 2025_11_13_120001_extend_product_components_table_for_bp_mes.php

추가:
- 2025_11_14_000001_add_hybrid_fields_to_products_table.php
- 2025_11_14_000002_add_attributes_to_product_components_table.php
- 2025_11_14_000003_create_tenant_stat_fields_table.php
- 2025_11_14_000004_create_stat_snapshots_table.php
- BpMesCategoryFieldsSeeder.php
- BpMesTenantStatFieldsSeeder.php

[배경]
멀티테넌트 시스템의 유연성 확보를 위해 고정 필드를 최소화하고
동적 필드 시스템(category_fields + attributes JSON)으로 전환.
통계 성능을 위해 자주 조회하는 분류 필드(product_category, part_type)는
고정 컬럼으로 유지하고 인덱싱.
2025-11-14 10:57:02 +09:00
d5bfb24ef9 feat: BP-MES Phase 1 - products/product_components 테이블 확장
- products 테이블에 33개 필드 추가
  - 공통: is_active, margin_rate, costs, safety_stock, lead_time, is_variable_size
  - FG 전용: product_category, lot_abbreviation, note
  - PT 전용: part_type, part_usage, installation_type, assembly_type,
    side_spec_width, side_spec_height, assembly_length,
    guide_rail_model_type, guide_rail_model
  - 절곡품: bending_diagram, bending_details, material, length, bending_length
  - 인증: certification_number, start/end_date, specification/certification files
  - 동적 확장: options (JSON)

- product_components 테이블에 5개 필드 추가
  - 수식 계산: quantity_formula
  - 조건부 BOM: condition
  - 절곡품: is_bending, bending_diagram, bending_details

- Product/ProductComponent 모델 fillable/casts 업데이트
- 인덱스 추가: is_active, product_category, part_type, part_usage, is_bending
2025-11-14 09:07:33 +09:00
69e1fbf954 메뉴 테이블 성능 최적화: 인덱스 추가
- deleted_at 단일 인덱스 추가 (SoftDeletes 쿼리 최적화)
- tenant_id + deleted_at 복합 인덱스 추가 (멀티테넌트 최적화)
- COUNT 쿼리 성능 52% 개선 (14.11ms → 6.73ms)
2025-11-12 16:15:27 +09:00
08521f9c48 feat: 삭제된 레코드 백업 테이블 추가
- archived_records 테이블: 삭제된 tenant/user 메인 데이터 저장
- archived_record_relations 테이블: 관련 테이블 데이터 저장
- 읽기 전용 백업 시스템으로 복원 기능 없음
- 스키마 버전 관리 및 삭제자 추적 기능
2025-11-11 23:22:35 +09:00
ddc4bb99a0 feat: 통합 품목 조회 API 및 가격 통합 시스템 구현
- 통합 품목 조회 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)
2025-11-11 11:30:17 +09:00
c83e029448 feat: 파일 저장 시스템 DB 마이그레이션
- enhance_files_table: 이중 파일명 시스템 (display_name/stored_name), 폴더 관리, 문서 연결 지원
- create_folders_table: 동적 폴더 관리 시스템 (tenant별 커스터마이징 가능)
- 5개 stub 마이그레이션 생성 (file_share_links, file_deletion_logs, storage_usage_history, add_storage_columns_to_tenants)
- FolderSeeder stub 생성
- CURRENT_WORKS.md에 Phase 1 진행상황 문서화

fix: 파일 공유 및 삭제 기능 버그 수정

- ShareLinkRequest: PATH 파라미터 {id}를 file_id로 자동 병합
- routes/api.php: 공유 링크 다운로드를 auth.apikey 그룹 밖으로 이동 (인증 불필요)
- FileShareLink: File, Tenant 클래스 import 추가
- File 모델: softDeleteFile()에서 SoftDeletes의 delete() 메서드 사용
- FileStorageService: getTrash(), restoreFile(), permanentDelete()에서 onlyTrashed() 사용
- File 모델: Tenant 네임스페이스 수정 (App\Models\Tenants\Tenant)

refactor: Swagger 문서 정리 - File 태그를 Files로 통합

- FileApi.php의 모든 태그를 Files로 변경
- 구 파일 시스템 라우트 삭제 (prefix 'file')
- 구 FileController.php 삭제
- 신규 파일 저장소 시스템으로 완전 통합

fix: 모든 legacy 파일 컬럼 nullable 일괄 처리

- 5개 legacy 컬럼을 한 번에 nullable로 변경
  * original_name, file_name, file_name_old (string)
  * fileable_id, fileable_type (polymorphic)
- foreach 루프로 반복 작업 자동화
- 신규/기존 시스템 간 완전한 하위 호환성 확보

fix: legacy 파일 컬럼 nullable 처리 완료

- file_name, file_name_old 컬럼도 nullable로 변경
- 기존 시스템과 신규 시스템 간 완전한 하위 호환성 확보
- Legacy: original_name, file_name, file_name_old (nullable)
- New: display_name, stored_name (required)

fix: original_name 컬럼 nullable 처리

- original_name을 nullable로 변경하여 하위 호환성 유지
- 새 시스템에서는 display_name 사용, 기존 시스템은 original_name 사용 가능

fix: 파일 업로드 DB 컬럼 누락 및 메시지 구조 개선

- files 테이블에 감사 컬럼 추가 (created_by, updated_by, uploaded_by)
- ApiResponse::handle() 메시지 로직 개선 (접미사 제거)
- 다국어 지원을 위한 완성된 문장 구조 유지
- FileUploadRequest 파일 검증 규칙 수정

fix: 파일 저장소 버그 수정 및 신규 테넌트 폴더 자동 생성

- FolderSeeder 네임스페이스 수정 (App\Models\Tenant → App\Models\Tenants\Tenant)
- FileStorageController use 문 구문 오류 수정 (/ → \)
- TenantObserver에 신규 테넌트 기본 폴더 자동 생성 로직 추가
  - 5개 기본 폴더 (생산관리, 품질관리, 회계, 인사, 일반)
  - 에러 처리 및 로깅
  - 회원가입 시 자동 실행
2025-11-10 22:09:28 +09:00
cc206fdbed style: Laravel Pint 코드 포맷팅 적용
- PSR-12 스타일 가이드 준수
- 302개 파일 스타일 이슈 자동 수정
- 코드 로직 변경 없음 (포맷팅만)
2025-11-06 17:45:49 +09:00
14023e8160 feat: role 컬럼을 ENUM에서 VARCHAR(20)으로 변경
- 향후 확장성을 위해 VARCHAR 사용
- 새로운 role 값 추가 시 스키마 변경 불필요
- sales@sam.kr만 'sales', 나머지는 'tenant'로 설정
2025-10-14 20:49:51 +09:00
d42fd96535 feat: users 테이블에 is_super_admin 필드 추가
- 슈퍼 관리자와 일반 운영 계정 구분
- Filament Admin (/admin) 접근 권한 관리용
- shine1324@gmail.com을 슈퍼 관리자로 설정
- ops@sam.kr은 일반 운영 계정으로 유지
2025-10-14 14:56:15 +09:00
8d2b6fc6e5 feat: 데모 URL 관리 시스템 마이그레이션 및 시더 추가
- users 테이블에 role, is_active 필드 추가
- prospects 테이블 생성 (업체 정보)
- demo_links 테이블 생성 (토큰 관리)
- DemoSystemSeeder 추가 (Ops/Sales 계정, 샘플 데이터)
2025-10-14 14:28:58 +09:00
a6b06be61d feat: 견적 단가 자동 적용 기능 추가
- 고객 그룹별 단가 조정 지원
- 견적 생성 시 자동 단가 조회
- 매출단가만 사용 (매입단가는 경고)
2025-10-13 21:52:34 +09:00
802a511aa0 Revert "feat: DB 연결 오버라이딩 및 대시보드 통계 위젯 추가"
This reverts commit bf8036a64b.
2025-09-30 23:56:25 +09:00
bf8036a64b feat: DB 연결 오버라이딩 및 대시보드 통계 위젯 추가
- DB 연결: 로컬/Docker 환경 오버라이딩 설정 (.env)
- 테넌트 위젯: redirect 버그 수정 (TenantSelectorWidget)
- 통계 위젯: 사용자/제품/자재/주문 카드 추가 (StatsOverviewWidget)
- 리소스 한국어화: Product, Material 모델 레이블 추가
- 대시보드: 위젯 등록 및 캐시 최적화

🤖 Generated with [Claude Code](https://claude.ai/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 23:31:14 +09:00
1a796462e4 feat: ERD 자동 생성 시스템 구축 및 모델 오류 수정
- GraphViz 설치를 통한 ERD 다이어그램 생성 지원
- BelongsToTenantTrait → BelongsToTenant 트레잇명 수정
- Estimate, EstimateItem 모델의 인터페이스 참조 오류 해결
- 60개 모델의 완전한 관계도 생성 (graph.png, 4.1MB)
- beyondcode/laravel-er-diagram-generator 패키지 활용

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 22:30:28 +09:00
c63e676257 feat: 데이터베이스 FK 제약조건 최적화 및 3단계 마이그레이션 구현
- FK 제약조건 현황 분석 완료: 8개 마이그레이션에서 15+개 FK 식별
- 중요도별 테이블 분류 (핵심/중요/일반) 및 안전한 제거 전략 수립
- 코드 영향도 분석: Eloquent 관계가 FK 독립적으로 작동하여 코드 수정 불필요

주요 변경사항:
- Phase 1: classifications.tenant_id, departments.parent_id FK 제거
- Phase 2: estimates.model_set_id, estimate_items.estimate_id FK 제거
- Phase 3: product_components.material_id FK 제거 (신중한 검토 필요)
- 각 단계별 동적 FK 탐지, 상세 로깅, 완전 롤백 기능 포함
- 성능 인덱스 유지/추가로 쿼리 성능 보장

예상 효과:
- 견적 시스템 및 분류 관리 성능 향상
- 부서 구조 변경 및 자재 관리 유연성 증가
- FK 제약 에러 감소로 개발 생산성 향상
- 시스템 확장 시 스키마 변경 유연성 확보

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 21:49:39 +09:00