﻿# 03-タグ権限テンプレート

## 1. モジュール位置付け

本モジュールは、VISTA顧客タグに対応する権限テンプレートの設定・編集・権限リアルタイム計算のクローズドループを定義する。

### 本モジュールの担当範囲

- タグと権限テンプレートの紐付け関係の定義。
- 権限テンプレートの内容管理。
- テンプレート結果に基づきトリガーされる権限リアルタイム計算ルール。
- タグ一覧におけるテンプレート操作エントリとテンプレート編集ページ間のフロントエンド連携。

### 本モジュールの対象外

- タグ本体の新規追加・編集・削除などの操作（`02-顧客タグ管理.md` を参照）。
- `customer_status` 同名タグ設定境界および三方マッピングページは今期開発しない旨（`bak-04-第三方フィールドマッピングと権限判定.md` を参照）。
- 同期トリガー・ログ・失敗処理（`04-統一顧客連携同期フロー.md`、`07-同期ログとトレーサビリティ.md` を参照）。

## 2. タグ権限テンプレート管理

| 項目 | 内容 |
| --- | --- |
| ユースケース名 | VISTA タグにアクセス権限テンプレートを設定する |
| 操作者 | B 側管理者 |
| ページ範囲 | 左側ナビゲーション - タグ管理ページ内の権限テンプレート操作、タグ権限テンプレート設定ページ |

### 要件詳細

1. 各 VISTA タグに設定できる権限テンプレートは最大 1 つとする。
2. タグはテンプレート未設定を許可する。
3. タグ一覧には、当該タグに対応するテンプレート名を集約表示する。テンプレート未設定時は `未設定` を表示する。
4. タグ一覧には、当該タグテンプレートの `権限編集` 操作エントリのみを提供し、テンプレートの無効化／復元、またはテンプレート削除エントリは提供しない。
5. `権限編集` クリック後、タグ権限テンプレート設定ページへ遷移し、現在のタグをデフォルトで選択する。
6. タグ権限テンプレート設定ページの上部では、編集対象タグの表示と切り替えを可能にし、複数タグのテンプレートを連続編集しやすくする。
7. テンプレート編集ページのヘッダーには、テンプレート名、当該タグの使用中顧客数、選択済みコンテンツ数、最終更新などの必要情報を表示する。
8. テンプレート内容エリアは VISTA 既存の顧客権限コンテンツ選択モードを踏襲する。プロトタイプのファーストビューでは代表的な VISTA コンテンツ選択エリアのみ表示すればよく、既存の全権限コンテンツを完全に展開する必要はない。
9. テンプレートは VISTA 顧客権限設定ページがサポートするアクセス可能コンテンツオブジェクト（例：間取り図、モデルルーム、外観、資料集、ナビゲーションメニュー）をカバーする。
10. テンプレート名は必須入力とし、長さ上限は 30 文字とする。
11. テンプレートはアクセス可能コンテンツを少なくとも 1 つ選択する必要がある。
12. テンプレート保存前に入力チェック（フォームバリデーション）を実施し、不通過の場合は保存をブロックする。
13. テンプレート保存時には、当該テンプレート変更が即時に当該タグを付与済みの顧客のアクセス権限へ影響することを管理者へ通知し、影響顧客数を表示する必要がある。
14. タグ権限テンプレート設定ページには、テンプレート無効化／復元スイッチを提供せず、テンプレート削除ボタンも提供しない。
15. タグ本体を削除する場合、対応するテンプレートもタグと共に削除する。ルールは `02-顧客タグ管理.md` を参照。

### 2.1 管理者共有権限審査の制限

タグ権限テンプレートは、顧客へ一括でアクセス権限を付与する機能であり、管理者が完了済みのコンテンツ共有権限審査を迂回することはできない。

