# 新增一个领域 QA — 一键部署指南

> 当前已部署：maritime (8080)、finance (8082)、travel (8081，是 API 不是 demo)

## 前置条件 (1 次性, 已就绪)

- vLLM Qwen2.5-32B 在 `127.0.0.1:8000` ✅
- bge-m3 embedding server 在 `127.0.0.1:11435` ✅
- `lambdagentpaas:latest` docker 镜像 ✅
- 统一的 `/home/67/qademo/app.py` (config-driven) ✅
- `/home/67/qademo/deploy_domain.sh` ✅
- `/home/67/qademo/instance.yml.template` ✅

## 添加新领域 (例: customs 海关)

### Step 1 — 准备知识库目录

```bash
mkdir -p /home/67/knowledge/customs/{raw,processed,wiki}

# 把原始文档放进 raw/
cp -r /path/to/customs_pdfs/* /home/67/knowledge/customs/raw/
```

### Step 2 — 复制 search/config 模块

```bash
# 直接从 maritime 复制 (代码完全相同, 仅 config.py 路径解析)
cp /home/67/knowledge/maritime/{search_engine.py,search_engine_v2.py,search_unified.py,graph_engine.py,config.py} \
   /home/67/knowledge/customs/
```

### Step 3 — 用 maritime 的索引脚本生成索引

```bash
cd /home/67/knowledge/customs
# 生成 BM25 + vector 索引 (复用 maritime 的 build 脚本)
python3 /home/67/knowledge/maritime/build_index.py   # 或对应的索引构建命令
```

应产生：
- `rag_index.json`               (BM25)
- `rag_index.keywords.json`
- `rag_vectors_v2.npy`           (vector)
- `rag_vectors_meta_v2.pkl`

### Step 4 — 写 instance.yml

```bash
cp /home/67/qademo/instance.yml.template \
   /home/67/knowledge/customs/instance.yml

# 把所有 {{DOMAIN}} 替换成 customs, {{PORT}} 替换成新端口 (如 8083)
sed -i 's/{{DOMAIN}}/customs/g; s/{{PORT}}/8083/g' \
   /home/67/knowledge/customs/instance.yml

# 编辑 systemPrompt + 5 个 examples + tagline (TODO 标记处)
vi /home/67/knowledge/customs/instance.yml
```

### Step 5 — 一键部署

```bash
/home/67/qademo/deploy_domain.sh customs
```

输出：
```
[1/6] Validating /home/67/knowledge/customs ...
[2/6] Parsing /home/67/knowledge/customs/instance.yml ...
       agent template: qaagent67lambda
       port:           8083
[3/6] Checking port 8083 availability ...
[4/6] No existing customs-qa — fresh deploy
[5/6] Starting customs-qa on port 8083 ...
[6/6] Waiting for http://127.0.0.1:8083/ to become ready ...

✅ customs-qa ready
   URL: http://qa.lambdagent.cn:8083/
```

### Step 6 — 访问

浏览器打开 `http://qa.lambdagent.cn:8083/` 即可。

---

## 常用维护命令

```bash
# 重启某个领域
/home/67/qademo/deploy_domain.sh customs --rebuild

# 查日志
docker logs -f customs-qa

# 改 demo 文案/示例 → 改 instance.yml → 直接重启容器即可 (无需 rebuild)
vi /home/67/knowledge/customs/instance.yml
docker restart customs-qa

# 列出所有 QA 实例
docker ps --filter name=-qa --format 'table {{.Names}}\t{{.Status}}'
```

## 一切配置都集中在 instance.yml

| 想改 | 改这里 |
|---|---|
| 网页标题/副标题/输入框提示 | `demo.title / demo.tagline / demo.placeholder` |
| 默认 5 个示例问题 | `demo.examples[]` |
| 端口 | `demo.port` |
| LLM 模型 | `model.name` |
| 检索权重 | `retrieval.weights.*` |
| RAG 系统提示词 | `systemPrompt` + `prompts.*` |
| 知识库路径 | `knowledge.baseDir` (其余自动派生) |

无需碰 `app.py`、`Dockerfile`、`docker run` 命令。
