# 機能設計書 28-優先度管理

## 概要

本ドキュメントは、Chatwootにおける会話の優先度（高・中・低・緊急）設定機能について記述する。

### 本機能の処理概要

**業務上の目的・背景**：カスタマーサポートにおいて、全ての問い合わせを同等に扱うのではなく、緊急性や重要度に応じて優先順位を付けることで、重要な顧客対応を優先的に処理できる。VIP顧客や障害報告など、迅速な対応が求められる会話に高い優先度を設定することで、SLA遵守と顧客満足度向上を実現する。

**機能の利用シーン**：
- エージェントが会話の優先度を手動設定
- オートメーションルールによる自動優先度設定
- 優先度に基づく会話の並べ替え

**主要な処理内容**：
1. toggle_priorityによる優先度設定/解除
2. 優先度によるソート（sort_on_priority）
3. updateアクションによる優先度更新

**関連システム・外部連携**：オートメーションルール

**権限による制御**：会話へのアクセス権限を持つエージェントが操作可能。

## 関連画面

| 画面No | 画面名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 11 | 会話詳細画面 | 主画面 | 優先度設定 |

## 機能種別

設定管理

## 入力仕様

### 入力パラメータ

| パラメータ名 | 型 | 必須 | 説明 | バリデーション |
|-------------|-----|-----|------|---------------|
| priority | String | No | 優先度 | low/medium/high/urgent/null |

## 出力仕様

### 出力データ

| 項目名 | 型 | 説明 |
|--------|-----|------|
| priority | String | 設定された優先度（null可） |

## 処理フロー

### 処理シーケンス

```
1. toggle_priorityリクエスト受信
2. 優先度パラメータを設定（nullの場合は解除）
3. 会話を保存
4. head :ok を返却
```

## ビジネスルール

### 業務ルール

| ルールNo | ルール名 | 内容 | 適用条件 |
|---------|---------|------|---------|
| BR-28-01 | 優先度値 | low(0), medium(1), high(2), urgent(3) | 常時 |
| BR-28-02 | 優先度解除 | null設定で優先度なしに | toggle_priority(nil)時 |
| BR-28-03 | 優先度ソート | priority_desc/priority_ascでソート可能 | 検索時 |

## データベース操作仕様

### テーブル別操作詳細

#### conversations

| 操作 | 項目（カラム名） | 更新値・取得条件 | 備考 |
|-----|-----------------|-----------------|------|
| UPDATE | priority | 0(low)/1(medium)/2(high)/3(urgent)/null | enum、null可 |

---

## コードリーディングガイド

### 推奨読解順序

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1 | conversation.rb | `app/models/conversation.rb` | priorityのenum定義（76行目）、toggle_priority（156-159行目） |
| 2 | conversations_controller.rb | `app/controllers/api/v1/accounts/conversations_controller.rb` | toggle_priorityアクション（101-104行目）、permitted_update_params（144-147行目） |

### プログラム呼び出し階層図

```
ConversationsController#toggle_priority
    │
    └─ @conversation.toggle_priority(params[:priority])
           │
           └─ self.priority = priority.presence
           └─ save
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| conversation.rb | `app/models/conversation.rb` | モデル | 優先度管理 |
| conversations_controller.rb | `app/controllers/api/v1/accounts/conversations_controller.rb` | コントローラー | toggle_priority API |
| sort_handler.rb | `app/models/concerns/sort_handler.rb` | Concern | 優先度ソート |
