Commit Graph

130 Commits

Author SHA1 Message Date
pro
d212956f25 feat:바로빌 CERT_KEY 테스트/운영 모드 분리
- BAROBILL_CERT_KEY_TEST: 테스트 환경용
- BAROBILL_CERT_KEY_PROD: 운영 환경용
- BAROBILL_TEST_MODE에 따라 자동 선택

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 10:50:46 +09:00
pro
d3aeb498cb feat:기업 기본정보 및 국세청 사업자등록 상태 조회 기능 추가
- CooconService에 OA08 기업기본정보 API 추가
- NtsBusinessService 신규 생성 (국세청 사업자등록 상태조회)
- CreditInquiry 모델에 회사정보 및 국세청 상태 필드 추가
- 마이그레이션: 기업정보 및 국세청 상태 컬럼 추가
- UI: 리스트에 업체정보/국세청 상태 컬럼 표시
- 원본 데이터 모달에 회사정보 헤더 추가
- 리포트 모달에 회사정보 및 신용요약 표시

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 20:34:43 +09:00
pro
7ed908f53d feat:쿠콘 API 신용평가 조회 기능 구현
- CooconConfig 모델 및 마이그레이션 추가
- CooconService 클래스 구현 (OA12~OA17 API)
- CreditController 확장 (설정 관리, 조회 기능)
- 설정 관리 화면 추가 (CRUD, 활성화 토글)
- 사업자번호 조회 화면 업데이트 (API 연동)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 19:33:51 +09:00
pro
1fa1e632ca fix:바로빌 회원사 등록 오류 메시지 개선
- 프론트엔드: 상세 오류 메시지 표시 추가 (error, error_code)
- BarobillService: 바로빌 API 오류 코드 매핑 확장 (-32xxx 계열)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 17:40:08 +09:00
pro
335ea915a6 fix:FcmApiService apiKey nullable 타입 수정 2026-01-21 19:11:11 +09:00
김보곤
acad251eec feat:자금계획일정 추가 2026-01-20 20:21:06 +09:00
85d50e9d8b fix(mng): HTMX 요청 시 JSON 에러 응답 반환 및 Role 테넌트 분리
- EnsureHQMember: HTMX/AJAX 요청 시 JSON 응답 반환
- EnsureSuperAdmin: HX-Request 헤더 체크 추가
- bootstrap/app.php: 전역 Exception Handler에서 HTMX 요청 처리
- RoleService: SpatieRole → App\Models\Role로 변경하여 테넌트별 역할 분리

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 19:52:45 +09:00
33367406a0 feat(MNG): 견적 공식 시뮬레이터 UI 개선
- FormulaEvaluatorService: 공식 평가 로직 개선
- simulator.blade.php: 시뮬레이터 UI/UX 개선
  - 입력 필드 레이아웃 최적화
  - 계산 결과 표시 개선
  - 에러 처리 강화

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 17:27:01 +09:00
dcf06641c8 feat(Quote): 제품 카테고리별 동적 마진값/중량 계산 로직 구현
- 완제품 조회 순서 변경 (마진값 결정을 위해 선행 조회)
- 제품 카테고리(SCREEN/STEEL)에 따른 마진값 동적 결정
  - 스크린: W+140, H+350
  - 철재: W+110, H+350
- 제품 카테고리에 따른 중량(K) 계산 로직 구현
  - 스크린: M×2 + W0/1000×14.17
  - 철재: M×25
- getItemDetails()에 item_category, process_type 필드 추가

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 14:46:26 +09:00
358c987cc1 feat(comment): 게시글 댓글 CRUD 기능 추가
- 댓글 라우트 추가 (store, update, destroy)
- PostService에 댓글 관리 메서드 추가
- PostController에 댓글 컨트롤러 메서드 추가
- 게시글 상세 페이지에 댓글 섹션 UI 추가 (AlpineJS)
- 계층형 댓글 지원 (부모/대댓글)
- BoardComment 모델 추가
- HTMLPurifier 패키지 및 설정 추가
- 게시글 목록에 첨부파일/댓글 수 표시

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 12:58: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
0db6e99a22 feat(board): 슈퍼관리자 삭제 게시물 관리 및 회사명 표시 기능 추가
## 슈퍼관리자 삭제 게시물 관리
- 삭제된 게시물 목록에 표시 (빨간색 배경, 취소선)
- 게시물 복원 기능 추가 (POST /{post}/restore)
- 게시물 영구삭제 기능 추가 (DELETE /{post}/force)
- 통계 카드에 삭제됨 카운트 추가

## 페이지 타이틀 회사명 표시
- /boards: "회사명 게시판 관리" 형식으로 표시
- /boards/{code}/posts: "회사명 게시판명" 형식으로 표시
- 회사명 파란색으로 구분 표시

