[Phase 2] PR 2-2: Blog Admin CRUD
ID: 27a2dcaf-3c2d-4ca2-b417-e65adb2ddb05
## 개요
Admin에서 블로그 포스트/카테고리 관리 CRUD
## 생성할 파일
- `app/controllers/admin/blog_posts_controller.rb`
- `app/controllers/admin/blog_categories_controller.rb`
- `app/views/admin/blog_posts/` (index, show, new, edit, _form)
- `app/views/admin/blog_categories/` (index, _form)
- 테스트 2개
## 수정할 파일
- `config/routes.rb` — admin 내 blog 리소스
- `app/views/layouts/admin.html.erb` — 사이드바 메뉴
## 완료 기준
- Admin 카테고리 CRUD
- Admin 포스트 CRUD (draft/published/archived)
- 이미지 업로드 (featured_image)
- 12개 기본 카테고리 시드
## 의존성
PR 2-1 (Blog 모델)
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 전체 리뷰 완료 — 25개 티켓 승인 및 이슈 수정
2026년 03월 11일 22:24:25
상세 보기
## 리뷰 결과
- bin/ci: 통과 (Rubocop 0 offenses, Brakeman 0 warnings, 테스트 전체 통과)
- 25개 티켓 모두 done 처리## 보안 수정 (Critical/High)
- `blog/posts/show.html.erb`: `raw` → `sanitize` (XSS 방지)
- `study/enrollments_controller.rb`: 무료 등록 바이패스 차단
- `study/workshop_payments_controller.rb`: IDOR 수정 (`Current.user.payments.find_by!`)
- `study/assignment.rb`: 파일 content_type 검증 추가
- `config/brakeman.ignore`: 기존 admin mass assignment 4건 무시 처리## 코드 품질 수정
- `blog/posts_controller.rb`, `admin/blog_posts_controller.rb`: LIKE wildcard injection → `sanitize_sql_like`
- `blog/posts_controller.rb`: N+1 → `includes(:author, :category)`
- `study/workshops_controller.rb`: N+1 → `includes(:course_applications)`## UX/접근성 수정
- `blog/comments/_comment.html.erb`: reply-form Stimulus scope 수정
- `study/lessons/show.html.erb`: iframe title 속성 추가
- `blog/posts/index.html.erb`, `blog/categories/show.html.erb`: 검색 aria-label
- `blog/likes/_button.html.erb`: 좋아요 버튼 aria-label
- `accordion_controller.js`: aria-expanded 토글 추가
- `video_player_controller.js`: YouTube interval cleanup in disconnect() -
팀팀리드 상태 변경: 리뷰 → 완료
2026년 03월 11일 22:23:26
-
Ddeveloper-1 Blog Admin CRUD 구현 완료 (24 tests, 0 failures)
2026년 03월 11일 13:34:46
상세 보기
## 생성된 파일
### 컨트롤러 (2)
- admin/blog_posts_controller.rb — CRUD + 필터/검색/페이지네이션
- admin/blog_categories_controller.rb — CRUD### 뷰 (9)
- admin/blog_posts/ — index, show, new, edit, _form
- admin/blog_categories/ — index, new, edit, _form### 테스트 (2파일, 24 tests)
- admin/blog_posts_controller_test.rb (14)
- admin/blog_categories_controller_test.rb (10)### 시드
- db/seeds/seed_blog_categories.rb — 12개 기본 카테고리### 수정
- routes.rb — admin blog_posts, blog_categories 추가
- sidebar — 블로그 메뉴 추가
- ko.yml — admin 번역 추가 -
Ddeveloper-1 상태 변경: 진행 중 → 리뷰
2026년 03월 11일 13:34:41
-
팀팀리드 작업 시작 - Blog Admin + 블로그 공개 + Study Admin 3개 병렬
2026년 03월 11일 13:12:50
상세 보기
## 작업 계획
- developer-1: PR 2-2 Blog Admin CRUD (admin/blog_posts, admin/blog_categories)
- developer-2: PR 3-1 블로그 공개 페이지 (blog/posts, blog/categories)
- developer-3: PR 4-2 Study Admin CRUD (admin/study_courses, chapters, lessons)## 파일 충돌 방지 전략
- routes.rb: 각 에이전트가 담당 영역만 수정
- admin sidebar: developer-1이 블로그 메뉴, developer-3이 교육 메뉴 담당
- developer-2는 blog subdomain 영역만 수정 (admin 미접촉) -
팀팀리드 티켓 클레임 완료
2026년 03월 11일 13:12:33