first commit
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
# BARON-SSO 연계 Task 정리
|
||||
|
||||
## 1. 문서 목적
|
||||
|
||||
본 문서는 현재 저장소 기준으로 이미 완료된 작업, 부분 완료 상태인 작업, 앞으로 진행해야 할 작업을 다시 정리한 실행 문서임.
|
||||
|
||||
특히 다음 두 문서를 하나의 실행 기준으로 연결하는 목적을 가짐.
|
||||
|
||||
- 사용자/운영 흐름 기준: `docs/architecture_secretary_sso_user_scenarios.md`
|
||||
- 권한/테넌트/분기 기준: `docs/architecture_secretary_sso_role_access.md`
|
||||
|
||||
이 문서에서는 기존 초안 중 현재 방향과 맞지 않는 항목은 정리하고, 실제 구현 상태와 다음 작업 순서를 우선으로 기록함.
|
||||
|
||||
## 2. 현재 기준선
|
||||
|
||||
### 2.1 운영 구조 기준
|
||||
|
||||
- 인증 원본은 BARON-SSO 임.
|
||||
- 1차 사용자 분기는 `Q&A 관리자 테넌트` 소속 여부로 판단함.
|
||||
- 일반 사용자는 `/support/[workspaceCode]/**` 경로로 진입함.
|
||||
- 관리자/담당자는 `/main/project/[projectId]/feedback?channelId=[channelId]` 중심 관리자 콘솔로 진입함.
|
||||
- 초기 프로젝트 기준은 `EGBIM`, `TOVA`, `GAIA`, `KNGIL`, `INTRANET_QNA` 임.
|
||||
- 초기에는 프로젝트당 기본 채널 1개로 시작하고, 이후 문의 구분 기반 다중 채널로 확장함.
|
||||
|
||||
### 2.2 상태 표기 기준
|
||||
|
||||
- `완료`: 현재 저장소와 로컬 검증 기준으로 동작 경로가 확인된 작업
|
||||
- `부분 완료`: 일부 구현 또는 연결은 되었지만, 최종 운영 기준으로는 비어 있는 작업
|
||||
- `대기`: 설계만 있고 아직 구현 또는 운영 반영이 시작되지 않은 작업
|
||||
|
||||
## 3. 완료된 작업 정리
|
||||
|
||||
### 3.1 로컬 실행 기반
|
||||
|
||||
| 항목 | 상태 | 정리 |
|
||||
| --- | --- | --- |
|
||||
| 로컬 ABC/연관 서비스 실행 스크립트 | 완료 | `start-local.sh`, `check-local.sh` 기준 로컬 기동 경로가 정리되어 있음 |
|
||||
| 기본 개발 저장소 구조 | 완료 | `apps/web`, `apps/api`, `apps/secretary-api`, `apps/e2e` 등 작업 단위가 분리되어 있음 |
|
||||
| secretary-api 기본 앱 구조 | 완료 | FastAPI 엔트리포인트, health, tickets 라우트, Alembic 구조가 존재함 |
|
||||
|
||||
### 3.2 사용자 지원 포털
|
||||
|
||||
| 항목 | 상태 | 정리 |
|
||||
| --- | --- | --- |
|
||||
| 사용자 작성 페이지 | 완료 | `/support/[workspaceCode]/new` 구현 완료 |
|
||||
| 사용자 목록 페이지 | 완료 | `/support/[workspaceCode]/list` 구현 완료 |
|
||||
| 사용자 상세 페이지 | 완료 | `/support/[workspaceCode]/[ticketId]` 구현 완료 |
|
||||
| 기본 진입 리다이렉트 | 완료 | `/support/[workspaceCode]` 진입 시 목록 흐름 존재 |
|
||||
| 폼 템플릿 조회 | 완료 | workspace 기반 작성 폼 템플릿 조회 API 연결 완료 |
|
||||
| 작성/목록/상세 기본 흐름 | 완료 | 최소 1개 workspace 기준 작성 -> 목록 -> 상세 흐름 구현 완료 |
|
||||
| 댓글 CRUD | 완료 | 사용자 상세와 관리자 상세 시트에서 댓글 생성/수정/삭제 흐름 존재 |
|
||||
| 상세 상태 반영 | 완료 | 사용자 상세에서 내부 상태와 ABC 이슈 연결 상태를 함께 반영함 |
|
||||
|
||||
### 3.3 secretary-api 및 내부 DB
|
||||
|
||||
| 항목 | 상태 | 정리 |
|
||||
| --- | --- | --- |
|
||||
| support ticket 기본 API | 완료 | workspaces, tickets, ticket detail, comments, approve, issue 관련 기본 라우트 존재 |
|
||||
| 핵심 마이그레이션 1차/2차 | 완료 | `support_tickets`, 상태 컬럼, `extra_fields` 등 현재 UI 기준 컬럼 반영 완료 |
|
||||
| 내부 티켓 저장 | 완료 | `support_tickets` 생성 흐름 구현 완료 |
|
||||
| ABC 피드백 매핑 저장 | 완료 | 내부 티켓 생성 후 `abc_feedback_mappings` 저장 흐름 구현 완료 |
|
||||
| 승인/이슈 상태 컬럼 | 완료 | `approval_status`, `sync_status`, `issue_link_status` 관리 구조 존재 |
|
||||
| 코멘트 저장 구조 | 완료 | `ticket_comments` 및 관련 API 흐름 구현 완료 |
|
||||
| 첨부 메타데이터 테이블 | 완료 | `attachments` 테이블과 ORM 모델 존재 |
|
||||
|
||||
### 3.4 첨부파일 업로드 현재 완료 범위
|
||||
|
||||
| 항목 | 상태 | 정리 |
|
||||
| --- | --- | --- |
|
||||
| 작성 페이지 파일 선택 UI | 완료 | 작성 화면에서 다중 첨부 선택 가능 |
|
||||
| multipart 프록시 처리 | 완료 | `apps/web` API route 에서 multipart 파싱 후 secretary-api 로 전달함 |
|
||||
| secretary-api 업로드 수신 | 완료 | multipart 요청에서 `attachments` 수신 가능 |
|
||||
| 로컬 파일 저장 | 완료 | 업로드 파일을 로컬 디렉터리에 저장하고 메타데이터를 `attachments` 테이블에 기록함 |
|
||||
| 파일 크기 제한 | 완료 | 30MB 제한 설정 존재 |
|
||||
|
||||
### 3.5 운영 보조 화면
|
||||
|
||||
| 항목 | 상태 | 정리 |
|
||||
| --- | --- | --- |
|
||||
| `/ops` 페이지 | 완료 | 승인 대기/처리 흐름용 운영 보조 화면 존재 |
|
||||
| `/admin/issues` 페이지 | 완료 | 이슈 연결 대상 확인용 운영 보조 화면 존재 |
|
||||
| 관리자 상세 시트 댓글 연계 | 완료 | 관리자 피드백 상세 시트에서 support ticket 댓글 흐름 사용 가능 |
|
||||
|
||||
## 4. 부분 완료 작업 정리
|
||||
|
||||
### 4.1 role_access 기준 운영 구조 반영
|
||||
|
||||
| 항목 | 상태 | 남은 내용 |
|
||||
| --- | --- | --- |
|
||||
| 프로젝트 구조 문서화 | 부분 완료 | 새 기준 프로젝트 목록은 role_access 에 정리됐지만 실제 운영 seed/매핑 반영은 남아 있음 |
|
||||
| 프로젝트/채널 실제 생성 | 대기 | `EGBIM`, `TOVA`, `GAIA`, `KNGIL`, `INTRANET_QNA` 프로젝트와 동일명 기본 채널 생성 필요 |
|
||||
| 관리자 접근 정책 | 대기 | 프로젝트/채널별 운영자 접근 범위와 내부 권한 테이블 반영 필요 |
|
||||
| 문의 구분 기반 확장 전략 | 부분 완료 | 문서 초안은 있으나 실제 필드/라우팅/큐 분기 규칙은 미구현 |
|
||||
|
||||
### 4.2 BARON-SSO 및 권한 분기
|
||||
|
||||
| 항목 | 상태 | 남은 내용 |
|
||||
| --- | --- | --- |
|
||||
| BARON-SSO 로그인 연동 | 대기 | 실제 OIDC/OAuth 연동 구현 필요 |
|
||||
| 세션의 `user_id`, `tenant_id`, `role_keys` 처리 | 대기 | 현재 테스트 사용자 상수 기반 흐름을 실제 세션 기반으로 전환해야 함 |
|
||||
| 관리자 테넌트 여부 판정 | 대기 | `Q&A 관리자 테넌트` 기준 1차 분기 로직 미구현 |
|
||||
| 사용자/관리자 페이지 분기 | 대기 | 로그인 후 `/support/...` 와 관리자 콘솔 자동 분기 미구현 |
|
||||
| 프로젝트/채널별 세부 권한 제한 | 대기 | 관리자 콘솔 진입 후 재검증 로직 미구현 |
|
||||
|
||||
### 4.3 사용자 지원 포털 보강
|
||||
|
||||
| 항목 | 상태 | 남은 내용 |
|
||||
| --- | --- | --- |
|
||||
| 동적 필드 전체 사용 | 부분 완료 | 현재 title/description 중심 최소 렌더링만 사용 중 |
|
||||
| 문의 구분 필드 반영 | 대기 | role_access 기준 문의 구분 저장 및 운영 큐 분기 연결 필요 |
|
||||
| 첨부파일 상세 조회/다운로드 | 대기 | 업로드 저장은 되지만 목록/상세 응답과 다운로드 경로는 없음 |
|
||||
| 첨부파일 ABC 연동 | 대기 | 현재 ABC 생성 시 제목/본문만 전송하고 첨부는 내부 로컬 저장만 수행함 |
|
||||
| 작성 완료 결과 표준화 | 부분 완료 | 현재 ticket 상태는 보이지만 운영 기준 완료 UX 는 추가 정리 필요 |
|
||||
|
||||
### 4.4 운영/관리 기능 보강
|
||||
|
||||
| 항목 | 상태 | 남은 내용 |
|
||||
| --- | --- | --- |
|
||||
| 승인 이력 정교화 | 부분 완료 | 승인 상태 전이와 기본 API 는 있으나 실제 운영 권한/사유/이력 정책 보강 필요 |
|
||||
| 이슈 생성/연결 운영 흐름 | 부분 완료 | 상태 동기화와 보조 화면은 있으나 실제 운영 정책/권한 제어는 추가 필요 |
|
||||
| 담당자 배정/처리 메모 | 대기 | 전담 운영 테이블/화면/이력 흐름 미구현 |
|
||||
| 관리자 콘솔 프로젝트 단위 제한 | 대기 | role_access 기준 프로젝트/채널별 접근 제한 미구현 |
|
||||
|
||||
### 4.5 데이터 및 운영 자동화
|
||||
|
||||
| 항목 | 상태 | 남은 내용 |
|
||||
| --- | --- | --- |
|
||||
| seed 데이터 정리 | 부분 완료 | 테스트 흐름은 있으나 새 프로젝트 기준 seed 재정리 필요 |
|
||||
| 공통 권한 테이블 | 대기 | `tenant + project + channel + role` 조합 저장 구조 구체화 필요 |
|
||||
| 알림/후속 연계 | 대기 | 승인 완료, 처리 완료, 설정 누락 알림 등 운영 이벤트 미구현 |
|
||||
| E2E 시나리오 고정 | 부분 완료 | 화면 시연은 가능하나 role_access 기준 사용자/관리자 분기 시나리오 정리는 부족함 |
|
||||
|
||||
## 5. 앞으로 해야 할 작업
|
||||
|
||||
### 5.1 P0: role_access 기준 운영 구조 확정
|
||||
|
||||
- BARON-SSO `Q&A 관리자 테넌트` 식별값 확정
|
||||
- 관리자 대상 계정 배정 기준 확정
|
||||
- 프로젝트 `EGBIM`, `TOVA`, `GAIA`, `KNGIL`, `INTRANET_QNA` 실제 생성
|
||||
- 각 프로젝트 기본 채널 1개 생성
|
||||
- 사용자 Q&A 이동 URL과 `workspaceCode` 매핑 표 확정
|
||||
- 프로젝트/채널별 관리자 접근 정책 확정
|
||||
|
||||
### 5.2 P0: 로그인 후 분기와 권한 처리 구현
|
||||
|
||||
- BARON-SSO 로그인 연동 구현
|
||||
- 세션에서 `user_id`, `tenant_id`, `role_keys` 읽는 공통 계층 추가
|
||||
- 관리자 테넌트 여부에 따른 1차 분기 구현
|
||||
- 일반 사용자 -> `/support/[workspaceCode]/new` 이동 구현
|
||||
- 관리자/담당자 -> 관리자 콘솔 기본 진입 경로 이동 구현
|
||||
- 관리자 콘솔 진입 후 프로젝트/채널별 재검증 구현
|
||||
|
||||
### 5.3 P1: 사용자 포털 기능 마감
|
||||
|
||||
- 문의 구분 필드 추가 및 저장
|
||||
- `workspace`별 동적 필드 전체 렌더링 정리
|
||||
- 첨부파일 응답 스키마 추가
|
||||
- 사용자 상세 첨부 목록 및 다운로드 구현
|
||||
- 필요 시 첨부 ABC 저장 전략 확정 후 브릿지 구현
|
||||
- 업로드 실패/부분 저장 실패 시 사용자 안내 문구 표준화
|
||||
|
||||
### 5.4 P1: 운영/관리 기능 마감
|
||||
|
||||
- 승인/반려 사유와 승인 이력 화면 정리
|
||||
- 담당자 배정, 처리 메모, 상태 변경 이력 구현
|
||||
- 이슈 생성 후 사용자 상세 상태 반영 규칙 정리
|
||||
- 관리자 콘솔에서 프로젝트/채널/문의구분 기반 큐 분리
|
||||
- 운영 보조 화면 `/ops`, `/admin/issues` 와 실제 관리자 콘솔 역할 분담 정리
|
||||
|
||||
### 5.5 P2: 운영 안정화 및 검증
|
||||
|
||||
- role_access 기준 테스트 계정 3종 이상 준비
|
||||
- 일반 사용자/담당자/시스템 관리자 시나리오별 E2E 체크리스트 작성
|
||||
- 프로젝트 미매핑, 권한 부족, 세션 만료 예외 처리 검증
|
||||
- 알림 및 운영 설정 누락 감지 체계 추가
|
||||
- 문서 간 용어 통일: tenant, workspace, project, channel, 문의 구분
|
||||
|
||||
## 6. 바로 실행할 다음 작업 제안
|
||||
|
||||
### 6.1 1차 묶음
|
||||
|
||||
- `workspaceCode -> project/channel` 새 매핑표 확정
|
||||
- `Q&A 관리자 테넌트` 식별 규칙 확정
|
||||
- 로그인 후 사용자/관리자 분기 미들웨어 또는 라우터 초안 작성
|
||||
|
||||
### 6.2 2차 묶음
|
||||
|
||||
- 첨부파일 조회/다운로드 API 추가
|
||||
- 사용자 상세 첨부 표시 추가
|
||||
- 문의 구분 필드 저장 및 관리자 큐 표시 초안 추가
|
||||
|
||||
### 6.3 3차 묶음
|
||||
|
||||
- 프로젝트/채널별 관리자 접근 제어 테이블 설계
|
||||
- 운영 보조 화면과 실제 관리자 콘솔 권한 경계 정리
|
||||
- role_access 기준 E2E 시나리오 문서화
|
||||
|
||||
## 7. 이번 정리에서 제거한 구버전 가정
|
||||
|
||||
- `INTRANET_SUPPORT`, `SOFTWARE_QA` 중심 Project 초안은 현재 우선 기준에서 제외함.
|
||||
- 기존 task 문서에 있던 인트라넷 신청형 업무 중심 Channel 목록은 role_access 기준 Q&A 프로젝트 구조가 확정될 때까지 보조 아이디어로만 취급함.
|
||||
- 테스트 상수 사용자 기준 흐름은 임시 검증 수단으로 유지하되, 운영 기준 완료 항목으로 보지 않음.
|
||||
|
||||
## 8. 최종 요약
|
||||
|
||||
- 현재 구현은 사용자 지원 포털, 내부 티켓 저장, 댓글, 일부 운영 보조 화면까지는 갖춰져 있음.
|
||||
- 새 기준선은 role_access 문서의 테넌트 분기, 프로젝트 구조, 관리자 권한 모델임.
|
||||
- 지금 가장 큰 공백은 SSO 실연동, 로그인 후 분기, 프로젝트/채널별 접근 제어, 첨부 조회/다운로드, 문의 구분 기반 운영 큐 분리임.
|
||||
- 이후 작업은 기존 범용 초안 확장보다 role_access 기준 운영 구조를 코드와 데이터에 반영하는 순서로 진행해야 함.
|
||||
Reference in New Issue
Block a user