## 버그 수정
- 통계 카드 CSS: Tailwind 동적 클래스 문제 해결
  (grid-cols-{{ }} → 정적 클래스로 변경)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 09:11:21 +09:00
504eb697e4 feat(board): 본사(HQ) 테넌트만 시스템 게시판 표시 및 우선 정렬
- 본사(tenant_type=HQ) 선택 시: 시스템 게시판 + 본사 게시판 표시
- 일반 테넌트 선택 시: 해당 테넌트 게시판만 표시
- 정렬: is_system DESC 추가 (시스템 게시판 우선)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 01:43:06 +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
5d96ff871d feat(board): 게시판 수정 시 메뉴 URL/이름 자동 업데이트
- MenuService::updateMenuForBoard() 메서드 추가
- 시스템 게시판: global_menus + 연결된 모든 menus URL 업데이트
- 테넌트 게시판: 해당 테넌트의 menus만 URL 업데이트
- BoardService::updateAnyBoard()에서 board_code/name 변경 감지 시 호출

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 00:17:53 +09:00
12f5d9e280 fix(board): 테넌트 게시판 메뉴 우선순위 및 라우트 수정
- 테넌트 게시판 부모 메뉴 우선순위 변경: /boards → /customer-center
- 테넌트 게시판 리다이렉트 라우트 추가: /boards/{code} → /boards/{id}/posts

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 23:40:33 +09:00
e241b96c72 fix(menu): 테넌트 Menu 생성 시 global_menu_id 연결 추가
- createMenuForBoard(): GlobalMenu 조회/생성 후 테넌트 Menu에 global_menu_id 설정
- restoreMenuForBoard(): 복원/생성 시에도 global_menu_id 연결
- is_customized: false 추가하여 글로벌 메뉴 연동 표시

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 23:18:24 +09:00
cfb6b3edc2 fix(menu): Tenant 모델의 active() 스코프 사용으로 수정
- Tenant::where('is_active', true) → Tenant::active()
- tenants 테이블에 is_active 컬럼이 없어 발생한 SQL 오류 수정

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 23:14:21 +09:00
a84fc9ab77 feat(board-menu): 시스템 게시판 메뉴를 모든 테넌트에 자동 생성/삭제/복원
- createMenuForBoard(): 시스템 게시판 생성 시 GlobalMenu + 모든 활성 테넌트의 Menu에 추가
- deleteMenuForBoard(): 시스템 게시판 삭제 시 GlobalMenu + 모든 테넌트의 Menu 삭제
- restoreMenuForBoard(): 시스템 게시판 복원 시 GlobalMenu + 모든 테넌트의 Menu 복원/생성
- /menus 페이지(테넌트 메뉴)에서 시스템 게시판 메뉴가 모든 테넌트에 표시됨

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 23:12:04 +09:00
5bd09096dd fix(board): createBoard()에 메뉴 자동 생성 로직 추가
- createBoard() 메서드에서도 createMenuForBoard() 호출
- 기존에는 createBoardFromTemplate()에서만 메뉴가 생성되었음
- 이제 모든 게시판 생성 경로에서 메뉴 자동 생성됨

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 23:01:18 +09:00
9deee61976 fix(menu): 시스템 게시판 생성 시 GlobalMenu + Menu 둘 다 추가
- createMenuForBoard(): 시스템 게시판 생성 시 global_menus와 menus 테이블 모두에 추가
- deleteMenuForBoard(): 시스템 게시판 삭제 시 GlobalMenu와 Menu 둘 다 삭제
- restoreMenuForBoard(): 시스템 게시판 복원 시 GlobalMenu와 Menu 둘 다 복원

이제 시스템 게시판이 /menus/global과 /menus 페이지 모두에 표시됨

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 22:55:36 +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
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
1c4afba86e fix(api-explorer): API 사용 통계 데이터 소스 변경
- api_request_logs 테이블 사용으로 변경 (실제 API 호출 기록)
- 기존 admin_api_histories는 API Explorer 테스트 기록용으로 유지
- ApiRequestLog 모델 추가
- URL에서 엔드포인트 경로 추출 (REGEXP_REPLACE 사용)
- DB facade 사용으로 Eloquent accessor 충돌 방지

