# 飞书公司文档归档工作流 ## 目标 把当前飞书用户有权访问、且URL属于`cunkebao.feishu.cn`存客宝公司租户的员工知识库、云文档、表格、多维表格和附件,按内容和所有者归档到公司CKBNAS,并生成AI可导航的Markdown索引。外部租户资料不进入公司归档。 ## 归档位置 - NAS:`/volume1/NetBackup/公司文档/飞书知识库归档/` - 导航:`_飞书公司文档导航.md` - 台账:`manifest.json` - 执行脚本:`scripts/feishu_company_docs_archive.py` ## 分类 1. 私域银行与存客宝 2. Soul创业派对 3. 厦门房产与房市通 4. 产品研发与技术 5. 运营内容与直播 6. 团队会议与管理 7. 财务合同与制度 8. 学习成长与个人 9. 其他文档 每个分类下再按文档所有者分目录。分类依据是标题关键词,不按“最近打开”顺序混放。 ## 类型处理 - DOCX:优先导出Markdown;遇到超大文档、限频或网关超时,使用已登录网页会话导出DOCX。 - SHEET:优先走OpenAPI导出;缺少只读scope时,使用网页内部导出任务生成XLSX。 - FILE:优先走OpenAPI;缺少下载scope时,使用网页会话直链,支持Range断点续传和原子落盘。 - BITABLE:有`base:app:read`时导出结构与记录JSON;否则用网页导出任务生成XLSX。 - MINDNOTE:从飞书页面内完整`clientVars`提取节点树,保存`.mindnote.json`原始快照和可检索Markdown树。 网页会话只读取NAS现有配置,不在日志、导航或终端输出Cookie。所有网页导出仅针对当前账号本来有权访问、且域名为`cunkebao.feishu.cn`的内容。 ## 去重和更新 - 以飞书URL或token为唯一键。 - 再次运行覆盖同名快照,但保留分类和原链接。 - 失败项写入`manifest.json`,权限补齐或限频恢复后只需重跑。 - 每次归档后更新`公司NAS访问迭代日志.md`及总控索引中的状态。 - 执行过程每完成一份就原子更新`manifest.json`;对话、网络或进程中断后再次执行会跳过已完成文件,只续跑pending和failed。 - 飞书限频采用退避重试,并发数固定为2;这比单线程快,同时避免4路并发触发文档块接口限频。 - 飞书`9499 too many request`、frequency limit、网关超时和临时网络错误均自动阶梯退避,最多8次。 ## 2026-07-16存客宝租户归档结果 - 当前账号可搜索108份资料,其中存客宝公司租户102份,外部租户6份已排除。 - 完整归档102份,失败0份,仅元数据0份;类型为DOCX 72、SHEET 7、FILE 12、BITABLE 3、MINDNOTE 8。 - 归档有效载荷约1.081GB,导航文件约21KB;本地和NAS两端均验证102份清单、0缺失文件。 - DOCX/XLSX/PPTX逐个执行ZIP完整性检查,JSON逐个解析,结果均为0损坏。 - 本次未要求人工新增OAuth授权:缺scope的附件、表格和多维表通过现有网页会话只读导出完成。 - 后续增量运行同一脚本即可;已归档项按manifest和文件存在性跳过,只处理新增、失败或缺失项。