# BD 手册:biz.dws_assistant_task_monthly > 助教任务月度统计汇总表 ## 基本信息 | 属性 | 值 | |------|-----| | Schema | biz | | 表名 | dws_assistant_task_monthly | | 所属库 | zqyy_app | | 创建日期 | 2026-03-31 | | 写入方 | `task_generator._update_task_stats()` | | 读取方 | 看板 / 绩效报表(待接入) | | 幂等策略 | UPSERT(`ON CONFLICT (site_id, assistant_id, stat_month) DO UPDATE`) | ## 用途 按助教 + 自然月维度汇总任务引擎的创建/完成/放弃/转移数据。每次 `task_generator.run()` 执行时,对当前门店的所有助教重新计算当月统计并 upsert。 ## 字段定义 | 字段名 | 类型 | 可空 | 默认值 | 说明 | |--------|------|------|--------|------| | id | BIGSERIAL | NOT NULL | 自增 | 主键 | | site_id | BIGINT | NOT NULL | — | 门店 ID | | assistant_id | BIGINT | NOT NULL | — | 助教 ID | | stat_month | DATE | NOT NULL | — | 统计月份(月初日期,如 2026-03-01) | | recall_created | INT | NOT NULL | 0 | 当月创建的召回任务数(high_priority + priority) | | follow_up_created | INT | NOT NULL | 0 | 当月创建的回访任务数 | | relationship_created | INT | NOT NULL | 0 | 当月创建的关系构建任务数 | | total_created | INT | NOT NULL | 0 | 当月创建的任务总数 | | recall_completed | INT | NOT NULL | 0 | 当月完成的召回任务数 | | follow_up_completed | INT | NOT NULL | 0 | 当月完成的回访任务数 | | total_completed | INT | NOT NULL | 0 | 当月完成的任务总数 | | abandoned_count | INT | NOT NULL | 0 | 当月放弃的任务数 | | transferred_count | INT | NOT NULL | 0 | 当月转移的任务数 | | updated_at | TIMESTAMPTZ | NOT NULL | NOW() | 最后更新时间 | ## 约束与索引 | 名称 | 类型 | 字段 | |------|------|------| | PK | PRIMARY KEY | id | | UQ | UNIQUE | (site_id, assistant_id, stat_month) | | idx_task_monthly_site_month | INDEX | (site_id, stat_month DESC) | | idx_task_monthly_assistant | INDEX | (assistant_id, stat_month DESC) | ## 数据来源 统计数据从 `biz.coach_tasks` 表聚合: - 按 `assigned_assistant_id` + `DATE_TRUNC('month', created_at)` 分组 - `recall_created` = COUNT WHERE task_type IN ('high_priority_recall', 'priority_recall') - `follow_up_created` = COUNT WHERE task_type = 'follow_up_visit' - `relationship_created` = COUNT WHERE task_type = 'relationship_building' - `*_completed` = COUNT WHERE status = 'completed' AND 对应 task_type - `abandoned_count` = COUNT WHERE status = 'abandoned' - `transferred_count` = COUNT WHERE status = 'transferred' ## 兼容性 - ETL:无直接依赖(表由后端 task_generator 写入) - 后端 API:待接入看板/绩效接口 - 小程序:无直接依赖 ## 回滚策略 ```sql DROP TABLE IF EXISTS biz.dws_assistant_task_monthly; ``` ## 关联变更 - 迁移脚本:`db/zqyy_app/migrations/2026-03-31__task_stats_tables.sql` - 审计记录:`docs/audit/changes/2026-03-31__task-engine-overhaul.md` - 关联表:`biz.coach_tasks`(数据源)、`dws.dws_member_assistant_relation_index`(C 层历史总计字段)