コンテンツにスキップ

飛行計画 シーケンス図

本ドキュメントは、以下のユースケースドキュメントに記載された「飛行計画の管理・通報」に関するユースケースを基に、飛行計画のCRUD(作成・確認・更新・削除)、DIPS通報、飛行開始終了のシーケンス図を作成したものである。

各シーケンス図の先頭には、どのユースケースから作成したかを Note で明記している。また、シーケンス内で他のユースケース(サブユースケース/include・extend関係にあるユースケース)を実施している箇所にも、該当ユースケースIDを Note で記載する。

トランザクション境界・ロック制御(状態遷移の排他制御。ADR-019参照)の検討は本ドキュメントの対象外とし、詳細設計にて別途対応する。 どこまでを1トランザクションにまとめるか、SELECT FOR UPDATE等での排他制御をどの範囲に適用するかは本シーケンスでは規定しない。

登場人物(アクター/コンポーネント):

名称説明
Operator運航者。飛行計画のCRUDを行う利用者。
FrontendUTMのフロントエンド(MapUI)。Operatorの画面操作を受け付け、各Backendを呼び出す。
FlightPlanning飛行計画バックエンド。飛行計画のCRUD・DIPS通報・DIPSからの許可承認/飛行禁止エリア/他の飛行計画情報の収集を担当する。
GeoSpatial空間情報バックエンド。空域制限・他の飛行計画の位置検索と重畳表示用データの提供を担当する。
DBIX-UTMが保持するデータベース(飛行計画・飛行禁止エリア等)。
DIPSドローン情報基盤システム(外部システム)。

1. 作成(Create) - UC-PLAN-01: 飛行計画を作成する

