# 작업 진행 상황 ## 프로젝트 정보 - **작업 디렉토리**: `20251127-check-tech-blog-item-count` - **작업 일자**: 2025-11-27 - **작업자**: Claude Code + User - **코드베이스**: PlanitAI_Inc_website/nextjs ## 문제 정의 - **이슈**: https://www.planitai.co.jp/blogs 에 Post 22가 표시되지 않음 - **예상**: WordPress에 3개 이상의 포스트가 있는데 2개만 표시됨 - **확인 필요**: Post 22 (https://2025032623012012057904.onamaeweb.jp/blog/wp-admin/post.php?post=22) ## 조사 과정 ### 1단계: 웹사이트 현황 확인 - **결과**: `/blogs` 페이지에 2개의 테크블로그 포스트만 표시됨 - Post 83: "Freee API自動化実践ガイド..." (2025-11-27) - Post 68: "Gemini + MCP実践ガイド..." (2025-11-26) ### 2단계: 코드베이스 탐색 - **파일 확인**: - `/app/blogs/page.tsx` - 블로그 목록 페이지 - `/lib/api.ts` - WordPress API 데이터 fetching - `/app/api/revalidate/route.ts` - 캐시 무효화 API ### 3단계: WordPress API 직접 조회 - **API 엔드포인트**: `https://2025032623012012057904.onamaeweb.jp/blog/wp-json/wp/v2/posts?_embed` - **결과**: 3개 포스트만 반환 (Post 83, 75, 68) - **Post 22**: 목록에 없음 ❌ ### 4단계: Post 22 개별 확인 - **직접 접근**: `/wp-json/wp/v2/posts/22` ✅ 성공 - **상태**: "publish", 카테고리: "tech-blog" - **결론**: Post 22는 존재하지만 목록 API에서 반환되지 않음 ### 5단계: WordPress API 페이지네이션 조사 - **기본 쿼리**: `per_page` 미지정 → 3개만 반환 - **per_page=100 쿼리**: 13개 포스트 반환 (Post 22 포함!) ✅ - **발견**: WordPress API의 기본 `per_page` 값이 10 이하 - **확인**: `X-WP-Total: 13`, `X-WP-TotalPages: 2` ### 6단계: per_page 최대값 확인 - **테스트 결과**: - `per_page=100` → 성공 ✅ - `per_page=200` → 에러 "per_page は1以上、100以下でなければなりません" ❌ - **결론**: 최대값 = 100 ## 근본 원인 ### 문제 Next.js 코드가 WordPress API를 호출할 때 `per_page` 파라미터를 지정하지 않아서 기본값(10개 이하)만 가져옴. ### 영향받는 코드 ```typescript // /lib/api.ts:232 const res = await fetch(`${apiBase}/posts?_embed`); ``` ### Post 22가 보이지 않는 이유 1. WordPress에 총 13개의 포스트 존재 2. Post 22는 날짜순으로 11번째 (2025-11-18) 3. 기본 쿼리는 최근 10개(또는 그 이하)만 반환 4. Post 22는 11번째이므로 반환되지 않음 ## 해결 방법 ### 수정 내용 **파일**: `/lib/api.ts:232` ```typescript // 수정 전 const res = await fetch(`${apiBase}/posts?_embed`); // 수정 후 const res = await fetch(`${apiBase}/posts?_embed&per_page=100`); ``` ### 변경 이유 - WordPress API에서 최대 100개의 포스트를 가져옴 - 현재 13개의 모든 포스트가 포함됨 - Post 22를 포함한 모든 과거 포스트가 표시됨 ## 실행한 작업 ### 1. 코드 수정 - [x] `/lib/api.ts:232` 수정 완료 - [x] `per_page=100` 파라미터 추가 ### 2. Git 작업 ```bash git add lib/api.ts git commit -m "fix: WordPress APIからすべての投稿を取得するためper_page=100を追加" git pull --rebase git push origin main ``` - [x] Commit 완료 (SHA: 576ae20) - [x] Push 완료 ### 3. 배포 - [x] Vercel 자동 배포 시작 - [ ] 배포 완료 대기 중 ### 4. 캐시 무효화 (사용자가 수동 실행) - [ ] Revalidate API 호출 예정 ```bash curl "https://www.planitai.co.jp/api/revalidate?secret=LWCTd22HKmCa8uNqOvaoTYlXoNONFVlhx" ``` ### 5. 검증 - [ ] https://www.planitai.co.jp/blogs 확인 - [ ] Post 22 표시 여부 확인 ## 작성된 문서 1. **investigation-report.md** - 문제 조사 상세 보고서 - WordPress 설정 확인 사항 - 해결 방법 및 권장사항 2. **wordpress-api-pagination.md** - WordPress REST API 페이지네이션 사양 - per_page 파라미터 사용법 - 페이지네이션 구현 예제 3. **progress.md** (현재 파일) - 작업 진행 상황 타임라인 - 조사 과정 및 결과 - 실행한 작업 체크리스트 4. **prompts.md** - 사용자 요청 및 대화 내역 - 작업 흐름 기록 ## WordPress 포스트 현황 총 13개 포스트: 1. Post 83 (2025-11-27) - テックブログ 2. Post 75 (2025-11-27) - 最新AIニュース 3. Post 68 (2025-11-26) - テックブログ 4. Post 63 5. Post 59 6. Post 56 7. Post 52 8. Post 33 9. Post 30 10. Post 26 11. **Post 22 (2025-11-18) - テックブログ** ← 찾던 포스트! 12. Post 20 13. Post 1 ## 다음 단계 1. **Vercel 배포 완료 확인** - GitHub Actions 또는 Vercel Dashboard 확인 - 배포 상태: Production 확인 2. **Revalidate API 호출** (사용자가 수동 실행) ```bash curl "https://www.planitai.co.jp/api/revalidate?secret=LWCTd22HKmCa8uNqOvaoTYlXoNONFVlhx" ``` 3. **웹사이트 검증** - https://www.planitai.co.jp/blogs 접속 - Post 22 ("AIと共に働くということ") 표시 확인 - 날짜순 정렬 확인 4. **추가 개선 고려사항** (선택) - 100개 이상의 포스트가 생길 경우를 대비한 페이지네이션 구현 - WordPress API 호출 에러 핸들링 강화 - 캐시 전략 최적화 ## 참고 정보 ### API 엔드포인트 - **WordPress API Base**: `https://2025032623012012057904.onamaeweb.jp/blog/wp-json/wp/v2` - **Posts Endpoint**: `/posts?_embed&per_page=100` - **Revalidate Endpoint**: `https://www.planitai.co.jp/api/revalidate?secret=...` ### 주요 파일 경로 - `/lib/api.ts:232` - WordPress API fetch 로직 - `/app/blogs/page.tsx:80-82` - 테크블로그 필터링 - `/app/api/revalidate/route.ts` - 캐시 무효화 API ## 작업 소요 시간 - 조사 및 분석: 약 30분 - 코드 수정 및 테스트: 약 10분 - 문서 작성: 약 20분 - **총 소요 시간**: 약 1시간 ## 학습한 내용 1. **WordPress REST API 제한사항** - 기본 `per_page`가 설정에 따라 10개 이하일 수 있음 - 최대 `per_page=100` - 100개 이상은 페이지네이션 필요 2. **Next.js 캐싱 전략** - `unstable_cache`와 `force-cache` 사용 중 - `revalidateTag`와 `revalidatePath`로 선택적 캐시 무효화 - 정적 생성 페이지의 캐시 관리 중요성 3. **디버깅 접근법** - 웹사이트 → 코드 → API → 개별 리소스 순으로 좁혀가기 - 직접 API 호출로 문제 격리 - 페이지네이션 파라미터 테스트로 근본 원인 파악 ## 상태 - **현재 상태**: 배포 완료 대기 중 - **마지막 업데이트**: 2025-11-27 - **완료율**: 90% (검증 대기 중)