Skip to content

Task-Fire/Smoke 및 문 폐쇄 시뮬레이션 상호작용 v2 #218

@SilverSupplier

Description

@SilverSupplier

Summary

Fire/Smoke hazard authoring/data foundation부터 v2 simulation interaction, door/exit closure runtime response, replay/result visualization까지 하나의 scenario runtime interaction 흐름으로 정리합니다. v2 범위는 단순화된 planning influence/control model이며, commercial fire physics, fire spread, smoke concentration, FED, FDS coupling은 포함하지 않습니다.

Parent Issue

#5

Area

Domain / Application

Target Sprint

Sprint 3

Scope

  • Absorb Task-화재/연기 시나리오 입력 요소 v1 구현 #207 into this v2 track through Task-Fire/Smoke hazard authoring/data foundation 통합 #226 instead of merging a standalone authoring-only v1 PR.
  • Add Fire/Smoke hazard authoring/data foundation: EnvironmentState.hazards, persistence, scenario diff, authoring UI, and canvas markers.
  • Add a named v2 hazard influence profile for Fire/Smoke with severity-based radius, speed penalty, avoidance strength, route-cost weight, and exposure weight.
  • Connect active same-floor Fire/Smoke hazards to simulation movement as a position-based influence field.
  • Add hazard-aware route cost/replanning so agents prefer safer available routes around active hazards.
  • Track hazard exposure summaries by hazard and kind, including exposed agents, total exposure time, max individual exposure time, and peak context.
  • Show Fire/Smoke markers, active state, and influence radius in run/result views.
  • Harden door/exit closure runtime behavior as a hard route constraint via ControlPlan.connectionBlocks.
  • Centralize connection-block active semantics: empty intervals mean always closed, finite intervals use [start, end], and endSeconds <= startSeconds means closed from start onward.
  • Replan when a currently planned route contains a closed downstream connection, and retry route planning when a previously closed connection reopens.
  • Show active and inactive/future/expired door closure state in run/result replay without adding a new result artifact schema.
  • Keep v2 explicitly scoped as a simplified scenario influence/control model, not fire spread, smoke concentration, FED, or FDS.

Acceptance Criteria

  • Fire/Smoke hazards can be authored, persisted, diffed, and then used by v2 runtime interaction.
  • Fire/Smoke hazards affect speed/avoidance and route choice only while active and on the same floor.
  • Smoke remains tied to reduced visibility concepts through speed/path-cost/exposure behavior.
  • Result artifacts include hazard exposure summary data usable by UI and future reports.
  • Closed door/exit connections are treated as impassable route constraints while active.
  • Agents replan around a closed downstream connection when an alternate route exists.
  • Agents can recover from a no-exit route state after the only viable closed connection reopens.
  • Door closure replay UI distinguishes active closures from inactive/future/expired schedules.
  • Existing no-hazard and no-block scenarios remain within existing behavior tolerances.
  • UI copy clearly labels the interaction as a simplified v2 influence/control model requiring later refinement.

Architecture / Dependency Check

  • Keep simulation behavior in src/domain and UI rendering in src/application.
  • Do not add Qt dependencies to domain or engine code.
  • Keep engine independent of domain/application concepts.
  • Use existing ScenarioDraft, ScenarioSimulationRunner, ControlPlan, and result artifact boundaries instead of adding UI-owned runtime state.
  • Do not introduce FDS/FED/fire-spread/smoke-concentration models in this issue.

Verification Plan

  • Add authoring persistence/diff tests for Fire/Smoke hazards.
  • Add or update motion-system unit tests for active, inactive, different-floor, overlapping, and severity-radius hazards.
  • Add route-choice tests where Fire/Smoke route cost changes the selected route when a safer alternate exists.
  • Add exposure-summary tests for Fire and Smoke.
  • Add connection-block active-semantics tests for always, finite, and indefinite schedules.
  • Add route/replanning tests for downstream closed connections, alternate route selection, and reopening recovery.
  • Run cmake --build --preset build-no-app-debug and ctest --preset test-no-app-debug.
  • If application rendering changes are included, also run cmake --build --preset build-debug and ctest --preset test-debug.

Dependencies / Blockers

Repository Checks

  • I checked for an existing related issue or epic before creating this task.
  • I will keep the issue title aligned with the repository naming convention.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions