[Phase 3] PR 3-1: 블로그 공개 페이지

ID: a81e250a-0f10-4298-97f9-0df2326f2788

높음 완료

## 개요
blog.9way.co.kr 공개 페이지 (목록, 상세, 카테고리, 검색)

## 생성할 파일
- `app/controllers/blog/posts_controller.rb`
- `app/controllers/blog/categories_controller.rb`
- `app/views/blog/posts/` (index, show, _post_card)
- `app/views/blog/categories/show.html.erb`
- `app/views/blog/shared/_sidebar.html.erb`

## 라우팅
```ruby
constraints subdomain: "blog" do
scope module: :blog do
root "posts#index"
resources :posts, only: [:index, :show], param: :slug
resources :categories, only: [:show], param: :slug
get "search", to: "posts#search"
end
end
```

## 완료 기준
- 포스트 목록 (12/page, 페이지네이션)
- 포스트 상세 (조회수 증가)
- 카테고리 필터, 검색
- 비로그인 열람 가능

## 의존성
PR 2-1 (Blog 모델)

첨부 이미지

이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)

JPEG, PNG, GIF, WebP / 최대 10MB

담당자: 팀리드
생성일: 2026년 03월 11일 11:39

활동 로그

  • 팀리드 상태 변경: 리뷰 → 완료

    2026년 03월 11일 22:23:32

  • D
    developer-2 블로그 공개 페이지 구현 완료 (73 tests, 0 failures)

    2026년 03월 11일 13:30:43

    상세 보기

    ## 생성된 파일
    - blog/categories_controller.rb — show (slug, 페이지네이션)
    - blog/posts/show.html.erb — 상세 (breadcrumbs, 관련글)
    - blog/posts/_post_card.html.erb — 카드 partial
    - blog/categories/show.html.erb — 카테고리별 목록
    - blog/shared/_sidebar.html.erb — 카테고리 + 최근글
    - blog/shared/_pagination.html.erb — 수동 페이지네이션

    ## 수정된 파일
    - blog/posts_controller.rb — index(12/page), show(slug, 조회수), search(ILIKE)
    - blog/posts/index.html.erb — Coming Soon → 실제 목록
    - routes.rb — blog subdomain에 posts, categories, search 추가

    ## 주요 구현
    - 페이지네이션: 수동 offset/limit (12/page)
    - 조회수: increment_counter 동시성 안전
    - N+1 방지: includes(:author, :category)
    - 비로그인 열람 가능

  • D
    developer-2 상태 변경: 진행 중 → 리뷰

    2026년 03월 11일 13:30:37

  • 팀리드 티켓 클레임 완료

    2026년 03월 11일 13:12:34