Files
Neo 6f8f12314f feat: 累积功能变更 — 聊天集成、租户管理、小程序更新、ETL 增强、迁移脚本
包含多个会话的累积代码变更:
- backend: AI 聊天服务、触发器调度、认证增强、WebSocket、调度器最小间隔
- admin-web: ETL 状态页、任务管理、调度配置、登录优化
- miniprogram: 看板页面、聊天集成、UI 组件、导航更新
- etl: DWS 新任务(finance_area_daily/board_cache)、连接器增强
- tenant-admin: 项目初始化
- db: 19 个迁移脚本(etl_feiqiu 11 + zqyy_app 8)
- packages/shared: 枚举和工具函数更新
- tools: 数据库工具、报表生成、健康检查
- docs: PRD/架构/部署/合约文档更新

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 00:03:48 +08:00

80 lines
3.5 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.
# P5.1→NS3 缺失项 #7App5 话术模板分类和质量评估标准
## 简要结论
- 状态:⚠️ 部分解决
- 风险等级:🟠 中
- App5 已实现完整的话术生成流程数据获取→Prompt 构建→AI 调用→持久化),但话术输出仅按 scenario/script 结构化,缺少 P5.1 定义的话术分类体系(召回/维护/推荐)和质量评估维度
## 详细审查
### 审查范围
- `apps/backend/app/ai/apps/app5_tactics.py` — App5 话术参考实现
- `apps/backend/app/ai/schemas.py` — Pydantic 模型定义
- `apps/backend/app/ai/apps/app4_analysis.py` — App4 关系分析App5 上游)
- `tests/test_ai_apps/test_build_prompt_props.py` — 属性测试
- `tests/test_ai_apps/test_ai_apps_unit.py` — 单元测试
- `tests/test_p5_ai_integration_properties.py` — P5 集成属性测试
### 发现
#### ✅ 已实现部分
1. **完整调用链**App5 由 App4 联动触发,接收 `context["app4_result"]` 作为 `task_suggestion`,包含 `task_description``action_suggestions`
2. **数据驱动 Prompt**:并发获取助教信息、服务历史、消费数据、备注 4 类数据,构建丰富的上下文。
3. **Reference 机制**:引用最近 2 套 App8 历史结果作为 Prompt reference提供线索整合上下文。
4. **结构化输出**Pydantic 模型 `App5Result` 定义了 `tactics: list[App5TacticsItem]`,每条包含 `scenario`(场景)和 `script`(话术内容)。
5. **Token 预算控制**`_MAX_SYSTEM_CONTENT_LEN = 8000`,超长时分级截断服务记录→消费记录→备注。
6. **降级处理**4 类数据获取均有异常捕获和降级逻辑,部分失败不阻断。
#### ❌ 未实现部分
1. **无话术分类体系**Prompt 中 `output_format` 仅要求 `scenario + script`,未定义话术类型分类(如 P5.1 中的召回话术/维护话术/推荐话术)。当前 scenario 是自由文本,由 AI 自行决定场景描述。
2. **无质量评估标准**:无类似 App6 的 `score` 评分机制。App5 输出无评估维度(如话术的针对性、可执行性、情感适配度等)。
3. **无话术模板库**:无预定义的话术模板或参考范例供 AI 参考,完全依赖 AI 自由生成。
4. **Pydantic 模型无分类枚举**`App5TacticsItem` 仅有 `scenario: str``script: str`,无 `tactic_type``category` 枚举字段。
### 证据
**App5 输出格式定义app5_tactics.py L131-134**
```python
"output_format": {
"tactics": [
{"scenario": "场景描述", "script": "话术内容"}
]
},
```
**Pydantic 模型schemas.py**
```python
class App5TacticsItem(BaseModel):
scenario: str
script: str
class App5Result(BaseModel):
tactics: list[App5TacticsItem]
```
**对比 App6 有评分机制**
```python
class App6Result(BaseModel):
score: int = Field(ge=1, le=10)
clues: list[ClueItem]
```
App5 无类似评分或分类枚举。
### 建议
1. **新增话术类型枚举**:在 `schemas.py` 中定义 `App5TacticTypeEnum`(如 `recall`/`maintain`/`recommend`/`upsell`),在 `App5TacticsItem` 中增加 `tactic_type` 字段
2. **Prompt 中明确分类要求**:在 `output_format` 中增加 `tactic_type` 字段说明,引导 AI 按分类生成
3. **可选:增加质量评估**:参考 App6 的 score 机制,为每条话术增加 `relevance_score`(针对性评分)
4. **可选:话术模板库**:在 Prompt reference 中注入预定义的优秀话术范例,提升生成质量