Skip to content

feat: 받은 견적 기능 구현 - #15

Merged
juengseulki merged 9 commits into
devfrom
feature/received-estimate-list
Jul 24, 2026
Merged

feat: 받은 견적 기능 구현#15
juengseulki merged 9 commits into
devfrom
feature/received-estimate-list

Conversation

@juengseulki

@juengseulki juengseulki commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

📋 작업 내용

받은 견적 기능을 구현했습니다.


🔥 변경 사항

  • 받은 견적 목록 조회 구현
  • 받은 견적 상세 조회 구현
  • 견적 확정 기능 연동
  • 모바일 반응형 UI 구현
  • Desktop / Tablet / Mobile 레이아웃 적용
  • Figma 기준 UI 반영

✅ 체크리스트

  • 로컬에서 정상 동작을 확인했습니다.
  • 기존 기능에 영향을 주지 않는지 확인했습니다.
  • 불필요한 console.log를 제거했습니다.
  • lint를 통과했습니다.
  • README 또는 문서를 수정했습니다. (필요 시)
  • API 명세와 일치하는지 확인했습니다.

📷 스크린샷 (선택)

image image image image image image image

🔗 관련 이슈

Closes #


💬 To Reviewer

받은 견적 목록, 상세 조회, 견적 확정 및 반응형 UI가 정상적으로 동작하는지 확인 부탁드립니다.

Summary by CodeRabbit

  • 새 기능
    • 받은 견적을 API로 불러오고 전체/확정/대기 필터를 지원합니다.
    • 견적 상세에 기사 정보, 요청/가격 표시, 공유(링크 복사), 확정 상태 및 확정 UI를 추가했습니다.
    • 기사 찜하기와 견적 확정 기능을 연동했습니다.
    • “대기 중” 안내 페이지, 내 견적 탭 네비게이션, /estimates 기본 리다이렉트를 적용했습니다.
    • 개발용 임시 로그인 화면을 추가했습니다.
  • 개선 사항
    • 로딩/빈/오류 상태와 재시도, 사용자 친화적 에러 메시지 노출을 강화했습니다.

@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

개발 인증과 견적 API를 연동하고, 받은 견적 목록·필터·찜 기능 및 견적 상세 조회·확정·공유 화면을 구현했습니다. 견적 라우트 레이아웃, 탭 네비게이션, 관련 타입·아이콘·스타일 토큰도 추가되었습니다.

Changes

견적 계약과 개발 인증 기반

