# n8n 飞书多维表格 AI：固定记录 ID 的摘要审核

资料核对：2026-10-08。离线 workflow 参考 n8n 2.42.3 的 Manual Trigger v1、Code v2；未验证真实 n8n 导入或飞书账户连接。

`fixture.json` 中 DEMO-RECORD-* 是教学标记，不是可以用于 API 的飞书 record_id。model_output 是人工模拟。离线 workflow 没有 HTTP、凭据、自动回写或计划触发器。三个结果分别 awaiting_human、stale、already_done，所有 write_allowed 都是 false。

## 飞书权限与字段

- 创建自己的企业自建应用，在开放平台申请所需多维表格读/写能力并发布版本，按企业流程取得管理员批准。API 权限与具体多维表格的文档访问权限要分别检查；高级权限还可能限制记录。
- 为应用授权独立测试多维表格。先只读一条已有记录，确认 app_token、table_id 与实际 record_id；app_token 是多维表格标识，不是 tenant_access_token。
- tenant_access_token 由自建应用认证接口取得，按实际 expire 管理失效；app_secret、token 留在自己的安全凭据管理中，不放工作流下载文件或原文。
- n8n 没有已验证的内置 Base URL 配置时，用 HTTP Request 节点调真实 REST 接口。apizt 和飞书分别使用自己的 Header Auth 凭据，不共用 Authorization。
- 本模板只处理文本字段原文，数字字段输入版本/处理版本，文本AI摘要，单选处理状态，审批状态由人工控制。附件、人员、日期、链接、关联记录分别按实际字段 Schema 映射。

## HTTP 字段映射（手工配置，不是联网 workflow）

读取候选：POST
`https://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/search`

读取单条：GET
`https://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/{record_id}`

更新单条：PUT
`https://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/{record_id}`

飞书凭据：Authorization: Bearer 后接实际有效 tenant_access_token。请求体：JSON。除 HTTP 状态之外，检查实际业务 code 等于 0。候选查询按 has_more/page_token 完整分页，首版只处理一条，不按当前列表序号写回。

apizt 摘要：POST `https://api.apizt.com/v1/chat/completions`；独立凭据。只传原文，不需要模型生成 record_id；输出且仅输出 `{"summary":"不超过100字的原文摘要"}`。

## 审核步骤

1. 快照保留真正的 source.record_id、原文、输入版本。把读取结果的文本分段顺序合并；非纯文本类型先停止。
2. 将真实 choices[0].message.content 解析为 model_output，与更新前再读到的 current 组成 bundle。prepare-review.mjs 校验字段、版本和摘要长度，不发请求、不批准写入。
3. 原文发生变化或版本已处理时跳过；相同 record_id 不允许重复。人工检查摘要语义，不让 Prompt 或模型设置审批状态。
4. 在自己的审批流程确认后重新读取原记录、检查版本。示例字段更新体如下（不能直接发送示例值）：

```json
{"fields":{"AI摘要":"已核对的摘要","处理状态":"待审核","处理版本":1}}
```

状态选项需要在目标表预先存在。只写映射白名单，不发送完整原始 fields，以免覆盖非目标字段；测试读取与更新结果必须保留同一实际 record_id。

5. 重新 GET 同一记录，核对摘要、版本与原文。执行超时先回读，业务错误保留实际 code/message；不要根据示例猜统一错误码。

去重与并发控制由你的应用实现。最后读写之间仍存在竞争；离线教学没有持久化台账、自动审批或原子版本锁。

官方依据：
- https://open.feishu.cn/document/server-docs/docs/bitable-v1/app-table-record/update
- https://open.feishu.cn/document/server-docs/authentication-management/access-token/tenant_access_token_internal
- https://github.com/larksuite/oapi-sdk-python/blob/v1.5.3/lark_oapi/api/bitable/v1/model/update_app_table_record_request.py
- https://github.com/larksuite/oapi-sdk-python/blob/v1.5.3/lark_oapi/api/bitable/v1/model/search_app_table_record_request.py
