Skip to content

[FEATURE] 팀피셜록 공유하기 개선 #164#165

Merged
sunhwaaRj merged 8 commits intodevelopfrom
feature/#164-share-log
Apr 9, 2026
Merged

[FEATURE] 팀피셜록 공유하기 개선 #164#165
sunhwaaRj merged 8 commits intodevelopfrom
feature/#164-share-log

Conversation

@sunhwaaRj
Copy link
Copy Markdown
Contributor

@sunhwaaRj sunhwaaRj commented Apr 9, 2026

✅ PR 유형

어떤 변경 사항이 있었나요?

  • 새로운 기능 추가
  • 버그 수정
  • 코드에 영향을 주지 않는 변경사항(오타 수정, 탭 사이즈 변경, 변수명 변경)
  • 코드 리팩토링
  • 주석 추가 및 수정
  • 문서 수정
  • 빌드 부분 혹은 패키지 매니저 수정
  • 파일 혹은 폴더명 수정
  • 파일 혹은 폴더 삭제

📌 관련 이슈번호


✅ Key Changes

  • 공유하기 시 말풍선 계속 떠있도록 수정
  • og 태그 및 파비콘 확장 설정

📸 스크린샷 or 실행영상

image

🎸 기타 사항 or 추가 코멘트

Summary by CodeRabbit

릴리스 노트

  • New Features

    • 공유 가이드를 화면별로 표시하는 안내 풍선 추가
    • 페이지별 동적 메타데이터 생성으로 공유 미리보기 개선
  • UI Improvements

    • 스크롤바를 숨겨 더 깔끔한 인터페이스 제공
    • 편집 모드에서 오른쪽 패널 정렬 동작 조정
    • 파비콘 확장(ico/svg) 및 Apple 터치 아이콘 추가

@sunhwaaRj sunhwaaRj self-assigned this Apr 9, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 9, 2026

Walkthrough

팀피셜록 공유 가이드 UI와 레이아웃을 조정하고, 두 경로에 Next.js의 동적 메타데이터 생성 함수를 추가했으며 파비콘 설정과 스크롤바 숨김 유틸을 도입했습니다.

Changes

Cohort / File(s) Summary
동적 메타데이터 생성
src/app/(main)/project/[id]/page.tsx, src/app/(main)/teampsylog/[uuid]/page.tsx
generateMetadata() 추가: 프로젝트 페이지는 정적 메타, teampsylog 페이지는 API(axios)로 requesterName을 조회해 동적 title/openGraph 메타를 구성(오류 핸들링 및 폴백 포함).
공유 가이드 풍선 및 UI 개선
src/app/(main)/teampsylog/_components/KeywordBar.tsx, src/app/(main)/teampsylog/_components/KeywordGuideBalloon.tsx
KeywordBar에 사용자 해제 상태(dismissedByUser) 및 공유 전용 가이드 풍선 추가; KeywordGuideBalloon에 share?: boolean, balloonClassName?: string props 추가 및 위치/스타일 조건부 적용.
레이아웃·스크롤 및 패널 정렬 변경
src/app/(main)/teampsylog/_components/CommentPage.tsx, src/app/(main)/teampsylog/_components/LogNote.tsx, src/app/globals.css
CommentPage에 scrollbar-hide 클래스 적용; globals.css에 .scrollbar-hide 유틸 추가; LogNote의 오른쪽 패널 중앙 정렬 조건에서 isEditMode 제외(정렬 로직 변경).
아이콘/파비콘 설정
src/app/layout.tsx
metadata.icons를 단일 문자열에서 여러 아이콘 객체(48x48 .ico, svg) 및 Apple touch icon으로 변경.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related issues

  • #164: [FEATURE] 팀피셜록 공유하기 개선 — 공유 가이드 풍선, OG 메타 추가, 파비콘 관련 항목과 직접적으로 연관됨.

  • [FEATURE] 팀피셜록 공유하기 모달 추가 #166 — 팀피셜록 공유하기 기능 개선 관련; 본 PR의 공유 UI·메타데이터 변경이 해당 목표와 일치함.

Possibly related PRs

Suggested labels

FEATURE

Suggested reviewers

  • woneeeee
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% 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
Title check ✅ Passed PR 제목이 주요 변경사항인 '공유하기 개선'과 '파비콘 설정'을 간결하게 요약하고 있으며, 이슈 번호 #164를 포함하여 명확합니다.
Description check ✅ Passed PR 설명이 필수 템플릿의 모든 주요 섹션(PR 유형, 이슈번호, 주요 변경사항, 스크린샷)을 포함하고 있으며 요구사항을 충족합니다.
Linked Issues check ✅ Passed 코드 변경사항이 이슈 #164의 대부분의 핵심 요구사항을 충족합니다: 공유하기 말풍선 추가(KeywordBar, KeywordGuideBalloon), OG 메타 태그 설정(generateMetadata), 파비콘 확장(favicon.svg, favicon.ico, apple-touch-icon.png), 편집 모드 시 코멘트 유지(LogNote 변경).
Out of Scope Changes check ✅ Passed 모든 변경사항이 이슈 #164의 범위 내에 있습니다: 공유하기 개선, OG 설정, 파비콘 설정, 편집 모드 개선이 모두 요구사항과 일치합니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ 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/#164-share-log

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
src/app/(main)/teampsylog/[uuid]/page.tsx (1)

16-26: 공용 API 래퍼를 재사용해 응답 스키마 검증을 일관화하세요.

현재는 res.data?.result?.requesterName만 읽어 isSuccess 실패 케이스를 명시적으로 처리하지 않습니다. src/libs/api/teampsylog.tsgetRequesterInfo를 사용하면 타입/검증 로직을 중복 없이 맞출 수 있습니다.

