|
| 1 | +# SafeCrowd UI 디자인 대상 창 목록 |
| 2 | + |
| 3 | +이 문서는 다음 UML을 기준으로 실제 UI 디자인이 필요한 창, 화면, 패널, 다이얼로그를 정리한다. |
| 4 | + |
| 5 | +- `uml/application-authoring-workspace.puml` |
| 6 | +- `uml/application-analysis-workspace.puml` |
| 7 | +- `uml/application-workspace-state-model.puml` |
| 8 | + |
| 9 | +`ProjectRepository`, `ResultRepository`, `ImportOrchestrator`, `ScenarioBatchRunner`, `SimulationSession`, `ResultAggregator`, `AlternativeRecommendationService`, `EngineRuntime`, `IRenderBridge` 같은 항목은 구현 컴포넌트이며 UI 디자인 대상이 아니다. |
| 10 | + |
| 11 | +## 1. 메인 애플리케이션 창 |
| 12 | + |
| 13 | +### 1.1 Main Workspace Window |
| 14 | +- 앱의 기본 창이다. |
| 15 | +- 프로젝트 상태, 작성(authoring), 실행(run), 분석(analysis) 흐름을 한 화면 구조 안에서 전환하거나 배치한다. |
| 16 | +- 상태 모델의 `NoProject`, `LayoutNeedsReview`, `LayoutReady`, `ScenarioDraftInvalid`, `ScenarioReady`, `BatchRunning`, `BatchPaused`, `AggregationPending`, `ResultsAvailable`, `ComparisonReady`, `RecommendationReady` 상태에 따라 패널 활성/비활성이 달라져야 한다. |
| 17 | + |
| 18 | +필요한 디자인 요소: |
| 19 | +- 상단 메뉴 또는 툴바 |
| 20 | +- 현재 프로젝트명과 저장 상태 |
| 21 | +- 현재 workspace 상태 표시 |
| 22 | +- 주요 작업 영역 전환 |
| 23 | +- 닫기/저장/열기 같은 프로젝트 명령 |
| 24 | +- 실행 가능 여부와 blocker 상태 표시 |
| 25 | + |
| 26 | +## 2. 프로젝트 시작/관리 창 |
| 27 | + |
| 28 | +### 2.1 Project Navigator |
| 29 | +- 새 프로젝트, 기존 프로젝트 열기, 저장, 최근 프로젝트 접근의 진입점이다. |
| 30 | +- `Project Save/Open`은 별도 창 이름이 아니라 저장/열기 처리를 담당하는 내부 흐름으로 본다. |
| 31 | + |
| 32 | +필요한 디자인 요소: |
| 33 | +- 새 프로젝트 생성 |
| 34 | +- 프로젝트 열기 |
| 35 | +- 프로젝트 저장 |
| 36 | +- 다른 이름으로 저장이 필요하다면 저장 위치 선택 |
| 37 | +- 최근 프로젝트 목록 |
| 38 | +- 프로젝트 닫기 |
| 39 | +- 프로젝트 상태 표시 |
| 40 | + |
| 41 | +### 2.2 Project Open Dialog |
| 42 | +- 앱 전용 프로젝트 선택 창을 만들 경우 디자인 대상이다. |
| 43 | +- OS 파일 다이얼로그만 사용할 경우 별도 상세 UI 디자인은 생략 가능하다. |
| 44 | + |
| 45 | +필요한 디자인 요소: |
| 46 | +- 프로젝트 파일 선택 |
| 47 | +- 최근 프로젝트 바로 열기 |
| 48 | +- 열 수 없는 프로젝트 오류 표시 |
| 49 | +- pending review 프로젝트와 approved 프로젝트 상태 구분 |
| 50 | + |
| 51 | +### 2.3 Project Save Dialog |
| 52 | +- 앱 전용 저장 위치 선택 또는 프로젝트 메타데이터 입력이 필요할 경우 디자인 대상이다. |
| 53 | +- 단순 파일 저장만 OS 파일 다이얼로그로 처리한다면 별도 화면 디자인은 최소화할 수 있다. |
| 54 | + |
| 55 | +필요한 디자인 요소: |
| 56 | +- 저장 위치 선택 |
| 57 | +- 프로젝트 이름 입력 |
| 58 | +- 덮어쓰기 확인 |
| 59 | +- 저장 실패 오류 표시 |
| 60 | + |
| 61 | +## 3. Authoring Workspace 창과 패널 |
| 62 | + |
| 63 | +### 3.1 Authoring Workspace |
| 64 | +- 레이아웃 import, 검토, 보정, 시나리오 작성이 이루어지는 작업 화면이다. |
| 65 | +- `LayoutNeedsReview`, `LayoutReady`, `ScenarioDraftInvalid`, `ScenarioReady` 상태를 주로 다룬다. |
| 66 | + |
| 67 | +필요한 디자인 요소: |
| 68 | +- 프로젝트 네비게이터 영역 |
| 69 | +- import 흐름 진입 |
| 70 | +- layout canvas |
| 71 | +- inspector |
| 72 | +- issue review |
| 73 | +- scenario library |
| 74 | +- scenario editor |
| 75 | +- readiness 표시 |
| 76 | +- variation diff 표시 |
| 77 | + |
| 78 | +### 3.2 Import Workflow UI |
| 79 | +- 외부 레이아웃 파일을 선택하고 import 또는 reimport를 수행하는 화면 또는 다이얼로그다. |
| 80 | + |
| 81 | +필요한 디자인 요소: |
| 82 | +- 파일 선택 |
| 83 | +- import 옵션 |
| 84 | +- reimport 옵션 |
| 85 | +- 변환 규칙 선택 |
| 86 | +- import 실행 |
| 87 | +- import 진행 상태 |
| 88 | +- import 실패/성공 결과 표시 |
| 89 | + |
| 90 | +### 3.3 Issue Review Panel |
| 91 | +- import 오류, 경고, blocker를 검토하는 패널이다. |
| 92 | +- blocker가 남아 있으면 실행이 비활성화되어야 한다. |
| 93 | + |
| 94 | +필요한 디자인 요소: |
| 95 | +- 오류/경고 목록 |
| 96 | +- blocker 여부 |
| 97 | +- 승인/무시/수정 필요 상태 |
| 98 | +- 문제 위치로 이동 |
| 99 | +- layout review 승인 상태 |
| 100 | +- 남은 blocker 수 |
| 101 | + |
| 102 | +### 3.4 Layout Canvas |
| 103 | +- import된 공간 구조와 topology를 보고 수정하는 주 작업 화면이다. |
| 104 | + |
| 105 | +필요한 디자인 요소: |
| 106 | +- 공간/노드/연결/출구/제어구역 표시 |
| 107 | +- 선택, 확대/축소, 이동 |
| 108 | +- 오류 위치 하이라이트 |
| 109 | +- topology 수정 |
| 110 | +- live/analysis viewport와 구분되는 authoring 전용 표시 |
| 111 | + |
| 112 | +### 3.5 Inspector Panel |
| 113 | +- Layout Canvas에서 선택한 요소의 속성을 표시하고 편집하는 패널이다. |
| 114 | +- 현재 UML에서는 `Layout Canvas + Inspector`로 묶여 있지만 실제 UI 디자인에서는 별도 패널로 다루는 것이 좋다. |
| 115 | + |
| 116 | +필요한 디자인 요소: |
| 117 | +- 선택 요소 속성 |
| 118 | +- 이름/유형/연결/측정 구역 등 편집 필드 |
| 119 | +- 유효성 오류 표시 |
| 120 | +- 변경 저장 또는 적용 |
| 121 | + |
| 122 | +### 3.6 Scenario Library |
| 123 | +- baseline, alternative, recommended draft를 구분해서 보여주는 시나리오 목록이다. |
| 124 | + |
| 125 | +필요한 디자인 요소: |
| 126 | +- 시나리오 패밀리 목록 |
| 127 | +- baseline 표시 |
| 128 | +- alternative 목록 |
| 129 | +- recommended draft 목록 |
| 130 | +- run-ready 상태 |
| 131 | +- scenario lineage 표시 |
| 132 | +- 시나리오 열기/복제/삭제 |
| 133 | + |
| 134 | +### 3.7 Scenario Template Picker |
| 135 | +- 새 시나리오를 빠르게 만들기 위한 템플릿 선택 화면 또는 다이얼로그다. |
| 136 | + |
| 137 | +필요한 디자인 요소: |
| 138 | +- 템플릿 카드 |
| 139 | +- intended use |
| 140 | +- risk axis |
| 141 | +- 필요한 layout feature |
| 142 | +- prerequisite 충족/미충족 표시 |
| 143 | +- 적용 불가 사유 |
| 144 | +- 템플릿 적용 |
| 145 | + |
| 146 | +### 3.8 Scenario Editor Tabs |
| 147 | +- 선택한 시나리오의 입력값을 편집하는 탭형 화면이다. |
| 148 | + |
| 149 | +필요한 디자인 요소: |
| 150 | +- Population 탭 |
| 151 | +- Environment 탭 |
| 152 | +- Control 탭 |
| 153 | +- Execution 탭 |
| 154 | +- 필수 입력 표시 |
| 155 | +- invalid edit 상태 표시 |
| 156 | +- draft 저장 |
| 157 | + |
| 158 | +### 3.9 Readiness Panel |
| 159 | +- 현재 layout과 scenario가 실행 가능한지 보여주는 패널이다. |
| 160 | + |
| 161 | +필요한 디자인 요소: |
| 162 | +- 필수 입력 누락 |
| 163 | +- blocker 목록 |
| 164 | +- layout 승인 여부 |
| 165 | +- scenario validation 결과 |
| 166 | +- Run 버튼 활성 조건 설명 |
| 167 | +- 누락 항목으로 이동 |
| 168 | + |
| 169 | +### 3.10 Variation Diff List |
| 170 | +- baseline 대비 alternative 또는 recommended draft의 변경점을 보여주는 패널이다. |
| 171 | + |
| 172 | +필요한 디자인 요소: |
| 173 | +- 변경된 입력 목록 |
| 174 | +- control event 차이 |
| 175 | +- route cost assumption 차이 |
| 176 | +- inflow setting 차이 |
| 177 | +- visibility condition 차이 |
| 178 | +- template origin metadata |
| 179 | +- baseline으로부터의 변경 추적 |
| 180 | + |
| 181 | +## 4. Run/Analysis Workspace 창과 패널 |
| 182 | + |
| 183 | +### 4.1 Analysis Workspace |
| 184 | +- 실행, 재생, 결과 확인, 비교, 추천, 내보내기를 수행하는 작업 화면이다. |
| 185 | +- `BatchRunning`, `BatchPaused`, `AggregationPending`, `ResultsAvailable`, `ComparisonReady`, `RecommendationReady` 상태를 주로 다룬다. |
| 186 | + |
| 187 | +필요한 디자인 요소: |
| 188 | +- run control |
| 189 | +- batch progress |
| 190 | +- live viewport |
| 191 | +- heatmap selector |
| 192 | +- run results |
| 193 | +- variation summary |
| 194 | +- comparison |
| 195 | +- recommendation |
| 196 | +- export |
| 197 | + |
| 198 | +### 4.2 Run Control |
| 199 | +- batch 실행을 시작, 일시정지, 재개, 정지하는 제어 영역이다. |
| 200 | + |
| 201 | +필요한 디자인 요소: |
| 202 | +- Run |
| 203 | +- Pause |
| 204 | +- Resume |
| 205 | +- Stop |
| 206 | +- 실행 불가 상태 표시 |
| 207 | +- 승인된 layout과 valid scenario 조건 표시 |
| 208 | +- 현재 실행 상태 |
| 209 | + |
| 210 | +### 4.3 Batch Progress |
| 211 | +- batch 또는 variation 실행 진행률을 보여주는 패널이다. |
| 212 | + |
| 213 | +필요한 디자인 요소: |
| 214 | +- 현재 run 번호 |
| 215 | +- 현재 variation |
| 216 | +- 전체 진행률 |
| 217 | +- 남은 작업량 |
| 218 | +- 실패한 run 표시 |
| 219 | +- aggregation pending 상태 표시 |
| 220 | + |
| 221 | +### 4.4 Live Viewport |
| 222 | +- 실행 중 runtime playback을 보여주는 viewport다. |
| 223 | +- 비교, 추천, 집계 계산을 이 화면에서 직접 추론하지 않아야 한다. |
| 224 | + |
| 225 | +필요한 디자인 요소: |
| 226 | +- 시뮬레이션 재생 화면 |
| 227 | +- frame snapshot 표시 |
| 228 | +- playback 상태 |
| 229 | +- live overlay 표시 |
| 230 | +- 확대/축소/이동 |
| 231 | +- 실행 중 상호작용 제한 |
| 232 | + |
| 233 | +### 4.5 Heatmap Selector |
| 234 | +- live overlay와 persisted heatmap layer를 선택하는 컨트롤이다. |
| 235 | + |
| 236 | +필요한 디자인 요소: |
| 237 | +- live overlay 선택 |
| 238 | +- persisted layer 선택 |
| 239 | +- 데이터 출처 표시 |
| 240 | +- 레이어 표시/숨김 |
| 241 | +- 색상 범례 |
| 242 | +- intensity 범위 |
| 243 | + |
| 244 | +### 4.6 Run Results Panel |
| 245 | +- 단일 실행 결과 요약을 보여주는 패널이다. |
| 246 | +- `ResultsAvailable` 이후 열 수 있다. |
| 247 | + |
| 248 | +필요한 디자인 요소: |
| 249 | +- run summary |
| 250 | +- 주요 위험 지표 |
| 251 | +- 시간/구간별 결과 |
| 252 | +- 관련 artifact 상태 |
| 253 | +- Variation Summary로 이동 |
| 254 | + |
| 255 | +### 4.7 Variation Summary |
| 256 | +- 반복 실행 aggregate 결과를 보여주는 패널이다. |
| 257 | +- `ResultsAvailable` 이후 열 수 있다. |
| 258 | + |
| 259 | +필요한 디자인 요소: |
| 260 | +- variation별 집계 |
| 261 | +- 평균/최악/분포 지표 |
| 262 | +- 반복 실행 신뢰도 |
| 263 | +- baseline comparison 열기 |
| 264 | +- persisted summary 상태 |
| 265 | + |
| 266 | +### 4.8 Comparison View |
| 267 | +- baseline과 alternatives를 비교하는 화면이다. |
| 268 | +- `ComparisonReady` 이후 활성화된다. |
| 269 | + |
| 270 | +필요한 디자인 요소: |
| 271 | +- baseline 선택 |
| 272 | +- alternative 선택 |
| 273 | +- 비교 지표 표 |
| 274 | +- 차이 시각화 |
| 275 | +- cumulative artifact 표시 |
| 276 | +- recommendation drawer 열기 |
| 277 | +- export 진입 |
| 278 | + |
| 279 | +### 4.9 Recommendation Drawer |
| 280 | +- 추천 근거를 검토하고 추천안을 scenarioize하는 drawer 또는 side panel이다. |
| 281 | +- `RecommendationReady` 이후 활성화된다. |
| 282 | + |
| 283 | +필요한 디자인 요소: |
| 284 | +- 추천 후보 목록 |
| 285 | +- evidence 표시 |
| 286 | +- 추천 근거 artifact 연결 |
| 287 | +- scenarioize 버튼 |
| 288 | +- 추천 적용/닫기 |
| 289 | +- 적용 시 draft 생성 흐름 |
| 290 | + |
| 291 | +### 4.10 Export Dialog |
| 292 | +- canonical artifact bundle을 내보내는 다이얼로그다. |
| 293 | +- 필요한 persisted artifact가 준비된 뒤 활성화된다. |
| 294 | + |
| 295 | +필요한 디자인 요소: |
| 296 | +- 내보낼 artifact 선택 |
| 297 | +- canonical bundle 구성 확인 |
| 298 | +- 저장 위치 선택 |
| 299 | +- 파일 형식 선택 |
| 300 | +- export 진행 상태 |
| 301 | +- export 성공/실패 표시 |
| 302 | + |
| 303 | +## 5. 상태별 UI 활성 규칙 |
| 304 | + |
| 305 | +### 5.1 NoProject |
| 306 | +- 프로젝트가 열려 있지 않은 상태다. |
| 307 | +- Project Navigator, Project Open Dialog, 새 프로젝트 생성 흐름이 중심이다. |
| 308 | +- authoring, run, analysis 패널은 비활성 또는 빈 상태를 보여준다. |
| 309 | + |
| 310 | +### 5.2 LayoutNeedsReview |
| 311 | +- import된 layout에 검토가 필요하거나 blocker가 남아 있는 상태다. |
| 312 | +- Issue Review Panel과 Layout Canvas가 중심이다. |
| 313 | +- Run Control은 비활성화되어야 한다. |
| 314 | + |
| 315 | +### 5.3 LayoutReady |
| 316 | +- layout이 승인되었지만 실행 가능한 scenario가 아직 선택되지 않은 상태다. |
| 317 | +- Scenario Library와 Scenario Template Picker 진입이 중심이다. |
| 318 | + |
| 319 | +### 5.4 ScenarioDraftInvalid |
| 320 | +- scenario draft가 있으나 필수 입력이 부족하거나 invalid edit가 있는 상태다. |
| 321 | +- Scenario Editor Tabs와 Readiness Panel이 중심이다. |
| 322 | +- Run Control은 비활성화되어야 한다. |
| 323 | + |
| 324 | +### 5.5 ScenarioReady |
| 325 | +- 승인된 layout과 valid scenario가 모두 준비된 상태다. |
| 326 | +- Run Control의 Run이 활성화된다. |
| 327 | + |
| 328 | +### 5.6 BatchRunning |
| 329 | +- batch 실행 중인 상태다. |
| 330 | +- Run Control, Batch Progress, Live Viewport, Heatmap Selector가 중심이다. |
| 331 | +- 편집성 authoring 동작은 제한해야 한다. |
| 332 | + |
| 333 | +### 5.7 BatchPaused |
| 334 | +- 실행이 일시정지된 상태다. |
| 335 | +- Resume과 Stop이 중심 액션이다. |
| 336 | + |
| 337 | +### 5.8 AggregationPending |
| 338 | +- live playback은 끝났지만 결과 artifact 집계가 끝나지 않은 상태다. |
| 339 | +- Batch Progress 또는 결과 준비 상태 표시가 필요하다. |
| 340 | +- Run Results, Variation Summary, Comparison, Recommendation은 준비된 artifact 수준에 따라 제한된다. |
| 341 | + |
| 342 | +### 5.9 ResultsAvailable |
| 343 | +- RunResult와 VariationSummary가 저장된 상태다. |
| 344 | +- Run Results Panel과 Variation Summary를 열 수 있다. |
| 345 | +- Comparison은 baseline과 alternative summary가 모두 있을 때만 활성화된다. |
| 346 | + |
| 347 | +### 5.10 ComparisonReady |
| 348 | +- baseline과 alternative 비교가 가능한 상태다. |
| 349 | +- Comparison View가 활성화된다. |
| 350 | +- Recommendation은 ScenarioComparison과 CumulativeArtifact가 준비된 뒤 활성화된다. |
| 351 | + |
| 352 | +### 5.11 RecommendationReady |
| 353 | +- recommendation 검토와 scenarioize가 가능한 상태다. |
| 354 | +- Recommendation Drawer와 Export Dialog가 활성화될 수 있다. |
| 355 | + |
| 356 | +## 6. 최종 디자인 대상 요약 |
| 357 | + |
| 358 | +우선 디자인해야 하는 UI 창과 화면은 다음과 같다. |
| 359 | + |
| 360 | +1. Main Workspace Window |
| 361 | +2. Project Navigator |
| 362 | +3. Project Open Dialog |
| 363 | +4. Project Save Dialog |
| 364 | +5. Authoring Workspace |
| 365 | +6. Import Workflow UI |
| 366 | +7. Issue Review Panel |
| 367 | +8. Layout Canvas |
| 368 | +9. Inspector Panel |
| 369 | +10. Scenario Library |
| 370 | +11. Scenario Template Picker |
| 371 | +12. Scenario Editor Tabs |
| 372 | +13. Readiness Panel |
| 373 | +14. Variation Diff List |
| 374 | +15. Analysis Workspace |
| 375 | +16. Run Control |
| 376 | +17. Batch Progress |
| 377 | +18. Live Viewport |
| 378 | +19. Heatmap Selector |
| 379 | +20. Run Results Panel |
| 380 | +21. Variation Summary |
| 381 | +22. Comparison View |
| 382 | +23. Recommendation Drawer |
| 383 | +24. Export Dialog |
| 384 | + |
| 385 | +이 중 `Project Open Dialog`와 `Project Save Dialog`는 OS 파일 다이얼로그만 사용할 경우 독립 UI 디자인 범위를 줄일 수 있다. 반대로 프로젝트 메타데이터, 최근 프로젝트, pending review 상태, 저장 정책을 앱 안에서 보여줘야 한다면 별도 디자인 대상에 포함한다. |
0 commit comments