목표
팔로우 관계를 DB·API로 추가하고, 프로필 UI의 팔로워/팔로잉 수를 실데이터로 바꾸며, 타인 공개 프로필 /profile/[userId]를 제공한다. (스펙 specs/screens/user/SCR-USER-02-profile.md와 현재 구현 차이를 줄인다.)
현재 코드 요약 (2026-03 기준)
| 영역 |
파일 |
상태 |
| 팔로우 수 UI |
packages/web/lib/components/profile/FollowStats.tsx |
followers=1234, following=567 하드코딩 기본값 |
| 내 프로필 |
packages/web/app/profile/ProfileClient.tsx |
useMe, useUserStats, useMyBadges, useMyRanking, useUserActivities 등 API 연동됨 |
| 활동 탭 |
GET /api/v1/users/me/activities |
이미 사용 중 — 타인용 공개 엔드포인트 필요 여부 검토 |
| Try 탭 |
packages/web/lib/components/profile/TriesGrid.tsx |
fetchMyTries가 항상 [] — GET /api/v1/users/me/tries TODO 주석 |
| Saved 탭 |
packages/web/lib/components/profile/SavedGrid.tsx |
컬렉션 스토어 기반(로컬/별도 API) — “저장 포스트”와 제품 정의 정렬 필요 |
| 타인 프로필 |
— |
/profile/[userId] 라우트 없음 |
DB 설계 (제안 — PR에서 확정)
API (Rust api-server)
웹
수용 기준
- 내 프로필에서 팔로워/팔로잉 숫자가 DB와 일치한다(하드코딩 제거).
- 다른 유저의
/profile/{uuid}에서 공개 정보 + Follow 동작(본인 제외).
- OpenAPI·
docs/agent/api-v1-routes.md에 신규 엔드포인트 반영.
관련 이슈
참고
packages/api-server/src/domains/users/handlers.rs (/me, /me/activities 패턴)
specs/screens/user/SCR-USER-02-profile.md (스펙과 불일치 시 스펙 갱신 PR 함께 권장)
목표
팔로우 관계를 DB·API로 추가하고, 프로필 UI의 팔로워/팔로잉 수를 실데이터로 바꾸며, 타인 공개 프로필
/profile/[userId]를 제공한다. (스펙specs/screens/user/SCR-USER-02-profile.md와 현재 구현 차이를 줄인다.)현재 코드 요약 (2026-03 기준)
packages/web/lib/components/profile/FollowStats.tsxfollowers=1234,following=567하드코딩 기본값packages/web/app/profile/ProfileClient.tsxuseMe,useUserStats,useMyBadges,useMyRanking,useUserActivities등 API 연동됨GET /api/v1/users/me/activitiespackages/web/lib/components/profile/TriesGrid.tsxfetchMyTries가 항상[]—GET /api/v1/users/me/triesTODO 주석packages/web/lib/components/profile/SavedGrid.tsx/profile/[userId]라우트 없음DB 설계 (제안 — PR에서 확정)
user_follows(또는 동일 의미):follower_id,following_id,created_at,UNIQUE(follower_id, following_id), 자기 자신 팔로우 방지 CHECKfollowing_id로 팔로워 수,follower_id로 팔로잉 수 집계API (Rust api-server)
POST /api/v1/users/{user_id}/follow/DELETE .../follow(또는 토글 하나) — 인증 필수GET /api/v1/users/{user_id}/followers,.../following(페이지네이션) 또는 카운트만GET /api/v1/users/{user_id}확장 필드웹
FollowStats: props로 실제 숫자 전달;ProfileClient에서 위 API 또는useMe확장으로 주입packages/web/app/profile/[userId]/page.tsx+ Client —GET /api/v1/users/{userId}(이미 존재할 수 있음)로 공개 필드 표시TriesGrid: feat(community): Try 포스트 백엔드 — parent_post_id, tries API, OpenAPI/Orval #24 Try 스키마와 맞춰 내 Try 목록 API 설계 (post_type=tryANDuser_id=me등) 후 연동saved_posts와 맞출지, 현재 컬렉션 UX를 유지할지 제품 결정 후 이슈 범위에 명시수용 기준
/profile/{uuid}에서 공개 정보 + Follow 동작(본인 제외).docs/agent/api-v1-routes.md에 신규 엔드포인트 반영.관련 이슈
참고
packages/api-server/src/domains/users/handlers.rs(/me,/me/activities패턴)specs/screens/user/SCR-USER-02-profile.md(스펙과 불일치 시 스펙 갱신 PR 함께 권장)