Layer / File(s) Summary
견적 타입·API·개발 인증
src/types/estimate.ts, src/lib/constants/*, src/lib/api/*, src/lib/dev-auth.ts, src/app/dev-login/page.tsx
견적 목록·상세·확정·찜·로그인 API와 타입, 쿼리 키, 개발 토큰 저장 및 401 리다이렉트 흐름이 추가되었습니다.

받은 견적 조회와 목록 UI

Layer / File(s) Summary
목록 조회와 상태 처리
src/hooks/useReceivedEstimates.ts, src/components/estimate/received/ReceivedEstimatesPageClient.tsx, src/components/estimate/received/ReceivedEstimatesStatus.tsx
받은 견적 API의 로딩·오류·성공 상태와 재시도·토스트 처리가 연결되었습니다.
요청 요약·필터·카드
src/components/estimate/received/*, src/components/common/Select/SelectMain.tsx
요청 정보와 이동 유형을 표시하고 전체·확정·대기 필터, 기사 카드와 반응형 가격·상태 UI를 구성했습니다.
찜 상태 동기화
src/hooks/useFavoriteMover.ts, src/lib/api/favorites.ts, src/icons/like.tsx
찜 변경 API와 낙관적 캐시 갱신, 실패 시 복원 및 상태별 하트 아이콘을 구현했습니다.

견적 상세 조회와 확정

Layer / File(s) Summary
상세 라우트와 데이터 훅
src/app/estimates/[estimateId]/page.tsx, src/hooks/useEstimateDetail.ts
라우트 파라미터를 검증하고 상세 조회·확정 mutation 및 관련 캐시 갱신을 연결합니다.
상세 정보·확정·공유 UI
src/components/estimate/detail/*
로딩·오류·성공 화면, 기사 정보, 견적가, 요청 정보, 확정 상태와 링크 복사 토스트를 반응형으로 표시합니다.

견적 라우트와 공통 레이아웃

Layer / File(s) Summary
견적 페이지 라우팅
src/app/estimates/page.tsx, src/app/estimates/pending/page.tsx, src/app/estimates/received/page.tsx, src/app/estimates/layout.tsx
견적 루트를 받은 견적 경로로 리다이렉트하고, 대기·받은 견적 페이지와 공통 shell을 구성합니다.
경로별 탭과 스타일 토큰
src/components/estimate/EstimatesShell.tsx, src/components/estimate/MyEstimateTabs.tsx, src/styles/tokens.theme.css, src/components/common/Header/Header.tsx, src/components/common/Footer/Footer.tsx
받은 견적·대기 경로에서만 탭을 표시하고 Tailwind spacing·padding·container alias와 공통 헤더·푸터 유틸을 갱신합니다.

공통 UI와 포맷팅

Layer / File(s) Summary
공통 선택·아이콘·포맷 유틸
src/components/common/Select/SelectMain.tsx, src/icons/*, src/lib/utils/*
선택 컴포넌트의 외부 클래스 병합, 아이콘 export 및 상태·날짜·금액·평점 포맷 유틸을 추가했습니다.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

Suggested labels: 🏢코드리뷰

Suggested reviewers: 9g-g9, soooob43

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 30.51% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 받은 견적 목록, 상세, 확정, UI 관련 변경을 잘 요약한 제목입니다.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/received-estimate-list

Comment @coderabbitai help to get the list of available commands.

@juengseulki juengseulki changed the title Feature/received estimate list feat: 받은 견적 기능 구현 Jul 24, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🧹 Nitpick comments (5)
src/app/dev-login/page.tsx (1)

1-25: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

페이지를 Server Component 래퍼와 클라이언트 폼으로 분리하세요.

현재 "use client" 때문에 이 라우트에서 metadata를 export할 수 없고 전체 페이지가 클라이언트 번들로 내려갑니다. page.tsx는 서버 래퍼로 두고, 폼만 별도 Client Component로 옮겨 noindex 메타데이터를 설정하세요.

As per path instructions, 페이지별 메타데이터를 설정하고 "use client"는 가능한 말단 컴포넌트에만 두어야 합니다.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/app/dev-login/page.tsx` around lines 1 - 25, Split DevLoginPage into a
server-side page wrapper and a separate client form component, moving the
current state, router, event, and login logic into the form component with the
"use client" directive. Remove "use client" from page.tsx, export page-level
noindex metadata there, and keep the existing development login behavior
unchanged.

Source: Path instructions

src/components/estimate/detail/EstimateDetailShare.tsx (1)

10-30: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Kakao/Facebook 아이콘을 공통 아이콘으로 분리하세요.
src/icons/index.ts에는 아직 없어서, 이 컴포넌트에서 재사용할 예정이면 SVG를 그쪽으로 옮겨 import하는 편이 좋습니다.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/estimate/detail/EstimateDetailShare.tsx` around lines 10 - 30,
Move the KakaoIcon and FacebookIcon SVG components from EstimateDetailShare into
the shared src/icons/index.ts exports, then import and reuse those shared icons
in EstimateDetailShare instead of defining local copies.

Source: Path instructions

src/app/estimates/pending/page.tsx (1)

1-13: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

페이지별 metadata export 누락.

실제 콘텐츠를 렌더링하는 페이지인데 metadata export가 없습니다. As per path instructions, "metadata export로 페이지별 메타데이터를 설정했는지 확인해 주세요."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/app/estimates/pending/page.tsx` around lines 1 - 13, PendingEstimatesPage
페이지에 metadata export를 추가해 페이지 제목 등 필요한 메타데이터를 설정하세요. 기존 Text 렌더링과 레이아웃은 유지하고,
프로젝트의 다른 페이지에서 사용하는 metadata 형식과 명명 규칙을 재사용하세요.

Source: Path instructions

src/components/estimate/received/EstimateOfferCard.tsx (1)

69-82: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

반응형 분기용 Text 중복 렌더링.

동일 텍스트를 md:hidden/hidden md:block variant로 3곳에서 이중 렌더링하고 있습니다. 접근성 문제는 없지만(비표시 요소는 display:none), DOM 중복과 유지보수 부담이 있습니다. Text가 반응형 variant를 지원하지 않는다면 지금 구조가 최선일 수 있으나, 반복되는 패턴이라면 헬퍼로 추출하는 것도 고려해 보세요.

Also applies to: 105-118, 200-209

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/estimate/received/EstimateOfferCard.tsx` around lines 69 - 82,
EstimateOfferCard에서 동일한 intro 텍스트를 md:hidden 및 hidden md:block Text로 반복 렌더링하는
패턴을 3곳에서 헬퍼로 추출해 중복을 제거하세요. Text가 반응형 variant를 직접 지원하지 않는 경우 헬퍼가 현재의 모바일/데스크톱
스타일과 표시 동작을 그대로 유지하도록 하며, 세 위치 모두 해당 헬퍼를 재사용하세요.
src/components/estimate/received/MoveTypeChip.tsx (1)

16-16: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

공통 shadow 값 분리 두 칩에서 같은 shadow-[4px_4px_4px_0_rgba(217,217,217,0.1)]가 반복됩니다. 공통 토큰이나 유틸로 빼서 중복을 줄여 주세요.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/estimate/received/MoveTypeChip.tsx` at line 16, Move the
duplicated shadow utility used by both chips into a shared design token or
reusable utility, then reference that shared symbol from the chip class
definitions instead of repeating shadow-[4px_4px_4px_0_rgba(217,217,217,0.1)].

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/app/dev-login/page.tsx`:
- Around line 97-101: Update the errorMessage rendering in the dev-login page to
expose asynchronously added login failures as an accessible live region. Add an
appropriate alert or aria-live attribute to the existing Text element while
preserving its current conditional rendering and styling.

In `@src/app/estimates/`[estimateId]/page.tsx:
- Around line 1-19: EstimateDetailPage에 페이지별 메타데이터를 제공하는 metadata export를 추가하세요.
기존 EstimateDetailPage의 라우트 동작과 EstimateDetailView 렌더링은 유지하고, 상세 견적 페이지에 적절한
title과 description을 설정하세요.
- Around line 12-16: Update the estimateId validation in the page component to
reject non-integer numeric IDs as well as non-finite and non-positive values.
Ensure values such as “1.5” are handled by notFound() and only positive integers
reach EstimateDetailView.

In `@src/app/estimates/received/page.tsx`:
- Around line 4-6: Export page metadata alongside ReceivedEstimatesPage,
defining the route’s page title and SEO-relevant fields while preserving the
existing server wrapper and its ReceivedEstimatesPageClient render.

In `@src/components/estimate/MyEstimateTabs.tsx`:
- Line 22: MyEstimateTabs의 탭 컨테이너에서 하드코딩된 shadow arbitrary value를 제거하세요. 프로젝트의
디자인 토큰 체계에 의미 있는 탭 그림자 토큰을 추가하고, 해당 className이 새 토큰 기반 shadow 유틸리티를 사용하도록 변경하세요.

In `@src/lib/dev-auth.ts`:
- Around line 58-64: Remove the client-accessible default password retrieval
from getDevLoginDefaultPassword in src/lib/dev-auth.ts, and update
src/app/dev-login/page.tsx to initialize the password useState value as an empty
string instead of calling it; keep the email default behavior unchanged.

In `@src/lib/utils/estimateFormat.ts`:
- Around line 15-38: formatMoveDateLabel에서 date-only 문자열을 new Date(value)로 파싱해
타임존에 따라 날짜가 전날로 바뀌는 문제를 수정하세요. 해당 함수의 문자열 처리만 별도 로직 또는 공용 파서로 분리해 YYYY-MM-DD 각
부분을 직접 해석하고 로컬 날짜로 구성하며, Date 입력 처리와 기존 출력 형식은 유지하세요.

---

Nitpick comments:
In `@src/app/dev-login/page.tsx`:
- Around line 1-25: Split DevLoginPage into a server-side page wrapper and a
separate client form component, moving the current state, router, event, and
login logic into the form component with the "use client" directive. Remove "use
client" from page.tsx, export page-level noindex metadata there, and keep the
existing development login behavior unchanged.

In `@src/app/estimates/pending/page.tsx`:
- Around line 1-13: PendingEstimatesPage 페이지에 metadata export를 추가해 페이지 제목 등 필요한
메타데이터를 설정하세요. 기존 Text 렌더링과 레이아웃은 유지하고, 프로젝트의 다른 페이지에서 사용하는 metadata 형식과 명명 규칙을
재사용하세요.

In `@src/components/estimate/detail/EstimateDetailShare.tsx`:
- Around line 10-30: Move the KakaoIcon and FacebookIcon SVG components from
EstimateDetailShare into the shared src/icons/index.ts exports, then import and
reuse those shared icons in EstimateDetailShare instead of defining local
copies.

In `@src/components/estimate/received/EstimateOfferCard.tsx`:
- Around line 69-82: EstimateOfferCard에서 동일한 intro 텍스트를 md:hidden 및 hidden
md:block Text로 반복 렌더링하는 패턴을 3곳에서 헬퍼로 추출해 중복을 제거하세요. Text가 반응형 variant를 직접 지원하지
않는 경우 헬퍼가 현재의 모바일/데스크톱 스타일과 표시 동작을 그대로 유지하도록 하며, 세 위치 모두 해당 헬퍼를 재사용하세요.

In `@src/components/estimate/received/MoveTypeChip.tsx`:
- Line 16: Move the duplicated shadow utility used by both chips into a shared
design token or reusable utility, then reference that shared symbol from the
chip class definitions instead of repeating
shadow-[4px_4px_4px_0_rgba(217,217,217,0.1)].
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 228da132-1f61-40d4-940e-3051dcd6b471

📥 Commits

Reviewing files that changed from the base of the PR and between 8676328 and 1451c11.

⛔ Files ignored due to path filters (1)
  • src/icons/confirmed-estimate.svg is excluded by !**/*.svg