♻️ 제안 수정안
-import axios from 'axios';
+import { getRequesterInfo } from '@/libs/api/teampsylog';
...
   try {
-    const res = await axios.get(
-      `${process.env.NEXT_PUBLIC_API_BASE_URL}/teamficial-log/requester`,
-      {
-        params: {
-          requesterUuid: uuid,
-        },
-      },
-    );
-
-    userName = res.data?.result?.requesterName ?? '사용자';
+    const requester = await getRequesterInfo(uuid);
+    userName = requester.requesterName ?? '사용자';
   } catch (error) {
     console.error('Failed to fetch requester data:', error);
   }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/app/`(main)/teampsylog/[uuid]/page.tsx around lines 16 - 26, The code
performs a raw axios.get and reads res.data?.result?.requesterName without using
the shared API wrapper or validating isSuccess; replace the axios call in
page.tsx with the getRequesterInfo function from src/libs/api/teampsylog.ts and
use its typed response: call getRequesterInfo({ requesterUuid: uuid }), check
response.isSuccess before accessing response.result.requesterName, set userName
= response.result.requesterName ?? '사용자' on success, and handle non-success or
thrown errors using the same error/validation flow the library uses to keep
response schema handling consistent.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/app/`(main)/teampsylog/_components/KeywordBar.tsx:
- Around line 66-70: The dismissedByUser ref prevents re-render so
showShareGuide (computed from dismissedByUser.current and isEditMode) doesn't
update when the X button is clicked; change dismissedByUser from useRef to
useState (e.g., [dismissedByUser, setDismissedByUser]) and update the X-button
click handler to call setDismissedByUser(true) so React re-renders and
showShareGuide (now computed from dismissedByUser and isEditMode) updates
correctly; also replace other places that read/write dismissedByUser.current
(lines referencing dismissedByUser) to use the state variable and setter.

In `@src/app/`(main)/teampsylog/[uuid]/page.tsx:
- Around line 16-23: The axios GET call that fetches requester data in
src/app/(main)/teampsylog/[uuid]/page.tsx currently has no timeout and can block
server-render paths; add a timeout option to the axios request config (e.g.,
timeout: 3000) in the existing axios.get call so the request fails fast, and
wrap the call in the existing error handling path to handle timeout errors
gracefully; make the exact same change for the identical axios.get invocation in
src/app/(main)/teampsylog/head/[uuid]/page.tsx so both metadata/server-render
routes use the timeout.

---

Nitpick comments:
In `@src/app/`(main)/teampsylog/[uuid]/page.tsx:
- Around line 16-26: The code performs a raw axios.get and reads
res.data?.result?.requesterName without using the shared API wrapper or
validating isSuccess; replace the axios call in page.tsx with the
getRequesterInfo function from src/libs/api/teampsylog.ts and use its typed
response: call getRequesterInfo({ requesterUuid: uuid }), check
response.isSuccess before accessing response.result.requesterName, set userName
= response.result.requesterName ?? '사용자' on success, and handle non-success or
thrown errors using the same error/validation flow the library uses to keep
response schema handling consistent.
🪄 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

Run ID: 5471ca45-3eb2-48fe-84ea-899edb89f79c

📥 Commits

Reviewing files that changed from the base of the PR and between 655d7f7 and 8ff1d36.

⛔ Files ignored due to path filters (8)
  • public/apple-touch-icon.png is excluded by !**/*.png
  • public/favicon.ico is excluded by !**/*.ico
  • public/file.svg is excluded by !**/*.svg
  • public/globe.svg is excluded by !**/*.svg
  • public/next.svg is excluded by !**/*.svg
  • public/vercel.svg is excluded by !**/*.svg
  • public/window.svg is excluded by !**/*.svg
  • src/app/favicon.ico is excluded by !**/*.ico
📒 Files selected for processing (8)
  • src/app/(main)/project/[id]/page.tsx
  • src/app/(main)/teampsylog/[uuid]/page.tsx
  • src/app/(main)/teampsylog/_components/CommentPage.tsx
  • src/app/(main)/teampsylog/_components/KeywordBar.tsx
  • src/app/(main)/teampsylog/_components/KeywordGuideBalloon.tsx
  • src/app/(main)/teampsylog/_components/LogNote.tsx
  • src/app/globals.css
  • src/app/layout.tsx

Comment thread src/app/(main)/teampsylog/_components/KeywordBar.tsx Outdated
Comment thread src/app/(main)/teampsylog/[uuid]/page.tsx
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

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 the current code and only fix it if needed.

Inline comments:
In `@src/app/`(main)/teampsylog/_components/KeywordBar.tsx:
- Around line 66-68: The showShareGuide visibility should not depend on
isEditMode; currently showShareGuide is computed as !dismissedByUser &&
!isEditMode which hides the toast in edit mode—change the logic to only use
dismissedByUser so the guide is shown unless the user dismissed it. Update the
declaration that computes showShareGuide (referencing showShareGuide,
dismissedByUser, setDismissedByUser, and isEditMode) to remove the !isEditMode
check and ensure any handlers that toggle setDismissedByUser remain intact;
verify any conditional rendering using showShareGuide now relies solely on
dismissedByUser.
🪄 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

Run ID: f3a682d4-8d0e-4d21-917f-cfbfa0a878a3

📥 Commits

Reviewing files that changed from the base of the PR and between 8ff1d36 and ac13fb7.

📒 Files selected for processing (1)
  • src/app/(main)/teampsylog/_components/KeywordBar.tsx

Comment thread src/app/(main)/teampsylog/_components/KeywordBar.tsx
@sunhwaaRj sunhwaaRj merged commit 64b319a into develop Apr 9, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] 팀피셜록 공유하기 개선

1 participant