refactor(phase4-5): 대형 View 분할 + RBAC 권한 시스템 + DB 통합 + 게시판 CRUD #25

병합
htlee feature/refactor-phase5-view-decomposition 에서 develop 로 4 commits 를 머지했습니다 2026-02-28 18:43:23 +09:00
소유자

Summary

  • Phase 5: 대형 View 서브탭 단위 분할 + FEATURE_ID 체계 도입 (6개 탭, 22개 서브컴포넌트)
  • Phase 5 RBAC: 리소스×오퍼레이션 2차원 권한 시스템 구현 (AUTH_PERM_TREE + permResolver + requirePermission 미들웨어)
  • Phase 4 DB 통합: wing + wing_auth → wing 단일 DB (wing/auth 스키마 분리, public 미사용)
  • Phase 4 게시판 CRUD: boardService/boardRouter + 카테고리별 requirePermission 동적 적용
  • 프론트엔드 연동: BoardListTable mock→API 전환, hasPermission 조건부 렌더링
  • 문서: CRUD-API-GUIDE (범용 가이드 + 게시판 튜토리얼), COMMON-GUIDE 업데이트

주요 변경 (67파일, +13,118 / -9,767)

DB

  • 005_db_consolidation.sql — 스키마 분리 (wing, auth)
  • 006_board.sql — BOARD_POST DDL + 초기 데이터 10건
  • 003_perm_tree.sql, 004_oper_cd.sql — 권한 트리 + 오퍼레이션

백엔드

  • board/boardService.ts — CRUD (페이징, 검색, 소유자 검증, 논리삭제)
  • board/boardRouter.ts — 카테고리별 서브리소스 권한 분기
  • roles/permResolver.ts — 권한 상속 해석 엔진
  • auth/authMiddleware.ts — requirePermission 미들웨어
  • DB Pool 통합 (wingPool 단일 + search_path)

프론트엔드

  • 6개 대형 View 서브컴포넌트 분할 (admin, aerial, assets, prediction, reports, scat)
  • PermissionsPanel — 권한 트리 UI (체크박스 그리드)
  • BoardListTable — API 연동 + 권한 기반 글쓰기 버튼

Test plan

  • 백엔드 빌드 (tsc) 통과
  • 프론트엔드 타입 체크 (tsc --noEmit) 통과
  • pre-commit hook (타입체크 + ESLint) 통과
  • 게시판 CRUD API curl 테스트 (목록/필터/검색/상세/작성/수정/삭제)
  • 로그인 API 정상 동작 (DB 통합 후)
  • UI 통합 테스트 (로컬 dev 서버)
  • 역할별 권한 시나리오 테스트 (ADMIN/USER/VIEWER)

🤖 Generated with Claude Code

## Summary - **Phase 5**: 대형 View 서브탭 단위 분할 + FEATURE_ID 체계 도입 (6개 탭, 22개 서브컴포넌트) - **Phase 5 RBAC**: 리소스×오퍼레이션 2차원 권한 시스템 구현 (AUTH_PERM_TREE + permResolver + requirePermission 미들웨어) - **Phase 4 DB 통합**: wing + wing_auth → wing 단일 DB (wing/auth 스키마 분리, public 미사용) - **Phase 4 게시판 CRUD**: boardService/boardRouter + 카테고리별 requirePermission 동적 적용 - **프론트엔드 연동**: BoardListTable mock→API 전환, hasPermission 조건부 렌더링 - **문서**: CRUD-API-GUIDE (범용 가이드 + 게시판 튜토리얼), COMMON-GUIDE 업데이트 ## 주요 변경 (67파일, +13,118 / -9,767) ### DB - `005_db_consolidation.sql` — 스키마 분리 (wing, auth) - `006_board.sql` — BOARD_POST DDL + 초기 데이터 10건 - `003_perm_tree.sql`, `004_oper_cd.sql` — 권한 트리 + 오퍼레이션 ### 백엔드 - `board/boardService.ts` — CRUD (페이징, 검색, 소유자 검증, 논리삭제) - `board/boardRouter.ts` — 카테고리별 서브리소스 권한 분기 - `roles/permResolver.ts` — 권한 상속 해석 엔진 - `auth/authMiddleware.ts` — requirePermission 미들웨어 - DB Pool 통합 (wingPool 단일 + search_path) ### 프론트엔드 - 6개 대형 View 서브컴포넌트 분할 (admin, aerial, assets, prediction, reports, scat) - PermissionsPanel — 권한 트리 UI (체크박스 그리드) - BoardListTable — API 연동 + 권한 기반 글쓰기 버튼 ## Test plan - [x] 백엔드 빌드 (tsc) 통과 - [x] 프론트엔드 타입 체크 (tsc --noEmit) 통과 - [x] pre-commit hook (타입체크 + ESLint) 통과 - [x] 게시판 CRUD API curl 테스트 (목록/필터/검색/상세/작성/수정/삭제) - [x] 로그인 API 정상 동작 (DB 통합 후) - [ ] UI 통합 테스트 (로컬 dev 서버) - [ ] 역할별 권한 시나리오 테스트 (ADMIN/USER/VIEWER) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
htlee added 3 commits 2026-02-28 18:39:44 +09:00
6개 대형 View(AerialView, AssetsView, ReportsView, PreScatView, AdminView, LeftPanel)를
서브탭 단위로 분할하여 모듈 경계를 명확히 함.

