perf: 활동 피드 무제한 렌더링 방지(상한 + 페이지네이션)

활발한 프로젝트/업무에서 활동이 한 번에 전부 내려와 렌더링되던 문제 보완.

- 업무 상세 활동 탭: 최신 100건으로 조회 상한 추가(기존 무제한)
- 프로젝트 활동 피드: 200건 통째 조회 → 오프셋 페이지네이션 전환
  - 컨트롤러 page/size 쿼리 지원, 서비스 findAndCount
  - 프론트 스토어 누적 + hasMore/loadMore, 활동 페이지 "더 보기" 버튼

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-22 18:03:19 +09:00
parent 2b534743d6
commit 2c02c4afc1
5 changed files with 136 additions and 28 deletions
+10 -3
View File
@@ -1,13 +1,20 @@
import { useApi } from './useApi'
import { DEFAULT_PAGE_SIZE, type Paginated } from '@/types/pagination'
import type { ApiActivity } from '@/types/activity'
// 활동 피드 API Composable — 인터셉터가 success/data 를 언래핑
export function useActivity() {
const api = useApi()
// 프로젝트 활동 피드(최신순)
async function list(projectId: string): Promise<ApiActivity[]> {
return (await api.get(`/projects/${projectId}/activity`)) as unknown as ApiActivity[]
// 프로젝트 활동 피드(최신순, 페이지네이션)
async function list(
projectId: string,
page = 1,
size = DEFAULT_PAGE_SIZE,
): Promise<Paginated<ApiActivity>> {
return (await api.get(`/projects/${projectId}/activity`, {
params: { page, size },
})) as unknown as Paginated<ApiActivity>
}
return { list }