Commit Graph

18 Commits

Author SHA1 Message Date
김보곤
aa8ae86f1d feat: [approval] 양식 선택 시 제목 자동 설정 기능 추가
- applyBodyTemplate에서 제목 필드가 비어있으면 양식명 자동 입력
- create/edit 공통 적용
2026-03-04 14:51:43 +09:00
김보곤
0593700e40 fix: [approval] 결재선 요약 카드 XSS 방어 추가
- updateApprovalLineSummary의 innerHTML에 escapeHtml 함수 적용
- user_name, position, stepLabel 출력 시 HTML 이스케이프 처리
2026-03-04 14:21:27 +09:00
김보곤
25b6470555 feat: [approval] 결재선 드롭다운 직접 배치 및 양식 본문 자동 채움
- 새기안/수정 화면에 결재선 드롭다운 추가 (모달 없이 빠른 선택)
- 양식 선택 시 body_template HTML 자동 채움 (편집기 자동 활성화)
- 모달 닫을 때 외부 드롭다운 동기화
- ApprovalForm 모델 fillable에 body_template 추가
2026-03-04 14:19:18 +09:00
김보곤
3216bb98bc feat: [approval] 결재관리 삭제 권한 기능 추가
- 관리자/슈퍼관리자 모든 상태 결재 문서 삭제 가능
- 일반 사용자는 기존대로 draft + 본인 기안만 삭제
- 진행 중 문서 삭제 시 휴가 연동 취소 처리
- 삭제 API 403 권한 검증 추가
- 상세 페이지 삭제 버튼 + 2중 확인 다이얼로그
2026-03-03 07:36:24 +09:00
김보곤
9d939a6a6a feat: [approvals] 결재선 카드 드래그 앤 드롭 순서 변경
- SortableJS로 결재선 요약 카드 드래그 앤 드롭 지원
- 순서 변경 시 Alpine 데이터 동기화 및 카드 라벨 자동 갱신
- hover/grab/ghost/chosen 시각 피드백 CSS 추가
- 2명 이상 시 '드래그하여 순서를 변경할 수 있습니다' 힌트 표시
- CSS ::after로 카드 간 화살표 표시 (드래그 시 자연스럽게 이동)
2026-02-28 14:55:31 +09:00
김보곤
b4283ccf85 fix: [approvals] 결재선 요약을 제목 아래로 이동, 카드형 표시
- 결재선 요약 바를 본문 아래에서 제목 아래로 위치 변경
- 표시 형식을 '1차 결재 / 직책 / 이름' 카드형으로 변경
- 결재/합의/참조별 색상 구분 (파랑/초록/회색)
2026-02-28 14:48:32 +09:00
김보곤
cfdb1044fb feat: [approvals] 기안 작성/수정 결재선을 모달로 전환
- 2열 레이아웃(양식 50% + 결재선 50%)을 1열 풀와이드로 변경
- 결재선 편집기를 모달로 이동, 메인 화면에 요약 바만 표시
- ESC 키로 모달 닫기 지원
- edit 페이지 로드 시 기존 결재선 요약 즉시 표시
2026-02-28 14:41:56 +09:00
김보곤
b486dbdc5e fix: [approvals] 결재 상세 메타 정보 열 구분선 추가 (가독성 개선) 2026-02-28 14:27:11 +09:00
김보곤
81f33978af fix: [approvals] Quill.js CDN URL 수정 (cdn.quilljs.com → cdn.jsdelivr.net) 2026-02-28 14:21:13 +09:00
김보곤
c58ca65dc7 feat: [approvals] 기안 본문 Quill.js 편집기 토글 기능 추가
- create/edit: 본문 라벨 옆 편집기 체크박스 + Quill.js v2 WYSIWYG 에디터
- edit: 기존 HTML body 자동 감지 → 편집기 자동 활성화
- show: HTML body 안전 렌더링 (strip_tags), plain text는 기존 방식 유지
- textarea ↔ Quill 토글 시 내용 상호 이관
2026-02-28 14:18:34 +09:00
김보곤
090275e133 fix: [approvals] 기본 결재선 템플릿 드롭다운 선택 표시 수정
- selectedLineId 타입을 숫자로 초기화하여 option value와 일치시킴
2026-02-28 14:10:02 +09:00
김보곤
f1be22f062 feat: [approvals] 기안 작성 시 기본 결재선 템플릿 자동 선택
- is_default=true인 결재선 템플릿을 자동으로 선택하고 steps 로드
2026-02-28 13:57:38 +09:00
김보곤
8971ec1595 style: [approvals] 결재선 관리 모달 Toss 스타일 리디자인
- CSS 변수 기반 Toss 디자인 시스템 적용
- backdrop blur + slide-up 애니메이션
- 카드 기반 결재선 목록 (arrow flow 표시)
- 커스텀 step type select, pill 버튼
- 모달/인풋/버튼 전체 톤앤매너 통일
2026-02-28 09:15:10 +09:00
김보곤
af7334dc79 feat: [approvals] 결재선 템플릿 CRUD 기능 추가
- POST/PUT/DELETE /api/admin/approvals/lines 라우트 추가
- ApprovalApiController storeLine/updateLine/destroyLine 메서드
- ApprovalService createLine/updateLine/deleteLine + enrichLineSteps 헬퍼
- 기안함 화면에 결재선 관리 버튼 + 모달 UI (목록/편집 2-state)
2026-02-28 09:07:33 +09:00
김보곤
5c5402e61a feat: [approvals] 결재선 에디터 2패널 UI/UX 개선
- 좌측 패널: 부서별 인원 목록 (접이식 그룹핑, 검색 필터)
- 우측 패널: 결재선 (SortableJS 드래그앤드롭 순서 변경)
- 부서별 전체 인원 API 추가 (GET /api/admin/tenant-users/list)
- 결재/합의/참조 유형별 요약 바 추가
- position_key → positions 테이블 조인으로 직위 라벨 표시
2026-02-28 07:45:54 +09:00
김보곤
5b31822453 fix: [approvals] Alpine.js v3 호환 결재선 데이터 접근 방식 수정
- __x.$data (v2 문법) → _x_dataStack[0] (v3 문법)으로 변경
- 에디터에 id="approval-line-editor" 추가하여 정확한 요소 선택
- create.blade.php, edit.blade.php 동시 수정
2026-02-28 00:45:27 +09:00
김보곤
9b96a3cad1 feat: [approval] Phase 2 결재관리 고급 기능 구현
- 보류/해제: 현재 결재자가 문서를 보류하고 해제
- 전결: 이후 모든 결재를 건너뛰고 최종 승인
- 회수 강화: 회수 사유 입력, 첫 결재자 미처리 시에만 허용
- 복사 재기안: 완료/반려/회수 문서를 복사하여 새 draft 생성
- 참조 열람 추적: 미열람/열람 필터, mark-read API
- ApprovalDelegation 모델 생성 (Phase 3 위임 대결 준비)
- 뱃지 카운트에 reference_unread 추가
2026-02-27 23:42:12 +09:00
김보곤
12c9ad620a feat: [approval] 결재관리 Phase 1 MVP 구현
- 모델 4개: Approval, ApprovalStep, ApprovalForm, ApprovalLine
- ApprovalService: 목록/CRUD/워크플로우(상신/승인/반려/회수) 비즈니스 로직
- ApprovalApiController: JSON API 엔드포인트 (기안함/결재함/완료함/참조함)
- ApprovalController: Blade 뷰 컨트롤러 (HX-Redirect 처리)
- 뷰 8개: drafts, pending, completed, references, create, edit, show
- partials: _status-badge, _step-progress, _approval-line-editor
- api.php/web.php 라우트 등록
2026-02-27 23:17:41 +09:00