50 lines
1.4 KiB
Markdown
50 lines
1.4 KiB
Markdown
|
|
# T588 — ai-followup-message-generation
|
|||
|
|
|
|||
|
|
> Status: `done`
|
|||
|
|
> Milestone: `M5`
|
|||
|
|
> Kind: `feat`
|
|||
|
|
> Est. change: `~140 lines`
|
|||
|
|
|
|||
|
|
## Goal
|
|||
|
|
|
|||
|
|
完成後系統應:可在 Contact 上產生 AI 追蹤訊息,計入 `ai_copy`/`source=radar.followup`,且同樣受 `forbidden[]` 過濾。
|
|||
|
|
|
|||
|
|
## Depends on
|
|||
|
|
|
|||
|
|
- T510、T587
|
|||
|
|
|
|||
|
|
## Inputs
|
|||
|
|
|
|||
|
|
- Spec:`../spec.md` §4.7.3、§5.5、§9.4(FU-02)
|
|||
|
|
- 既有:T549 的 `forbidden_filter.go`
|
|||
|
|
|
|||
|
|
## Outputs
|
|||
|
|
|
|||
|
|
### 程式變更(預期路徑)
|
|||
|
|
|
|||
|
|
| 路徑 | 動作 | 說明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `apps/backend/generate/api/crm.api` | edit | followup message 生成 req/resp |
|
|||
|
|
| `apps/backend/internal/module/crm/usecase/followup_message.go` | add | 組 prompt(原商機原文+時間軸摘要+ServiceProfile) |
|
|||
|
|
| `apps/backend/internal/logic/crm/createFollowupMessageLogic.go` | edit | 生成+扣點+錯誤映射 |
|
|||
|
|
|
|||
|
|
### 行為變更
|
|||
|
|
|
|||
|
|
- 復用 forbidden 過濾(命中重生一次,仍命中回明確錯誤且不輸出)。
|
|||
|
|
- 生成結果寫一筆 `note` 型 touch(記錄產出內容),送出仍為人工。
|
|||
|
|
- 計費:`ai_copy`/`source=radar.followup`。
|
|||
|
|
|
|||
|
|
## Out of scope
|
|||
|
|
|
|||
|
|
- 自動送出追蹤訊息(本輪不做)
|
|||
|
|
|
|||
|
|
## Acceptance
|
|||
|
|
|
|||
|
|
- [x] FU-02:產出成功且 usage 記 `ai_copy`/`radar.followup`
|
|||
|
|
- [x] forbidden 命中兩次回錯誤且無內容外洩
|
|||
|
|
- [x] 指令:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd apps/backend && go test ./internal/module/crm/... ./internal/logic/crm/... -count=1
|
|||
|
|
```
|