# TalkBase 修正箇所まとめ（①アポ率表示 / ③集計の論理削除除外）

- 作成：りっくん（2026-06-09）
- 対象：近藤さん（実装）
- 背景：鈴木さんからの追加3点のうち、①と③の該当箇所をコードで特定しました。②（カウント方法）は仕様確認のみのため対象外です。

---

## ① アポ率・接続率の小数点2桁表示

表示桁数を `toFixed(1)` → `toFixed(2)` に変更します。

| 箇所 | ファイル | 行 |
|---|---|---|
| 接続率（サマリー） | `apps/fe/src/app/(private)/page.tsx` | 300 |
| アポ率（サマリー） | `apps/fe/src/app/(private)/page.tsx` | 310 |
| 担当者別テーブル 接続率 | `apps/fe/src/app/(private)/page.tsx` | 451 |
| 担当者別テーブル アポ率 | `apps/fe/src/app/(private)/page.tsx` | 454 |
| CSV出力 接続率/アポ率 | `apps/be/src/modules/statistics/statistics.service.ts` | 415–416 |

### 補足：アポ率の分母が画面内で不一致

- サマリーのアポ率 ＝ アポ数 ÷ **接続数**（`getSummary` の `appointmentRate`、301行目付近）
- 担当者別テーブルのアポ率 ＝ アポ数 ÷ **架電数**（454行目）

同じ「アポ率」でも分母が異なるため数値がズレます。鈴木さんに統一先を確認中です。
統一先が決まり次第、454行目とBEの `getSummary`（301行目付近）を合わせる形になります。

---

## ③ ダッシュボード集計が論理削除を除外していない

- 活動履歴の削除は**論理削除**（`softRemove` … `activity-histories.service.ts:321` / `@DeleteDateColumn` … `base.entity.ts:18`）。
- 一方、`statistics.service.ts` の集計クエリ（生SQL）は `deleted_at` を除外しておらず、削除済みの履歴も数えてしまっています。
- → 活動履歴一覧（QueryBuilderで自動除外）では消えても、ダッシュボードの数字には残り続け、アポ成立数などが不一致になります。

### 修正（2箇所）

1. `buildActivityWhere`（85行目付近）の `conditions` に `ah.deleted_at IS NULL` を追加
   → `getUserStatistics` / `getSummary` / `getDailyTrend` / `getStatusDistribution` の4つが一括で修正されます。
2. `getListStatistics`（242行目の `LEFT JOIN activity_histories`）の **ON句** に `AND ah.deleted_at IS NULL` を追加
   → LEFT JOIN のため、活動履歴0件の企業を残せるよう WHERE ではなく ON 側に入れます。

※ `getBaseListStatistics` は companies のみ参照のため対象外です。

---

認識のズレや、すでに対応済みの箇所があればご指摘ください。よろしくお願いします。
