You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
FLW-08 스펙대로 Try 포스트를 DB·API·웹 훅까지 연결해, 포스트 상세의 Try 갤러리가 실데이터를 표시하게 한다.
#29 통합: 스팟 소유 자가신고 + 사진 리뷰를 별도 spot_reviews 테이블 대신 Try 포스트 + 스팟 태깅으로 통합. Try 생성 시 원본 포스트의 스팟(아이템)을 optional로 태깅할 수 있으며, 이를 통해 "이 아이템 갖고 있어요" 리뷰 역할도 겸함.
목표
FLW-08 스펙대로 Try 포스트를 DB·API·웹 훅까지 연결해, 포스트 상세의 Try 갤러리가 실데이터를 표시하게 한다.
배경 / 현재 코드
packages/web/lib/hooks/useTries.tsfetchTries가 항상{ tries: [], total: 0 }반환 (TODO 주석)packages/api-server/src/entities/posts.rsparent_post_id,post_type컬럼 없음packages/api-server/openapi.json)/posts/{id}/tries경로 없음specs/flows/FLW-08-my-try.md(컬럼·응답 JSON·엔드포인트 표)구현 체크리스트
1) DB (Supabase 마이그레이션)
posts에parent_post_id(UUID, FK →posts(id), ON DELETE SET NULL),post_type(varchar, default'original', 값:original|try)idx_posts_parent_post_id,idx_posts_post_typetry_spot_tags테이블:(try_post_id, spot_id)PK, FK → posts/spots, ON DELETE CASCADEidx_try_spot_tags_spot_idpackages/api-server/migration/+lib.rs2) Rust (api-server)
entities/posts.rs및 관련 DTO에parent_post_id,post_type컬럼 반영; Try는 별도 테이블 없이posts행으로 저장try_spot_tagsentity/DTO 추가GET /api/v1/posts/{post_id}/tries—post_type = tryANDparent_post_id = post_id목록, 스펙의tries[]+total(+ 필요 시 cursor 페이지네이션)GET /api/v1/posts/{post_id}/tries/countGET /api/v1/spots/{spot_id}/tries— 특정 스팟을 태깅한 Try 목록 (스팟별 리뷰 조회)parent_post_id,post_type,spot_ids파싱·저장 — Try 생성 시try_spot_tags에도 insertlist_posts등에서post_type != try필터 여부 결정utoipa/openapi.json갱신3) 웹
packages/api-server/openapi.json커밋 후cd packages/web && bun run generate:apiuseTries.ts: 생성된 클라이언트로 실제GET .../tries호출수용 기준 (Definition of Done)
useTries(parentPostId)가 비어 있지 않은 목록을 반환한다.GET /api/v1/spots/{spotId}/tries로 조회 가능하다.의존 / 관련 이슈
스팟 리뷰: feat(community): 스팟 소유 자가신고 + 사진 리뷰 (spot_reviews) #29→ 본 이슈로 통합참고 파일
specs/flows/FLW-08-my-try.mdpackages/api-server/src/domains/posts/packages/web/lib/components/detail/TryGallerySection.tsx