diff --git a/journey/troubleshooting/251204_admin_dashboard_business_integration.md b/journey/troubleshooting/251204_admin_dashboard_business_integration.md new file mode 100644 index 0000000..5d52a72 --- /dev/null +++ b/journey/troubleshooting/251204_admin_dashboard_business_integration.md @@ -0,0 +1,75 @@ +# Admin Dashboard 비즈니스 통합 - 사용자/팀 및 로빙 관리 기능 추가 + +**날짜**: 2025-12-04 +**작성자**: admin +**관련 파일**: +- `admin-dashboard/backend/routers/users.py` +- `admin-dashboard/backend/routers/robeings.py` +- `admin-dashboard/frontend/app.js:747-843` +- `robeing-gateway/app/routers/admin.py:48-57` + +--- + +## 문제 상황 + +### 기존 한계 +- admin-dashboard는 인프라 모니터링만 제공 (시스템/Docker/nginx) +- main_db 미연결로 사용자/팀/로빙 데이터 접근 불가 +- `admin_routes.py` 1053줄 (FastAPI 권장 300줄 초과), 계층 분리 없음 + +## 해결 방안 + +### 1. FastAPI 계층 분리 + +**구조**: `admin-dashboard/backend/` +- `schemas/user.py`, `schemas/robeing.py`: Pydantic 모델 +- `state/user_repository.py`, `state/robeing_repository.py`: main_db CRUD +- `services/user_service.py`, `services/robeing_service.py`: 비즈니스 로직 +- `routers/users.py`, `routers/robeings.py`: API 엔드포인트 + +**원칙 준수**: router → service → repository, DB 접근은 repository에서만 + +### 2. main_db 연결 + +**docker-compose.yml:19**: `DATABASE_URL=postgresql+asyncpg://robeings:robeings@172.17.0.1:5432/main_db` +**state/user_repository.py:14**: AsyncEngine 생성, asyncpg 사용 + +### 3. Frontend UI 추가 + +**index.html:73-96**: 사용자/팀, 로빙 네비게이션 메뉴 +**index.html:301-364**: 사용자/팀, 로빙 섹션 (통계 카드 + 테이블) +**app.js:747-843**: loadUsers(), loadRobeings() 함수 (asyncio 병렬 처리) + +### 4. Gateway 프록시 수정 + +**문제**: 신규 API(`/admin/api/users`)와 기존 API(`/admin/system`) 경로 패턴 상이 +**해결**: `robeing-gateway/app/routers/admin.py:48-57` - 조건부 경로 처리 +``` +- users/robeings → /admin/api/* 유지 +- 기타 → /admin/* 변환 +``` + +### 5. 브라우저 캐시 문제 + +**문제**: app.js 수정했지만 브라우저가 오래된 캐시 사용 +**해결**: `index.html:20` - `