﻿# 02-顧客タグ管理

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

本モジュールは、VISTA 顧客タグ一覧画面（左ナビゲーション：タグ管理画面）のインタラクションとルールのみを定義する。

### 本モジュールが担う範囲

- タグ定義の追加、編集、削除。
- 画面一覧でのタグ表示、絞り込み、基本操作の入り口。
- タグ一覧で各タグとそれに紐づく権限テンプレートの編集入り口を集中表示する。
- 現在のタグ管理画面のプロトタイプで発生する、タグ編集、権限編集、タグ削除等のアクション。

### 本モジュールが含まない範囲

- `customer_status` 同名タグの設定境界と、今期開発対象外である三方マッピング画面の説明（`bak-04-第三者フィールドマッピングと権限判定.md` を参照）。
- タグ権限テンプレートの追加、編集、権限式、リアルタイム反映ルール（`03-タグ権限テンプレート.md` を参照）。
- 同期フロー開始、フィールド主権、ログ、失敗時処理（`04-統一顧客連携同期フロー.md`、`07-同期ログとトレース.md` を参照）。

## 2. 画面範囲

| 項目 | 内容 |
| --- | --- |
| ユースケース名 | VISTA 顧客タグを管理する |
| 操作者 | B 向け管理者 |
| 画面範囲 | 左ナビゲーション - タグ管理画面 |

## 3. 要件詳細

1. タグ管理画面の上部に `＋ タグ追加` ボタンを設け、クリックで新規登録ダイアログを開く。
2. 新規登録ダイアログは `タグ名` 入力欄のみを含む。
3. タグ名は必須とする。
4. タグ名の最大長は 30 文字とする。
5. 入力時に先頭・末尾の空白を自動除去することを許可し、提出時は正規化後のタグ名で判定する。
6. タグ名は現在のプロジェクト内で重複禁止とする（正規化後（trim + 大文字小文字を区別しない）で比較）。重複時は `同名のタグは重複して追加できません` とエラーメッセージを表示する。
7. タグ一覧には次の列を表示する：タグ名、利用中顧客、権限テンプレート、最終更新、操作。
8. タグ一覧の行情報操作エリアは 1 行ボタンのみとし、ボタン順序は固定で `タグ編集`、`権限編集`、`削除` とする。
9. `タグ編集` はタグ名編集ダイアログを開く。保存時はタグ名必須、30 文字上限、同名重複不可のルールを引き継ぐ。編集後、顧客が保持しているタグ表示名および当該タグに紐づくテンプレートのタグ名称も同期更新する。
10. `権限編集` は `タグ権限テンプレート設定` 画面に遷移し、現在のタグを引き継ぐ。当該タグにまだ権限テンプレートが設定されていない場合は、そのタグのテンプレート作成／編集状態に遷移する。
11. タグ管理画面では、タグの停止・復旧の入り口を提供せず、タグ状態切替ボタンも表示しない。
12. タグ管理画面では、権限テンプレートの停止・復旧の入り口を提供せず、権限テンプレート有効状態切替ボタンも表示しない。
13. タグ管理画面では `ユーザーをクリア` / `ユーザー解除` ボタンを提供しない。顧客タグ紐付けを外す必要がある場合は、顧客編集または権限関連画面にて個別に調整する。
14. タグ管理画面では `権限テンプレートを削除` ボタンを提供しない。権限テンプレートはタグと 1 対 1 で紐づき、`権限編集` からテンプレート内容を修正する。タグ本体を削除する際、対応する権限テンプレートも同時に削除される。
15. `削除`：タグ本体を削除する。削除前に必ず確認ダイアログを表示し、確認後に当該タグの全顧客紐付けを一掃し、対応する権限テンプレートも削除する。
16. `削除` 操作には必ず再確認ダイアログを伴い、タグに紐づく顧客が存在する場合は、影響を受ける顧客数を文案内に表示する。
17. タグ削除時、当該タグの全顧客におけるタグ紐付けをすべて破棄し、削除後は一覧に表示されない。
18. 削除されるタグ名がかつて KASIKA の `customer_status` フィールド値と同名だった場合でも、削除動作は VISTA タグ削除ルールに従って実行され、KASIKA への書き戻しは行わず、KASIKA `customer_status` を変更しない。後続の同期処理で該当ステータスに達した際、同名の VISTA タグが存在しないため、システムはタグを自動作成せず、スキップログのみを記録する。
19. システム内でタグが外部フローによって自動作成されることは許可しない。

