Commit Graph

62 Commits

Author SHA1 Message Date
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
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
b718234472 feat: 시뮬레이터 동기화를 위한 DB 스키마 확장
- items 테이블에 process_type, item_category 필드 추가
- category_groups 테이블 생성 (면적/중량/수량 기반 단가 계산 분류)
- CategoryGroup 모델 및 단가 계산 헬퍼 메서드 구현
2025-12-24 14:23:53 +09:00
60618ddd04 feat: 견적 시뮬레이터 개선 및 FlowTester 조건 평가기 추가
- 견적 시뮬레이터 UI 레이아웃 개선 (가로 배치, 반응형)
- FlowTester ConditionEvaluator 클래스 추가 (조건부 실행 지원)
- FormulaEvaluatorService 기능 확장
- DependencyResolver 의존성 해결 로직 개선
- PushDeviceToken 모델 확장 (FCM 토큰 관리)
- QuoteFormula API 엔드포인트 추가
- FlowTester 가이드 모달 업데이트
2025-12-23 23:41:37 +09:00
a332e0cee4 fix: Price 모델 items 테이블 참조 및 견적 시더 입력필드 추가
- Price.getSalesPriceByItemCode() products/materials → items 테이블 수정
- SeedQuoteFormulasCommand INPUT 카테고리 및 Design 사이트 동기화
  - PC(제품카테고리), PRODUCT_ID(제품명), GT(설치유형)
  - MP(모터전원), CT(제어기), QTY(수량) 필드 추가
- metadata에 field_type, options 정보 추가
2025-12-22 22:48:03 +09:00
811a04347f feat: 플로우테스터 개선 및 품목 테스트 데이터 업데이트
- LoginToken 모델 수정
- items-bom/crud/search 플로우 데이터 업데이트
- API_FLOW_TESTER_DESIGN 문서 업데이트
- example-flows 뷰 업데이트
2025-12-22 19:51:36 +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
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
866e2602a2 feat: 견적 수식 품목 단가 연동 구현
- Price 모델 생성 (prices 테이블 연동)
- getCurrentPrice(): 현재 유효 단가 조회
- getSalesPriceByItemCode(): 품목 코드로 판매단가 조회
- FormulaEvaluatorService.getItemPrice() 구현 완료 (TODO 해결)
2025-12-19 16:02:48 +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
c075678cd9 [chore] Pint 코드 스타일 자동 수정 2025-12-18 16:08:59 +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
25ef6659ba feat: 영업 시나리오 체크리스트 기능 구현
- 6단계 영업 프로세스 체크리스트 UI 구현
- 사용자별 체크포인트 저장/조회 API 추가
- 레거시 스타일 가로 아코디언 UI 적용
- 단계별 진행률 표시 및 꿀팁 모달 추가
2025-12-16 23:36:00 +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
22f07069e0 feat: Menu 모델 options 지원 및 MngMenuSeeder 추가
- Menu 모델에 options JSON 필드 및 헬퍼 메서드 추가
  - getOption(), setOption()
  - getRouteName(), getSection(), getMenuType()
  - requiresRole(), getBladeComponent(), getCssClass()
  - getMeta(), setMeta()
- MngMenuSeeder 추가 (tenant_id=1 기본 메뉴 29개)
  - main 섹션: 대시보드, PM, 시스템, 권한, 콘텐츠, 시스템설정
  - tools 섹션: 개발 도구
  - labs 섹션: 실험실 (S/A/M 탭)
