baodan/docs/保险智能客服系统_文档规范.md
2026-07-23 08:38:11 +08:00

284 lines
7.7 KiB
Markdown
Raw 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.

# 文档规范
> 一个人开发不等于不需要文档。文档是给未来的自己看的——三个月后你绝对记不住今天写的代码为什么这样设计。
## 一、需要维护哪些文档
| 文档 | 位置 | 什么时候写 | 什么时候更新 |
|------|------|-----------|-------------|
| 需求文档 | `docs/保险智能客服系统_需求文档.md` | 开发前写完 | 需求变更时 |
| 接口文档 | `docs/保险智能客服系统_API接口文档.md` | 写后端接口前 | 接口变更时 |
| 数据库设计 | `docs/保险智能客服系统_需求文档.md`(第六章) | 写后端前 | 表结构变更时 |
| 部署文档 | `docs/部署文档_完整版.md` | 第一次部署时 | 部署流程变化时 |
| 变更日志 | `CHANGELOG.md` | 每次发版 | 每次发版 |
---
## 二、需求文档
### 2.1 格式要求
每个功能模块用以下模板:
```markdown
## 模块名称XXX
### 功能概述
一句话说明这个模块做什么、给谁用。
### 用户故事
作为 [角色],我希望 [操作],以便 [目的]。
### 功能清单
| 编号 | 功能点 | 优先级 | 状态 |
|------|--------|--------|------|
| F-01 | XXX | P0必须/ P1重要/ P2可选 | 待开发/开发中/已完成 |
### 业务规则
1. 规则描述
2. 规则描述
### 界面原型
(如果有的话,贴截图或画草图)
### 异常场景
| 场景 | 系统行为 |
|------|---------|
| XXX 失败 | 提示用户 XXX |
```
### 2.2 本项目的需求文档
所有需求集中在 `docs/保险智能客服系统_需求文档.md` 一个文件中,按模块章节组织:
- 第一章:智能问答(对话交互、回复展示、检索范围、反馈纠错)
- 第二章产品推荐方案信息录入、AI匹配、方案展示
- 第三章:知识库管理(文档上传、状态监控、检索测试)
- 第四章:企微机器人(单聊、群聊 @触发、消息回调)
- 第五章用户与权限企微OAuth、角色权限
- 第六章:数据库设计
- 第七章系统配置LLM模型、Prompt管理
---
## 三、接口文档
### 3.1 格式要求
每个接口用以下模板:
```markdown
## 接口名称
### 基本信息
- **URL**: `POST /api/xxx/yyy`
- **描述**: 一句话说明
- **认证**: 需要 Token / 不需要
### 请求参数
| 字段 | 类型 | 必填 | 说明 | 示例 |
|------|------|------|------|------|
| name | string | 是 | 用户姓名 | "张三" |
| age | int | 是 | 年龄1-150 | 30 |
### 请求示例
```json
{
"name": "张三",
"age": 30
}
```
### 响应参数
| 字段 | 类型 | 说明 |
|------|------|------|
| code | int | 状态码0=成功 |
| message | string | 提示信息 |
| data | object | 业务数据 |
### 响应示例
```json
{
"code": 0,
"message": "success",
"data": { ... }
}
```
### 错误码
| code | 说明 |
|------|------|
| 0 | 成功 |
| 1001 | 参数错误 |
| 1002 | 未授权 |
| 2001 | BaoDan 调用失败 |
| 2002 | 企微 API 调用失败 |
### 注意事项
- 特殊说明
```
### 3.2 本项目的接口列表
你的后端Flask只写这几个接口不多不少
| 编号 | 接口 | 说明 |
|------|------|------|
| API-01 | `POST /api/wecom/callback` | 企微消息回调GET 验证 + POST 接收) |
| API-02 | `GET /api/wecom/oauth` | 企微 OAuth 登录入口 |
| API-03 | `GET /api/wecom/oauth/callback` | 企微 OAuth 回调 |
| API-04 | `POST /api/recommend/generate` | 产品推荐(调 BaoDan Workflow |
| API-05 | `GET /health` | 健康检查 |
其余所有接口(对话、知识库管理、用户管理等)全部走 **BaoDan 自己的 API**,你不需要重复写。
### 3.3 BaoDan API 参考
BaoDan 的 API 文档在你部署后的地址:
- `http://你的服务器:5001/console/api` (管理端 API
- BaoDan 官方文档https://docs.baodan.ai/guides/application-publishing/developing-with-apis
你用到的 BaoDan API 主要有:
| API | 用途 | 你在哪用 |
|-----|------|---------|
| `POST /chat-messages` | 发送对话消息 | 企微机器人后端 |
| `POST /workflows/run` | 执行工作流 | 产品推荐后端 |
| `GET /datasets` | 知识库列表 | 不需要调,直接用 BaoDan 后台 |
| `POST /datasets/{id}/documents` | 上传文档 | 批量导入脚本 |
---
## 四、数据库设计
### 4.1 说明
你的项目大部分数据存在 BaoDan 的数据库里PostgreSQL你自己只需要建**少量额外的表**
| 表 | 用途 | 你是否需要建 |
|---|---|---|
| 用户表、对话表、知识库表等 | BaoDan 核心数据 | ❌ BaoDan 自己管理 |
| 企微用户映射表 | 企微 userid ↔ BaoDan user 映射 | ✅ 你建 |
| 推荐方案记录表 | 产品推荐的历史记录 | ✅ 你建(第二期) |
| 系统配置表 | 你的后端配置 | ❌ 用 .env 文件够了 |
### 4.2 表结构定义格式
```markdown
## 表名wecom_user_mapping企微用户映射表
### 用途
存储企微用户 ID 与 BaoDan 用户 ID 的对应关系,避免重复创建 BaoDan 用户。
### 字段
| 字段 | 类型 | 约束 | 说明 |
|------|------|------|------|
| id | SERIAL | PRIMARY KEY | 自增主键 |
| wecom_userid | VARCHAR(64) | NOT NULL, UNIQUE | 企微用户 ID |
| baodan_user_id | VARCHAR(64) | NOT NULL | BaoDan 内部用户 ID |
| username | VARCHAR(128) | | 用户姓名 |
| department | VARCHAR(128) | | 所属部门 |
| created_at | TIMESTAMP | DEFAULT NOW() | 创建时间 |
| last_active_at | TIMESTAMP | | 最后活跃时间 |
### 索引
- UNIQUE INDEX ON wecom_userid
- INDEX ON baodan_user_id
```
### 4.3 设计原则
1. **能不建表就不建表** — 配置信息用 .env日志用 BaoDan 自带的
2. **字段加注释** — 每个字段都要有"说明"列
3. **时间字段用 TIMESTAMP** — 统一用 `created_at`、`updated_at`
4. **主键用 SERIAL** — 简单够用,不需要 UUID
5. **字符串长度明确** — VARCHAR(64)、VARCHAR(128) 等,不用 TEXT
---
## 五、部署文档
### 5.1 格式要求
```markdown
## 部署步骤
### 环境要求
| 软件 | 版本 | 用途 |
|------|------|------|
| ... | ... | ... |
### 安装步骤
1. 第一步
```bash
命令
```
2. 第二步
...
### 配置说明
| 配置项 | 文件 | 说明 | 示例值 |
|--------|------|------|--------|
| ... | ... | ... | ... |
### 验证方式
- [ ] 检查项 1
- [ ] 检查项 2
### 常见问题
**Q: 出现 XXX 错误怎么办?**
A: 原因是 XXX解决方法是 XXX。
```
### 5.2 需要写哪些部署文档
```
docs/
├── 快速启动指南.md # 本地开发一键启动
├── 部署指南.md # BaoDan 源码集成指南
├── 部署文档_完整版.md # 完整部署 + 架构图 + 环境变量
├── 宝塔面板部署指南.md # 宝塔面板 Docker 部署
├── 企业微信接入指南.md # 企微后台配置步骤
└── 前端移动端适配指南.md # 移动端适配方案
```
---
## 六、变更日志CHANGELOG.md
每次发版时记录:
```markdown
# 变更日志
## [0.2.0] - 2026-06-20
### 新增
- 产品推荐方案功能
- 企微群聊 @机器人 支持
### 修复
- 企微消息回调超时问题
### 变更
- Prompt 优化,回答更简洁
## [0.1.0] - 2026-06-01
### 新增
- BaoDan 部署 + 知识库入库
- 智能问答基础功能
- 企微单聊机器人
- 企微 OAuth 登录
```
---
## 七、文档维护原则
1. **代码改了文档必须跟着改** — 不然文档就是误导
2. **不要写废话** — 每句话都要有信息量
3. **用表格** — 结构化信息用表格,比大段文字清晰
4. **贴真实示例** — 请求/响应示例用真实数据,不要用 "xxx"
5. **先写再改** — 不要追求一次写完美,先把框架填上,后面慢慢改