Section titled “1. 作成(Create) - UC-PLAN-01: 飛行計画を作成する”
sequenceDiagram
    autonumber
    actor Operator
    box UTM
        participant Frontend
        participant FlightPlanning
        participant GeoSpatial
        participant DB
    end
    participant DIPS

    Note over Operator,DIPS: 本シーケンスは「UC-PLAN-01: 飛行計画を作成する」から作成

    Operator->>Frontend: 「飛行計画」画面を開く
    Frontend->>FlightPlanning: 飛行計画一覧取得(listFlightPlans: GET /api/v1/fp/flight-plans)
    FlightPlanning->>DB: 飛行計画一覧取得(一時保存分を含む)
    DB-->>FlightPlanning: 一覧
    FlightPlanning-->>Frontend: 一覧
    Frontend-->>Operator: 一覧を表示
    Operator->>Frontend: 「新規作成」ボタン押下

    opt UC-PLAN-01-12: GCSの飛行ミッションをインポートする

        Note over Operator,FlightPlanning: UC-PLAN-01-12: GCSの飛行ミッションをインポートする(実装対象外)
        Operator->>Frontend: 飛行ミッションファイルをアップロード
        Frontend->>FlightPlanning: 飛行ミッションファイルを解析(parseFlightPlanFromGcsMission: POST /api/v1/fp/flight-plan-parses)
        FlightPlanning->>FlightPlanning: ミッションファイルを解析(DBへの登録は行わない)
        FlightPlanning-->>Frontend: 解析結果(飛行計画情報)
        Frontend-->>Operator: 解析結果を入力欄に反映
    end

    Operator->>Frontend: 基本情報を入力(飛行計画名、飛行予定日時、飛行時間)

    Note over Operator: UC-PLAN-01-2: 機体を指定する
    Note over Operator: UC-PLAN-01-3: 操縦者を指定する
    Operator->>Frontend: 機体・操縦者を指定

    opt 通報が必要な飛行計画の場合
        Note over Operator: UC-PLAN-01-1: 飛行目的を指定する
        Note over Operator: UC-PLAN-01-4: 保険を指定する
        Operator->>Frontend: 飛行目的・保険を入力
    end

    opt 飛行許可・承認申請が必要な場合
        alt Operatorが手動入力する場合
            Note over Operator: UC-PLAN-01-5: 許可承認を指定する
            Operator->>Frontend: 許可承認を入力
        else DIPSから取得した情報で自動入力する場合
            Note over Operator,DIPS: UC-PLAN-01-6: DIPSの許可承認情報を指定する
            Operator->>Frontend: 「DIPSから許可承認を取得」ボタン押下
            Frontend->>FlightPlanning: 許可・承認情報取得
            Note over FlightPlanning,DIPS: UC-DIPS-02: OperatorのDIPS APIの認証をする(include)
            FlightPlanning->>DIPS: 許可・承認情報取得(DIPS API)
            DIPS-->>FlightPlanning: 許可承認一覧
            FlightPlanning-->>Frontend: 一覧
            Frontend-->>Operator: 一覧を表示
            Operator->>Frontend: 使用する許可承認を選択
        end
    end

    Note over Operator: UC-PLAN-01-11: 経路/エリアを設定する
    Operator->>Frontend: 経路/エリア(Route/ポリゴン/円のいずれか)を設定

    opt 経路/エリア設定時の事前競合チェック

        Note over Operator,FlightPlanning: 飛行計画競合チェック(実装対象外)
        Frontend->>FlightPlanning: 飛行計画競合チェック(execConflictCheck: POST /api/v1/fp/flight-plan-conflict-checks)
        FlightPlanning->>DB: 空域制限との競合を判定
        DB-->>FlightPlanning: 競合している空域制限一覧
        FlightPlanning-->>Frontend: 競合している空域制限一覧
        Frontend-->>Operator: 競合の有無を表示(保存前のプレビュー。DBへの保存は行わない)
    end

    Note over Operator,DB: 「9. 共通シーケンス:飛行禁止エリア・他の飛行計画の確認」を参照

    alt 一時保存の場合
        Operator->>Frontend: 「一時保存」ボタン押下
        Frontend->>FlightPlanning: 飛行計画仮登録(createFlightPlan: POST /api/v1/fp/flight-plans)
        FlightPlanning->>DB: 飛行計画を保存(状態:DRAFT、検証・競合判定は行わない)
        DB-->>FlightPlanning: 保存完了
        FlightPlanning-->>Frontend: 保存完了
        Frontend-->>Operator: 一時保存完了を表示
    else 保存の場合
        Operator->>Frontend: 「保存」ボタン押下
        Frontend->>FlightPlanning: 飛行計画仮登録(createFlightPlan: POST /api/v1/fp/flight-plans)
        FlightPlanning->>DB: 飛行計画を保存(状態:DRAFT)
        DB-->>FlightPlanning: 保存完了
        Frontend->>FlightPlanning: 飛行計画本登録(registerFlightPlan: POST /api/v1/fp/flight-plans/{flightPlanId}/registration)
        FlightPlanning->>DB: 全入力項目を検証し本登録(状態:ACCEPTED)
        DB-->>FlightPlanning: 登録完了
        Note over FlightPlanning,DB: UC-PLAN-01-13: 飛行禁止エリアとの競合を検知する
        FlightPlanning->>DB: 飛行禁止エリアとの競合を判定
        DB-->>FlightPlanning: 競合有無
        alt 競合ありの場合
            FlightPlanning->>DB: 競合情報の保存
            Note over Operator,FlightPlanning: UC-USP-05: 飛行計画の競合発生を通知する
            FlightPlanning-->>Frontend: 競合を警告(本登録はブロックしない)
            Frontend-->>Operator: 競合を警告
        end
        FlightPlanning-->>Frontend: 本登録完了・通報の実施を促す
        Frontend-->>Operator: 本登録完了・通報の実施を促す
    end

2. 確認(Read) - UC-PLAN-03: 飛行計画を確認・更新する(確認フロー)

