164 Commits

Author SHA1 Message Date
ttipo 92ed6c332f refactor: 바깥클릭/ESC 닫기 공용 훅 useClickOutside 도입 (Phase 0)
11곳에 복붙되던 document 리스너 등록/해제·바깥클릭·ESC·스크롤 닫기 로직을
useClickOutside 훅으로 통합. 재사용 드롭다운 5종에 우선 적용.

- composables/useClickOutside.ts 신설 (event/esc/closeOnScroll 옵션)
- 적용: DropdownSelect, StatusSelect, ScheduleTypeFilter,
  ScheduleDetailPanel(참석자 스택), ScheduleEventModal(참석자 멀티셀렉트)
- 모달 ESC·페이지 레벨 오버레이 조정 로직은 후속 단계(BaseModal)에서 처리

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 23:31:45 +09:00
ttipo d5b54c1afb style: 일정 화면 UI 다듬기 (기존 디자인 규격에 통일)
- 툴바 '오늘' 버튼 제거, 컨트롤 간격을 전역 .toolbar(0.625rem)와 통일
- 타임라인 레인 hover 편집/삭제 버튼 제거(카테고리 관리는 유형 필터에서)
- 유형 필터 버튼을 기존 DropdownSelect pill 디자인으로 통일 + 수량 뱃지 제거
- '새 일정' 버튼의 스코프 .btn 재정의 제거 → 전역 .btn primary 표준 사용
- 일정/카테고리 모달을 사이트 폼 모달 규격(rem + 멤버 초대 모달)으로 재정렬,
  라벨 좌측정렬, 취소/저장 버튼을 전역 .mbtn 으로 통일
- 참석자 아바타를 공용 UserAvatar 방식(이미지/실루엣)으로 교체,
  '전 직원' 표식 크기를 아바타와 동일(20px)하게 고정(루트 14px rem 보정)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 23:24:33 +09:00
ttipo 346ec75553 feat: 전사 공유 일정(주간 캘린더) 기능 추가
상단 nav 독립 메뉴 '일정' — 주간 타임라인(간트형) 캘린더.
카테고리=레인, 일정=막대(다중일 지원), 우측 상세 패널, 일정/카테고리 CRUD.

백엔드(Schedule 모듈):
- ScheduleCategory/ScheduleEvent 엔티티 + 참석자(다대다) + 작성자
- 카테고리/일정 CRUD, 기간 겹침 조회, 참석자 풀(전사 사용자)
- 기본 카테고리 12종 onModuleInit 멱등 시드
- 인증 사용자 누구나 관리(전역 일정, 글로벌 관리자 개념 없음)
- 운영 마이그레이션(AddSchedule) 추가, @nestjs/schedule 임포트는 CronModule 로 alias

프론트:
- /schedule 라우트 + 사이드바 nav 항목
- 주간 네비(이전/다음/오늘), 유형 필터·카테고리 관리 드롭다운
- 타임라인/상세 패널/일정 모달/카테고리 모달(hue 슬라이더)/참석자 멀티셀렉트
- schedule.store + useSchedule + scheduleDate 유틸

런타임 검증: dev 부팅·시드(12건)·라우트 매핑 정상, 인증 게이트(401),
일정 생성/조회/수정/삭제 + 참석자/전직원/다중일 스모크 전부 정상.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 21:23:10 +09:00
ttipo 2c02c4afc1 perf: 활동 피드 무제한 렌더링 방지(상한 + 페이지네이션)
활발한 프로젝트/업무에서 활동이 한 번에 전부 내려와 렌더링되던 문제 보완.

- 업무 상세 활동 탭: 최신 100건으로 조회 상한 추가(기존 무제한)
- 프로젝트 활동 피드: 200건 통째 조회 → 오프셋 페이지네이션 전환
  - 컨트롤러 page/size 쿼리 지원, 서비스 findAndCount
  - 프론트 스토어 누적 + hasMore/loadMore, 활동 페이지 "더 보기" 버튼

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 18:03:19 +09:00
ttipo 2b534743d6 feat: 중간 점검 보고 시 활동 피드 기록 추가
보고 제출 시 알림만 보내고 활동(activity)에는 적재되지 않아
프로젝트 활동 피드·업무 활동 탭에 표시되지 않던 누락을 보완.

