AI+飞书:搭建智能日报助手,自动收集整理团队工作汇报
还在为每天催收团队成员日报而头疼吗?试试用AI+飞书,30分钟搭建智能日报系统,让机器人替你完成90%的催收、收集、整理工作。
引言:团队管理者的日报痛点
如果你是中小企业的管理者,每天可能要面对这样的场景:
- 催收困难
:群里@所有人,总有几个成员“忘记”提交日报 - 格式混乱
:有人用文字,有人截图,还有人直接发语音 - 整理耗时
:手动汇总10人团队的工作进展,至少要花30分钟 - 分析困难
:想了解本周整体进度?得自己整理数据、画图表 - 反馈延迟
:等到周会上才发现某个项目已经卡了一周
更痛苦的是:这些重复性工作每天都要做,但价值感极低——你本可以用这些时间思考战略、谈客户、优化业务流程。
好消息是:飞书开放平台 + 基础编程能力,就能让你搭建一套“智能日报助手”,实现:
- 自动提醒
:每天定时催收日报,机器人比你还准时 - 标准化收集
:统一格式,结构化数据,方便后续分析 - 智能整理
:自动汇总、分类、提取关键词 - 可视化看板
:团队进展一目了然 - 个性化反馈
:基于日报内容提供改进建议
最重要的是:不需要专业开发团队,只要你了解基础的API概念,就能在30分钟内完成搭建。
下面,我将用最直白的语言,手把手教你如何实现。
第一部分:飞书开放平台快速入门指南
1.1 飞书开放平台是什么?
简单说,就是飞书官方提供的“连接器”,允许你把外部系统(比如自己写的程序)连接到飞书内部,实现自动化操作。
举个例子:
-
你写的程序 → 通过飞书开放平台 → 向某个飞书群发消息 -
飞书群里的消息 → 通过飞书开放平台 → 传给你的程序处理
核心概念大白话解释:
- 应用(App)
:可以理解成你在飞书里“注册”的一个机器人账号,它有自己独立的身份 - App ID / App Secret
:这个机器人的“身份证号”和“密码”,用于证明“我是我” - API接口
:飞书开放平台提供的各种“功能按钮”,比如“发消息”、“读消息”、“创建表格”等 - 权限
:你这个机器人能做什么,需要管理员授权,比如“读取群消息”、“发送消息”等
1.2 第一步:创建你的第一个飞书应用
操作路径(跟着截图做,5分钟搞定):
- 登录开发者后台
:打开浏览器,访问 https://open.feishu.cn/app - 创建应用
:点击“创建企业自建应用”,填写基本信息 -
应用名称:建议用“智能日报助手_你的名字” -
应用描述:可选填 -
应用图标:选个你喜欢的(后续可以改) - 记住关键信息
:创建成功后,系统会生成App ID和App Secret,保存好它们
1.3 第二步:开通必要的权限
你的机器人需要“权力”才能工作,主要涉及两大类:
- 机器人权限
:允许你的应用以“机器人”身份在群里发言 - 消息权限
:读取群消息、发送消息、@成员等
具体操作:
-
进入应用详情页 → 左侧“权限管理” -
搜索并开通以下权限: im:message
(消息相关权限) im:resource
(资源相关) -
根据实际需求,可能还需要 contact:user(读取用户信息)
重要提醒:开通权限后,必须点击“发布版本”,等待管理员审批(如果是企业自建应用,通常管理员就是你本人)。
1.4 第三步:获取访问凭证(Access Token)
这是一个技术步骤,但理解后很简单:
- 问题
:每次你的程序想调用飞书API时,都需要证明“我是合法的那个机器人” - 解决方案
:先用App ID和App Secret换一个“临时通行证”(Access Token) - 有效期
:2小时(所以你的程序需要定期刷新)
代码示例(Python):
import requests# 你的应用凭证APP_ID = "你的App ID"APP_SECRET = "你的App Secret"# 获取tenant_access_tokendef get_access_token():url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"headers = {"Content-Type": "application/json; charset=utf-8"}data = {"app_id": APP_ID,"app_secret": APP_SECRET}response = requests.post(url, headers=headers, json=data)return response.json().get("tenant_access_token")# 后续所有API调用都带上这个tokenaccess_token = get_access_token()
说明:这段代码可以保存为token_manager.py,后续所有程序都会用到
第二部分:智能日报系统完整设计与配置
2.1 系统架构设计(先理解全貌)
整个系统的工作流程如下:
plaintext成员提交日报 → 飞书群消息 → 你的程序监听并处理 → 存入多维表格 → 定时生成汇总报告 → 推送至管理群
各模块职责:
- 消息监听模块
:实时接收群里的日报消息 - 数据解析模块
:从消息中提取结构化信息(今日完成、明日计划、问题等) - 存储模块
:将解析后的数据存入飞书多维表格 - 分析模块
:对历史数据进行统计分析 - 推送模块
:生成可视化报告并定时推送
2.2 创建日报收集群与机器人
操作步骤:
- 建立专用群
-
:在飞书中创建“团队日报提交群”,邀请所有成员加入 - 添加你的机器人:
-
应用详情页 → 左侧“凭证与基础信息” → 复制“机器人名称” -
在群里点击“添加成员/机器人” → 粘贴机器人名称 → 添加成功 - 设置群规
(通过机器人自动发送): # 发送群规说明def send_group_rules(chat_id):url = f"https://open.feishu.cn/open-apis/im/v1/messages"headers = {"Authorization": f"Bearer {get_access_token()}","Content-Type": "application/json"}content = {"text": """📋 **团队日报提交规范**请按以下格式提交日报:【今日完成】1. 任务1(完成度%)2. 任务2(完成度%)【明日计划】1. 计划12. 计划2【问题/风险】(如有问题请说明)【其他】(可选)示例:今日完成:1. 完成产品需求文档初稿(80%)2. 与设计部门对接UI方案(100%)明日计划:1. 完善需求文档评审2. 开始技术方案设计问题/风险:设计资源紧张,可能影响进度"""}data = {"receive_id": chat_id,"msg_type": "text","content": json.dumps(content)}requests.post(url, headers=headers, json=data)
2.3 设计飞书多维表格结构
这是系统的“数据库”,在飞书里创建:
- 新建多维表格:在飞书文档中点击“+” → “多维表格” → 从空白创建
- 设计字段结构:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 获取表格关键信息
(后续编程要用到): app_token
:表格所属应用的token table_id
:表格的ID获取方法:打开表格 → 右上角“…” → “获取app_token和table_id”
2.4 设置自动化提醒规则
使用飞书“机器人指令”功能(零代码方案):
-
打开飞书机器人助手(在飞书搜索框输入“飞书机器人助手”) -
点击“我的指令” → “新建机器人指令” - 设置触发器
:选择“定时触发” → 每天下午17:30 - 设置操作
: -
发送消息到“团队日报提交群” -
消息内容: @所有人 请提交今日日报,格式见群规 - 保存并启用
高级方案(编程实现,更灵活):
import scheduleimport timedef daily_reminder():# 发送提醒消息chat_id = "你的群聊ID"send_message(chat_id, "📢 日报提醒:请在今天18:00前提交日报")# 设置定时任务:每天17:30执行schedule.every().day.at("17:30").do(daily_reminder)# 保持程序运行while True:schedule.run_pending()time.sleep(60)
第三部分:数据收集、分析与可视化实现
3.1 消息监听与解析程序
核心代码(监听群消息):
import jsonimport requestsfrom flask import Flask, request, jsonifyapp = Flask(__name__)# 验证飞书回调(必须,否则无法接收消息)@app.route('/webhook', methods=['POST'])def webhook():# 1. 验证请求是否来自飞书(安全校验)verification_token = request.headers.get('X-Lark-Verification-Token')timestamp = request.headers.get('X-Lark-Request-Timestamp')signature = request.headers.get('X-Lark-Signature')# 你的Verification Token(在应用的事件订阅页面查看)MY_VERIFICATION_TOKEN = "你的Verification Token"if verification_token != MY_VERIFICATION_TOKEN:return jsonify({"error": "Invalid token"}), 403# 2. 获取事件数据data = request.jsonevent_type = data.get("header", {}).get("event_type")# 3. 处理接收消息事件if event_type == "im.message.receive_v1":event_data = data.get("event", {})message = event_data.get("message", {})message_type = message.get("message_type")# 只处理文本消息if message_type == "text":content = json.loads(message.get("content", "{}"))text = content.get("text", "")# 解析日报内容parsed_data = parse_daily_report(text)# 存入多维表格save_to_feishu_table(parsed_data)# 自动回复确认reply_message(message.get("message_id"), "✅ 日报已收到,正在处理...")return jsonify({"ok": True}), 200def parse_daily_report(text):"""解析日报文本,提取结构化信息"""# 简单示例:按【今日完成】等标签分割sections = {"今日完成": "","明日计划": "","问题/风险": ""}current_section = Nonefor line in text.split('\n'):line = line.strip()if not line:continue# 判断是否是章节标题for section in sections:if section in line:current_section = sectionbreakelse:if current_section:sections[current_section] += line + "\n"# 统计条目数today_items = len([x for x in sections["今日完成"].split('\n') if x.strip()])tomorrow_items = len([x for x in sections["明日计划"].split('\n') if x.strip()])# 提取关键词(简单实现)keywords = extract_keywords(sections["今日完成"] + sections["问题/风险"])return {"today_completed": sections["今日完成"],"today_item_count": today_items,"tomorrow_plan": sections["明日计划"],"tomorrow_item_count": tomorrow_items,"issues": sections["问题/风险"],"keywords": keywords}
3.2 存储到飞书多维表格
import jsonimport requestsfrom flask import Flask, request, jsonifyapp = Flask(__name__)# 验证飞书回调(必须,否则无法接收消息)@app.route('/webhook', methods=['POST'])def webhook():# 1. 验证请求是否来自飞书(安全校验)verification_token = request.headers.get('X-Lark-Verification-Token')timestamp = request.headers.get('X-Lark-Request-Timestamp')signature = request.headers.get('X-Lark-Signature')# 你的Verification Token(在应用的事件订阅页面查看)MY_VERIFICATION_TOKEN = "你的Verification Token"if verification_token != MY_VERIFICATION_TOKEN:return jsonify({"error": "Invalid token"}), 403# 2. 获取事件数据data = request.jsonevent_type = data.get("header", {}).get("event_type")# 3. 处理接收消息事件if event_type == "im.message.receive_v1":event_data = data.get("event", {})message = event_data.get("message", {})message_type = message.get("message_type")# 只处理文本消息if message_type == "text":content = json.loads(message.get("content", "{}"))text = content.get("text", "")# 解析日报内容parsed_data = parse_daily_report(text)# 存入多维表格save_to_feishu_table(parsed_data)# 自动回复确认reply_message(message.get("message_id"), "✅ 日报已收到,正在处理...")return jsonify({"ok": True}), 200def parse_daily_report(text):"""解析日报文本,提取结构化信息"""# 简单示例:按【今日完成】等标签分割sections = {"今日完成": "","明日计划": "","问题/风险": ""}current_section = Nonefor line in text.split('\n'):line = line.strip()if not line:continue# 判断是否是章节标题for section in sections:if section in line:current_section = sectionbreakelse:if current_section:sections[current_section] += line + "\n"# 统计条目数today_items = len([x for x in sections["今日完成"].split('\n') if x.strip()])tomorrow_items = len([x for x in sections["明日计划"].split('\n') if x.strip()])# 提取关键词(简单实现)keywords = extract_keywords(sections["今日完成"] + sections["问题/风险"])return {"today_completed": sections["今日完成"],"today_item_count": today_items,"tomorrow_plan": sections["明日计划"],"tomorrow_item_count": tomorrow_items,"issues": sections["问题/风险"],"keywords": keywords}
3.3 数据分析与可视化报告
每周自动生成汇总报告:
def generate_weekly_report():"""生成本周团队工作汇总报告"""# 1. 查询本周数据start_date = "2024-03-25" # 周一end_date = "2024-03-31" # 周日records = query_table_records(start_date, end_date)# 2. 计算关键指标total_reports = len(records)avg_completion_items = sum(r["完成条目数"] for r in records) / total_reportstotal_issues = sum(1 for r in records if r["问题/风险"].strip())# 3. 生成可视化数据daily_completion = []for day in range(7):date = calculate_date(start_date, day)day_records = [r for r in records if r["提交日期"] == date]completion = sum(r["完成条目数"] for r in day_records)daily_completion.append(completion)# 4. 生成Markdown报告report = f"""# 📊 团队本周工作汇总报告({start_date} ~ {end_date})## 📈 核心数据- **提交日报人数**:{total_reports}人- **平均每日完成任务数**:{avg_completion_items:.1f}项- **问题反馈次数**:{total_issues}次## 📅 每日完成情况| 日期 | 完成任务总数 ||------|-------------|"""for i, count in enumerate(daily_completion):date = calculate_date(start_date, i)report += f"| {date} | {count}项 |\n"report += """## 🔍 本周高频关键词"""# 提取高频关键词all_keywords = []for r in records:all_keywords.extend(r["关键词"])from collections import Counterkeyword_counts = Counter(all_keywords)top_keywords = keyword_counts.most_common(5)for keyword, count in top_keywords:report += f"- **{keyword}**(出现{count}次)\n"report += """## 🎯 下周建议1. **重点关注**:本周进度较慢的项目需要提前介入2. **资源调整**:根据问题反馈情况,调整相关资源支持3. **效率提升**:对高频任务考虑自动化工具支持"""# 5. 发送报告到管理群send_report_to_management(report)return report
3.4 部署与运行
简单部署方案(使用云服务器):
-
准备环境:
-
# 安装Python和相关库sudo apt-get updatesudo apt-get install python3 python3-pippip3 install flask requests schedule -
上传代码:
-
将上面的所有Python文件上传到服务器 -
配置文件(包含App ID、Secret等敏感信息) -
启动服务:
# 运行主程序python3 main.py# 或者使用后台运行nohup python3 main.py > daily_report.log 2>&1 & -
设置开机自启(可选):
# 创建systemd服务sudo nano /etc/systemd/system/daily-report.service# 内容:[Unit]Description=Daily Report SystemAfter=network.target[Service]User=ubuntuWorkingDirectory=/path/to/your/codeExecStart=/usr/bin/python3 main.pyRestart=always[Install]WantedBy=multi-user.target# 启用服务sudo systemctl enable daily-report.servicesudo systemctl start daily-report.service
第四部分:实际应用案例与效果验证
4.1 案例背景:某科技公司产品研发团队
- 团队规模
:15人(产品经理2人,开发8人,测试3人,设计2人) - 原有日报流程
:每天18:00在群里手动提交,格式混乱 - 问题
:PM每天花45分钟整理日报,周报需要半天时间 - 实施目标
:自动化日报收集,自动生成周度汇总报告
4.2 实施步骤与时间投入
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 总计 | 完整搭建时间 | 100分钟 |
|
4.3 实施效果数据对比
实施前(手动模式):
- PM时间投入
:日报45分钟/天,周报3-4小时/周 - 提交准时率
:平均70%(经常需要反复催促) - 数据准确性
:人工整理容易出错,格式不一致 - 分析深度
:只能做基础统计,缺乏趋势分析
实施后(自动化模式):
- PM时间投入
:日报5分钟/天(仅查看报告),周报10分钟/周 - 提交准时率
:提升至95%(机器人定时提醒) - 数据准确性
:100%结构化,无人工转录错误 - 分析深度
:自动生成趋势图、关键词分析、问题聚类
量化收益:
- PM时间节省
:每周约8小时 → 每年节省400+小时 - 团队效率提升
:标准化格式减少理解成本,沟通效率提升30% - 管理决策优化
:数据驱动,实时了解团队状态
4.4 常见问题与解决方案
Q1:团队成员不按格式提交怎么办?
- 方案
:程序增加容错处理,识别多种常见格式 - 示例
:无论写“今日完成”还是“今天完成”,都能识别 - 长期
:通过培训+机器人自动纠正,培养良好习惯
Q2:日报内容涉及敏感信息怎么办?
- 方案
:飞书多维表格支持权限分级 -
普通成员:只能看到自己的日报 -
管理者:可以看到团队汇总数据 -
详细隐私数据:单独加密字段存储
Q3:服务器宕机或网络中断怎么办?
- 方案
:多重保障 -
本地备份:每天自动备份数据到本地 -
监控告警:程序异常时发送飞书告警 -
冗余部署:有条件可部署双机热备
第五部分:扩展功能建议
5.1 从日报到周报、月报的延伸
逻辑关系:
-
日报 → 每日工作记录 -
周报 → 自动汇总本周所有日报 + 补充整体进展 -
月报 → 整合四周周报 + KPI完成情况
实现方案:
def generate_weekly_report_auto():"""每周五自动生成周报"""# 1. 汇总本周日报数据# 2. 提取关键进展和问题# 3. 生成图文并茂的报告# 4. 发送到团队周会群
5.2 与项目管理系统集成
常见场景:
-
日报中提到“完成用户登录模块开发80%” -
自动同步到Jira/Tapd,更新对应任务进度 -
反向同步:项目任务状态变化,自动在日报中提醒
技术实现:
-
调用Jira/Tapd API -
建立任务名称与日报关键词映射关系
5.3 智能分析与预警
进阶功能:
- 进度预警
:某个任务连续3天进度无变化 → 自动@负责人+PM - 情绪分析
:从日报文本中分析成员工作状态 - 协作网络
:分析成员间的依赖关系和协作效率
代码示意:
def analyze_team_status(records):"""分析团队状态,识别潜在风险"""# 检查进度停滞任务stagnant_tasks = []for task in all_tasks:if task.progress_stagnant_for_days() >= 3:stagnant_tasks.append(task)# 发送预警if stagnant_tasks:send_alert(f"⚠️ 发现{len(stagnant_tasks)}个任务进度停滞超过3天")
5.4 移动端优化
使用飞书小程序:
-
创建日报提交小程序,更友好的提交界面 -
语音转文字功能,直接说工作内容 -
拍照上传工作成果截图
优势:
-
无需安装额外APP,在飞书内即可使用 -
与企业微信/钉钉相比,飞书开放平台更友好
结语:从工具使用者到创造者
通过这个项目,你不仅获得了一个智能日报系统,更重要的是:
1. 掌握了企业数字化改造的基本能力
-
理解API、Webhook等核心技术概念 -
学会将业务流程转化为自动化系统 -
具备快速验证、迭代优化的方法论
2. 建立了技术自信
-
原来“高大上”的自动化系统,自己也能搭建 -
从“工具使用者”升级为“工具创造者” -
为团队创造真实价值,提升管理影响力
3. 开启了AI应用探索之路
-
这是你接触企业级AI应用的第一个案例 -
同样的技术栈,可以扩展到: -
智能会议纪要系统 -
自动周报生成器 -
项目风险预警平台 -
团队效能分析工具
启动你的第一个自动化项目:
- 今天下午
:花15分钟创建飞书应用,体验开放平台界面 - 明天上午
:按本文步骤,完成基础版本搭建(预计1.5小时) - 本周内
:在团队内部小范围试点,收集反馈 - 下周开始
:根据实际需求,逐步扩展功能
最后提醒:技术是工具,目的是提升管理效率和团队幸福感。在实施过程中,多与团队沟通,找到最适合你们的平衡点。
所有代码示例均为简化版本,实际部署时需根据具体需求调整。如有技术问题,欢迎在评论区交流。
夜雨聆风