Commit Graph

96 Commits

Author SHA1 Message Date
a043bf7b51 refactor(lab): 실험실 → R&D Labs 리브랜딩
- 사이드바 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>
2025-12-14 00:31:34 +09:00
e90eaee6a5 feat(lab): A 메뉴(AI/자동화) 12개, M 메뉴(관리) 11개 마이그레이션
- 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>
2025-12-13 23:55:18 +09:00
b200947ebc feat(lab): S 메뉴 전략 문서 15개 마이그레이션
- StrategyController 생성 (15개 메소드)
- presentation.blade.php 레이아웃 추가
- 전략 문서 템플릿 15개 생성:
  - tax, labor, debt, chatbot (슬라이드 프레젠테이션)
  - rag-startups, douzone (Chart.js 통합)
  - confluence-vs-notion (비교 분석 + 퀴즈)
  - sales-strategy (8 슬라이드 + 채팅 UI)
  - kodata-vs-nice, barobill-vs-popbill (API 비교)
  - knowledge-search, chatbot-compare (탭 기반)
  - stablecoin, mrp-overseas, qa-solution (placeholder)
- 라우트 및 사이드바 메뉴 연결

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 23:41:08 +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
36daf862b1 메뉴 영구삭제 기능 개선
- 메뉴 영구삭제 시 연관 권한도 함께 삭제
- 삭제 정보를 archived_records에 저장 (복구용)
  - 메뉴 데이터, 권한 목록, 역할-권한 연결 정보 보관
- batch_id를 순수 UUID로 변경 (컬럼 크기 제한 해결)
- 영구삭제 시 에러 메시지 토스트로 표시 (하위 메뉴 존재 등)
- 글로벌 메뉴 영구삭제 시 참조 테넌트 메뉴 연결 해제
2025-12-09 23:11:17 +09:00
f92b9335fc 메뉴 영구 삭제 시 연관 권한 삭제 및 아카이브 저장
- forceDeleteMenu: 연관 권한(menu:{id}.*) 함께 삭제
- forceDeleteGlobalMenu: 연관 권한 삭제 + 테넌트 메뉴 참조 해제
- 삭제 전 권한/역할 연결 정보를 archived_records에 저장
- Controller 반환값에 삭제된 권한 정보 포함
2025-12-09 22:51:20 +09:00
58f5931271 AdminPmIssue 모델에 마감일 관련 스코프/속성 추가
- scopeOverdue: 마감일 지난 미해결 이슈 필터
- scopeDueSoon: 마감일 임박 이슈 필터 (N일 이내)
- scopeNeedsAttention: 주의 필요 이슈 통합 스코프
- getDdayAttribute: D-day 계산 접근자
- getDueStatusAttribute: 마감 상태 접근자 (overdue/due_soon/normal)
2025-12-09 21:49:59 +09:00
af3c97b137 일일 스크럼 주의 필요 항목 카드 UI 개선
- 주의 필요 항목을 팀별(이슈)/담당자별(태스크) 카드로 그룹핑
- 반응형 그리드 레이아웃 적용 (1~4열)
- 펼침 블록에 회사/팀/담당자/프로젝트/마감일 상세 정보 표시
- 조회 조건 변경: 마감 3일 이내 → 이번 주 마감 + 마감 초과 + 긴급
- 헤더 뱃지 "마감임박" → "이번주"로 변경
2025-12-09 21:48:48 +09:00
fd3d3b5448 fix: permission-analyze에서 user_roles 테이블 조회 추가
- checkRolePermission(): user_roles 테이블 쿼리 추가
- traceUsersWithPermission(): user_roles 기반 역할 사용자 조회 추가
- getUserRoles(): model_has_roles + user_roles 통합 조회로 변경
- 중복 제거 및 결과 병합 처리
2025-12-09 20:30:33 +09:00
8c348f2e02 fix: 개인 권한 관리 페이지 메뉴 리스트 표시 오류 수정
- getMenuTree()에 TenantScope 비활성화 추가 (HQ 관리자가 다른 테넌트 메뉴 조회 가능)
- getRolePermissions()에 user_roles 테이블 쿼리 추가 (테넌트별 역할 권한 반영)
- hasRolePermission(), getUserPermissionCounts()도 user_roles 포함하도록 수정
- 사용자 버튼의 data-context-menu를 아이디 뱃지로 이동 (클릭 이벤트 충돌 해결)
2025-12-09 18:43:44 +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
428d3d9e83 feat: 사용자 목록 테넌트 컬럼 추가 및 컨텍스트 메뉴 개선
- 사용자 목록에 테넌트 컬럼 추가 (기본 테넌트 인디고 배지)
- UserService: tenants 관계 eager loading 추가
- 컨텍스트 메뉴 우클릭 → 좌클릭 변경 (캡처링 방식)
- 전체 blade 파일 툴팁 통일: '클릭하여 메뉴 열기'
- flow-tester 오류 분석 문구 수정
2025-12-09 10:28:46 +09:00
251bc203d8 fix: FlowExecutor GET 요청 시 query 파라미터 지원
- GET 요청에서 query 필드를 URL 쿼리스트링으로 전송
- 요청 로그에 query 정보 포함 (에러/성공 모두)
2025-12-08 19:03:58 +09:00
858ce6194d Flow Tester AI 프롬프트 템플릿 개선
- config.apiKey 필드를 JSON에서 제거 (서버 자동 주입)
- config.baseUrl을 빈 문자열로 설정 (서버 기본값 사용)
- 프롬프트 템플릿에 더 명확한 규칙 추가
- 로그인 스텝 포함한 완전한 예시 제공
- 예시 프롬프트 간소화
2025-12-05 14:19:59 +09:00
5c892c1ed9 브라우저 alert/confirm을 SweetAlert2로 전환
- layouts/app.blade.php에 SweetAlert2 CDN 및 전역 헬퍼 함수 추가
  - showToast(): 토스트 알림 (success, error, warning, info)
  - showConfirm(): 확인 대화상자
  - showDeleteConfirm(): 삭제 확인 (경고 아이콘)
  - showPermanentDeleteConfirm(): 영구 삭제 확인 (빨간색 경고)
  - showSuccess(), showError(): 성공/에러 알림

