Commit Graph

79 Commits

Author SHA1 Message Date
pro
925e22a4c4 feat:회원사 수정 모달에 비밀번호 설정 여부 뱃지 추가
- API 응답에 has_password 필드 추가
- 모달 폼에 비밀번호 상태 뱃지 (설정됨/미설정) 표시
- 수정 시 녹색(설정됨) 또는 빨간색(미설정) 뱃지로 구분

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 10:46:12 +09:00
pro
e8d69a228a fix:바로빌 URL API에 비밀번호 검증 추가
- 바로빌 비밀번호가 없으면 명확한 에러 메시지 반환
- validateMemberForUrlApi 헬퍼 메서드 추가로 중복 코드 제거
- 적용 메서드: 계좌등록, 계좌관리, 카드등록, 카드관리, 세금계산서 등

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 10:36:21 +09:00
pro
a8c30cb08d fix:바로빌 설정 담당자 정보 자동 연동
- 세션 키 수정: tenant_id → selected_tenant_id
- 설정이 없거나 담당자 정보가 비어있을 때 바로빌 회원사 정보를 기본값으로 사용
- 담당자명, 연락처, 이메일 자동 매핑

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 09:36:19 +09:00
pro
f8e10c93ad fix:바로빌 회원사관리 테넌트1(본사) 자동 전체 조회
- 테넌트 1(코드브릿지엑스, 바로빌 파트너사)이면 자동으로 모든 회원사 표시
- 다른 테넌트는 해당 테넌트의 회원사만 표시
- 본사 접속 시 테넌트 컬럼 자동 표시

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 09:29:41 +09:00
pro
861192a606 feat:바로빌 회원사관리 멀티테넌트 지원
- 전체 테넌트 보기 토글 추가 (바로빌본사용)
- 테이블에 테넌트 컬럼 표시 (전체 모드에서)
- 회원사 등록 시 테넌트 선택 기능 추가
- 통계 API에도 전체 테넌트 모드 적용
- 컨트롤러에서 tenant_id 직접 지정 지원

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 18:58:39 +09:00
pro
ec9bcbe906 feat:바로빌 설정 페이지에 서비스 이용 옵션 체크박스 추가
- 4가지 서비스 옵션 체크박스 추가 (전자세금계산서, 계좌조회, 카드사용내역, 홈텍스매입/매출)
- BarobillSetting 모델 및 BarobillSettingController 생성
- 설정 API 라우트 추가 (/api/admin/barobill/settings)
- 담당자 정보 입력 필드 추가 (이름, 연락처, 이메일)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 16:51:56 +09:00
pro
bddac80b75 fix:바로빌 동기화 chandj DB 연결 추가 2026-01-22 16:44:18 +09:00
pro
45f73ce7c8 feat:바로빌 테넌트(회원사) 동기화 기능 추가
- barobill_companies 테이블에서 barobill_members로 동기화 API 구현
- 바로빌본사 설정 페이지에 테넌트 목록 및 동기화 버튼 추가
- 동기화 시 신규 데이터 생성 및 기존 데이터 업데이트
2026-01-22 16:12:55 +09:00
pro
28cb357e36 feat:회원사 수정 시 비밀번호 업데이트 기능 추가
- 수정 모달에서 비밀번호 선택적 입력 가능
- 기존 Hash 저장 데이터를 새로운 encrypted 방식으로 업데이트 가능
- 비밀번호 입력 시에만 업데이트, 빈 값이면 기존 유지
2026-01-22 15:09:54 +09:00
pro
198ce825f5 fix:바로빌 비밀번호 저장방식 Hash에서 encrypt로 변경
- Hash::make() 대신 Laravel encrypted cast 사용
- 비밀번호 복호화 가능하여 바로빌 API 호출 시 평문 전달 가능
- 바로빌 서비스 클릭 시 비밀번호 재입력 절차 불필요
2026-01-22 15:06:12 +09:00
pro
f60f84670a feat: 바로빌 회원사관리 CRUD 기능 구현
레거시(sam/sales/barobill/registration)를 Laravel 스타일로 마이그레이션