- ActivityType/ApiActivityType 에 task.checkpoint_reported 추가
- submitCheckpointReport 에서 activity.record 호출
- 프론트 활동 렌더링 케이스(프로젝트 피드/업무 탭) 추가

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 17:49:37 +09:00
ttipo af8b363f23 feat: 업무 상세 댓글·활동 빈 상태 UI 추가
댓글/활동 패널에 컨텐츠가 없을 때 아이콘 + 안내 문구의 빈 상태(thread-empty) 표시.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 17:39:32 +09:00
ttipo 4efe5a7a9a style: 상세 화면 할 일 탭/항목 UI를 작성 화면과 동일하게 통일
상세 체크리스트 카테고리 탭을 작성 화면과 동일한 테두리 pill + 배지형 카운트로 변경(플랫 탭 제거),
항목 행 hover/텍스트 flex 도 작성 화면과 맞춤. 미사용 ck-tabs 클래스 제거.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 17:36:02 +09:00
ttipo dd7d75310e feat: 보고 완료 배지 옆 보고서 아이콘으로 모달 열기
보고 완료 상태에서 배지 클릭으로만 열리던 것을 명확히 — 배지 오른쪽에 보고서 아이콘 버튼 추가, 아이콘 클릭 시 보고 모달 오픈(열람 권한자만). 배지는 상태 표시 전용으로 변경.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 17:31:13 +09:00
ttipo 32c04db9fe fix: 지시자 보고 모달 보고자 메모 상하 여백 정리
pr-memo margin을 위 0.375rem·아래 0(비대칭)에서 상하 0.875rem 균등으로, 본문 하단 패딩 추가.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 17:26:41 +09:00
ttipo b8bb046733 fix: 보고 모달에서 빈 카테고리 탭에 안내 텍스트 표시
전체가 비었을 때만 안내하던 것을 현재 탭 기준으로 변경 — 특정 카테고리에 항목이 없으면 ''X' 분류에 항목이 없습니다' 안내.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 17:24:00 +09:00
ttipo 1f7d7dcebb feat: 진행 보고 작성/열람 모달 UI 개편(시안 반영)
시안(진행 상태 보고서/받은 진행 보고) 기준으로 두 모달 전면 개편:
- 전체 탭 + 카테고리 탭(색상 dot·건수), 전체 탭에서 카테고리별 그룹 헤더로 묶음
- 작성(작업자): 항목별 상태색 드롭다운(StatusSelect, body Teleport), 보고 메모, 하단 상태 요약(대기/진행/완료 N)
- 열람(지시자·담당자): '진행 보고 도착' 태그 + 보고자 아바타/이름/점검일·시각, 읽기전용 상태 배지, 보고자 메모 박스
- 신규 StatusSelect 컴포넌트 추가, 기존 cp-modal/ws-* 스타일 정리, 미사용 DropdownSelect import 제거

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 17:19:08 +09:00
ttipo 1df0f2e4e2 feat: 업무 수정/편집을 지시자 전용으로 + 더보기 메뉴를 삭제만 남김
- 상세 우측 상단 액션(수정 버튼 + 더보기 메뉴) 전체를 isIssuer 일 때만 노출
- 더보기 메뉴에서 업무 복제·링크 복사 제거, 업무 삭제만 유지
- 편집 화면(/edit) 진입을 지시자 본인만 허용(그 외 상세로 리다이렉트). 생성 모드는 기존대로 관리자만

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:50:21 +09:00
ttipo 69a25d46ec docs: 중간 점검일 안내 문구 복원('지나면 누락')
직전 커밋에 휩쓸려 빠진 안내 문구 복원.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:44:29 +09:00
ttipo a8d068a76c refactor: 중간 점검을 상단 상태/담당/마감 카드에 통합 + 상태 항목 제거
별도 중간 점검 카드 제거 → 상단 카드의 마감기한 아래로 이동.
해당 카드에서 '상태' 항목 제거(상태는 상단 헤더 배지로 확인).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:43:05 +09:00
ttipo ce50c3c4f5 style: 보고서 모달 버튼을 공용 .btn 크기로 통일
보고서 작성 모달의 취소/보내기 버튼을 커스텀 소형 버튼 → 전역 .btn / .btn primary(height 2.25rem)로 교체해 다른 화면과 크기 통일.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:36:09 +09:00
ttipo 2fd19e0bec style: 진행 상태 라벨 '미착수'를 '대기'로 변경
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:33:31 +09:00
ttipo 1a6321ed49 style: 보고 모달 항목 영역 최소 높이 확대 + 빈 상태 텍스트 중앙 정렬
cp-modal-items min-height 9rem→14rem, cp-modal-empty 를 margin:auto 로 상하/좌우 중앙 배치.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:31:42 +09:00
ttipo bc99911b5f style: 보고 모달 항목 영역 최소 높이 지정 + 상하 패딩 통일
cp-modal-items: min-height 9rem(빈 상태/소수 항목에서도 답답하지 않게), 상하 패딩 1rem 으로 통일.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:29:54 +09:00
ttipo 69708b2b8b fix: 드롭다운 메뉴를 body Teleport(fixed)로 띄워 잘림 해결 + 보고 모달 높이 확대
DropdownSelect 메뉴를 absolute → body Teleport + fixed 위치 계산으로 변경.
스크롤/overflow 컨테이너(보고 모달 등) 안에서도 메뉴가 잘리지 않음(스크롤·리사이즈 시 닫힘).
보고 열람/작성 모달 max-height 를 calc(100vh - 3rem) 로 확대.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:26:57 +09:00
ttipo b00785d056 fix: 보고서 작성 상태 드롭다운 화살표를 오른쪽 끝으로 정렬
min-width 로 생긴 여백이 chevron 뒤에 남아 화살표가 가운데로 보이던 문제 수정 — 라벨 flex:1 로 화살표를 우측 끝에 고정.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:22:03 +09:00
ttipo 4a31331ae1 feat: 보고서 작성 항목 상태를 내용 앞 드롭다운으로 변경
세그먼트 버튼 → 할 일 내용 앞쪽의 DropdownSelect(미착수/진행중/완료)로 선택하도록 변경.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:19:49 +09:00
ttipo 8a52ad0d0a feat: 진행 보고서 작성을 모달 + 카테고리 탭 방식으로 변경
인라인 보고서 폼 제거 → '보고서 작성' 클릭 시 모달로 띄움.
모달 내 항목은 필수/관리/보안/부가 탭으로 구분해 항목별 상태를 선택하고 메모와 함께 전송.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:15:55 +09:00
ttipo 6577550937 feat: 중간 점검 보고 내용은 지시자·담당자만 열람(상태는 전원 노출)
보고 '내용' 열람을 지시자 + 해당 업무 담당자로 제한:
- 백엔드 buildDetail: viewerId 기준으로 권한 없으면 checkpointReports 를 빈 배열로 응답(findOne 에 현재 사용자 전달). 점검일에는 reported 플래그를 두어 상태는 전원 공유
- 프론트: checkpointState 는 reported 플래그 기준, '보고 완료' 클릭(모달)은 지시자·담당자만. 그 외는 비클릭 상태 배지

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:01:50 +09:00
ttipo b717ecd9a5 fix: 보고된 중간 점검일 삭제 방지(보고 이력 보존)
수정 시 보고가 접수된 점검일을 지우면 CASCADE 로 보고서까지 삭제되던 문제 방지:
- 백엔드 syncCheckpoints: 보고가 있는 점검일은 삭제 대상에서 제외
- 프론트 수정 폼: 보고된 점검일은 '보고됨' 잠금 배지로 표시하고 삭제 버튼 비노출

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 15:49:51 +09:00
ttipo 814dd7bb8b feat: 업무 상세 해야 할 일을 카테고리 탭 구조로 변경
그룹 나열 → 필수/관리/보안/부가 탭으로 전환(생성 화면·보고 모달과 동일한 탭 UI 재사용).
검토 모달은 기존 그룹 구조 유지.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 15:39:54 +09:00
ttipo 98a2308c4e feat: 중간 점검 보고를 모달 + 카테고리 탭으로 열람
하단 토글 목록 제거 → 상단 '보고 완료' 체크포인트 클릭 시 모달로 보고 내용 표시.
모달은 업무 생성의 카테고리 탭(필수/관리/보안/부가) 방식으로 항목을 구분해 보여준다.
보고 스냅샷에 category 추가(백엔드 엔티티/서비스 + 프론트 타입/뷰/스토어).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 15:33:19 +09:00
ttipo 31704cc95b style: 상세 체크리스트 진행상태 배지 제거 + 중간 점검 목록/배지/버튼 크기 조정
- 해야 할 일 항목의 진행상태 배지 제거(진행상태는 중간 점검 보고/기록에서만 확인)
- 중간 점검 점검일 목록 간격 확대, 상태 배지·보고서 작성 버튼 크기 소폭 확대

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 15:25:39 +09:00
ttipo 4ef07f65a7 refactor: 중간 점검을 점검일 당일 보고서 방식으로 변경
진행 상태(미착수/진행중/완료)를 상시 토글 대신 '보고서'로 전환:
- 보고는 점검일 당일(KST)에만 가능, 지나면 누락 — 마감 전 상시 전송 제거
- 작업자가 점검일 당일 보고서 폼에서 항목별 상태 + 메모를 작성해 전송(상태는 보고에 포함)
- 지시자는 상세 화면에서 보고 기록을 접힌 목록으로 보고 클릭해 펼쳐 열람
- 체크리스트 항목은 마지막 보고 상태를 읽기 전용 배지로 표시(인라인 편집 제거)
- 상시 진행상태 갱신 엔드포인트/DTO 제거(work-status)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 15:18:58 +09:00
ttipo 25ca63a925 feat: 중간 점검(체크포인트) 프론트 — 진행상태 토글·점검일 입력·보고
작성/수정 화면: 중간 점검일 여러 개 입력(추가/삭제, 편집 모드 로드).
상세 화면: 체크리스트 항목별 작업자 진행상태(미착수/진행중/완료) 토글(담당자) + 비담당자 배지,
중간 점검 카드(점검일 목록, 점검일~마감 구간 '보고 보내기', 보고 메모, 보고 이력 스냅샷).
타입/컴포저블/스토어/뷰모델 + 알림(task.checkpoint_reported) 렌더 연동.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 14:57:52 +09:00
ttipo c550d66826 fix: 업무 작성/수정 화면 진입을 프로젝트 관리자로 제한
비관리자가 URL 로 직접 진입해도 폼이 열리던 문제 수정 — 프로젝트 로드 후 canManage 가 아니면
경고 후 프로젝트 상세로 리다이렉트. 생성·수정 모두 백엔드 admin 전용과 일치시킨다.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 14:13:53 +09:00
ttipo 48b8a1b613 fix: 업무 목록의 새 업무 버튼을 프로젝트 관리자에게만 노출
프로젝트 상세 업무 목록의 '새 업무' 버튼을 repo.canManage(관리자) 일 때만 표시.
업무 생성은 백엔드에서 이미 admin 전용이므로 UI 노출을 권한과 일치시킨다.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 14:11:42 +09:00
ttipo 9e2326f939 style: 이메일 인증 완료 화면에서 상단 브랜드·이 창에서 로그인 버튼 제거
새 탭으로 뜨는 인증 완료 화면을 간결하게 정리 — 상단 Relay 브랜드 표기와
'이 창에서 로그인하기' 버튼을 제거하고, 미사용이 된 RelayMark import·관련 CSS 정리.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 13:55:20 +09:00
ttipo 24031d93a9 fix: 미인증 로그인 시 에러 토스트 없이 발송 완료 화면으로 전환
로그인 호출에 silent 옵션을 추가해 전역 에러 토스트를 끄고, 로그인 화면에서 에러를 직접 처리.
미인증(403)은 토스트 없이 인증 메일 발송 후 발송 완료 화면으로 이동하고, 그 외 자격 오류만 다이얼로그로 안내.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 13:52:06 +09:00
ttipo 6c0f1778c8 fix: 미인증 로그인 시 인증 메일 자동 발송 후 발송 완료 화면으로 이동
로그인 화면 상단 인라인 재발송 배너를 제거하고, 미인증(403) 로그인 시도 시
인증 메일을 즉시 발송한 뒤 /signup?sent=<이메일> 의 '발송 완료' 화면으로 이동하도록 변경.
SignupPage 는 sent 쿼리로 진입하면 곧바로 발송 완료 단계를 표시한다.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 13:49:48 +09:00
ttipo 5e742e5c8b fix: 미인증 계정 재가입 허용 및 로그인 화면 인증 메일 재발송
인증 미완료 상태에서 재가입/로그인이 모두 막혀 데드락되던 문제 해결.
- signup: 인증 완료 계정만 409로 거부하고, 미인증 로컬 계정은 입력값으로 갱신 후 인증 메일 재발송(중복 계정 생성 안 함)
- 로그인 화면: 미인증(403) 응답 시 '인증 메일 다시 보내기' 인라인 액션 노출

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 13:42:34 +09:00
ttipo 433901312d feat: Relay 브랜드 로고·favicon 전면 적용
사이드바·인증 화면 'R' 텍스트 로고를 브랜드 더블 셰브론 마크(RelayMark)로 교체.
favicon을 SVG+PNG+ICO 세트와 웹 매니페스트로 정비(create-vue 기본 아이콘 대체), 가운데 셰브론을 키워 작은 크기 가독성 개선.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 12:06:31 +09:00
ttipo 6767316cdb feat: 정렬·필터 서버 측 동작 구현 및 커스텀 드롭다운 적용
프로젝트 목록·업무 목록·내 업무에 정렬/검색/프로젝트 필터를 백엔드 쿼리 파라미터로 추가(페이지네이션과 일관). 활동 멤버 필터는 전량 로드 피드 기준 클라이언트 처리.
모든 정렬/필터 및 멤버 초대 역할 선택을 네이티브 select → 공통 DropdownSelect 컴포넌트로 통일.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 12:06:17 +09:00
ttipo 71040f94c8 style: 전 화면 컨텐츠 최대 너비 통일
업무 작성 화면의 .page max-width(77.5rem) override 제거 → 전역 기본값 67.5rem 상속.
프로젝트 목록·내 업무·상세 등 다른 화면과 동일한 너비로 정렬.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 12:06:01 +09:00
ttipo 1e6acff4f1 feat: 업무 상세 화면을 첨부파일 보기 전용으로 변경
상세 화면에서 첨부 업로드·삭제 UI/로직을 제거하고 목록 표시만 유지.
업로드는 작성·편집 화면에서만 가능하도록 일원화(미사용 스토어 액션·CSS 정리).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 12:05:53 +09:00
ttipo 9e29d0d0b0 refactor: 업무 삭제 모달을 공통 다이얼로그로 흡수
업무 삭제 모달은 공통 다이얼로그와 동일 구조(아이콘+제목+설명+취소/삭제)라
공통 시스템으로 통합한다. 구조가 다른 할 일 검토 모달은 그대로 유지.