2025-12-16 14:52:39 +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
534ffcfbc0 feat(mng): 사업자등록증 OCR 기능 구현
## 주요 변경사항
- 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>
2025-12-16 01:56:49 +09:00
e7beefd594 API 로그 페이지 개선: 테넌트/사용자 표시, 그룹핑, AI 분석 복사
- 테넌트/사용자 컬럼 추가 (관계 eager loading)
- 그룹 ID로 연관 API 호출 필터링 및 상세 페이지에서 그룹 목록 표시
- 상태 400 이상일 때 AI 분석용 복사 버튼 추가
- Tenant 모델 네임스페이스 수정 (Tenants\Tenant)
2025-12-15 16:33:58 +09:00
f5e2068557 MNG: API 로그 관리 기능 추가
- ApiLogController: 로그 목록/상세/삭제 기능
- ApiRequestLog 모델: 색상 accessor, 경로 추출
- 뷰: 통계, 필터링, 페이지네이션
- 사이드바에 'API 요청 로그' 메뉴 추가
- JSON 출력 stripslashes 적용 (이스케이프 제거)
2025-12-15 15:51:19 +09:00
c1bd7ab4d3 품목기준 필드 관리 기능 구현
- ItemField 모델 및 SystemFieldDefinitions 상수 클래스 추가
- ItemFieldSeedingService: 시스템 필드 시딩/초기화/커스텀 필드 CRUD
- ItemFieldController (API): HTMX 기반 시딩 상태, 커스텀 필드 관리
- 커스텀 필드 수정 기능 (시스템 필드는 source_table/field_key 수정 불가)
- 레거시 데이터 표시 개선: 소스 테이블 비어있으면 '미지정' 배지
- 필드 키 정책 변경: 숫자로 시작 허용 (영문/숫자/밑줄)
- AI 문의하기: 시딩 오류 보고서 생성 기능
- 사이드바에 품목기준 필드 관리 메뉴 추가
2025-12-09 23:13:27 +09:00
58f5931271 AdminPmIssue 모델에 마감일 관련 스코프/속성 추가
- scopeOverdue: 마감일 지난 미해결 이슈 필터
- scopeDueSoon: 마감일 임박 이슈 필터 (N일 이내)
- scopeNeedsAttention: 주의 필요 이슈 통합 스코프
- getDdayAttribute: D-day 계산 접근자
- getDueStatusAttribute: 마감 상태 접근자 (overdue/due_soon/normal)
2025-12-09 21:49:59 +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
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
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
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
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
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
d9030bd12b feat: [pm] 프로젝트 관리 기능 개선
- AdminPmProject 모델: 통계 관련 속성 추가
- ProjectService: 통계 조회 로직 개선
- 프로젝트 목록 뷰: 통계 표시 및 UI 개선
- 프로젝트 테이블 뷰: 진행률 표시 개선
2025-11-30 21:05:02 +09:00
127c2fe877 feat: 인증 및 권한 시스템 개선
- LoginController: 로그인 처리 개선
- UserPermissionController: 권한 관리 기능 개선
- User 모델: 권한 관련 메서드 추가
- AuthService: 인증 서비스 로직 개선
- Middleware 추가
- bootstrap/app.php: 미들웨어 등록
- 권한 관리 뷰 개선 (user-permissions, users)
2025-11-30 21:04:32 +09:00
432ec2b1c1 feat: [pm] 작업/이슈 긴급(is_urgent) 토글 기능 추가
- Task, Issue 모델에 is_urgent 필드 추가
- TaskService, IssueService에 toggleUrgent() 메서드 추가
- TaskController, IssueController에 toggleUrgent 엔드포인트 추가
- API 라우트에 toggle-urgent 경로 추가
- 프로젝트 상세 페이지 UI 개선:
  - 작업/이슈 행에 긴급 토글 버튼(불꽃 아이콘) 추가
  - 서브 row(아코디언 내 이슈)에도 긴급 토글 추가
  - 서브 row 컬럼을 작업 row와 동일하게 8컬럼으로 정렬
  - 진행중 작업의 이슈 아코디언 자동 열기
  - 이슈 상태 버튼 항상 테두리 표시
2025-11-28 18:08:32 +09:00
58009e675d feat: [boards] MNG 게시판 관리 시스템 구현
- Models: Board, BoardSetting (커스텀 필드)
- Service: BoardService (CRUD, 필드 관리)
- Controllers: BoardController (Blade), Api/Admin/BoardController (API)
- Views: index, create, edit, table partial
- 커스텀 필드 다중 추가 모달 (한 줄 레이아웃, + 버튼 추가)
2025-11-28 08:50:47 +09:00
e2475d0d9f feat: [pm] 프로젝트 진행 관리 시스템 구현
- Models: AdminPmProject, AdminPmTask, AdminPmIssue
- Services: ProjectService, TaskService, IssueService, ImportService
- API Controllers: ProjectController, TaskController, IssueController, ImportController
- FormRequests: Store/Update/BulkAction 요청 검증
- Views: 대시보드, 프로젝트 CRUD, JSON Import 화면
- Routes: API 42개 + Web 6개 엔드포인트