- AerialView (2,526줄 → 8파일): MediaManagement, OilAreaAnalysis, RealtimeDrone 등
- AssetsView (2,047줄 → 8파일): AssetManagement, AssetMap, ShipInsurance 등
- ReportsView (1,596줄 → 5파일): TemplateFormEditor, ReportGenerator 등
- PreScatView (1,390줄 → 7파일): ScatLeftPanel, ScatMap, ScatPopup 등
- AdminView (1,306줄 → 7파일): UsersPanel, PermissionsPanel, MenusPanel 등
- LeftPanel (1,237줄 → 5파일): PredictionInputSection, InfoLayerSection, OilBoomSection 등

FEATURE_ID 레지스트리(common/constants/featureIds.ts) 및
감사로그 서브탭 추적 훅(useFeatureTracking) 추가.

.gitignore의 scat/ → /scat/ 수정 (scat 탭 파일 추적 누락 수정)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
리소스 가시성(READ/HIDE) 단일 차원에서 리소스 × 오퍼레이션(RCUD) 2차원
권한 모델로 전환하여 세밀한 CRUD 권한 제어 지원.

- DB: AUTH_PERM에 OPER_CD 컬럼 추가, 마이그레이션 004 작성
- DB: AUTH_PERM_TREE 리소스 트리 테이블 추가 (마이그레이션 003)
- Backend: permResolver 2차원 권한 해석 엔진 (상속 + 오퍼레이션)
- Backend: requirePermission 미들웨어 신규 (리소스×오퍼레이션 검증)
- Backend: authService permissions → Record<string, string[]> 반환
- Backend: roleService/roleRouter OPER_CD 지원 API
- Backend: Helmet CORP 설정 (sendBeacon cross-origin 허용)
- Frontend: authStore.hasPermission(resource, operation?) 하위 호환 확장
- Frontend: PermissionsPanel 역할탭 + RCUD 4열 매트릭스 UI 전면 재작성
- Frontend: sendBeacon API_BASE_URL 절대경로 전환
- Docs: COMMON-GUIDE 권한 체계 + CRUD API 규칙 문서화

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- wing + wing_auth DB를 wing 단일 DB로 통합 (wing/auth 스키마 분리)
- wingPool 단일 Pool + search_path 설정, authPool 하위 호환 유지
- 게시판 BOARD_POST DDL + 초기 데이터 10건 마이그레이션
- boardService/boardRouter CRUD 구현 (페이징, 검색, 소유자 검증, 논리삭제)
- requirePermission 카테고리별 서브리소스 동적 적용 (board:notice, board:qna 등)
- 프론트엔드 boardApi 서비스 + BoardListTable mock→API 전환
- CRUD-API-GUIDE (범용 가이드 + 게시판 튜토리얼) 문서 작성

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
htlee added 1 commit 2026-02-28 18:42:53 +09:00
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
htlee merged commit aa2b6f0221 into develop 2026-02-28 18:43:23 +09:00
htlee 삭제된 브랜치 feature/refactor-phase5-view-decomposition 2026-02-28 18:43:23 +09:00
"로그인하여 이 대화에 참여"
No reviewers
레이블 없음
마일스톤 없음
담당자 없음
참여자 1명
알림
마감일
기한이 올바르지 않거나 범위를 벗어났습니다. 'yyyy-mm-dd'형식을 사용해주십시오.

마감일이 설정되지 않았습니다.

의존성

No dependencies set.

Reference: gc/wing-ops#25
No description provided.