diff --git a/docs/README.md b/docs/README.md index 8c6daa8..798b1e3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -21,6 +21,7 @@ - [product/고급 위험 모델.md](product/고급 위험 모델.md) - [product/Product Backlog.md](product/Product Backlog.md) - [product/Sprint 시연 계획.md]() +- [product/애플리케이션 기능 기준.md]() ## 유지 규칙 diff --git "a/docs/architecture/UI \353\224\224\354\236\220\354\235\270 \353\214\200\354\203\201 \354\260\275 \353\252\251\353\241\235.md" "b/docs/architecture/UI \353\224\224\354\236\220\354\235\270 \353\214\200\354\203\201 \354\260\275 \353\252\251\353\241\235.md" index 9e9c5e3..534c761 100644 --- "a/docs/architecture/UI \353\224\224\354\236\220\354\235\270 \353\214\200\354\203\201 \354\260\275 \353\252\251\353\241\235.md" +++ "b/docs/architecture/UI \353\224\224\354\236\220\354\235\270 \353\214\200\354\203\201 \354\260\275 \353\252\251\353\241\235.md" @@ -26,6 +26,8 @@ - 새 프로젝트 생성 진입 - 저장된 프로젝트 클릭 시 Layout Review Workspace로 진입 - 프로젝트 목록이 없을 때 빈 상태 표시 +- 일반 프로젝트 삭제 및 목록 갱신 +- built-in Demo 프로젝트 삭제 방지 필요한 UI 요소: @@ -39,7 +41,6 @@ 후속 설계 대상: - 열 수 없는 프로젝트 표시 -- 프로젝트 삭제 또는 목록에서 제거 - 프로젝트 검색/정렬 - 프로젝트 상태 표시: review 필요, blocker 있음, ready 등 @@ -127,16 +128,19 @@ DXF import 직후 진입하는 첫 workspace 화면이다. import 모듈이 파 - DXF import 결과 표시 - 중앙 canvas에 import 결과 기반 2D preview 렌더링 -- 좌측 패널에 blocking issue 목록 표시 -- 우측 패널에 issue count 표시 +- 좌측 패널에 issue 목록과 layout 요소 목록 표시 +- 우측 패널에 inspector와 approval 상태 표시 - 하단 패널에 현재 review/project context 표시 +- blocking issue가 없을 때 layout 승인 후 Scenario Authoring Workspace로 이동 필요한 UI 요소: - Workspace Shell 상단바 -- 좌측 `Blocking` 목록 +- 좌측 `Blocking` / `Warnings` / `Info` issue 목록 +- 좌측 layout element 목록 - 중앙 Layout Preview -- 우측 issue summary +- 우측 선택 inspector +- 우측 approval action - 하단 review 상태 영역 현재 중앙 preview 표시 대상: @@ -158,13 +162,8 @@ DXF import 직후 진입하는 첫 workspace 화면이다. import 모듈이 파 후속 설계 대상: -- blocking item 클릭 시 canvas 위치 이동 -- 해당 geometry highlight -- warning/info issue 탭 - issue 해결/무시/승인 상태 -- Layout approval action -- pan/zoom 가능한 2D CAD형 viewport -- 선택 요소 inspector +- reimport 이후 기존 보정 내용 비교 ### 3.2 Layout Canvas @@ -249,28 +248,68 @@ layout review 이후 scenario를 작성하는 화면이다. ### 5.1 Run Workspace -valid scenario를 실행하는 화면이다. +stage된 baseline scenario를 실행하는 화면이다. -필요한 UI 요소: +현재 구현 책임: + +- Scenario Authoring의 Run panel에서 staged baseline scenario를 실행 +- Workspace Shell 재사용 +- 중앙 live simulation canvas에 agent 위치와 속도 방향 표시 +- 우측 Run panel에 실행 상태와 주요 위험 지표 표시 +- pause/resume, stop/reset 제공 +- 모든 agent가 evacuate되면 Result Summary 진입 버튼 활성화 + +현재 UI 요소: + +- Pause / Resume icon button +- Stop icon button +- View Results +- elapsed time +- evacuated / total +- active agents +- completion risk +- stalled agents +- hotspot count +- worst bottleneck summary + +후속 설계 대상: -- Run / Pause / Resume / Stop - Batch Progress -- Live Viewport -- Simulation status - 실행 불가 사유 표시 +- 여러 staged scenario 순차 실행 +- completed but all-evacuated가 아닌 run의 result 검토 흐름 ### 5.2 Analysis Workspace -실행 결과를 검토하고 비교하는 화면이다. +실행 결과를 검토하고 비교하는 화면이다. 현재는 Sprint 1용 Result Summary가 먼저 구현되어 있다. -필요한 UI 요소: +현재 Result Summary 구현 책임: + +- 완료된 run의 final simulation frame 표시 +- hotspot overlay 표시 +- 우측 Results panel에서 핵심 metric card 표시 +- worst bottleneck과 hotspot 목록 표시 -- Run Results +현재 UI 요소: + +- Evacuated +- Time +- Risk +- Stalled +- Worst Bottleneck +- Hotspots +- 비활성 `Back to Run` +- 비활성 `Edit Scenario` + +후속 설계 대상: + +- Run Results 목록 - Variation Summary - Heatmap Selector - Comparison View - Recommendation Drawer - Export Dialog +- Back to Run / Edit Scenario 실제 연결 ## 6. 상태별 화면 흐름 @@ -332,7 +371,7 @@ valid scenario를 실행하는 화면이다. ### 6.5 Scenario Ready -후속 구현 상태다. +현재 구현 상태다. 표시 화면: @@ -340,20 +379,30 @@ valid scenario를 실행하는 화면이다. 가능한 액션: -- simulation 실행 +- staged baseline simulation 실행 +- pause/resume +- stop/reset +- all evacuated 이후 Result Summary 열기 + +후속 액션: + - batch 실행 ### 6.6 Results Available -후속 구현 상태다. +현재 Sprint 1 요약 화면은 구현되어 있고, 비교/추천/내보내기 중심의 전체 Analysis Workspace는 후속 구현 상태다. 표시 화면: -- Analysis Workspace +- Result Summary +- 후속 Analysis Workspace 가능한 액션: - 결과 확인 + +후속 액션: + - 대안 비교 - 추천 검토 - export @@ -368,5 +417,5 @@ valid scenario를 실행하는 화면이다. 6. Project 저장/로드 안정화 7. Layout Canvas pan/zoom/selection 추가 8. Scenario Authoring 저장/실행 연결 -9. Run Workspace 확장 +9. Run Workspace batch/readiness 확장 10. Analysis Workspace 확장 diff --git "a/docs/product/\354\225\240\355\224\214\353\246\254\354\274\200\354\235\264\354\205\230 \352\270\260\353\212\245 \352\270\260\354\244\200.md" "b/docs/product/\354\225\240\355\224\214\353\246\254\354\274\200\354\235\264\354\205\230 \352\270\260\353\212\245 \352\270\260\354\244\200.md" new file mode 100644 index 0000000..1ff4d9d --- /dev/null +++ "b/docs/product/\354\225\240\355\224\214\353\246\254\354\274\200\354\235\264\354\205\230 \352\270\260\353\212\245 \352\270\260\354\244\200.md" @@ -0,0 +1,219 @@ +# SafeCrowd 애플리케이션 기능 기준 + +이 문서는 SafeCrowd 앱에서 사용자가 실제로 만나는 기능, 화면 흐름, 현재 동작 기준을 정리한다. 세부 구현 계획은 GitHub Issues와 Project에서 관리하고, 이 문서는 팀원이 "이 버튼이 무엇을 하는지", "현재 어떤 흐름이 기준인지"를 빠르게 확인하는 기준으로 쓴다. + +## 1. 앱 전체 흐름 + +현재 앱의 Sprint 1 기준 사용자 흐름은 다음 순서를 따른다. + +1. 앱 시작 +2. Project Navigator에서 새 프로젝트 생성 또는 최근 프로젝트 열기 +3. DXF 파일을 프로젝트 layout으로 import +4. Layout Review Workspace에서 구조와 issue 확인 +5. 필요한 경우 layout 수동 보정 +6. blocking issue가 없으면 layout 승인 +7. Scenario Authoring Workspace에서 baseline 시나리오 작성 +8. 보행자 배치와 운영 이벤트 목록 확인 +9. 실행 대상으로 stage +10. Run Workspace에서 실행, 일시정지, 재개, 정지 +11. 완료 후 Result Summary에서 핵심 결과 확인 + +Sprint 1 시연에서 가장 중요한 기준은 `도면 불러오기 -> 검토/보정 -> 시나리오 작성 -> 실행`이 끊기지 않는 것이다. + +## 2. Project Navigator + +앱을 처음 켰을 때 보이는 시작 화면이다. + +현재 기능: + +- 최근 프로젝트 목록을 보여준다. +- built-in `Demo` 프로젝트를 목록에 포함한다. +- `+ New Project`로 새 프로젝트 생성 화면에 들어간다. +- 최근 프로젝트 row를 클릭하면 해당 프로젝트를 연다. +- 일반 프로젝트 row의 삭제 버튼으로 프로젝트를 삭제할 수 있다. +- 삭제 전 확인 다이얼로그를 표시한다. +- 삭제를 확인하면 실제 프로젝트 폴더를 삭제하고 최근 목록을 갱신한다. +- built-in `Demo` 프로젝트는 삭제할 수 없다. + +아직 기준 기능이 아닌 것: + +- `Open Folder` 버튼은 현재 Sprint 1 핵심 흐름이 아니다. +- 최근 목록에 없는 폴더를 직접 선택해 여는 기능은 별도 작업으로 다룬다. +- 프로젝트 검색, 정렬, 상태 badge는 후속 기능이다. + +## 3. New Project + +새 프로젝트를 만들고 DXF layout을 import하기 위한 화면이다. + +현재 기능: + +- 프로젝트명을 입력한다. +- layout DXF 파일을 선택한다. +- 프로젝트 저장 폴더를 선택한다. +- `Done`을 누르면 프로젝트 메타데이터를 저장하고 DXF를 프로젝트 폴더에 `layout.dxf`로 복사한다. +- 저장 후 Layout Review Workspace로 이동한다. +- `Cancel`을 누르면 Project Navigator로 돌아간다. +- 프로젝트명, layout 파일, 폴더 중 하나라도 비어 있으면 경고를 표시한다. + +현재 입력 기준: + +- 직접 import 대상은 `.dxf`이다. +- `.dwg`는 직접 import하지 않는다. +- DWG 도면은 외부 도구에서 DXF로 변환한 뒤 사용한다. + +후속 보완 대상: + +- 화면 안 validation 메시지 +- import 진행 상태 표시 +- import 실패 상세 표시 +- 기존 프로젝트 덮어쓰기 확인 + +## 4. Layout Review Workspace + +DXF import 결과를 검토하고 시뮬레이션 가능한 layout인지 확인하는 화면이다. + +현재 기능: + +- 중앙 canvas에 import된 layout을 표시한다. +- 좌측 패널에서 issue와 layout 요소 목록을 전환한다. +- issue는 `Blocking`, `Warnings`, `Info`로 구분한다. +- issue를 클릭하면 관련 대상에 focus하고 우측 inspector에 상세를 표시한다. +- layout 요소를 클릭하면 canvas에서 해당 요소를 focus한다. +- blocking issue가 있으면 `Approve Layout`을 막는다. +- blocking issue가 없으면 layout을 승인하고 Scenario Authoring Workspace로 이동한다. + +현재 수동 보정 기능: + +- room 그리기 +- corridor 그리기 +- exit 그리기 +- wall 그리기 +- door/opening 그리기 +- connection 또는 barrier 삭제 +- undo +- 보정 후 live validation 재실행 + +후속 보완 대상: + +- reimport 흐름 +- import 실패 전용 화면 +- issue별 repair suggestion +- 선택 요소의 상세 편집 inspector +- warning/info에 대한 승인 또는 무시 상태 + +## 5. Scenario Authoring Workspace + +승인된 layout 위에서 baseline 시나리오를 만들고 실행 준비를 하는 화면이다. + +현재 기능: + +- 최초 진입 시 baseline 시나리오 이름을 입력한다. +- Scenario 패널에서 현재 시나리오 요약을 표시한다. +- `New Scenario from Current`로 현재 시나리오를 복제해 alternative를 만든다. +- Scenario switcher로 baseline/alternative를 전환한다. +- Layout, Crowd, Events 좌측 탭을 제공한다. +- 중앙 canvas에서 보행자 배치를 작성한다. +- 시나리오를 run 대상으로 stage할 수 있다. + +현재 보행자 배치 기능: + +- individual occupant placement +- rectangular group placement +- group count 설정 +- 배치된 인원을 scenario draft의 `population.initialPlacements`로 반영 + +현재 약한 부분: + +- 운영 이벤트 editor는 최소 구조만 있고 실제 입력 UI가 부족하다. +- readiness panel은 요약 수준이며 실행 불가 사유를 충분히 모아 보여주지 않는다. +- environment와 execution 상세 입력은 아직 제한적이다. +- scenario 저장/로드는 Sprint 1 핵심 시연 범위 밖이지만 후속 보완이 필요하다. + +## 6. 운영 이벤트 + +운영 이벤트는 앱 실행 버튼을 멈추는 기능이 아니라, 시뮬레이션 안의 현장 조건을 바꾸는 기능이다. + +예시: + +- 특정 시간 이후 출구 폐쇄 +- 특정 구역에서 staged release +- 임시 장애물 활성화 +- 안내 방향 또는 접근 가능 대상 변경 + +Sprint 1 최소 기준: + +- 이벤트 목록을 보여준다. +- 시간 기반 trigger를 입력할 수 있다. +- 출구나 연결부 같은 target을 선택할 수 있다. +- 이벤트를 scenario draft의 control plan에 반영한다. + +현재 상태: + +- Events 탭과 event draft 구조는 있다. +- 사용자가 직접 이벤트를 추가, 수정, 삭제하는 editor UI는 아직 부족하다. + +## 7. Run Workspace + +stage된 baseline 시나리오를 실제로 실행하고 진행 상태를 보는 화면이다. + +현재 기능: + +- stage된 baseline 시나리오를 실행한다. +- live simulation canvas에 agent 위치와 속도 방향을 표시한다. +- pause/resume을 지원한다. +- stop/reset을 지원한다. +- elapsed time을 표시한다. +- evacuated/total, active agents를 표시한다. +- completion risk, stalled agents, hotspot, bottleneck 요약을 표시한다. +- 모든 agent가 evacuate되면 Result Summary로 이동할 수 있다. + +현재 약한 부분: + +- run queue는 staged list 수준이다. +- 여러 staged scenario를 순차 실행하는 batch queue는 아직 아니다. +- 실행 전 readiness 조건과 실행 불가 사유 표시가 부족하다. +- Result Summary 진입 조건이 complete 상태 전체가 아니라 all evacuated 기준에 묶여 있다. + +## 8. Result Summary + +실행 완료 후 핵심 결과를 요약해 보여주는 화면이다. + +현재 기능: + +- evacuated count를 표시한다. +- elapsed time을 표시한다. +- risk level을 표시한다. +- stalled count를 표시한다. +- worst bottleneck을 표시한다. +- hotspot 목록과 canvas overlay를 표시한다. + +현재 약한 부분: + +- `Back to Run`, `Edit Scenario`는 아직 비활성화되어 있다. +- baseline 대비 alternative 비교는 Sprint 2 범위다. +- persisted result artifact 기반 analysis는 Sprint 2 이후 범위다. +- export는 Sprint 3 범위다. + +## 9. 기능 상태 요약 + +| 영역 | 현재 상태 | Sprint 1 판단 | +| --- | --- | --- | +| Project Navigator | 최근 프로젝트, 새 프로젝트, 삭제 가능 | 핵심 흐름 가능 | +| Open Folder | 버튼만 있고 동작 없음 | 후순위 | +| New Project | DXF 선택과 프로젝트 생성 가능 | 핵심 흐름 가능 | +| DXF Import | DXF 파싱과 layout 생성 가능 | 핵심 흐름 가능 | +| Layout Review | issue 확인과 승인 가능 | 핵심 흐름 가능 | +| Layout 보정 | 기본 drawing/editing 가능 | 핵심 흐름 가능 | +| Scenario 생성 | baseline 생성과 전환 가능 | 핵심 흐름 가능 | +| Crowd 배치 | 개인/그룹 배치 가능 | 핵심 흐름 가능 | +| 운영 이벤트 | 구조는 있으나 editor 부족 | 보완 필요 | +| Run | 실행, pause/resume, stop 가능 | 핵심 흐름 가능 | +| Result Summary | 기본 결과 요약 가능 | 시연 보조 가능 | + +## 10. 문서 유지 규칙 + +- 앱 화면의 의미나 사용자 흐름이 바뀌면 이 문서를 갱신한다. +- 설계 대상 화면 목록은 `docs/architecture/UI 디자인 대상 창 목록.md`에 둔다. +- Sprint별 시연 기준은 `docs/product/Sprint 시연 계획.md`를 따른다. +- 작업 단위, 상태, PR 연결은 GitHub Issues와 Project를 기준으로 관리한다. +- 이 문서는 임시 TODO 목록이 아니라 앱 기능 이해를 위한 기준 문서로 유지한다.