1. テンプレートのコンテンツ選択エリアの選択可能範囲は、管理者が現在「共有可能」と審査したコンテンツ範囲と一致しなければならない。管理者が共有不可に設定したコンテンツは選択肢に表示してはならない。または選択不可の無効状態で表示し、「管理者により共有不可に設定済み」と明示しなければならない。
2. テンプレート保存時には、選択済みの各コンテンツが引き続き共有可能であることを再度検証する必要がある。共有不可のコンテンツを検出した場合は保存をブロックし、管理者に対し、先に共有権限審査で当該コンテンツの共有可能状態を復元するか、テンプレートから当該コンテンツを削除するよう通知する。
3. 管理者が後から何らかのタグテンプレートに選択済みのコンテンツを共有不可に変更した場合、当該コンテンツは即時に当該テンプレートおよび関連する全顧客の最終権限計算への参加を停止しなければならない。テンプレートの過去の設定によって顧客への開放が継続されてはならない。
4. テンプレート編集ページを再度開いた際、共有可能資格を失った過去の選択肢は有効なチェックとして保持してはならない。管理者がテンプレートを保存する際には当該選択肢を削除する必要がある。削除後にテンプレートが共有可能なコンテンツを含まなくなった場合は、「テンプレートはアクセス可能コンテンツを少なくとも 1 つ選択する必要がある」という検証により保存をブロックする。

## 3. アクセス権限計算

1. 顧客は複数タグを保有できる。
2. アクセス権限は、当該顧客が保有するタグに対応する設定済みテンプレートに基づき和集合で計算する。
3. 同一テンプレート集合の外部にある権限は、本モジュールの対象範囲外とする。
4. タグにテンプレートがない場合、当該タグを通じてテンプレート権限が新規追加されることはない。
5. タグとテンプレートの関係に変更が発生した場合、最終権限には個人権限の追加ルールを保持する必要がある。
   - 最終権限 = テンプレート和集合 + 個人権限の追加。
   - 今期は、顧客権限ページでタグテンプレートが付与済みの権限を単独で削除することはサポートしない。
6. タグが存在し、テンプレートが設定済みの場合、当該テンプレート内の管理者共有権限審査を通過し、共有可能状態にあるコンテンツが権限計算に参加する。テンプレート未設定のタグはテンプレート権限を新規追加しない。
7. テンプレートを新規追加または編集した後、権限インターフェースは最新のテンプレート設定に基づきリアルタイムで計算結果を返す。管理者が別途一括適用タスクを実行する必要はない。

## 4. テンプレート保存時即時反映

1. 管理者がテンプレートを変更／新規追加し、保存を確認した後、当該テンプレート設定は直ちに以降の権限インターフェース計算の根拠となる。
2. ページ保存前に影響顧客数を表示し、影響範囲の注意喚起に使用する。単独タスクは生成しない。
3. テンプレート保存は顧客タグ関係を変更しない。
4. 追加の適用ボタン、タスク、または一括適用記録は提供しない。
5. C 側顧客アクセス権限インターフェースがタグテンプレートの和集合によってアクセス可能コンテンツを返す方法については、`09-C側顧客アクセス権限インターフェース.md` を参照。

## 5. 受入基準

- 各タグに設定できるテンプレートは最大 1 つ。一覧でテンプレート名を確認でき、未設定時は未設定と表示する。
- タグ一覧では `権限編集` によりテンプレート作成／編集へ遷移でき、テンプレートの無効化／復元またはテンプレート削除操作は表示しない。
- テンプレート名は必須入力とする。
- テンプレートにはアクセス可能コンテンツが少なくとも 1 つ含まれる必要がある。
- 管理者が共有不可に設定したコンテンツは、タグ権限テンプレートで選択できず、過去のテンプレート設定によって顧客への開放が継続されることもない。
- 複数タグの和集合が有効になり、テンプレート変更保存後、既存顧客の権限インターフェースにリアルタイムで反映される。
- タグ権限テンプレート設定ページには、テンプレート無効化／復元スイッチ、テンプレート削除ボタン、追加の一括適用タスクを提供しない。