- showDelete·confirmDelete·삭제 모달 마크업 제거
- askDelete() 에서 dialog.confirm(danger, 삭제)로 확인받아 삭제

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 23:35:03 +09:00
ttipo b1afe5480c feat: alert/confirm을 공통 모달 다이얼로그로 통합
모든 window.alert/confirm 을 업무 삭제 모달과 동일한 구조/디자인의
공통 모달로 대체하고, 한 곳에서 관리하도록 다이얼로그 시스템을 도입한다.

- dialog.store: 알림/확인 큐 + Promise 기반 상태 관리
- useDialog(): alert/confirm 컴포저블 API
- AppDialog: App 루트 1회 마운트, 전역 .modal-*/.mbtn 클래스로 렌더
  (variant: info/success/warning/danger → 아이콘·버튼 색)
- relay.css: modal-ico.info/.warning, mbtn.primary 변형 추가
- 교체: API 에러 알림(useApi), 검증/성공 알림(Signup/ProjectCreate/
  ProjectSettings/TaskCreate), 삭제·제거 확인(ProjectSettings/
  ProjectMembers/AgentChatPanel)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 22:46:28 +09:00
ttipo 118d12f829 style: 지시자 카드의 지시 시각을 카드 우측 상단으로 이동
업무 상세 지시자 카드 하단에 있던 '언제 지시했는지' 텍스트를 '지시자' 라벨과
같은 줄의 우측 상단으로 배치한다.