변경 전: 테스트 호출 2건만 표시
변경 후: 실제 API 호출 857건+ 표시

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 18:50:37 +09:00
da159cc46e feat(boards): 게시글 파일 시스템 개선 및 이미지 미리보기 추가
- Morph map에 Post, Department 모델 등록 (ClassMorphViolationException 해결)
- 파일 저장 방식을 API 스타일로 변경 (document_id + document_type)
- 파일 미리보기 라우트 및 메서드 추가 (previewFile)
- 게시글 상세 페이지에서 이미지 첨부파일을 본문 상단에 풀 너비로 표시
- 비이미지 첨부파일은 하단에 다운로드 목록으로 분리

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 17:08:53 +09:00
fc4278ba82 Phase 5: 면적기반 단가 중복계산 수정 및 Design 마진 적용
- 면적/중량기반 단가: final_price 직접 사용 (multiplier 중복 적용 방지)
- 마진값 Design 표준 적용: W+140, H+350 (스크린 기준)
- 수량기반 단가: quantity × unit_price 유지
2025-12-24 16:11:35 +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
00374cd9fe Phase 3: FormulaEvaluatorService 확장 - Design 시뮬레이터 동기화
주요 변경사항:
- calculateCategoryPrice: 카테고리 기반 단가 계산 (면적/중량/수량)
- groupItemsByProcess: 공정별 품목 그룹화 (screen/bending/steel/electric/assembly)
- calculateBomWithDebug: 10단계 디버깅 정보 포함 BOM 계산
- getItemPrice: items.attributes.salesPrice fallback 추가
- evaluateQuantityFormula: 빈 수식 기본값 1 처리
- expandBomWithFormulas: Design 형식 childItemCode 지원
- DesignItemSeeder: 모든 품목에 process_type 추가
2025-12-24 15:28:48 +09:00
60618ddd04 feat: 견적 시뮬레이터 개선 및 FlowTester 조건 평가기 추가
- 견적 시뮬레이터 UI 레이아웃 개선 (가로 배치, 반응형)
- FlowTester ConditionEvaluator 클래스 추가 (조건부 실행 지원)
- FormulaEvaluatorService 기능 확장
- DependencyResolver 의존성 해결 로직 개선
- PushDeviceToken 모델 확장 (FCM 토큰 관리)
- QuoteFormula API 엔드포인트 추가
- FlowTester 가이드 모달 업데이트
2025-12-23 23:41:37 +09:00
f5ec9d502c feat: [fcm] Admin FCM API 추가 - MNG에서 API 호출로 FCM 발송
- AdminFcmController, AdminFcmService 추가
- FormRequest 검증 (AdminFcmSendRequest 등)
- Swagger 문서 추가 (AdminFcmApi.php)
- ApiKeyMiddleware: admin/fcm/* 화이트리스트 추가
- FCM 에러 메시지 i18n 추가
2025-12-23 12:43:36 +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
02b644021f fix: Flow Tester JSONPath 배열 인덱스 표기법 지원
- ResponseValidator::getValueByPath()에서 [n] 표기법을 .n으로 변환
- 예: $.data.data[0].id → data.data.0.id
- Laravel data_get() 헬퍼 호환성 확보

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-21 16:06:14 +09:00
8b82d23cdf feat: [flow-tester] ResponseValidator에 @isObject 연산자 추가
JSON 응답에서 객체(연관 배열) 타입을 검증하는 @isObject 연산자 구현
- array_is_list()로 순차 배열과 연관 배열 구분
- $.user 등 객체 필드 검증 시 사용

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 04:13:23 +09:00
0662a0bdd7 feat: [flow-tester] VariableBinder에 HR 관련 Faker 타입 추가
- koreanName: 한글 이름 생성 (ko_KR locale 활용)
- employeeCode: 사원코드 생성 (EMP-XXXXXX 형식)
- departmentName: 부서명 랜덤 생성
- positionName: 직급명 랜덤 생성
- dateRange: 날짜 범위 내 랜덤 날짜 생성

HR Employees CRUD 테스트에서 지원하지 않는 Faker 타입으로 인한
422 오류 및 연쇄적인 405 오류 해결

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 04:12:33 +09:00
aa1fd76a99 feat: Flow Tester 기능 개선 및 안정화
- FlowTesterController: 테스트 실행 로직 개선
  - 에러 핸들링 강화
  - 응답 형식 표준화
- FlowExecutor: API 호출 실행기 개선
  - 다단계 플로우 지원 강화
  - 변수 바인딩 및 검증 개선
- index.blade.php: UI 개선
  - 테스트 결과 표시 개선
  - 사용성 향상
- routes/web.php: 라우트 정리
- composer.lock: 의존성 업데이트

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 01:35:54 +09:00
c71f619743 feat(flow-tester): 세션 인증 모드(useSessionAuth) 지원
- VariableBinder: {{$session.xxx}} 변수 지원 추가
  - {{$session.token}}: 세션 Bearer 토큰
  - {{$session.user_id}}: 세션 사용자 ID
  - {{$session.user.email/name}}: 사용자 정보
  - {{$session.tenant_id}}: 테넌트 ID
  - getSessionAuth() 메서드 추가

- FlowExecutor: useSessionAuth 옵션 처리
  - login 스텝에서 API 호출 대신 세션 토큰 사용
  - {{login.token}} 등 자동 바인딩
  - 세션 토큰 없을 시 명확한 에러 메시지

페이지 인증 완료 시 플로우의 login 스텝에서
실제 API 호출 없이 세션 인증 정보를 활용할 수 있음

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-20 23:02:21 +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
866e2602a2 feat: 견적 수식 품목 단가 연동 구현
- Price 모델 생성 (prices 테이블 연동)
- getCurrentPrice(): 현재 유효 단가 조회
- getSalesPriceByItemCode(): 품목 코드로 판매단가 조회
- FormulaEvaluatorService.getItemPrice() 구현 완료 (TODO 해결)
2025-12-19 16:02:48 +09:00
0c1501f08b feat: 메뉴 관리 UI 개선
- 부모메뉴 선택 시 트리 구조 순서 + 인덴트 적용
- 아이콘 선택 UI를 이모지에서 Heroicons SVG로 변경
- 확장 옵션 기본 펼침 상태로 변경
2025-12-19 12:58:37 +09:00
c073b82633 feat: FCM 관리자 페이지 추가
- FCM 토큰 관리 페이지 (목록, 활성화/비활성화, 삭제)
- 테스트 발송 페이지 (대상 필터, 미리보기, 발송)
- 발송 이력 페이지 (필터링, 결과 확인)
- FcmSender 서비스 (HTTP v1, 배치 처리)
- fcm_send_logs 테이블 마이그레이션
- google/auth 패키지 추가
2025-12-19 09:57:00 +09:00
15a66a345e feat: API 사용 현황 및 폐기 후보 관리 기능 추가
- API 사용 통계 조회 및 미사용 API 식별 기능
- 폐기 후보 등록/상태변경/삭제 기능
- API Explorer에서 사용 현황 페이지 링크 추가
- 북마크 토글 버그 수정 (라우트-컨트롤러 메서드명 일치)
2025-12-18 20:26:17 +09:00
84e0a09a29 fix: Flow Tester 인증 및 UI 오류 수정
- FlowTesterController: users() 메서드 피벗 테이블 쿼리로 변경
- FlowExecutor: 세션 토큰 우선순위 추가 (모달 토큰 사용)
- index.blade.php: tenant_id 표시 및 토큰 프리뷰 UI 수정
2025-12-18 20:24:18 +09:00
42c056ee5b [fix] VariableBinder HMAC tenant_id 조회 수정
- user_tenants 피벗 테이블에서 tenant_id 조회
- MNG users 테이블에는 tenant_id 컬럼이 없음
2025-12-18 16:13:11 +09:00
c075678cd9 [chore] Pint 코드 스타일 자동 수정 2025-12-18 16:08:59 +09:00
e013f5205c [feat] Flow Tester 사용자 선택 기능 및 API Explorer 인증 공유
- API Explorer와 세션 토큰 공유 (api_explorer_token, api_explorer_user_id)
- 사용자 선택 드롭다운 UI 추가 (동일 테넌트 사용자 목록)
- HMAC 변수 자동 생성 기능 추가 (\$hmac.exp, \$hmac.signature 등)
- VariableBinder에서 선택된 사용자 정보 사용
- 사용자 선택 시 Sanctum 토큰 자동 발급
2025-12-18 16:08:53 +09:00
a62337ef5c feat: [API Explorer] Phase 1 완성 - 히스토리 로드, 밸리데이션, 유니코드 처리
- 히스토리 로드 기능 구현 (loadFromHistory, fillFormFromHistory)
- 클라이언트 사이드 필수값 밸리데이션 추가
- 응답 본문 \xXX UTF-8 바이트 시퀀스 디코딩 (PHP 스택트레이스 한글 깨짐 해결)
- sidebar에 data-operation-id 속성 추가
- history-drawer 함수 연결 수정
- Flow Tester 변수 바인딩 개선
- 마이그레이션 파일 통합 정리
2025-12-18 15:42:01 +09:00
2ed273097e feat: API 토큰 교환 연동 (FCM 푸시용)
- ApiTokenService: API 서버 토큰 교환 서비스 추가
- AuthService: 로그인 성공 시 API 토큰 교환 연동
- 레이아웃: 세션 토큰을 localStorage에 동기화 (FCM 사용)
- config/services.php: exchange_secret 설정 추가

환경변수 필요: INTERNAL_EXCHANGE_SECRET (API와 동일)
2025-12-18 14:21:50 +09:00
fbd4fb728e feat: [api-explorer] Phase 1 기본 구조 및 OpenAPI 파싱 구현
- Config, Service, Controller, View 생성
- Model 4개 (admin_api_* 테이블 참조)
- 3-Panel 레이아웃 (sidebar, request, response)
- HTMX 기반 동적 UI
- 마이그레이션은 api/ 프로젝트에서 관리
2025-12-17 22:06:28 +09:00
6b3d13aced feat: 품목기준 필드 휴지통 비우기 기능 추가 2025-12-17 19:51:46 +09:00