- 4가지 서비스 옵션 체크박스 추가 (전자세금계산서, 계좌조회, 카드사용내역, 홈텍스매입/매출)
- BarobillSetting 모델 및 BarobillSettingController 생성
- 설정 API 라우트 추가 (/api/admin/barobill/settings)
- 담당자 정보 입력 필드 추가 (이름, 연락처, 이메일)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- MngMenuSeeder에 바로빌 그룹메뉴와 회원사관리 하위메뉴 추가
- BarobillController 생성 (회원사관리 페이지)
- /barobill/members 라우트 추가
- 회원사관리 기본 뷰 파일 생성 (샘플 테이블 포함)
메뉴 적용: php artisan db:seed --class=MngMenuSeeder
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1. /menus 페이지 hx-boost 네비게이션 시 SortableJS 미실행 수정
- htmx:afterSettle 이벤트로 페이지별 스크립트 초기화
- menu-sortable.js로 SortableJS 로직 분리
- 중복 코드 제거
2. 세션 만료 시 자동 갱신 로직 추가
- /auth/refresh-session 엔드포인트 추가
- Remember Token으로 자동 재인증 (자동 로그인 사용자)
- 재인증 실패 시 로그인 페이지 리다이렉트
- 인증 모달에 회사(테넌트) 선택 드롭다운 추가
- 헤더의 $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>
- 댓글 라우트 추가 (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>
## 슈퍼관리자 삭제 게시물 관리
- 삭제된 게시물 목록에 표시 (빨간색 배경, 취소선)
- 게시물 복원 기능 추가 (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>
- 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>
- /customer-center/{code} → /boards/{id}/posts 리다이렉트
- 시스템 게시판(tenant_id=null) + 활성화된 게시판만 대상
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- /customer-center 라우트 신규 생성
- 활성화된 시스템 게시판만 표시
- 테이블 컬럼: ID, 유형, 코드, 게시판명, 게시글 수, 생성일
- 관리 기능(구분, 필드, 상태, 액션) 제외한 읽기 전용 뷰
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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>
- simulateBom API 엔드포인트 추가 (calculateBomWithDebug 연동)
- simulator.blade.php: BOM 디버깅 모드 탭 추가
- 10단계 디버그 스텝 패널
- 공정별 품목 그룹화 표시
- 원가 요약 (공정별 소계, 총합계)
- FormulaEvaluatorService: currentTenantId 속성 추가
- 콘솔/API에서 tenant_id 전달 가능하도록 수정
- routes/api.php: simulate-bom 라우트 추가
- 견적 시뮬레이터 UI 레이아웃 개선 (가로 배치, 반응형)
- FlowTester ConditionEvaluator 클래스 추가 (조건부 실행 지원)
- FormulaEvaluatorService 기능 확장
- DependencyResolver 의존성 해결 로직 개선
- PushDeviceToken 모델 확장 (FCM 토큰 관리)
- QuoteFormula API 엔드포인트 추가
- FlowTester 가이드 모달 업데이트
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 엔드포인트 추가
- QuoteFormulaRangeService, RangeController 생성
- 범위 CRUD API 엔드포인트 추가 (6개)
- edit.blade.php 탭 구조로 개편 (기본정보/범위/매핑/품목)
- ranges-tab.blade.php 범위 관리 UI 구현
- Alpine.js 기반 인터랙티브 CRUD
- 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>
- 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>
- 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>
- FCM 토큰 관리 페이지 (목록, 활성화/비활성화, 삭제)
- 테스트 발송 페이지 (대상 필터, 미리보기, 발송)
- 발송 이력 페이지 (필터링, 결과 확인)
- FcmSender 서비스 (HTTP v1, 배치 처리)
- fcm_send_logs 테이블 마이그레이션
- google/auth 패키지 추가
- 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 변수 바인딩 개선
- 마이그레이션 파일 통합 정리
- Config, Service, Controller, View 생성
- Model 4개 (admin_api_* 테이블 참조)
- 3-Panel 레이아웃 (sidebar, request, response)
- HTMX 기반 동적 UI
- 마이그레이션은 api/ 프로젝트에서 관리
- 리스트/상세 페이지에 재전송 버튼 추가
- 인증 방식 선택: 토큰 직접 입력 / 사용자 선택(Sanctum 토큰 발급)
- 환경별 API URL 변환 (API_BASE_URL 설정)
- X-API-KEY 헤더 자동 추가 (FLOW_TESTER_API_KEY 사용)
- 성공/실패 상태 배너 표시
- 세션에 토큰 저장하여 다음 재전송 시 자동 입력
- 재전송 성공 시 1초 후 페이지 새로고침
- 에러만 필터 옵션 추가 (4xx+5xx)
- MeetingLogService: processUploadedFile 메서드 추가
- MeetingLogController: uploadFile 엔드포인트 추가
- routes/api.php: /api/meeting-logs/upload 라우트 추가
- meeting-summary.blade.php: 드래그앤드롭 파일 업로드 UI 구현
- refreshMeetingList 함수로 목록 새로고침 처리
- 소프트 삭제된 필드 목록에 표시 (withTrashed)
- 삭제된 필드 시각적 구분 (빨간 배경, '삭제됨' 배지)
- 필드 복원 기능 추가 (restore API)
- 필드 영구 삭제 기능 추가 (forceDelete API)
- 체크박스 선택 및 일괄 삭제 기능 추가
- 시스템 필드 삭제 제한 해제
- 커스텀 모달 적용 (showConfirm, showDeleteConfirm)
- MeetingLog 모델 (BelongsToTenant, SoftDeletes)
- GoogleCloudService (GCS 업로드, STT API)
- MeetingLogService (Claude API 요약)
- MeetingLogController (HTMX/JSON 듀얼 응답)
- 순수 Tailwind CSS UI 구현
- API 라우트 8개 엔드포인트 등록
## 주요 변경사항
- BizCertController: 내부 API (OCR, CRUD)
- BizCertOcrService: Claude Vision API 연동, Tesseract.js 지원
- BizCert 모델 및 FormRequest 추가
- config/services.php에 Claude API 설정 추가
## 프론트엔드
- business-ocr.blade.php: layouts.app 레이아웃 적용
- JS/AI 토글 모드 (Tesseract.js / Claude Vision)
- 이미지 전처리 추가 (그레이스케일, 대비 강화, 이진화)
- SweetAlert2 연동 (토스트, 삭제 확인)
## API 엔드포인트
- POST /api/biz-cert/ocr - OCR 처리
- GET /api/biz-cert - 목록 조회
- POST /api/biz-cert - 저장
- DELETE /api/biz-cert/{id} - 삭제
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 파라미터 표시: URL 아래에 key=value 형식으로 표시
- 아코디언 기능: row 클릭 시 요청 헤더/응답 바디 확장 표시
- 요청 헤더: 각 항목별 한 줄 포맷 (key: value)
- 아이콘 버튼: 상세(눈), AI 복사(복사) 아이콘으로 변경
- AI 복사: 에러(400+) 로그에만 AI 분석 복사 버튼 표시
- 레이아웃: 테이블 컬럼 고정 너비, 셀 중간 정렬
- 아코디언 스타일: 테두리 추가, 배경색 조정
- 모든 로그 삭제(truncate) 기능 추가
레거시 5130.sam.kr/ai_sam의 Google Gemini Live API 음성 어시스턴트를
MNG 프로젝트로 이전 (React → Pure JS + Blade)
변경 내용:
- GeminiController: API 키 제공 엔드포인트 추가
- sam-ai-live.js: LiveManager, AudioVisualizer ES 모듈
- sam-ai-menu.blade.php: 전면 재작성 (Tailwind UI)
- 환경변수: GEMINI_API_KEY, GEMINI_PROJECT_ID 추가
기능:
- 실시간 음성 입출력 (WebAudio API)
- UI 도구: navigateToPage, searchDocuments
- 오디오 시각화 (Canvas API)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 사이드바 UI 텍스트 변경 (실험실 → R&D Labs)
- 라우트 및 컨트롤러 주석 업데이트
- AI/Management 컨트롤러 docblock 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- AIController 생성 (12개 메서드)
- ManagementController 생성 (11개 메서드)
- A 메뉴 플레이스홀더 템플릿 12개 생성
- 사업자등록증 OCR, 웹 녹음 AI 요약, 회의록 AI 요약
- 업무협의록 AI 요약, 운영자용 챗봇, Vertex RAG 챗봇
- 테넌트 지식 업로드, 테넌트 챗봇, SAM AI 메뉴 이동
- SAM AI 알람음 제작, GPS 출퇴근 관리, 기업개황 조회
- M 메뉴 플레이스홀더 템플릿 11개 생성
- 바로빌 테넌트 관리, 전자세금계산서 전략, 전자세금계산서
- 사업자등록번호 진위 확인, 영업관리 & 매니저 미팅관리
- 카드 세무항목 매칭 전략, 한국 카드사 API 보고서
- 카드 사용내역 수집 후 매칭, 계좌입출금 내역 조회 API
- 영업관리 시나리오, 매니저 시나리오
- 라우트 23개 추가 (AI 12개, Management 11개)
- 사이드바 메뉴 라우트 연결 완료
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- ItemField 모델 및 SystemFieldDefinitions 상수 클래스 추가
- ItemFieldSeedingService: 시스템 필드 시딩/초기화/커스텀 필드 CRUD
- ItemFieldController (API): HTMX 기반 시딩 상태, 커스텀 필드 관리
- 커스텀 필드 수정 기능 (시스템 필드는 source_table/field_key 수정 불가)
- 레거시 데이터 표시 개선: 소스 테이블 비어있으면 '미지정' 배지
- 필드 키 정책 변경: 숫자로 시작 허용 (영문/숫자/밑줄)
- AI 문의하기: 시딩 오류 보고서 생성 기능
- 사이드바에 품목기준 필드 관리 메뉴 추가
- ImportService에 importIssuesToTask 메서드 추가
- ImportController에 importIssues 액션 추가
- ImportIssuesRequest FormRequest 생성
- POST /api/admin/pm/import/task/{taskId}/issues 라우트 추가
- import.blade.php UI에 '기존 작업에 이슈 추가' 모드 추가
- ImportProjectRequest에 tasks 레벨 검증 규칙 보완
- 테이블 헤더 스타일 통일 (menus, roles, permissions, boards 등)
- 권한 매트릭스 체크박스/버튼 크기 20x20으로 표준화
- 스크럼 항목 추가/수정 모달 통합 (코드 중복 제거)
- daily-logs API URL 경로 수정 (/pm/ 제거)
- 타임존 Asia/Seoul로 변경
- flow-tester 액션 아이콘 크기 조정
- 글로벌 메뉴 CRUD API 및 라우트 추가 (GlobalMenuController)
- 글로벌 메뉴 목록/생성/수정 뷰 추가 (보라색 테마)
- MenuService에 글로벌 메뉴 관련 메서드 11개 추가
- 메뉴 관리 페이지에 '글로벌 메뉴 관리' 버튼 추가
- 가져오기 모드에서 이미 가져온 메뉴 비활성화 표시
- super.admin 미들웨어로 접근 제어
- PULL 방식 메뉴 가져오기 (테넌트가 글로벌에서 선택적으로 가져옴)
- 모드 전환 UI (내 메뉴 / 글로벌에서 가져오기)
- 체크박스 선택으로 다중 메뉴 가져오기 지원
- 가져오기 모드에서 읽기 전용 상태 배지 표시
- hidden input으로 HTMX mode 파라미터 전달 수정
- 오늘의 활동을 3컬럼 칸반 레이아웃으로 변경 (예정/진행중/완료)
- 담당자별 항목 그룹핑 적용
- 인라인 상태 변경 버튼 추가 (hover 시 표시)
- 담당자별 다중 항목 편집 모달 구현
- 담당자 이름 공통 입력
- 항목별 textarea, 상태 버튼, 삭제 버튼
- 항목 추가/삭제 기능
- Promise.all로 일괄 저장
- 인라인 삭제 기능 추가
- 라우트 경로 수정 (pm.daily-logs.index → daily-logs.index)