Section titled “2. 確認(Read) - UC-PLAN-03: 飛行計画を確認・更新する(確認フロー)”
sequenceDiagram
    autonumber
    actor Operator
    box UTM
        participant Frontend
        participant FlightPlanning
        participant GeoSpatial
        participant DB
    end
    participant DIPS

    Note over Operator,DIPS: 本シーケンスは「UC-PLAN-03: 飛行計画を確認・更新する」の確認フロー(手順1〜6)から作成

    Operator->>Frontend: 「飛行計画」画面を開く
    Frontend->>FlightPlanning: 飛行計画一覧取得(listFlightPlans: GET /api/v1/fp/flight-plans)
    FlightPlanning->>DB: 飛行計画一覧取得
    DB-->>FlightPlanning: 一覧
    FlightPlanning-->>Frontend: 一覧
    Frontend-->>Operator: 一覧を表示
    Operator->>Frontend: 一覧から対象の飛行計画を選択
    Frontend->>FlightPlanning: 飛行計画詳細取得(getFlightPlan: GET /api/v1/fp/flight-plans/{flightPlanId})
    FlightPlanning->>DB: 飛行計画詳細取得
    DB-->>FlightPlanning: 飛行計画詳細
    FlightPlanning-->>Frontend: 飛行計画詳細

    Note over Frontend,DB: UC-PLAN-01-7: 飛行禁止エリアを確認する
    Note over Frontend,DB: UC-PLAN-01-9: 他の飛行計画を確認する

    opt 飛行計画周辺データの最新化
        Note over Operator,DIPS: UC-PLAN-01-10: 飛行計画付近の他の飛行計画を収集する
        Operator->>Frontend: 「周辺データの最新化」操作
        Frontend->>FlightPlanning: 飛行計画周辺データ更新(refreshNearbyFlightPlans: POST /api/v1/fp/flight-plans/{flightPlanId}/nearby-data-refresh)
        FlightPlanning->>DIPS: 対象の飛行計画のflyRoute・flightPeriodをもとに、周辺の他の飛行計画を取得(DIPS API)
        DIPS-->>FlightPlanning: 他の飛行計画情報
        FlightPlanning->>DB: 取得した情報を保存・更新
        DB-->>FlightPlanning: 更新完了
        FlightPlanning-->>Frontend: 更新完了
    end

    Frontend->>GeoSpatial: 飛行禁止エリア・他の飛行計画取得
    GeoSpatial->>DB: 飛行禁止エリア・他の飛行計画を取得
    DB-->>GeoSpatial: 重畳表示用データ
    GeoSpatial-->>Frontend: 重畳表示用データ

    Frontend-->>Operator: 飛行計画の詳細画面を表示(飛行禁止エリア・他の飛行計画を重畳表示)
    Operator->>Frontend: 飛行計画の詳細項目、重畳表示の内容を確認

3. 更新(Update) - UC-PLAN-03: 飛行計画を確認・更新する(変更フロー)