📒 Files selected for processing (49)
  • src/app/dev-login/page.tsx
  • src/app/estimates/[estimateId]/page.tsx
  • src/app/estimates/layout.tsx
  • src/app/estimates/page.tsx
  • src/app/estimates/pending/page.tsx
  • src/app/estimates/received/page.tsx
  • src/components/.gitkeep
  • src/components/common/Footer/Footer.tsx
  • src/components/common/Header/Header.tsx
  • src/components/common/Select/SelectMain.tsx
  • src/components/estimate/.gitkeep
  • src/components/estimate/EstimatesShell.tsx
  • src/components/estimate/MyEstimateTabs.tsx
  • src/components/estimate/detail/EstimateDetailActions.tsx
  • src/components/estimate/detail/EstimateDetailDriverSummary.tsx
  • src/components/estimate/detail/EstimateDetailHeader.tsx
  • src/components/estimate/detail/EstimateDetailHero.tsx
  • src/components/estimate/detail/EstimateDetailInfo.tsx
  • src/components/estimate/detail/EstimateDetailPrice.tsx
  • src/components/estimate/detail/EstimateDetailShare.tsx
  • src/components/estimate/detail/EstimateDetailView.tsx
  • src/components/estimate/received/EstimateDetailPanel.tsx
  • src/components/estimate/received/EstimateOfferCard.tsx
  • src/components/estimate/received/EstimateOfferSection.tsx
  • src/components/estimate/received/EstimateRequestSummary.tsx
  • src/components/estimate/received/MoveTypeChip.tsx
  • src/components/estimate/received/ReceivedEstimatesList.tsx
  • src/components/estimate/received/ReceivedEstimatesPageClient.tsx
  • src/components/estimate/received/ReceivedEstimatesStatus.tsx
  • src/hooks/.gitkeep
  • src/hooks/useEstimateDetail.ts
  • src/hooks/useFavoriteMover.ts
  • src/hooks/useReceivedEstimates.ts
  • src/icons/index.ts
  • src/icons/like.tsx
  • src/lib/.gitkeep
  • src/lib/api/axiosInstance.ts
  • src/lib/api/devLogin.ts
  • src/lib/api/favorites.ts
  • src/lib/api/getApiErrorMessage.ts
  • src/lib/api/receivedEstimates.ts
  • src/lib/constants/apiRoutes.ts
  • src/lib/constants/queryKeys.ts
  • src/lib/dev-auth.ts
  • src/lib/utils/estimateFormat.ts
  • src/styles/.gitkeep
  • src/styles/tokens.theme.css
  • src/types/.gitkeep
  • src/types/estimate.ts

