Files
Neo-ZQYY/docs/prd/specs/P4-miniapp-core-business.md

103 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# P4核心业务层 — miniapp-core-business
> 优先级P4依赖 P1 + P2 + P3
> 预估工作量:大(本 SPEC 是业务核心)
---
## 需求Requirements
### 用户故事
1. 作为助教,我每天打开小程序能看到系统为我分配的任务列表,按优先级排序。
2. 作为助教,我可以置顶/放弃任务,放弃时必须填写原因。
3. 作为助教,我完成召回任务后(客户到店被服务),系统自动标记任务完成。
4. 作为助教我给客户添加回访备注后系统自动评估备注含金量≥6 分算完成)。
5. 作为系统,回访任务至少保留 48 小时,到期后自动失效。
6. 作为系统,当 ETL 数据延迟导致召回完成晚于备注提交时,需要回溯重分类备注。
### 验收标准
- AC1任务生成器每日 4:00 后运行,正确按 max(WBI,NCI) 分配 4 种任务类型
- AC2同客户-助教-类型的任务跳过;不同类型则关闭旧任务+新建
- AC3回访任务 48 小时滞留机制正常(生成时间算起)
- AC4任务有效/无效状态 + 有效期字段正确流转
- AC5召回完成检测在 ETL 数据到达后自动触发
- AC6数据回溯将普通备注重分类为回访备注并触发 AI 评分
- AC7备注 CRUD 正常type 字段正确区分
- AC8生日信息独立于 ETL 数据,不被覆盖
---
## 设计要点
### 任务类型与优先级
| 优先级 | 类型 | 触发条件 | 完成条件 |
|--------|------|---------|---------|
| 0 | 高优先召回 | max(WBI,NCI) > 7 | 助教为该客户服务ETL 检测) |
| 0 | 优先召回 | max(WBI,NCI) > 5 | 同上 |
| 1 | 客户回访 | 完成召回后未备注 | 提交备注且 AI 评分 ≥ 6 |
| 2 | 关系构建 | RS < 6 | 无自动完成条件(手动标记或指数变化) |
### 任务状态机
```
[生成] → 有效(无有效期)
├── 类型变更 → 旧任务无效(无有效期) + 新任务有效
├── 指数不再满足 → 有效(填充有效期=生成时间+48h)
│ └── 轮询检查 → 超过有效期 → 无效
├── 新回访任务顶替 → 旧任务无效 + 新任务有效
├── 助教放弃 → 无效(记录放弃原因)
└── 完成 → 已完成(记录完成时间和完成时状态)
```
### coach_tasks 表核心字段
```
biz.coach_tasks
- id, site_id, assistant_id, member_id
- task_type (high_priority_recall / priority_recall / follow_up_visit / relationship_building)
- status (active / inactive / completed / abandoned)
- priority_score (max(WBI,NCI) 快照)
- expires_at (有效期,默认 NULL)
- is_pinned (置顶)
- abandon_reason (放弃原因)
- completed_at, completed_task_type (完成时的任务类型快照)
- parent_task_id (被顶替的旧任务 ID)
- created_at, updated_at
```
### 触发器机制
```
biz.trigger_jobs
- id, job_type, job_name
- trigger_condition (cron / event / interval)
- trigger_config (JSON: cron表达式 / 事件名 / 间隔秒数)
- last_run_at, next_run_at
- status (enabled / disabled)
- created_at
```
预置触发器:
1. `task_generator` — cron: 每日 04:00
2. `task_expiry_check` — interval: 每小时
3. `recall_completion_check` — event: ETL 数据更新后
4. `note_reclassify_backfill` — event: 召回完成时
---
## 任务清单
- [ ] T1创建 `biz.coach_tasks` + `biz.coach_task_history`
- [ ] T2创建 `biz.notes`type: normal/follow_up/birthday/abandon_reason
- [ ] T3创建 `biz.trigger_jobs` 表 + 轮询调度框架
- [ ] T4实现任务生成器读取指数 → 分配任务 → 跳过/更新逻辑)
- [ ] T5实现 48 小时滞留机制 + 有效期轮询
- [ ] T6实现召回完成检测ETL 数据到达后匹配 service_log
- [ ] T7实现数据回溯机制普通备注 → 回访备注 + 触发 AI 评分)
- [ ] T8实现任务 CRUD API列表/详情/置顶/放弃/取消置顶/取消放弃)
- [ ] T9实现备注 CRUD API创建/列表/删除)
- [ ] T10实现生日信息隔离存储逻辑