automation 难度: 专家级

飞书多维表格 + DeepSeek:构建自动化评审与业务逻辑处理引擎

深度解析如何通过飞书多维表格(Bitable)结合 DeepSeek API,实现测试用例自动评审、合同逻辑核查等高阶业务自动化场景。

你将获得什么

通过本教程,你将从零搭建一套完整的自动化评审引擎,具备以下能力:

  • 自动化评审闭环:提交数据到飞书多维表格后,DeepSeek 自动完成评审并将结果回填到对应字段
  • 多场景适配:同一套架构可以支撑测试用例评审、合同条款核查、文档质量检查等多种业务场景
  • 结构化评分体系:AI 返回量化评分(0-100)和结构化的修改建议,而非模糊的定性描述
  • 零人工干预:从数据提交到评审完成,全程无需人工操作

这不是一个概念验证,而是一个可以直接投入生产环境使用的工作流。

前置条件

项目要求
飞书账号企业版(需要自动化助手和 Open API 权限)
DeepSeek API Keyplatform.deepseek.com 注册获取
n8nDocker 部署,版本 1.20+
基础知识JSON 数据结构、HTTP API 调用基本概念

预计完成时间:90 分钟

整体架构

系统的数据流转路径如下:

飞书多维表格(数据录入)→ 飞书 Webhook → n8n 工作流 → DeepSeek API(AI评审)→ 回写多维表格

各环节职责说明

  1. 飞书多维表格:作为数据的入口和展示层,测试人员在此提交用例,评审结果也在此展示
  2. 飞书 Webhook:当评审状态变更时,自动将数据推送到外部系统
  3. n8n 工作流:承担编排角色,接收 Webhook、组装 Prompt、调用 API、解析结果
  4. DeepSeek API:执行实际的 AI 评审逻辑,返回评分和修改建议
  5. 飞书 Open API:将评审结果写回多维表格的对应记录

第 1 步:设计评审多维表格

我们以测试用例评审为核心场景,设计一张包含完整评审链路的多维表格。

表格字段配置

在飞书中创建一张新的多维表格,命名为「测试用例评审中心」,添加以下字段:

字段名称字段类型配置说明
用例编号自动编号前缀设为 TC-,起始值 001,自动递增
用例标题单行文本必填,限制 100 字符
所属模块单选选项:用户管理 / 订单系统 / 支付模块 / 数据报表
优先级单选选项:P0-阻塞 / P1-严重 / P2-一般 / P3-轻微
前置条件多行文本描述执行用例前需要满足的条件
测试步骤多行文本按编号列出每一步操作
预期结果多行文本每个步骤对应的预期输出
提交人人员关联飞书通讯录
提交时间创建时间自动记录
AI评审得分数字范围 0-100,小数位数 0
AI评审意见多行文本AI 返回的结构化评审反馈
评审状态单选选项:待评审 / 已评审 / 需修改,默认值「待评审」
评审时间日期时间记录 AI 评审完成的时间

视图配置建议

创建三个筛选视图方便不同角色使用:

  • 待评审视图:筛选「评审状态 = 待评审」,按提交时间升序排列
  • 需修改视图:筛选「评审状态 = 需修改」,按 AI评审得分 升序排列
  • 全部记录视图:不设筛选,展示所有记录的完整信息

✅ 预期结果:多维表格创建完成,包含上述所有字段,手动添加一条测试数据确认字段类型正确

第 2 步:配置飞书 Webhook 触发

我们需要让多维表格在数据状态变更时,自动通知 n8n 开始评审流程。

2.1 创建飞书自动化流程

  1. 打开多维表格,点击右上角的「自动化」按钮
  2. 选择「创建自动化流程」
  3. 配置触发条件:
    • 触发器类型:当记录满足指定条件时
    • 监听字段:「评审状态」
    • 触发条件:「评审状态」等于「待评审」

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
  • 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:
    • AuthorizationBearer {{ $('获取Token').first().json.tenant_access_token }}
    • Content-Typeapplication/json
  • Body:
{
  "fields": {
    "AI评审得分": {{ $json.score }},
    "AI评审意见": "{{ $json.feedback }}",
    "评审状态": "{{ $json.status }}",
    "评审时间": {{ Date.now() }}
  }
}

4.3 添加错误处理

在工作流中添加 Error Trigger 节点,当任何环节失败时发送飞书消息通知:

  1. 添加 Error Trigger 节点
  2. 连接一个 HTTP Request 节点,调用飞书机器人 Webhook
  3. 发送包含错误信息和记录 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 格式不正确怎么办?

这是最常见的问题。解决方案有三层:

  1. Prompt 层面:在 system message 中加入「你必须且只能返回 JSON,不要包含任何其他文字」
  2. 解析层面:在 Function 节点中使用正则提取 JSON 部分(代码已在第 3 步给出)
  3. 兜底层面:添加 Try-Catch 逻辑,解析失败时将原始文本存入评审意见字段,状态标记为「需修改」

Webhook 触发后 n8n 没有收到请求?

排查步骤:

  1. 确认 n8n 的 Webhook 节点处于「监听」状态(节点显示 Waiting for Webhook call)
  2. 检查飞书自动化流程的执行日志,确认 HTTP 请求是否成功
  3. 确认 n8n 服务的域名和端口可从外网访问
  4. 如使用内网部署,需要通过 ngrok 或 frp 做内网穿透

飞书 Open API 返回 403 权限不足?

  1. 检查应用是否已开通 bitable:app 权限
  2. 确认应用已发布(草稿状态的应用无法调用 API)
  3. 检查 app_token 对应的多维表格是否已授权给该应用(多维表格设置 → 高级设置 → 添加应用)

评审速度太慢怎么优化?

  1. 使用 deepseek-chat 模型而非推理模型,响应更快
  2. 控制 Prompt 长度,只传入必要的字段信息
  3. 设置合理的 max_tokens(建议 1024),避免生成过长的响应
  4. 在 n8n 中开启工作流的并发执行,同时处理多条评审任务

下一步扩展

当基础评审引擎运行稳定后,可以考虑以下方向的深入优化:

  • 评审知识库:将历史高分用例存入向量数据库,让 AI 在评审时参考优秀范例,提升评审的针对性
  • 批量评审模式:支持一次性提交多条记录,通过 n8n 的 SplitInBatches 节点逐条处理,适合用例迁移和批量导入场景
  • 评审趋势看板:在多维表格中创建仪表盘视图,统计各模块的平均得分、常见问题分布、评审通过率等指标
  • 多轮评审:当用例修改后重新提交评审,AI 对比前后版本差异,验证修改是否到位
  • 与 CI/CD 集成:将评审通过作为代码合并的前置条件,评审得分低于阈值的用例自动阻断提测流程
最后更新: 2026/3/10
#飞书 #Bitable #DeepSeek #自动化评审