Comment thread src/app/dev-login/page.tsx
Comment thread src/app/estimates/[estimateId]/page.tsx
Comment thread src/app/estimates/[estimateId]/page.tsx
Comment thread src/app/estimates/received/page.tsx
Comment thread src/components/estimate/MyEstimateTabs.tsx
Comment thread src/lib/dev-auth.ts Outdated
Comment thread src/lib/utils/estimateFormat.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/lib/api/axiosInstance.ts`:
- Around line 73-75: Update the isDevAuthEnabled branch in the Axios request
configuration flow to read the token via getDevAccessToken() and inject it into
the Authorization header before returning config. Preserve the existing
immediate return behavior while ensuring tokens stored by the dev-login flow are
sent on protected API requests.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 9814072c-a17e-4d8e-9bb6-69f769cbb8af

📥 Commits

Reviewing files that changed from the base of the PR and between 1451c11 and 998a265.

📒 Files selected for processing (2)
  • src/lib/api/axiosInstance.ts
  • src/lib/constants/apiRoutes.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/lib/constants/apiRoutes.ts

Comment thread src/lib/api/axiosInstance.ts Outdated
@juengseulki
juengseulki requested review from 9g-g9 and yooseohyeon July 24, 2026 09:21

@yooseohyeon yooseohyeon left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

전체적으로 컴포넌트 분리, 접근성, 시멘틱 마크업 등 여러 가지를 신경써서 잘 구현해주셔서 시급하게 고쳐야 할 이슈는 없습니다. 아래 코멘트들은 제안 정도에 가깝습니다. 파일들 보느라 리뷰가 좀 오래 걸려서 죄송합니다!

Comment thread src/components/estimate/detail/EstimateDetailShare.tsx
Comment thread src/components/estimate/detail/EstimateDetailShare.tsx
Comment thread src/components/estimate/detail/EstimateDetailShare.tsx
Comment thread src/components/estimate/received/EstimateDetailPanel.tsx Outdated
Comment thread src/components/estimate/received/EstimateOfferCard.tsx
Comment thread src/components/estimate/received/EstimateOfferSection.tsx
Comment thread src/components/estimate/received/MoveTypeChip.tsx Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
src/components/estimate/received/EstimateDetailPanel.tsx (1)

19-19: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

하드코딩된 그림자 색상을 토큰으로 교체하세요.

Line 19의 shadow-[...rgba(220,220,220,0.14)...]는 디자인 토큰 체계를 우회합니다. 정의된 shadow/color 토큰 조합으로 대체하세요.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/estimate/received/EstimateDetailPanel.tsx` at line 19, Replace
the hardcoded rgba shadow value in the EstimateDetailPanel className with the
existing design-system shadow/color token combination, preserving the current
responsive shadow behavior and all other classes.