주요 기능:
- 프로젝트/작업/이슈 계층 구조 관리
- 상태 변경, 우선순위, 마감일 추적
- 작업 순서 드래그앤드롭 (reorder API)
- JSON Import로 일괄 등록
- Soft Delete 및 복원
2025-11-28 08:49:30 +09:00
3dcad4e00c fix: [flow-tester] AdminApiFlowRun 모델 수정
- created_at datetime 캐스팅 추가 (=false로 인한 문제)
- status_color DaisyUI → 순수 Tailwind CSS 클래스로 변경
2025-11-27 20:18:44 +09:00
39ed2ac3e3 feat(user-modal): 사용자 정보 모달 및 컨텍스트 메뉴 확장
사용자 모달 기능:
- 사용자 정보 모달 팝업 (조회/삭제/수정)
- 권한 요약 정보 (Web/API 권한 카운트)
- 2x2 그리드 레이아웃 (테넌트, 역할, 부서, 권한)
- 테이블 행 클릭으로 모달 열기
- 권한 관리 링크 클릭 시 해당 사용자 자동 선택

컨텍스트 메뉴 확장:
- permission-analyze 페이지 사용자 이름에 컨텍스트 메뉴
- user-permissions 페이지 사용자 버튼에 컨텍스트 메뉴
- 사용자 모달 내 테넌트 칩에 컨텍스트 메뉴
- 헤더 테넌트 배지에 컨텍스트 메뉴
- 테넌트 메뉴에 "이 테넌트로 전환" 기능 추가
2025-11-27 20:05:27 +09:00
b32f6cfcf0 feat: 테넌트 정보 모달 팝업 기능 추가
- 테넌트 row 클릭 시 모달 팝업 표시
- 컨텍스트 메뉴 (우클릭) 지원
- 탭 구조: 구독정보, 사용자, 부서, 역할, 메뉴
- 메뉴 탭 트리 구조 접기/펼치기 기능
- 삭제된 테넌트 경고 배너 (삭제일, 삭제자 표시)
- 복원 버튼으로 즉시 복원 및 모달 새로고침
- 액션 버튼 (수정/삭제) 클릭 시 모달 미표시
2025-11-27 19:11:32 +09:00
ff943ab728 feat: API Flow Tester 기능 기반 구조 추가
- 모델: AdminApiFlow, AdminApiFlowRun
- 컨트롤러: FlowTesterController
- 뷰: index, create, edit, history, run-detail
- 사이드바 메뉴에 "개발 도구" 그룹 추가
- 라우트 설정
2025-11-27 19:02:18 +09:00
d45ccfb325 feat(mng): 아카이브 레코드 batch 그룹핑 UI 구현
- ArchivedRecordService: batch_id 기준 그룹핑 쿼리 추가
- Controller: batchId 파라미터로 상세 조회 변경
- 목록: 작업 설명, 레코드 타입, 레코드 수 표시
- 상세: batch 내 모든 레코드를 카드 형태로 표시
- 한번의 삭제 작업이 하나의 행으로 표시됨
2025-11-26 23:16:39 +09:00
6ad76239a9 feat(mng): 삭제된 데이터 백업 기능 추가
- ArchivedRecord, ArchivedRecordRelation 모델 추가
- ArchivedRecordService 추가 (읽기 전용)
- 목록/상세 컨트롤러 및 뷰 구현
- HTMX 기반 테이블 필터링 및 페이지네이션
- 사이드바 메뉴 연결
2025-11-26 22:23:37 +09:00
d4534f0d3f feat(mng): 사용자 역할/부서 매핑 및 부서관리 복구/영구삭제 기능 추가
사용자 관리:
- 사용자 등록/수정 시 테넌트별 역할/부서 선택 기능 추가
- Department, UserRole, DepartmentUser 모델 추가
- User 모델에 역할/부서 관계 및 헬퍼 메서드 추가
- syncRoles/syncDepartments 메서드 (forceDelete로 유니크 키 충돌 방지)
- 체크박스 UI로 다중 선택 지원

부서 관리:
- Soft Delete 필터 (정상만/전체/삭제된 항목만)
- 복구(restore) 및 영구삭제(forceDelete) 기능 추가
- Department 모델에 SoftDeletes 트레이트 추가
- 삭제된 항목 빨간 배경 + "삭제됨" 배지 표시
2025-11-26 20:28:07 +09:00