- 품목관리 3-Panel 레이아웃 (좌:목록, 중:BOM/수식산출, 우:상세)
- FormulaApiService로 API 견적수식 엔진 연동
- FG 품목 선택 시 기본값(W:1000, H:1000, QTY:1) 자동 산출
- 수식 산출 결과 트리 렌더링 (그룹별/소계/합계)
- 중앙 패널 클릭 시 우측 상세만 변경 (skipCenterUpdate)
- API 인증 버튼 전역 헤더로 이동 (모든 페이지에서 사용 가능)
- FormulaApiService에 Bearer 토큰 지원 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 인증 모달에 회사(테넌트) 선택 드롭다운 추가
- 헤더의 $globalTenants 재사용
- tenant.switch 라우트와 동기화
- 회사 변경 시 사용자 목록 자동 갱신
- Bearer 토큰 표시 및 복사 기능 추가
- 토큰 발급 API 엔드포인트 추가 (POST /dev-tools/api-explorer/issue-token)
- 현재 상태 영역에 토큰 표시
- 클립보드 복사 버튼 (Clipboard API + fallback)
- 적용 후 모달 유지하여 토큰 복사 가능
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- GuideModal, ExampleFlows, ExamplesModal 변수를 const에서 window 패턴으로 변경
- htmx가 콘텐츠를 다시 로드할 때 'Identifier has already been declared' 에러 방지
- window.XXX = window.XXX || {} 패턴으로 중복 선언 방지
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- api-logs: let→var 변경으로 스크립트 재실행 오류 해결
- api-explorer: @push('styles')→content 내 style로 hx-boost 호환
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 견적 시뮬레이터 UI 레이아웃 개선 (가로 배치, 반응형)
- FlowTester ConditionEvaluator 클래스 추가 (조건부 실행 지원)
- FormulaEvaluatorService 기능 확장
- DependencyResolver 의존성 해결 로직 개선
- PushDeviceToken 모델 확장 (FCM 토큰 관리)
- QuoteFormula API 엔드포인트 추가
- FlowTester 가이드 모달 업데이트
- 오류 카운트 기준: HTTP 상태 → 스텝 실패 여부로 변경
- expect로 4xx 기대하고 성공한 경우 오류로 카운트 안 함
- HTTP 4xx/5xx 응답은 주황색(amber)으로 시각적 구분
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
## 인증 모달 통합
- 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>
- 즐겨찾기 클릭 시 404 오류 수정 (selectEndpointByPath 함수 추가)
- 태그명 형식을 "한글명 (English)"로 변경
- 사용자 목록 조회 오류 수정 (user_tenants 피벗 테이블 사용)
- 즐겨찾기 토글 시 페이지 새로고침 없이 로컬 상태 업데이트
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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>
- API Explorer와 세션 토큰 공유 (api_explorer_token, api_explorer_user_id)
- 사용자 선택 드롭다운 UI 추가 (동일 테넌트 사용자 목록)
- HMAC 변수 자동 생성 기능 추가 (\$hmac.exp, \$hmac.signature 등)
- VariableBinder에서 선택된 사용자 정보 사용
- 사용자 선택 시 Sanctum 토큰 자동 발급
- 히스토리 로드 기능 구현 (loadFromHistory, fillFormFromHistory)
- 클라이언트 사이드 필수값 밸리데이션 추가
- 응답 본문 \xXX UTF-8 바이트 시퀀스 디코딩 (PHP 스택트레이스 한글 깨짐 해결)
- sidebar에 data-operation-id 속성 추가
- history-drawer 함수 연결 수정
- Flow Tester 변수 바인딩 개선
- 마이그레이션 파일 통합 정리
- OpenAPI 스펙 파일을 mng/storage/api-docs/로 복사
- config 경로를 storage_path()로 변경 (Docker 호환)
- 라우트 이름 수정 (dev-tools.api-explorer.* 접두사)
- HTMX 트리거 수정 (input changed, autocomplete off)
- openSettingsModal, showToast 함수 추가
- Config, Service, Controller, View 생성
- Model 4개 (admin_api_* 테이블 참조)
- 3-Panel 레이아웃 (sidebar, request, response)
- HTMX 기반 동적 UI
- 마이그레이션은 api/ 프로젝트에서 관리
- 사용자 목록에 테넌트 컬럼 추가 (기본 테넌트 인디고 배지)
- UserService: tenants 관계 eager loading 추가
- 컨텍스트 메뉴 우클릭 → 좌클릭 변경 (캡처링 방식)
- 전체 blade 파일 툴팁 통일: '클릭하여 메뉴 열기'
- flow-tester 오류 분석 문구 수정
- ApiLogCapturer 추가: 플로우 실행 중 API 로그 캡처
- resolveBaseUrl() 추가: .env 환경변수 기반 baseUrl 지원
- 실행 상세 페이지: 스텝별 접기/펼치기 기능 (성공=접힘, 실패=펼침)
- JSON 가이드 및 예제 플로우 최신화
- AI 프롬프트 템플릿 업데이트
- bindExpectVariables() 추가: expect jsonPath 값에 변수 바인딩 적용
- areNumericEqual() 추가: 숫자 타입 유연 비교 ("2" == 2)
- VariableBinder: setVariables()에서 {{$env.XXX}} 환경변수 치환 지원
- FlowExecutor: 스텝 실행 결과에 reason, description, expect 필드 추가
- buildResultReason(): 성공/실패 이유 자동 생성
- 부정 테스트(400, 404 등) 시 예상대로 반환됨을 명시
- 400: 유효성 검증 실패 확인
- 404: 리소스 미존재 확인
- 409: 충돌 상태 확인
- 403: 권한 거부 확인
- run-detail.blade.php: 예상 상태코드, 이유, 스텝 설명 표시 UI
- 테이블 헤더 스타일 통일 (menus, roles, permissions, boards 등)
- 권한 매트릭스 체크박스/버튼 크기 20x20으로 표준화
- 스크럼 항목 추가/수정 모달 통합 (코드 중복 제거)
- daily-logs API URL 경로 수정 (/pm/ 제거)
- 타임존 Asia/Seoul로 변경
- flow-tester 액션 아이콘 크기 조정
- VariableBinder에 Laravel Faker 기반 랜덤 데이터 생성 기능 추가
- {{$faker.name}}, {{$faker.email}}, {{$faker.phone}} 등 텍스트 생성
- {{$faker.number:MIN:MAX}}, {{$faker.price:MIN:MAX}} 숫자/가격 생성
- {{$faker.itemCode:PREFIX}}, {{$faker.code:PREFIX:LENGTH}} 코드 생성
- {{$faker.productName}}, {{$faker.unit}}, {{$faker.category}} 품목 관련
- 가이드 모달에 Faker 변수 문서 추가
- 품목관리 API 테스트 예제 3개 추가
- items-crud: Faker 기반 CRUD 테스트 (6단계)
- items-search: 검색/통계 API 테스트 (5단계)
- items-bom: BOM 관리 테스트 (8단계)
FlowExecutor 개선:
- 의존성 스텝 실패 시 후속 스텝 자동 스킵 로직 추가
- Docker 환경 자동 감지 및 내부 URL 변환 (api.sam.kr → nginx)
- SSL 검증 비활성화 및 Host 헤더 설정 지원
- .env에서 API Key/Bearer Token 자동 주입
VariableBinder 개선:
- 임의 stepId 패턴 지원 (page_create_1.tempPageId 등)
- {{$env.VAR_NAME}} 환경변수 플레이스홀더 추가
- {{$auth.token}}, {{$auth.apiKey}} 인증 플레이스홀더 추가
UI 개선:
- SKIPPED 상태 스타일링 (노란색 배경/테두리)
- 행 클릭 시 스텝 상세 확장 기능
- 실행 결과 실시간 표시 개선
- FlowTesterController에 FlowExecutor 연결
- 실행 결과를 AdminApiFlowRun에 저장
- 실행 중 로딩 인디케이터 추가
- 결과 모달로 상세 실행 결과 표시
- 상태, 소요 시간, 완료 스텝 표시
- 각 스텝별 성공/실패 로그 표시
- 상세 보기 링크 제공