Commit Graph

85 Commits

Author SHA1 Message Date
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
049fa7ed61 feat: [users] 슈퍼관리자 보호 기능 구현
- 일반관리자가 슈퍼관리자 수정/삭제 불가
- API Controller: update/destroy에서 403 반환
- Web Controller: edit에서 403 abort
- FormRequest: is_super_admin 필드 강제/유지 처리
- View: 테이블, 모달, 생성/수정 폼에서 버튼/체크박스 숨김

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 23:10:07 +09:00
695e3873d9 chore: 관리 페이지 뷰 및 라우트 정비
- ArchivedRecordController 수정
- 각종 테이블 뷰 개선 (archived-records, boards, departments, menus, tenants)
- web.php 라우트 정비
2025-11-30 21:05:13 +09:00
d9030bd12b feat: [pm] 프로젝트 관리 기능 개선
- AdminPmProject 모델: 통계 관련 속성 추가
- ProjectService: 통계 조회 로직 개선
- 프로젝트 목록 뷰: 통계 표시 및 UI 개선
- 프로젝트 테이블 뷰: 진행률 표시 개선
2025-11-30 21:05:02 +09:00
5671cd0bee fix: FlowTester 컨트롤러 수정 2025-11-30 21:04:37 +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
fe902472c1 feat: [flow-tester] 의존성 검사, Docker 지원, 인증 자동 주입 기능 추가
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 상태 스타일링 (노란색 배경/테두리)
- 행 클릭 시 스텝 상세 확장 기능
- 실행 결과 실시간 표시 개선
2025-11-27 22:20:36 +09:00
28ca71a17e feat: [flow-tester] 플로우 실행 기능 완성
- FlowTesterController에 FlowExecutor 연결
- 실행 결과를 AdminApiFlowRun에 저장
- 실행 중 로딩 인디케이터 추가
- 결과 모달로 상세 실행 결과 표시
  - 상태, 소요 시간, 완료 스텝 표시
  - 각 스텝별 성공/실패 로그 표시
  - 상세 보기 링크 제공
2025-11-27 20:25:32 +09:00
3dcad4e00c fix: [flow-tester] AdminApiFlowRun 모델 수정
- created_at datetime 캐스팅 추가 (=false로 인한 문제)
- status_color DaisyUI → 순수 Tailwind CSS 클래스로 변경
2025-11-27 20:18:44 +09:00