Section titled “3. 更新(Update) - UC-PLAN-03: 飛行計画を確認・更新する(変更フロー)”
sequenceDiagram
    autonumber
    actor Operator
    box UTM
        participant Frontend
        participant FlightPlanning
        participant GeoSpatial
        participant DB
    end
    participant DIPS

    Note over Operator,DIPS: 本シーケンスは「UC-PLAN-03: 飛行計画を確認・更新する」の飛行計画変更フロー(手順7〜15)から作成<br/>前提:「2. 確認(Read)」のシーケンスで対象の飛行計画を表示済みであること

    Note over Operator: UC-PLAN-01-2: 機体を指定する
    Note over Operator: UC-PLAN-01-3: 操縦者を指定する
    Operator->>Frontend: 機体・操縦者を変更

    opt 通報が必要な飛行計画の場合
        Note over Operator: UC-PLAN-01-1: 飛行目的を指定する
        Note over Operator: UC-PLAN-01-4: 保険を指定する
        Operator->>Frontend: 飛行目的・保険を変更
    end

    opt 飛行許可・承認申請が必要な場合

        alt Operatorが手動入力する場合
            Note over Operator: UC-PLAN-01-5: 許可承認を指定する
            Operator->>Frontend: 許可承認を変更
        else DIPSから取得した情報で自動入力する場合
            Note over Operator,DIPS: UC-PLAN-01-6: DIPSの許可承認情報を指定する
            Operator->>Frontend: 「DIPSから許可承認を取得」ボタン押下
            Frontend->>FlightPlanning: 許可・承認情報取得
            Note over FlightPlanning,DIPS: UC-DIPS-02: OperatorのDIPS APIの認証をする(include)
            FlightPlanning->>DIPS: 許可・承認情報取得(DIPS API)
            DIPS-->>FlightPlanning: 許可承認一覧
            FlightPlanning-->>Frontend: 一覧
            Frontend-->>Operator: 一覧を表示
            Operator->>Frontend: 使用する許可承認を選択
        end
    end

    Note over Operator: UC-PLAN-01-11: 経路/エリアを設定する
    Operator->>Frontend: 経路/エリアを変更

    opt 経路/エリア変更時の事前競合チェック

        Note over Operator,FlightPlanning: 飛行計画競合チェック(実装対象外)
        Frontend->>FlightPlanning: 飛行計画競合チェック(execConflictCheck: POST /api/v1/fp/flight-plan-conflict-checks)
        FlightPlanning->>DB: 空域制限との競合を判定
        DB-->>FlightPlanning: 競合している空域制限一覧
        FlightPlanning-->>Frontend: 競合している空域制限一覧
        Frontend-->>Operator: 競合の有無を表示(保存前のプレビュー。DBへの保存は行わない)
    end

    Note over Operator,DB: 「9. 共通シーケンス:飛行禁止エリア・他の飛行計画の確認」を参照

    alt 対象がDRAFTの場合
        alt 一時保存の場合
            Operator->>Frontend: 「一時保存」ボタン押下
            Frontend->>FlightPlanning: 変更内容を保存(updateFlightPlan: PUT /api/v1/fp/flight-plans/{flightPlanId})
            FlightPlanning->>DB: 変更内容を保存(状態:DRAFT、検証・競合判定は行わない)
            DB-->>FlightPlanning: 保存完了
            FlightPlanning-->>Frontend: 保存完了
            Frontend-->>Operator: 一時保存完了を表示
        else 保存(本登録)の場合
            Operator->>Frontend: 「保存」ボタン押下
            Frontend->>FlightPlanning: 変更内容を保存(updateFlightPlan: PUT /api/v1/fp/flight-plans/{flightPlanId})
            FlightPlanning->>DB: 変更内容を保存(状態:DRAFT)
            DB-->>FlightPlanning: 保存完了
            Frontend->>FlightPlanning: 飛行計画本登録(registerFlightPlan: POST /api/v1/fp/flight-plans/{flightPlanId}/registration)
            FlightPlanning->>DB: 全入力項目を検証し本登録(状態:ACCEPTED)
            DB-->>FlightPlanning: 登録完了

            Note over FlightPlanning,DB: UC-PLAN-01-13: 飛行禁止エリアとの競合を検知する
            FlightPlanning->>DB: 飛行禁止エリアとの競合を判定
            DB-->>FlightPlanning: 競合有無
            alt 競合ありの場合
                FlightPlanning->>DB: 競合情報の保存
                Note over Operator,FlightPlanning: UC-USP-05: 飛行計画の競合発生を通知する
                FlightPlanning-->>Frontend: 競合を警告(本登録はブロックしない)
                Frontend-->>Operator: 競合を警告
            end
            FlightPlanning-->>Frontend: 本登録完了・通報の実施を促す
            Frontend-->>Operator: 本登録完了・通報の実施を促す
        end
    else 対象がACCEPTED以降の場合
        Operator->>Frontend: 「保存」ボタン押下
        Frontend->>FlightPlanning: 変更後の飛行計画を保存(updateFlightPlan: PUT /api/v1/fp/flight-plans/{flightPlanId})
        FlightPlanning->>DB: 全入力項目を検証し変更後の飛行計画を保存(状態:ACCEPTED以降のまま)
        DB-->>FlightPlanning: 保存完了

        Note over FlightPlanning,DB: UC-PLAN-01-13: 飛行禁止エリアとの競合を検知する
        FlightPlanning->>DB: 飛行禁止エリアとの競合を判定
        DB-->>FlightPlanning: 競合有無
        alt 競合ありの場合
            FlightPlanning->>DB: 競合情報の保存
            Note over Operator,FlightPlanning: UC-USP-05: 飛行計画の競合発生を通知する
            FlightPlanning-->>Frontend: 競合を警告(保存はブロックしない)
            Frontend-->>Operator: 競合を警告
        end

        FlightPlanning->>DB: DIPS通報済みか判定
        DB-->>FlightPlanning: 通報ステータス

        alt DIPS通報済みの場合
            FlightPlanning-->>Frontend: DIPSとのデータ不一致を警告し、再通報するか確認
            Frontend-->>Operator: DIPSとのデータ不一致を警告し、再通報するか確認
            Note over Operator,DIPS: Operatorが再通報を選択した場合は「UC-DIPS-03: 飛行計画を通報する」へ遷移(別シーケンス)
        else 未通報かつ初回保存の場合
            FlightPlanning-->>Frontend: 通報の実施を促す
            Frontend-->>Operator: 通報の実施を促す
        else それ以外の場合
            FlightPlanning-->>Frontend: 保存完了を表示
            Frontend-->>Operator: 保存完了を表示
        end
    end