Sources: Coding guidelines, Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/lib/utils/date.ts`:
- Around line 32-33: Update the date parsing logic around the value split and
Date construction to validate the YYYY-MM-DD format with a regular expression,
then compare the constructed Date’s year, month, and day against the original
components. Throw a RangeError for malformed or calendar-invalid values such as
2026-02-30, while preserving valid date handling.

---

Nitpick comments:
In `@src/components/estimate/received/EstimateDetailPanel.tsx`:
- Line 19: Replace the hardcoded rgba shadow value in the EstimateDetailPanel
className with the existing design-system shadow/color token combination,
preserving the current responsive shadow behavior and all other classes.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 229a64f9-d264-4e16-b0ab-ee1effb75435

📥 Commits

Reviewing files that changed from the base of the PR and between 998a265 and 3cb12e4.

⛔ Files ignored due to path filters (1)
  • src/icons/document.svg is excluded by !**/*.svg
📒 Files selected for processing (15)
  • src/app/dev-login/page.tsx
  • src/app/estimates/[estimateId]/page.tsx
  • src/app/estimates/received/page.tsx
  • src/components/estimate/detail/EstimateDetailShare.tsx
  • src/components/estimate/detail/EstimateDetailView.tsx
  • src/components/estimate/received/EstimateDetailPanel.tsx
  • src/components/estimate/received/EstimateOfferSection.tsx
  • src/components/estimate/received/MoveTypeChip.tsx
  • src/hooks/useEstimateDetail.ts
  • src/lib/api/axiosInstance.ts
  • src/lib/api/fetchInstance.ts
  • src/lib/constants/apiRoutes.ts
  • src/lib/dev-auth.ts
  • src/lib/utils/date.ts
  • src/lib/utils/estimateFormat.ts
💤 Files with no reviewable changes (1)
  • src/lib/constants/apiRoutes.ts
🚧 Files skipped from review as they are similar to previous changes (7)
  • src/app/estimates/received/page.tsx
  • src/components/estimate/received/MoveTypeChip.tsx
  • src/app/estimates/[estimateId]/page.tsx
  • src/hooks/useEstimateDetail.ts
  • src/components/estimate/received/EstimateOfferSection.tsx
  • src/components/estimate/detail/EstimateDetailView.tsx
  • src/lib/utils/estimateFormat.ts

Comment thread src/lib/utils/date.ts Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/lib/utils/date.ts`:
- Around line 62-68: Update the date construction logic in the surrounding
date-parsing function to handle years 0–99 without JavaScript’s automatic
1900–1999 adjustment, using setFullYear or explicitly rejecting that range.
Preserve the existing calendar-validity round-trip checks and returned Date
behavior for supported inputs.
- Around line 28-34: Align the moveDate input contract with date-only strings
expected by formatMoveDateLabel. Update API and mock data to use YYYY-MM-DD
values, or normalize ISO datetime strings before parseDateOnly receives them,
while preserving invalid-date validation.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 20c73c57-d1b0-4797-b7e9-66b28ed2e836