- side-head(라벨 + 우측 보조 텍스트) 한 줄 배치 추가, issued-at 우측 정렬
- 하단 .meta-line 제거(미사용 스타일 정리)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 22:16:27 +09:00
ttipo 5c3b1e5ab4 feat: 겹친 담당자 아바타 스택을 최대 3개 + N 형태로 통일
가로로 겹쳐 표시되는 프로필 스택이 3개를 넘으면 마지막에 +N 으로 표기한다.

- 업무 목록(ProjectDetailPage): 담당자 스택 3개 초과 시 +N
- 내 업무(MyTasksPage): 미니 담당자 스택 3개 초과 시 +N(.mini-more 추가)
- 프로젝트 멤버 스택(목록/헤더)은 이미 백엔드 AVATAR_LIMIT=3 으로 동일 처리됨
- 담당자 세로 목록(상세)·칩(지시 작성)은 겹침 스택이 아니라 제외

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 22:12:57 +09:00
ttipo f6b01b01a8 fix: 프로젝트 헤더에서 설명 없을 때 제목·메타 사이 빈 여백 제거
ProjectHeader(상세·멤버·활동·설정 공용)의 .rh-desc 가 설명이 비어도 빈 줄로
렌더되어 제목과 프로필·업데이트 시간 사이 간격이 벌어지던 문제 수정 —
설명이 있을 때만 렌더. (프로젝트 목록과 동일 처리)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 22:04:08 +09:00
ttipo d9a343e5e9 fix: 프로젝트 목록에서 설명 없을 때 제목·메타 사이 빈 여백 제거
설명(desc)이 비어도 .repo-desc 가 빈 줄로 렌더되어 제목과 프로필·업데이트
시간 영역 사이 간격이 과하게 벌어지던 문제 수정 — 설명이 있을 때만 렌더.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 21:48:09 +09:00
ttipo 32815a0627 fix: 로그아웃을 사이드바 하단 상시 노출 버튼으로 변경
기존 드롭다운 메뉴 안에 숨어 보이지 않던 로그아웃을 항상 노출되는
버튼으로 변경한다.

