fix(inbox): page_size=200 → 422 해결, review_status 서버 필터 추가
Inbox 페이지가 /documents/?page_size=200 를 호출하는데 백엔드 Query 가 le=100 이라 422 발생 — Phase 2 첫 commit(2026-04-02)부터 dormant 버그. inbox 코드 안에 'TODO(backend): review_status filter 지원 시 page_size 축소' 주석이 있던 상태. backend: - list_documents 에 review_status: str | None Query 파라미터 추가 - WHERE 절에 review_status 매칭 분기 추가 frontend: - /documents/?review_status=pending&page_size=100 으로 변경 - 클라이언트 필터링 코드 제거 (서버 필터로 대체) 100 미만 안전. pending 이 100 넘으면 다음 페이지 로직 추가 필요 (별도 작업).
This commit is contained in:
@@ -147,6 +147,7 @@ async def list_documents(
|
|||||||
sub_group: str | None = None,
|
sub_group: str | None = None,
|
||||||
source: str | None = None,
|
source: str | None = None,
|
||||||
format: str | None = None,
|
format: str | None = None,
|
||||||
|
review_status: str | None = Query(None, description="pending | approved | rejected"),
|
||||||
):
|
):
|
||||||
"""문서 목록 조회 (페이지네이션 + 필터, 뉴스 제외)"""
|
"""문서 목록 조회 (페이지네이션 + 필터, 뉴스 제외)"""
|
||||||
query = select(Document).where(Document.deleted_at == None, Document.source_channel != "news")
|
query = select(Document).where(Document.deleted_at == None, Document.source_channel != "news")
|
||||||
@@ -158,6 +159,8 @@ async def list_documents(
|
|||||||
query = query.where(Document.source_channel == source)
|
query = query.where(Document.source_channel == source)
|
||||||
if format:
|
if format:
|
||||||
query = query.where(Document.file_format == format)
|
query = query.where(Document.file_format == format)
|
||||||
|
if review_status:
|
||||||
|
query = query.where(Document.review_status == review_status)
|
||||||
|
|
||||||
# 전체 건수
|
# 전체 건수
|
||||||
count_query = select(func.count()).select_from(query.subquery())
|
count_query = select(func.count()).select_from(query.subquery())
|
||||||
|
|||||||
@@ -59,9 +59,9 @@
|
|||||||
async function loadInbox() {
|
async function loadInbox() {
|
||||||
loading = true;
|
loading = true;
|
||||||
try {
|
try {
|
||||||
// TODO(backend): /documents/?review_status=pending 서버 필터 지원 시 page_size 축소
|
// 서버 필터 review_status=pending 적용 — page_size 100 이내 안전
|
||||||
const data = await api('/documents/?page_size=200');
|
const data = await api('/documents/?review_status=pending&page_size=100');
|
||||||
documents = (data.items || []).filter((d) => d.review_status === 'pending');
|
documents = data.items || [];
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
addToast('error', 'Inbox 로딩 실패');
|
addToast('error', 'Inbox 로딩 실패');
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Reference in New Issue
Block a user