📥 Commits

Reviewing files that changed from the base of the PR and between 3cb12e4 and 73894d7.

📒 Files selected for processing (6)
  • src/app/dev-login/page.tsx
  • src/hooks/useEstimateDetail.ts
  • src/hooks/useFavoriteMover.ts
  • src/lib/api/axiosInstance.ts
  • src/lib/utils/date.ts
  • src/lib/utils/estimateFormat.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/app/dev-login/page.tsx
  • src/hooks/useFavoriteMover.ts

Comment thread src/lib/utils/date.ts Outdated
Comment thread src/lib/utils/date.ts Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/lib/utils/date.ts`:
- Around line 13-26: Update the date formatting flow around parsed and
parseDateOnly so date-only inputs are formatted using local date semantics
without applying the Asia/Seoul timeZone; retain the Asia/Seoul formatter for
actual datetime inputs. Preserve the existing invalid-date validation and Korean
date formatting options.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 198f3090-8c03-4204-b073-397d63559d7b

📥 Commits

Reviewing files that changed from the base of the PR and between 73894d7 and 5903360.

📒 Files selected for processing (3)
  • src/lib/api/moverEstimateRequests.ts
  • src/lib/utils/date.ts
  • src/lib/utils/estimateFormat.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/lib/utils/estimateFormat.ts

Comment thread src/lib/utils/date.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants