feat: 可配置方案引擎通用原型(Mock 检索)

需求未定稿时可先跑通追问/判定/出方案;槽位与判定树外置 YAML,后续可接 Ragflow。

Co-authored-by: haijd <haijd@163.com>
This commit is contained in:
Cursor Agent
2026-09-18 09:12:18 +00:00
co-authored by haijd
parent 93b0867eb3
commit 9c6afcb61a
24 changed files with 978 additions and 24 deletions
+38 -24
View File
@@ -1,37 +1,51 @@
# 鲜境物联 · AI 智能客服|技术路线建议
# 鲜境方案引擎 · 通用原型(需求未定稿版)
综合建议书、验收标准、**委托开发合同**与**附件二进度表**后的实施路线结论。
业务规则还在变时:**先搭可配置原型,再按真实需求改 YAML,而不是先写死后台。**
## 结论
## 策略
**推荐:开源自托管二开 + 核心业务定制。不建议纯自研,不建议纯公有云 SaaS。**
1. 先跑通:多轮追问(槽位)→ 判定树出组合 → 检索补依据 → 出方案草稿
2. 槽位 / 判定树 / 示例知识 **全部外置配置**,需求变了主要改配置
3. 检索默认 **Mock**(不依赖本机 Ragflow);有 Ragflow 后改环境变量即可接真库
4. 不做大而全后台;控制台能聊天验证闭环即可
| 路线 | 结论 |
## 本仓库原型包含
| 路径 | 作用 |
|------|------|
| 纯自研 | 不推荐首期(撞上 **7 周 / ¥5 万** 硬顶) |
| 纯 SaaS(扣子 / 阿里云客服等) | 不推荐(数据自主可控冲突) |
| **Dify 自托管二开 + 方案判定定制** | **推荐** |
| `engine/` | FastAPI 方案引擎 + 简易聊天页 |
| `knowledge/` | `slots.yaml` / `decision_tree.yaml` / 示例检索片段 |
| `docs/Ragflow实施方案.md` | 完整架构说明 |
**二开首选:Dify**;检索吃力时加 **Ragflow**;人工席位 **Chatwoot**(或企微/飞书)。
## 快速启动
合同已锁:实施 **¥50,000**、订阅 **¥30,000/年**、周期 **7 周**、线上场景 **只做一个高频渠道**。详见完整建议书。
```bash
cd /workspace
python3 -m venv .venv
source .venv/bin/activate
pip install -r engine/requirements.txt
uvicorn engine.app.main:app --host 0.0.0.0 --port 3847
```
## 文档
打开:[方案引擎原型](http://127.0.0.1:3847/)
| 文件 | 说明 |
|------|------|
| [docs/技术方案建议书.md](./docs/技术方案建议书.md) | 自研/二开决策、Dify vs Ragflow、许可 |
| [docs/Ragflow实施方案.md](./docs/Ragflow实施方案.md) | **选定 Ragflow 后怎么搭**(架构、知识库、方案引擎、分期) |
| [uploads/](./uploads/) | 原始合同、进度表、建议书、验收标准 |
健康检查:`GET /api/health`
重载业务配置:`POST /api/admin/reload-config`(改完 YAML 不用重启进程时用)
## 若已定 Ragflow
## 接真 Ragflow(稍后)
按 [Ragflow实施方案](./docs/Ragflow实施方案.md):自托管 Ragflow 做检索 → 自研方案引擎做追问/判定/转人工 → 首期只接一个渠道。
```bash
export RETRIEVAL_BACKEND=ragflow
export RAGFLOW_BASE_URL=http://127.0.0.1:9380
export RAGFLOW_API_KEY=...
export RAGFLOW_DATASET_IDS=...
```
## 建议立刻确认
未配置时保持 `RETRIEVAL_BACKEND=mock`。
1. 首期唯一渠道:网站还是 Facebook?
2. 方案判定树的业务拍板人
3. 模型:智谱 API 是否可上生产 / 是否必须私有化
4. 场景二(录音辅助)是否与场景一同期验收
5. 部署:甲方机房还是乙方 VPC
## 需求清晰后怎么补
1. 改 `knowledge/slots.yaml`(追问项)
2. 改 `knowledge/decision_tree.yaml`(推荐规则)
3. 灌真实资料进 Ragflow,切 `ragflow` 后端
4. 再加渠道 Webhook / 转人工 / Eval,而不是推倒重来