baodan/docs/保险智能客服系统_文档规范.md

284 lines
7.7 KiB
Markdown
Raw Normal View History

# 文档规范
> 一个人开发不等于不需要文档。文档是给未来的自己看的——三个月后你绝对记不住今天写的代码为什么这样设计。
## 一、需要维护哪些文档
| 文档 | 位置 | 什么时候写 | 什么时候更新 |
|------|------|-----------|-------------|
2026-07-23 08:38:11 +08:00
| 需求文档 | `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 |
```
2026-07-23 08:38:11 +08:00
### 2.2 本项目的需求文档
2026-07-23 08:38:11 +08:00
所有需求集中在 `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 本项目的接口列表
2026-07-23 08:38:11 +08:00
你的后端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 需要写哪些部署文档
```
2026-07-23 08:38:11 +08:00
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. **先写再改** — 不要追求一次写完美,先把框架填上,后面慢慢改