docs: Admin Dashboard 계획에 API 스키마 및 페이지네이션 전략 추가
This commit is contained in:
parent
800508f9eb
commit
56b48f81ff
@ -49,12 +49,44 @@ admin-dashboard/backend/
|
|||||||
|
|
||||||
**원칙 준수**: router(HTTP) → service(비즈니스) → repository(DB), DB 접근은 repository에서만
|
**원칙 준수**: router(HTTP) → service(비즈니스) → repository(DB), DB 접근은 repository에서만
|
||||||
|
|
||||||
### 2. 성능 최적화
|
### 2. API 스키마 정의 (schemas/)
|
||||||
|
|
||||||
|
**패턴 참고**: auth-server의 WorkspaceResponse/WorkspaceCreate 구조
|
||||||
|
|
||||||
|
**User 스키마**:
|
||||||
|
- `UserResponse`: id, email, name, username, metadata(dict), is_active, last_login_at
|
||||||
|
- `UserUpdate`: name, metadata (부분 업데이트)
|
||||||
|
- `UserList`: items(list[UserResponse]), total, page, limit
|
||||||
|
|
||||||
|
**Robeing 스키마**:
|
||||||
|
- `RobeingResponse`: id, team_id, name, level, stats(memory/compute/react/empathy/leadership)
|
||||||
|
- `RobeingStats`: 대화 빈도, 스킬 사용 횟수, 감정 트렌드
|
||||||
|
|
||||||
|
**공통**:
|
||||||
|
- `PaginationParams`: limit(기본 50), offset(기본 0)
|
||||||
|
- `ErrorResponse`: detail(str), code(int)
|
||||||
|
- metadata JSONB는 `dict[str, Any]`로 직렬화
|
||||||
|
|
||||||
|
### 3. 페이지네이션 전략
|
||||||
|
|
||||||
|
**기본 방식**: limit/offset 파라미터 (단순 구현, admin 용도 충분)
|
||||||
|
- 모든 리스트 API: `?limit=50&offset=0` 기본값
|
||||||
|
- 응답: `{"items": [...], "total": int, "page": int, "limit": int}`
|
||||||
|
|
||||||
|
**대용량 테이블 처리**:
|
||||||
|
- conversation_log(수만 건): 날짜 범위 필터 필수 (`?start_date=&end_date=`)
|
||||||
|
- emotion_readings: 시간대별 집계 쿼리 (GROUP BY), 원본 데이터 페이지네이션
|
||||||
|
- rb_news/team_document: created_at DESC 인덱스 활용
|
||||||
|
|
||||||
|
**프론트엔드 UI**: 페이지 번호 버튼 (1, 2, 3... 10) + 이전/다음
|
||||||
|
**향후 고려**: cursor 기반 페이지네이션 (성능 우수, 구현 복잡)
|
||||||
|
|
||||||
|
### 4. 성능 최적화
|
||||||
|
|
||||||
**병렬 처리**: asyncio.gather()로 다중 DB 조회 동시 실행 (순차 대비 66% 성능 향상)
|
**병렬 처리**: asyncio.gather()로 다중 DB 조회 동시 실행 (순차 대비 66% 성능 향상)
|
||||||
**검증 완료**: 계층 분리는 성능 오버헤드 없음 (테스트 확인)
|
**검증 완료**: 계층 분리는 성능 오버헤드 없음 (테스트 확인)
|
||||||
|
|
||||||
### 3. 신규 탭 3개 (UX 중심)
|
### 5. 신규 탭 3개 (UX 중심)
|
||||||
|
|
||||||
#### 탭 1: 사용자/팀
|
#### 탭 1: 사용자/팀
|
||||||
- **테이블 뷰**: user/team 목록, 검색/필터/정렬
|
- **테이블 뷰**: user/team 목록, 검색/필터/정렬
|
||||||
@ -73,7 +105,7 @@ admin-dashboard/backend/
|
|||||||
- **차트**: 히트맵(시간대별 스킬 사용), 파이 차트(의도 분포)
|
- **차트**: 히트맵(시간대별 스킬 사용), 파이 차트(의도 분포)
|
||||||
- **테이블**: rb_news(최근 발행), team_document(RAG 문서), ir_deck_evaluations(IR 평가 현황)
|
- **테이블**: rb_news(최근 발행), team_document(RAG 문서), ir_deck_evaluations(IR 평가 현황)
|
||||||
|
|
||||||
### 4. 공통 UI 패턴
|
### 6. 공통 UI 패턴
|
||||||
- **우측 상단**: 새로고침/필터/CSV 다운로드 버튼
|
- **우측 상단**: 새로고침/필터/CSV 다운로드 버튼
|
||||||
- **테이블 행**: 편집/삭제/상세 아이콘 버튼
|
- **테이블 행**: 편집/삭제/상세 아이콘 버튼
|
||||||
- **모달**: metadata 편집, 상세 정보 표시
|
- **모달**: metadata 편집, 상세 정보 표시
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user