## 6. ユーザーユースケース

### ユースケース 1：タグ一覧からテンプレートを作成
- 前提：タグ一覧にテンプレート未設定のタグが存在する。
- 操作：当該タグ行で `権限編集` をクリックする。
- 期待結果：タグ権限テンプレート設定ページへ遷移し、当該タグがデフォルト選択される。テンプレート名を入力し、VISTA コンテンツを少なくとも 1 つ選択して保存できる。保存前に影響顧客数が通知され、保存確認後、権限インターフェースが直ちに新テンプレートに基づき計算する。

### ユースケース 2：既存テンプレートを編集
- 前提：タグに権限テンプレートが設定済みである。
- 操作：タグ一覧で当該タグ行内の `権限編集` をクリックする。
- 期待結果：タグ権限テンプレート設定ページへ遷移し、現在のテンプレート設定が表示される。変更後、保存に成功し、当該タグの使用中顧客への影響範囲が通知される。保存確認後、権限インターフェースが直ちに新テンプレートに基づき計算する。

### ユースケース 3：編集対象タグを切り替え
- 前提：管理者がタグ権限テンプレート設定ページにいる。
- 操作：ページ上部のタグドロップダウンで別のタグに切り替える。
- 期待結果：ページに新タグのテンプレート設定が表示される。当該タグがテンプレート未設定の場合は、デフォルトのテンプレート編集状態を表示する。

### ユースケース 4：テンプレート保存が既存顧客に影響
- 前提：タグが一部の顧客に使用済みである。
- 操作：当該タグの権限テンプレートを編集し保存する。
- 期待結果：保存確認ダイアログに影響顧客数が表示される。確認後、管理者による追加の一括適用は要求されず、関連顧客の最終アクセス権限は権限インターフェースが最新テンプレートに基づきリアルタイムで計算する。

### ユースケース 5：テンプレート操作エントリの集約
- 前提：管理者がタグ管理ページまたはタグ権限テンプレート設定ページにいる。
- 操作：タグ行内の権限テンプレート操作と、テンプレート編集ページの操作エリアを確認する。
- 期待結果：タグ行内では `権限編集` のみでテンプレート設定へ遷移する。テンプレートの無効化／復元、テンプレート削除ボタンは表示しない。テンプレート編集ページには有効／無効スイッチを表示せず、テンプレート削除ボタンも表示しない。

### ユースケース 6：共有不可コンテンツをタグテンプレートに入れられない
- 前提：管理者が共有権限審査でコンテンツ A を共有不可に設定済みである。
- 操作：管理者がタグ権限テンプレートを作成または編集し、コンテンツ A を選択しようとする。
- 期待結果：コンテンツ A は選択不可となり、その共有不可理由が表示される。保存インターフェースも検証によりコンテンツ A を含む送信を拒否する。

### ユースケース 7：テンプレート選択済みコンテンツの共有資格が收回される
- 前提：タグ A の権限テンプレートがコンテンツ B を選択済みで、当該タグが複数の顧客に使用済みである。
- 操作：管理者が共有権限審査でコンテンツ B を共有不可に変更する。
- 期待結果：コンテンツ B は直ちにタグ A および関連顧客の最終アクセス権限計算への参加を停止する。テンプレートを再度編集する際、コンテンツ B は有効なチェックとして保持されず、保存時に削除する必要がある。

## 7. 改訂履歴

| 日付 | 改訂内容 |
| --- | --- |
| 2026-07-13 | 管理者共有権限審査の制限を追加：タグ権限テンプレートは現在審査済みで共有可能なコンテンツのみ選択可能。共有不可コンテンツは選択不可、または過去のテンプレートを通じた開放継続も不可。テンプレート保存時に二次検証を実施し、管理者が後からコンテンツの共有資格を收回した場合、当該コンテンツは即時に関連テンプレートおよび顧客の最終権限計算から除外する。 |