## 4. 受け入れ基準

- 追加をクリックするとタグダイアログが開き、タグ名が空、重複、または長さ超過の場合は保存を禁止する。
- タグ名は現在のプロジェクト内で重複不可であること。
- 追加成功後、一覧に即座に新しいタグが表示される。
- タグ一覧には、タグ名、利用中顧客、テンプレート名、最終更新、操作可能ボタンが表示される。
- タグ行の最終ボタンは 1 行のみで、`タグ編集`、`権限編集`、`削除` の 3 ボタンのみとする。
- タグ編集後、一覧、顧客タグ表示、および対応するテンプレートの紐づけ名称が同期更新される。
- タグ管理画面には、タグ停止／復旧、権限テンプレート停止／復旧、ユーザークリア、権限テンプレート削除ボタンを表示しない。
- `権限編集` をクリックすると、タグに対応する権限テンプレート設定画面に遷移できること。
- `削除` をクリックすると必ず再確認が求められ、確認後はタグが削除され、当該タグの全ユーザータグ紐づけも一掃される。
- KASIKA `customer_status` と同名の VISTA タグを削除した後、後続の同期でそのタグが自動作成されることはなく、同名タグ不在のスキップログのみが記録される。

## 5. ユーザーユースケース

### ユースケース 1：タグ追加
- 前提：管理者が「タグ管理」画面に遷移している。
- 操作：`＋ タグ追加` をクリックし、タグ名を入力し、保存を確定する。
- 期待結果：タグ名が有効かつ重複していない場合、作成成功。異常時はエラーを表示し保存をブロックする。

### ユースケース 2：重複タグのブロック
- 前提：同名タグが既に存在する（先頭末尾空白と大文字小文字を無視）。
- 操作：新規登録ダイアログに同一のタグ名を入力。
- 期待結果：保存失敗し、タグ名の重複不可メッセージが表示される。

### ユースケース 3：タグ編集
- 前提：一覧に任意のタグが存在する。
- 操作：当該タグ行の `タグ編集` をクリックし、ダイアログでタグ名を変更し保存。
- 期待結果：タグ名が必須、長さ、重複の検証を通過して保存成功。顧客が保持しているタグと、そのタグに紐づくテンプレート名が同期更新される。

### ユースケース 4：権限編集画面への遷移
- 前提：一覧に任意のタグが存在する。
- 操作：当該タグ行の `権限編集` をクリック。
- 期待結果：タグ権限テンプレート画面に遷移し、デフォルトで現在のタグが選択されている。そのタグ唯一の権限テンプレートを引き続き編集できる。

### ユースケース 5：タグ削除
- 前提：タグが一部または全顧客に付与されている。
- 操作：行内の `削除` をクリックし、再確認ダイアログで確認。
- 期待結果：タグが一覧から消え、システム内で当該タグに関連付けられたすべての顧客タグ紐づけが一掃され、対応する権限テンプレートも削除される。削除に失敗した場合は失敗理由を表示し、現在の状態を維持する。

### ユースケース 6：タグ管理画面のボタン集約
- 前提：管理者が「タグ管理」画面に遷移している。
- 操作：任意のタグ行の操作エリアを確認する。
- 期待結果：操作エリアは 1 行のボタンのみで、`タグ編集`、`権限編集`、`削除` のみが表示されている。タグ停止／復旧、権限テンプレート停止／復旧、ユーザークリア、権限テンプレート削除ボタンは表示されない。