- 검색 API (GET /api/admin/hr/employees/search-users)
- 테넌트 소속 + 사원 미등록 사용자 검색
- 기존 사용자 선택 시 Employee만 생성 (User 생성 건너뜀)
- Alpine.js 검색 UI (포커스시 목록, debounce 검색, 선택/해제)
- API 컨트롤러 store/update/destroy에 try-catch 추가
- debug 모드에서 상세 에러 메시지 포함 응답
- create/edit 뷰에 showToast 기반 에러 표시 추가
- 422 validation 에러 필드별 메시지 표시
- 500 서버 에러 시 사용자 친화적 메시지 표시
- Position 생성 API 엔드포인트 추가 (POST /admin/hr/positions)
- 직급/직책 select 옆 "+" 버튼으로 모달 열기
- 모달에서 이름 입력 → API 저장 → 드롭다운에 자동 추가 및 선택
- 중복 key 방지 (기존 값이면 그대로 반환)
- create/edit 뷰 모두 적용
- store(): GCS뿐 아니라 local_path 도장도 signer에 자동 적용
- getContract(): signer에 도장 없어도 tenant_settings에서 확인하여 has_stamp 반환
- submitSignature(): 기존 계약 creator도 tenant_settings에서 도장 가져와 적용
- SmsController (WEB): 카카오톡 패턴 동일한 HX-Redirect 처리
- BarobillSmsController (API): 발송, 발신번호 조회/확인, 전송상태 조회
- SMS 발송 테스트 블레이드 뷰: 발신번호 목록, 바이트 카운터, 발송 결과 표시
- web.php: barobill/sms/send 라우트 추가
- api.php: barobill/sms API 라우트 4개 추가
- /equipment/guide 라우트 및 컨트롤러 메서드 추가
- guide.blade.php 신규 생성 (히어로+TOC+5섹션+FAQ)
- academy-glossary에 equipment 도메인 용어 20개 추가
- 품질인정심사(ISO 9001) 대응 가이드, 보전 기초지식 포함
- EquipmentPhotoService: uploadPhotoFromPath() 추가, 압축 메서드 public 전환
- EquipmentImportService: Drawing 추출/임시파일 저장/사진 업로드 통합
- EquipmentController: Import 응답 메시지에 사진 업로드 결과 포함
- 모델 6개 (Equipment, InspectionTemplate, Inspection, InspectionDetail, Repair, Process)
- 서비스 3개 (Equipment, Inspection, Repair)
- API 컨트롤러 3개 + FormRequest 4개
- Blade 컨트롤러 + 라우트 등록
- 뷰: 대시보드, 등록대장(CRUD), 일상점검표(캘린더 그리드), 수리이력
menu_sync_api_key를 config/app.php에 등록하여 config:cache 후에도
env() 값이 정상 반환되도록 수정. 컨트롤러에서 env() 직접 호출 제거.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 아카데미 하위에 경정청구 페이지 신규 생성
- sales 경정청구 자료를 MNG 아카데미 패턴으로 변환
- SAM 제안 형태: 청년 판정, 권역 판정, 데이터 통합 자동화
- Chart.js 차트 4종 포함 (소요시간, 비용절감, 오류유형, 이용자추이)
- 학습 가이드 (용어 해설 + 퀴즈 5문항)
- startDate 이전 누적 데이터로 이월잔액(priorBalance) 계산 추가
- 잔액 공식 변경: 이월잔액 + 당기발생 - 당기상계
- 이월잔액만 있고 당기 거래 없는 거래처도 목록에 포함
- 통계 카드에 이월잔액 표시 추가
- 거래처 테이블에 이월잔액 열 추가
- handleOpenJournalModal에 splits 데이터 전달
- getDefaultLines()에서 splits 기반 차변 라인 자동 생성
- 공제 항목: 비용계정 + 부가세대급금 분리, 불공제: 합산
- 분개 모달에 분리 데이터 기반 인디케이터 배지 표시
- storeJournal의 splits 자동삭제 코드 제거 (분리+분개 공존)
- 기존 '분개' 열을 '분리'(금액 나누기)와 '분개'(복식부기) 두 열로 분리
- SplitModal 텍스트를 '분개'에서 '분리'로 변경
- CSV 내보내기 텍스트도 '분리'로 통일
- 분리 열: 금액 분리 기능 (SplitModal)
- 분개 열: 복식부기 분개 기능 (CardJournalModal)
- EcardController에 storeJournal/getJournal/deleteJournal/getJournalStatuses 4개 메서드 추가
- journal_entries + journal_entry_lines 통합 (source_type='ecard_transaction')
- CardJournalModal 차변/대변 복식부기 UI 추가
- 거래 테이블에 분개완료/구버전/미분개 3단계 상태 표시
- 기존 splits 데이터 자동 전환 지원
- SenderID: 바로빌 계정 ID (barobill_id) 사용
- YellowId: 카카오톡 채널 ID 필수 전달 (기존에 빈값)
- SmsReply: 'N' (대체문자 미발송) 또는 'S' (발송) 명시
- 템플릿 본문: API에서 조회 후 변수 치환 (정확한 포맷 유지)
- getKakaotalkSenderId → getKakaotalkChannelId 이름 변경
- EsignPublicController: 잘못된 필드명(corp_num, is_test_mode) 수정
- WSDL 스펙에 맞게 KakaotalkMessage 중첩 구조로 변경
- ReceiverName, ReceiverNum 등을 최상위에서 KakaotalkMessage 내부로 이동
- ReserveDT → SendDT로 파라미터명 수정
- SendATKakaotalkEx에 YellowId 파라미터 추가
- 버튼 배열을 KakaotalkButton 래핑 구조로 변경
- sendATKakaotalks 대량 발송도 WSDL 구조에 맞게 수정
- esign 알림톡 메시지 본문을 등록 템플릿에 맞게 조정