- Migration: barobill_members 테이블 생성
- Model: BarobillMember (상태 라벨, 사업자번호 포맷팅 등)
- API Controller: CRUD + 통계 조회 (HTMX HTML 반환 지원)
- API Routes: /api/admin/barobill/members/*
- Views:
  - index.blade.php (통계 카드, 필터, 테이블, 모달)
  - partials/table.blade.php (HTMX 테이블)
  - partials/stats.blade.php (통계 카드)
  - partials/modal-form.blade.php (등록/수정 폼, 자동완성)

기능:
- 회원사 목록 조회 (검색, 상태 필터)
- 회원사 등록 (사업자번호 중복 체크)
- 회원사 수정 (모달)
- 회원사 삭제 (확인 후)
- 테스트 데이터 자동완성

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 08:49:25 +09:00
김보곤
acad251eec feat:자금계획일정 추가 2026-01-20 20:21:06 +09:00
a546215f45 fix(board,menu): 테넌트 게시판 수정 및 메뉴 페이지네이션 오류 수정
테넌트 게시판 수정 404 오류:
- BoardService.getBoardById()에 $systemOnly 파라미터 추가
- BoardController.edit()에서 systemOnly=false로 테넌트 게시판 조회 가능
- Api/Admin/BoardController에서 show/update 메서드 테넌트 게시판 지원
- updateAnyBoard() 메서드 사용하여 시스템/테넌트 게시판 공통 수정

메뉴 페이지네이션 쿠키 값 미적용 오류:
- HTMX 요청 시 htmx:configRequest 이벤트로 쿠키 값 적용
- pagination_per_page 쿠키에서 per_page 값 읽어서 요청 파라미터에 설정

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 10:12:29 +09:00
a30410643b fix(board): 게시판 URL tenant_id 처리 및 게시글 수 표시 추가
- Route Model Binding → 수동 조회로 변경 (board_code + tenant_id)
- PostController: resolveBoard() 헬퍼 추가
  - t 파라미터 → 시스템 게시판 → 로그인 회원 tenant 순서
- 사이드바 메뉴 리다이렉트: tenant_id ?? 1 fallback 추가
  - SidebarMenuService와 동일한 로직으로 일관성 확보
- 게시판 목록 테이블에 게시글 수 컬럼 추가
- 모든 posts View에 tenant_id 파라미터 추가

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 01:30:50 +09:00
b1621a7147 fix(board-menu): 게시판 삭제/복원 시 메뉴 연동 로직 개선
- BoardController: *Board() → *AnyBoard() 메서드로 변경하여 메뉴 연동 활성화
- MenuService: restoreMenuForBoard() 메서드 추가
  - soft-deleted 메뉴 있으면 복원
  - 활성 메뉴가 이미 있으면 스킵 (중복 방지)
  - 둘 다 없으면 새로 생성
- BoardService: restoreAnyBoard()에서 board name 전달하도록 수정

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 22:32:00 +09:00
aa9623c5bb fix(mng): HTMX SPA 네비게이션 오류 수정
## 수정 내용

### HTMX 응답 형식 수정
- DepartmentController: view 직접 반환 (JSON 래핑 제거)
- MenuController: ->render() 제거하여 SVG 이스케이프 문제 해결

### 사이드바 개선
- hx-boost 적용하여 SPA 스타일 네비게이션 구현
- 메뉴 클릭 시 활성화 상태 즉시 반영
- 스크롤 위치 저장/복원 기능 추가

### 불필요한 코드 제거
- departments/index.blade.php: JSON.parse 코드 제거

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 22:23:03 +09:00
cd6cf9746a feat(mng): 게시판-메뉴 자동 연동 및 URL 패턴 변경
## 주요 변경사항

### 게시판-메뉴 자동 연동
- 게시판 생성 시 메뉴 자동 생성 (BoardService.createBoardFromTemplate)
- 게시판 삭제 시 연결 메뉴 함께 삭제 (Soft Delete 연동)
- 게시판 복원 시 메뉴 재생성
- 게시판 영구삭제 시 메뉴 영구삭제

### 게시판 메뉴 보호
- MenuService: 게시판 연동 메뉴 수동 수정/삭제 방지
- isBoardMenuUrl(), isBoardMenu(), validateNotBoardUrl() 헬퍼 추가
- 8개 CRUD 메서드에 검증 로직 적용

### URL 패턴 변경
- 시스템 게시판: /system-boards/{code} → /customer-center/{code}
- 테넌트 게시판: /boards/{code} (변경 없음)

### UI 개선
- 메뉴 목록에서 게시판 메뉴 "📋 게시판" 뱃지 표시
- 게시판 메뉴는 수정/삭제 버튼 숨김 (활성/숨김 토글만 허용)
- 삭제된 게시판 행 클릭 시 404 오류 수정

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 21:54:48 +09:00
b992886fca feat(mng): 고객센터 게시판 목록 페이지 추가
- /customer-center 라우트 신규 생성
- 활성화된 시스템 게시판만 표시
- 테이블 컬럼: ID, 유형, 코드, 게시판명, 게시글 수, 생성일
- 관리 기능(구분, 필드, 상태, 액션) 제외한 읽기 전용 뷰

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 20:50:58 +09:00
64fa5f7766 fix(tenants): HTMX swap 오류 수정
- API가 HTMX 요청 시 JSON 대신 순수 HTML 반환하도록 변경
- 불필요한 htmx:afterSwap JSON 파싱 코드 제거

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 20:05:49 +09:00
9e042b5d6b feat(simulator): Phase 4 - BOM 디버깅 UI 및 API 추가
- simulateBom API 엔드포인트 추가 (calculateBomWithDebug 연동)
- simulator.blade.php: BOM 디버깅 모드 탭 추가
  - 10단계 디버그 스텝 패널
  - 공정별 품목 그룹화 표시
  - 원가 요약 (공정별 소계, 총합계)
- FormulaEvaluatorService: currentTenantId 속성 추가
  - 콘솔/API에서 tenant_id 전달 가능하도록 수정
- routes/api.php: simulate-bom 라우트 추가
2025-12-24 15:45:54 +09:00
60618ddd04 feat: 견적 시뮬레이터 개선 및 FlowTester 조건 평가기 추가
- 견적 시뮬레이터 UI 레이아웃 개선 (가로 배치, 반응형)
- FlowTester ConditionEvaluator 클래스 추가 (조건부 실행 지원)
- FormulaEvaluatorService 기능 확장
- DependencyResolver 의존성 해결 로직 개선
- PushDeviceToken 모델 확장 (FCM 토큰 관리)
- QuoteFormula API 엔드포인트 추가
- FlowTester 가이드 모달 업데이트
2025-12-23 23:41:37 +09:00
5742f9a3e4 feat(quote-formula): 매핑/품목 관리 UI 구현 (Phase 2, 3)
Phase 2 - 매핑(Mapping) 관리:
- QuoteFormulaMappingController, QuoteFormulaMappingService 추가
- mappings-tab.blade.php 뷰 생성
- 매핑 CRUD 및 순서 변경 API

Phase 3 - 품목(Item) 관리:
- QuoteFormulaItemController, QuoteFormulaItemService 추가
- items-tab.blade.php 뷰 생성
- 품목 CRUD 및 순서 변경 API
- 수량식/단가식 입력 지원

공통:
- edit.blade.php에 매핑/품목 탭 연동
- routes/api.php에 API 엔드포인트 추가
2025-12-22 19:07:50 +09:00
403e0720d9 feat(quote-formulas): 범위(Range) 관리 UI 추가 (Phase 1)
- QuoteFormulaRangeService, RangeController 생성
- 범위 CRUD API 엔드포인트 추가 (6개)
- edit.blade.php 탭 구조로 개편 (기본정보/범위/매핑/품목)
- ranges-tab.blade.php 범위 관리 UI 구현
- Alpine.js 기반 인터랙티브 CRUD
2025-12-22 17:42:51 +09:00
3f34e84bfc feat(menus): 메뉴 일괄 선택 삭제/복구/영구삭제 기능 추가
- GlobalMenu 모델에 getSection(), getMeta() 메서드 추가 (import 모드 500 에러 해결)
- table.blade.php: normal 모드에서 체크박스 + 드래그 핸들 분리
- index.blade.php: 선택 삭제/복구/영구삭제 버튼 및 JS 함수 추가
- MenuController: bulkDelete, bulkRestore, bulkForceDelete API 추가
- routes/api.php: bulk 엔드포인트 3개 등록

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 10:51:06 +09:00
1cbaf1b873 refactor(dev-tools): 인증 시스템 통합 및 테넌트 사용자 조회 개선
## 인증 모달 통합
- api-explorer, flow-tester, api-logs 3개 페이지의 인증 UI 통합
- 공유 컴포넌트 생성: auth-modal.blade.php, auth-scripts.blade.php
- sessionStorage 기반으로 페이지 간 인증 상태 공유
- DevToolsAuth 글로벌 JavaScript API 제공

## 테넌트 사용자 조회 개선
- 시스템 헤더에서 선택한 테넌트의 사용자 목록 표시
- 관리자가 모든 테넌트의 사용자 조회 가능 (소속 무관)
- session('selected_tenant_id')로 Tenant 모델 직접 조회
- 테넌트 미선택 시 안내 메시지 표시

## 버그 수정
- /users 페이지 HTMX swap 오류 수정 (JSON→HTML 직접 반환)
- 사용자 이름 JavaScript 이스케이프 처리 (@js() 사용)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 15:13:01 +09:00
00a4920b7a feat: Global Menu 계층 이동 기능 추가 및 Role 삭제 오류 수정
Global Menu indent/outdent 기능:
- GlobalMenuController에 move() 메서드 추가
- MenuService에 moveGlobalMenu(), isGlobalDescendant(), reorderGlobalSiblings(), compactGlobalSiblings() 추가
- global-index.blade.php에 드래그 계층 이동 JavaScript 추가
- routes/api.php에 POST /move 라우트 추가

Role 삭제 500 에러 수정:
- config/auth.php에 api guard 추가 (Spatie Permission getModelForGuard 오류 해결)
- RoleService에서 불필요한 users()->detach() 제거 (FK CASCADE 처리)
- RoleController에서 HTMX 요청 시 View 직접 반환 (JSON 파싱 에러 해결)
- index.blade.php에서 불필요한 afterSwap 핸들러 제거

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-20 22:43:48 +09:00
6525bfd715 feat: MNG → DEV 자동 로그인 기능 구현
- LoginToken 모델 생성 (토큰 생성 및 URL 생성)
- UserController에 loginToken API 메서드 추가
- DEV_APP_URL 환경설정 추가 (config/services.php)
- 사용자 목록에 "DEV 접속" 버튼 추가
- openDevSite JavaScript 함수 추가

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-20 13:43:13 +09:00
c075678cd9 [chore] Pint 코드 스타일 자동 수정 2025-12-18 16:08:59 +09:00
c94e1cff41 메뉴 관리 HTMX 에러 수정 및 개발도구 메뉴 동적 렌더링
- HTMX 응답 에러 수정: JSON 래핑 대신 HTML 직접 반환
  - MenuController, GlobalMenuController의 index 메소드 수정
  - index.blade.php, global-index.blade.php의 JSON 파싱 로직 제거

- 메뉴 options 필드 검증 추가
  - StoreMenuRequest, UpdateMenuRequest에 options 필드 추가
  - section 변경이 정상 저장되도록 수정

- 개발도구 메뉴 하드코딩 제거, DB 기반 동적 렌더링
  - sidebar.blade.php에서 하드코딩된 메뉴 제거
  - tools-menu.blade.php 컴포넌트 신규 생성
  - section=tools 메뉴가 하단 고정 영역에 동적 표시
2025-12-18 11:19:07 +09:00
6b3d13aced feat: 품목기준 필드 휴지통 비우기 기능 추가 2025-12-17 19:51:46 +09:00
6fe2d02b51 fix: ItemField 목록 페이지네이션 개선
- getFields() 반환 타입을 Collection에서 LengthAwarePaginator로 변경
- per_page 값을 뷰에 전달하여 셀렉트박스 selected 상태 유지
2025-12-16 23:38:24 +09:00
e00ab53c7a feat: 업무협의록 AI 요약 기능 구현
- MeetingLogService에 summaryType 파라미터 추가
- buildWorkMemoPrompt 메서드 추가 (고객 요구사항/합의사항/To-Do 특화)
- MeetingLogController uploadFile에 summary_type 검증 추가
- work-memo-summary.blade.php 전체 UI 구현 (cyan 테마)
2025-12-16 23:34:08 +09:00
9f00585401 feat(meeting-summary): 파일 업로드 기반 회의록 AI 요약 기능 구현
- MeetingLogService: processUploadedFile 메서드 추가
- MeetingLogController: uploadFile 엔드포인트 추가
- routes/api.php: /api/meeting-logs/upload 라우트 추가
- meeting-summary.blade.php: 드래그앤드롭 파일 업로드 UI 구현
- refreshMeetingList 함수로 목록 새로고침 처리
2025-12-16 22:42:45 +09:00
ae364a1afe feat: 품목기준 필드 관리 기능 개선
- 소프트 삭제된 필드 목록에 표시 (withTrashed)
- 삭제된 필드 시각적 구분 (빨간 배경, '삭제됨' 배지)
- 필드 복원 기능 추가 (restore API)
- 필드 영구 삭제 기능 추가 (forceDelete API)
- 체크박스 선택 및 일괄 삭제 기능 추가
- 시스템 필드 삭제 제한 해제
- 커스텀 모달 적용 (showConfirm, showDeleteConfirm)
2025-12-16 21:43:05 +09:00
331eaebf86 feat: 웹 녹음 AI 요약 기능 구현
- MeetingLog 모델 (BelongsToTenant, SoftDeletes)
- GoogleCloudService (GCS 업로드, STT API)
- MeetingLogService (Claude API 요약)
- MeetingLogController (HTMX/JSON 듀얼 응답)
- 순수 Tailwind CSS UI 구현
- API 라우트 8개 엔드포인트 등록
2025-12-16 15:07:56 +09:00
ea3c403521 feat(mng): 시스템 필드 정의 DB 기반 관리 기능 구현
## 주요 변경사항

### 1. 시스템 필드 정의 DB 마이그레이션
- 기존 하드코딩된 Constants/SystemFieldDefinitions.php 제거
- 신규 Models/SystemFieldDefinition.php 모델 추가
- system_field_definitions 테이블 기반 동적 관리

### 2. 테이블 등록 시 자동 필드 생성
- DB 실제 테이블 목록에서 선택하여 등록
- MySQL INFORMATION_SCHEMA에서 컬럼 정보 자동 조회
- COLUMN_COMMENT를 필드명(한글)으로 사용
- IS_NULLABLE로 필수 여부 자동 설정
- 시스템 컬럼(id, tenant_id, timestamps 등) 자동 제외

### 3. 필드명 동기화 기능
- 기존 등록된 테이블의 필드명을 DB COMMENT로 업데이트
- POST /source-tables/{table}/sync-field-names API 추가

### 4. 시딩 상태 계산 수정
- getFieldCountFor(): is_seed_default=true인 필드만 카운트
- getTotalFieldCountFor(): 전체 활성 필드 카운트 (신규)
- "제외" 필드가 있어도 시딩 완료 상태 정상 표시

### 5. UI 개선
- 시스템 필드 정의 탭에서 테이블별 관리
- 테이블 헤더에 "필드명 동기화", "삭제" 버튼 추가
- 테이블 선택 모달에서 COMMENT(한글명) 표시

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 01:58:09 +09:00
767db6f513 feat: 품목 필드 관리 및 UI 개선
- ItemFieldController API 수정
- ItemFieldSeedingService 로직 개선
- Flow Tester 상세 화면 개선
- 레이아웃 및 프로젝트 상세 화면 수정
- 테이블 정렬 JS 추가
2025-12-12 08:51:54 +09:00
c1bd7ab4d3 품목기준 필드 관리 기능 구현
- ItemField 모델 및 SystemFieldDefinitions 상수 클래스 추가
- ItemFieldSeedingService: 시스템 필드 시딩/초기화/커스텀 필드 CRUD
- ItemFieldController (API): HTMX 기반 시딩 상태, 커스텀 필드 관리
- 커스텀 필드 수정 기능 (시스템 필드는 source_table/field_key 수정 불가)
- 레거시 데이터 표시 개선: 소스 테이블 비어있으면 '미지정' 배지
- 필드 키 정책 변경: 숫자로 시작 허용 (영문/숫자/밑줄)
- AI 문의하기: 시딩 오류 보고서 생성 기능
- 사이드바에 품목기준 필드 관리 메뉴 추가
2025-12-09 23:13:27 +09:00
f92b9335fc 메뉴 영구 삭제 시 연관 권한 삭제 및 아카이브 저장
- forceDeleteMenu: 연관 권한(menu:{id}.*) 함께 삭제
- forceDeleteGlobalMenu: 연관 권한 삭제 + 테넌트 메뉴 참조 해제
- 삭제 전 권한/역할 연결 정보를 archived_records에 저장
- Controller 반환값에 삭제된 권한 정보 포함
2025-12-09 22:51:20 +09:00
82b9ac0ce3 feat: 기존 작업에 이슈 추가 Import 기능
- ImportService에 importIssuesToTask 메서드 추가
- ImportController에 importIssues 액션 추가
- ImportIssuesRequest FormRequest 생성
- POST /api/admin/pm/import/task/{taskId}/issues 라우트 추가
- import.blade.php UI에 '기존 작업에 이슈 추가' 모드 추가
- ImportProjectRequest에 tasks 레벨 검증 규칙 보완
2025-12-09 16:39:52 +09:00
20cfa01579 [fix] 수식 시뮬레이터 [object Object] 표시 및 계산 오류 수정
- simulator.blade.php: Range 결과 JSON 문자열 파싱 로직 추가
- QuoteFormulaController.php: simulate 응답 success 항상 true로 변경
2025-12-04 15:23:59 +09:00
dac02f120b feat(quote-formulas): 견적수식 관리 기능 구현
## 구현 내용

### 모델 (5개)
- QuoteFormulaCategory: 수식 카테고리
- QuoteFormula: 수식 정의 (input/calculation/range/mapping)
- QuoteFormulaRange: 범위별 값 정의
- QuoteFormulaMapping: 매핑 테이블
- QuoteFormulaItem: 수식-품목 연결

### 서비스 (3개)
- QuoteFormulaCategoryService: 카테고리 CRUD
- QuoteFormulaService: 수식 CRUD, 복제, 재정렬
- FormulaEvaluatorService: 수식 계산 엔진
  - 지원 함수: SUM, ROUND, CEIL, FLOOR, ABS, MIN, MAX, IF, AND, OR, NOT

### API Controller (2개)
- QuoteFormulaCategoryController: 카테고리 API (11개 엔드포인트)
- QuoteFormulaController: 수식 API (16개 엔드포인트)

### FormRequest (4개)
- Store/Update QuoteFormulaCategoryRequest
- Store/Update QuoteFormulaRequest

### Blade Views (8개)
- 수식 목록/추가/수정/시뮬레이터
- 카테고리 목록/추가/수정
- HTMX 테이블 partial

### 라우트
- API: 27개 엔드포인트
- Web: 7개 라우트
2025-12-04 14:00:24 +09:00
c5e3965368 chore: 코드 스타일 정리 및 PM 임포트 에러처리 개선
- ImportController 파일 끝 줄바꿈 추가
- VariableBinder Pint 포맷팅 적용
- PM 임포트 API 에러 응답 처리 강화
2025-12-02 21:43:45 +09:00
5db21095f3 feat: [메뉴] 글로벌 메뉴 관리 기능 구현 (슈퍼관리자 전용)
- 글로벌 메뉴 CRUD API 및 라우트 추가 (GlobalMenuController)
- 글로벌 메뉴 목록/생성/수정 뷰 추가 (보라색 테마)
- MenuService에 글로벌 메뉴 관련 메서드 11개 추가
- 메뉴 관리 페이지에 '글로벌 메뉴 관리' 버튼 추가
- 가져오기 모드에서 이미 가져온 메뉴 비활성화 표시
- super.admin 미들웨어로 접근 제어
2025-12-02 21:41:15 +09:00
28b4ec8afd feat: [메뉴] 통합메뉴관리 - 글로벌에서 가져오기 기능 구현
- PULL 방식 메뉴 가져오기 (테넌트가 글로벌에서 선택적으로 가져옴)
- 모드 전환 UI (내 메뉴 / 글로벌에서 가져오기)
- 체크박스 선택으로 다중 메뉴 가져오기 지원
- 가져오기 모드에서 읽기 전용 상태 배지 표시
- hidden input으로 HTMX mode 파라미터 전달 수정
2025-12-02 19:16:23 +09:00
af5ecf3c4c feat: 프로젝트 대시보드 스크럼 칸반 스타일 개선
- 오늘의 활동을 3컬럼 칸반 레이아웃으로 변경 (예정/진행중/완료)
- 담당자별 항목 그룹핑 적용
- 인라인 상태 변경 버튼 추가 (hover 시 표시)
- 담당자별 다중 항목 편집 모달 구현
  - 담당자 이름 공통 입력
  - 항목별 textarea, 상태 버튼, 삭제 버튼
  - 항목 추가/삭제 기능
  - Promise.all로 일괄 저장
- 인라인 삭제 기능 추가
- 라우트 경로 수정 (pm.daily-logs.index → daily-logs.index)
2025-12-02 14:19:28 +09:00
817690f544 feat: 게시판 템플릿 기반 생성 기능 및 SVG 아이콘 적용
- 게시판 템플릿 설정 파일 추가 (config/board_templates.php)
  - 시스템 템플릿: 공지사항, 1:1문의, FAQ, 팝업공지
  - 테넌트 템플릿: 자유게시판, 갤러리, 자료실, 공지사항, Q&A
- BoardService 템플릿 관련 메서드 추가
- BoardController 템플릿 API 엔드포인트 추가
- 게시판 생성 UI 3단계 위자드로 개선
- 모든 템플릿 아이콘을 이모지에서 SVG path로 변경

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 23:28:43 +09:00
d8bae36efd feat: 메뉴 계층 이동 기능 추가
- MenuService.moveMenu() 메서드 추가 (부모 변경 + 하위 메뉴 유지)
- POST /api/admin/menus/move API 엔드포인트 추가
- 순환 참조 방지 로직 구현
- Shift+드래그로 위 메뉴의 하위로 이동 가능
- 사용법 안내 UI 추가
2025-12-01 15:35:49 +09:00
302b9d73aa feat: 메뉴 드래그 앤 드롭 정렬 기능 추가
- MenuService.reorderMenus() 메서드 추가
- MenuController.reorder() API 엔드포인트 추가
- POST /api/admin/menus/reorder 라우트 추가
- SortableJS 기반 드래그 앤 드롭 UI 구현
- 같은 부모 메뉴 내에서만 순서 변경 가능 (계층 구조 유지)
2025-12-01 15:24:49 +09:00
a2477837d0 feat: [daily-logs] 일일 스크럼 기능 구현
주요 기능:
- 일일 로그 CRUD (생성, 조회, 수정, 삭제, 복원, 영구삭제)
- 로그 항목(Entry) 관리 (추가, 상태변경, 삭제, 순서변경)
- 주간 타임라인 (최근 7일 진행률 표시)
- 테이블 리스트 아코디언 상세보기
- 담당자 자동완성 (일반 사용자는 슈퍼관리자 목록 제외)
- HTMX 기반 동적 테이블 로딩 및 필터링
- Soft Delete 지원

파일 추가:
- Models: AdminPmDailyLog, AdminPmDailyLogEntry
- Controllers: DailyLogController (Web, API)
- Service: DailyLogService
- Requests: StoreDailyLogRequest, UpdateDailyLogRequest
- Views: index, show, table partial, modal-form partial

라우트 추가:
- Web: /daily-logs, /daily-logs/today, /daily-logs/{id}
- API: /api/admin/daily-logs/* (CRUD + 항목관리)
2025-12-01 14:07:55 +09:00