-
Notifications
You must be signed in to change notification settings - Fork 0
dashboard user flow
실제 React SPA에서 로그인한 사용자가 권한 범위 안의 공장과 시스템 상태를 확인하고 보고서 또는 사용자 관리 작업으로 이동하는 흐름이다.
- 사용자가
/login에서Cognito로 로그인을 누른다. - SPA가 Cognito Hosted UI로 Authorization Code + PKCE 로그인을 시작한다.
- Cognito가
/callback으로 authorization code를 돌려준다. -
oidc-client-ts가 code를 token으로 교환하고 브라우저 session을 저장한다. - 성공하면
/로 이동하고, 실패하면 오류와다시 시도버튼을 표시한다.
보호 route에 session 없이 접근하면 /login으로 이동한다. 로그인 성공만으로
앱 권한이 생기지는 않는다. Backend가 Cognito sub에 대응하는 RDS 사용자를
찾지 못하거나 disabled 상태이면 API는 403을 반환한다.
/는 Backend가 현재 사용자에게 허용한 공장만 표시한다.
확인 순서:
- Fleet Safety Pulse에서 공장별 안전 점수 위치와 위험/주의/안전 개수를 본다.
- Factories 카드에서 안전 점수, 위험 level, node ready, pipeline 상태,
10분 추이,
top_causes를 비교한다. - 최근 10분 위험 level 변화 목록을 전체 또는 공장별로 필터링한다.
- 공장 카드 또는 Sidebar 공장 항목을 눌러 상세로 이동한다.
수동 새로고침과 Off/5s/10s/30s/1m 자동 새로고침을 지원한다. 최초 로드 실패,
공장 0개, 최근 악화 전환 0건은 서로 다른 상태로 표시한다.
/factory/:factoryId는 선택한 공장의 현재 상태를 표시한다. 권한 없는 공장 URL을
직접 입력하면 Backend가 403을 반환한다.
상단 hero에서 다음을 먼저 본다.
- 공장 ID와 환경 유형
- 현재 safety score와 risk level
- pipeline 상태와 stale 여부
- 최근 10분 score 추이
- node ready 수와 마지막 갱신 시각
-
risk.top_causes상위 3개 - 온도, 습도, 기압 현재 평균
- fire/fall/bend AI 점수와 abnormal sound
- node/workload 요약
- BME280, camera, microphone 상태
- heartbeat와 spool write 상태
1h, 6h, 12h, 24h selector로 안전 점수, 환경 센서, AI 점수를 본다.
-
1h:HISTORY#STATE원시 snapshot -
6h/12h/24h:GRAPH#5M또는 재집계 bucket - 장기 구간: 평균/최소/최대, 변동 음영, AI spike marker 표시
- node별 Ready, CPU, Memory, Disk, network 상태
- CPU/Memory/Disk history chart
- workload 상태, ready container, 배치 node, restart count
- device, heartbeat, pipeline 상세
10m, 1h, 6h, 24h, CUSTOM 범위를 선택한다. Custom 범위는 최근 24시간
안에서 시작/종료 날짜와 시간을 고른다.
Timeline은 snapshot 전체를 로그처럼 나열하지 않는다. risk level 변화 또는 safety score 10점 이상 변화를 event로 파생한다. 1시간을 넘는 집계 데이터에는 원인 정보가 없을 수 있음을 source label로 구분한다.
공장 상세는 WebSocket update를 현재 상태와 10분 trend에 반영한다. 연결이 재시도 중이거나 offline이어도 REST 수동/자동 새로고침을 사용할 수 있다. 탭은 처음 방문한 뒤 mount 상태를 유지해 되돌아올 때 cache를 보존한다.
System 권한이 있으면 Sidebar의 System > 클라우드 인프라에서
/cloud-infra로 이동한다.
- overall status, fast/slow age, stale badge를 본다.
- Health strip과 component matrix에서 문제 영역을 좁힌다.
- 데이터 파이프라인, Dashboard runtime, Redis/RDS, 공장 최신성, EKS/ArgoCD, S3 최신성을 상세 확인한다.
- collector가 제공한
reasons[]와errors[]로 상태 근거를 확인한다. - 최근 1시간 상태 흐름을 확인한다.
LATEST item이 없으면 오류가 아니라 Cloud infra 수집 대기를 표시한다.
unknown은 측정 실패 또는 오래된 상태이며 critical과 구분한다.
System 메뉴가 숨겨져 있어도 이것만으로 인가가 완료된 것은 아니다. URL이나 API를
직접 호출하면 Backend의 System 권한 검사에서 403이 강제된다.
/reports는 모든 로그인 사용자에게 Sidebar 메뉴가 보이지만 selector의 내용은
권한에 따라 달라진다.
- 허용된 공장을 고른다.
- 최근 날짜 shortcut 또는 date picker로 날짜를 고른다.
- Markdown 일간 보고서를 읽는다.
- PDF 인쇄 또는 Word
.docx로 내보낸다.
System 권한이 있는 사용자에게만 별도 cloud-infra selector가 표시된다.
Backend도 Cloud Infra 보고서 조회에 System 권한을 강제한다. 보고서가 없으면
404를 일반 API 오류와 구분해 아직 생성되지 않은 상태로 안내한다.
/chat은 로그인 사용자가 자연어로 공장 상태, 원인, 추이, 보고서, 증빙 이미지를 묻는 화면이다.
- 공장 selector에서 대상 공장을 고르거나 질문에서 식별되도록 둔다.
- 응답 모드(자동/빠른 답변/정밀 분석)를 고른다.
- 질문을 입력하면 Backend가 intent, 시간 범위, 공장을 해석한다.
- 데이터 조회 전 공장/System RBAC를 강제한다.
- 답변과 함께 확인된 값, 추정, 데이터 한계, 선택적 증빙 이미지를 확인한다.
채팅은 read model 조회만 수행하며 관제 데이터를 수정하지 않는다. LLM이 선택한 공장도 Backend가 다시 권한 검사한다.
System 권한이 있으면 /image-snapshots에서 AI 이벤트 증빙 이미지를 조회한다.
- 공장과 시각 범위를 고른다.
- 탐지 유형별 이미지 metadata를 확인한다.
- presigned GET URL로 원본 이미지를 열어본다.
이미지 binary는 MQTT/IoT Core가 아니라 S3 image_snapshot/에 직접 업로드된다. Dashboard는 객체를 public으로 만들지 않고 짧은 만료의 presigned URL만 사용한다.
super_admin 또는 legacy org_admin은 Sidebar의 사용자 관리에서
/admin/users로 이동한다.
가능한 작업:
- active 사용자 목록과 역할 필터
- 신규 사용자 생성
- 이름, 역할, System 권한, 공장 배정 수정
- 사용자 삭제
현재 생성/수정 UI는 super_admin과 factory_admin만 선택하게 한다.
super_admin은 전체 공장과 System 권한을 가지며 개별 공장 grant를 두지 않는다.
factory_admin은 선택한 공장에 admin grant를 받고, Cloud Infra 권한은
can_view_system checkbox로 별도 부여한다.
생성/삭제는 Cognito와 RDS를 함께 변경한다. 실패하면 완료로 표시하지 않으며, Backend는 audit log에 actor와 작업을 기록한다.
Sidebar 하단의 로그아웃을 누르면:
- 로컬 OIDC user를 제거한다.
- Cognito Hosted UI
/logout으로 이동한다. - 설정된 logout URI로 돌아온다.
| 역할 | Fleet/Factory | Cloud Infra | Reports | User Management |
|---|---|---|---|---|
super_admin |
모든 공장 | 가능 | 모든 공장 + Cloud Infra | 가능 |
factory_admin, can_view_system=false
|
배정 공장만 | 불가 | 배정 공장만 | 불가 |
factory_admin, can_view_system=true
|
배정 공장만 | 가능 | 배정 공장 + Cloud Infra | 불가 |
legacy org_admin
|
모든 공장 | 가능 | 모든 공장 + Cloud Infra | 가능 |
legacy viewer
|
배정 공장만 | 설정에 따라 가능 | 배정 공장, System 권한 시 Cloud Infra | 불가 |
관련 문서
- 시스템 아키텍처
- 제어 & 데이터 플레인
- Dashboard VPC 설계
- 하드웨어 배치
- Hub EKS 네임스페이스
- Tailscale Mesh VPN
- 데이터 생명주기
- 데이터 조회 모델
- 실시간 갱신 구조
- IoT 데이터 계약
- Reporting Pipeline
- 로컬 스토리지
- 클라우드 스토리지
- Edge Agent
- Edge AI 탐지
- Factory-A Log Adapter
- Dummy Sensor
- Edge IoT Publisher
- Lambda Data Processor
- Risk Normalizer
- Risk Score Engine
- Pipeline Status Aggregator
- Graph Aggregator 5m
- Cloud Infra Collector
- Daily Report Generator
- Risk Alert Dispatcher
- Image Snapshot Pipeline
- Dashboard Backend
- Dashboard Web
- AI 채팅 어시스턴트