4. 削除(Delete) - UC-PLAN-04: 飛行計画を削除する

Section titled “4. 削除(Delete) - UC-PLAN-04: 飛行計画を削除する”
sequenceDiagram
    autonumber
    actor Operator
    box UTM
        participant Frontend
        participant FlightPlanning
        participant DB
    end
    participant DIPS

    Note over Operator,DIPS: 本シーケンスは「UC-PLAN-04: 飛行計画を削除する」から作成

    Operator->>Frontend: 「飛行計画」画面を開く
    Frontend->>FlightPlanning: 飛行計画一覧取得(listFlightPlans: GET /api/v1/fp/flight-plans)
    FlightPlanning->>DB: 飛行計画一覧取得
    DB-->>FlightPlanning: 一覧
    FlightPlanning-->>Frontend: 一覧
    Frontend-->>Operator: 一覧を表示
    Operator->>Frontend: 削除対象の飛行計画を選択
    Operator->>Frontend: 「削除」ボタン押下
    Frontend-->>Operator: 確認ダイアログを表示
    Operator->>Frontend: 削除を確定
    Frontend->>FlightPlanning: 対象の飛行計画を削除(deleteFlightPlan: DELETE /api/v1/fp/flight-plans/{flightPlanId})

    FlightPlanning->>DB: DIPS通報済み(reportStatus=REPORTED)か判定
    DB-->>FlightPlanning: 通報ステータス

    alt DIPS通報済みの場合
        FlightPlanning->>DB: ステータスを更新(reportStatus=WITHDRAWING。DIPS API呼び出し前に更新)
        FlightPlanning->>DIPS: DIPS側の飛行計画を削除(DIPS API:飛行計画削除)
        alt DIPS API実行エラー
            DIPS-->>FlightPlanning: 呼び出し失敗
            FlightPlanning->>DB: 503・502はreportStatus=REPORTEDへ戻す/504はWITHDRAWINGのまま保持(WITHDRAW_TIMEOUTイベントとして記録)
            FlightPlanning-->>Frontend: エラーを返却
            Frontend-->>Operator: 削除失敗(再試行可能)を表示
        else 削除成功
            DIPS-->>FlightPlanning: 削除完了
            FlightPlanning->>DB: 対象の飛行計画を削除(論理削除。飛行計画の更新履歴は保持する。reportStatus=WITHDRAWN)
            DB-->>FlightPlanning: 削除完了
            FlightPlanning-->>Frontend: 削除完了
            Frontend-->>Operator: 削除完了を表示
        end
    else 未通報の場合
        FlightPlanning->>DB: 対象の飛行計画を削除(論理削除。飛行計画の更新履歴は保持する。)
        DB-->>FlightPlanning: 削除完了
        FlightPlanning-->>Frontend: 削除完了
        Frontend-->>Operator: 削除完了を表示
    end

