백엔드 API 추가:
- UserManagementController (admin:user-management)
- GET /api/admin/users : 사용자 목록 + 역할 코드
- GET /api/admin/users/stats : 상태별/역할별/인증방식별 카운트
- POST /api/admin/users/{id}/unlock : 잠금 해제 (@Auditable USER_UNLOCK)
- PUT /api/admin/users/{id}/status : 상태 변경 (@Auditable USER_STATUS_CHANGE)
- 권한 캐시 evict 자동 호출
- AdminStatsController (admin:audit-logs/access-logs/login-history READ)
- GET /api/admin/stats/audit : 전체/24시간/실패/액션별/시간별 통계
- GET /api/admin/stats/access : 전체/24시간/4xx/5xx/평균응답/인기경로
- GET /api/admin/stats/login : 성공률/사용자별/일별 추세
프론트엔드 연결:
- adminApi.ts 확장: AdminUser/UserStats/AuditStats/AccessStats/LoginStats
타입 정의 + 사용자/통계 fetch 함수
- AccessControl.tsx (시스템 관리 > 권한 관리):
- 4개 탭 모두 백엔드 연결
- 역할 관리: GET /api/roles + 사용자별 카운트 표시
- 사용자 관리: GET /api/admin/users + DataTable + 잠금 해제 버튼
+ 통계 카드 4개 (총/활성/잠금/비활성)
- 감사 로그: GET /api/admin/audit-logs + GET /api/admin/stats/audit
+ 액션별 분포 Badge + 통계 카드
- 보안 정책: 실제 백엔드 동작과 일치하도록 갱신
- AuditLogs.tsx: 메트릭 카드 4개 + 액션별 분포
- AccessLogs.tsx: 메트릭 카드 5개 (전체/24시간/4xx/5xx/평균) + Top 10 경로 테이블
- LoginHistoryView.tsx: 메트릭 카드 5개 + 사용자별 + 일별 추세
검증:
- /api/admin/users → 5명 (admin/operator/analyst/field/viewer)
- /api/admin/users/stats → byRole, byStatus, byProvider 카운트
- /api/admin/stats/audit → total 15, 액션 6종, hourly 추세
- /api/admin/stats/login → success 80%, byUser top, daily 추세
- 프론트엔드 빌드 통과 (493ms)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| .mvn/wrapper | ||
| src | ||
| .sdkmanrc | ||
| mvnw | ||
| mvnw.cmd | ||
| pom.xml | ||
| README.md | ||
Backend (Spring Boot)
Phase 2에서 초기화 예정.
계획된 구성
- Spring Boot 3.x + Java 21
- PostgreSQL + Flyway
- Spring Security + JWT
- Caffeine 캐시
- 트리 기반 RBAC 권한 체계 (wing 패턴)
책임
- 자체 인증/권한/감사로그
- 운영자 의사결정 (모선 확정/제외/학습)
- iran 백엔드 분석 데이터 프록시
- 관리자 화면 API
상세 설계: .claude/plans/vast-tinkering-knuth.md