飞书多维表格 + DeepSeek:构建自动化评审与业务逻辑处理引擎
深度解析如何通过飞书多维表格(Bitable)结合 DeepSeek API,实现测试用例自动评审、合同逻辑核查等高阶业务自动化场景。
你将获得什么
通过本教程,你将从零搭建一套完整的自动化评审引擎,具备以下能力:
- 自动化评审闭环:提交数据到飞书多维表格后,DeepSeek 自动完成评审并将结果回填到对应字段
- 多场景适配:同一套架构可以支撑测试用例评审、合同条款核查、文档质量检查等多种业务场景
- 结构化评分体系:AI 返回量化评分(0-100)和结构化的修改建议,而非模糊的定性描述
- 零人工干预:从数据提交到评审完成,全程无需人工操作
这不是一个概念验证,而是一个可以直接投入生产环境使用的工作流。
前置条件
| 项目 | 要求 |
|---|---|
| 飞书账号 | 企业版(需要自动化助手和 Open API 权限) |
| DeepSeek API Key | 在 platform.deepseek.com 注册获取 |
| n8n | Docker 部署,版本 1.20+ |
| 基础知识 | JSON 数据结构、HTTP API 调用基本概念 |
预计完成时间:90 分钟
整体架构
系统的数据流转路径如下:
飞书多维表格(数据录入)→ 飞书 Webhook → n8n 工作流 → DeepSeek API(AI评审)→ 回写多维表格
各环节职责说明:
- 飞书多维表格:作为数据的入口和展示层,测试人员在此提交用例,评审结果也在此展示
- 飞书 Webhook:当评审状态变更时,自动将数据推送到外部系统
- n8n 工作流:承担编排角色,接收 Webhook、组装 Prompt、调用 API、解析结果
- DeepSeek API:执行实际的 AI 评审逻辑,返回评分和修改建议
- 飞书 Open API:将评审结果写回多维表格的对应记录
第 1 步:设计评审多维表格
我们以测试用例评审为核心场景,设计一张包含完整评审链路的多维表格。
表格字段配置
在飞书中创建一张新的多维表格,命名为「测试用例评审中心」,添加以下字段:
| 字段名称 | 字段类型 | 配置说明 |
|---|---|---|
| 用例编号 | 自动编号 | 前缀设为 TC-,起始值 001,自动递增 |
| 用例标题 | 单行文本 | 必填,限制 100 字符 |
| 所属模块 | 单选 | 选项:用户管理 / 订单系统 / 支付模块 / 数据报表 |
| 优先级 | 单选 | 选项:P0-阻塞 / P1-严重 / P2-一般 / P3-轻微 |
| 前置条件 | 多行文本 | 描述执行用例前需要满足的条件 |
| 测试步骤 | 多行文本 | 按编号列出每一步操作 |
| 预期结果 | 多行文本 | 每个步骤对应的预期输出 |
| 提交人 | 人员 | 关联飞书通讯录 |
| 提交时间 | 创建时间 | 自动记录 |
| AI评审得分 | 数字 | 范围 0-100,小数位数 0 |
| AI评审意见 | 多行文本 | AI 返回的结构化评审反馈 |
| 评审状态 | 单选 | 选项:待评审 / 已评审 / 需修改,默认值「待评审」 |
| 评审时间 | 日期时间 | 记录 AI 评审完成的时间 |
视图配置建议
创建三个筛选视图方便不同角色使用:
- 待评审视图:筛选「评审状态 = 待评审」,按提交时间升序排列
- 需修改视图:筛选「评审状态 = 需修改」,按 AI评审得分 升序排列
- 全部记录视图:不设筛选,展示所有记录的完整信息
✅ 预期结果:多维表格创建完成,包含上述所有字段,手动添加一条测试数据确认字段类型正确
第 2 步:配置飞书 Webhook 触发
我们需要让多维表格在数据状态变更时,自动通知 n8n 开始评审流程。
2.1 创建飞书自动化流程
- 打开多维表格,点击右上角的「自动化」按钮
- 选择「创建自动化流程」
- 配置触发条件:
- 触发器类型:当记录满足指定条件时
- 监听字段:「评审状态」
- 触发条件:「评审状态」等于「待评审」
2.2 配置 Webhook 动作
在触发条件下方添加动作节点:
- 动作类型:发送 HTTP 请求
- 请求方法:
POST - 请求 URL:
https://your-n8n-domain.com/webhook/feishu-review - Headers:
{
"Content-Type": "application/json"
}
- Body 配置(使用飞书变量插值):
{
"record_id": "{记录ID}",
"table_id": "{表格ID}",
"app_token": "{多维表格APP Token}",
"data": {
"title": "{用例标题}",
"module": "{所属模块}",
"priority": "{优先级}",
"precondition": "{前置条件}",
"steps": "{测试步骤}",
"expected_result": "{预期结果}",
"submitter": "{提交人}"
}
}
2.3 获取多维表格标识
你需要从多维表格 URL 中提取两个关键参数:
- app_token:URL 中
https://xxx.feishu.cn/base/后面的字符串 - table_id:URL 中
table=后面的字符串
将这两个值填入 Webhook Body 的对应位置。
✅ 预期结果:在多维表格中新增一条记录并将评审状态设为「待评审」后,n8n 的 Webhook 节点能收到完整的 POST 请求
第 3 步:创建 n8n 评审工作流
这是整个系统的核心,n8n 负责接收数据、调用 DeepSeek、解析结果。
3.1 创建 Webhook 触发节点
在 n8n 中新建工作流,添加 Webhook 节点:
- HTTP Method:
POST - Path:
feishu-review - Authentication:None(生产环境建议加签名验证)
- Response Mode:
When Last Node Finishes
3.2 数据解析节点
添加 Set 节点,提取 Webhook 传入的数据:
{
"record_id": "{{ $json.body.record_id }}",
"table_id": "{{ $json.body.table_id }}",
"app_token": "{{ $json.body.app_token }}",
"title": "{{ $json.body.data.title }}",
"module": "{{ $json.body.data.module }}",
"priority": "{{ $json.body.data.priority }}",
"precondition": "{{ $json.body.data.precondition }}",
"steps": "{{ $json.body.data.steps }}",
"expected_result": "{{ $json.body.data.expected_result }}"
}
3.3 调用 DeepSeek API 节点
添加 HTTP Request 节点,配置如下:
- Method:
POST - URL:
https://api.deepseek.com/v1/chat/completions - Authentication:选择「Header Auth」
- Name:
Authorization - Value:
Bearer YOUR_DEEPSEEK_API_KEY
- Name:
- Headers:
Content-Type: application/json - Body(JSON):
{
"model": "deepseek-chat",
"temperature": 0.3,
"messages": [
{
"role": "system",
"content": "你是一名资深的软件测试专家,负责评审测试用例的质量。你需要根据评审标准对用例进行打分(0-100分)并给出具体的修改建议。请严格按照 JSON 格式返回结果。"
},
{
"role": "user",
"content": "请评审以下测试用例:\n\n【用例标题】{{ $json.title }}\n【所属模块】{{ $json.module }}\n【优先级】{{ $json.priority }}\n【前置条件】{{ $json.precondition }}\n【测试步骤】{{ $json.steps }}\n【预期结果】{{ $json.expected_result }}\n\n评审标准:\n1. 完整性(25分):前置条件是否清晰、步骤是否完整、预期结果是否明确\n2. 可执行性(25分):步骤描述是否具体可操作,是否有歧义\n3. 覆盖度(25分):是否覆盖了正向场景、异常场景、边界值\n4. 规范性(25分):命名是否规范、格式是否统一、优先级是否合理\n\n请按以下 JSON 格式返回:\n{\"score\": 85, \"details\": {\"completeness\": {\"score\": 22, \"feedback\": \"...\"}, \"executability\": {\"score\": 20, \"feedback\": \"...\"}, \"coverage\": {\"score\": 23, \"feedback\": \"...\"}, \"standardization\": {\"score\": 20, \"feedback\": \"...\"}}, \"summary\": \"总体评价...\", \"suggestions\": [\"建议1\", \"建议2\"]}"
}
]
}
3.4 解析 AI 返回结果
添加 Function 节点,解析 DeepSeek 返回的 JSON:
const response = $input.first().json;
const content = response.choices[0].message.content;
// 提取 JSON 部分(处理可能的 markdown 包裹)
let jsonStr = content;
const jsonMatch = content.match(/```json\s*([\s\S]*?)\s*```/);
if (jsonMatch) {
jsonStr = jsonMatch[1];
}
const result = JSON.parse(jsonStr);
// 格式化评审意见为可读文本
const feedback = `📊 总分:${result.score}/100
📋 分项得分:
• 完整性:${result.details.completeness.score}/25 - ${result.details.completeness.feedback}
• 可执行性:${result.details.executability.score}/25 - ${result.details.executability.feedback}
• 覆盖度:${result.details.coverage.score}/25 - ${result.details.coverage.feedback}
• 规范性:${result.details.standardization.score}/25 - ${result.details.standardization.feedback}
💡 总体评价:${result.summary}
🔧 修改建议:
${result.suggestions.map((s, i) => `${i + 1}. ${s}`).join('\n')}`;
return [{
json: {
score: result.score,
feedback: feedback,
status: result.score >= 70 ? '已评审' : '需修改',
record_id: $('Set').first().json.record_id,
table_id: $('Set').first().json.table_id,
app_token: $('Set').first().json.app_token
}
}];
这段代码将 AI 返回的结构化 JSON 转换为易读的评审报告,并根据得分自动决定评审状态——70 分以上标记为「已评审」,低于 70 分标记为「需修改」。
✅ 预期结果:n8n 工作流能接收 Webhook 数据、调用 DeepSeek API、返回包含评审得分和格式化意见的结构化结果
第 4 步:回写评审结果到多维表格
评审完成后,需要将结果自动写回飞书多维表格。这需要通过飞书 Open API 实现。
4.1 获取飞书 Access Token
添加 HTTP Request 节点,获取 tenant_access_token:
- Method:
POST - URL:
https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal - Body:
{
"app_id": "YOUR_FEISHU_APP_ID",
"app_secret": "YOUR_FEISHU_APP_SECRET"
}
你需要在飞书开放平台创建一个企业自建应用,并为其开通以下权限:
bitable:app— 读写多维表格bitable:app:readonly— 读取多维表格(备用)
4.2 更新多维表格记录
添加另一个 HTTP Request 节点,将评审结果写回:
- Method:
PUT - URL:
https://open.feishu.cn/open-apis/bitable/v1/apps/{{ $json.app_token }}/tables/{{ $json.table_id }}/records/{{ $json.record_id }} - Headers:
Authorization:Bearer {{ $('获取Token').first().json.tenant_access_token }}Content-Type:application/json
- Body:
{
"fields": {
"AI评审得分": {{ $json.score }},
"AI评审意见": "{{ $json.feedback }}",
"评审状态": "{{ $json.status }}",
"评审时间": {{ Date.now() }}
}
}
4.3 添加错误处理
在工作流中添加 Error Trigger 节点,当任何环节失败时发送飞书消息通知:
- 添加 Error Trigger 节点
- 连接一个 HTTP Request 节点,调用飞书机器人 Webhook
- 发送包含错误信息和记录 ID 的告警消息
这样当 API 调用失败、JSON 解析出错时,相关人员可以第一时间收到通知。
✅ 预期结果:评审得分和意见自动填入多维表格对应字段,评审状态根据得分自动更新为「已评审」或「需修改」
第 5 步:高级场景扩展
同一套架构只需替换 Prompt 和表格结构,即可适配不同业务场景。
场景 A:合同条款核查
表格字段调整:将测试用例相关字段替换为合同字段(合同编号、甲方、乙方、合同金额、核心条款、附加条款等)。
Prompt 模板:
你是一名资深法务专家,请审查以下合同条款的合规性和风险点。
【合同类型】{contract_type}
【甲方】{party_a}
【乙方】{party_b}
【合同金额】{amount}
【核心条款】{core_terms}
【附加条款】{additional_terms}
审查维度:
1. 条款完整性(25分):是否包含标的、价款、履行期限、违约责任等必要条款
2. 法律合规性(25分):是否违反现行法律法规强制性规定
3. 风险控制(25分):是否存在不对等条款、模糊表述、责任缺失
4. 格式规范(25分):条款编号、引用是否准确,表述是否专业
返回 JSON:{"score": 80, "risk_level": "中", "issues": [...], "suggestions": [...]}
场景 B:文档质量评分
适用范围:产品需求文档、技术方案、API 文档等。
Prompt 模板:
你是一名技术文档评审专家,请评估以下文档的质量。
【文档标题】{doc_title}
【文档类型】{doc_type}
【目标读者】{audience}
【文档内容】{content}
评估维度:
1. 结构清晰度(20分):层级是否合理、逻辑是否连贯
2. 内容完整性(20分):关键信息是否遗漏
3. 技术准确性(20分):术语使用是否准确、描述是否正确
4. 可读性(20分):表述是否简洁易懂、是否有冗余
5. 规范性(20分):是否符合团队文档规范
返回 JSON:{"score": 75, "details": {...}, "summary": "...", "improvements": [...]}
在 n8n 中,可以通过 Switch 节点根据表格来源或文档类型自动路由到不同的 Prompt 模板,实现一个工作流支持多种评审场景。
评审 Prompt 工程最佳实践
Prompt 的质量直接决定评审结果的可靠性。以下是经过实践验证的设计原则:
核心原则
1. 角色锚定:明确 AI 的专业身份,例如「资深测试工程师」「法务合规专家」,这会显著影响输出质量。
2. 评分量化:每个维度给出明确的分值区间,避免 AI 给出模糊的「良好」「一般」等描述。
3. 强制 JSON 输出:在 Prompt 中提供精确的 JSON Schema 示例,并在 system message 中强调格式要求。配合 temperature: 0.3 降低随机性。
4. 提供反面案例:告诉 AI 什么是不合格的,例如:
以下是常见的低质量测试用例特征(应扣分):
- 测试步骤只写"点击提交按钮",缺少具体的输入数据
- 预期结果只写"成功",未描述具体的成功标志
- 前置条件为空或写"无"
- 未考虑异常场景和边界值
5. 分层评分模板:
评分等级参考:
- 90-100:优秀,可直接纳入用例库
- 70-89:合格,存在小问题但不影响执行
- 50-69:需修改,存在明显缺陷
- 0-49:不合格,需要重写
常见问题
DeepSeek API 返回的 JSON 格式不正确怎么办?
这是最常见的问题。解决方案有三层:
- Prompt 层面:在 system message 中加入「你必须且只能返回 JSON,不要包含任何其他文字」
- 解析层面:在 Function 节点中使用正则提取 JSON 部分(代码已在第 3 步给出)
- 兜底层面:添加 Try-Catch 逻辑,解析失败时将原始文本存入评审意见字段,状态标记为「需修改」
Webhook 触发后 n8n 没有收到请求?
排查步骤:
- 确认 n8n 的 Webhook 节点处于「监听」状态(节点显示 Waiting for Webhook call)
- 检查飞书自动化流程的执行日志,确认 HTTP 请求是否成功
- 确认 n8n 服务的域名和端口可从外网访问
- 如使用内网部署,需要通过 ngrok 或 frp 做内网穿透
飞书 Open API 返回 403 权限不足?
- 检查应用是否已开通
bitable:app权限 - 确认应用已发布(草稿状态的应用无法调用 API)
- 检查 app_token 对应的多维表格是否已授权给该应用(多维表格设置 → 高级设置 → 添加应用)
评审速度太慢怎么优化?
- 使用
deepseek-chat模型而非推理模型,响应更快 - 控制 Prompt 长度,只传入必要的字段信息
- 设置合理的
max_tokens(建议 1024),避免生成过长的响应 - 在 n8n 中开启工作流的并发执行,同时处理多条评审任务
下一步扩展
当基础评审引擎运行稳定后,可以考虑以下方向的深入优化:
- 评审知识库:将历史高分用例存入向量数据库,让 AI 在评审时参考优秀范例,提升评审的针对性
- 批量评审模式:支持一次性提交多条记录,通过 n8n 的 SplitInBatches 节点逐条处理,适合用例迁移和批量导入场景
- 评审趋势看板:在多维表格中创建仪表盘视图,统计各模块的平均得分、常见问题分布、评审通过率等指标
- 多轮评审:当用例修改后重新提交评审,AI 对比前后版本差异,验证修改是否到位
- 与 CI/CD 集成:将评审通过作为代码合并的前置条件,评审得分低于阈值的用例自动阻断提测流程