김보곤
d1489427bc
fix: [bim] 하단 툴바 2행 시 스크롤바 제거 및 컴팩트화
...
- 컨테이너 padding/gap 축소 (px-4 py-2 gap-3 → px-3 py-1 gap-1.5)
- 버튼 padding 축소 (py-1.5 → py-1, px-2/3 → px-1.5/2)
- 버튼 내부 gap 축소 (gap-1 → gap-0.5)
- 구분선 높이 축소 (h-6 → h-5)
- overflow-hidden 추가로 스크롤바 방지
2026-03-13 08:00:27 +09:00
김보곤
0de0e59ba3
feat: [bim] SAM 쇼 이펙트 20가지 구현
...
- 별 모임, 불꽃놀이, 매트릭스, 토네이도, 은하수
- DNA 나선, 파도, 폭포, 오로라, 네온사인
- 스타워즈, 빅뱅, 반딧불이, 도미노, 하트비트
- 블랙홀, 비눗방울, 번개, 벚꽃, 피닉스
- 드롭다운 선택 + 실행 버튼 UI 추가
- 효과별 독립 update 클로저로 깔끔한 구조
2026-03-12 23:41:10 +09:00
김보곤
1adfe3e8ae
feat: [bim] SAM 쇼 이펙트 - 별이 모이듯 날아와 사라지는 연출
...
- 단일 플라이바이 → 28개 텍스트(SAM 12 + 샘 16) 멀티 쇼 효과 교체
- 3단계 연출: GATHER(별 모임) → HOLD(압축 회전) → BURST(폭발 소멸)
- 15색 팔레트, 다양한 크기, 구 표면 랜덤 출발점
- 한글 '샘' Canvas 스프라이트 + 영문 'SAM' 3D TextGeometry 혼합
- 백색 플래시 구체로 버스트 시 임팩트 강화
2026-03-12 23:16:50 +09:00
김보곤
4ef4c3a88a
feat: [pmis] BIM 뷰어 SAM 3D 텍스트 플라이바이 애니메이션
...
- Three.js TextGeometry로 'SAM' 3D 입체 텍스트 생성
- 큐빅 베지어 곡선 경로로 건물 위 하늘을 대각선 횡단
- ease-in-out 가속/감속, 글로우 펄스, 페이드인/아웃 효과
- 메탈릭 블루 재질 + 반투명 글로우 외곽 이중 레이어
- 하단 툴바에 SAM 버튼 추가 (그라데이션 스타일)
2026-03-12 23:07:41 +09:00
김보곤
49a7be3f56
feat: [pmis] BIM 뷰어 기둥/보를 H형강 단면으로 개선
...
- hbeam() 메서드 추가 (상/하 플랜지 + 웹 3파트 구성)
- X방향/Z방향/수직(Y) 3축 지원
- 보: H500×300, H450×300 H형강 단면 적용
- 기둥: H400×400 H형강 단면 적용
- 요소 통계에서 플랜지 부품 카운트 제외 (본체만)
2026-03-12 23:02:25 +09:00
김보곤
bb63d40162
fix: [pmis] 방화셔터를 Jamb+하우징+패널 구조로 개선
...
- 내화시간 1시간→2시간으로 변경
- 좌/우 Jamb(문틀) + 상부 하우징(셔터박스) + 닫힌 패널 4파트 구조
- Jamb/하우징은 불투명, 셔터 패널만 반투명 빨간색
- 요소 통계에서 패널만 카운트 (부품 제외)
- 선택 시 부위/구역 정보 표시 추가
2026-03-12 22:56:34 +09:00
김보곤
94a7821aad
feat: [pmis] BIM 뷰어 데모 건물에 방화셔터 요소 추가
...
- 빨간색(E53935) 반투명 패널로 시각적 구분
- 계단실 입구 방화셔터 (각 층 1개)
- 방화구획 경계 셔터 (X=20m, 40m 지점, 각 층 2개)
- 하단 툴바에 방화셔터 토글 버튼 추가
- 요소 통계에 방화셔터 카운트 자동 표시
- IFC 내보내기 시 방화셔터 포함
2026-03-12 22:47:54 +09:00
김보곤
f991fc893f
fix: [pmis] BIM 뷰어 초기 줌 축소 및 하단 툴바 잘림 수정
...
- 카메라 초기 위치를 (55,35,55)→(80,50,80)으로 변경하여 건물 전체 조망
- fog 밀도 0.004→0.003으로 조정 (넓은 시점에서 선명하게)
- 하단 툴바를 absolute→shrink-0 flex 자식으로 변경하여 항상 표시
- 스크롤 없이 IFC 업로드/다운로드 버튼 접근 가능
2026-03-12 22:38:31 +09:00
김보곤
50c411bcf2
fix: [pmis] BIM 뷰어 사이드바 네비게이션 개선
...
- 정적 BimSidebar를 인터랙티브 PmisSidebar로 교체
- 아코디언 메뉴 토글 기능 추가 (시공관리, 안전관리 등)
- 하위 항목을 클릭 가능한 링크로 변경
- 자료실 메뉴 누락분 추가
- 현재 페이지(BIM 뷰어) 활성 상태 표시
2026-03-12 22:31:43 +09:00
김보곤
2102f4a398
feat: [pmis] PMIS 자료실/안전관리/품질관리 기능 추가 및 개선
...
- 자료실 하위 3개 메뉴: 자료보관함, 매뉴얼, 공지사항
- 자료보관함: 폴더 트리 + 파일 업로드/다운로드/삭제
- 매뉴얼/공지사항: 게시판형 CRUD + 첨부파일
- 안전관리: 안전보건교육, TBM현황, 위험성평가, 재해예방조치
- 품질관리: 시정조치 UI 페이지
- 대시보드: 슈퍼관리자 전용 레거시 사이트 참고 카드
- 작업일보/출면일보 오류 수정 및 기능 개선
- 설비 사진 업로드, 근로계약서 종료일 수정
2026-03-12 21:11:21 +09:00
김보곤
3c6692e026
docs: [CLAUDE.md] Blade + React JSX 혼용 규칙 추가
2026-03-12 17:08:16 +09:00
김보곤
3074e45ca9
feat: [pmis] 작업일보 6탭 CRUD 구현
...
- 마스터 + 인원/장비/자재/공사량/작업사진 6테이블 마이그레이션
- 6개 탭: 작업내용, 인원, 장비, 자재, 공사량, 작업사진
- 작업내용: 금일/명일 텍스트 + 날씨/기온/강수/미세먼지 메타
- 전일누계 + 금일 + 총계 누적 패턴 (인원/장비/자재/공사량)
- 작업사진: 파일 업로드 + 사진목록/사진정보 2단 레이아웃
- 상태별 버튼 제어 (작성중→저장/삭제, 검토중→읽기전용)
- 양식보기: 3페이지 전체화면 뷰어 (작업일보/인원장비/자재)
- 검토자 지정 모달, 캘린더 스트립, 번개 랜덤데이터
2026-03-12 17:06:23 +09:00
김보곤
ede9790dda
fix: [카드사용내역] 주석 내 이중중괄호 제거
2026-03-12 16:58:57 +09:00
김보곤
d27692767c
fix: [카드사용내역] Blade {{ }} 문법 충돌로 인한 500 에러 수정
...
- style={{ }} JSX 패턴이 Blade 이중 중괄호와 충돌하여 PHP Parse error 발생
- style 객체를 JS 변수로 분리하여 단일 중괄호 참조로 변경
2026-03-12 16:52:02 +09:00
김보곤
6c968dbb6f
feat: [pmis] 출면일보 CRUD 구현
...
- 일별 출면일보 마스터 + 인원/장비 3테이블 마이그레이션
- 캘린더 스트립 (1~31일) 날짜 선택 및 상태 닷 표시
- 인원/장비 탭 CRUD (추가/수정/삭제/번개 랜덤데이터)
- 검토자 확인 모달 (조직도 + 검색 + 검토라인)
- 양식보기 모달 (출면일보/장비일보 인쇄 양식)
- 날씨/특이사항/상태 업데이트 API
2026-03-12 16:43:36 +09:00
김보곤
28ca8d05d3
fix: [카드사용내역] 분개 수정 모달 테이블 레이아웃 깨짐 수정
...
- ecard/index.blade.php의 분개 테이블에 table-fixed + colgroup 비율 적용
- 계정과목/거래처 td에 overflow-hidden 추가
- 차/대 10%, 계정과목 22%, 거래처 28%, 차변/대변 각 17%, 삭제 6%
2026-03-12 16:40:54 +09:00
김보곤
0bc135bc06
fix: [전표] 분개 테이블 칼럼 너비를 비율(%) 기반으로 변경
...
- 고정 px → 퍼센트 비율로 변경하여 해상도 독립적 레이아웃
- 구분 8%, 계정과목 18%, 거래처 22%, 차변/대변 각 15%, 적요 18%, 삭제 4%
- 수동전표, 카드분개, 은행분개 모달 3개 모두 동일 적용
2026-03-12 16:30:41 +09:00
김보곤
4dc425d365
fix: [payroll] 일할계산 카드 토글 접기/펼치기 적용
...
- 접힌 상태로 기본 표시, 클릭 시 상세 테이블 펼침
- 모달 열기/사원 변경 시 접힌 상태로 초기화
2026-03-12 16:23:21 +09:00
김보곤
e9c40f1f8c
fix: [전표] 분개 모달 테이블 레이아웃 깨짐 수정
...
- table-fixed + Tailwind w-[] 클래스가 빌드에 누락되어 칼럼 너비 미적용
- colgroup + inline style로 변경하여 고정 너비 보장
- 계정과목/거래처/적요 td에 overflow-hidden 추가
- 수동전표, 카드분개, 은행분개 모달 3개 모두 동일 적용
2026-03-12 16:21:10 +09:00
김보곤
388cf174bb
feat: [전표] 일반전표 복사 기능 추가
...
- 전표 수정 모달에 복사 버튼 추가
- 복사 시 일자 선택 다이얼로그 표시
- 선택한 일자 기준 신규 전표번호 자동 생성
- 분개 내역(계정과목, 금액, 거래처, 적요) 그대로 복사
2026-03-12 16:00:04 +09:00
김보곤
1bd5ba817a
feat: [pmis] 공사량관리 CRUD 구현
...
- pmis_work_volumes 마이그레이션/모델/컨트롤러 생성
- 공사량 탭 (등록, 수정, 삭제, 일보적용 토글)
- 실적현황 탭 (전일누계, 금일, 총계 표시)
- 공사량정보 모달 (공종, 세부공종, 단위, 설계량)
- 번개 아이콘 랜덤 데이터 추가 기능
2026-03-12 15:59:51 +09:00
김보곤
f15df8e46e
fix: [finance] 분개수정 모달 거래처명 길 때 UI 깨짐 수정
...
- 3개 분개 모달 테이블에 table-fixed 적용
- 거래처명이 길어도 컬럼 너비 고정되어 truncate 정상 동작
2026-03-12 15:55:18 +09:00
김보곤
b7a7dfd04f
feat: [payroll] 입사월 급여 등록 시 일할계산 자동 적용
...
- 사원 선택 시 입사일이 해당 급여월이면 일할계산 자동 적용
- 산식: 월액 / 해당월총일수 × 근무일수 (입사일 포함)
- 기본급, 고정연장근로수당, 식대 모두 일할계산
- 일할계산 내역 안내 배너 표시 (산식, 금액 상세)
- 자동 적용 후 수동 수정 가능
2026-03-12 15:34:12 +09:00
김보곤
c92d9c45e0
docs: CLAUDE.md DB 아키텍처 규칙 현행화
...
- MNG 자체 마이그레이션 관리 구조 반영
- 이전 규칙(마이그레이션 금지) → 현행(MNG 전용 테이블 자체 관리)
2026-03-12 14:54:40 +09:00
김보곤
d74363cd6c
feat: [payroll] 급여 등록 시 사원 선택하면 급여 산정값 자동 적용
...
- 사원의 salary_info에서 기본급, 고정연장근로수당, 식대 자동 로드
- 산정 데이터 없는 사원은 기존 연봉/12 fallback 유지
- 자동 입력 후 수동 수정 가능 (중도입사자 등)
2026-03-12 14:53:41 +09:00
김보곤
ae343dda4e
refactor: [pmis] 마이그레이션을 API에서 MNG로 이관
...
- PMIS 테이블은 MNG 전용이므로 MNG에서 관리
- pmis_workers, pmis_job_types, pmis_construction_workers, pmis_equipments, pmis_materials
2026-03-12 14:43:54 +09:00
김보곤
304c689c00
fix: [hr] 월 고정연장근로시간 최대값 52시간으로 제한
2026-03-12 14:39:08 +09:00
김보곤
38002c3c50
feat: [pmis] 자재관리 CRUD 구현
...
- 자재등록 탭: 등록/수정/삭제, 페이지네이션, 검색, 필터
- 입고현황 탭: 자재 목록 기반 입고 현황 조회
- 기준자재정보 모달: 30종 건설자재 선택 등록
- 번개 아이콘 랜덤 데이터 등록 기능
2026-03-12 14:37:45 +09:00
김보곤
de6ef7472a
feat: [hr] 사원 연봉 등록 시 급여 산정 테이블 추가
...
- 고정연장근로수당 산정 계산 로직 구현 (기본급, 통상시급, 고정OT 자동 계산)
- 수정 모드에서 실시간 급여 산정 미리보기 테이블
- 조회 모드에서 요약/상세 급여 산정 내역 표시
- 식대, 월 고정연장근로시간 입력 필드 추가
- 계산 결과를 salary_info에 저장하여 급여관리에서 활용 가능
2026-03-12 14:34:21 +09:00
김보곤
26acd0e07b
feat: [pmis] 인원/장비관리 랜덤 데이터 추가 버튼(번개 아이콘)
2026-03-12 14:23:37 +09:00
김보곤
9889658caa
feat: [pmis] 장비관리 실제 CRUD 구현
...
- PmisEquipmentController: 장비 CRUD API
- PmisEquipment 모델 추가
- 3개 탭: 장비등록(CRUD), 출역현황, 투입현황
- 장비정보 모달 (저장/수정/삭제)
- API 라우트 추가 (equipments)
2026-03-12 14:13:38 +09:00
김보곤
babccc0f23
feat: [pmis] 인원관리 실제 CRUD 구현
...
- PmisWorkforceController: 인원/직종 CRUD API
- PmisConstructionWorker, PmisJobType 모델 추가
- 인원등록 탭: 실제 DB CRUD, 페이지네이션, 필터, 모달
- 직종 44개 시드 데이터 등록
- API 라우트 추가 (workers, job-types)
2026-03-12 14:02:54 +09:00
김보곤
c8fd3e2739
feat: [pmis] 시공관리 하위메뉴 6개 추가 및 인원관리 페이지 구현
...
- 시공관리 하위메뉴: 인원관리, 장비관리, 자재관리, 공사량관리, 출면일보, 작업일보
- 인원관리 4개 탭 구현: 인원등록, 출역현황, 투입현황(업체별), 투입현황(근로자별)
- PMIS 사이드바에 시공관리 children 메뉴 추가 (대시보드, BIM 뷰어 포함)
- 나머지 5개 메뉴 placeholder 페이지 생성
2026-03-12 13:52:20 +09:00
김보곤
04296e3b86
feat: [bim] IFC 파일 다운로드 기능 추가
...
- 데모 모델: Three.js 메시를 IFC2X3 STEP 형식으로 변환 후 다운로드
- IFC 모델: 업로드한 원본 IFC 파일을 그대로 재다운로드
- 툴바에 'IFC 다운로드' 버튼 추가
2026-03-12 13:31:19 +09:00
김보곤
60475f641a
feat: [bim] Phase 2 - IFC 파일 업로드 및 실제 BIM 모델 렌더링
...
- web-ifc WASM 엔진으로 IFC 파일 파싱 (지연 로딩)
- IFC 지오메트리 → Three.js BufferGeometry 직접 변환
- 요소 클릭 시 IFC 속성 조회 (이름, 타입, GlobalId 등)
- 드래그 앤 드롭 + 파일 업로드 버튼
- 로딩 오버레이 (엔진 초기화, 파싱, 모델 생성 단계별)
- 데모 모델 ↔ IFC 모델 전환
- IFC 모델 자동 카메라 피팅
- IFC 요소 타입별 통계 표시
2026-03-12 13:17:11 +09:00
김보곤
c7fd350a4c
fix: [pmis] BIM 뷰어 Three.js CDN r128로 변경 (OrbitControls 호환)
2026-03-12 12:41:42 +09:00
김보곤
953cadfd99
feat: [pmis] BIM 뷰어 3D 프로토타입 구현
...
- Three.js 기반 3D 건물 모델 뷰어
- 기둥/보/벽/창/지붕 등 요소별 색상 구분 및 클릭 선택
- 시점 전환(투시도/정면/우측/상부/배면), 요소 토글, 와이어프레임
- PMIS 사이드바 아코디언 메뉴 + BIM 뷰어 링크 추가
2026-03-12 12:39:15 +09:00
김보곤
dbab583e5a
feat: [pmis] PmisWorker 모델 분리 및 개인정보 관리 개선
...
- pmis_workers 전용 모델 생성 (SAM 사원관리와 분리)
- 프로필 API 응답 worker 키로 변경
- 직책/소속업체 편집 기능 추가
- React 컴포넌트 data.user → data.worker 전환
2026-03-12 12:22:55 +09:00
김보곤
bafc40e43d
feat: [juil] 건설PMIS 좌측 사이드바 및 개인정보 관리 모달 구현
...
- PMIS 전용 좌측 사이드바 (사용자 프로필 + 네비게이션 메뉴)
- 개인정보 관리 모달 (보기/수정 모드 전환)
- 연락처, 이메일, 성별 편집 및 서버 저장 기능
- 프로필 조회/수정 JSON API 엔드포인트 추가
- 3컬럼 레이아웃 (좌측 사이드바 + 대시보드 + 우측 퀵메뉴)
2026-03-12 11:17:19 +09:00
김보곤
85c1a8acbe
feat: [juil] 건설PMIS 날씨 위젯 WeatherService API 연동
...
- 기존 대시보드 WeatherService를 활용한 JSON API 추가
- React 날씨 위젯에서 /juil/construction-pmis/weather 호출
- 기상청 API 기반 오늘/내일 날씨, 기온, 강수확률 표시
- Blade weather-icon과 동일한 SVG 아이콘 React 컴포넌트 구현
2026-03-12 11:09:06 +09:00
김보곤
e499e2eb83
feat: [juil] 건설PMIS 대시보드 레이아웃 구현
...
- 날씨 위젯, 금일 출역 현황, 업무 진행 현황 위젯 추가
- 최근 접속 메뉴 퀵메뉴 우측 사이드바 추가
- 업무 Flow 보기, KCC 자료 참고 버튼 우측 사이드로 이동
- KCC KOUP 대시보드 레이아웃 참고하여 SAM 브랜딩으로 구현
2026-03-12 11:05:16 +09:00
김보곤
374d79ed10
feat: [juil] KCC 자료 참고 버튼 및 원본 이미지 모달 추가
...
- 헤더에 KCC 자료 참고 버튼 추가
- KCC KOUP 원본 Flow 이미지 4개를 탭 형태로 열람 가능
- SAM PMIS 업무 Flow와 별도 모달로 분리
2026-03-12 11:00:35 +09:00
김보곤
74fd1462e5
refactor: [juil] 건설PMIS 업무 Flow를 SVG 다이어그램으로 교체
...
- KOUP 참조 제거, SAM PMIS 자체 브랜딩으로 변경
- 이미지 기반 → React + SVG 플로우차트로 전면 교체
- 4개 탭별 인터랙티브 다이어그램 구현
- 더 이상 사용하지 않는 Flow 이미지 파일 삭제
2026-03-12 10:56:55 +09:00
김보곤
2453e64e03
chore: [juil] 건설PMIS Flow 이미지 자산 추가
...
- .gitignore에 pmis-flow 이미지 예외 규칙 추가
- 4개 업무 Flow 이미지 포함
2026-03-12 10:48:07 +09:00
김보곤
21b8fcdde8
feat: [juil] 건설PMIS 페이지 및 업무 Flow 모달 추가
...
- 건설PMIS 메뉴 페이지 생성 (construction-pmis.blade.php)
- 업무 Flow 보기 버튼 → 모달창 4개 탭 구현
- KCC KOUP 업무 Flow 이미지 4장 포함
- PlanningController에 constructionPmis 메서드 추가
2026-03-12 10:47:33 +09:00
김보곤
da1acc9d1e
fix: [payroll] 급여등록 사원선택에서 영업팀(외주) 제외
2026-03-12 09:56:46 +09:00
김보곤
a0ba7fc13f
feat: [email] 테넌트 이메일 설정 관리 기능 추가
...
- TenantMailConfigController: 목록, 편집, 저장, SMTP 테스트 API
- TenantMailConfig, MailLog 모델 추가
- SmtpConnectionTester: SMTP 연결 테스트 서비스 (에러 코드, 트러블슈팅)
- TenantMailService: 테넌트 설정 기반 메일 발송 (쿼터, Fallback)
- config/mail-presets.php: Gmail/Naver/MS365 등 8개 SMTP 프리셋
- Blade 뷰: 테넌트 목록 현황 + 설정 폼 (프리셋 자동 채움, 연결 테스트)
- 라우트 추가: /system/tenant-mail/*
2026-03-12 07:42:17 +09:00
김보곤
80b9164a54
fix: [fire-shutter] 가이드레일 슬롯 부동소수점 오류 수정
...
- bOuterW 계산을 bBw+2*t2(=70.1) 대신 g.width*sc(=70) 사용
- 슬롯 표시에 Math.round() 추가로 10.100000000000003 → 10 수정
- 주석 flange26 → flange30 정정
2026-03-12 07:34:25 +09:00
김보곤
3fc4c10593
feat: [payroll] 개발서버 슈퍼관리자 급여관리 접근 허용
...
- 운영서버: 기존 3인(이의찬, 전진선, 김보곤)만 접근 가능 (변경 없음)
- 개발서버/로컬: 슈퍼관리자도 급여관리 전체 접근 가능 (조회+수정)
- 적용 대상: 급여관리, 사업소득자 임금대장, 연봉 정보
2026-03-11 20:44:26 +09:00
김보곤
f152e866a1
fix: [fire-shutter] 슬롯 10mm 수정 (flange 30mm) + ① 우측 접힘 방향 개구부쪽으로 수정
2026-03-11 19:58:41 +09:00
김보곤
a4b0eebe6c
fix: [fire-shutter] ① 마감재 코킹립 방향 벽쪽 복원 + 벽 겹침 방지 위치 이동
2026-03-11 19:36:09 +09:00
김보곤
60a7257127
fix: [fire-shutter] ① 마감재 코킹립 방향 수정 (벽쪽→채널 내부)
2026-03-11 19:22:36 +09:00
김보곤
599ed4857a
fix: [fire-shutter] ① 마감재 수평면 범위 수정
...
- 수평면 우측 끝을 C채널 립 끝(lipEndX)에 맞춤
- 140mm 고정값 대신 벽~립 사이 자동 맞춤
- ① 마감재가 C채널 밖으로 돌출되는 문제 해결
2026-03-11 18:01:50 +09:00
김보곤
d195369283
fix: [fire-shutter] ① 마감재 평면도 형상 개선
...
- sc 4→3 축소 (두께 비율 현실적 표현, 1.2t/1.55t)
- 코킹립 10mm 추가 (벽쪽 수평 립, 방화벽과 ㄴ자 결합)
- 우측 접힘 30-15-15-15 → 15-13-16 (참조도면 반영)
- 수평면 140mm, 벽쪽 앵커링 (코킹립이 방화벽에 맞닿는 구조)
2026-03-11 17:58:41 +09:00
김보곤
4d01d7e238
fix: [fire-shutter] ① 마감재 SUS 평면도 180도 회전 수정
...
- 측면탭(코킹립)을 개구부쪽에서 벽쪽으로 이동 (ㄴ자 립 형태로 방화벽 직선 결합)
- 랩+3단꺾임을 벽쪽에서 개구부쪽으로 이동
- ①랩 치수 라벨 위치 조정
2026-03-11 17:41:23 +09:00
김보곤
a3de440cd2
fix: [approval] ApprovalStep에 SoftDeletes, tenant_id 동기화
...
- API에서 approval_steps 테이블에 tenant_id, deleted_at 추가에 따른 동기화
- ApprovalStep 모델에 SoftDeletes 추가, tenant_id fillable 추가
- ApprovalStep::create() 시 tenant_id 포함 (2곳)
2026-03-11 17:13:10 +09:00
김보곤
658ad1add3
feat: [esign] 근로계약서 사원불러오기 최신 연봉정보 반영
...
- 백엔드: salary_effective_date 추가 반환, 이력 fallback 로직 추가
- 프론트: 연봉계약 시작/종료일을 최신 연봉 적용일 기준으로 계산
- 근로계약은 입사일 기준, 연봉계약은 연봉 적용일 기준으로 분리
2026-03-11 16:59:05 +09:00
김보곤
d729e2c586
feat: [esign] 근로계약서 작성 시 사원 연봉 자동 반영
...
- 사원검색 API에 연봉 금액 포함
- 사원 선택 시 연봉 총금액/월급여 템플릿 변수 자동 채움
2026-03-11 16:46:56 +09:00
김보곤
60e057b8c6
feat: [hr] 연봉이력 삭제 버튼 추가
...
- 이력 테이블에 삭제 컬럼/버튼 추가
- Alpine.js deleteHistory() 메서드 추가 (confirm 확인 후 API 호출)
- reverse 표시 인덱스를 원본 인덱스로 변환하여 API 전달
2026-03-11 16:43:50 +09:00
김보곤
9c75cbbd03
fix: [hr] 연봉 입력 필드 콤마 표시 적용
...
- type=number → type=text(inputmode=numeric) 변경
- 입력 시 실시간 콤마 포맷 적용
- 저장 시 숫자만 추출하여 전송
2026-03-11 16:40:10 +09:00
김보곤
060ee12455
fix: [esign] 근로계약서 연봉계약종료일 자동계산 오류 수정
...
- 패턴 매칭 순서 변경: 구체적 패턴(종료)을 일반적 패턴(계약) 앞에 배치
- 기존: '계약.*연도'가 '연봉계약종료연도' 라벨을 먼저 매칭하여 입사년도 입력
- 수정: '연봉계약.*종료.*년도'가 먼저 매칭되어 정상적으로 1년 후 계산 적용
- 근로계약/계약 종료일 패턴도 추가
2026-03-11 16:37:59 +09:00
김보곤
222e2b2ae3
fix: [drawing] ① 마감재 수평면 방향 반전 — 벽쪽으로 이동
...
- 수평면: 백월→개구부(우측) 에서 립→벽(좌측) 방향으로 반전
- 측면탭: 백월 좌측에서 립 끝(우측)으로 이동
- 랩+3단꺾임: 개구부쪽에서 벽쪽으로 이동, 접힘 방향 반전
- ①랩 라벨, ① 원숫자, 개구부 텍스트 위치 업데이트
2026-03-11 16:33:00 +09:00
김보곤
eab39e0b29
feat: [hr] 사원관리 연봉정보 탭 생성
...
- 사원 상세/수정 페이지에 연봉정보 입력 섹션 추가
- 특수 권한 사용자만 열람/수정 가능한 접근 제어 적용
- 연봉 변경 시 자동 이력 기록
- 일반 API 응답에서 연봉 데이터 노출 방지 (toArray 오버라이드)
2026-03-11 16:27:49 +09:00
김보곤
8a2a569403
fix: [fire-shutter] ① 마감재를 ② 바깥으로 이동 (감싸는 구조)
...
- ① 수평면 시작점: bx → bx-t1 (② 백월 바깥, 방화벽쪽 이동)
- overlap 제거: ①과 ② 사이 겹침 없음 (①이 ② 바깥에 위치)
- 측면탭 위치 조정: ② 백월 좌측을 따라 배치
2026-03-11 16:21:45 +09:00
김보곤
58991e352e
feat: [esign] 근로계약서 사원 불러오기 시 주소, 생년월일, 계약일 자동 반영
...
- 주민등록번호에서 출생년도/월/일 분리 (세기 자동 판별)
- 입사일 기반 계약일, 근로계약시작일, 연봉계약시작일 자동 반영
- 연봉계약종료일은 입사일 + 1년으로 계산
- 사원 주소, 계약자 이름 자동 매핑 추가
2026-03-11 16:18:37 +09:00
김보곤
0fe46e3b1a
fix: [fire-shutter] ④ D형 개구부 방향 좌측으로 변경 (③과 마주보는 형태)
...
- ③ C형: 우측(②쪽) 열림 (기존 유지)
- ④ D형: 좌측(벽쪽) 열림 (기존 우측→좌측 반전)
- 참조 도면 KSS01 기준: ③④ 열린면이 서로 마주봄
2026-03-11 16:11:10 +09:00
김보곤
6aea43a992
fix: [fire-shutter] 가이드레일 원숫자 위치를 참조 도면 기준으로 수정
...
- ① 마감재: 도면 상단→우측 랩/플랜지 영역(상하 2개, 참조 도면 동일)
- ③ C형: 위쪽 치우침→몸체(45mm) 수직 중심
- ④ D형: 아래쪽 치우침→몸체(40mm) 수직 중심
2026-03-11 16:04:14 +09:00
김보곤
cbde2d0efb
fix: [fire-shutter] 가이드레일 부재 번호를 KSS01 참조 도면 기준으로 변경
...
- ①마감재 ②가이드레일 ③C형 ④D형 (기존 ①본체 ③벽C ④벽D ⑤마감재)
- hasTrim 조건 분기 제거 (KSS01에 마감재 있음)
- 모든 치수선 라벨, 범례 텍스트, SVG 주석 번호 통일
2026-03-11 15:53:08 +09:00
김보곤
2d3f915a30
fix: [barobill] 은행거래 동기화 시 중복 키 에러 수정
...
- summary 포함 WHERE와 DB unique index 불일치로 발생하는 duplicate entry 에러
- insert를 insertOrIgnore로 변경하여 중복 시 무시
2026-03-11 15:48:33 +09:00
김보곤
1009850160
fix: [fire-shutter] KSS01 모델에서 마감재(⑤) 조건부 렌더링
...
- KSS01은 마감재(⑤) 없음 → hasTrim 조건으로 분기
- ⑤ SVG, 치수선 라벨, 범례 텍스트 조건부 처리
- 모델 변경 시 가이드레일 재렌더링 추가
2026-03-11 15:32:45 +09:00
김보곤
0be1fe7a87
fix: [journal] 거래처 드롭다운 클릭 시 즉시 닫히는 버그 수정
...
- onFocus에서 열린 경우 onClick 토글을 건너뛰도록 justFocusedRef 플래그 추가
- 다른 요소에서 포커스 이동 후 클릭 시 정상 동작
2026-03-11 15:32:45 +09:00
김보곤
a97396df99
fix: [journal] 전표 적요 수정 시 자금일보에 반영되도록 동기화
...
- 은행거래 출처 전표의 적요 수정 시 BankTransactionOverride에 저장
- 기존 modified_cast 오버라이드 값 보존
2026-03-11 15:27:50 +09:00
김보곤
9093c5607a
fix: [fire-shutter] 가이드레일 평면도 원숫자 크기 3배 확대
2026-03-11 15:27:06 +09:00
김보곤
4f0331729c
fix: [esign] 체크박스 필드를 단순화 - 변수 연결 대신 위치에 체크 표시 렌더링
...
- 체크박스는 변수 연결 불필요, 배치한 위치에 무조건 ☑ 표시
- PDF 오버레이에서 체크박스 필드는 ☑ 아이콘으로 표시
- 커스텀 변수에서 체크박스 타입 옵션 제거 (불필요)
2026-03-11 15:16:28 +09:00
김보곤
f11b1238ef
feat: [esign] 템플릿 체크박스 필드에 변수 연결 기능 추가
...
- 체크박스 필드 속성에서 변수 연결 UI 노출
- 커스텀 변수 생성 시 텍스트/체크박스 타입 선택 지원
- 체크박스 변수는 체크박스 필드에만, 텍스트 변수는 텍스트/날짜 필드에만 표시
2026-03-11 15:03:19 +09:00
김보곤
bb3ffc6085
feat: [esign] 사원 불러오기 기능 추가 및 랜덤 데이터 품질 개선
...
- 근로계약서 시 '사원 불러오기' 버튼으로 직원 검색/선택 기능
- fillRandomVariables 스마트 기본값 생성 (테스트_ 접두사 제거)
- searchEmployees API 엔드포인트 추가
2026-03-11 14:27:32 +09:00
김보곤
b007fdbcb0
feat: [esign] 근로계약서 번개 아이콘 클릭 시 랜덤 테스트 데이터 자동 입력
...
- 직원주소, 직종구분, 업무내용, 업무기간, 출생년도, 급여, 계약자이름 등 매핑
- 라벨 부분 매칭(정규식)으로 유연하게 처리
- 매칭 안 되는 변수는 '테스트_라벨명'으로 기본값 입력
- 기존 영업파트너/고객 계약서 매핑 유지
2026-03-11 14:17:50 +09:00
김보곤
2a19c7108c
fix: [finance] 적요 컬럼 텍스트 잘림 해제
...
- max-w-[220px] + truncate 제거로 긴 적요 전체 표시
- 은행거래 탭의 적요 컬럼도 동일 적용
2026-03-11 14:14:22 +09:00
김보곤
084e0f1ff6
fix: [esign] PDF 한글 폰트 깨짐 수정 — K_PATH_FONTS 의존 제거
...
- K_PATH_FONTS 상수가 TCPDF vendor 경로로 선점되면 pretendard 폰트를 못 찾는 문제
- AddFont()으로 storage/fonts/tcpdf/ 경로를 직접 지정하여 확실하게 로드
- 폴백: resources/fonts/Pretendard-Regular.ttf → helvetica
2026-03-11 14:05:59 +09:00
ee981d27d5
fix: [hr] 급여명세서 한글 폰트 — storage_path 기반으로 변경하여 배포 간 안정성 확보
...
- chroot에 storage_path('fonts') 추가 (symlink→shared 경로 허용)
- 폰트를 resources→storage로 복사 후 storage 경로로 등록 (릴리스 불변)
- 배포마다 .ufm 메트릭 재생성 방지
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 13:47:49 +09:00
김보곤
2af680934f
fix: [fire-shutter] ⑤ 위치를 ①백월 기준으로 복원, 벽쪽 'ㄱ' 측면탭 복원
...
- trimL5를 bx(①백월)로 변경하여 ①이 ⑤ 범위 안에 완전히 포함되도록
- 벽쪽 측면탭(11mm) SVG 복원 → ①백월을 따라 'ㄱ' 형상 표현
- 코킹립(10mm)은 Z방향 절곡으로 평면도에서 생략 유지
2026-03-11 13:41:06 +09:00
8afd78c111
fix: [hr] DomPDF setOptions 제거 — chroot 덮어쓰기로 인한 폰트 등록 실패 수정
...
- setOptions()가 config의 chroot(base_path)를 new Options()로 전체 교체 → vendor 기본값으로 리셋
- resource_path 폰트 경로가 chroot 밖으로 판정되어 registerFont() false 반환
- setOptions 제거 → config/dompdf.php 설정(font_dir, font_cache, chroot) 그대로 사용
- storage 수동 복사도 제거 → DomPDF가 내부적으로 font_dir에 복사 + .ufm 생성
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 13:37:11 +09:00
김보곤
9282c289c1
fix: [finance] 전표 수정 후 리스트에 수정된 적요가 반영되지 않는 문제 수정
...
- 은행/카드거래 행에서 원본 거래 적요 대신 전표 적요를 우선 표시
- 분개가 존재하면 journal_entries.description을 사용
2026-03-11 13:23:57 +09:00
5a6cd34a63
fix: [hr] DomPDF 인스턴스 불일치 해결 — 급여명세서 한글 폰트 깨짐 수정
...
- 기존: app()으로 별도 DomPDF 인스턴스에 폰트 등록 → Pdf::loadView()의 인스턴스에는 미적용
- 수정: $pdf->getDomPDF()로 동일 인스턴스에 폰트 등록 후 output() 호출
- Pretendard 폰트 사용, resources/fonts/에서 storage/fonts/로 복사 후 등록
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 13:19:05 +09:00
김보곤
a41597ca3c
fix: [finance] 거래처 필드 Tab키 자동 검색 열기
...
- TradingPartnerSelect에 onFocus 핸들러 추가
- Tab으로 포커스 시 드롭다운이 자동 열려 바로 검색 가능
- 선택 후 재포커스 시 중복 열림 방지 (skipAutoOpenRef)
2026-03-11 13:07:53 +09:00
김보곤
ea4e16bbd0
feat: [esign] 계약 수정 화면에 서명 필드 값 편집 기능 추가
...
- 수정 화면에서 text/date/checkbox 필드 값 인라인 편집
- 필드별 서명자 구분(작성자/상대방), 페이지 번호 표시
- update API에서 필드 값 일괄 업데이트 처리
2026-03-11 13:05:36 +09:00
김보곤
edc69040ab
feat: [esign] 전자계약 수정 기능 추가
...
- draft 상태 계약의 제목, 설명, 서명자 정보, 파일 수정 가능
- 계약 상세 페이지에 '계약 정보 수정' 버튼 추가
- create.blade.php를 생성/수정 겸용으로 확장
2026-03-11 11:55:46 +09:00
김보곤
d7428e1785
fix: [payroll] PDF 한글 폰트 NanumGothic → Pretendard 전환
...
- 운영서버 NanumGothic 메트릭 생성 실패 문제 해결
- Pretendard Regular/Bold TTF를 resources/fonts/에 번들링
- ensureKoreanFont()에서 Pretendard 등록으로 변경
- payslip.blade.php font-family를 Pretendard로 변경
- PDF 크기: 18KB (서브셋팅 적용)
2026-03-11 11:49:20 +09:00
김보곤
8b8c544628
feat: [esign] 계약 제목에 '근로계약서' 옵션 추가
2026-03-11 11:46:11 +09:00
김보곤
44e9700358
fix: [fire-shutter] ⑤마감재 방화벽 밀착 및 코킹립/탭 평면도 제거
...
- trimL5를 wallRight(방화벽 면)로 변경하여 ⑤가 벽에 맞닿도록 수정
- Z방향 절곡인 코킹립(10mm)·측면탭(11mm) SVG 요소 제거 (평면도에서 불가시)
2026-03-11 11:26:50 +09:00
김보곤
79366f878b
fix: [fire-shutter] ③ 브라켓 몸체를 방화벽에 직접 맞닿도록 벽-③ 간 갭(10px) 제거
2026-03-11 11:20:12 +09:00
김보곤
c0721d549a
fix: [payslip] PDF 생성 시 font_dir 명시적 지정 (config 캐시 무관)
...
- setOptions()로 font_dir, font_cache, enable_font_subsetting 직접 전달
- ensureKoreanFont()에서도 DomPDF 옵션을 명시적으로 설정
- 캐시 유효성 검증 강화: TTF + .ufm 메트릭 파일 모두 확인
- config 캐시 상태와 무관하게 storage/fonts/ 사용 보장
2026-03-11 11:18:06 +09:00
김보곤
d919ad378b
fix: [payslip] ensureKoreanFont 캐시 유효성 검증 추가
...
- installed-fonts.json에 키만 있고 실제 폰트 파일이 없으면 재등록
- 배포 후 수동 캐시 초기화 불필요
2026-03-11 11:09:55 +09:00
김보곤
e17314ad0f
fix: [payslip] 폰트를 프로젝트에 포함하여 서버 의존성 제거
...
- resources/fonts/에 NanumGothic TTF 포함 (Git으로 배포)
- ensureKoreanFont()가 시스템 경로 대신 resource_path() 사용
- fonts-nanum 패키지 미설치 서버에서도 한글 PDF 정상 생성
2026-03-11 11:00:45 +09:00
김보곤
07ce9b6db9
fix: [pdf] DomPDF 폰트 서브셋팅 활성화로 PDF 용량 경량화
...
- enable_font_subsetting: true (폰트 전체 임베딩 → 사용 글자만 포함)
- enable_javascript: false (PDF 내 JS 불필요)
- 기존 5MB → 수백KB 수준으로 축소 예상
2026-03-11 10:39:59 +09:00
김보곤
9f3f016f1f
fix: [fire-shutter] ① 본체 개구부측 'ㄱ' 형태 수정 — 립(10mm)이 바깥Y에서 먼저 우측 연장 후 플랜지(26mm) 아래로 절곡
2026-03-11 10:35:26 +09:00
김보곤
ad0055f071
fix: [payslip] PDF 급여명세서 font-weight 800 → bold 수정
...
- DomPDF에 NanumGothic bold(700)까지만 등록되어 weight 800 한글이 깨짐
- h1, .net-row의 font-weight: 800 → bold로 변경
2026-03-11 10:35:11 +09:00
김보곤
8ed717f554
fix: [fire-shutter] ① 본체 개구부측 절곡을 'ㄱ' 형태로 수정 (플랜지→립 순서)
2026-03-11 10:23:10 +09:00
김보곤
b88f8edfe2
fix: [fire-shutter] ⑤ 마감재 수평면 시작위치를 ① 백월(bx)로 수정하여 ①이 ⑤ 안쪽에 위치하도록 변경
2026-03-11 10:15:27 +09:00
김보곤
afa6428097
fix: [hometax] 분개 기본 계정과목 코드 수정
...
- 매입: 135(미존재)→117(부가세대급금), 251(장기차입금)→201(외상매입금)
- 매출: 255(장기미지급금)→208(부가세예수금)
- 매입 501 account_name '상품매입'→'상품매출원가' (DB 일치)
- DB: 비표준 5자리/1-2자리 중복 코드 2386개 비활성화 (163개→163개 유지)
- DB: 기존 분개 코드 135→117 4건 수정
2026-03-11 10:07:54 +09:00
김보곤
06dae8d9cc
fix: [fire-shutter] ① 본체 EGI 립/플랜지 절곡 방향 수정 (KSS01)
2026-03-11 10:01:51 +09:00
김보곤
ca36e8e54d
fix: [daily-fund] 일일자금일보 바로빌 데이터 자동 동기화 추가
...
- periodReport에서 데이터 조회 전 바로빌 API 자동 동기화 트리거
- BarobillBankSyncService 서비스 클래스 생성 (EaccountController 로직 분리)
- 현재 월 캐시 10분 만료, 과거 월 영구 캐시 정책 동일 적용
- 동기화 실패 시 기존 DB 캐시로 폴백 (서비스 중단 방지)
2026-03-11 09:55:50 +09:00
김보곤
be1c984de0
fix: [hr] 급여명세서 PDF 한글 폰트 깨짐 수정
...
- NanumGothic 폰트 자동 등록 로직 추가 (ensureKoreanFont)
- storage/fonts/에 폰트 복사 후 DomPDF에 등록 (최초 1회)
- payslip.blade.php font-family를 NanumGothic으로 변경
- 서버 배포 시 수동 폰트 등록 불필요
2026-03-11 09:49:55 +09:00
김보곤
f90b317e63
fix: [hr] 급여명세서 PDF 구글 폰트 외부 로드 제거
...
- payslip.blade.php: @import 구글 폰트 URL 삭제, 시스템 기본 폰트 사용
- PayrollService.php: isRemoteEnabled 옵션 제거
- 운영서버 배포 시 폰트 캐시 권한 오류 근본 해결
2026-03-11 09:41:28 +09:00
김보곤
067621dddc
fix: [rd] 클코→슬랙 변환기 2패널로 단순화
...
- 슬랙 전송용 텍스트 패널 제거
- 미리보기 리치텍스트 복사로 변경 (서식 보존)
- Selection API로 복사하여 슬랙 붙여넣기 시 형태 유지
2026-03-11 09:31:29 +09:00
김보곤
64b0325d75
feat: [rd] 클코 → 슬랙 변환기 추가
...
- Claude Code CLI 출력을 슬랙 mrkdwn 형식으로 자동 변환
- 마크다운 → 슬랙 문법 변환 (볼드, 코드블록, 링크 등)
- 슬랙 스타일 실시간 미리보기
- 클립보드 복사/붙여넣기 지원
2026-03-11 09:20:22 +09:00
김보곤
e65e2f3dc8
feat: [payroll] 슈퍼관리자 급여 수정/지급취소 권한 추가
...
- 지급완료/확정 상태에서도 슈퍼관리자는 급여 수정 가능
- 지급취소(unpay) 기능 추가: paid → draft 상태 되돌리기
- 테이블에 슈퍼관리자 전용 수정/지급취소 버튼 표시
2026-03-11 06:52:03 +09:00
b677da4bce
sync: main 배포 동기화 2026-03-11
2026-03-11 02:13:24 +09:00
a55ec09cd9
fix: [admin] 테이블 컬럼 정렬 및 뱃지 버튼 UI 통일
...
- departments, roles, tenants, fcm/tokens 테이블 정렬 통일
- th 가운데 정렬, td 텍스트 컬럼 좌측, 단일값 컬럼 가운데
- fcm 토큰 행 뱃지 스타일 버튼 적용
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 01:18:05 +09:00
9af64d7368
feat: [users] SAM접속 기능 개선 - 도메인 매핑 및 텍스트 변경
...
- LoginToken: APP_ENV 기반 도메인 매핑 (local→dev.*, production→stage.sam.it.kr)
- DEV접속 → SAM접속 텍스트 변경
- 사용자 테이블: 이메일 컬럼 제거, 이름 아래 이메일 표시, 뱃지 버튼 UI
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 01:18:05 +09:00
d292c8eefc
fix: [pm] 프로젝트 관리 HTMX 부분 로드 시 HX-Redirect 적용
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 01:18:05 +09:00
d7c4283b66
feat: [admin] 일괄 작업 및 작업 버튼 뱃지 UI 적용
...
- 사용자/부서/역할 페이지에 체크박스 선택 + 일괄 삭제/복원/영구삭제
- 사용자 테이블: 이메일을 이름 아래로 이동, 이메일 컬럼 제거
- 사용자/부서/테넌트 작업 버튼 뱃지 스타일로 변경
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 01:18:05 +09:00
5f5eb12094
fix: [users] 영구삭제 시 DB 커넥션 오류 수정
...
- sales_partners, sales_manager_documents 테이블 codebridge 커넥션으로 변경
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 01:18:05 +09:00
afa8cd8293
feat: [menus] 메뉴 트리 상태 유지 및 활성 상태 연쇄 토글
...
- localStorage로 접힌 메뉴 상태 저장, HTMX 리로드 후 복원
- 상위 메뉴 활성/비활성 시 하위 메뉴 연쇄 적용 (백엔드+프론트)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 01:18:05 +09:00
김보곤
6d2720edf3
fix: [payroll] 전표 공제항목 동일 항목 병합 처리
...
- 기타공제 이름 정규화 (trim, 공백 통일)
- 동일 description + trading_partner 공제항목 합산 병합
- 중복 라인 제거하여 깔끔한 전표 생성
2026-03-10 16:34:19 +09:00
김보곤
020677c321
fix: [journal] CurrencyInput 컴포넌트 음수 입력 개선
...
- 포커스 시 쉼표 제거하여 순수 숫자 편집 모드
- 타이핑 중 포맷팅 제거하여 커서 점프 방지
- 블러 시에만 천단위 쉼표 포맷 적용
- minus + 숫자만 허용하는 단순 필터링
2026-03-10 16:28:01 +09:00
김보곤
44d6daf3cd
fix: [journal] 전표 금액 입력에서 음수(-) 입력 지원
...
- CurrencyInput 컴포넌트 도입하여 로컬 상태로 중간 입력('-') 보존
- 3개 모달(수동전표, 카드분개, 계좌분개) 6개 금액 입력 필드 모두 교체
- onBlur 시 포맷팅, onChange 시 즉시 파싱으로 실시간 합계 반영
2026-03-10 12:50:00 +09:00
김보곤
3f3b843f36
fix: [payroll] 전표 기타공제 항목별 분리 및 음수 금액 처리
...
- 기타공제를 합산 단일 라인에서 항목별(연말정산소득세, 연말정산지방소득세 등) 분리
- formatInputCurrency/parseInputCurrency 음수 부호 처리 추가
- JournalEntryController validation에서 min:0 제거하여 음수 credit_amount 허용
2026-03-10 12:44:09 +09:00
김보곤
17d86958ea
fix: [payroll] 음수 공제항목 전표 처리 방식 수정
...
- 음수 공제(환급)를 차변 별도 라인 대신 대변 마이너스로 처리
- 차변은 총지급액(gross_salary) 단일 라인 고정
- 대변합계 = 양수공제 + 음수공제(마이너스 대변) + 실수령액 = 차변
2026-03-10 12:26:34 +09:00
김보곤
c24d5cc672
fix: [payroll] 전표 생성 음수 공제(환급) 처리 및 역산 제거
...
- 음수 공제항목을 차변 207 예수금으로 처리 (환급 = 예수금 감소)
- 역산 방식 제거, DB의 실제 net_salary 사용
- 공제항목 루프 처리로 코드 간결화
2026-03-10 11:42:38 +09:00
김보곤
129b383ed5
fix: [journal] 급여 전표 수정 허용 및 source_type 라벨 개선
...
- payroll source_type 전표 수정 허용 (기존: manual, bank_transaction만)
- source_type별 정확한 라벨 매핑 (카드사용내역, 홈택스 매출/매입)
- 프론트/백엔드 양쪽 수정
2026-03-10 11:37:45 +09:00
김보곤
764ae09615
fix: [payroll] 전표 미지급비용을 역산으로 차대 균형 보장
...
- net_salary를 DB 값 대신 (총지급액 - 공제 합계)로 역산
- DB 데이터 불일치 시에도 전표 차대 균형 보장
2026-03-10 11:33:02 +09:00
김보곤
c53b3d8bc3
fix: [payroll] 전표 생성 시 기타공제 누락 수정 및 에러 모달 추가
...
- 기타공제(deductions JSON) 항목을 대변 207 예수금에 반영
- 차대 불균형 시 상세 분개 내역을 에러 모달로 표시
- toast 대신 복사 가능한 모달로 에러 메시지 표시
2026-03-10 11:30:27 +09:00
3ed5f53b93
fix: [documents] 제품검사 요청서 MNG 상세 페이지 렌더링 오류 수정
...
- basicFields: raw field_key(manager, site_name 등) fallback 추가
- 폼형 섹션(건축공사장/시공자/감리자 정보): 키-값 형태로 렌더링
- 독립 테이블 데이터(검사대상 목록): 별도 테이블로 렌더링
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 11:05:02 +09:00
9ead940acd
fix: [deploy] dompdf 폰트 캐시 shared 심링크 설정
...
- storage/fonts를 shared/storage/fonts로 심링크하여 배포 간 폰트 캐시 유지
- rsync exclude에 storage/fonts 추가
- www-data 쓰기 권한 문제 해결 (급여명세서 PDF 생성 오류)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 11:05:02 +09:00
김보곤
550fba5cb2
fix: [payroll] 급여명세서 이메일 발송 시 개인 이메일 우선 참조
...
- 개인 이메일이 있으면 개인 이메일로 발송
- 개인 이메일이 없으면 업무용 이메일로 폴백
- 목록의 이메일 모달에서도 동일 로직 적용
2026-03-10 10:57:46 +09:00
김보곤
1dc3ae8df4
feat: [employee] 사원 상세페이지에 개인 이메일 항목 추가
...
- 이메일 → 업무용 이메일로 라벨 변경
- 개인 이메일 항목 추가
2026-03-10 10:38:07 +09:00
김보곤
50275b0500
feat: [employee] 사원관리 개인 이메일 필드 추가
...
- 사원 수정 폼에 개인 이메일 입력 필드 추가
- 레이아웃 2x2 배열로 변경 (업무용 이메일|개인 이메일 / 주민등록번호|연락처)
- Employee 모델에 personalEmail accessor 추가
- 컨트롤러 validation, 서비스 jsonExtraKeys에 personal_email 반영
2026-03-10 10:04:24 +09:00
김보곤
26d081d04e
fix: [journal] 전표 거래처 검색 limit(50) 제거 — 전체 활성 거래처 로드
2026-03-10 09:53:48 +09:00
김보곤
16b9b6cce2
fix: [payroll] 이메일 발송 버튼을 확정 상태에서만 표시
2026-03-10 09:42:58 +09:00
김보곤
8df2cf0a4d
fix: [payroll] PDF 급여명세서 레이아웃 수정
...
- 사원정보 테이블 colgroup으로 너비 고정 (오버플로우 해결)
- footer를 table 기반으로 변경 (dompdf float 미지원)
- 회사명 문자 인코딩 수정
2026-03-10 09:24:00 +09:00
김보곤
13ee95270e
feat: [payroll] 급여명세서 이메일을 PDF 첨부파일로 변경
...
- 이메일 본문에 급여 내역 직접 노출 → PDF 첨부파일로 전환 (보안 강화)
- barryvdh/laravel-dompdf 패키지 추가
- 이메일 본문은 간단한 안내 메시지로 변경
- dompdf에서 한글 렌더링을 위해 Noto Sans KR 폰트 적용
2026-03-10 09:11:46 +09:00
김보곤
7c6e165d38
fix: [fire-shutter] ⑤마감재 좌측 벽측 리턴 추가 + 우측 A각 깊이 보정
2026-03-10 08:59:41 +09:00
김보곤
b670ca444c
fix: [rd] trimX1 미정의 오류 수정 — trimL/trimR로 변경
2026-03-10 08:50:53 +09:00
김보곤
9fbb078a96
fix: [rd] ⑤마감재를 외곽 프레임 형태로 단순화 — 벽측 세부/우측 겹침 해소
2026-03-10 08:49:38 +09:00
김보곤
965d90e11b
fix: [rd] ③④ 벽연형 브라켓 배치 수정 + ⑤ 우측 A각 리턴 추가
...
- ③ C개구부가 본체(우측) 방향으로 변경, 몸체가 벽쪽
- ④ ③ 내부에 완전히 포함되도록 위치 수정
- ④ 립을 안쪽/중앙 방향 절곡으로 변경
- ⑤ A각 30mm 리턴(본체 안쪽 방향) 추가
2026-03-10 08:46:46 +09:00
김보곤
dad2601f47
fix: [rd] ⑤마감재 평면도에서 A각 이후 절곡(30-15-15-15) 제거 — 위에서 안 보이는 부분
2026-03-10 08:33:15 +09:00
김보곤
e2869d9af3
fix: [rd] 스크린 가이드레일 ⑤마감재를 polyline stroke로 변경 (겹침 해소)
2026-03-10 08:28:43 +09:00
김보곤
bf7fb13ba7
feat: [rd] 스크린 가이드레일 평면도 5부재 조립구조로 전면 재작성
...
- ② 본체 flange 30→26mm 수정 (실제 절곡치수 반영)
- ③ 벽연형-C (30-45-30) 개별 부재로 분리 표현
- ④ 벽연형-D (11-23-40-23-11) 신규 추가
- ⑤ 마감재 SUS 1.2T (10-11-110-30-15-15-15) 신규 추가
- 각 부재별 색상 구분 및 번호 라벨 표시
2026-03-10 08:18:55 +09:00
김보곤
318d985dbc
fix: [rd] 가이드레일 높이 오픈H+150 → 오픈H+100으로 변경
2026-03-10 07:32:55 +09:00
김보곤
40c47362d5
fix: [rd] 스크린 가이드레일 립 절곡방향 수정 (안쪽→개구부 방향)
...
- 2D 평면도: 사이드월 길이 분리(swLen=bodyD-lp), 립이 개구부 방향으로 절곡
- 3D 렌더링: bodyShape/hole의 립 Y좌표 반전(-lp, 벽쪽→개구부쪽)
- 치수선, 씰, 슬랫, 클립 위치 업데이트
2026-03-10 01:40:54 +09:00
김보곤
e6c82e4847
fix: [rd] 방화셔터 가이드레일 높이 계산 수정 (오픈H + 150mm)
...
- 기존: 표준 재고길이(3305mm) 선택 방식 → 오픈H + 305mm 표시
- 수정: 오픈H + 150mm 계산 (실제 가이드레일 높이)
- 3D 렌더링 레일 높이도 +100 → +150 수정
2026-03-10 01:28:07 +09:00
김보곤
d948366c2a
feat: [payroll] 이메일 발송 후 '발송' 라벨 표시 기능
...
- payrolls 테이블 options JSON에 email_sent_at/email_sent_to 저장
- 이메일 아이콘 아래 '발송' 텍스트 표시 (서버 렌더링 + JS 즉시 반영)
- Payroll 모델에 options 컬럼 추가
2026-03-10 01:20:25 +09:00
김보곤
c3a868a89b
fix: [payroll] 급여명세서 이메일 버튼 Blade 파싱 오류 수정
...
- @json() 내부 (int) 캐스팅이 Blade 파서 괄호 매칭 혼란 유발
- @php 블록에서 데이터를 미리 준비하고 @json($var)로 전달
2026-03-10 01:11:56 +09:00
김보곤
ca0473d541
feat: [payroll] 급여명세서 이메일 발송 기능 추가
...
- PayslipMail Mailable 클래스 생성 (admin@codebridge-x.com 발송)
- 급여명세서 이메일 템플릿 (전통 한국식 양식)
- 이메일 발송 API 엔드포인트 추가 (POST /payrolls/{id}/send-payslip)
- 목록 테이블에 이메일 발송 아이콘 버튼 추가
- 급여명세서 미리보기 모달 + 인쇄 기능
2026-03-10 01:06:21 +09:00
김보곤
fd5aca24ab
fix: [leave-promotions] 단일 상태열 제거, 1차/2차 통지열에 결재상태 뱃지 통합
2026-03-10 00:50:56 +09:00
김보곤
55019fdf1e
feat: [leave-promotions] 통지서 미리보기 모달 기능 추가
...
- 1차/2차 통지 눈 아이콘 클릭 시 통지서 문서 모달 팝업
- 결재 상태 뱃지, 발송일시, 인쇄, 결재문서 링크 포함
2026-03-10 00:44:32 +09:00
김보곤
60669ffdd5
feat: [hr] 연차촉진 관리에 1차/2차 촉진기간 컬럼 추가
...
- 근로기준법 제61조 기준 입사일 기반 촉진기간 자동 계산
- 1차 촉진기간: 연차만료 6개월 전 ~ +10일
- 2차 촉진기간 마감: 연차만료 2개월 전
- 잔여일수 다음에 촉진기간 표시
2026-03-10 00:37:10 +09:00
김보곤
e58a12faaa
feat: [approval] 결재서명란에 참조자 표시 추가
...
- 결재 테이블 하단에 참조자 녹색 칩 표시
- reference step_type 필터링하여 존재 시에만 표시
2026-03-10 00:16:08 +09:00
김보곤
512f01bea6
feat: [hr] 휴가관리 참조자 선택 기능 추가
...
- 휴가 신청 모달에 참조자 검색/선택 UI 추가 (Alpine.js)
- 부서별 사용자 목록에서 참조자 검색 및 녹색 칩 표시
- LeaveController 참조 배열 유효성 검증 추가
- LeaveService에서 결재선 steps에 참조자 자동 병합
2026-03-10 00:09:09 +09:00
김보곤
fff45cf707
fix: [hr] 급여관리 접근 권한 사용자 변경 (이경호 → 이의찬)
2026-03-10 00:00:01 +09:00
김보곤
051707c1be
fix: [database] codebridge 모델 cross-DB 관계 오류 수정
...
- samdb 공유 모델에 $connection = 'mysql' 명시적 선언
- codebridge 모델에서 eager-load 시 connection 상속 방지
- 영향 모델: User, Tenant, Department, Process, File(2), Approval, AiQuotationModule, InterviewProject
2026-03-09 23:35:13 +09:00
김보곤
c84c8894be
feat: [database] Equipment 하위 4개 모델 codebridge connection 추가
...
- EquipmentInspection, EquipmentInspectionDetail, EquipmentInspectionTemplate, EquipmentRepair
- equipments 테이블과 FK 참조 관계 → 동일 DB(codebridge)에서 관리
2026-03-09 20:57:49 +09:00
김보곤
b831979153
feat: [database] codebridge DB 분리 재적용 - 55개 MNG 전용 모델만 설정
...
- API 사용 테이블 22개(23개 모델) 제외하고 55개 모델만 $connection = 'codebridge' 적용
- config/database.php에 codebridge connection 재추가
- 제외 대상: Barobill 12개, ESign 4개, Audit 2개, DevTools 1개, System 2개, HR 1개
2026-03-09 20:02:04 +09:00
김보곤
a029339178
fix: [fire-shutter] 스크린 평면도 슬롯 개방 및 차단재 슬랫 접촉 형태
...
- C채널 본체를 단일 path→개별 부재(rect)로 분리하여 슬롯 열림 표현
- 립 팁 사이 수직선 제거 → 슬랫 진입구가 열린 상태
- 연기차단재를 슬랫 양면 접촉 형태로 변경 (차연 기능)
2026-03-09 18:58:49 +09:00
김보곤
acd24ca154
fix: [fire-shutter] 연기차단재 1개로 변경 및 슬롯 위치 배치
...
- 연기차단재: 2개→1개, 사이드월→슬롯 개구부(립 팁 사이) 위치로 이동
- 클립: 사각형→L형 브라켓으로 변경, 사이드월 내면에 부착
- 슬랫 라인을 채널 전체 관통으로 수정
2026-03-09 18:52:48 +09:00
김보곤
d58cf44a64
fix: [fire-shutter] 스크린 가이드레일 flange 30mm 수정 (슬롯 10mm)
...
- flange:8→30 (양쪽 30mm씩 → 슬롯 개구부 10mm)
- lip=10mm는 슬랫이 통과하는 홈 폭 (width-2*flange=10mm)
- 평면도 클립을 채널 내부 사이드월 면으로 재배치
- 3D 클립을 사이드월 내면 L형 브라켓으로 수정
- 슬롯 갭 치수 표시 추가
2026-03-09 18:06:02 +09:00
김보곤
e5886f77e5
fix: [fire-shutter] 스크린 가이드레일 폭/깊이 개념 수정 및 평면도 재작성
...
- width:120→70 (개구부/폭), depth:70→120 (깊이/벽방향) 스왑
- flange:26→8 (실제 스크린 플랜지 치수)
- 평면도 SVG 완전 재작성: 가로=깊이(120), 세로=폭(70), 벽좌측/개구부우측
- 셔터박스 Z위치 railZSpan 도입 (스크린:width, 철재:depth)
2026-03-09 17:58:47 +09:00
김보곤
d1722b144b
fix: [fire-shutter] 스크린형 가이드레일 평면도 전면 재설계
...
- 스크린 전용 단면도 추가 (플랜지+립+사이드월+백월 구조)
- 방화벽 위치를 레일 하단(벽쪽)으로 이동
- 슬랫 위치를 LIP 안쪽 채널 내부로 수정
- 개구부 방향 표시, 클립/연기차단재 위치 반영
- 치수: 폭/깊이/플랜지/립/사이드월 주석 추가
2026-03-09 17:27:50 +09:00
김보곤
d5fcc22eca
fix: [fire-shutter] 스크린 가이드레일 LIP 방향 수정 - 좌우 레일 개구부가 서로 마주보도록 Y축 회전 적용
2026-03-09 17:13:48 +09:00
김보곤
8e4c91af61
fix: [rd] 스크린 가이드레일 폭/깊이 교정 + 셔터박스 Z계산 depth 기준으로 통일
...
- 스크린 gr: width 70→120(면폭), depth 120→70(Z방향 깊이) 교정
- 셔터박스 railHalf, 개구부: gr.width → gr.depth (Z방향 치수)
- S 초기값, HTML input 기본값 동기화
2026-03-09 16:58:05 +09:00
김보곤
c5c10e8942
fix: [rd] 초기 유형을 스크린형(KSS01-실리카)으로 변경
...
- productType: screen, 모델: KSS01 기본 선택
- S 초기값, HTML input value 모두 스크린형 스펙으로 동기화
2026-03-09 16:50:09 +09:00
김보곤
bd85653699
feat: [rd] 벽 토글 OFF 시 벽체 설정 패널 자동 숨김
2026-03-09 16:39:00 +09:00
김보곤
5e59c66fa6
fix: [rd] 벽체 토글 초기값 OFF로 변경
2026-03-09 16:37:37 +09:00
김보곤
42bb5c43ed
fix: [rd] 셔터박스 밑면 개구부를 레일 너비만큼만 개방
...
- 전면 립: 50mm (전면판~레일 전면)
- 개구부: 레일 너비(스크린:70, 철재:120)만큼만 뚫림
- 후면 밑판: 나머지 전체 밀폐
2026-03-09 16:35:59 +09:00
김보곤
aec029b62d
feat: [rd] 방화셔터 도면생성 Ctrl+Z 실행취소(Undo) 기능 추가
...
- 상태 변경 시 자동 스냅샷 저장 (최대 50단계)
- Ctrl+Z로 이전 상태 복원 (입력값 + 3D 렌더링)
- 슬라이더 연속 입력 100ms 디바운스 적용
2026-03-09 16:33:11 +09:00
김보곤
59b24b2762
fix: [rd] 샤프트 Z 위치 자동 보정 — 브라켓/스프로켓이 셔터박스 전면판 내부 수용
...
- 스프로켓/브라켓 최대 돌출이 박스 전면판을 초과하면 자동으로 샤프트를 후퇴
- 철재: -65 → -110 (스프로켓 R215 수용), 스크린: -45 유지 (보정 불필요)
2026-03-09 16:27:20 +09:00
김보곤
600e459d27
fix: [rd] 셔터박스 Z 배치에 가이드레일 너비 반영
...
- frontOffset = 레일 반폭 + 50mm 전면 립 (스크린:85, 철재:110)
- 하단 개구부를 레일 위치에 정렬 (개구부 = 레일 너비)
2026-03-09 16:24:03 +09:00
김보곤
ffb61ddc07
fix: [rd] 샤프트/브라켓 원래 위치 복원, 셔터박스만 전면 50mm 돌출 배치
2026-03-09 16:13:46 +09:00
김보곤
d12afce58a
fix: [rd] 셔터박스 50mm 전면 돌출 + 브라켓/스프로켓 박스 내부 수용
...
- 박스 전면판: Z=+50mm (레일에서 50mm 돌출)
- 샤프트 Z: 스프로켓·브라켓 최대 돌출량 기준으로 박스 안에 배치
- 브라켓 구조/치수 변경 없음, assembly Z 위치만 조정
2026-03-09 16:05:37 +09:00
김보곤
72ddd0f887
fix: [rd] 셔터박스 Z 위치 수정 — 브라켓 위치 유지, 박스를 전면으로 이동
...
- shaftCenterZ: 기존 공식 복원 (-(shaftDia/2 + 5))
- boxCenterZ: 전면판이 슬랫 라인에서 50mm 돌출되도록 배치
2026-03-09 16:00:36 +09:00
김보곤
7bce8b63ba
fix: [rd] 셔터박스 내 브라켓/스프로켓 수용을 위한 샤프트 Z 위치 역산 로직 적용
...
- 샤프트 Z 위치를 브라켓·스프로켓 최대 전면 돌출량 기준으로 역산
- 철재: -175mm, 스크린: -52.5mm로 박스 전면판 내부에 모든 부품 수용
2026-03-09 15:56:35 +09:00
김보곤
9c4462a9bb
fix: [rd] 셔터박스 Z 배치를 편심 구조로 수정
...
- 전면 50mm 돌출, 나머지 깊이는 후면(벽쪽) 배치
- 박스/샤프트/모터 Z 위치 분리 (독립 계산)
- 밑면 슬랫 개구부를 전면 가까이로 이동
- 도면(500×380 단면도) 기준 배치
2026-03-09 15:43:02 +09:00
김보곤
1d2a86a56e
fix: [rd] 철재 모터브라켓 mtH/mtD 축 교정 (530→깊이Z, 320→높이Y)
2026-03-09 15:33:04 +09:00
김보곤
82ae910603
feat: [rd] 브라켓/스프로켓 치수를 제품 유형별로 분리
...
- 철재: 브라켓 530×320×18, 스프로켓 ø430, 모터오프셋 160mm
- 스크린: 브라켓 180×180×18, 스프로켓 ø140, 모터오프셋 자동계산
- PRODUCTS.bk 설정으로 일원화
2026-03-09 15:30:27 +09:00
김보곤
7ec80cd9d8
fix: [rd] '강판형' → '철재슬라트' 명칭 변경
2026-03-09 14:48:36 +09:00
김보곤
4969d3e60e
feat: [rd] 스크린형 가이드레일 실제 도면 치수 기반 3D 구조 구현
...
- 본체②: 10-26-80-67-80-26-10 C채널 (EGI 1.55T)
- 벽연형③: 30-45-30 C브라켓 (벽체 고정)
- 벽연형④: 11-23-40-23-11 보강 브라켓
- 벽도마감⑤: SUS 1.2T L자 트림 × 2
- 마감재①: 슬랫 가이드 클립 × 2
- 전체 단면: 70mm(폭) × 120mm(깊이)
2026-03-09 13:34:35 +09:00
김보곤
8a2c078126
fix: [rd] 비모터측 브라켓을 motor 그룹에 포함하여 브라켓 한쌍 토글 동작
2026-03-09 13:17:29 +09:00
김보곤
2956c25642
fix: [fire-shutter] 단품 보기 시 카메라 이동 제거 (현재 뷰 유지)
2026-03-09 13:12:13 +09:00
김보곤
7da45b2bdb
fix: [fire-shutter] 덮개 양쪽 10mm 축소 (실제 용접 결합 형태)
2026-03-09 13:10:09 +09:00
김보곤
4c1439674d
fix: [fire-shutter] 덮개를 절곡 선반 위로 올려 용접 결합 표현
2026-03-09 13:07:45 +09:00
김보곤
91df0d122a
fix: [fire-shutter] 셔터박스 전/후면판 ㄱ자 절곡 + 커버 평판 구조로 수정
2026-03-09 13:03:26 +09:00
김보곤
b6fe894a3d
feat: [fire-shutter] 셔터박스 덮개(cover) 분리 - 본체+덮개 조립 구조
2026-03-09 13:00:41 +09:00
김보곤
3dbb9b7bf8
fix: [fire-shutter] 셔터박스 전면 하부판 추가 (빈 공간 밀폐)
2026-03-09 12:55:46 +09:00
김보곤
ac56b93e4e
fix: [fire-shutter] 셔터박스 밑면 결합체 - 슬랫 통과 슬롯 75mm만 개방
2026-03-09 12:48:45 +09:00
김보곤
e1d6ee0f2a
feat: [fire-shutter] 셔터박스 밑면 결합체 추가 (하단 개구부 표현)
2026-03-09 12:45:55 +09:00
김보곤
16aaf2f6a1
fix: [fire-shutter] 가이드레일 높이를 셔터박스 밑면+100mm로 조정
2026-03-09 12:42:11 +09:00
김보곤
23b95651fa
fix: [fire-shutter] 가이드레일이 셔터박스 안으로 관통하도록 높이 조정
2026-03-09 12:41:24 +09:00
김보곤
a3aebe2a5c
fix: [fire-shutter] const p 중복 선언 제거
2026-03-09 11:40:33 +09:00
김보곤
67c774960c
feat: [fire-shutter] 셔터박스 조립식 철판 구조, 라벨 오픈폭/오픈H 변경
2026-03-09 11:38:53 +09:00
김보곤
1cdeb24f50
fix: [fire-shutter] 벽체 기본값 변경 (날개벽 600, 두께 600)
2026-03-09 11:33:12 +09:00
김보곤
5efcb62b48
fix: [fire-shutter] hw 변수명 충돌 해결 (whw로 변경)
2026-03-09 11:30:15 +09:00
김보곤
1ff98a0f5a
fix: [fire-shutter] 벽체 기둥+인방 U자 일체형으로 이음새 제거
2026-03-09 11:29:04 +09:00
김보곤
2c437d33e7
fix: [fire-shutter] 벽체 기둥-인방 겹침(z-fighting) 해결
2026-03-09 11:14:49 +09:00
김보곤
feb240556f
feat: [fire-shutter] 상단 설정 변경 시 3D 렌더링 동적 갱신
2026-03-09 11:09:35 +09:00
김보곤
923c0ed413
refactor: [fire-shutter] 설정 영역을 전체 폭 상단바로 이동
2026-03-09 11:05:52 +09:00
김보곤
d3c22dc71f
fix: [fire-shutter] 상세설정 토글 버튼 $ 참조 오류 수정
2026-03-09 10:59:12 +09:00
김보곤
888e810d31
fix: [finance] 거래처 등록 필수값 개선 (거래처명+사업자번호만 필수)
...
- 백엔드: bizNo 필수 검증 추가, trade_type/status null-safe 처리
- 프론트엔드: 사업자번호 필수 검증 + 라벨에 * 표시 추가
- 나머지 필드 비어있어도 저장 가능하도록 NOT NULL 컬럼 기본값 보장
2026-03-09 10:54:07 +09:00
김보곤
f855da6c71
fix: [finance] 거래처 등록/수정 시 NOT NULL 컬럼 기본값 누락 수정
...
- type, category 컬럼이 NOT NULL인데 빈 값 전달 시 null 변환되어 DB 오류 발생
- store: null 대신 DB 기본값(vendor, 기타) 적용
- update: null 대신 기존 값 유지
2026-03-09 10:49:47 +09:00
김보곤
bcbfa77699
refactor: [fire-shutter] 좌측패널 UI 구조 개선 - 4탭→3탭+상단 설정바
2026-03-09 10:27:47 +09:00
김보곤
020a4e60fe
fix: [rd] 셔터박스 Z 오프셋을 샤프트 기반으로 변경
...
- 샤프트 앞면이 가이드레일(Z=0) 바로 뒤에 위치하도록 계산
- 철재: boxZOffset=-65mm (기존 -195mm), 스크린: -45mm (기존 -125mm)
- frontRatio 방식 제거, 샤프트 직경 기반 계산
2026-03-09 10:17:22 +09:00
김보곤
cdca5138f1
feat: [rd] 방화셔터 제품별 셔터박스 기본 치수 + 비대칭 Z 오프셋
...
- 철재: 650×550mm, 스크린: 500×380mm 기본값 적용
- 제품 타입 전환 시 셔터박스 높이/깊이/샤프트경 자동 업데이트
- 비대칭 Z 오프셋: 가이드레일(Z=0) 기준 후면으로 더 돌출
- 철재: frontRatio 0.20 (앞 130mm, 뒤 520mm)
- 스크린: frontRatio 0.25 (앞 125mm, 뒤 375mm)
- 샤프트/모터/슬랫롤 Z 위치를 박스 중심에 동기화
2026-03-09 10:06:37 +09:00
김보곤
10341e5f6a
fix: [rd] 모터 Z 오프셋 절반 축소 + 중복 체인 박스 제거
...
- 모터 이격거리: 150mm → 75mm (motorZ: -270 → -195)
- 체인 직선 두께 박스(csTop/csBot) 제거, Line 경로만 유지
2026-03-09 09:47:57 +09:00
김보곤
ef1abae8ea
fix: [rd] 방화셔터 모터 Z 오프셋 150mm 추가 (슬랫 감김 간섭 방지)
2026-03-09 09:42:32 +09:00
김보곤
79142ab1d9
feat: [rd] 방화셔터 3D 단품 보기(Isolation) 기능 추가
...
- 우클릭 컨텍스트 메뉴: 객체 클릭 시 '단품 보기', 빈 공간 시 '전체 보기'
- Raycaster 기반 객체 감지 (Group 자식까지 추적)
- 단품 보기 시 카메라 자동 포커스 (BoundingBox 기반)
- 상태 배지 표시 (클릭으로 전체 보기 복원)
- 재빌드 시 단품 상태 유지
2026-03-09 09:38:27 +09:00
김보곤
68a08bdbb8
fix: [rd] 방화셔터 체인/스프로켓 시각화 수정
...
- 샤프트 스프로켓 반지름 130→70mm (브라켓 180mm 내 수용)
- 모터 스프로켓 반지름 45.5→30mm
- 양쪽 스프로켓에 톱니바퀴 메시 추가 (18/10개 톱니)
- 체인 직선 구간 기울기 회전 적용
2026-03-09 09:31:31 +09:00
김보곤
ea61ce95d2
fix: [rd] 모터측 브라켓 앞 큰 스프로켓 디스크+허브 제거
...
- 샤프트 스프로켓 메시(ø260) 및 허브 메시 삭제
- 스프로켓 좌표는 체인 경로 계산용으로만 유지
2026-03-09 09:15:25 +09:00
김보곤
183c0c1384
fix: [rd] 모터측 큰 플랜지 삭제, 3인치 연결관→브라켓 직결
...
- 모터측 플랜지(flangeMT) 삭제 (실제 없는 부품)
- 3인치 연결관이 샤프트 끝에서 복주머니까지 직접 연결
- 비모터측 플랜지만 유지
2026-03-09 08:53:41 +09:00
김보곤
474a3f8de2
feat: [rd] 모터측 샤프트 ASSY 구현 (3인치 연결관+복주머니)
...
- 모터측: 메인샤프트 → 플랜지 → 3인치 연결관(ø76) → 복주머니 → 브라켓
- 복주머니: 브라켓과 직접 결합되는 특수 플랜지 (연결관보다 약간 큼)
- 비모터측: 기존 환봉 구조 유지
2026-03-09 08:41:20 +09:00
김보곤
06c1bda438
fix: [rd] 플랜지 외경 = 샤프트 내경 - 1mm 공차
...
- 샤프트 관 두께 4mm 정의
- 플랜지 외경 = shaftR - 4mm(관두께) - 0.5mm(공차)
- 플랜지가 샤프트 안으로 삽입되는 실제 구조 반영
2026-03-09 08:30:08 +09:00
김보곤
eef685a5ed
fix: [rd] 플랜지 외경=샤프트 동일 + 초기 탭 3D로 변경
...
- 플랜지: 샤프트 끝에 딱 들어가는 형태 (외경=샤프트 외경)
- 초기 탭: Settings → 3D 렌더링으로 변경
2026-03-09 08:28:32 +09:00
김보곤
c609bcdbb7
fix: [rd] 샤프트 길이 축소 + 양쪽 환봉 노출
...
- 샤프트 관: W1-400mm (양쪽 환봉 200mm씩 노출)
- 환봉: ø30, 200mm 밖으로 보임 (전체 300mm 중 100mm는 플랜지 내부)
- 모터측에도 환봉 추가
- 플랜지 위치를 샤프트 끝 바깥으로 수정
- slat roll 길이도 샤프트에 맞춤
2026-03-09 08:24:55 +09:00
김보곤
84334730a7
feat: [rd] 샤프트 ASSY 구조 구현 (환봉+플랜지)
...
- 비모터측 브라켓: 환봉(stub pin ø30) 중앙 돌출
- 양쪽 샤프트 끝: 플랜지 디스크 (샤프트 용접)
- 구조: 브라켓→환봉→플랜지→샤프트관 (실제 조립 구조)
2026-03-09 08:19:19 +09:00
김보곤
d9f56db29e
fix: [rd] 비모터측 브라켓 도면 치수 적용 (180×180mm)
...
- 비모터측: 180×180mm 두께 18mm (도면 기준)
- 모터측: 380×180mm 두께 18mm (기존 유지)
- 계산값(height*0.7, depth*0.6) → 실측 치수로 변경
2026-03-09 08:12:08 +09:00
김보곤
e771de162a
fix: [rd] 모터를 샤프트와 수평(Z방향)으로 재배치
...
- 모터가 가이드레일쪽(Y-) 배치 → 셔터박스 깊이방향(Z-) 수평 배치
- 슬랫과의 간섭 해소
- 브라켓 380mm를 Z방향으로 설정 (샤프트~모터 수용)
- 체인 경로를 YZ 수평 루프로 변경
2026-03-09 08:06:34 +09:00
김보곤
8657fd314c
fix: [rd] slat roll을 단일 실린더로 변경 (접시 모양 제거)
...
- 디스크/링 제거, 샤프트 전체에 감기는 하나의 실린더로 표현
- 최소 두께 8mm 보장 (적은 감김에서도 보이도록)
- 나선형 표면 라인으로 감긴 질감 표현
2026-03-09 07:58:46 +09:00
김보곤
3ad8e24ac3
fix: [rd] 방화셔터 slat roll 시각화 개선
...
- 모터 Y 위치 수정 (스프로켓 겹침 해소)
- slat roll 색상/형태 개선 (양쪽 디스크, 나선형 표면 라인)
- 재빌드 후 토글 visibility 동기화 추가
2026-03-09 07:52:19 +09:00
김보곤
b3cd1ffebc
fix: [rd] 복주머니+플랜지를 모터 그룹으로 이동
...
- 모터 숨기면 복주머니+플랜지도 함께 숨김
- 샤프트는 복주머니 없이 자기 구간까지만 표시
- 모터 ON: 브라켓 ← 모터 ← 출력축 ← 복주머니 ← 샤프트
- 모터 OFF: 샤프트만 남음 (비모터측 브라켓+환봉까지)
2026-03-08 22:12:33 +09:00
김보곤
11af8e2a6a
fix: [rd] 모터측 브라켓을 모터 그룹에 추가
...
- 모터측 브라켓은 모터 그룹 소속 (모터 숨기면 함께 숨김)
- 구조: 벽 ← 브라켓 ← 모터 ← 출력축 ← 복주머니 ← 샤프트
- 비모터측: 벽 ← 브라켓 ← 환봉 ← 샤프트
2026-03-08 22:09:36 +09:00
김보곤
ae074e7af8
fix: [rd] 모터측 브라켓 제거 — 모터가 복주머니로 샤프트에 직접 결합
...
- 모터측 브라켓 제거 (비모터측에만 브라켓 존재)
- 복주머니가 셔터박스 끝에서 직접 시작
- 모터 → 출력축 → 복주머니 → 샤프트 직결 구조
- 주축 길이 재계산 (모터측 브라켓 두께 제외)
2026-03-08 22:06:15 +09:00
김보곤
7743246f64
feat: [rd] 모터 형상 실제 DH-150K 스타일로 재설계
...
- 은색 본체 실린더 + 냉각 핀 리브 3줄
- 파란색 기어박스 (본체보다 넓음, 복주머니 쪽)
- 기어박스 전면 플랜지 (복주머니 결합면)
- 후면 마감판
- 마운팅 베이스 플레이트 + 3개 다리 (브라켓 위에 안착)
- 출력축 (기어박스 → 복주머니 방향)
2026-03-08 22:03:23 +09:00
김보곤
354ceda093
fix: [rd] 모터 방향 수정 — 브라켓 안쪽(샤프트 방향)으로 배치
...
- 모터를 브라켓 바깥(벽쪽)에서 안쪽(복주머니 옆)으로 이동
- 돌출축이 복주머니 방향으로 향하도록 수정
- 마감판은 바깥(샤프트 반대편)에 위치
2026-03-08 21:51:39 +09:00
김보곤
6b5964bdb8
feat: [rd] 모터 구조 개선 — 샤프트 1.2배 크기 + 돌출축-복주머니 결합
...
- 모터 크기를 샤프트 직경의 1.2배로 조정
- 모터 돌출축 (output shaft) 추가
- 복주머니 플랜지 링 추가 (모터축-샤프트 결합면)
- 모터 후면 마감판 (end cap) 추가
- 모터를 브라켓 바깥에 배치 (돌출축이 복주머니와 결합)
2026-03-08 21:47:04 +09:00
김보곤
3d801361dd
fix: [rd] 벽체 구조 수정 — 통 기둥 + 인방 분리
...
- 좌/우 기둥을 하나의 통 박스로 통합 (분리 안 됨)
- 인방을 셔터박스 윗면부터만 생성 (셔터박스 내부 침범 제거)
- 개구부 뒤쪽 벽 제거 (통과 가능)
2026-03-08 21:42:22 +09:00
김보곤
755375ddda
fix: [rd] 벽체 개구부 통과 구조로 변경
...
- 뒷벽을 좌/우 분리 + 상부 인방으로 3조각 구성
- 개구부(셔터 영역)는 뚫려서 통과 가능
- 셔터 열렸을 때 실제 건물처럼 통행 가능한 구조
2026-03-08 21:37:10 +09:00
김보곤
5444c956a9
feat: [rd] 3D 벽체 설정 기능 추가
...
- 3면 벽체 구조 (좌/우 날개벽 + 뒷벽)
- 날개벽 폭, 벽 두께, 상단 여유 슬라이더 조절
- 벽체 투명도 슬라이더 (0~100%)
- 색상 프리셋 6종 (콘크리트/벽돌/흰색/커튼월/갈색/ALC) + 직접 선택
- 벽체 와이어프레임 윤곽선 표시
2026-03-08 21:33:46 +09:00
김보곤
7a3bd4028e
fix: [rd] 철재 슬랫 감김 두께 수정 (72mm→10mm)
...
- 72mm는 슬랫 폭이지 감김 두께가 아님
- ㄷ자 슬랫 감김 시 실제 적층 두께 ~10mm로 수정
2026-03-08 21:23:59 +09:00
김보곤
d1e6ba3069
feat: [rd] 3D 샤프트 슬랫 감김 롤 표현
...
- 셔터 올라간 만큼 샤프트 주위에 감긴 롤 원통 표시
- 철재: ㄷ자 72mm 피치 (두꺼운 감김) + 골 링 라인 표현
- 스크린: 1mm 피치 (얇은 감김)
- 개폐 슬라이더 조작 시 롤 두께 실시간 변화
2026-03-08 21:20:47 +09:00
김보곤
a1ae6c929c
fix: [rd] 3D 개폐 조절 시 카메라 시점 유지
...
- 셔터 개폐 슬라이더 조작 시 카메라 위치가 리셋되던 문제 수정
- 최초 빌드 시에만 카메라 초기화, 이후 재빌드에서는 현재 시점 유지
2026-03-08 21:11:52 +09:00
김보곤
ab8d709e19
fix: [rd] 모터 위치/형상 수정 — 브라켓 안쪽에 3개 다리로 안착
...
- 모터를 벽쪽(바깥)에서 샤프트 방향(안쪽)으로 이동
- 원통형 모터 본체로 변경
- 3개 마운팅 다리 추가 (브라켓 위에 안착)
2026-03-08 21:09:23 +09:00
김보곤
48601175a1
feat: [rd] 방화셔터 3D 샤프트 조립 구조 구현
...
- 가이드레일 높이 수정: 셔터박스 상단까지 → 샤프트 아래 100mm까지
- 브라켓 양쪽 추가 (BoxGeometry)
- 비모터측 환봉 (thin cylinder) 추가
- 모터측 복주머니 커플링 (wider cylinder) 추가
- 주축 샤프트를 환봉~복주머니 사이로 단축
- 모터 위치를 브라켓 바깥으로 이동
2026-03-08 20:58:57 +09:00
김보곤
441470ec62
fix: [fire-shutter] 셔터박스 기본값 수정(2210/520/10), 정면도 샤프트/슬랫을 브래킷 연결 수평바 형태로 변경
2026-03-08 20:48:12 +09:00
김보곤
a6e8c04c3a
fix: [fire-shutter] 가이드레일 기본값 수정(120/75/1.55/0.8), 횡단면→평면도 용어 변경
2026-03-08 20:40:35 +09:00
김보곤
c110e68baf
fix: [fire-shutter] HEAD BOX→셔터박스(CASE) 용어 수정, 3D 슬랫 라인 좌표를 로컬 좌표로 변환
2026-03-08 20:30:57 +09:00
김보곤
fed8729ff3
fix: [fire-shutter] SVG 미리보기 미표시 수정 (wrapper div 크기 명시, displaySvg 헬퍼 통합)
2026-03-08 20:23:48 +09:00
김보곤
4058d7735d
refactor: [fire-shutter] 3:7 가로 레이아웃 적용 (설정패널 좌측 30%, 미리보기 우측 70%)
2026-03-08 20:17:05 +09:00
김보곤
ab72df15d4
fix: [rd] 방화셔터 3D 셔터박스 위치 오류 수정
...
- wireframe이 case 자식으로 추가되면서 위치가 2배 적용되던 버그 수정
- boxLine.position 제거 (부모 case의 transform을 상속하므로 불필요)
2026-03-08 20:06:33 +09:00
김보곤
eb004fe399
fix: [rd] 방화셔터 3D 패널 극한 압축
...
- 슬라이더 라벨+값+슬라이더를 한 행으로 통합
- 부품 토글 4열 grid로 변경 (2행으로 압축)
- 조명 프리셋 버튼 제거, 조명색 color picker로 교체
- 배경색 버튼 14px로 축소, 조명+배경 한 행 배치
- 전체 패딩/간격 최소화
2026-03-08 20:02:42 +09:00
김보곤
4522f19d40
fix: [rd] 방화셔터 3D 탭 컨트롤 패널 압축
...
- 부품 표시 2열 grid로 변경 (7항목이 4행으로 압축)
- 배경색 선택 인라인 소형 버튼 (20px)으로 변경
- 조명 프리셋 한 줄 인라인 배치
- 토글 스위치 크기 축소 (2.5rem→2rem)
- 슬라이더 라벨 인라인화, 전체 여백 축소
2026-03-08 19:47:47 +09:00
김보곤
48a8dd9cf4
feat: [rd] 방화셔터 도면생성 기능 구현
...
- 4탭 구성: 설정 / 가이드레일 / 셔터박스 / 3D 렌더링
- 가이드레일 C-채널 SVG 단면도 (횡단면/정면도)
- 셔터박스 SVG 단면도 (정면/측면, 내부 부품 ON/OFF)
- Three.js 3D 조립체 렌더링 (셔터 개폐 애니메이션, 투명도, 부품 토글)
- DXF/PNG/JSON 내보내기, localStorage 프리셋 관리
- 제품 유형별(강판/스크린) 기본값 자동 적용
2026-03-08 19:30:05 +09:00
김보곤
b5cec674b1
feat: [rd] 자동도면 생성 메뉴 추가
...
- 레거시 전개도 시뮬레이터를 MNG 환경으로 마이그레이션
- RdController에 autoDrawing 메서드 추가 (HX-Request 체크 포함)
- 라우트: GET /rd/auto-drawing
- R&D 대시보드에 자동도면 생성 카드 추가
- 레거시 PHP 코드 제거 (세션, API키, 서버기록 등)
- Three.js 3D 렌더링, SVG 미리보기, DXF 도면 생성 기능 유지
2026-03-08 17:53:48 +09:00
김보곤
a14cfaae18
fix: [sound-logo] 시퀀서/AI BGM 상호 배타적 재생 구조 적용
...
- AI BGM 있으면 시퀀서(수동/프리셋) 음표 제외
- 시퀀서 모드에서는 AI BGM 제외
- TTS 음성은 양쪽 모두 공통 재생
- exportWav도 동일 로직 적용 + 오프라인 컴프레서 추가
2026-03-08 14:53:05 +09:00
김보곤
7fd6b904f6
fix: [sound-logo] 오디오 합성 시 클리핑 소음 방지
...
- DynamicsCompressor 마스터 노드 추가 (threshold:-6dB, ratio:12)
- 모든 오디오 출력(시퀀서/음성/BGM)을 컴프레서 경유로 변경
- 다중 소스 합산 시 진폭 초과로 인한 디지털 클리핑 방지
2026-03-08 14:47:27 +09:00
김보곤
2f1ea3b369
fix: [sound-logo] Lyria WebSocket 메시지 키 형식 수정
...
- client_content → clientContent (camelCase)
- music_generation_config 중첩 제거 → musicGenerationConfig 최상위
- playback_control 중첩 제거 → playbackControl 최상위
- WAV 헤더 감지 시 decodeAudioData fallback 추가
2026-03-08 14:38:51 +09:00
김보곤
697560b2de
feat: [sound-logo] Lyria BGM WebSocket 디버그 로깅 추가
2026-03-08 14:34:44 +09:00
김보곤
fd4411b04f
fix: [sound-logo] 음성 기본 텍스트에 ~ 추가
2026-03-08 14:30:50 +09:00
김보곤
486724d38a
fix: [sound-logo] Lyria WebSocket Blob 데이터를 텍스트로 변환 후 JSON 파싱
...
- Blob 무시 대신 text()로 변환하여 JSON 파싱 시도
- Lyria API가 오디오 청크를 Blob 바이너리 프레임으로 전송하는 경우 대응
2026-03-08 14:27:46 +09:00
김보곤
253067f2b5
fix: [sound-logo] Alpine 표현식 에러 + WebSocket Blob 파싱 에러 수정
...
- x-text 속성에서 이스케이프된 따옴표 제거 (Blade 빌드 시 깨짐 방지)
- WebSocket onmessage에서 Blob 바이너리 데이터 수신 시 JSON.parse 건너뛰기
2026-03-08 14:19:57 +09:00
김보곤
9b7362fa4f
fix: [sound-logo] 음성 카테고리 기반 선택으로 재구성
...
- 여성/남성/아이 카테고리 탭으로 1차 분류 (성별 확실한 전달)
- 공식 문서 기반 음성 성별 정보 수정 (Gacrux=여성, Sadachbia=남성 등)
- 아이 카테고리: 젊은 음성 + 'young child, high-pitched' Director's Note 지시문
- 스타일 옵션에서 아이/청소년 제거 (카테고리로 이동)
- 프롬프트 형식을 Director's Note 형식으로 개선
2026-03-08 14:12:57 +09:00
김보곤
0e86636354
feat: [sound-logo] 아이 목소리 옵션 + 말하기 속도 조절 추가
...
- 스타일 옵션에 어린이(5~7세), 초등학생(8~12세), 청소년(13~18세) 추가
- 말하기 속도 슬라이더 추가 (매우느리게~매우빠르게 5단계)
- 속도와 스타일을 TTS 프롬프트 지시문으로 조합하여 Gemini API에 전달
- 음성 목록 여성/남성/중성 순서로 정렬
2026-03-08 14:05:22 +09:00
김보곤
64b3ad2b59
feat: [sound-logo] TTS 음성 옵션 확장 + 잡음 문제 수정
...
- PCM 디코딩 endianness 수정 (big-endian → little-endian, Gemini TTS는 s16le)
- 16종 음성 선택 옵션 추가 (남성/여성/중성, 성격 설명)
- 9종 발화 스타일 옵션 추가 (밝고 활기차게, 차분하고 신뢰감 등)
- 음성/스타일을 컨트롤러에 전달하여 Gemini API에 적용
- 기본 텍스트: '우리들의 솔루션 쌤, 쌤, 쌤'
2026-03-08 13:58:48 +09:00
김보곤
c993826fdc
fix: [sound-logo] UX 개선 - 중앙 toast 안내 시스템 + transport bar 레이아웃 수정
...
- toast를 화면 중앙에 표시하고 info/warn/error 유형별 색상 분리
- 모든 기능에 조건 미충족 시 가이드 메시지 추가 (음표/음성/배경음악 미생성 안내)
- 에러 발생 시 console 대신 사용자 친화적 toast로 알림
- transport bar 하단 잘림 수정 (height 계산 + margin 보정)
2026-03-08 13:53:24 +09:00
김보곤
0e242bdcc1
feat: [rd] 사운드 로고 생성기 도움말 모달 추가
...
- 툴바에 ? 아이콘 추가 → 클릭 시 사용법 모달 표시
- 4개 탭(수동/프리셋/AI생성/AI배경음악) 상세 사용법 안내
- 음성 오버레이, 재생/내보내기, 3중 합성 구조 설명 포함
- ESC 키/외부 클릭으로 모달 닫기 지원
2026-03-08 13:43:42 +09:00
김보곤
f8a00c3f8c
feat: [rd] AI 배경음악 생성 기능 추가 (Google Lyria RealTime)
...
- Lyria RealTime WebSocket 연동으로 다중 악기 배경음악 실시간 생성
- BPM, 밀도, 밝기, 스케일 컨트롤 지원
- 시퀀서 + 음성 + 배경음악 3중 합성 (playAll, exportWav)
- 서버 API 키 보호 엔드포인트 (lyria-config)
- 빠른 프롬프트 10종 제공
2026-03-08 13:37:25 +09:00
김보곤
d02c142f65
feat: [rd] 사운드로고/나레이션 AI 토큰 사용량 기록 추가
...
- RdController: 사운드로고-AI생성, 사운드로고-TTS 토큰 기록
- CmSongController: 나레이션-가사생성, 나레이션-TTS 토큰 기록
- AI 토큰 사용량 UI에 사운드로고/나레이션 카테고리 분류 추가
2026-03-08 12:57:29 +09:00
김보곤
e7f81cb063
fix: [rd] TTS 500 에러 수정 및 AI 응답 파싱 개선
...
- 짧은 텍스트(4자 미만) TTS 요청 시 따옴표 래핑으로 Gemini TTS 인식률 개선
- TTS API 에러 시 실제 에러 메시지 반환 (기존: 일괄 500)
- AI 생성 temperature 0.9→0.7, maxOutputTokens 2048→4096으로 응답 안정성 개선
- 프롬프트에 name/desc 길이 제한 추가하여 JSON 잘림 방지
2026-03-08 12:51:08 +09:00
김보곤
301369bb37
feat: [sound-logo] TTS 음성 오버레이 기능 추가
...
- Gemini TTS API 연동 (한국어 Kore 음성)
- 사이드바에 음성 오버레이 컨트롤: 텍스트 입력, 시작 시점, 볼륨
- 재생/WAV 내보내기 시 신스 + 음성 자동 합성
- POST /rd/sound-logo/tts 엔드포인트 추가
- L16 PCM → AudioBuffer 디코더 구현
2026-03-08 12:44:05 +09:00
김보곤
75dbe2910a
feat: [sound-logo] Phase 2 AI 어시스트 모드 추가
...
- Gemini API 연동: 프롬프트 → 음표 시퀀스 JSON 자동 생성
- AI 탭 UI: 프롬프트 입력, 카테고리/길이 선택, 빠른 프롬프트 10종
- AI 결과 미리보기: 음표 시각화, 미리듣기, 시퀀서 로드
- POST /rd/sound-logo/generate 엔드포인트 추가
2026-03-08 12:34:42 +09:00
김보곤
8563d9aa2b
feat: [sound-logo] 프리셋 10종 → 50종 확장 + 카테고리 필터 추가
...
- 8개 카테고리: 기업시그널, 알림/메시지, 상태/피드백, 전환효과, 게임효과, UI인터랙션, 브랜드징글, 방송/미디어
- 카테고리별 필터 탭 UI 추가
2026-03-08 12:27:55 +09:00
김보곤
d81c5f4a6f
feat: [rd] 사운드 로고 생성기 Phase 1 MVP 구현
...
- Web Audio API 기반 사운드 합성 엔진
- 4종 신스(sine/square/triangle/sawtooth) + ADSR 엔벨로프
- 노트 시퀀서 UI (비주얼 바 + 드롭다운 편집)
- 10종 프리셋 (알림, 로고, 시작음, 성공 등)
- WAV 내보내기, JSON import/export, localStorage 저장
2026-03-08 12:15:32 +09:00
김보곤
05af666a4b
feat: [design-insight] AI 프롬프트 복사 버튼 추가
...
- 카드 상세 모달 편집 버튼 옆에 AI 프롬프트 버튼 추가
- 패턴 정보/구성요소/가이드라인을 AI 프롬프트로 변환 후 클립보드 복사
- 복사한 프롬프트를 AI에 붙여넣으면 해당 스타일로 코드 생성 가능
2026-03-08 11:10:54 +09:00
김보곤
1543db684d
feat: [design-insight] UI 패턴 50종 → 100종 확장
...
- 프리셋 템플릿 50개 추가 (51~100번)
- CSS 와이어프레임 50개 추가
- 버튼/토스트/다이얼로그 텍스트 100종으로 수정
2026-03-08 11:02:03 +09:00
김보곤
4c06c81e4a
fix: [design-insight] 인기 UI 패턴 20종 → 50종 문구 수정
2026-03-08 10:47:29 +09:00
김보곤
57f53ac01e
feat: [design-insight] 50종 UI 패턴 와이어프레임 미리보기 추가
...
- 로그인/인증 5종: 클래식 로그인, 소셜 SSO, 2FA, 비밀번호 재설정, 회원가입
- 보고서 5종: 인쇄용, 인보이스/견적서, 분석 리포트, 업무 보고서, PDF 리포트
- 대시보드 4종: 위젯, 실시간 모니터링, 멀티 차트, 데이터 시각화
- 목록 3종: 무한 스크롤, 그룹/섹션, 벌크 액션
- 폼 3종: 인라인 편집, 리치 텍스트 에디터, 프로필 카드
- 모달 4종: 확인 다이얼로그, 라이트박스, 알림 센터, 날짜 선택기
- 네비게이션 3종: 메가 메뉴, 모바일 하단바, 다단계 드롭다운
- 기타 3종: 드래그 정렬, 스켈레톤 로딩, 알림 배지
2026-03-08 10:41:23 +09:00
김보곤
1a78f2dc72
feat: [rd] 디자인 인사이트 카드 미리보기 모달 + 와이어프레임 20종
...
- 카드 클릭 시 미리보기 모달 (좌: 와이어프레임, 우: 정보 패널)
- 패턴 카드 20종 CSS 와이어프레임 자동 생성
- KPI 대시보드, 데이터 테이블, 칸반, Command Palette,
사이드바, 모달 폼, 설정, 타임라인, 트리 분할뷰,
온보딩 스테퍼, 토스트, Empty State, 검색 자동완성,
탭 레이아웃, 카드 그리드, 가격표, 캘린더, 채팅,
파일 업로드, 브레드크럼
- 미리보기에서 편집 모달로 전환 가능
2026-03-08 10:27:06 +09:00
김보곤
1aa8781bfe
feat: [rd] 디자인 인사이트 인기 UI 패턴 20종 프리셋 추가
...
- 웹서비스 인기 UI 패턴 20종 프리셋 템플릿
- KPI 대시보드, 데이터 테이블, 칸반, Command Palette,
사이드바, 모달 폼, 설정 페이지, 타임라인, 트리 분할뷰,
온보딩 스테퍼, 토스트, Empty State, 검색 자동완성,
탭 레이아웃, 카드 그리드, 가격표, 캘린더, 채팅,
파일 업로드, 브레드크럼
- 빈 상태 및 내보내기 메뉴에서 불러오기 버튼 제공
- 각 패턴별 구성 요소, 가이드라인, 참고 서비스 포함
2026-03-08 10:12:11 +09:00
김보곤
a6779e0031
fix: [rd] 디자인 인사이트 'SAM ERP' → 'SAM' 용어 수정
2026-03-08 10:07:36 +09:00
김보곤
ce055542a5
feat: [rd] 디자인 인사이트 도움말 모달 추가
...
- ? 버튼 클릭 시 7개 탭 도움말 모달 표시
- 개요, 툴바, 카드 유형, 뷰 모드, 사이드바, 단축키, 워크플로우
- 각 기능별 상세 설명 및 빠른 시작 가이드
2026-03-08 10:02:37 +09:00
김보곤
d9c808b928
feat: [rd] 디자인 인사이트 메뉴 Phase 1 MVP 구현
...
- GET /rd/design-insight 라우트 + 컨트롤러 추가
- Alpine.js 단일 파일 SPA (localStorage 기반)
- 4종 카드: 레퍼런스, 분석(CRAP), 패턴, Before/After
- 3종 뷰: 보드, 갤러리, 리스트
- Ctrl+V 클립보드 이미지 붙여넣기
- 프로젝트 CRUD, 태그/카테고리 필터, 검색
- JSON 내보내기/가져오기
2026-03-08 09:55:36 +09:00
김보곤
a38c017c63
fix: [planning-design] 이미지 블록 업로드를 더블클릭으로 변경
...
- 단일 클릭 시 드래그 이동 중 파일 창이 뜨는 문제 해결
- @click.stop → @dblclick.stop 변경
2026-03-08 09:23:14 +09:00
김보곤
f120273160
feat: [planning-design] 작업 영역 극대화 (패널 접기/펼치기)
...
- 좌측 메뉴트리 패널 접기/펼치기 토글 버튼 추가
- Description 패널 접기/펼치기 토글 바 추가
- 사이드바 접힘 시 스토리보드 페이지 폭 1100→1400px 자동 확장
- sb-editor padding 24→12px 축소
2026-03-08 09:19:18 +09:00
김보곤
5e0f1a6373
feat: [planning-design] 사이드바 접기/펼치기 버튼 추가
...
- 좌측 패널 탭 바에 접기(<<) 버튼 추가
- 사이드바 접힘 시 좌측 가장자리에 펼치기(>) 버튼 표시
- 캔버스 작업 공간 극대화 지원
2026-03-08 09:08:21 +09:00
김보곤
280bfddbd3
fix: [planning-design] 블록 서식(글자색/크기/굵기 등) 자식 요소에 상속 적용
...
- 자식 요소(.sb-blk-text, .sb-blk-heading 등)에 하드코딩된 color가 있어 부모 스타일 무시됨
- CSS attribute selector로 부모에 style이 설정된 경우 color/font-size/font-weight/font-style/text-align inherit 적용
2026-03-08 01:26:07 +09:00
김보곤
dfbbd3a1a0
feat: [planning-design] 블록 서식 툴바 + 우클릭 컨텍스트 메뉴 추가
...
- 블록 선택 시 Notion 스타일 플로팅 서식 툴바 표시
- 글자색, 배경색, 글자 크기, 굵게, 기울임, 정렬 설정
- 앞/뒤로 보내기 (z-index), 서식 초기화
- 우클릭 컨텍스트 메뉴: 복제/잘라내기/삭제/서식/레이어
- 서브메뉴로 글자색/배경색 직접 선택 가능
- 블록별 style 속성 저장 (localStorage 영속)
- HTML 내보내기/인쇄에 서식 반영
2026-03-08 01:22:06 +09:00
김보곤
ac5ae6eb05
feat: [planning-design] 좌표 기반 인쇄 기능 추가 + HTML 내보내기 블록 좌표 배치 개선
2026-03-08 00:51:12 +09:00
김보곤
8ff84e7f94
feat: [planning-design] Description 패널 리사이즈 + 번호 뱃지 마커 블록 (드래그&드롭/툴바)
2026-03-08 00:41:32 +09:00
김보곤
f4131df0ce
fix: [planning-design] Ctrl+X 후 Ctrl+Z 복구 안 되는 문제 수정
2026-03-08 00:34:11 +09:00
김보곤
95cd217cdc
feat: [planning-design] Ctrl+X 잘라내기 기능 추가 (단일/다중)
2026-03-08 00:31:06 +09:00
김보곤
ff373c719c
fix: [planning-design] 올가미 선택 동작 안 되는 문제 수정
2026-03-08 00:29:01 +09:00
김보곤
7785dfed98
feat: [planning-design] 올가미(마퀴) 다중 선택 + 그룹 이동/복사/삭제 기능 추가
2026-03-08 00:26:26 +09:00
김보곤
20e5ab784e
feat: [planning-design] 메뉴/캔버스 경계 드래그 리사이즈 기능 추가
2026-03-08 00:20:42 +09:00
김보곤
08cc866afa
fix: [planning-design] 블록 툴바를 단위업무 상단으로 이동
2026-03-08 00:17:05 +09:00
김보곤
a27d9921b1
fix: [planning-design] placeholder 색상 더 옅게 + italic 스타일 적용
2026-03-07 23:54:19 +09:00
김보곤
78c8f3f876
feat: [planning-design] 스토리보드 페이지 복사 기능 추가
2026-03-07 23:51:53 +09:00
김보곤
063d8c61e4
feat: [planning-design] 스토리보드 블록 Undo/Redo 기능 추가 (Ctrl+Z/Y)
2026-03-07 23:49:34 +09:00
김보곤
5271072e20
feat: [planning-design] 블록 Ctrl+C/V 복사 붙여넣기 및 Delete 삭제
...
- Ctrl+C: 선택된 블록 클립보드 복사
- Ctrl+V: 클립보드 블록 붙여넣기 (24px 오프셋)
- Delete/Backspace: 선택된 블록 삭제
- 연속 Ctrl+V 시 오프셋 누적으로 겹침 방지
2026-03-07 23:43:16 +09:00
김보곤
056f7f99f3
feat: [planning-design] 블록 자유 배치 캔버스 (PPT 스타일)
...
- 블록을 드래그하여 자유롭게 위치 이동
- 오른쪽/아래/대각선 리사이즈 핸들로 크기 조절
- 더블클릭으로 편집 모드 진입
- 그리드 도트 배경으로 위치 인지 용이
- 선택 시 크기 표시 (w × h)
- 블록 기본 크기를 유형별로 최적화
- 템플릿 삽입 시 자동 세로 배치
2026-03-07 23:40:14 +09:00
김보곤
1bb134020c
fix: [planning-design] 템플릿 패널 잘림 현상 수정
...
- position: absolute → fixed로 변경 (부모 overflow 영향 제거)
- 버튼 위치 기준으로 JS 동적 좌표 계산
- 화면 경계 밖 방지 (좌/우/하단 overflow 체크)
2026-03-07 23:34:37 +09:00
김보곤
3659bef743
feat: [planning-design] 스토리보드 블록 템플릿 시스템 추가
...
- 기본 프리셋 9종: 검색+목록, 상세폼, CRUD, 대시보드, 결재폼,
탭 레이아웃, 팝업/모달, 로그인, 빈 페이지
- 내 템플릿 저장/삽입/삭제 (localStorage 영구 보관)
- 템플릿 검색 필터, 프리셋/커스텀 탭 분리
- 현재 페이지 블록을 한 번에 템플릿으로 저장하여 재활용
2026-03-07 23:29:18 +09:00
김보곤
6ce6c853b3
feat: [planning-design] 스토리보드 블록 편집기 구현
...
- 노션 스타일 블록 기반 화면 설계 편집기
- 15종 블록: 제목(H1/H2), 텍스트, 테이블, 콜아웃, 체크리스트,
코드, 버튼, 입력필드, 셀렉트, 카드, 뱃지, 이미지, 구분선
- 드래그 앤 드롭 블록 순서 변경
- 블록 복제, 위/아래 이동, 삭제 지원
- HTML 내보내기에 블록 렌더링 반영
2026-03-07 23:19:16 +09:00
김보곤
0622fc2a34
feat: [planning-design] 메뉴 트리 편집 모달 UI 추가
...
- JSON prompt 방식 → 트리구조 모달 UI로 개선
- 상위/하위 메뉴 추가, 삭제, 이름 편집 지원
- 드래그 앤 드롭으로 메뉴 순서 변경 가능
- 접기/펼치기 토글 지원
2026-03-07 23:07:17 +09:00
김보곤
708cef2ec7
feat: [planning-design] 스토리보드 뷰 통합 완성
...
- loadProject()에서 sb 데이터 복원 추가
- newProject()에서 sb 초기화 추가
- init()에서 sbInitPages() 호출 추가
2026-03-07 22:55:39 +09:00
김보곤
d7edb52573
fix: [rd] 기획디자인 연결선 화살표 제거, 단순 곡선으로 변경
2026-03-07 22:32:09 +09:00
김보곤
94d19af290
feat: [rd] 기획디자인 연결선 삭제 + 스페이스바 패닝 기능 추가
...
- 연결선 클릭 선택 → Delete/Backspace로 삭제
- 우클릭 컨텍스트 메뉴에 '연결선 삭제' 항목 추가
- 스페이스바 누른 채 마우스 드래그로 캔버스 이동 (Figma/FigJam 방식)
- 패닝 중 커서 grab/grabbing 변경
2026-03-07 22:28:40 +09:00
김보곤
6f11a08a9f
fix: [rd] 기획디자인 연결선 렌더링 수정 (SVG namespace 문제 해결)
...
- Alpine.js <template x-for>가 SVG 내부에서 path 요소 생성 불가 문제
- SVG 요소를 createElementNS로 직접 생성하는 renderConnections() 도입
- x-effect + _connTick 카운터로 노드 이동/연결 변경 시 자동 리렌더
2026-03-07 22:22:35 +09:00
김보곤
178e4e22aa
feat: [rd] 기획디자인 7대 기능 추가 (칸반/모달/체크리스트/담당자/필터/검색/리스트뷰)
...
- 칸반 보드: 상태별 컬럼 드래그앤드롭으로 상태 전환
- 노드 상세 모달: 더블클릭으로 전체 편집 (Notion 스타일)
- 체크리스트: 모달 내 하위 작업 관리, 진행률 프로그레스 바
- 담당자/마감일 필드: 노드별 배정, 기한 초과 빨간 표시
- 필터 바: 상태/우선순위/유형/텍스트 필터링 (Ctrl+F)
- 리스트/테이블 뷰: 정렬 가능한 전체 노드 목록
- autoSave toast 제거 (UX 방해 요소)
2026-03-07 22:16:52 +09:00
김보곤
64ab20becf
feat: [rd] 기획디자인 플래닝 캔버스 페이지 추가
...
- 연구개발 > 기획디자인 메뉴 라우트/컨트롤러/뷰 추가
- Alpine.js 기반 캔버스 도구 (노드 배치, 연결, 줌/팬)
- 16종 노드 타입 (기획/분석/구조/산출물 카테고리)
- 타임라인/플로우 뷰 모드, 프로젝트 저장/불러오기
- 실행취소/재실행, 키보드 단축키 지원
2026-03-07 22:06:06 +09:00
김보곤
e38ef0f1d5
fix: [approval] 결재선 인원 목록에서 미배정/퇴사/외주 사용자 제외
...
- 부서 미배정(department_id NULL) 사용자 목록에서 제외
- 코드브릿지엑스(tenant_id=1) 테넌트에서 영업팀(외주) 제외
2026-03-07 21:53:22 +09:00
김보곤
6c683c7d4e
feat: [approval] 결재선 요약 카드 가로 2분할 (결재선 | 참조선 분리 표시)
...
- 기안 작성 페이지 결재선 요약 영역을 좌우 2분할 레이아웃으로 변경
- 좌측: 결재선 (결재/합의 카드), 우측: 참조선 (참조 카드)
- 참조자가 없으면 결재선만 전체 너비로 표시
2026-03-07 20:57:57 +09:00
김보곤
a032b1a11e
fix: [menus] 메뉴 관리 페이지 기본 행 표시 500개 고정
...
- 공통 pagination_per_page 쿠키 대신 menu_per_page 전용 쿠키 사용
- 다른 페이지에서 200개로 설정해도 메뉴 관리는 항상 500개 기본
2026-03-07 19:50:47 +09:00
김보곤
0dab993508
feat: [help] 도움말 > 바로빌 연동 가이드 페이지 추가
...
- 7탭 구성: 전체 구조, 초기 설정, 세금계산서, 계좌/카드, 홈택스 연동, 카카오톡/SMS, 메뉴 맵
- BarobillGuideController + HX-Redirect 패턴 적용
- 테넌트 필수 설정, 바로빌↔SAM 연동 구조, FAQ 포함
2026-03-07 19:02:53 +09:00
김보곤
67694b926f
feat: [help] 도움말 > 연차휴가/근태관리 페이지 추가
...
- 7탭 구성: 전체 흐름도, 연차 발생/계산, 휴가 신청/결재, 근태 기록, 연차촉진제도, 급여 연동, 메뉴 맵
- AttendanceGuideController + HX-Redirect 패턴 적용
- 근로기준법 기반 연차 발생 기준, 촉진 타임라인, 급여 연동 로직 포함
2026-03-07 18:50:51 +09:00
김보곤
d9ad2e801b
feat: [help] 도움말 > 회계동작원리 페이지 추가
...
- 6탭 구성: 전체 흐름도, 일상 업무, 월간 업무, 세금/부가세, 정산/결산, 메뉴 맵
- AccountingGuideController + HX-Redirect 패턴 적용
- 중소기업 회계담당자를 위한 SAM 재무/회계 가이드
2026-03-07 18:36:08 +09:00
김보곤
d2620ddd22
feat: [claude-code] 벤치마크 이름 hover 시 설명 툴팁 추가 (SWE-bench, GPQA, ARC-AGI 등)
2026-03-07 18:25:04 +09:00
김보곤
a7287638c4
fix: [claude-code] 모델 비교 카드 날짜 뱃지 inline style로 변경 (Tailwind bg-opacity 미적용 문제)
2026-03-07 18:22:45 +09:00
김보곤
28a9c8075d
fix: [claude-code] 모델 비교 카드 날짜 텍스트 색상 수정 (흰배경에 흰글자 → 명시적 text-white)
2026-03-07 18:21:01 +09:00
김보곤
9c3b9951b0
fix: [claude-code] 발전과정 리서치 데이터 보강 및 오류 수정
...
- Opus 4.1 (2025.08.05) 모델 추가 (SWE 74.5%, GPQA 80.9%)
- Haiku 4.5 SWE-bench 73.3% 벤치마크 추가
- Opus 4.5 가격 수정 ($15/$75 → $5/$25)
- Opus 4 GPQA 수정 (79.6% → 76.9%), 출시일 수정 (09 → 05)
- Claude Code GA 날짜 정정 (2025.04 → 2025.05.22)
- Claude Code $1B 런레이트 매출 달성 정보 추가
- SWE-bench 성장 바 차트에 Opus 4.1, Haiku 4.5 추가
2026-03-07 18:17:55 +09:00
김보곤
5c900b618b
feat: [claude-code] 발전과정 페이지 대폭 강화 - 모델 비교 탭 추가
...
- 새 '모델 비교' 탭: 각 모델별 특징 카드, 벤치마크 바 차트, 핵심 스펙
- Opus 4.6/4.5, Sonnet 4.6/4.5, 4 Opus/Sonnet, 3.7/3.5, Haiku 4.5 상세
- SWE-bench, GPQA Diamond, ARC-AGI 2, OSWorld 벤치마크 수치 반영
- Opus 4.6 vs Sonnet 4.6 직접 비교표 추가
- 모델 진화 탭: 세대별 비교표 10개 모델로 확장, SWE-bench 성장 바 차트
- 타임라인 탭: Opus 4.5(2025.11) 노드 추가, 정확한 출시일 반영
- 히어로 수치 업데이트 (9세대 모델, SWE-bench 80.8%)
2026-03-07 18:15:18 +09:00
김보곤
ffe02b3224
feat: [claude-code] 발전과정 페이지 추가 (타임라인/핵심혁신/모델진화/생태계)
2026-03-07 18:03:34 +09:00
김보곤
8784b81f1b
feat: [china-tech] 중국 AI기술 발전과정 페이지 추가
2026-03-07 17:57:44 +09:00
김보곤
e272f16357
feat: [database] codebridge DB connection 적용 (merge 후 재적용)
...
- 78개 MNG 전용 모델에 $connection = 'codebridge' 재적용
- config/database.php codebridge connection 포함
2026-03-07 11:28:47 +09:00
김보곤
32e9f317d5
Merge branch 'develop' of http://114.203.209.83:3000/SamProject/sam-manage into develop
2026-03-07 11:28:23 +09:00
김보곤
ca50f65124
feat: [database] codebridge DB 분리 - 118개 MNG 전용 테이블 connection 설정
...
- config/database.php에 codebridge connection 추가
- 78개 MNG 전용 모델에 $connection = 'codebridge' 설정
- Admin (15): PM, 로드맵, API Explorer
- Sales (16): 영업파트너, 수수료, 가망고객
- Finance (9): 법인카드, 자금관리, 홈택스
- Barobill (12): 은행/카드 동기화 관리
- Interview (1), ESign (6), Equipment (2)
- AI (3), Audit (3), 기타 (11)
2026-03-07 11:27:18 +09:00
2d820cd395
feat: 제품검사 요청서 template(ID 66) 시더 및 모델 보완
...
- ProductInspectionRequestTemplateSeeder: 변경사유 width null→1fr 수정
- DocumentTemplateSection: description fillable 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-07 01:30:15 +09:00
f5bc4fcb19
feat: [문서인쇄] print.blade.php에 rendered_html 스냅샷 우선 출력 추가
...
- rendered_html 있으면 스냅샷 그대로 출력
- 없으면 기존 템플릿 기반 동적 렌더링 fallback
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-07 01:30:15 +09:00
fe420a3cd7
feat: 문서 스냅샷 출력 + 절곡 전용 렌더링
...
- show.blade.php: rendered_html 우선 출력 로직 추가 (스냅샷 모드)
- show.blade.php: 스냅샷 없으면 기존 동적 렌더링 fallback
- DocumentController: inspectionData 추출하여 view 전달
- partials/bending-inspection-data: inspection_data 스냅샷 기반 렌더링
- partials/bending-worklog: 절곡 작업일지 전용 렌더링
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-07 01:30:15 +09:00
김보곤
2e97b824cd
feat: [hr] 연차촉진 관리 페이지 추가
...
- LeavePromotionController: 대상자 목록 조회 + 일괄 통지 발송
- LeaveService: getPromotionCandidates(), sendPromotionNotices() 메서드 추가
- 통지 현황 추적 (미발송/1차 발송/완료)
- 일괄 선택 + 결재 문서 자동 생성 + 상신
2026-03-07 00:46:10 +09:00
김보곤
617c89a33f
fix: [approval] 연차사용촉진 통지서 Employee 모델 속성 수정
...
- departments->first() → department? (BelongsTo 단수 관계)
- $emp->name → $emp->display_name
- $emp->position → $emp->position_key
- $emp->id → $emp->user_id
- LeaveService에 department eager load 추가
2026-03-07 00:33:36 +09:00
김보곤
2a1e72a15e
feat: [approval] 연차사용촉진 통지서 1차/2차 양식 추가
...
- 1차 통지서: 직원 선택, 연차 현황(발생/사용/잔여), 제출기한, 법적 문구
- 2차 통지서: 직원 선택, 잔여연차, 회사 지정 휴가일(다건), 법적 문구
- create/edit/show 통합 완료
- 미리보기/인쇄 기능 포함
2026-03-07 00:28:58 +09:00
김보곤
fc5af2734a
fix: [approval] 공문서 양식에 샘플 데이터 기본값 추가
2026-03-06 23:53:29 +09:00
김보곤
77c1012d23
feat: [approval] 공문서 양식 추가
...
- 공문서 전용 폼/조회 파셜 추가
- create/edit/show 페이지에 공문서 통합
- 문서번호, 수신, 참조, 제목, 본문, 붙임 입력
- 발신자 정보 테넌트에서 자동 로드
- 미리보기/인쇄 기능 (공문서 형식)
2026-03-06 23:38:55 +09:00
김보곤
7ab410e454
feat: [approval] 견적서 양식 추가
...
- 견적서 전용 폼/조회 파셜 추가
- create/edit/show 페이지에 견적서 통합
- Alpine.js 동적 품목 테이블 (자동 세액 계산)
- 공급자 정보 테넌트에서 자동 로드
- 미리보기/인쇄 기능
2026-03-06 23:21:49 +09:00
김보곤
9f4c79b5d2
feat: [approval] 이사회의사록 양식 추가
...
- 이사회의사록 전용 폼(_board-minutes-form.blade.php) 생성
- 이사회의사록 읽기전용 뷰(_board-minutes-show.blade.php) 생성
- Alpine.js 의안/서명란 동적 추가/삭제 기능
- 테넌트 정보에서 회사명/대표자 자동 채움
- create/edit/show 페이지 통합
- 미리보기/인쇄 기능 포함
- 인사/근태 카테고리에 배치
2026-03-06 23:00:22 +09:00
김보곤
1ccf97ce6b
feat: [approval] 위임장 양식 추가
...
- 위임장 전용 폼(_delegation-form.blade.php) 생성
- 위임장 읽기전용 뷰(_delegation-show.blade.php) 생성
- create/edit/show 페이지에 위임장 통합
- 미리보기/인쇄 기능 포함
- 인사/근태 카테고리에 배치
2026-03-06 22:25:00 +09:00
김보곤
810c1f67dd
feat: [finance] 경조사비 관리 페이지 추가
...
- 거래처 경조사비 관리대장 CRUD (등록/수정/삭제)
- 축의/부조 구분, 부조금(현금/계좌이체/카드), 선물(종류/금액) 관리
- 연도별 필터, 구분별 필터, 거래처/내역 검색
- 통계 카드 (총건수, 총금액, 부조금 합계, 선물 합계, 축의/부조 비율)
- CSV 내보내기
- 라우트: /finance/condolence-expenses
2026-03-06 21:38:41 +09:00
김보곤
466aafdb01
feat: [approvals] 결재선/참조선 2영역 분리 UI
...
- 결재선 에디터를 결재선(결재/합의)과 참조선으로 분리
- 좌측 인원 목록에 '결재' / '참조' 두 버튼 제공
- 결재선: 드래그 정렬, 결재/합의 유형 선택
- 참조선: 칩(태그) 형태로 표시, 상신 즉시 열람 가능
- show 페이지에 참조자 목록 표시 추가
- getStepsData()에서 결재선+참조선 합산하여 기존 API 호환 유지
2026-03-06 21:18:36 +09:00
김보곤
bcd35895d1
fix: [approvals] 사용인감계 create 폼/미리보기 인감비교 형식 반영
...
- create.blade.php: buildSealUsagePreviewHtml 인감비교 레이아웃 적용
- create.blade.php: saveApproval formContent에서 seal_type/remarks 제거, attachment_desc 추가
- _seal-usage-form.blade.php: 인감비교 2열 레이아웃 + 용도/제출처/첨부서류 필드
- _seal-usage-show.blade.php: 읽기전용 인감비교 레이아웃
2026-03-06 21:09:27 +09:00
김보곤
2e4cccc19e
fix: [approvals] 사용인감계 미리보기를 인감비교 형식으로 통일
...
- edit/show 페이지의 buildSealUsagePreviewHtml을 법인인감|사용인감 비교 레이아웃으로 교체
- 구 테이블 형식(인감종류/비고 필드) 제거
- create 페이지와 동일한 확약문구, 일자 포맷, 회사정보 레이아웃 적용
2026-03-06 21:03:15 +09:00
김보곤
c850172f5b
feat: [approvals] 사용인감계 양식 추가
...
- 증명서 카테고리에 사용인감계(seal_usage) 양식 등록
- 입력 폼: 사용일자, 인감종류, 용도, 제출처, 비고
- 회사 정보 자동 로드 (테넌트 정보 기반)
- 미리보기/인쇄 기능 (원본 DOCX 유사 레이아웃)
- create/edit/show 3개 페이지 모두 지원
2026-03-06 20:48:01 +09:00
김보곤
81157a150a
feat: [org-chart] 부서 숨기기 상태 DB 저장
...
- departments.options JSON 컬럼에 orgchart_hidden 플래그 저장
- 숨기기/복원 시 API 호출하여 영구 저장
- 페이지 로드 시 DB에서 숨김 상태 복원
2026-03-06 20:24:51 +09:00
김보곤
8c8fd5f61f
fix: [org-chart] 대표이사 미배치 제외 및 숨긴 부서 연결선 제거
...
- 대표이사/사장/회장 등 임원직 미배치 목록에서 제외
- ceoName과 일치하는 직원도 미배치에서 제외
- 숨긴 부서의 상위 연결선(vertical connector) 제거
- rootDepts getter에서도 숨긴 부서 필터링
2026-03-06 20:20:17 +09:00
김보곤
9fd72e49e2
feat: [org-chart] 부서 숨기기 기능 추가
...
- 부서 헤더 더블클릭 시 숨기기 버튼 표시
- 숨긴 부서와 하위 부서 트리에서 제거, 연결선 자동 조정
- 숨겨진 부서 패널에서 눈 아이콘 클릭으로 복원
2026-03-06 20:15:56 +09:00
김보곤
a12ee886a5
fix: [org-chart] 연결선 'ㄱ'자 형상 수정 및 드롭존 숨김 처리
...
- 수평 연결선 위치: top:12px → top:0 (수직선과 정확히 접합)
- 하위 부서 드롭존: 기본 숨김, 드래그 시에만 표시
2026-03-06 20:09:55 +09:00
김보곤
197e6e6652
fix: [org-chart] 부서 드래그 정렬 버그 수정 및 계층 이동, 직책 표시 개선
...
- SortableJS+Alpine 충돌 해결: 수동 DOM 렌더링으로 전환
- 부서 드래그로 다른 부서 하위로 이동 가능 (parent_id 변경)
- 순환 참조 방지 (자기 자신/하위로 이동 불가)
- 재귀 렌더링으로 무제한 depth 지원
- 직책이 이름 앞에 표시 ("사원 김보곤")
- 빈 하위 드롭존: 드래그 시에만 표시
2026-03-06 20:05:32 +09:00
김보곤
e1fc78ada1
feat: [org-chart] 조직도 최상단 노드 색상 수정 및 부서 드래그 정렬 기능 추가
...
- 최상단 회사 노드: Tailwind gradient → inline style로 변경 (글씨 안보이는 문제 수정)
- 부서 카드 드래그 앤 드롭 정렬: SortableJS handle 기반
- 1단계/2단계 부서 모두 드래그 정렬 가능
- sort_order 변경 즉시 서버 저장 (reorder-depts API)
- 부서 헤더에 드래그 아이콘 추가
2026-03-06 19:50:36 +09:00
김보곤
df72d241fb
feat: [rd] 조직도 클래식 하향식 트리 형태로 개편
...
- 회사(대표이사) → 1단계 부서 → 2단계 → 3단계 하향식 트리 구조
- 부서 간 수직/수평 연결선으로 계층 시각화
- 미배치 직원 패널을 상단 접이식으로 변경
- 부서 카드 클릭 시 하위 부서 펼침/접기
- drag & drop 배치 기능 유지
2026-03-06 19:42:21 +09:00
김보곤
399813a16f
fix: [rd] 조직도 Blade 템플릿 ParseError 수정
...
- @json 내 화살표 함수를 컨트롤러로 이동
- Blade 컴파일러와 배열 구문 충돌 해결
2026-03-06 19:37:06 +09:00
김보곤
774a35e097
feat: [rd] 조직도 관리 화면 추가
...
- SortableJS 기반 drag & drop 부서 배치 UI
- 미배치 직원 패널 + 부서 트리 (3단계 계층 지원)
- 직원 배치/해제 API 엔드포인트
- 실시간 저장 및 인원수 표시
2026-03-06 19:34:52 +09:00
김보곤
ebb10b5c47
fix: [approvals] 근태신청 기간 표시에서 T 제거 (2026-03-12T14:00 → 2026-03-12 14:00)
2026-03-06 17:58:59 +09:00
김보곤
f51427bcce
fix: [approvals] 사직서 주민번호 마스킹 제거
2026-03-06 17:48:39 +09:00
김보곤
862e980809
fix: [approvals] 근태신청 종료일도 종료일시(datetime-local)로 변경
2026-03-06 17:46:38 +09:00
김보곤
adb0cde573
feat: [approvals] 근태신청 시작일에 시간 선택 기능 추가
...
- 근태신청(attendance_request) 선택 시 시작일 input을 datetime-local로 전환
- 라벨도 '시작일' → '시작일시'로 변경
- 휴가/사유서는 기존 date 유지
2026-03-06 17:44:27 +09:00
김보곤
457576f2f5
fix: [approvals] 위촉증명서 PDF 상단 여백 축소 (전체 위치 상향)
2026-03-06 17:40:56 +09:00
김보곤
e963b5a2dc
fix: [approvals] 위촉증명서 주민번호 마스킹 제거
2026-03-06 17:35:44 +09:00
김보곤
25f811bcb6
fix: [approvals] 재직/경력증명서 주민번호 전체 표시 (마스킹 제거)
...
- 재직증명서: 주민번호 뒷자리 ****** 마스킹 제거, 전체 표시
- 경력증명서: 주민등록번호 필드 추가 (폼/조회/미리보기/PDF)
- EmploymentCertService: maskedResident 로직 제거
- CareerCertService: resident_number 반환 추가, PDF 행 추가
2026-03-06 15:58:51 +09:00
김보곤
48613ecc70
feat: [approvals] 구매품의서에 지급방법(법인카드/계좌이체) 선택 추가
2026-03-06 15:38:51 +09:00
김보곤
8f494270d9
feat: [approvals] 비용정산품의서 지급방법을 각 행별 선택으로 변경
...
- 하단 일괄 radio 제거, 각 내역행에 지급방법 select 추가
- tfoot에 법인카드/개인선지출 합계표 추가
- 조회 화면에도 지급방법 컬럼 및 합계표 반영
2026-03-06 15:28:18 +09:00
김보곤
147274ca14
fix: [sidebar] 즐겨찾기 섹션에 메뉴 뱃지 표시 동기화
2026-03-06 15:21:51 +09:00
김보곤
efd8d96156
feat: [sidebar] 사이드바 메뉴 즐겨찾기 기능 추가
...
- MenuFavorite 모델 생성 (menu_favorites 테이블)
- SidebarMenuService에 즐겨찾기 CRUD 메서드 추가
- MenuFavoriteController 생성 (toggle/reorder API)
- 사이드바 상단에 즐겨찾기 섹션 표시
- 메뉴 아이템에 별 아이콘 추가 (hover 시 표시, 토글)
- 최대 10개 제한, 리프 메뉴만 대상
2026-03-06 14:34:27 +09:00
김보곤
ecd813c0b7
fix: [approval] 결재선 인원 목록에서 퇴사자 제외
...
- tenant_user_profiles.employee_status = 'resigned' 필터 추가
- search(), list() 두 엔드포인트 모두 적용
2026-03-06 14:31:48 +09:00
김보곤
4e2893be92
fix: [approvals] 지출품의서 '사용일자' → '지출일자' 라벨 변경
2026-03-06 13:42:48 +09:00
김보곤
94664898a5
feat: [approvals] 양식 선택 2단계 구조 (분류 → 양식)
...
- 1단계: 분류 선택 (일반/인사·근태/증명서/품의/재무)
- 2단계: 해당 분류 내 양식만 필터링하여 표시
- 분류별 아이콘 표시 (📄 📜 📋 💰 👤 )
- edit 화면에서 기존 양식의 분류 자동 선택
2026-03-06 13:18:44 +09:00
김보곤
e78aef47e5
feat: [approvals] 전체 양식 설명 카드 추가
...
- 업무기안서, 휴가신청, 근태신청, 사유서 등 8개 양식 설명 추가
- 재직/경력/위촉증명서, 사직서 포함 전체 14종 양식 설명 완비
- 양식별 고유 아이콘/색상으로 시각적 구분
2026-03-06 13:08:09 +09:00
김보곤
7bbfc9dab5
feat: [approvals] 양식 선택 시 설명 카드 표시
...
- 지출결의서/품의서 5종 선택 시 우측에 설명 카드 노출
- 드롭다운 30% + 설명 카드 70% 레이아웃
- 양식별 아이콘/색상/설명 텍스트 (사전승인 vs 사후보고 등)
- create/edit 동일 적용
2026-03-06 12:54:53 +09:00
김보곤
b35b352f19
feat: [approvals] 품의서 5종 분리 (지출/계약체결/구매/출장/비용정산)
...
- 기존 단일 품의서(purchase_request)를 5가지 전문 양식으로 분리
- pr_expense: 지출품의서 (항목/금액/비고)
- pr_contract: 계약체결품의서 (계약상대방/기간/금액/조건)
- pr_purchase: 구매품의서 (품목/수량/단가/납품정보)
- pr_trip: 출장품의서 (일정표/경비내역)
- pr_settlement: 비용정산품의서 (사용일자/항목/지급방법)
- Alpine.js 단일 컴포넌트로 5종 동적 전환
- show/create/edit 모두 pr_ prefix 코드 자동 감지
2026-03-06 11:40:50 +09:00
김보곤
befba7e2ae
feat: [approvals] 품의서 양식 추가
...
- 품의서(purchase_request) 전용 폼/뷰 partial 추가
- 지출결의서 기반, 지출방법(카드/계좌) 제거, 구매목적 필드 추가
- 테이블: 품명/수량/단가/금액/업체명/비고 (수량×단가 자동계산)
- 희망 납기일, 요청부서/요청자, 첨부파일 지원
- create/edit/show 모두 분기 처리
2026-03-06 11:28:15 +09:00
김보곤
2d327a8300
fix: [approvals] 위촉증명서 테이블 2열 행 텍스트 넘침 수정
...
- table-layout:fixed + colgroup(18%/32%/18%/32%)로 열 너비 고정
- td에 white-space:nowrap 추가하여 텍스트 줄바꿈 방지
- th width 고정값 제거 → colgroup 비율로 제어
- "위촉(재직)기간" → "위촉기간"으로 라벨 축소
- padding 18px→14px, font 16px→15px로 미세 조정
2026-03-06 10:56:07 +09:00
김보곤
6ebaa756a6
fix: [approvals] 사직서 레이아웃 개선 - A4 용지 내 안정된 수직 배분
...
- HTML: @page A4 설정, cert-page wrapper(padding 100px), th/td 16px 18px, font 16px
- PDF: 상단여백 40mm+Ln20, rowHeight 8→12, 본문 10→12pt, 문구 12→14pt, 회사 14→16pt
- 섹션 간격 대폭 확대 (테이블↔문구 30mm, 신청인↔회사 30mm)
- create/show 동일 적용
2026-03-06 10:40:30 +09:00
김보곤
74b37a287e
fix: [approvals] 경력증명서 증명문구 재직/퇴직 분기 처리
...
- 퇴직일 있음: "위 사람은 당사에 재직(근무) 하였음을 증명합니다."
- 퇴직일 없음(현재 재직): "위 사람은 당사에서 재직(근무) 하고 있음을 증명합니다."
- HTML 미리보기(create/show) + PDF 모두 적용
2026-03-06 10:35:42 +09:00
김보곤
4b478b4e05
fix: [approvals] 재직증명서 레이아웃 개선 - A4 용지 내 수직 배분 조정
...
- HTML 미리보기: @page A4 설정, cert-page wrapper, padding/font-size 증가
- PDF(TCPDF): 상단여백 추가, 섹션간격 확대, rowHeight 8→10, 본문 10→11pt
- 증명문구/날짜 12→14pt, 회사명 14→16pt
- create/show 동일 적용
2026-03-06 10:25:55 +09:00
김보곤
71fce456b5
fix: [approvals] 위촉증명서 레이아웃 개선 - 테이블 행 높이/글자크기 증가
...
- HTML 미리보기: th/td padding 16px 18px, font-size 16px, th width 140px
- PDF(TCPDF): rowHeight 8→12, 본문 폰트 10→12, 증명문구/날짜 12→14, 회사명 14→16
- create/show 동일하게 적용
2026-03-06 10:19:04 +09:00
김보곤
5d7eb57578
feat: [document] 양식 디자이너(Block Builder) Phase 2 - 블록 런타임 렌더러
...
- BlockRendererService: view/edit/print 3모드 렌더링 지원
- edit 모드: 폼 필드(input/select/textarea/checkbox) 생성
- view 모드: 읽기 전용 데이터 표시
- print 모드: 인쇄 최적화 레이아웃
- 데이터 바인딩: block.binding → document_data.field_key 매핑
- 체크박스 그룹: 콤마 구분 값으로 저장/복원
- 테이블 셀 편집: tbl_{blockId}_r{row}_c{col} 키로 EAV 저장
- edit.blade.php: 블록 빌더 서식 분기 (blockFormContainer)
- show.blade.php: 블록 빌더 조회 모드 분기
- DocumentController: renderBlockHtml() 메서드 추가
2026-03-06 10:14:39 +09:00
김보곤
27790861c2
fix: [approvals] 위촉증명서 인쇄/PDF A4 레이아웃 수직 배분 개선
...
- 인쇄 CSS: @page A4 적용, 상단 padding 100px로 확대
- HTML 미리보기: 제목/테이블/증명문구/날짜/서명 간격 확대
- PDF: 상단 여백 및 섹션 간 Ln 값 증가 (A4 수직 균등 배분)
2026-03-06 10:08:55 +09:00
김보곤
a34d23fd59
fix: [approvals] 재직증명서 양식에 대표자명/회사주소 누락 수정
...
- 재직증명서 폼/제출/미리보기/PDF에 ceo_name, company_address 추가
- tenants 테이블에서 가져온 회사 정보를 모든 기안 양식에 통일 적용
- 경력/위촉/사직서는 이미 정상 처리, 재직증명서만 누락되어 있었음
2026-03-06 09:19:32 +09:00
김보곤
7ffa8952fe
feat: [approval] 사직서 양식 추가
...
- ResignationService 생성 (정보 조회 + PDF 생성)
- 사직서 전용 폼/조회 파셜 추가
- create/show 블레이드에 사직서 JS 로직 통합
- 컨트롤러 resignationInfo/resignationPdf 메서드 추가
- API 라우트 resignation-info, resignation-pdf 등록
2026-03-06 00:13:17 +09:00
김보곤
0445748b32
feat: [approval] 위촉증명서 기안/조회/PDF 기능 추가
...
- AppointmentCertService: 사원 위촉정보 조회 + TCPDF PDF 생성
- 기안 작성 폼: 사원 선택, 인적/위촉/발급 정보, 미리보기
- 상세 조회: 읽기전용 렌더링 + 미리보기/PDF 다운로드
- API: appointment-cert-info, appointment-cert-pdf 엔드포인트
2026-03-05 23:57:42 +09:00
김보곤
1fef5f16d9
fix: [approval] 전용 폼 선택 시 제목을 항상 양식명으로 설정
2026-03-05 23:46:38 +09:00
김보곤
2bf13cc886
feat: [approval] 경력증명서 기안/조회/PDF 기능 추가
...
- CareerCertService: 사원 경력정보 조회 + TCPDF PDF 생성
- 기안 작성 폼: 사원 선택, 인적/경력/발급 정보, 미리보기
- 상세 조회: 읽기전용 렌더링 + 미리보기/PDF 다운로드
- API: career-cert-info, career-cert-pdf 엔드포인트
2026-03-05 23:41:20 +09:00
김보곤
7a277c6986
feat: [corporate-card] 카드분리 기능 추가
...
- 결제 내역 수정 모달에 카드분리 버튼 추가
- 카드별 배분금액 직접 입력 UI
- 균등 배분 / 비율 배분 / 해제 버튼
- 배분 합계 검증 (일치해야 저장 가능)
- card_splits 데이터 JSON 저장 (기존 items 확장)
- cardDeductions 로직: card_splits 우선 적용, 없으면 기존 비율 배분
2026-03-05 23:19:19 +09:00
김보곤
159a7a9331
fix: [sidebar] 메뉴 검색 결과 텍스트 색상 가독성 개선
2026-03-05 22:11:27 +09:00
김보곤
08cd48405e
fix: [rd] 중대재해처벌법 진단 개요 너비 20% 확대 및 체크리스트 전체 너비 사용
2026-03-05 22:08:24 +09:00
김보곤
cf7ffb69f5
feat: [rd] 중대재해처벌법 실무 점검 대시보드 추가
...
- 6개 카테고리 34개 점검항목 인터랙티브 체크리스트
- Chart.js 도넛/막대 차트 실시간 통계
- React 기반 SPA 대시보드
2026-03-05 21:57:00 +09:00
김보곤
0e34da74eb
feat: [juil] 업무 Workflow 분기형 UI 구현
...
- 입찰 참여 기업 / 수의계약 기업 두 경로로 분기
- A경로: 영업 → 견적서 작성 → 입찰 참여 → 수주/계약
- B경로: 영업 → 견적서 작성 → 수주/계약 (입찰 생략)
- 분기/합류 시각적 연결선으로 표현
- 수주/계약 이후 공통 프로세스로 합류
2026-03-05 21:27:50 +09:00
김보곤
02e03b1044
fix: [juil] 업무 Workflow 프로세스 순서 수정
...
- 영업/수주 → 영업 (수주는 견적 이후로 이동)
- 순서 변경: 영업 → 입찰 참여 → 견적서 작성 → 수주/계약
- 입찰 참여를 선택적 단계로 변경 (소규모/수의계약 시 생략 가능)
- 분기 표시: 대형/공공 vs 소규모/수의계약 경로 안내
2026-03-05 21:18:44 +09:00
김보곤
b19eb8c217
fix: [sidebar] 메뉴 검색 닫기 시 스크롤 위치가 초기화되는 문제 수정
...
- 검색 닫기 시 매칭된 메뉴 위치로 스크롤 유지
- 부모 그룹 자동 펼침으로 해당 메뉴 바로 확인 가능
2026-03-05 21:05:55 +09:00
김보곤
bb2a3f730b
fix: [bank-account] 보유계좌관리 테이블에 테넌트ID 열 추가
2026-03-05 21:01:02 +09:00
김보곤
03f48dfe89
fix: [approval] 지출결의서 출금계좌 목록 테넌트 필터링 수정
...
- BankAccount 글로벌 스코프 의존 → 명시적 tenant_id 필터로 변경
- CorporateCard와 동일한 패턴으로 통일
2026-03-05 20:28:55 +09:00
김보곤
945305b54b
feat: [tenant] 테넌트 편집에 인쇄용 회사 표시명 필드 추가
...
- 테넌트 편집 페이지에 '인쇄용 회사명' 입력 필드 추가
- 저장 시 tenant_settings 테이블에 display_company_name 저장
- 재직증명서 등 문서에서 표시명 우선 적용
2026-03-05 20:20:29 +09:00
김보곤
bfe1167f20
feat: [cm-song] 나레이션 제작 시 자동 저장
...
- 저장 버튼 제거, 제작 완료 시 서버에 자동 저장
- 자동 저장 상태 표시 (저장 중.../자동 저장됨/저장 실패)
- 불필요한 나레이션은 목록에서 삭제하는 방식으로 변경
2026-03-05 20:13:33 +09:00
김보곤
65774ab93d
feat: [juil] 업무 Workflow 상세 모달 추가
...
- 각 워크플로우 단계 클릭 시 상세 업무 모달 표시
- 서브플로우 4단계 (단계별 아코디언 펼침)
- Input/Output, 담당자, 소요시간, TIP 정보 포함
- 미니 서브플로우 다이어그램으로 단계 간 이동 가능
2026-03-05 19:59:48 +09:00
김보곤
ac094c5833
fix: [routes] /settings 리다이렉트 제거 (기존 시스템 설정 route 충돌 방지)
2026-03-05 19:48:17 +09:00
김보곤
3c75b97873
fix: [routes] /settings → /tenant-settings 리다이렉트 추가
2026-03-05 19:44:18 +09:00
김보곤
561883676e
feat: [juil] 업무 Workflow 플로우차트 메뉴 추가
...
- 주일기업 기획 하위 '업무 Workflow' 메뉴 추가
- 11단계 업무처리과정 인터랙티브 플로우차트 구현
- 각 단계 클릭 시 상세정보(담당부서, 필요서류, SAM 연동) 표시
2026-03-05 19:41:26 +09:00
김보곤
21f930a52f
feat: [tenant-settings] 회사 표시명 설정 추가
...
- 테넌트 설정에 '인쇄용 회사명' 입력 필드 추가
- 재직증명서 등 문서 인쇄 시 표시명 우선 적용
- 비워두면 기본 company_name 사용
2026-03-05 19:36:44 +09:00
김보곤
b16eb343a0
refactor: [approval] 재직증명서 DOCX 생성을 제거하고 content JSON 저장 + PDF 다운로드 방식으로 변경
...
- 상신 시 DOCX 생성 API 호출 제거, content JSON만 저장
- show 페이지에 PDF 다운로드 버튼 추가
- TCPDF 기반 PDF 생성 (기존 Pretendard 한글 폰트 활용)
- EmploymentCertService에서 generateDocx/createFileRecord 제거
2026-03-05 19:29:20 +09:00
김보곤
08d7409435
fix: [approval] 재직증명서 DOCX 생성을 PhpWord 직접 생성으로 변경
...
- 외부 템플릿 파일(employment_cert.docx) 의존성 제거
- PhpWord로 테이블/텍스트 직접 생성하여 서버 배포 시 템플릿 누락 문제 해결
2026-03-05 19:17:21 +09:00
김보곤
3f6dfd7251
feat: [approval] 재직증명서 미리보기 및 인쇄 기능 추가
...
- create/edit: 미리보기 버튼 + 모달 (실제 증명서 양식 레이아웃)
- show: 증명서 미리보기 버튼 + 모달 (content 데이터 기반)
- 인쇄 버튼으로 새 창에서 바로 인쇄 가능
2026-03-05 19:13:54 +09:00
김보곤
531e9ec0ca
fix: [tenant] TenantScope에 session selected_tenant_id fallback 추가
...
- users 테이블에 tenant_id 컬럼이 없어 글로벌 스코프 미작동
- session('selected_tenant_id') fallback으로 테넌트 필터링 정상화
- 결재 양식 등 모든 BelongsToTenant 모델에 영향
2026-03-05 19:08:07 +09:00
김보곤
956f57d5d6
feat: [approval] 재직증명서 기안 기능 추가
...
- EmploymentCertService: 사원 정보 조회, DOCX 생성, 파일 레코드 생성
- API 엔드포인트: cert-info/{userId}, generate-cert-docx
- _certificate-form: 인적사항/재직사항/발급정보 입력 폼
- _certificate-show: 재직증명서 읽기전용 표시 파셜
- create/edit/show에 employment_cert 양식 분기 처리
- phpoffice/phpword 패키지 추가
2026-03-05 18:53:42 +09:00
김보곤
d698996e31
feat: [approval] 결재함/참조함/완료함 페이지 사이즈 선택, 체크박스 선택삭제 기능 추가
...
- 기안함과 동일한 UI 패턴 적용
- 페이지당 표시 건수 선택 (15/50/100/200/500)
- 전체선택/개별선택 체크박스 + 선택삭제
- 슈퍼관리자 영구삭제 컬럼 추가
2026-03-05 17:46:11 +09:00
김보곤
e19487683c
feat: [approval] 기안함 페이지 사이즈 선택, 체크박스 선택삭제 기능 추가
...
- 페이지당 표시 건수 선택 (15/50/100/200/500, 기본 15)
- 첫 번째 열 체크박스 추가 (전체선택/개별선택)
- 선택삭제 버튼 및 bulk-delete API 엔드포인트 추가
2026-03-05 17:23:14 +09:00
김보곤
30078e5e86
fix: [hr] 잔여연차 탭에서 영업팀+제외 사원 필터링 적용
2026-03-05 17:08:41 +09:00
김보곤
4247a60aa2
fix: [approval] 영구삭제 File 모델 네임스페이스 오류 수정
...
- App\Models\File → App\Models\Commons\File 수정
2026-03-05 16:57:36 +09:00
김보곤
8100f889f5
feat: [hr] 근태관리 영업팀 및 제외 사원 필터링 적용
...
- 근태 목록/통계/요약/초과근무에서 영업팀+제외 사원 제외
- 근태관리 부서 드롭다운에서 영업팀 제외
- 활성 사원 목록(드롭다운)에서 영업팀+제외 사원 제외
2026-03-05 16:54:21 +09:00
김보곤
8239f03592
fix: [approval] 영구삭제 시 첨부파일/하위문서 정리 및 에러 로깅 추가
...
- 첨부파일(files 테이블) soft delete 처리
- 하위 문서(parent_doc_id) 참조 해제
- DB 트랜잭션으로 원자성 보장
- catch 블록에 report() 추가로 에러 로깅
2026-03-05 16:51:00 +09:00
김보곤
579a6caf39
feat: [payroll] 엑셀 export에 추가공제 항목 동적 열 포함
...
- 전 사원의 deductions JSON에서 고유 항목명 수집
- 개인별 추가공제 항목을 동적 열로 확장 출력
- 추가공제 열 헤더 보라색, 데이터 영역 연보라 배경 구분
- 추가공제 없는 사원은 해당 열 0 표시
2026-03-05 16:28:58 +09:00
김보곤
a112ace148
feat: [approval] 기안함 작성자 열 추가 및 슈퍼관리자 영구삭제 기능
...
- 기안함 테이블에 작성자 열 추가
- 슈퍼관리자: 전체 기안문서 조회 + 영구삭제 버튼
- forceDestroy API 엔드포인트 추가 (연관 Leave/Steps 함께 삭제)
- 기안함에서 휴가신청 시 Leave 자동 생성 로직 추가
2026-03-05 16:21:48 +09:00
김보곤
d59a651fb9
fix: [leave] 휴가신청 탭 기본 종료일을 연말로 변경
...
- 미래 날짜 휴가가 기본 필터에서 제외되는 문제 수정
- date_to 기본값: today → endOfYear
2026-03-05 16:06:16 +09:00
김보곤
404342f750
feat: [dashboard] 비본사/영업팀/소속없음 사용자는 주간 날씨만 표시
...
- HQ(코드브릿지엑스) 테넌트가 아닌 경우 날씨 카드만 노출
- 소속 부서가 없거나 영업팀만 소속인 경우 날씨 카드만 노출
- Quick Actions, 달력, 일정 모달은 본사 직원만 표시
2026-03-05 15:59:59 +09:00
김보곤
5adedb35bb
feat: [approval] 기안함 휴가신청 → 휴가관리 연동
...
- 기안함에서 휴가/근태신청/사유서 양식 선택 시 전용 입력 폼 표시
- 양식코드별 유형 필터링 (leave/attendance_request/reason_report)
- saveApproval()에서 content에 구조화된 데이터 포함
- handleApprovalCompleted()에서 Leave 없을 시 자동 생성
- createLeaveFromApproval() 메서드 추가
2026-03-05 15:57:36 +09:00
김보곤
778961c9f0
feat: [business-card] 명함신청 화면에 제작 일정 안내 배너 추가
...
- 그라데이션 배경 + SVG 장식 배너 디자인
- 신청 마감/제작 소요/배송 기간 일정 안내
- 컬러 아이콘 활용 시각적 구분
2026-03-05 15:27:59 +09:00
김보곤
8671b218d1
fix: [receivable] 거래처별 요약 거래건수에 입금 건수 포함되는 오류 수정
...
- transactionCount가 차변+대변 전체를 카운트하여 실제 매출 건수의 2배로 표시됨
- 차변(매출 발생) 건수만 카운트하도록 수정
2026-03-05 15:26:53 +09:00
김보곤
301afcfc95
feat: [hr] 휴가관리 잔여연차 탭에도 재직상태 필터 추가
2026-03-05 15:22:51 +09:00
김보곤
be35f7ba49
feat: [hr] 연차잔여 탭에 재직상태 필터 추가 (전체/재직자/퇴직자)
...
- 필터 기본값: 재직자 (active + leave)
- 퇴직자 선택 시 resigned만 표시
- 전체 선택 시 모든 상태 표시
2026-03-05 15:16:54 +09:00
김보곤
5f81e5f356
feat: [hr] 사원관리 영업팀 제외 및 강제 제외 기능 추가
...
- 영업팀 포함 부서 사원 기본 제외 (외부직원)
- json_extra.is_excluded 플래그로 강제 제외/복원 토글
- 필터에 '제외 사원 표시' 체크박스 추가
- 제외 사원 시각적 구분 (주황 배경, 제외 뱃지)
2026-03-05 15:16:15 +09:00
김보곤
c255bb001a
feat: [layout] Remix Icon CDN 추가
...
- R&D 페이지에서 ri-* 아이콘이 렌더링되지 않던 문제 해결
2026-03-05 14:59:32 +09:00
김보곤
56ab5d86b6
fix: [cm-song] 나레이션 제작 TTS 오디오 재생 버튼 미표시 수정
...
- TTS try-catch 블록 누락 수정 (JS 구문 오류 해결)
- audioReady display:flex 명시적 설정 (hidden 제거 후 레이아웃 보장)
2026-03-05 14:56:42 +09:00
김보곤
4cf208e2d8
refactor: [rd] CM송 → 나레이션 명칭 변경 + 결과 자동 스크롤
...
- 모든 UI 텍스트 CM송 → 나레이션으로 변경
- 버튼: 나레이션 제작
- 제작 시 결과 패널로 자동 스크롤
- 프롬프트, 다운로드 파일명, 저장 메시지 모두 변경
2026-03-05 14:51:09 +09:00
김보곤
b04b30f076
fix: [rd] CM송 저장 시 tenant_id를 session에서 가져오도록 수정
2026-03-05 14:48:04 +09:00
김보곤
b21f1bc0c0
fix: [rd] CM송 제작 입력 필드 기본값 설정
2026-03-05 14:46:08 +09:00
김보곤
975dd84564
feat: [rd] CM송 길이 슬라이더, 다운로드, 저장/목록 기능 추가
...
- 10~60초 5초 간격 길이 선택 슬라이더
- 음성 파일 WAV 다운로드
- 생성 결과 DB 저장 + 목록/상세/삭제 관리
- CmSong 모델 + tenant 스토리지 연동
2026-03-05 14:37:00 +09:00
김보곤
69f837ef99
feat: [rd] AI CM송 제작 기능 추가
...
- Gemini API 기반 CM송 가사 생성 + TTS 음성 생성
- 연구개발 대시보드에 CM송 제작 카드 추가
- 서버사이드 API 프록시로 API 키 보호
2026-03-05 14:13:41 +09:00
김보곤
3464787a4c
feat: [approval] 반려 이력 관리 기능 추가
...
- rejection_history JSON 컬럼으로 반려 이력 누적 저장
- 재상신 시 반려자, 사유, 일시를 이력에 기록
- 상세 페이지에 반려 이력 섹션 표시 (빨간 테두리)
- 수정 페이지에 이전 반려 이력 표시 (주황 배경)
2026-03-05 13:50:45 +09:00
김보곤
d328055f83
feat: [approval] 기안함/완료함/대기함에 재상신 구분 열 추가
...
- resubmit_count 필드로 재상신 횟수 추적
- 반려 후 재상신 시 카운트 증가
- 보라색 뱃지로 재상신/재상신(N차) 표시
2026-03-05 13:06:30 +09:00
김보곤
121fec76e0
fix: [approval] 완료함 확인 상태 컬럼 추가 및 개별 읽음 처리로 변경
...
- 일괄 읽음 처리 제거 → 상세 페이지 열람 시에만 개별 읽음 처리
- 확인 컬럼 추가: 확인전(주황) / 확인(회색) 뱃지 표시
- 미확인 행 배경 하이라이트(주황) + 제목 볼드 처리
- 기안자 본인 문서만 확인 상태 표시, 타인 문서는 - 표시
2026-03-05 12:53:49 +09:00
8298b4271e
chore: [infra] Slack 알림 채널 분리 — product_infra → deploy_mng
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-05 11:37:43 +09:00
김보곤
d48a38eaf6
feat: [approval] 완료함 미읽음 알림 뱃지 기능 추가
...
- approvals 테이블에 drafter_read_at 컬럼 추가 (API 마이그레이션)
- 승인/반려/전결 완료 시 drafter_read_at = null 설정
- getBadgeCounts()에 completed_unread 카운트 추가
- 사이드메뉴 완료함에 미읽음 뱃지 표시 (주황색)
- 완료함 페이지 진입 시 일괄 읽음 처리
- 상세 페이지 열람 시 개별 읽음 처리
2026-03-05 11:36:58 +09:00
김보곤
c734a23b30
fix: [approval] 결재서명란 테이블 크기 확대 (150% 너비, 130% 글씨)
...
- 셀 패딩 10px→16px, min-width 64px→96px
- 기본 폰트 12px→15px, 도장 32px→42px
- 결재 헤더 13px→16px, 이름/날짜 비례 확대
2026-03-05 11:29:18 +09:00
김보곤
24f8bfeb94
feat: [approval] 결재서명란 테이블 추가 (전통 결재 양식)
...
- 문서 상세 우측 상단에 결재서명란 테이블 배치
- 작성자 + 결재자 컬럼, 직급/이름/서명/날짜 표시
- 승인/반려/보류/전결 상태별 도장 아이콘
- 기존 원형 타임라인 결재 진행 제거, 결재 의견만 유지
2026-03-05 11:23:32 +09:00
김보곤
35080c252c
fix: [approval] 거래처 검색 키보드 방향키 내비게이션 버그 수정
...
- moveDown/moveUp 시 debounce 타이머 클리어하여 search 재실행 방지
2026-03-05 11:16:01 +09:00
김보곤
0e3eb24dd0
fix: [approvals] 완료함에 기안자 본인의 완료 문서도 표시
...
- 기존: 결재자로 처리한 문서만 조회
- 수정: 내가 기안한 완료/반려/회수 문서 + 결재자로 처리한 문서 모두 조회
2026-03-05 11:07:56 +09:00
김보곤
31ac46fe21
fix: [approvals] 거래처 선택 후 드롭다운이 다시 열리는 문제 수정
...
- 선택 시 selected 플래그 설정 + blur로 포커스 해제
- onInput/onFocus에서 selected 상태면 검색 차단
- 다시 직접 타이핑 시 selected 해제되어 검색 재개
2026-03-05 11:05:13 +09:00
fd017a9e34
fix: [document] document.data null 참조 오류 수정
...
- DocumentController: resolveAndBackfillBasicFields에서 data null-safe 처리
- show.blade.php: $docData 변수로 일괄 치환 (클로저 포함 전체 12곳)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-05 11:03:52 +09:00
김보곤
491426fc3e
fix: [approvals] 거래처 검색 드롭다운을 순수 DOM으로 body에 직접 렌더링
...
- x-teleport 대신 document.body.appendChild로 드롭다운 생성
- position:fixed + z-index:99999로 모든 레이아웃 위에 표시
- mousedown으로 blur 전 선택 처리
2026-03-05 10:58:00 +09:00
김보곤
e1299d5f25
fix: [approvals] 거래처 검색 드롭다운이 레이아웃에 가려지는 문제 수정
...
- x-teleport로 body에 렌더링하여 overflow 영향 제거
- position:fixed + getBoundingClientRect로 정확한 위치 계산
2026-03-05 10:55:11 +09:00
김보곤
adc54ffeba
feat: [approvals] 지출결의서 업체명에 거래처 검색 기능 추가
...
- 업체명 input을 거래처 검색 자동완성으로 교체
- 기존 trading_partners 검색 API 활용 (/barobill/tax-invoice/search-partners)
- 거래처명/사업자번호로 검색, 드롭다운에서 선택
- 키보드 탐색 지원 (위/아래 화살표, Enter, Escape)
- vendor_id, vendor_biz_no 추가 저장
2026-03-05 10:52:49 +09:00
김보곤
c653618ecc
fix: [approvals] 불러오기 버튼을 양식 선택 옆으로 이동
2026-03-05 10:46:13 +09:00
김보곤
ac8f16de59
feat: [approvals] 지출결의서 불러오기 기능 추가
...
- 기안 작성 시 '불러오기' 버튼으로 기존 지출결의서 불러오기
- 지출결의서 이력 API 엔드포인트 추가 (/expense-history)
- 선택한 지출결의서의 내용을 새 폼에 복사 (날짜는 오늘로 초기화)
2026-03-05 10:26:55 +09:00
김보곤
0011681683
fix: [approvals] 지출부서 기본값 경리부로 변경, 복지카드 옵션 삭제
2026-03-05 10:20:15 +09:00
김보곤
cfae574a35
fix: [approvals] 결재일자 기본값을 현재일자로 설정
2026-03-05 10:17:44 +09:00
김보곤
b083d1561f
feat: [approvals] 지출결의서 양식 필드 추가
...
- 지출형식에 '자동이체 출금' 라디오버튼 추가
- 세금계산서 종류에 '없음' 옵션 추가
- 작성일자 옆에 '결재일자' 날짜 입력 필드 추가
- 저장/수정 로직(getFormData)에 신규 필드 반영
- 읽기전용 표시(_expense-show)에도 반영
2026-03-05 10:15:35 +09:00
김보곤
7c38790801
fix: [leaves] 휴가관리 삭제/영구삭제 함수 누락 수정
2026-03-04 23:09:14 +09:00
김보곤
8cda77ea17
fix: [approval] 파일 업로드 시 display_name 누락 오류 수정
2026-03-04 21:31:57 +09:00
김보곤
f2556aae61
feat: [approval] 지출형식별 내역 테이블 동적 전환
...
- 법인카드: 지급은행/계좌/예금주 → 결제카드 컬럼 (선택 카드 자동표시)
- 송금: 선택 계좌 정보 자동 채움 (녹색 배경)
- 현금/가지급정산, 복지카드: 기존 수동입력 유지
- getFormData()에서 저장 시 카드/계좌 정보 items에 반영
2026-03-04 21:29:11 +09:00
김보곤
aa1153f652
fix: [approval] 법인카드 tenant_id 세션 조회, 하이패스카드 제외
2026-03-04 21:10:56 +09:00
김보곤
f506f68df5
fix: [approval] 계좌 조회 tenant 중복조건 제거, 관리링크 모달 변경
2026-03-04 21:00:28 +09:00
김보곤
f4c08de0e4
fix: [approval] 카드/계좌 1개일 때 자동 선택
2026-03-04 20:54:03 +09:00
김보곤
bfb7302f9c
fix: [approval] 카드/계좌 관리 페이지 링크 수정
2026-03-04 20:42:26 +09:00
김보곤
8a52cd198f
feat: [approval] 지출결의서 법인카드/송금 계좌 선택 기능
...
- 법인카드 선택 시 카드 목록 패널 슬라이드-다운 표시
- 송금 선택 시 출금 계좌 목록 표시, 대표계좌 자동 선택
- 선택된 카드/계좌 정보를 content JSON에 스냅샷 저장
- 상세 페이지에서 선택된 카드/계좌 정보 읽기전용 표시
2026-03-04 20:29:25 +09:00
김보곤
622fb92a92
feat: [approval] 지출결의서 첨부파일 업로드/다운로드 기능 추가
...
- 첨부파일 업로드 API (GCS 연동, 20MB 제한)
- 첨부파일 삭제/다운로드 API 추가
- 지출결의서 폼에 드래그&드롭 멀티 파일 업로드 UI 추가
- ApprovalService에 linkAttachments 메서드 추가 (is_temp 플래그 관리)
- show 페이지에 첨부파일 목록 표시 및 다운로드 링크
- 지출부서 기본값 '본사', 로그인 사용자 이름 자동입력, 제목 필드 제거
2026-03-04 20:07:49 +09:00
김보곤
b791b7d764
fix: [approval] 기안 작성 폼 가로 폭 제한 제거
...
- max-width: 960px 제거하여 전체 너비 사용
2026-03-04 15:19:00 +09:00
김보곤
e3efc4f2ee
feat: [approval] 지출결의서 전용 폼 UI 추가
...
- Alpine.js 기반 지출결의서 전용 폼 컴포넌트 (_expense-form.blade.php)
- 지출형식/세금계산서 라디오, 내역 테이블(동적 행 추가/삭제), 금액 자동합계
- 양식 code === 'expense' 시 Quill 대신 전용 폼 표시 (create/edit)
- content JSON 구조화 저장, show 페이지 읽기전용 테이블 렌더링
- 기존 Quill 방식 하위 호환 유지
2026-03-04 15:14:18 +09:00
김보곤
1e5ebcb6b1
feat: [approval] 양식 선택 시 제목 자동 설정 기능 추가
...
- applyBodyTemplate에서 제목 필드가 비어있으면 양식명 자동 입력
- create/edit 공통 적용
2026-03-04 14:51:18 +09:00
김보곤
18c44f3a1c
fix: [approval] 결재선 요약 카드 XSS 방어 추가
...
- updateApprovalLineSummary의 innerHTML에 escapeHtml 함수 적용
- user_name, position, stepLabel 출력 시 HTML 이스케이프 처리
2026-03-04 14:21:07 +09:00
김보곤
c314715008
feat: [approval] 결재선 드롭다운 직접 배치 및 양식 본문 자동 채움
...
- 새기안/수정 화면에 결재선 드롭다운 추가 (모달 없이 빠른 선택)
- 양식 선택 시 body_template HTML 자동 채움 (편집기 자동 활성화)
- 모달 닫을 때 외부 드롭다운 동기화
- ApprovalForm 모델 fillable에 body_template 추가
2026-03-04 14:18:54 +09:00
김보곤
c5720e8c16
chore: [eaccount] 디버그 로깅 제거
...
- 무한루프 버그 수정 완료 후 디버그용 로그 정리
2026-03-04 13:27:07 +09:00
김보곤
50bfaf160f
fix: [eaccount] 부분 월 조회 시 무한루프 크래시 수정
...
- splitDateRangeMonthly()에서 endDate가 월 중간인 경우
cursor가 같은 달 1일로 되돌아가 무한루프 발생
- cursor 이동 로직 수정: chunkEnd+1일→월초 대신 chunkStart+1월→월초
- 부분 월, 전체 월, 다중 월 모든 케이스 테스트 완료
2026-03-04 13:26:11 +09:00
김보곤
85410ab760
fix: [eaccount] 500 에러 디버깅용 상세 로깅 추가
...
- getAllAccountsTransactions 단계별 로그 (계좌수, 계좌별 시작/완료)
- transactions 분기점 로그 (bankAccountNum, 기간)
2026-03-04 13:23:05 +09:00
김보곤
c52b73696e
fix: [roadmap] 개발서버 문서 경로 설정 가능하도록 개선
...
- config/roadmap.php 추가 (ROADMAP_DOCS_BASE 환경변수)
- RoadmapController에서 config 기반 경로 사용
- 로컬: base_path('../docs') 기본값 유지
- 서버: .env에서 ROADMAP_DOCS_BASE 설정
2026-03-04 13:21:40 +09:00
김보곤
94674a2dac
fix: [barobill] 전체 바로빌 컨트롤러 WSDL 캐싱 활성화
...
- EcardController, HometaxController, EtaxController
- WSDL_CACHE_NONE → WSDL_CACHE_BOTH (불필요한 WSDL 재다운로드 방지)
2026-03-04 13:15:59 +09:00
김보곤
42650000c4
fix: [eaccount] SOAP 호출 크래시 방지 — WSDL 캐싱 + 소켓 타임아웃 + 진단 로깅
...
- WSDL_CACHE_NONE → WSDL_CACHE_BOTH (매 요청 WSDL 재다운로드 방지)
- default_socket_timeout 60→120초 연장
- register_shutdown_function으로 Fatal Error 감지/로깅
- callSoap에 SOAP 호출 소요시간 로깅 추가
2026-03-04 13:14:40 +09:00
김보곤
46bb3f190b
fix: [eaccount] 운영서버 500 에러 디버깅 — set_time_limit 안전 처리 + 상세 에러 메시지
2026-03-04 13:03:35 +09:00
김보곤
fe892d81ec
fix: [ecard] 기간 검색 stale closure 문제 수정
...
- loadTransactions/loadSplits/loadJournalStatuses에 명시적 날짜 파라미터 추가
- 조회 버튼 클릭 시 현재 날짜 직접 전달
- 편의 버튼(이번달/지난달/D-N월) 클릭 시 자동 검색 트리거
2026-03-04 12:57:42 +09:00
김보곤
35696400a2
fix: [eaccount] 기간 검색 시 stale closure 문제 수정
...
- loadTransactions/loadSplits에 명시적 날짜 파라미터 추가
- 조회 버튼 클릭 시 TransactionTable prop의 최신 날짜 직접 전달
- 편의 버튼(이번달/지난달/D-N월) 클릭 시 자동 검색 트리거
2026-03-04 12:50:49 +09:00
김보곤
c0f606a949
fix: [journal] 계좌 출처 전표 일반전표에서 수정 허용
...
- 카드/세금계산서 출처 → 잠금 유지 (원본에서 수정)
- 계좌(bank_transaction) 출처 → 일반전표에서 수정 허용
- 프론트엔드 UI + 백엔드 update 메서드 동시 수정
2026-03-04 12:42:35 +09:00
김보곤
caf549b2a0
fix: [eaccount] 12월분 조회 타임아웃 오류 수정
...
- PHP set_time_limit(120) 추가 (SOAP 다건 호출 시 기본 30초 초과 방지)
- 프론트엔드 응답 상태/빈 응답 체크 추가 (에러 원인 구체화)
2026-03-04 12:39:36 +09:00
김보곤
2813f31f7b
feat: [china-tech] 유니트리 왕싱싱 5번째 탭 추가
...
- 공급망 혁신 인터랙티브 비교 (기존 vs 유니트리 수직 계열화)
- H1/G1 휴머노이드 제어 알고리즘 탭 전환 UI
- 시장 점유율 도넛 차트, 가격 파괴 현황 Bar 차트
- ut- 접두사로 외부 함수 충돌 방지
2026-03-04 11:16:59 +09:00
김보곤
a6cc2fd2b4
fix: [payables] JournalEntry 모델 use 문 누락 수정
2026-03-04 11:16:58 +09:00
김보곤
1dee6d0de8
fix: [payables] 전표 삭제 500 에러 수정
...
- Accept: application/json 헤더 추가 (HTML 응답 방지)
- findOrFail → find + 수동 404 처리 (에러 메시지 개선)
- try-catch 추가로 상세 에러 메시지 반환
2026-03-04 11:13:14 +09:00
김보곤
2a2b3bb6ee
fix: [payables] 전표 삭제 라우트 순서 수정
...
- journal-entry/{id}를 /{id}보다 위로 이동하여 라우트 충돌 해결
2026-03-04 11:07:39 +09:00
김보곤
1c8d06eb99
feat: [payables] 미지급금관리 전표 삭제 기능 추가
...
- 일반전표 상세 행에 삭제 버튼(휴지통 아이콘) 추가
- DELETE /finance/payables/journal-entry/{id} API 추가
- journal_entry_id 필드를 프론트에 전달하도록 쿼리 수정
- 삭제 후 데이터 자동 새로고침
2026-03-04 11:02:06 +09:00
김보곤
fa0740bb17
feat: [china-tech] DeepSeek 량원펑 4번째 탭 추가
...
- 개요&기원, V3 핵심기술 MoE, 비용효율성, 오픈소스 생태계 4개 내부 탭
- MoE 라우팅 인터랙티브 시뮬레이션 데모
- 훈련 비용 비교 Bar 차트 (DeepSeek vs Llama vs GPT-4)
- 내부 탭 네비게이션 ds- 접두사로 외부 충돌 방지
2026-03-04 11:00:57 +09:00
김보곤
23c6eede44
feat: [journal] 일반전표입력 테이블에 전표번호 컬럼 추가
...
- 날짜 다음에 전표번호(entry_no) 컬럼 추가
- 운영서버에서 전표 식별/비교 용이하도록 개선
2026-03-04 10:47:50 +09:00
김보곤
91cbc9559f
feat: [china-tech] 양즈린 Kimi LLM 기술 리서치 탭 추가
...
- 세 번째 탭: Moonshot AI 양즈린 분석 콘텐츠
- 타임라인 카드 인터랙션, 문맥 길이 바 차트, 투자 도넛 차트
2026-03-04 10:40:02 +09:00
김보곤
f8f9df98ec
fix: [big-tech] Agibot 비전 섹션 가독성 개선
...
- 다크 배경(slate-900) → 밝은 배경(indigo-50)으로 변경
- 텍스트 색상 대비 강화 (slate-200 → slate-700)
- 비전 탭 버튼/콘텐츠 박스 밝은 테마 적용
2026-03-04 10:35:46 +09:00
김보곤
18dcec312f
fix: [big-tech] Agibot 비교 테이블 레이아웃 깨짐 수정
...
- grid-cols-3 균등 분배 → table 요소로 교체 (컬럼 비율 제어)
- 테이블+차트를 flex 레이아웃으로 나란히 배치
- min-width 설정으로 좁은 화면에서 텍스트 줄바꿈 방지
2026-03-04 10:32:31 +09:00
김보곤
5bd74c1094
feat: [ecard] 변경사항 저장 시 기존 분개 금액 자동 갱신
...
- 카드 금액 수정 후 저장 시 기존 분개의 차변/대변 금액도 연동 갱신
- 공제/불공제 유형별 라인 구조 보존하면서 금액만 업데이트
- 기존 계정과목, 적요, 거래처 정보 유지
2026-03-04 10:23:14 +09:00
김보곤
ec6b72937c
feat: [china-tech] Agibot 휴머노이드 로봇 정보 탭 추가
...
- 두 번째 탭: Agibot 원정 A1 분석 콘텐츠
- 탭 전환 시 차트 지연 초기화 (lazy init)
- 비전 단계별 인터랙티브 UI
2026-03-04 10:12:37 +09:00
김보곤
56cbd7ca21
fix: [ecard] 분개 모달에서 수정된 카드 금액 자동 반영
...
- 기존 분개 로드 시 카드 금액과 불일치하면 자동으로 새 금액 기준 라인 갱신
- 불일치 경고를 자동 갱신 안내 메시지로 변경
2026-03-04 10:12:35 +09:00
김보곤
af1bbe05dd
fix: [ecard] 분리/분개 모달에서 수정된 금액 반영
...
- SplitModal의 originalAmount를 effectiveSupplyAmount + effectiveTax로 변경
- 분리 저장 시 백엔드 검증도 수정된 금액 기준으로 전달
2026-03-04 09:42:59 +09:00
김보곤
b4f0329113
feat: [china-tech] 중국의 기술도약 > 5대 신흥빅테크 페이지 추가
...
- BigTechController 생성 (HX-Redirect 패턴 적용)
- 5개 탭 UI 구현 (첫 번째 탭: 천텐스, 캄브리콘 AI 반도체 분석)
- Chart.js 차트 3개 (주가, 매출 비중, 성능 레이더)
2026-03-04 09:30:47 +09:00
김보곤
6f03a8d12c
feat: [hr] 슈퍼관리자 근태/신청 삭제 및 영구삭제 기능 추가
...
- AttendanceService: forceDeleteAttendance 메서드 추가
- LeaveService: deleteLeave(모든 상태), forceDeleteLeave 메서드 추가
- Controller: force 파라미터 + 슈퍼관리자 권한 분기
- 근태 테이블: 슈퍼관리자에게 삭제/영구삭제 버튼 표시
- 신청 테이블: 슈퍼관리자에게 삭제/영구삭제 버튼 표시
2026-03-04 00:15:41 +09:00
김보곤
266040a008
fix: [hr] 통합 근태관리 탭2/3 컨테이너 HTML 추가 및 정렬 지원
2026-03-04 00:06:01 +09:00
김보곤
af325d1cab
fix: [hr] 통합 근태관리 JS API URL에 /api 접두사 추가
2026-03-04 00:02:40 +09:00
김보곤
6cdcc293cf
feat: [hr] 근태등록 + 휴가관리 통합 시스템 구현
...
- Leave 모델 확장: 6개 유형 추가 (출장/재택/외근/조퇴/지각사유서/결근사유서)
- LeaveService: 유형별 결재양식 자동 선택, 유형별 Attendance 반영 분기
- ApprovalService: 콜백 3개 결재양식코드로 확장
- AttendanceIntegratedController: 통합 화면 컨트롤러
- 통합 UI: 근태현황/신청결재/연차잔여 3탭 + 신규 신청 드롭다운
- AttendanceRequest 모델/서비스/컨트롤러/뷰 삭제 (Leave로 일원화)
- AttendanceService: deductLeaveBalance 제거 (Leave 시스템으로 일원화)
2026-03-03 23:50:27 +09:00
김보곤
896446f388
fix: [attendance] 근태관리 승인 탭 제거
...
- 결재관리에서 처리하므로 승인 탭 불필요
- 탭 네비게이션, 승인 탭 콘텐츠, 승인 신청 모달 제거
- 승인/반려 JS 함수 및 탭 전환 로직 제거
2026-03-03 23:04:36 +09:00
김보곤
ff7947d5bd
feat: [leave] 결재선 없을 때 빠른 생성 기능 추가
...
- 결재선 0개 시 경고 메시지 + '결재선 바로 생성' 버튼 표시
- 결재선 있을 때 '새 결재선 추가' 링크 표시
- 빠른 결재선 생성 모달 (z-[60]): 인원 목록 / 결재선 편집 2단 레이아웃
- 부서별 펼침/접기, 이름 검색, SortableJS 드래그 순서 변경
- 저장 후 드롭다운 동적 갱신 + 새 결재선 자동 선택
2026-03-03 22:50:34 +09:00
김보곤
d55e34357d
feat: [leave] 휴가 신청 시 결재선 선택 기능 추가
...
- 휴가 신청 모달에 결재선 드롭다운 + 미리보기 UI 추가
- 선택된 결재선으로 결재 생성 (미선택 시 기본결재선 fallback)
- 휴가 목록에 결재진행 컬럼 추가 (원형 아이콘: ✓승인/✗반려/숫자대기/파랑현재)
- approval.steps.approver eager load 추가
2026-03-03 22:36:05 +09:00
김보곤
4513e51e50
feat: [hr] 사원관리 퇴직자 영구삭제 기능 추가
...
- 슈퍼관리자만 퇴직 상태 사원을 영구삭제 가능
- 관련 첨부파일도 함께 삭제
- DELETE /admin/hr/employees/{id}/force 엔드포인트 추가
2026-03-03 21:46:37 +09:00
김보곤
2277d94cac
fix: [eaccount] 계좌 입출금내역 적요 중복 표시 수정
...
- BankTransaction::cleanSummary() 메서드 추가: 상대계좌예금주명(cast) 중복 제거
- parseTransactionLogs: 적요 표시 시 remark2 중복 제거 적용
- cacheApiTransactions: DB 저장 시에도 중복 제거 적용
- 기존 DB 데이터 45건 정리 완료
2026-03-03 21:11:35 +09:00
김보곤
7885c1581d
fix: [user] 사용자 영구삭제 시 FK 제약 위반 500 에러 수정
...
- users.id를 참조하는 모든 FK를 information_schema에서 동적 조회
- NULLABLE FK → NULL 설정, NOT NULL FK → 관련 행 삭제
- 기존 5개 테이블만 처리하던 것을 전체 FK 대응으로 확장
2026-03-03 19:57:50 +09:00
김보곤
650f0ee3a7
fix: [hr] 사업소득자 임금대장 행 삭제 후 일괄저장 실패 수정
...
- 모든 행 삭제 시 "저장할 데이터가 없습니다" 오류 → 확인 후 서버 전송으로 변경
- 백엔드 validation: required|array → present|array (빈 배열 허용)
- 서버의 orphan draft 자동 삭제 로직이 정상 동작하도록 수정
2026-03-03 19:30:24 +09:00
김보곤
a276e8b2de
fix: [sidebar] 메뉴 검색 시 대분류 그룹도 검색 대상에 포함
...
- 그룹 헤더(대분류/서브그룹)도 검색어 매칭 대상으로 추가
- 그룹 헤더 매칭 시 하위 전체 메뉴 표시 + 하이라이트 적용
2026-03-03 16:08:02 +09:00
김보곤
a605e62360
feat: [ai-quotation] 제조 견적서 자동 생성 기능 추가
...
- AI 2단계 분석: 고객 인터뷰 → 요구사항 추출 → 견적 산출
- 모델 확장: AiQuotation(모드/견적번호), AiQuotationItem(규격/단가/금액)
- AiQuotePriceTable 모델 신규 생성
- Create 페이지: 모듈/제조 모드 탭, 제품 카테고리, 고객 정보 입력
- Show 페이지: 제조 모드 분기 렌더링 (품목/금액/고객정보)
- Edit 페이지: 품목 인라인 편집, 할인/부가세/조건 입력
- Document: 한국 표준 제조업 견적서 양식 템플릿
- Controller/Route: update 엔드포인트, edit 라우트 추가
2026-03-03 15:57:31 +09:00
김보곤
1b50e3bb2f
fix: [journal] 카드거래 수정 금액이 일반전표에 미반영되는 문제 수정
...
- 통합 목록 출금액: approvalAmount(원본) → supplyAmount+taxAmount(수정값) 사용
- 카드 분개 모달: 동일하게 수정된 금액 사용
- 외국결제 수수료 포함 금액 등 사용자 수정값이 정상 반영됨
2026-03-03 15:13:05 +09:00
김보곤
98e086a6e2
feat: [journal] 카드/은행 출처 전표 읽기 전용 적용
...
- update() 메서드에 source_type 가드 추가 (403 반환)
- 통합 목록에서 카드/은행 분개완료 행에 잠금 아이콘 표시
- handleEditEntry에 출처 전표 방어 가드 추가
- show() 응답에 source_type 필드 추가
2026-03-03 14:54:20 +09:00
김보곤
bd42adad55
feat: [hr] 사업소득자 임금대장 동적 행 입력 리디자인
...
- earner 고정 행 → 동적 행 추가/삭제 구조로 변경
- 상호/성명 datalist 콤보박스 (드롭다운 선택 + 직접 입력)
- display_name/business_reg_number 컬럼 직접 저장
- bulkSave: payment_id 기반 upsert + 미제출 draft 자동 삭제
- confirmed/paid 행 수정/삭제 불가 유지
- 엑셀 내보내기 display_name 직접 사용으로 단순화
2026-03-03 14:20:44 +09:00
김보곤
9b989c5190
Merge branch 'develop' of http://114.203.209.83:3000/SamProject/sam-manage into develop
2026-03-03 11:35:17 +09:00
김보곤
ec6e33699e
fix: [payroll] 급여목록 정렬 기준을 입사일 오름차순으로 변경
2026-03-03 11:35:08 +09:00
17ba5c8dd0
fix: [deploy] Google Storage credentials 심링크 추가
...
- 배포 시 shared/storage/credentials → storage/credentials 심링크 생성
- Google Cloud 서비스 계정 JSON 파일 접근 보장
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-03 10:21:06 +09:00
b1914434d8
fix: [deploy] 배포 시 .env 권한 640 보장 추가
...
- Production 배포 스크립트에 chmod 640 추가
- vi 편집으로 인한 .env 권한 변경(600) 방지
- 2026-03-03 장애 재발 방지 (PHP-FPM이 .env 읽기 실패 → 500)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-03 09:51:08 +09:00
김보곤
193cd2666f
chore: [ai] Gemini 모델 gemini-2.0-flash → gemini-2.5-flash 마이그레이션
...
- config/services.php fallback 기본값 변경
- AiConfig DEFAULT_MODELS 상수 + getActiveGemini() fallback 변경
- NotionService fallback 변경
- AI 설정 관리 UI placeholder/기본값 변경
- Google Cloud AI 가이드 서비스 현황 모델명 변경
- 환경변수 관리 아카데미 예시 변경
2026-03-03 08:09:06 +09:00
김보곤
3c37050b30
feat: [approval] 결재관리 삭제 권한 기능 추가
...
- 관리자/슈퍼관리자 모든 상태 결재 문서 삭제 가능
- 일반 사용자는 기존대로 draft + 본인 기안만 삭제
- 진행 중 문서 삭제 시 휴가 연동 취소 처리
- 삭제 API 403 권한 검증 추가
- 상세 페이지 삭제 버튼 + 2중 확인 다이얼로그
2026-03-03 07:35:59 +09:00
김보곤
e5ab358a76
feat: [ai-quotation] 견적서 5종 템플릿 선택 시스템 추가
...
- classic(클래식), modern(모던), blue(블루), dark(다크), colorful(컬러풀) 5종
- 문서 상단 미리보기 카드 클릭으로 즉시 디자인 전환
- URL 쿼리 파라미터 ?template=xxx 방식, 기본값 classic
- 인쇄/PDF 시 선택 UI 자동 숨김 (no-print)
- 기존 디자인은 classic 템플릿으로 100% 보존
2026-03-02 19:27:36 +09:00
김보곤
f55e576277
fix: [ai-quotation] 견적서 대표이사명 수정 (이의찬)
2026-03-02 19:13:59 +09:00
김보곤
eb45fc608e
feat: [ai-quotation] 제조업 표준 견적서 문서 뷰 추가
...
- 인쇄 전용 standalone 레이아웃 (layouts/document.blade.php) 생성
- 한국 제조업 표준 견적서 양식 문서 뷰 생성 (A4 인쇄/PDF 최적화)
- RdController에 documentQuotation 메서드 추가
- /rd/ai-quotation/{id}/document 라우트 등록
- 상세 페이지에 "견적서 보기" 버튼 추가 (완료 상태만 표시)
- 한글 금액 변환, VAT 자동 계산, 비고란 포함
2026-03-02 19:11:33 +09:00
김보곤
896c84475c
feat: [credit] 신용평가 개발문서 페이지 추가
...
- 쿠콘(KooCon) API 연동 가이드 10개 섹션 구성
- 라우트, 컨트롤러, Blade 뷰 추가
2026-03-02 18:39:46 +09:00
김보곤
0aa432eb39
feat: [rd] AI 견적 생성 폼에 샘플 인터뷰 자동입력 버튼 추가
...
- 번개 아이콘 버튼 클릭 시 제목 + 인터뷰 내용 샘플 자동 입력
- 데모/설명용 기능
2026-03-02 18:12:16 +09:00
김보곤
2803e4a53a
fix: [rd] API 호출 URL /admin → /api/admin 수정
...
- index, create, show 뷰의 fetch URL을 /api/admin/rd/... 로 수정
- api.php 라우트는 api/ prefix가 자동 적용됨
2026-03-02 18:03:08 +09:00
김보곤
5c98c0be93
feat: [barobill] 회원사 필수 설정 가이드 섹션 추가
...
- 파트너사/회원사 구조 설명 (코드브릿지엑스 → 회원사)
- 6단계 설정 가이드: 회원사등록, 공동인증서, 계좌, 카드, 서비스활성화, 충전
- 회원사가 바로빌 사이트에서 직접 수행해야 할 작업 명시
- 체크리스트 포함, 기존 섹션 번호 2~10 → 3~11로 조정
2026-03-02 17:52:29 +09:00
김보곤
a3afa1a405
feat: [rd] AI 견적 엔진 Phase 1 구현
...
- 모델 3개: AiQuotationModule, AiQuotation, AiQuotationItem
- AiQuotationService: Gemini/Claude 2단계 AI 파이프라인
- RdController: R&D 대시보드 + AI 견적 Blade 화면
- AiQuotationController: AI 견적 API (생성/목록/상세/재분석)
- Blade 뷰: 대시보드, 목록, 생성, 상세, HTMX 테이블
- 라우트: /rd/* (web), /admin/rd/* (api)
2026-03-02 17:43:47 +09:00
김보곤
1299543f4d
feat: [barobill] 바로빌 개발문서 페이지 추가
...
- 라우트, 컨트롤러, Blade 뷰 생성
- 10개 섹션: 서비스 소개, 과금 구조, 시스템 구조, 트러블슈팅 등
- 기존 카카오톡 가이드 스타일 준용
2026-03-02 17:39:52 +09:00
김보곤
b927612c58
fix: [menu-sync] 대분류 메뉴 push 시 null URL validation 오류 수정
...
- import validation에서 url 필드를 required → nullable로 변경
- push/getChildrenData에서 null URL을 빈 문자열로 대체
- importMenu에서 빈 URL을 null로 저장
- push 에러 응답에 원격 서버 에러 메시지 포함
2026-03-02 16:35:10 +09:00
김보곤
60ec2408ca
fix: [roadmap] 로드맵 문서 마크다운 렌더링 스타일 개선
...
- Tailwind prose 클래스 → 커스텀 .markdown-body CSS로 변경
- 테이블 보더, 코드 블록, 제목 계층, 인용문 스타일 추가
2026-03-02 16:19:20 +09:00
김보곤
64b005b697
feat: [roadmap] AI 견적서 자동생성 엔진 개발 계획 문서 추가
2026-03-02 16:14:23 +09:00
김보곤
61df5f104a
feat: [roadmap] 로드맵 문서 페이지 추가
...
- sam/docs 중장기 계획 문서를 렌더링하는 전용 페이지
- 비전&전략, 프로젝트 런칭, 제품 설계, 시스템 개요 4개 카테고리
- Markdown → HTML 변환 (Str::markdown)
- /roadmap/documents 목록 + /roadmap/documents/{slug} 상세
2026-03-02 16:02:51 +09:00
김보곤
f3f1416004
feat: [roadmap] 중장기 계획 메뉴 및 전용 페이지 개발
...
- 모델: AdminRoadmapPlan, AdminRoadmapMilestone
- 서비스: RoadmapPlanService, RoadmapMilestoneService
- FormRequest: Store/Update Plan/Milestone 4개
- 컨트롤러: Blade(RoadmapController), API(Plan/Milestone) 3개
- 라우트: web.php, api.php에 roadmap 라우트 추가
- Blade 뷰: 대시보드, 목록, 생성, 수정, 상세, 파셜 테이블 6개
- HTMX 기반 필터링/페이지네이션, 마일스톤 인라인 추가/토글
2026-03-02 15:50:20 +09:00
김보곤
458e5f890a
feat: [google-cloud] AI 활용 가이드 PPTX 다운로드 기능 추가
...
- AiGuideController에 download() 메서드 추가
- AI 활용 가이드 PPTX 다운로드 라우트 추가
- 뷰에 PPTX 다운로드 버튼 추가
- 7장 슬라이드 HTML → PPTX 변환 파일 포함
2026-03-02 15:15:06 +09:00
김보곤
411f4a596c
feat: [google-cloud] AI 활용 가이드 페이지 추가
...
- AiGuideController 생성 (HX-Redirect 패턴)
- STT, Speaker Diarization, 회의록, 음성녹음, Gemini, GCS, AI Config 정보 페이지
- Google Cloud 메뉴 하위에 라우트 등록
2026-03-02 14:48:42 +09:00
김보곤
1faa23ebc5
fix: [menu] 메뉴 관리 페이지 기본 행 표시 개수를 500으로 변경
2026-03-02 14:30:54 +09:00
김보곤
5e592b2f3d
feat: [google-cloud] Gemini 2.0 모델 2026.06.01 중단 안내 추가
...
- 모델 테이블에 중단 예정 뱃지 및 취소선 표시
- 마이그레이션 가이드 경고 박스 추가 (2.0→2.5 권장)
- 바 차트에서 중단 모델 흐림(opacity) 처리
2026-03-02 14:14:53 +09:00
김보곤
c3284a6dca
feat: [google-cloud] Google Cloud 메뉴 섹션 추가
...
- Workspace 정책: 계정관리, 2단계인증, 감사로그, 데이터보존
- Workspace 요금: 4티어 비교, 기능비교, 예상비용, 인상히스토리
- Cloud API 요금: Gemini 모델 단가, 추가기능, Storage, 비용시뮬레이션
- 컨트롤러 3개 + 뷰 3개 + 라우트 그룹 추가
2026-03-02 14:07:17 +09:00
김보곤
f051dadabb
feat: [claude-code] 활용방안 PPTX 다운로드 기능 추가
...
- UsagePlanController에 download 메서드 추가
- 라우트에 /usage-plan/download 추가
- 뷰 헤더에 PPTX 다운로드 버튼 추가
- 7장 슬라이드 PPTX 파일 배치
2026-03-02 13:24:43 +09:00
김보곤
1e96a1287c
feat: [claude-code] SAM 활용방안 페이지 추가
...
- 컨트롤러, 뷰, 라우트 생성
- 7개 섹션: 핵심요약, Before/After, 프로세스플로우, 80%공통화론, 멀티테넌시, AI자동화, 로드맵
- HX-Redirect 패턴 적용
2026-03-02 12:32:47 +09:00
김보곤
33a0b43d6d
feat: [claude-code] Cowork 소개 페이지 추가
...
- Claude Code vs Cowork 핵심 차이 비교 테이블
- SAM 직무별 활용 시나리오 (영업/관리/생산)
- 업무 유형별 도구 선택 가이드
- Cowork 시작 3단계 안내
2026-03-02 11:40:04 +09:00
김보곤
f5ed38abbb
feat: [claude-code] 요금정책 PPTX 다운로드 기능 추가
...
- 7페이지 상세 PPTX 생성 (표지/API단가/비용비교/팀비용/상세비교/전환가이드/결론)
- PricingController download 메서드 추가
- 페이지 헤더에 PPTX 다운로드 버튼 추가
- .gitignore에 public/downloads/*.pptx 예외 추가
2026-03-02 11:25:22 +09:00
김보곤
8413dd1c88
feat: [claude-code] 요금정책 비교 분석 페이지 추가
...
- API 토큰 단가 테이블 (Sonnet/Opus/Haiku)
- 사용 강도별 Max 20x vs Max 5x+API 비용 비교 (시각적 바 차트)
- 5인 팀 기준 총 비용 비교 (현재/Max/Team Premium)
- 최종 결론: Team Premium 연간 결제 추천
2026-03-02 11:07:47 +09:00
김보곤
5863e3148b
fix: [claude-code] body_html_ko 미존재 시 fallback 처리
2026-03-02 10:57:05 +09:00
김보곤
f152d1537f
feat: [claude-code] 뉴스 페이지 한/영 토글 기능 추가
...
- Google Translate API 연동으로 릴리즈 노트 한국어 자동 번역
- 코드 블록 보호 처리 (번역 대상에서 제외)
- 긴 텍스트 단락 분할 번역 지원
- Alpine.js 한국어/English 토글 버튼 (localStorage 저장)
- 기본값: 한국어
2026-03-02 10:55:32 +09:00
김보곤
5a0bb45b51
feat: [claude-code] Claude Code 뉴스 페이지 추가
...
- GitHub Releases API 연동 서비스 (1시간 캐싱)
- 뉴스 컨트롤러 + Blade 뷰 (릴리즈 카드 목록)
- /claude-code/news 라우트 그룹 등록
2026-03-02 10:41:50 +09:00
김보곤
b2226341ee
fix: [interview] 대분류 하위 '+ 중분류 추가' 버튼 개선
...
- 기존 '+' 단일문자 → '+ 중분류 추가' 텍스트 버튼으로 변경
- children 목록 하단에 항상 표시되도록 위치 이동
2026-02-28 21:33:47 +09:00
김보곤
2a45b6bfe8
feat: [interview] 카테고리 계층 구조(대분류/중분류) 지원
...
- InterviewCategory 모델에 parent/children 관계 추가
- Service: getTree, getProjectTree 루트+children eager loading
- Service: createCategory에 parent_id 지원
- Service: cloneMaster 2단계 계층 복제
- Controller: storeCategory validation에 parent_id 추가
- UI: CategorySidebar/DomainSidebar 트리 뷰 렌더링
- UI: findCategory 헬퍼로 트리 내 카테고리 검색
2026-02-28 21:23:30 +09:00
김보곤
9823945807
feat: [payroll] 전표 생성 도움말 모달 추가
...
- 전표 생성 버튼 옆에 i 도움말 아이콘 버튼 추가
- 분개 구조, 전표일자/번호, 주의사항, 수정/삭제 안내 포함
2026-02-28 20:31:15 +09:00
김보곤
baf1fb5ddf
fix: [document-templates] 양식 디자이너 미리보기 렌더러 분기 처리
...
- builder_type=block 템플릿은 buildBlockPreviewHtml() 사용
- 레거시 템플릿은 기존 buildDocumentPreviewHtml() 유지
2026-02-28 20:16:37 +09:00
김보곤
18fb810f81
fix: [document] '블록 빌더' → '양식 디자이너' 명칭 변경
2026-02-28 20:11:45 +09:00
김보곤
74400cd6e2
feat: [payroll] 급여 일반전표 자동 생성 기능
...
- PayrollController에 generateJournalEntry() 메서드 추가
- 해당월 급여 합산 → 분개 행 자동 구성 (차변 801 급여, 대변 207/205)
- 중복 체크 (source_type=payroll, source_key=payroll-YYYY-MM)
- 0원 항목 행 제외, 차대 균형 검증
- 급여관리 페이지에 전표 생성 버튼 추가
2026-02-28 20:05:58 +09:00
김보곤
7ba438b41b
feat: [interview] 인터뷰 시나리오 고도화 Phase 1 구현
...
- InterviewProject/Attachment/Knowledge 모델 3개 신규
- 기존 모델 확장 (Question, Answer, Session, Category)
- 서비스 확장: 프로젝트 CRUD, 첨부파일, 지식 관리
- 컨트롤러 확장: 프로젝트/첨부/지식 API 엔드포인트
- 라우트 20개 추가 (프로젝트, 첨부, 지식)
- InterviewQuestionMasterSeeder: 8개 도메인 80개 질문
- UI 확장: 프로젝트 모드/기존 모드 전환
- 프로젝트 선택 바, 상태 바, 도메인 사이드바
- 탭 구조 (질문편집/인터뷰/첨부파일/추출지식)
- 구조화 답변 입력 (테이블, 수식, 다중선택 등)
- 첨부파일 업로드/관리
- 지식 수동 추가/검증/필터링
2026-02-28 20:02:47 +09:00
김보곤
86cc18020a
fix: [document] 블록 빌더 Blade 이스케이프 오류 수정
...
- {{today}} → @{{today}} (Blade가 PHP 상수로 해석하는 문제)
2026-02-28 19:54:34 +09:00
김보곤
8b55bef385
feat: [document] 범용 블록 빌더 Phase 1 구현
...
- block-editor.blade.php: 3패널 UI (Palette + Canvas + Properties)
- Alpine.js blockEditor() 컴포넌트 (CRUD, Undo/Redo, SortableJS)
- 기본 Block 6종: heading, paragraph, table, columns, divider, spacer
- 폼 필드 Block 7종: text, number, date, select, checkbox, textarea, signature
- BlockRendererService: JSON → HTML 렌더링 서비스
- 컨트롤러 분기: builder_type = 'block' → 블록 빌더 뷰
- 라우트 추가: block-create, block-edit
- API store/update에 schema JSON 처리 추가
- index 페이지에 블록 빌더 진입 버튼 추가
- 목록에 builder_type 뱃지 표시
2026-02-28 19:31:57 +09:00
김보곤
2aea6962ef
feat: [payroll] 급여계산 도움말 모달 추가
...
- 급여관리 제목 옆 i 아이콘 버튼 추가
- 모달 내용: 전체 흐름, 지급항목, 4대보험, 세금, 실수령액, 예시, 상태 흐름, 팁
- 현재 설정된 요율/상하한 값을 동적으로 반영
2026-02-28 18:30:39 +09:00
김보곤
3443fd7b05
feat: [payroll] 급여명세서 엑셀 내보내기 CSV → XLSX 변환
...
- 제목행 병합 + 14pt 굵게 가운데 정렬
- 남색(#1F3864) 헤더 + 흰색 글씨 + wrapText
- 금액 열(D~O) #,##0 천단위 서식 + 오른쪽 정렬
- 합계행 SUM 수식 + 회색 배경 + 굵게
- 빈 행 포함 최소 10행까지 전체 테두리
- 파일명: 급여명세서_{year}년{month}월_{Ymd}.xlsx
2026-02-28 18:24:33 +09:00
김보곤
cb0f72e36c
fix: [barobill] SVG viewBox/path 속성 이중 인코딩 오류 수정
...
- " 로 이스케이프된 SVG HTML을 component prop에 직접 전달하면
sanitizeComponentAttribute()가 이중 인코딩하여 SVG 파서 에러 발생
- @php 블록에서 변수로 정의 후 prop 전달 방식으로 변경
- 영향 파일: settings, etax, hometax 바로빌 페이지 3개
2026-02-28 17:51:54 +09:00
김보곤
d697f80340
fix: [hr] 사업소득자 임금대장 버튼 라벨 CSV→엑셀 내보내기 변경
2026-02-28 17:47:56 +09:00
김보곤
c36539f2bd
fix: [hr] XLSX 내보내기 Color 객체 → argb 배열로 수정
...
- applyFromArray()에 Color 객체 직접 전달 시 TypeError 발생
- font/fill/border color를 ['argb' => 'FF...'] 배열 형태로 변경
2026-02-28 17:43:14 +09:00
김보곤
f372791ba9
feat: [hr] 사업소득자 임금대장 CSV→XLSX 내보내기 변환
...
- PhpSpreadsheet로 스타일링된 XLSX 생성 (제목, 남색 헤더, 테두리)
- 금액 열 천 단위 구분(#,##0), 지급일자 빨간색
- earner 프로필 일괄 로드로 사업자등록번호/주민번호 표시
2026-02-28 17:13:01 +09:00
김보곤
90d7639884
docs: [equipment] 설비관리 도움말 업데이트 - 관리자 정/부, QR 모바일 점검, 다주기 점검 내용 추가
...
- 담당자 → 관리자 정/부 용어 전체 변경
- QR 코드 생성/다운로드/인쇄 안내 추가
- QR 모바일 점검 섹션 신규 추가 (흐름, 특징, 팁)
- 6단계 점검 주기(일일~반년) 안내 추가
- 휴일/주말 일일점검 제한 설명 추가
- 점검 데이터 초기화 안내 추가
- FAQ 2건 추가 (QR 모바일 점검, 데이터 초기화)
2026-02-28 16:23:03 +09:00
김보곤
744acca395
feat: [equipment] 설비 목록에 관리자 정/부 열 분리 및 QR 코드 열 추가
...
- 담당자 단일 열 → 관리자 정, 관리자 부 2열로 분리
- QR 코드 아이콘 열 추가 (클릭 시 모달로 QR 표시)
- QR PNG 다운로드 기능 포함
2026-02-28 16:17:27 +09:00
김보곤
9f0e038ffe
fix: [mobile] 모바일 점검 페이지 담당자 → 관리자 정/부 라벨 변경
...
- 담당: → 관리자 정: 으로 변경
- 관리자 부 표시 추가
2026-02-28 16:15:04 +09:00
김보곤
272a4842e8
fix: [leaves] 최종결재자 조회 시 reorder() 적용
...
- steps() 관계의 기본 orderBy(ASC)와 충돌 방지
- reorder('step_order', 'desc')로 마지막 승인자 정확히 조회
2026-02-28 16:03:32 +09:00
김보곤
05845b5311
fix: [equipment] 담당자 → 관리자 정/부 라벨 변경 및 sub_manager_id 저장 버그 수정
...
- 설비 등록/수정 폼 라벨: 정 담당자 → 관리자 정, 부 담당자 → 관리자 부
- 상세보기(basic-info) 라벨 동일 변경
- StoreEquipmentRequest, UpdateEquipmentRequest에 sub_manager_id 검증 규칙 추가
- 기존에 sub_manager_id가 validated()에서 누락되어 저장되지 않던 버그 수정
2026-02-28 16:03:00 +09:00
김보곤
4d375d2725
fix: [leaves] 결재 승인 시 최종결재자 ID 조회 수정
...
- $approval->steps (캐시된 컬렉션) → $approval->steps() (fresh 쿼리)로 변경
- 트랜잭션 내에서 업데이트된 step이 정확히 반영되도록 수정
2026-02-28 16:01:36 +09:00
김보곤
50c0c9ce50
feat: [leaves] 휴가신청 → 전자결재 자동 연동
...
- LeaveService: 휴가 신청 시 결재 자동 생성+상신
- LeaveService: approveByApproval/rejectByApproval 메서드 추가
- LeaveService: deletePendingLeave 시 연결된 결재 자동 취소
- ApprovalService: 승인/반려/회수/전결 시 휴가 상태 자동 동기화
- Leave 모델: approval_id, approval() 관계 추가
- UI: pending 휴가에 결재 상세 링크 추가, 승인/반려 버튼 제거
2026-02-28 15:54:41 +09:00
김보곤
9a69af98f0
fix: [equipment] 휴일/주말 차단을 일일 점검에만 적용
...
- 주간~반년 점검은 열이 기간을 대표하므로 비근무일 차단 제거
- 그리드 헤더, 셀 클릭, 판정 계산 모두 $isDaily 조건 추가
- toggleDetail/setResult 서버 차단도 daily에서만 적용
2026-02-28 15:50:36 +09:00
김보곤
3d8606f4d5
feat: [equipment] 점검 데이터 초기화 기능 추가
...
- 개별 설비 초기화: 장비명 하단 초기화 아이콘 클릭 → 확인 → 해당 월 점검 삭제
- 전체 초기화: 조회 버튼 옆 '전체 초기화' 버튼 → 확인 → 전체 설비 점검 삭제
- DELETE /inspections/reset (개별), /inspections/reset-all (전체) API
- canInspect 권한 체크 적용 (개별 초기화)
- SweetAlert 확인 모달로 실수 방지
2026-02-28 15:46:01 +09:00
김보곤
bdc1b2d3e0
feat: [approval] 결재 알림 드롭다운을 모달로 전환 + 로그인 시 자동 팝업
...
- 380px 드롭다운 → 560px 전체 화면 모달로 확장
- 로그인 시 미처리 결재 있으면 자동 팝업 (세션당 1회)
- ESC키/backdrop 클릭으로 모달 닫기 지원
- 모달 내 결재 카드: 긴급뱃지, 기안자, 양식, 날짜, 결재하기 링크
- 60초 뱃지 갱신 유지, per_page 10→20으로 확대
2026-02-28 15:33:05 +09:00
김보곤
775b654a26
fix: [equipment] 점검표 휴일 표시 및 주간 1주 저장 버그 수정
...
- 점검 그리드에 holidays 테이블 기반 휴일 표시 (빨간 배경)
- 휴일/주말 셀 클릭 차단 (UI + 서버 양쪽)
- 자동 판정에서 휴일 제외 (기존 주말만 제외 → 주말+휴일)
- 주간 1주 열 저장 누락 수정 (resolvePeriod에서 isoWeekYear 사용)
- toggleDetail, setResult에 비근무일 검증 추가
- 범례에 '휴일/주말 (점검 불가)' 안내 추가
2026-02-28 15:29:56 +09:00
김보곤
7568fabc18
fix: [approvals] 기안함 뱃지를 진행중 상태 건수로 변경
...
- 기존: draft(임시저장) 상태 건수 표시
- 변경: pending(진행중) 상태의 내 기안 건수 표시
2026-02-28 15:23:16 +09:00
김보곤
472a1e5c54
fix: [approvals] 뱃지 데이터 View::share 덮어쓰기 문제 수정
...
- AppServiceProvider와 ViewServiceProvider에서 각각 View::share 호출하여 덮어쓰기 발생
- ViewServiceProvider 한 곳에서 영업+결재 뱃지를 통합 관리하도록 수정
- AppServiceProvider에서 뱃지 로직 제거
2026-02-28 15:21:16 +09:00
김보곤
19eea07041
feat: [equipment] 설비 QR 코드 점검 시스템 추가
...
- 설비 상세 basic-info 탭에 QR 코드 표시 (qrcode.js CDN)
- QR PNG 다운로드/인쇄 기능
- 모바일 전용 레이아웃 (layouts/mobile.blade.php)
- 모바일 점검 페이지 (/m/inspect/{id})
- setResult API (PATCH /inspections/set-result)
- 4버튼 직접 결과 설정 (양호/이상/수리/취소)
- 전체 양호 일괄 처리
- 주기 탭 전환 (활성 주기만 표시)
2026-02-28 15:17:40 +09:00
김보곤
fa086147de
feat: [approvals] 사이드바 결재 뱃지 색상 함별 차별화
...
- 결재함: 빨간색(#ef4444), 기안함: 파란색(#3b82f6), 참조함: 초록색(#10b981)
- 뱃지 데이터에 color 속성 추가, menu-item에서 inline style로 적용
2026-02-28 15:16:54 +09:00
김보곤
7a1b502f5c
fix: [approvals] 사이드바 뱃지 Blade 컴포넌트 스코프 격리 문제 수정
...
- View::with() → View::share()로 변경하여 <x-sidebar.menu-item> 컴포넌트에서 $menuBadges 접근 가능하도록 수정
2026-02-28 15:13:19 +09:00
김보곤
a844dcb0ac
feat: [approvals] 결재 알림 뱃지 시스템 구현
...
- 사이드바: 결재 대기/기안함/참조함 메뉴에 빨간 뱃지 표시
- 헤더: 알림 벨 클릭 시 결재 대기 목록 드롭다운 표시
- 드롭다운: 제목/기안자/양식/긴급 여부/일시 표시, 클릭 시 상세 이동
- 뱃지 건수 60초 자동 갱신 (API: /api/admin/approvals/badge-counts)
2026-02-28 15:08:42 +09:00
김보곤
367a7bbe56
feat: [approvals] 결재선 카드 드래그 앤 드롭 순서 변경
...
- SortableJS로 결재선 요약 카드 드래그 앤 드롭 지원
- 순서 변경 시 Alpine 데이터 동기화 및 카드 라벨 자동 갱신
- hover/grab/ghost/chosen 시각 피드백 CSS 추가
- 2명 이상 시 '드래그하여 순서를 변경할 수 있습니다' 힌트 표시
- CSS ::after로 카드 간 화살표 표시 (드래그 시 자연스럽게 이동)
2026-02-28 14:55:15 +09:00
김보곤
55865155de
fix: [approvals] 결재선 요약을 제목 아래로 이동, 카드형 표시
...
- 결재선 요약 바를 본문 아래에서 제목 아래로 위치 변경
- 표시 형식을 '1차 결재 / 직책 / 이름' 카드형으로 변경
- 결재/합의/참조별 색상 구분 (파랑/초록/회색)
2026-02-28 14:48:16 +09:00
김보곤
f5090b48b0
fix: [equipment] 점검표 판정 로직 - 오늘까지 도래한 날짜만 검사
...
- 미래 날짜는 판정에서 제외
- 일일: 오늘까지의 평일만 검사
- 기타 주기: check_date가 오늘 이전인 열만 검사
2026-02-28 14:42:12 +09:00
김보곤
1a3ec05d6d
feat: [approvals] 기안 작성/수정 결재선을 모달로 전환
...
- 2열 레이아웃(양식 50% + 결재선 50%)을 1열 풀와이드로 변경
- 결재선 편집기를 모달로 이동, 메인 화면에 요약 바만 표시
- ESC 키로 모달 닫기 지원
- edit 페이지 로드 시 기존 결재선 요약 즉시 표시
2026-02-28 14:41:37 +09:00
김보곤
779ba7246e
feat: [equipment] 점검표 판정란 자동 합격/불합격 로직 추가
...
- 일일점검: 주말 제외, 전체 셀 good/repaired → 합격
- 기타 주기: 전체 열 good/repaired → 합격
- 공백 또는 X(bad) 존재 시 불합격 표시
2026-02-28 14:37:09 +09:00
김보곤
c20670f165
fix: [approvals] 결재 상세 메타 정보 열 구분선 추가 (가독성 개선)
2026-02-28 14:26:58 +09:00
김보곤
8ccac1535e
fix: [approvals] Quill.js CDN URL 수정 (cdn.quilljs.com → cdn.jsdelivr.net)
2026-02-28 14:21:01 +09:00
김보곤
e9277c695f
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:16 +09:00
김보곤
8a6ee9f2fe
feat: [equipment] 점검항목 다른 주기로 복사 기능 추가
...
- 서비스: copyTemplatesToCycles 메서드 추가 (중복 항목 스킵)
- 컨트롤러: copyTemplates API 엔드포인트 추가
- UI: 다른 주기에 복사 버튼 + 체크박스 모달
2026-02-28 14:17:18 +09:00
김보곤
1c8c08b078
fix: [approvals] 기본 결재선 템플릿 드롭다운 선택 표시 수정
...
- selectedLineId 타입을 숫자로 초기화하여 option value와 일치시킴
2026-02-28 14:09:47 +09:00
김보곤
d729e29996
feat: [approvals] 기안 작성 시 기본 결재선 템플릿 자동 선택
...
- is_default=true인 결재선 템플릿을 자동으로 선택하고 steps 로드
2026-02-28 13:57:24 +09:00
김보곤
beecf0851e
feat: [equipment] 다중 점검주기 + 정/부 담당자 체계 구현
...
- InspectionCycle enum: 6종 점검주기 상수, 열 라벨, check_date 계산
- Equipment 모델: subManager 관계, canInspect() 권한 체크
- Template/Inspection 모델: inspection_cycle fillable 추가
- EquipmentInspectionService: 주기별 점검 조회/토글/권한 체크
- 점검표 UI: 주기 탭, 동적 필터(월/연도), 주기별 그리드 열
- 점검항목 템플릿: 주기별 탭 그룹핑, 모달에 주기 선택
- 설비 등록/수정/상세: 부 담당자 필드 추가
- 권한 없는 장비 셀 비활성(cursor-not-allowed, opacity-50)
2026-02-28 12:37:37 +09:00
김보곤
0aab609dcc
feat: [users] 사용자 수정 화면에 소속 부서 선택 기능 추가
...
- UserController: profile 쿼리에 department_id 추가
- edit.blade.php: 소속 부서 select 드롭다운 UI 추가
- UpdateUserRequest: department_id 유효성 검증 규칙 추가
- UserService: tenant_user_profiles에 department_id 저장 로직 추가
2026-02-28 12:14:14 +09:00
김보곤
2b09857637
fix: [approvals] 결재선 저장 시 직책(job_title) fallback 추가
...
- enrichLineSteps: position_label → job_title_label fallback
- saveApprovalSteps: 동일 fallback 적용
- position_key가 NULL이고 job_title_key만 있는 사용자 대응
2026-02-28 09:25:21 +09:00
김보곤
fce8b7011e
fix: [approvals] 결재선 인원 목록 직급순 정렬 적용
...
- 부서 내 정렬: 직급(pos_rank) → 직책(pos_title) → 이름 순
- COALESCE로 직급/직책 없는 사용자는 하단 배치
2026-02-28 09:20:23 +09:00
김보곤
317beb1b5e
style: [approvals] 결재선 관리 모달 Toss 스타일 리디자인
...
- CSS 변수 기반 Toss 디자인 시스템 적용
- backdrop blur + slide-up 애니메이션
- 카드 기반 결재선 목록 (arrow flow 표시)
- 커스텀 step type select, pill 버튼
- 모달/인풋/버튼 전체 톤앤매너 통일
2026-02-28 09:14:53 +09:00
김보곤
4856eedb09
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:14 +09:00
김보곤
49951d70c0
feat: [menu-sync] 순서 동기화 Push + 되돌리기 기능 추가
...
- pushOrder: 로컬 메뉴 순서를 원격 서버에 일괄 반영
- undoOrder: 순서 동기화 취소하여 이전 상태로 복원
- reorder: 외부 API 엔드포인트 (이름 기반 매칭)
- 세션 기반 스냅샷으로 되돌리기 지원
2026-02-28 08:41:03 +09:00
김보곤
5ebca1402d
feat: [users] 재직/휴직/퇴직 상태 검색 필터 추가
...
- index.blade.php에 employee_status 필터 select 추가
- UserService에 tenant_user_profiles 기반 필터링 로직 추가
2026-02-28 08:31:14 +09:00
김보곤
83f10552df
feat: [menus] 최상위 그룹 상단/하단 이동 버튼 추가
...
- depth=0 메뉴에만 이동 버튼(↕) 표시
- 클릭 시 드롭다운으로 상단/하단 이동 선택
- 기존 reorder API 재사용하여 sort_order 일괄 변경
2026-02-28 08:24:36 +09:00
김보곤
8ba619d659
feat: [users] 재직상태(재직/휴직/퇴직) 표시 및 수정 기능 추가
...
- 사용자 목록 테이블에 재직상태 컬럼 추가 (재직/휴직/퇴직 배지)
- 사용자 수정 화면에 재직상태 select 필드 추가
- UserService.getUsers()에 employee_status 서브쿼리 추가
- UserService.updateUser()에서 tenant_user_profiles에 employee_status 저장
- UpdateUserRequest에 employee_status validation 추가
2026-02-28 08:23:16 +09:00
김보곤
0b5429838c
fix: [users] 직급/직책 툴팁이 항상 표시되는 문제 수정
...
- Tailwind invisible/group-hover 클래스가 빌드에 누락되어 항상 표시됨
- inline style(display:none) + onmouseenter/onmouseleave로 변경
2026-02-28 08:13:26 +09:00
김보곤
a5abd950f2
feat: [users] 직급/직책 label에 info 툴팁 아이콘 추가
...
- 직급: "조직 내 서열" 설명 (사원, 대리, 과장 등)
- 직책: "맡은 역할/책임" 설명 (팀장, 실장 등)
- hover 시 tooltip 표시 (group/invisible 패턴)
2026-02-28 08:11:03 +09:00
김보곤
0ee6b9f77a
feat: [users] 사용자 관리에 직급/직책 입력 UI 추가
...
- 사용자 수정/생성 화면에 직급(position_key), 직책(job_title_key) 선택 필드 추가
- HR 사원관리의 position-add-modal 재사용 ([+] 버튼으로 새 직급/직책 추가)
- UserService에서 tenant_user_profiles 테이블에 저장 (updateOrInsert)
- UpdateUserRequest, StoreUserRequest에 validation 규칙 추가
2026-02-28 08:07:21 +09:00
김보곤
ac3b72cac6
feat: [approvals] 결재선 에디터 2패널 UI/UX 개선
...
- 좌측 패널: 부서별 인원 목록 (접이식 그룹핑, 검색 필터)
- 우측 패널: 결재선 (SortableJS 드래그앤드롭 순서 변경)
- 부서별 전체 인원 API 추가 (GET /api/admin/tenant-users/list)
- 결재/합의/참조 유형별 요약 바 추가
- position_key → positions 테이블 조인으로 직위 라벨 표시
2026-02-28 07:45:30 +09:00
김보곤
d5b1f05256
fix: [approvals] 결재자 검색 API 응답 필드 수정
...
- department_name → department 필드명 변경 (프론트엔드 호환)
- tenant_user_profiles 조인으로 position(직급) 데이터 추가
- 부서명 검색 지원 추가
2026-02-28 00:56:10 +09:00
김보곤
bcfbcc3a1e
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:08 +09:00
김보곤
28458488d4
fix: [approval] whereColumn → where 서브쿼리 비교 오류 수정
...
- getPendingForMe, getBadgeCounts에서 whereColumn에 Closure 전달 오류
- whereColumn은 두 컬럼 비교용, 서브쿼리 비교는 where 사용
2026-02-27 23:47:55 +09:00
김보곤
f87f1afde0
feat: [approval] Phase 2 결재관리 고급 기능 구현
...
- 보류/해제: 현재 결재자가 문서를 보류하고 해제
- 전결: 이후 모든 결재를 건너뛰고 최종 승인
- 회수 강화: 회수 사유 입력, 첫 결재자 미처리 시에만 허용
- 복사 재기안: 완료/반려/회수 문서를 복사하여 새 draft 생성
- 참조 열람 추적: 미열람/열람 필터, mark-read API
- ApprovalDelegation 모델 생성 (Phase 3 위임 대결 준비)
- 뱃지 카운트에 reference_unread 추가
2026-02-27 23:41:49 +09:00
김보곤
1aa0c50c6d
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:17 +09:00
김보곤
8c574088f4
feat: [payroll] 급여 확정 취소 기능 추가
...
- 확정 상태에서 작성중으로 되돌리는 기능 추가
- Model: isUnconfirmable() 상태 헬퍼 추가
- Service: unconfirmPayroll() 메서드 추가
- Controller: unconfirm() 엔드포인트 추가
- Route: POST /{id}/unconfirm 라우트 추가
- View: 확정 취소 버튼 및 JS 함수 추가
2026-02-27 22:17:15 +09:00
김보곤
f922646b7b
feat: [hr] 사업소득자 임금대장 입력 기능 구현
...
- BusinessIncomePayment 모델 (소득세3%/지방소득세0.3% 자동계산)
- BusinessIncomePaymentService (일괄저장/통계/CSV내보내기)
- 웹/API 컨트롤러 (ALLOWED_PAYROLL_USERS 접근 제한)
- 스프레드시트 UI (인라인 편집, 실시간 세금 계산)
- HTMX 연월 변경 갱신, CSV 내보내기
2026-02-27 20:22:07 +09:00
김보곤
958a9302b0
fix: [payroll] 전월 복사/일괄 생성 시 SoftDeletes 유니크 제약 충돌 수정
...
- exists() 대신 withTrashed()->first()로 soft-deleted 레코드 포함 체크
- soft-deleted 레코드 존재 시 forceDelete() 후 재생성
- copyFromPreviousMonth(), bulkGenerate() 양쪽 동일 수정
2026-02-27 18:01:38 +09:00
김보곤
48dc94c0b0
feat: [payroll] 급여관리 페이지 접근 제한 (이름 기반)
...
- 허용 사용자: 이경호, 전진선, 김보곤
- 웹 컨트롤러: 미허용 시 안내 뷰 반환
- API 컨트롤러: 모든 엔드포인트에 403 반환
- restricted.blade.php 안내 페이지 생성
2026-02-27 17:59:50 +09:00
김보곤
22e6cacced
fix: [payroll] 전월 복사 후 테이블 새로고침 함수명 수정
...
- refreshPayrollTable → refreshTable (실제 함수명)
2026-02-27 17:37:56 +09:00
김보곤
d55d1c3405
feat: [payroll] 전월 급여 복사 등록 기능 추가
...
- PayrollService에 copyFromPreviousMonth() 메서드 추가
- PayrollController에 copyFromPrevious() 액션 추가
- 전월 지급/공제 금액을 그대로 복사 (요율 재계산 없음)
- 이미 존재하는 사원/연월은 스킵 처리
2026-02-27 17:30:06 +09:00
김보곤
f81436c26f
fix: [esign] 서명/도장 이미지 원본 비율 유지하여 PDF 합성
...
- overlayImage()에서 원본 이미지 가로세로 비율 계산
- 필드 영역 내 contain 방식 배치 (비율 유지 + 중앙 정렬)
- getimagesize 실패 시 기존 방식 폴백
2026-02-27 17:22:19 +09:00
김보곤
2a1cbdff15
fix: [esign] 운영서버 PDF 미리보기 필드값 누락 수정
...
- TCPDF K_PATH_FONTS를 storage/fonts/tcpdf/로 설정하여 vendor 쓰기 권한 문제 해결
- 사전 생성된 Pretendard 폰트 정의 파일 포함 (런타임 생성 불필요)
- downloadDocument() 에러 로깅 상세화 (trace 포함)
2026-02-27 16:58:53 +09:00
김보곤
78615ec6ee
fix: [payroll] 수정 모드에서 공제항목 자동 재계산 방지
...
- 수정 모드(editingPayrollId)에서는 /calculate API 호출 생략
- 기본급 등 변경 시 총지급액/실수령액만 로컬 재합산
- 재계산 버튼 클릭 시에만 최신 요율로 서버 계산 실행
2026-02-27 16:56:28 +09:00
김보곤
1b38071fd1
fix: [payroll] 급여 수정 시 요율 재계산 제거
...
- updatePayroll()에서 calculateAmounts() 호출 제거
- 저장된 공제 금액을 그대로 유지 (요율 변경 영향 없음)
- 수동 수정(deduction_overrides)만 반영
- 총지급액/총공제액/실수령액은 재합산
2026-02-27 16:44:04 +09:00
김보곤
3603a06c62
feat: [esign] 완료 알림톡 템플릿 2종 선택 및 버튼 URL 도메인 치환
...
- 발송 UI에 서명 요청 + 완료 알림톡 템플릿 각각 선택 가능
- 선택한 완료 템플릿명을 DB에 저장하여 서명 완료 시 사용
- 버튼 URL 도메인을 현재 환경의 app.url로 자동 치환 (개발/운영 환경 대응)
2026-02-27 16:29:03 +09:00
김보곤
810e170644
feat: [hr] 사원 상세화면에 고용형태 표시 추가
2026-02-27 16:19:17 +09:00
김보곤
f6b2f0d499
fix: [payroll] 급여 수정 모달 총 지급액 계산 오류 수정
...
- decimal:0 캐스트로 인해 금액이 문자열로 전달되어 문자열 연결 발생
- Number()로 명시적 숫자 변환 추가
2026-02-27 16:19:17 +09:00
김보곤
5553ccf493
feat: [hr] 사원 등록/수정 폼에 고용형태 선택 추가
...
- Employee 모델에 EMPLOYMENT_TYPES 상수 정의 (정규직/계약직/일용직/프리랜서)
- create/edit 뷰에 고용형태 select 드롭다운 추가
2026-02-27 16:00:19 +09:00
김보곤
0c7f6b19ae
fix: [payroll] 공제항목 수정 후 이전값 표시 문제 수정
...
- deduction_overrides validation에서 min:0 제거 (마이너스 허용)
- 수정 모달에서 calculate API 대신 DB 저장값 직접 표시
2026-02-27 15:55:22 +09:00
김보곤
0faf4e4d4e
fix: [payroll] 중복 급여 등록 시 자동으로 수정 모드 전환
...
- store 시 동일 사원/기간 레코드가 존재하면 updatePayroll로 전환
- 기존 INSERT 실패(500) 대신 정상 수정 처리
2026-02-27 15:51:24 +09:00
김보곤
cc3aed004c
fix: [payroll] 급여 등록 중복 체크 Race Condition 수정
...
- 중복 체크를 트랜잭션 내부로 이동 + lockForUpdate()
- UniqueConstraintViolationException 방어 처리 (500→422)
2026-02-27 15:48:29 +09:00
김보곤
66ceb06b4b
feat: [payroll] 추가 공제 항목 마이너스 금액 입력 허용
...
- formatMoneyInput: 음수 부호(-) 유지하도록 수정
- doRecalculate/submitPayroll: amount > 0 → amount !== 0 조건 변경
- Controller validation: deductions.*.amount에서 min:0 제약 제거
- 연말정산 환급 등 음수 공제 항목 지원
2026-02-27 15:40:48 +09:00
김보곤
6d19b4bd39
fix: [payroll] 수정 모달 공제항목 자동계산값으로 표시하도록 변경
...
- 수정 모달 열 때 DB 저장값 대신 자동계산값으로 공제항목 표시
- 계산 방식 변경(round→floor, 구상수→DB조회)으로 인한 수동표시 오작동 해결
- 비교 API 호출에 user_id 추가하여 가족수 반영
2026-02-27 14:19:32 +09:00
김보곤
dfc207668a
fix: [payroll] 공제 항목 전체 원단위 절삭(10원 단위) 적용
...
- 건강보험, 장기요양보험, 국민연금, 고용보험: round() → floor(x/10)*10
- 고소득 구간 근로소득세 공식 계산도 10원 단위 절삭 적용
- 지방소득세는 이전 커밋에서 이미 적용됨
2026-02-27 14:10:25 +09:00
김보곤
743ab6da34
feat: [payroll] 근로소득세 간이세액표 기반 자동 계산 기능
...
- IncomeTaxBracket 모델 생성 (DB 조회 방식)
- PayrollService: calculateIncomeTax DB 기반으로 리팩토링
- 10,000천원 초과 구간 공식 계산 (calculateHighIncomeTax)
- 지방소득세 10원 단위 절삭 적용
- 공제대상가족수(1~11명) 반영 (본인 + 피부양자)
- calculate API에 user_id 파라미터 추가
- 사원 select에 data-dependents 속성 추가
- 모달에 공제대상가족수 표시
2026-02-27 13:58:59 +09:00
김보곤
f02e96d4fd
feat: [hr] 사업소득자관리 메뉴 신설
...
- BusinessIncomeEarner 모델 생성 (worker_type 글로벌 스코프)
- Employee 모델에 worker_type 글로벌 스코프 추가 (기존 사원 격리)
- BusinessIncomeEarnerService 생성 (등록/수정/삭제/조회)
- Web/API 컨트롤러 생성 (CRUD + 파일 업로드)
- 라우트 추가 (web.php, api.php)
- View 5개 생성 (index, create, show, edit, partials/table)
- 사업장등록정보 6개 필드 (사업자등록번호, 상호, 대표자명, 업태, 종목, 소재지)
2026-02-27 13:46:50 +09:00
김보곤
41693d1888
feat: [leave] 잔여연차 퇴사자 포함 및 퇴사일 기준 연차 계산
...
- getBalanceSummary에 resigned 상태 포함
- 퇴사자 연차는 퇴사일까지만 산출
- 퇴사자 1년 미만 재계산 대상 제외
- 상태 컬럼 추가 (재직/휴직/퇴사 배지)
- 퇴사자 행 회색 배경 시각적 구분
- 근속 계산: 퇴사자는 입사일~퇴사일 기준
2026-02-27 13:16:08 +09:00
김보곤
95de6cbd87
feat: [leave] 잔여연차 테이블에 퇴사일 컬럼 추가
2026-02-27 13:09:59 +09:00
김보곤
d99fdcc2ec
feat: [leave] 잔여연차 테이블 헤더 클릭 정렬 기능 추가
...
- 사원, 부서, 입사일, 부여, 사용, 잔여, 소진율 컬럼 정렬 지원
- 기본 정렬: 입사일 오름차순 (빠른 순)
- 활성 정렬 컬럼 파란색 강조 + 방향 화살표 표시
2026-02-27 13:06:42 +09:00
김보곤
3d295e1ca7
fix: [employee] 부양가족 삭제가 서버에서 반영되지 않는 문제 수정
...
- hx-put → hx-post + _method=PUT (method spoofing) 변경
서버 Nginx/PHP-FPM에서 PUT body 파싱 이슈 방지
- dependents_submitted 히든 마커 추가
모든 부양가족 삭제 시 dependents 키가 폼에 없어도 서버에서 인식
- Controller에서 마커 확인 후 빈 배열로 처리하여 삭제 반영
2026-02-27 12:56:56 +09:00
김보곤
c1b097b7fe
fix: [leave] 1년 미만 직원 연차 부여를 월별 발생 방식으로 수정
...
- 입사일~오늘 완료 월수 기준으로 연차 산출 (기존: 연말까지 선부여)
- 잔여연차 조회 시 1년 미만 직원 total_days 자동 재계산
- 도움말 가이드 연차 산출 방식 설명 갱신
2026-02-27 12:42:10 +09:00
김보곤
5fde7855bb
fix: [employee] 부양가족 피부양자/장애인 체크박스 저장 안되는 문제 수정
...
- Alpine.js :value 반응형 바인딩 대신 hidden+checkbox 표준 패턴 적용
- hidden input value=0 (기본값) + checkbox name+value=1 (체크 시 덮어쓰기)
- HTMX form 직렬화 시 Alpine.js 동기화 타이밍 문제 해결
2026-02-27 11:39:28 +09:00
김보곤
df1e83af1b
fix: [employee] 부양가족 체크박스(장애인/피부양자) 값 저장·표시 오류 수정
...
- Alpine x-model + hidden input 패턴 개선 (동적 :value 바인딩)
- JSON 로드 시 boolean 정규화로 체크 상태 정확히 복원
- 서비스 레이어에서 filter_var BOOLEAN 캐스팅 추가
- show 페이지 표시 로직 filter_var로 강화
2026-02-27 11:25:11 +09:00
김보곤
efebd1e1f8
fix: [leave] 근속 기간 표시 형식 개선
...
- 소수점 float 대신 "1년 3개월", "2개월" 형태로 표시
- 1개월 미만인 경우 "1개월 미만" 표시
2026-02-27 11:20:40 +09:00
김보곤
efc133bd78
fix: [payroll] 식대 비과세 처리 + 국민연금 상한/하한 적용 개선
...
- 식대(bonus)를 과세표준에서 제외하여 4대보험/세금 산출 시 비과세 처리
- 라벨 '식대' → '식대(비과세)'로 변경 (등록/수정/상세/엑셀)
- 합계 영역에 과세표준(식대 제외) 표시 추가
- 국민연금은 기존대로 settings의 상한액/하한액 적용 (과세표준 기준으로 변경)
2026-02-27 11:17:17 +09:00
김보곤
c2edef2253
feat: [leave] 잔여연차 탭 전체 직원 자동 표시 + 연차일수 자동 산출
...
- 사원관리 재직/휴직 직원 전체가 잔여연차 탭에 자동 표시
- balance 레코드 없는 직원은 insertOrIgnore로 자동 생성
- 입사일 기반 근속년수로 연차일수 자동 산출 (근로기준법 제60조)
- 테이블에 입사일/근속 컬럼 추가 (6→8컬럼)
2026-02-27 11:09:07 +09:00
김보곤
e45df999aa
fix: [payroll] 급여 수정 모달에 공제항목 데이터 전달 누락 수정
...
- table.blade.php의 수정 버튼에서 pension, health_insurance, long_term_care,
employment_insurance, income_tax, resident_tax 필드를 json_encode에 추가
2026-02-27 11:07:24 +09:00
김보곤
e6eb1d7691
feat: [payroll] 공제항목 수동 수정 기능 추가 및 상여금→식대 변경
...
- 공제 6개 항목(국민연금/건강보험/장기요양/고용보험/소득세/지방소득세) 수동 수정 가능
- 수동 수정 시 노란색 배경으로 시각적 구분, 재계산 버튼으로 초기화
- 서버사이드 deduction_overrides 유효성 검증 및 적용 로직 추가
- 수정 모달에서 기존 공제값 복원 및 자동계산 비교로 수동 표시
- 상여금 → 식대 라벨 변경 (등록/상세/CSV)
2026-02-27 10:58:13 +09:00
김보곤
bbdad75468
feat: [leave] 잔여연차 탭 도움말 기능 추가
...
- 휴가관리가이드.md 마크다운 콘텐츠 작성 (연차 산출 방식, 촉진 제도 등)
- 잔여연차 탭 헤더에 도움말(?) 버튼 추가
- help-modal.blade.php 생성 (sales 패턴 재사용)
- LeaveController에 helpGuide() 메서드 추가
- 도움말 라우트 등록
2026-02-27 10:42:21 +09:00
김보곤
5e61d20231
feat: [payroll] 급여 설정 상한액/하한액 콤마 포맷팅 적용
...
- 국민연금 상한액/하한액 입력에 콤마 자동 표시
- 0일 때 포커스 시 공백, blur 시 0 복원
- 설정 저장 시 콤마 제거하여 서버 전송
2026-02-27 10:07:07 +09:00
김보곤
bd85a902ad
feat: [payroll] 장기요양보험 공제항목 추가
...
- 건강보험에서 장기요양보험 분리하여 별도 항목으로 표시
- 급여등록/수정/일괄생성/상세보기/CSV 내보내기 모두 반영
- 공제순서: 국민연금-건강보험-장기요양보험-고용보험-근로소득세-지방소득세
2026-02-27 10:06:28 +09:00
김보곤
c8cea0b67f
feat: [payroll] 급여 등록 모달 금액 입력 콤마 자동 포맷팅
...
- 숫자 입력 시 천단위 콤마 자동 표시
- 0인 필드에 포커스 시 공백으로 표시, blur 시 0으로 복원
- 수당/공제 동적 행에도 동일하게 적용
2026-02-27 10:00:37 +09:00
김보곤
9c14f1df25
fix: [attendance] 근태현황 HTMX 부분 로드 시 스크립트 미실행 오류 수정
...
- index 메서드에 HX-Redirect 추가하여 전체 페이지 로드 보장
- 근태관리→근태현황 이동 시 switchTab null 참조 에러 해결
2026-02-27 09:53:27 +09:00
김보곤
11b2c0ec17
fix: [payroll] soft-deleted 레코드로 인한 중복 등록 에러 수정
...
- withTrashed()로 삭제된 레코드 포함하여 중복 체크
- 삭제된 레코드 존재 시 forceDelete 후 재등록 허용
2026-02-27 09:51:00 +09:00
김보곤
8d78a1ee69
fix: [payroll] 급여 등록 500 에러 수정
...
- 중복 급여 등록 시 유니크 제약 위반 대신 422 응답 반환
- tenant_id null 방어 처리 (세션 값이 null인 경우 기본값 적용)
2026-02-27 09:48:16 +09:00
김보곤
af17880246
fix: [payroll] tenant_id null 오류 수정
...
- session('selected_tenant_id')에 기본값 1 추가
- PayrollSetting::getOrCreate, scopeForTenant 수정
- PayrollService 전체 tenant_id 조회에 기본값 적용
- Payroll 모델 scopeForTenant 동일 패턴 적용
2026-02-27 09:42:58 +09:00
김보곤
1f81e6672d
fix: [payroll] 급여등록 용어 및 공제항목 순서 변경
...
- 초과근무수당 → 고정연장근로수당 명칭 변경
- 소득세 → 근로소득세, 주민세 → 지방소득세 명칭 변경
- 공제항목 순서: 국민연금-건강보험-고용보험-근로소득세-지방소득세
- CSV 내보내기 헤더 및 데이터 순서 동일 적용
2026-02-27 09:37:05 +09:00
김보곤
43917fe486
revert: [attendance] MNG 마이그레이션 정책 변경 되돌림
...
- MNG 마이그레이션 파일 삭제 (API에서 관리)
- CLAUDE.md DB 아키텍처 규칙 원래대로 복원
- 마이그레이션은 API 프로젝트에서만 관리
2026-02-27 09:30:06 +09:00
김보곤
e9454d2232
feat: [attendance] attendance_requests 마이그레이션 MNG에 추가
...
- API 운영 배포 중지 기간 동안 MNG에서 마이그레이션 관리
- Schema::hasTable() 가드로 중복 실행 방지
- CLAUDE.md DB 아키텍처 정책 업데이트
2026-02-27 09:24:04 +09:00
김보곤
fc1efba9fd
feat: [hr] 입퇴사자 현황 페이지 구현
...
- EmployeeService에 근속기간 조회/통계/CSV 내보내기 메서드 추가
- API 컨트롤러에 tenure/tenureExport 엔드포인트 추가
- EmployeeTenureController 뷰 컨트롤러 생성
- 통계 카드 6개 (전체/재직/퇴직/평균근속/올해입사/올해퇴사)
- HTMX 테이블 (사원/부서/직책/상태/입사일/퇴사일/근속기간/근속일수)
- 필터: 이름검색, 부서, 상태, 입사기간 범위, 정렬
- CSV 엑셀 다운로드 기능
2026-02-27 08:24:26 +09:00
김보곤
3c3e0f8141
feat: [esign] 알림톡 템플릿명 환경별 분기 (운영: 원본, 개발: _DEV)
...
- resolveTemplateName() 헬퍼 메서드 추가 (두 컨트롤러)
- production 환경: 전자계약_서명요청, 전자계약_완료, 전자계약_리마인드
- 개발 환경: 전자계약_서명요청_DEV, 전자계약_완료_DEV, 전자계약_리마인드_DEV
- config('app.url')은 이미 환경별 도메인 자동 사용
2026-02-27 08:15:54 +09:00
김보곤
3f1c5ead73
fix: [esign] 완료 알림톡 버튼 URL 및 이메일 PDF 서명 누락 수정
...
- 완료 알림톡 버튼이 서명페이지로 연결되던 문제 → 문서 다운로드 URL로 강제 변경
- 계약 완료 상태에서 signed_file_path 없을 때 서명 PDF 재생성 로직 추가
- mergeSignatures 실패 시 상세 trace 로그 추가
2026-02-26 23:28:20 +09:00
김보곤
fbbc4ba385
fix: [esign] MNG EsignSigner 모델에 역할/상태 상수 추가
...
- ROLE_CREATOR, ROLE_COUNTERPART 상수 추가
- STATUS_WAITING~STATUS_REJECTED 상수 추가
- 운영서버 Undefined constant 오류 수정
2026-02-26 23:15:17 +09:00
김보곤
9676f0409e
fix: [esign] 서명 요청/다음 서명자 알림에 역할 기반 분기 적용
...
- dispatchNotification: 상대방(counterpart)만 알림톡, 본사(creator)는 이메일
- 순차 서명 시 다음 서명자 알림도 동일 역할 기반 분기 적용
- 다음 서명자 알림에서 getKakaotalkChannelId/getTemplateData 헬퍼 활용
- 알림톡 실패 시 이메일 자동 폴백 로직 통일
2026-02-26 23:03:43 +09:00
김보곤
50c43b52b0
fix: [leave] 휴가 신청 422 에러 메시지 표시 개선
2026-02-26 22:58:36 +09:00
김보곤
c26ede01b5
fix: [leave] HTMX 사이드바 네비게이션 시 HX-Redirect 적용
2026-02-26 22:56:57 +09:00
김보곤
0b19728fef
feat: [esign] 서명 완료 시 상대방에게 카카오톡 알림톡으로 PDF 계약서 전달
...
- sendCompletionAlimtalk: 승인된 '전자계약_완료' 템플릿 조회 후 변수 치환 발송
- 버튼 URL에 PDF 다운로드 링크(/api/document) 포함
- 상대방(counterpart)만 알림톡 발송, 본사(creator)는 이메일 유지
- 알림톡 실패 시 이메일 자동 폴백 처리
- 발송 후 3초 대기하여 전달 결과 확인 로직 추가
- getKakaotalkChannelId, getTemplateData 헬퍼 메서드 추가
2026-02-26 22:54:59 +09:00
김보곤
06fb6b42be
feat: [payroll] 급여관리 기능 구현
...
- Payroll, PayrollSetting 모델 생성
- PayrollService 구현 (CRUD, 자동계산, 간이세액표, 일괄생성)
- Web/API 컨트롤러 생성 (HTMX/JSON 이중 응답)
- 급여 목록, 통계 카드, 급여 설정 뷰 생성
- 라우트 추가 (web.php, api.php)
- 상태 흐름: draft → confirmed → paid
2026-02-26 22:49:44 +09:00
김보곤
a70df1cc2d
fix: [settlement] Alpine @click에서 clearAllCheckboxes 참조 오류 수정
2026-02-26 22:45:17 +09:00
김보곤
fe739431ca
fix: [esign] OTP SMS 발송 조건을 tenant_id 대신 서명자 역할 기반으로 변경
...
- 기존: tenant_id != 1 조건으로 본사 테넌트 전체 SMS 차단
- 변경: signer->role === counterpart 조건으로 상대방만 SMS 수신
- 본사(creator)는 이메일 OTP 유지, 상대방(counterpart)은 SMS OTP 수신
2026-02-26 22:37:13 +09:00
김보곤
684bba105f
feat: [leave] 휴가관리 Phase 1 구현
...
- Leave, LeavePolicy, LeaveGrant 모델 생성
- LeaveBalance 헬퍼 메서드 추가 (useLeave, restoreLeave, canUse)
- LeaveService 핵심 로직 (신청, 승인, 반려, 취소, 잔여연차, 통계)
- API 컨트롤러 (목록, 등록, 승인/반려/취소, 잔여연차, 통계, CSV 내보내기)
- 뷰 컨트롤러 + 라우트 등록 (web, api)
- Blade 뷰 (index + 3개 탭 partials: table, balance, stats)
2026-02-26 22:34:31 +09:00
김보곤
b17979f412
feat: [attendance] 근태현황/근태관리 메뉴 분리
...
- 근태현황(/hr/attendances): 조회 전용 (목록/캘린더/요약)
- 근태관리(/hr/attendances/manage): CRUD + 승인 관리
- table-manage.blade.php: 관리용 테이블 (체크박스/수정/삭제)
- table.blade.php: 조회용 테이블 (GPS 포함, CRUD 제거)
- API 컨트롤러 view 파라미터로 테이블 분기
2026-02-26 22:20:48 +09:00
김보곤
7f5bb43372
fix: [attendance] 주간 근무시간 계산 UNSIGNED 오버플로우 수정
...
- CAST(... AS UNSIGNED)에서 음수값 시 2^64-1로 오버플로우되던 버그
- CAST(... AS SIGNED) + COALESCE + GREATEST(0, ...)로 안전하게 변경
- getOvertimeAlerts(), getEmployeeMonthlySummary() 두 곳 수정
2026-02-26 21:59:47 +09:00
김보곤
1bc77f94ff
fix: [settlement] 구독료 수당(매니저/파트너) 로직 3가지 버그 수정
...
- 매니저 미지정 시 구독료가 소실되던 버그 → 파트너 수당으로 편입
- deposit/balance 양쪽에서 구독료 이중 계상 → deposit에서만 1회 기록
- 파트너별 결산 탭에 +구독 배지 추가, select에 manager_user_id 포함
2026-02-26 21:55:59 +09:00
김보곤
4398d5e27c
fix: [attendance] User 모델에 tenantProfiles 관계 추가로 500 에러 수정
...
- User 모델에 tenantProfiles() HasMany 관계 추가 (tenant_user_profiles 테이블)
- eager loading에 department 관계도 포함하여 N+1 방지
2026-02-26 21:55:27 +09:00
김보곤
7b2300e1be
fix: [attendance] cal_days_in_month → Carbon endOfMonth 대체로 500 에러 수정
...
- PHP calendar 확장 미설치 환경에서 cal_days_in_month 함수 호출 시 500 에러 발생
- getMonthlyStats, getMonthlyCalendarData, getEmployeeMonthlySummary 3곳 수정
2026-02-26 21:51:22 +09:00
김보곤
2550c16894
feat: [attendance] 근태관리 2차 고도화 8개 기능 구현
...
- 월간 캘린더 뷰 (사원별 필터, 날짜 클릭 등록, HTMX 월 이동)
- 일괄 등록 (다수 사원 체크박스 선택 후 일괄 등록, upsert 처리)
- 사원별 월간 요약 (상태별 카운트 + 총 근무시간 집계 테이블)
- 초과근무 알림 (주 48h 경고 / 52h 위험 배너)
- 근태 승인 워크플로우 (신청→승인→근태 레코드 자동 생성)
- 자동 결근 처리 (매일 23:50 스케줄러, 주말 제외)
- 연차 관리 연동 (휴가 등록 시 leave_balances 자동 차감)
- GPS 출퇴근 UI (테이블 GPS 아이콘 + 상세 모달)
- 탭 네비게이션 (목록/캘린더/요약/승인) HTMX 기반 전환
2026-02-26 20:56:25 +09:00
김보곤
94000d965d
feat: [journal] 일반전표입력에 카드사용내역 분개 기능 추가
...
- JournalEntryController에 cardTransactions/storeFromCard/cardJournals/deleteCardJournal 메서드 추가
- 카드거래 분개 라우트 4개 추가 (card-transactions, store-from-card, card-journals, delete-card-journal)
- JournalEntryList에 카드거래 탭/필터/통계 통합
- CardJournalEntryModal 컴포넌트 추가 (공제/불공제에 따른 기본 분개 라인 자동 생성)
- source_type=ecard_transaction 호환 (기존 ecard 페이지 분개와 동일 키)
2026-02-26 20:52:44 +09:00
김보곤
474165ff67
feat: [attendance] 근태현황 Phase 1 구현
...
- 1-1: 등록/수정 버그 수정 (created_by 덮어쓰기 방지)
- 1-2: 엑셀(CSV) 다운로드 기능 추가
- 1-3: 체크박스 일괄 삭제 기능 추가
- 1-4: 월간 통계 연/월 선택 기능 추가
2026-02-26 20:45:19 +09:00
김보곤
fb92348a9d
refactor: [hr] 사원 첨부파일을 GCS 듀얼 저장 방식으로 변경
...
- 업로드: 로컬 + GCS 동시 저장 (gcs_object_name, gcs_uri 기록)
- 다운로드: GCS Signed URL 우선, 로컬 폴백
- 삭제: GCS + 로컬 모두 삭제, soft delete 처리
- DashboardCalendarController 패턴 준용
2026-02-26 20:13:26 +09:00
김보곤
c5d5d0c3ab
feat: [hr] 사원등록 기능 확장
...
- 기본정보에 주민등록번호 필드 추가
- 급여이체정보 섹션 추가 (이체은행, 예금주, 계좌번호)
- 부양가족 정보 섹션 추가 (동적 행 추가/삭제)
- 첨부파일 업로드/다운로드/삭제 기능 추가
- 은행 목록 config/banks.php 설정 파일 생성
- show 페이지 주민등록번호 뒷자리 마스킹 처리
2026-02-26 19:59:15 +09:00
김보곤
84985ceab6
feat: [employee] 입사일/퇴직일 컬럼 헤더에 정렬 아이콘 추가
...
- 입사일/퇴직일 컬럼 클릭 시 오름차순/내림차순 토글
- 현재 정렬 상태를 아이콘으로 표시 (↑ 오름차순, ↓ 내림차순, ↕ 미선택)
- 기본 정렬: 입사일 빠른순(오름차순)
2026-02-26 19:41:54 +09:00
김보곤
4fa163397a
feat: [employee] 사원관리 정렬 기능 추가 (입사일/퇴직일)
...
- 정렬 드롭다운 추가: 입사일 빠른순/최신순, 퇴직일 최신순/빠른순, 상태순
- 기본 정렬을 입사일 빠른순으로 설정
- JSON 컬럼(json_extra.hire_date, resign_date) 기반 정렬
2026-02-26 19:37:07 +09:00
김보곤
e8d38953d0
feat: [hr] 근태현황 MNG 프론트엔드 구현
...
- Attendance 모델 (attendances 테이블, 상태/색상 매핑, check_in/check_out accessor)
- AttendanceService (목록/월간통계/CRUD, 부서/사원 드롭다운)
- API 컨트롤러 (HTMX+JSON 이중 응답, stats/index/store/update/destroy)
- 페이지 컨트롤러 (index 페이지 렌더링)
- 웹/API 라우트 등록 (hr/attendances, api/admin/hr/attendances)
- index.blade.php (통계카드+필터+등록/수정 모달)
- partials/table.blade.php (HTMX 부분 로드 테이블)
2026-02-26 19:34:07 +09:00
김보곤
b9a4a6b835
feat: [hr] 사원 목록 테이블에 퇴직일 컬럼 추가
2026-02-26 19:07:06 +09:00
김보곤
b6220810cf
feat: [hr] 사원 등록/수정 - 비밀번호 제거 및 퇴직일 추가
...
- 비밀번호 필드 제거 (등록 폼, validation, 서비스)
- 퇴직일(resign_date) 필드 추가 (등록/수정/상세 화면)
- json_extra에 resign_date 저장/수정 지원
- Model에 resign_date accessor 추가
2026-02-26 18:59:15 +09:00
김보곤
a1ca8b7e46
refactor: [hr] 사번(employee_code) 필드 전체 제거
...
- Model: appends, accessor 제거
- Service: 검색 필터, json_extra 저장/수정 로직 제거
- Controller: validation 규칙 제거
- View: create, edit, show, table에서 사번 UI 제거
2026-02-26 18:50:12 +09:00
김보곤
442533e7c8
fix: [hr] searchUsers에서 q 파라미터 null 처리
...
- ConvertEmptyStringsToNull 미들웨어로 인해 빈 q= 가 null로 변환되는 문제
2026-02-26 17:41:47 +09:00
김보곤
9623256386
feat: [hr] 사원 등록 - 기존 직원 불러오기 기능 추가
...
- 검색 API (GET /api/admin/hr/employees/search-users)
- 테넌트 소속 + 사원 미등록 사용자 검색
- 기존 사용자 선택 시 Employee만 생성 (User 생성 건너뜀)
- Alpine.js 검색 UI (포커스시 목록, debounce 검색, 선택/해제)
2026-02-26 17:35:54 +09:00
김보곤
446b8787de
fix: [hr] 사원 등록/수정 에러 메시지 화면 표시 개선
...
- API 컨트롤러 store/update/destroy에 try-catch 추가
- debug 모드에서 상세 에러 메시지 포함 응답
- create/edit 뷰에 showToast 기반 에러 표시 추가
- 422 validation 에러 필드별 메시지 표시
- 500 서버 에러 시 사용자 친화적 메시지 표시
2026-02-26 17:25:00 +09:00
김보곤
e8d4803590
fix: [hr] 사원 등록 시 users 테이블 NOT NULL 제약 오류 수정
...
- email 미입력 시 임시 이메일 생성 (NOT NULL 제약 대응)
- user_id 자동 생성 및 중복 방지 로직 추가
- role 필드 'ops' 기본값 설정
- Hash::make 사용으로 통일 (기존 패턴 준수)
2026-02-26 17:22:50 +09:00
김보곤
8d0dee2bb2
feat: [hr] 직급/직책 인라인 추가 기능 구현
...
- Position 생성 API 엔드포인트 추가 (POST /admin/hr/positions)
- 직급/직책 select 옆 "+" 버튼으로 모달 열기
- 모달에서 이름 입력 → API 저장 → 드롭다운에 자동 추가 및 선택
- 중복 key 방지 (기존 값이면 그대로 반환)
- create/edit 뷰 모두 적용
2026-02-26 17:07:12 +09:00
김보곤
ba24034020
fix: [hr] 사원 등록 시 user_tenants pivot 연동 추가
...
- User 생성 후 tenants()->attach() 호출 (멀티테넌트 필수)
- user_id, must_change_password, created_by 필드 추가
- 기존 UserService 패턴과 동일하게 맞춤
2026-02-26 16:53:32 +09:00
김보곤
f58436a4dc
fix: [finance] 일일자금일보 입금 테이블 잔액 열 제거
2026-02-26 16:46:58 +09:00
김보곤
bb9193bcad
feat: [hr] 인사관리 사원관리 Phase 1 구현
...
- Employee, Position 모델 생성 (tenant_user_profiles, positions 테이블)
- EmployeeService 생성 (CRUD, 통계, 필터/검색/페이지네이션)
- 뷰 컨트롤러(HR/EmployeeController) + API 컨트롤러 생성
- Blade 뷰: index(통계카드+HTMX테이블), create, edit, show, partials/table
- 라우트: web.php(/hr/employees/*), api.php(/admin/hr/employees/*)
2026-02-26 16:43:52 +09:00
김보곤
6b66172af7
Merge branch 'develop' of http://114.203.209.83:3000/SamProject/sam-manage into develop
2026-02-26 15:18:23 +09:00
김보곤
2a8d29be8d
feat: [esign] PDF 서명 합성 폰트를 Pretendard로 통일
...
- NanumGothic → Pretendard-Regular.ttf 변경
- 전자계약 PDF 원본과 동일한 폰트로 필드 텍스트 렌더링
- storage/fonts/에 Pretendard-Regular.ttf 내장 (로컬/서버 공통)
2026-02-26 15:14:50 +09:00
9782082d01
Revert "fix:배포 시 storage/logs를 shared 심링크로 변경"
...
This reverts commit c6ddc78bc7 .
2026-02-26 14:42:39 +09:00
c6ddc78bc7
fix:배포 시 storage/logs를 shared 심링크로 변경
...
- 기존: mkdir로 릴리즈 디렉토리에 logs 생성 → 배포마다 로그 유실
- 변경: ln -sfn shared/storage/logs → 로그 영속 보존
- 원인: 전자계약 PDF 합성 오류 추적 중 발견
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-26 14:40:00 +09:00
김보곤
b8b2e7e023
fix: [holidays] 대량 등록 모달에 기존 등록 데이터 표시
...
- 해당 연도에 등록된 휴일이 있으면 기존 데이터를 텍스트 형식으로 표시
- 등록된 데이터가 없을 때만 기본 공휴일 예시 표시
2026-02-26 14:34:00 +09:00
김보곤
84fe893a5b
feat: [business-cards] 처리완료 삭제 기능 추가 및 기본 매수 500매로 변경
...
- 관리자 화면 처리완료 카드에 삭제 버튼 추가
- processed 상태만 삭제 가능 (서비스 검증)
- 파트너 명함신청 기본 매수 100매 → 500매 변경
2026-02-26 13:56:59 +09:00
김보곤
894364098d
fix: [vat] 부가세 관리에서 매출(종이세금계산서) 항목 삭제
...
- 요약 테이블 행 삭제
- 필터 드롭다운 옵션 삭제
- 컨트롤러 계산 로직 및 stats 응답 제거
- React state 초기값에서 관련 필드 제거
2026-02-26 13:19:29 +09:00
김보곤
af542c0f41
fix: [esign] 로컬 저장 방식 법인도장이 서명 페이지에서 미표시되는 버그 수정
...
- store(): GCS뿐 아니라 local_path 도장도 signer에 자동 적용
- getContract(): signer에 도장 없어도 tenant_settings에서 확인하여 has_stamp 반환
- submitSignature(): 기존 계약 creator도 tenant_settings에서 도장 가져와 적용
2026-02-26 11:21:42 +09:00
김보곤
4bbabde383
fix: [sms] 발신번호 02-6347-0005로 수정
2026-02-26 11:04:58 +09:00
김보곤
b137e637a1
fix: [sms] API URL을 Blade route() 헬퍼로 변경 및 에러 상세 표시
...
- 하드코딩 URL → route() 기반으로 환경별 자동 대응
- 422 에러 시 validation 에러 메시지 상세 표시
2026-02-26 10:46:33 +09:00
김보곤
8e2b3ffbc8
feat: [sms] 번개 아이콘 클릭 시 테스트 데이터 자동 입력
2026-02-26 10:44:15 +09:00
김보곤
7b5235f2aa
fix: [sms] 발신번호를 고정 텍스트로 변경 (셀렉트박스 제거)
2026-02-26 10:42:20 +09:00
김보곤
7404aa68cb
fix: [sms] 발신번호 기본값 02-0005-0006 설정
2026-02-26 10:38:43 +09:00
김보곤
b5da40c051
feat: [sms] SMS 발송 테스트 메뉴 추가
...
- SmsController (WEB): 카카오톡 패턴 동일한 HX-Redirect 처리
- BarobillSmsController (API): 발송, 발신번호 조회/확인, 전송상태 조회
- SMS 발송 테스트 블레이드 뷰: 발신번호 목록, 바이트 카운터, 발송 결과 표시
- web.php: barobill/sms/send 라우트 추가
- api.php: barobill/sms API 라우트 4개 추가
2026-02-26 10:29:44 +09:00
김보곤
394dd258cd
feat: [barobill] 독립 SMS API 연동 및 OTP 발송 전환
...
- BarobillService에 SMS WSDL 엔드포인트 추가
- sendSMSMessage, checkSMSFromNumber, getSMSFromNumbers 메서드 추가
- sendOtpViaSms를 알림톡 대체발송 → 독립 SMS API(SendSMSMessage)로 전환
2026-02-26 10:20:35 +09:00
김보곤
7044030ba8
fix: [esign] 본사(tenant_id=1) OTP는 항상 이메일 발송
...
- 본사는 알림톡 방식 선택 시에도 OTP를 이메일로 처리
- getContract 응답에서도 본사는 send_method를 email로 반환
2026-02-26 09:11:00 +09:00
김보곤
524aaab115
feat: [esign] OTP 인증코드 SMS 발송 기능 추가
...
- send_method가 alimtalk/both일 때 SMS로 OTP 발송
- 바로빌 sendATKakaotalkEx SMS 대체발송 기능 활용
- SMS 실패 시 이메일 폴백
- auth.blade.php UI 메시지 SMS/이메일 분기 표시
2026-02-26 09:06:36 +09:00
김보곤
76c60f6a92
fix: [esign] 알림톡 버튼 URL 도메인 치환 제거 (카카오 템플릿 검증 불일치 방지)
2026-02-26 08:37:15 +09:00
김보곤
370d001818
fix: [esign] 알림톡 버튼 URL 도메인을 APP_URL로 치환 (개발/운영 환경 대응)
2026-02-26 08:30:57 +09:00
김보곤
5a299ad20f
fix: [esign] 알림톡 버튼 URL의 #{토큰} 변수를 실제 access_token으로 치환
2026-02-26 07:45:24 +09:00
김보곤
2f6e796e3f
feat: [esign] 알림톡 템플릿 선택 기능 추가
...
- 바로빌 승인된 알림톡 템플릿 목록 조회 API 추가
- 서명 요청 발송 시 템플릿 선택 드롭다운 UI 추가
- 템플릿 미리보기 (본문 + 버튼) 표시
- send()에 template_name 파라미터 전달 지원
- 미선택 시 기존 하드코딩 폴백 유지
2026-02-25 22:42:29 +09:00
김보곤
38d7e137de
feat: [equipment] 설비관리 도움말 페이지 추가
...
- /equipment/guide 라우트 및 컨트롤러 메서드 추가
- guide.blade.php 신규 생성 (히어로+TOC+5섹션+FAQ)
- academy-glossary에 equipment 도메인 용어 20개 추가
- 품질인정심사(ISO 9001) 대응 가이드, 보전 기초지식 포함
2026-02-25 22:02:33 +09:00
김보곤
d46f6d8b19
fix: [equipment] 설비 사진 원본 비율 유지 + 클릭 시 모달 확대
2026-02-25 21:46:04 +09:00
김보곤
d9261e7969
feat: [equipment] 수리이력 등록에 목업 데이터 자동 입력 버튼 추가
...
- 번개 아이콘 클릭 시 전체 필드에 랜덤 목업 데이터 채움
- 설비/수리자는 기존 옵션에서 랜덤 선택
- 외주업체는 보전구분이 외주일 때만 입력
2026-02-25 21:30:16 +09:00
김보곤
0b3ab8d07b
feat: [equipment] 목록 필터 상태를 sessionStorage에 저장/복원
...
- 검색/필터 후 수정 페이지 이동 → 목록 복귀 시 필터 유지
- 페이지네이션, select 변경 시에도 자동 저장
2026-02-25 21:20:14 +09:00
김보곤
b62521213a
fix: [equipment] 사진 URL을 Signed URL로 변경 (비공개 GCS 버킷 대응)
...
- getPhotoUrls(): 공개 URL → GoogleCloudStorageService.getSignedUrl() 사용
- basic-info 탭: 동일하게 Signed URL로 변경
- URL 유효기간 120분
2026-02-25 21:13:30 +09:00
김보곤
bd8176b426
fix: [equipment] 사진 업로드 시 stored_name 누락 오류 수정
...
- files 테이블 stored_name 컬럼이 NOT NULL인데 INSERT에서 누락
- uploadPhotos(), uploadPhotoFromPath() 모두 stored_name 추가
2026-02-25 21:07:56 +09:00
김보곤
651ee2ef61
fix: [equipment] Ctrl+V 붙여넣기 클립보드 이미지 추출 수정
...
- DataTransferItemList 전통적 for 루프로 변경 (for...of 호환성 문제)
- kind === 'file' 조건 추가로 이미지 파일만 정확히 필터링
2026-02-25 20:58:32 +09:00
김보곤
58af12f08d
feat: [equipment] 사진 업로드에 Ctrl+V 클립보드 붙여넣기 기능 추가
...
- create/edit 페이지에서 Ctrl+V로 클립보드 이미지 즉시 업로드
- 드롭존에 붙여넣기 안내 텍스트 추가
2026-02-25 20:56:11 +09:00
김보곤
308462dd69
feat: [equipment] 엑셀 Import 시 설비 사진 추출/업로드 기능 추가
...
- EquipmentPhotoService: uploadPhotoFromPath() 추가, 압축 메서드 public 전환
- EquipmentImportService: Drawing 추출/임시파일 저장/사진 업로드 통합
- EquipmentController: Import 응답 메시지에 사진 업로드 결과 포함
2026-02-25 20:49:58 +09:00
김보곤
e291b29bd7
feat: [equipment] 설비 사진 업로드 시 이미지 압축 (1MB 이하)
...
- GD 라이브러리로 업로드 전 이미지 압축 처리
- 장축 2048px 초과 시 리사이즈 (비율 유지)
- JPEG 품질 85→40 점진적 감소로 1MB 이하 보장
- PNG(투명 없음)/GIF/BMP → JPEG 자동 변환
- PNG(투명 있음) → PNG 유지 (압축 레벨 9)
- 임시파일 자동 정리 (finally 블록)
2026-02-25 20:38:37 +09:00
김보곤
7f1327bfea
feat: [equipment] 사진 멀티 업로드(GCS) + 엑셀 Import 기능 추가
...
- EquipmentPhotoService: GCS 기반 사진 업로드/삭제/조회 (최대 10장)
- EquipmentImportService: 엑셀 파싱 → 설비 일괄 등록 (한글 헤더 자동 매핑)
- API: 사진 업로드/목록/삭제, Import 미리보기/실행 엔드포인트
- 뷰: create/edit에 드래그앤드롭 사진 업로드, show에 갤러리 표시
- import.blade.php: 3단계 Import UI (파일선택 → 미리보기 → 결과)
- phpoffice/phpspreadsheet 패키지 추가
2026-02-25 20:15:06 +09:00
김보곤
a3668354d9
fix: [equipment] API URL 경로 /api 접두사 누락 수정
...
- 모든 HTMX hx-get 및 fetch() URL에 /api 접두사 추가
- /admin/equipment → /api/admin/equipment 일괄 변경
- 대상: index, create, edit, show, inspections, repairs 뷰 7개 파일
2026-02-25 19:46:12 +09:00
김보곤
4115bbd7db
feat: [equipment] 설비관리 모듈 구현
...
- 모델 6개 (Equipment, InspectionTemplate, Inspection, InspectionDetail, Repair, Process)
- 서비스 3개 (Equipment, Inspection, Repair)
- API 컨트롤러 3개 + FormRequest 4개
- Blade 컨트롤러 + 라우트 등록
- 뷰: 대시보드, 등록대장(CRUD), 일상점검표(캘린더 그리드), 수리이력
2026-02-25 19:39:59 +09:00
31246e3317
fix: [sync] config:cache 환경에서 동기화 API 401 오류 수정
...
menu_sync_api_key를 config/app.php에 등록하여 config:cache 후에도
env() 값이 정상 반환되도록 수정. 컨트롤러에서 env() 직접 호출 제거.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-25 17:57:04 +09:00
김보곤
5e1a093476
fix: [academy] 경정청구 페이지 이미지 hover 확대 효과 복원
2026-02-25 16:46:41 +09:00
김보곤
70e63edfa8
feat: [academy] 경정청구 페이지 UI/UX 개선
...
- CSS 애니메이션 시스템 추가 (fadeUp, popIn, float, drawLine 등 @keyframes)
- 히어로 배너 SVG 일러스트 업그레이드 (세금문서→SAM→환급 플로우)
- 섹션별 SVG 인포그래픽 5종 추가 (플로우차트, Before/After, 타임라인, 효익 아이콘, SAM 아키텍처)
- IntersectionObserver 기반 스크롤 애니메이션 (AOS)
- KPI 카운트업 애니메이션 (requestAnimationFrame easeOut)
- TOC 활성 섹션 하이라이트
- 프로세스 토글 CSS 트랜지션 적용
- 미사용 데드코드 제거 (lightbox, hover-preview DOM/CSS/JS)
2026-02-25 16:45:07 +09:00
김보곤
1416b4600c
feat: [academy] 경정청구 메뉴 추가
...
- 아카데미 하위에 경정청구 페이지 신규 생성
- sales 경정청구 자료를 MNG 아카데미 패턴으로 변환
- SAM 제안 형태: 청년 판정, 권역 판정, 데이터 통합 자동화
- Chart.js 차트 4종 포함 (소요시간, 비용절감, 오류유형, 이용자추이)
- 학습 가이드 (용어 해설 + 퀴즈 5문항)
2026-02-25 16:20:29 +09:00