> For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.

# Coaching — 计算配置

> **Source of truth**: `studio-website-monorepo/apps/api/src/routes/v3/dashboard-staff.ts`（coaching flag 逻辑）；`callytics-common/src/db/schema/calls.ts`（coaching 字段）；`ai-analysis-processor/src/core/stages/coaching.ts`（AI pipeline）
> **last\_verified**: 2026-05-29

***

## Coaching Flag 触发条件

通话进入 coaching 列表需通过两层 gate：

| Gate             | 条件                                                                                                                   | 说明                                  |
| ---------------- | -------------------------------------------------------------------------------------------------------------------- | ----------------------------------- |
| AI analysis gate | `call_state = 'human_conversation' AND duration > 30s`                                                               | 不满足则跳过 AI coaching 分析，填 sentinel    |
| AI 判断            | `practical_coaching_scenario` 有实质内容（不是 `No Coaching Available%` / `Voicemail%`）                                      | AI 认为有值得辅导的时刻                       |
| UI list filter   | `duration > 60` + `staff_name` 非空且非 `unidentified` + scenario 排除 `No Coaching%` / `Coaching skipped%` / `Voicemail%` | Dashboard coaching highlights 的额外过滤 |

### Coaching Flag Rate（员工维度）

从 staff endpoint 计算：

```
coaching_worthy = COUNT(*) FILTER (
  WHERE practical_coaching_scenario IS NOT NULL
    AND practical_coaching_scenario NOT LIKE 'No Coaching Available%'
    AND practical_coaching_scenario NOT LIKE 'Voicemail%'
    AND duration > 60
)

eligible_calls = COUNT(*) FILTER (
  WHERE duration > 60
    AND practical_coaching_scenario IS NOT NULL
    AND call_state IN ('human_conversation', 'voicemail')
)

flag_rate = coaching_worthy / eligible_calls × 100
```

状态：✅ 已接线

***

## 三个 KPI

::: warning 待确认去留（2026-05-28 会议评论）
Vivian 提出此 3 个 KPI 与 Dashboard 重复，建议删除；待 Coaching UX 重设计定案。下表「状态」列指底层数据接线情况（数据本身存在），不代表这组 KPI 已确定保留在 Coaching 页。
:::

| 指标                | 产品定义         | 数据来源                         | 状态     |
| ----------------- | ------------ | ---------------------------- | ------ |
| Calls Handled     | 选定时段内处理的通话总数 | `calls` 表 COUNT              | ✅ 已接线  |
| Tasks Closed      | 选定时段内关闭的任务数  | `tasks` 表 COUNT WHERE closed | ✅ 已接线  |
| Core Productivity | 三类核心任务完成率    | 同 My Stores 定义               | ✅ 前端计算 |

***

## Coaching 内容字段

| 字段                            | 来源                                                                                                                              | 状态    |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ----- |
| `practical_coaching_scenario` | AI Stage 3 输出，一句话场景标签                                                                                                           | ✅ 已接线 |
| `practical_coaching_feedback` | AI Stage 3 输出，含 5 个子字段（timestamp / what\_was\_said / context / what\_could\_have\_been\_said / why\_recommendation\_is\_better） | ✅ 已接线 |

***

## 待开发功能的数据需求

| 功能                         | 需要的字段                           | 当前状态   |
| -------------------------- | ------------------------------- | ------ |
| Read / Unread / Archived   | calls 表需加 coaching 状态字段         | ⚠️ 待开发 |
| Note 功能                    | calls 表需加 note 字段               | ⚠️ 待开发 |
| Flag for Coaching / Remove | calls 表需加 coaching flag boolean | ⚠️ 待开发 |