- 변환된 파일 목록 (48개 Blade 파일):
  - menus/* (6개), boards/* (2개), posts/* (3개)
  - daily-logs/* (3개), project-management/* (6개)
  - dev-tools/flow-tester/* (6개)
  - quote-formulas/* (4개), permission-analyze/* (1개)
  - archived-records/* (1개), profile/* (1개)
  - roles/* (3개), permissions/* (3개)
  - departments/* (3개), tenants/* (3개), users/* (3개)

- 주요 개선사항:
  - Tailwind CSS 테마와 일관된 디자인
  - 비동기 콜백 패턴으로 리팩토링
  - 삭제/복원/영구삭제 각각 다른 스타일 적용
2025-12-05 09:49:56 +09:00
f28a51bdf9 fix: [flow-tester] 플로우 삭제 시 AJAX 응답 처리 추가 2025-12-05 09:31:32 +09:00
690b252bf4 fix: [users] 슈퍼관리자 체크박스 해제 시 값 반영 안되는 문제 수정
- 체크박스에 hidden 필드 추가 (해제 시에도 값 전송)
- UserService에 is_super_admin boolean 변환 로직 추가
- is_active 체크박스도 동일하게 수정
2025-12-05 09:31:23 +09:00
b97712ec5d Flow Tester: Laravel Log 버튼 수정 및 유니코드 디코딩 추가
- Alpine.js 대신 DaisyUI collapse 컴포넌트 사용
- ApiLogCapturer에 유니코드 이스케이프 디코딩 기능 추가
- 한글 메시지가 정상적으로 표시되도록 수정
2025-12-04 23:43:27 +09:00
1930c2ef9f feat(daily-logs, pm): 스크럼 UI/UX 개선
Daily Logs 페이지:
- 미완료 항목 상태 변경 시 카드 유지 (done만 제거)
- 카드 정렬을 날짜 오래된 순으로 변경
- 요약 내용 nl2br 적용 및 접힘 시 2줄 제한
- 아코디언 항목 담당자별 그룹핑으로 통합

Project Management 페이지:
- 오늘의 활동을 칸반(3열) → 담당자 카드 스타일로 변경
- 완료 항목도 함께 표시 (취소선, 초록 배지)
- 미완료/완료 건수 헤더에 표시
2025-12-04 22:25:50 +09:00
fe10cae06c feat: [flow-tester] API 로그 캡처 및 UI 개선
- ApiLogCapturer 추가: 플로우 실행 중 API 로그 캡처
- resolveBaseUrl() 추가: .env 환경변수 기반 baseUrl 지원
- 실행 상세 페이지: 스텝별 접기/펼치기 기능 (성공=접힘, 실패=펼침)
- JSON 가이드 및 예제 플로우 최신화
- AI 프롬프트 템플릿 업데이트
- bindExpectVariables() 추가: expect jsonPath 값에 변수 바인딩 적용
- areNumericEqual() 추가: 숫자 타입 유연 비교 ("2" == 2)
2025-12-04 15:57:56 +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
477779f3ac feat: FlowTester 환경변수 지원 및 결과 설명 UI 개선
- VariableBinder: setVariables()에서 {{$env.XXX}} 환경변수 치환 지원
- FlowExecutor: 스텝 실행 결과에 reason, description, expect 필드 추가
- buildResultReason(): 성공/실패 이유 자동 생성
  - 부정 테스트(400, 404 등) 시 예상대로 반환됨을 명시
  - 400: 유효성 검증 실패 확인
  - 404: 리소스 미존재 확인
  - 409: 충돌 상태 확인
  - 403: 권한 거부 확인
- run-detail.blade.php: 예상 상태코드, 이유, 스텝 설명 표시 UI
2025-12-04 13:28:22 +09:00
793f4a8319 fix: FlowTester 스텝 헤더가 기본 Bearer 토큰보다 우선하도록 수정
- 문제: .env의 FLOW_TESTER_API_TOKEN이 스텝에서 설정한 Authorization 헤더를 덮어씀
- 원인: withToken()이 항상 호출되어 스텝 헤더를 무시함
- 해결: 스텝 헤더에 Authorization이 있으면 기본 Bearer 토큰 사용 안함
2025-12-03 20:14:03 +09:00
2846d6c034 style: 관리자 패널 UI 개선 및 스크럼 모달 통합
- 테이블 헤더 스타일 통일 (menus, roles, permissions, boards 등)
- 권한 매트릭스 체크박스/버튼 크기 20x20으로 표준화
- 스크럼 항목 추가/수정 모달 통합 (코드 중복 제거)
- daily-logs API URL 경로 수정 (/pm/ 제거)
- 타임존 Asia/Seoul로 변경
- flow-tester 액션 아이콘 크기 조정
2025-12-03 16:47:57 +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
7bba5e71a6 refactor: MenuService가 global_menus 테이블 사용하도록 수정
- getAvailableGlobalMenus(): GlobalMenu 모델 사용
- copyFromGlobal(): GlobalMenu 모델 사용
- Menu::whereNull('tenant_id') → GlobalMenu::query()로 변경
2025-12-02 20:50:25 +09:00
0d12295495 feat: GlobalMenu 모델 추가 및 Menu 관계 변경
- GlobalMenu 모델 생성
- Menu.globalMenu() 관계를 GlobalMenu 모델로 변경
2025-12-02 20:43:29 +09:00
28b4ec8afd feat: [메뉴] 통합메뉴관리 - 글로벌에서 가져오기 기능 구현
- PULL 방식 메뉴 가져오기 (테넌트가 글로벌에서 선택적으로 가져옴)
- 모드 전환 UI (내 메뉴 / 글로벌에서 가져오기)
- 체크박스 선택으로 다중 메뉴 가져오기 지원
- 가져오기 모드에서 읽기 전용 상태 배지 표시
- hidden input으로 HTMX mode 파라미터 전달 수정
2025-12-02 19:16:23 +09:00
d4051e20fa feat: [pm] 이슈에 팀/담당자/고객사 필드 추가
- DB 마이그레이션: 하이브리드 FK + 문자열 필드 방식
- Model: fillable, casts, relationships, accessor 추가
- FormRequest: validation rules 추가 (Store/Update)
- ImportService: JSON import 시 새 필드 처리
- UI: 이슈 모달에 입력 필드 추가
- UI: 작업 탭 아코디언에 고객사·부서·담당자 표시
- 이슈 저장 후 작업 탭 즉시 갱신
2025-12-02 19:10:15 +09:00
8b88224be9 feat: [pm] 이슈 일정 UI 및 정렬 기능 추가
- 이슈 모달에 시작일/마감일/예상시간 입력 필드 추가
- 작업 탭 아코디언 서브 이슈에 마감일 표시 및 지연 강조
- 이슈 정렬: 마감일 → 상태 순 (이슈탭 + 작업탭 아코디언)
2025-12-02 18:29:11 +09:00
af5ecf3c4c feat: 프로젝트 대시보드 스크럼 칸반 스타일 개선
- 오늘의 활동을 3컬럼 칸반 레이아웃으로 변경 (예정/진행중/완료)
- 담당자별 항목 그룹핑 적용
- 인라인 상태 변경 버튼 추가 (hover 시 표시)
- 담당자별 다중 항목 편집 모달 구현
  - 담당자 이름 공통 입력
  - 항목별 textarea, 상태 버튼, 삭제 버튼
  - 항목 추가/삭제 기능
  - Promise.all로 일괄 저장
- 인라인 삭제 기능 추가
- 라우트 경로 수정 (pm.daily-logs.index → daily-logs.index)
2025-12-02 14:19:28 +09:00
afccada30b fix: 일일 로그 날짜 수정 버그 픽스
- UpdateDailyLogRequest에 log_date 검증 규칙 추가
- DailyLogService.updateDailyLog에 log_date 필드 추가
- 일일 로그 수정 모달에 formatDateForInput 함수 추가
  (ISO 형식을 YYYY-MM-DD 형식으로 변환)
2025-12-02 14:19:28 +09:00
8948aa86d0 feat: 게시글 파일 첨부 기능 구현
- File 모델 추가 (Polymorphic 관계)
- Post 모델에 files() MorphMany 관계 추가
- PostService 파일 업로드/삭제/다운로드 메서드 추가
- PostController 파일 관련 액션 추가
- 게시글 작성/수정 폼에 드래그앤드롭 파일 업로드 UI
- 게시글 상세에 첨부파일 목록 표시
- tenant 디스크 설정 (공유 스토리지)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 00:54:43 +09:00
7ea8997927 feat: 최초 로그인 시 비밀번호 변경 강제 기능
- User 모델에 must_change_password 필드 추가
- UserService: createUser(), resetPassword()에서 플래그 설정
- ProfileService: changePassword()에서 플래그 해제
- EnsurePasswordChanged 미들웨어 추가
- 인증 라우트에 password.changed 미들웨어 적용
- 프로필 페이지에 비밀번호 변경 필요 알림 추가

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 23:44:56 +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
d992a19735 feat: 프로필 설정 페이지 추가
- 프로필 정보 수정 (이름, 전화번호)
- 비밀번호 변경 기능
- 헤더 드롭다운 메뉴 연결

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 23:16:23 +09:00
273ac6caf6 fix(mng): Role 모델 withTrashed() 호출 제거
- Role 모델에 SoftDeletes 트레이트가 없어 에러 발생
- 테넌트 아카이브 시 역할 조회 로직 수정

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 22:43:39 +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
c8ddbfd130 테넌트 목록/모달 UI 개선
- 저장소 사용량 표시 추가 (테이블 + 모달)
- 이메일/전화번호 컬럼 병합 (연락처)
- 전화번호 하이픈 포맷 적용
- 생성일 yymmdd 형식 변경 및 ID 뒤로 이동
- 테이블 헤더 가운데 정렬
- 액션 컬럼을 관리(colspan)로 변경
2025-12-01 14:57:53 +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
4ede126518 feat: [flow-tester] Faker 변수 바인딩 및 품목관리 API 테스트 예제 추가
- 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단계)
2025-12-01 14:04:57 +09:00
85cbe23782 feat: [users] 사용자 등록 시 비밀번호 자동 생성 및 이메일 발송
- 사용자 등록 시 비밀번호 입력 필드 제거
- 임의 비밀번호 자동 생성 후 이메일 발송
- 사용자 수정 페이지에 비밀번호 초기화 버튼 추가
- 사용자 모달에 비밀번호 초기화 버튼 추가
- 사용자 모달 프로필 이미지 없을 때 이름 첫글자 표시 (한글 지원)
- UserPasswordMail 클래스 및 이메일 템플릿 추가
2025-12-01 10:50:16 +09:00
6b40362392 feat: [archived-records] 아카이브 복원 기능 및 테넌트 필터링 구현
Phase 1 - 아카이브 복원 기능:
- ArchiveService: 모델별 아카이브 로직 통합 (326줄)
- RestoreService: 복원 로직 및 충돌 검사 (319줄)
- ArchivedRecordController: restore, checkRestore 메서드 추가
- record_type enum→varchar 마이그레이션
- 복원 버튼 및 충돌 체크 UI (restore-check.blade.php)

Phase 2 - 테넌트 필터링:
- ArchivedRecord 모델: tenant_id fillable, tenant 관계 추가
- ArchiveService: tenant_id 저장 로직 (determineTenantId)
- ArchivedRecordService: 테넌트별 필터링 쿼리
- 목록 UI: ID 컬럼, 대상 테넌트 컬럼 추가

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 00:43:58 +09:00
023b199313 fix: [roles] 역할 수정 페이지 guard_name null 에러 및 테넌트 필터링 수정
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 00:42:15 +09:00
b39e8b5f2c fix: [users] 슈퍼관리자 보호 기능 복원 라우트 수정
- routes/api.php: 8개 엔티티의 restore 라우트를 super.admin 미들웨어 밖으로 이동
  - tenants, departments, users, menus, boards
  - pm/projects, pm/tasks, pm/issues
- UserService.canAccessUser(): withTrashed() 적용하여 soft-deleted 사용자 권한 체크 가능
- UserPermissionService.canModifyUser(): withTrashed() 적용 (일관성 유지)

권한 정책:
- 복원 (Restore): 일반관리자 가능
- 영구삭제 (Force Delete): 슈퍼관리자 전용

버그 수정:
- 302 Found 에러 해결 (미들웨어 블로킹)
- soft-deleted 사용자 복원 시 권한 체크 실패 해결

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 00:13:12 +09:00
bbf34e9f3f fix: [archived-records] 페이지네이션 오류 수정
- GROUP BY + paginate() 조합 시 total count 오류 해결 (서브쿼리 방식)
- DB::table() 사용 시 page 파라미터 명시적 전달
- 커스텀 페이지네이션을 공용 컴포넌트(partials.pagination)로 교체

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 23:11:38 +09:00