# AI 模块（Ollama + RAG + 订单分析）

## 1. 配置

见 `src/main/resources/application.yml`：

- `ai.ollama.base-url`：主地址（例如 `https://ai-api.websoft.top`）
- `ai.ollama.fallback-url`：备用地址（例如 `http://47.119.165.234:11434`）
- `ai.ollama.chat-model`：对话模型（`qwen3.5:cloud`）
- `ai.ollama.embed-model`：向量模型（`qwen3-embedding:4b`）

## 2. 建表（知识库）

执行：`docs/ai/ai_kb_tables.sql`

## 3. API

说明：所有接口默认需要登录（`@PreAuthorize("isAuthenticated()")`），并且要求能够拿到 `tenantId`（header 或登录用户）。

### 3.1 对话

- `GET /api/ai/models`：获取 Ollama 模型列表
- `POST /api/ai/chat`：非流式对话
- `POST /api/ai/chat/stream`：流式对话（SSE）
- `GET /api/ai/chat/stream?prompt=...`：流式对话（SSE，适配 EventSource）

请求示例（非流式）：
```json
{
  "prompt": "帮我写一个退款流程说明"
}
```

### 3.2 知识库（RAG）

- `POST /api/ai/kb/upload`：上传文档入库（建议 txt/md/html）
- `POST /api/ai/kb/sync/cms`：同步 CMS 已发布文章到知识库（当前租户）
- `POST /api/ai/kb/query`：仅检索 topK
- `POST /api/ai/kb/ask`：检索 + 生成答案（答案要求引用 chunk_id）

请求示例（ask）：
```json
{
  "question": "怎么开具发票？",
  "topK": 5
}
```

### 3.3 商城订单分析（按租户/按天）

- `POST /api/ai/analytics/query`：返回按天指标数据
- `POST /api/ai/analytics/ask`：基于指标数据生成分析结论

请求示例（ask）：
```json
{
  "question": "最近30天支付率有没有明显下滑？请给出原因排查建议。",
  "startDate": "2026-02-01",
  "endDate": "2026-02-27"
}
```