- 사용자 프로필 행은 표시 전용, 아래에 로그아웃 버튼 상시 노출(빨강 호버)
- 접힘 시 아이콘만 표시
- 미사용 드롭다운(menuOpen·me-menu·me-overlay) 로직/스타일 제거

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 21:40:30 +09:00
ttipo f4a1253526 feat: 사이드바 접기 + 모바일 드로어 + 검색 아이콘 제거
- 데스크톱: 사이드바 접기 토글(아이콘 레일, 상태 localStorage 보존)
  접힘 시 브랜드/네비/사용자가 아이콘만 표시, 메뉴는 레일 우측으로 펼침
- 모바일(≤48rem): 사이드바를 오버레이 드로어로 전환, 툴바 햄버거로 열고
  배경/화면 전환 시 닫힘(접힘 상태는 모바일에서 무시)
- 전역 도구에서 미사용 검색 아이콘 제거

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 21:33:39 +09:00
ttipo f60f705f56 refactor: 상단 헤더 네비게이션을 좌측 사이드바로 전환
추후 메뉴 확장을 고려해 AppShell 레이아웃을 사이드바 구조로 변경한다.

- 좌측 사이드바: 브랜드 + 세로 네비(내 업무/프로젝트, 아이콘) + 하단 사용자 프로필·메뉴(위로 펼침)
- 우측 본문 컬럼: 슬림 툴바(페이지 액션 슬롯 + AI/검색/알림) + 기존 페이지 슬롯
- 알림 드롭다운·AI 패널 동작은 그대로 유지(.page 본문은 컬럼 내 중앙 정렬)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 21:23:09 +09:00
ttipo 3b78574855 feat: 수정 요청 메시지를 선택 사항으로 변경
수정 요청 시 공용 메시지 입력을 필수에서 선택으로 완화한다.

- 백엔드: ApprovalChangesDto.note 를 선택값으로 변경, requestChanges 가
  빈 메시지면 changesNote 를 null 로 저장
- 프론트: 제출 버튼 비활성(메시지 필수) 해제, 빈 메시지는 미전송,
  안내/라벨 문구를 '선택'으로 정리

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 19:42:37 +09:00
ttipo 70d75cf88d refactor: 승인 요청 흐름에서 메시지 입력·표시 제거
수정 요청(검토 모달)을 제외한 나머지 승인 흐름에서는 메시지를 사용하지 않는다.

- 진행 중 → 승인 요청 카드의 메시지 입력창 제거
- 승인 요청 도착 카드의 승인 메시지 표시 제거
- approvalNote 상태 제거, sendApproval 은 메시지 없이 요청
- 미사용이 된 .ap-note 입력 스타일 정리(수정 요청 메모 .ap-note-box 는 유지)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 19:28:16 +09:00