sequenceDiagram
    autonumber
    actor Operator
    box UTM
        participant Frontend
        participant FlightPlanning
        participant DB
    end
    participant DIPS

    Note over Operator,DIPS: 本シーケンスは 「UC-DIPS-03: 飛行計画を通報する」から作成

    Operator->>Frontend: 通報対象の飛行計画を選択し「通報」ボタン押下
    Frontend->>FlightPlanning: 飛行計画を通報(reportFlightPlan: POST /api/v1/fp/flight-plans/{flightPlanId}/report、Idempotency-Keyを送信)

    FlightPlanning->>DB: ステータスを更新(reportStatus=REPORTING)
    DB-->>FlightPlanning: 更新完了
    FlightPlanning->>DIPS: 飛行計画情報を設定して通報(DIPS API:飛行計画通報受付)
    alt DIPS API実行エラー
        DIPS-->>FlightPlanning: 呼び出し失敗
        FlightPlanning->>DB: 503・502はreportStatus=UNREPORTEDへ戻す(statusは変更しない)/504はREPORTINGのまま保持(REPORT_TIMEOUTイベントとして記録)
        DB-->>FlightPlanning: 更新完了
        FlightPlanning-->>Frontend: エラーを返却
        Frontend-->>Operator: 通報失敗(再試行可能)を表示
    else DIPS API呼び出し成功(受理・競合いずれの結果でも同じ扱い。statusには影響しない)
        DIPS-->>FlightPlanning: 受理結果または競合ありの結果を返却
        alt 初回の通報成功
            FlightPlanning->>DB: ステータスを更新(reportStatus=REPORTED、応答の受付番号をdipsFlightPlanIdとして保存)
        else 再通報(2回目以降。dipsFlightPlanIdは変更しない)
            FlightPlanning->>DB: ステータスを更新(reportStatus=REPORTED)
        end
        DB-->>FlightPlanning: 更新完了
        FlightPlanning-->>Frontend: 通報結果(reportStatus・dipsFlightPlanId)を返却
        Frontend-->>Operator: 通報結果を表示
    end

sequenceDiagram
    autonumber
    actor Operator
    box UTM
        participant Frontend
        participant FlightPlanning
        participant DB
    end

    Note over Operator,DB: 本シーケンスは「UC-MON-01: 飛行を開始する」から作成

    Operator->>Frontend: 飛行開始する飛行計画を選択し「飛行開始」ボタン押下
    Frontend->>FlightPlanning: 飛行開始(activateFlightPlan: POST /api/v1/fp/flight-plans/{flightPlanId}/start)
    FlightPlanning->>DB: 対象の飛行計画のステータスを更新(ACTIVATED)
    DB-->>FlightPlanning: 更新完了
    FlightPlanning-->>Frontend: 開始後のステータス情報を返却
    Frontend-->>Operator: 開始後のステータス情報を表示

sequenceDiagram
    autonumber
    actor Operator
    box UTM
        participant Frontend
        participant FlightPlanning
        participant DB
    end

    Note over Operator,DB: 本シーケンスは「UC-MON-02: 飛行を終了する」から作成
    Operator->>Frontend: 飛行終了する飛行計画を選択し「飛行終了」ボタン押下
    Frontend->>FlightPlanning: 飛行終了(completeFlightPlan: POST /api/v1/fp/flight-plans/{flightPlanId}/end)
    FlightPlanning->>DB: 対象の飛行計画のステータスを更新(ENDED)し、飛行実績を保存
    DB-->>FlightPlanning: 更新完了
    FlightPlanning-->>Frontend: 終了後のステータス情報を返却
    Frontend-->>Operator: 終了後のステータス情報を表示

