fix: 목록 페이지네이션 응답 계약 불일치 및 업무 목록 쿼리 크래시 수정
페이지네이션 도입 후 백엔드 목록 API 가 { items, total, ... } 를 반환하는데
프론트 멤버·업무 소비처가 배열로 기대해 list.map 이 깨지고, 멤버 탭과 업무
목록이 비어 보이던 회귀를 수정.
- backend(task): 업무 목록 쿼리에서 to-many 조인 컬럼(checklist.sort_order)
으로 정렬해 페이지네이션 시 TypeORM 이 터지던 문제 제거(task.seq 만 정렬).
목록 응답은 체크리스트 [완료/전체] 수만 쓰므로 항목 순서가 불필요.
- frontend(member/task): list 컴포저블이 Paginated<T> 를 반환하도록 맞추고
스토어에서 .items 로 언래핑(저장소·내업무와 동일 계약).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -216,7 +216,12 @@ export class TaskService {
|
||||
);
|
||||
}
|
||||
|
||||
qb.orderBy('task.seq', 'DESC').addOrderBy('checklist.sort_order', 'ASC');
|
||||
// 정렬은 메인 엔티티(task.seq) 기준만 사용한다.
|
||||
// skip/take(페이지네이션)와 to-many 조인을 함께 쓰면 TypeORM 이 DISTINCT id 서브쿼리로
|
||||
// 페이징하는데, 이때 조인된 to-many 컬럼(checklist.sort_order)으로 ORDER BY 하면
|
||||
// 컬럼 메타데이터를 찾지 못해 터진다(createOrderByCombinedWithSelectExpression).
|
||||
// 목록 응답은 체크리스트의 [완료/전체] 수만 쓰므로 항목 순서가 필요 없다.
|
||||
qb.orderBy('task.seq', 'DESC');
|
||||
|
||||
const [tasks, total] = await qb
|
||||
.skip(pg.skip)
|
||||
|
||||
Reference in New Issue
Block a user