sequenceDiagram
    autonumber
    actor Operator
    box UTM
        participant Frontend
        participant FlightPlanning
        participant DB
    end
    participant DIPS

    Operator->>Frontend: キャンセルする飛行計画を選択し「キャンセル」ボタン押下
    Frontend-->>Operator: 確認ダイアログを表示
    Operator->>Frontend: キャンセルを確定
    Frontend->>FlightPlanning: 飛行計画キャンセル(cancelFlightPlan: POST /api/v1/fp/flight-plans/{flightPlanId}/cancel、Idempotency-Keyを送信)

    FlightPlanning->>DB: DIPS通報済み(reportStatus=REPORTED)か判定
    DB-->>FlightPlanning: 通報ステータス

    alt DIPS通報済みの場合
        FlightPlanning->>DB: ステータスを更新(reportStatus=WITHDRAWING。DIPS API呼び出し前に更新)
        FlightPlanning->>DIPS: DIPS側の飛行計画を削除(DIPS API:飛行計画削除)
        alt DIPS API実行エラー
            DIPS-->>FlightPlanning: 呼び出し失敗
            FlightPlanning->>DB: 503・502はreportStatus=REPORTEDへ戻す/504はWITHDRAWINGのまま保持(WITHDRAW_TIMEOUTイベントとして記録)
            FlightPlanning-->>Frontend: エラーを返却
            Frontend-->>Operator: キャンセル失敗(再試行可能)を表示
        else 削除成功
            DIPS-->>FlightPlanning: 削除完了
            FlightPlanning->>DB: ステータスを更新(status=CANCELLED、reportStatus=WITHDRAWN)
            DB-->>FlightPlanning: 更新完了
            FlightPlanning-->>Frontend: キャンセル後のステータス情報を返却
            Frontend-->>Operator: キャンセル後のステータス情報を表示
        end
    else 未通報の場合
        FlightPlanning->>DB: ステータスを更新(status=CANCELLED)
        DB-->>FlightPlanning: 更新完了
        FlightPlanning-->>Frontend: キャンセル後のステータス情報を返却
        Frontend-->>Operator: キャンセル後のステータス情報を表示
    end

9. 共通シーケンス:飛行禁止エリア・他の飛行計画の確認

Section titled “9. 共通シーケンス:飛行禁止エリア・他の飛行計画の確認”

「1. 作成」「3. 更新」の両方から参照される共通部分。変更時は本節のみを直せば両方に反映される (各シーケンス側では下記の内容を省略し、本節への参照のみを記載する)。

sequenceDiagram
    autonumber
    actor Operator
    box UTM
        participant Frontend
        participant FlightPlanning
        participant GeoSpatial
        participant DB
    end
    participant DIPS

    opt 最新の飛行禁止エリア取得
        Note over Operator,DIPS: UC-PLAN-01-8: 飛行計画付近の飛行禁止エリアを収集する(実装対象外)
        Operator->>Frontend: 対象種別を選択し「飛行禁止エリアの最新化」操作
        Frontend->>FlightPlanning: 飛行禁止エリアの最新化
        FlightPlanning->>DIPS: 飛行禁止エリア情報を取得(DIPS API)
        DIPS-->>FlightPlanning: 飛行禁止エリア情報
        FlightPlanning->>DB: 取得した情報を保存・更新
    end

    Note over Operator,DB: UC-PLAN-01-7: 飛行禁止エリアを確認する
    Operator->>Frontend: 空域制限の重畳表示を要求
    Frontend->>GeoSpatial: 空域制限取得
    GeoSpatial->>DB: 空域制限を取得
    DB-->>GeoSpatial: 重畳表示用データ
    GeoSpatial-->>Frontend: ジオメトリ情報
    Frontend-->>Operator: ジオメトリ情報を重畳表示

    Note over Operator,DB: UC-PLAN-01-9: 他の飛行計画を確認する
    Operator->>Frontend: 他の飛行計画の重畳表示を要求
    Frontend->>GeoSpatial: 飛行計画取得
    GeoSpatial->>DB: 他の飛行計画を取得
    DB-->>GeoSpatial: 重畳表示用データ
    GeoSpatial-->>Frontend: ジオメトリ情報
    Frontend-->>Operator: ジオメトリ情報を重畳表示