| name | lark-worklog-query |
| description | 领导即席查询。当领导/组长在飞书里问"张三这周在干啥/CRM-V2 进度如何/谁这周加班最多/李四那个 bug 修完没/项目 A 谁投入最多"时触发。把自然语言翻译成 base 查询,聚合 worklogs/tasks/projects/members 数据,用一段话 + 卡片回复。支持查人、查项目、查进度、查工时、查卡点五个维度。 |
lark-worklog-query — 领导即席查询
领导在对话框里直接问,AI 从多维表里捞答案。
何时触发
- 任何人在群里/私聊问工作进度类问题:
- "张三这周在干啥"
- "CRM-V2 现在啥进度"
- "谁这周加班最多"
- "李四那个登录 bug 修完没"
- "王五这周工时多少"
- "项目 A 谁投入最多"
- "这个月有哪些任务延期了"
- "孙七在哪个项目上"
- 提问者必须是被查询人的 leader 或更高(权限校验)
依赖
lark-cli base:查 worklogs / tasks / projects / members
lark-cli contact:识别提问者身份,做权限校验
lark-cli im:回消息(支持卡片)
查询能力(5 个维度)
1. 查人(Who)
问题示例:
- "张三这周在干啥"
- "李四今天填日报了吗"
- "王五这周加班几天"
AI 翻译:
{
"type": "member_report",
"member": "张三",
"time_range": "this_week",
"group_by": "project"
}
回复示例:
👤 张三 · 本周(8/10-8/14)
总工时 40h,主要在干 CRM-V2(22h,55%)
按项目:
• CRM-V2 22h ████████░░ 登录重构 90%
• APP-V3 10h ████░░░░░░ 推送接入 40%
• 日常 8h ███░░░░░░░ 会议/面试
任务进度:
✅ 客户列表 bug 已上线
🚧 登录重构 60→90%
🚧 推送通知 20→40%
⚠️ Android 推送通道卡了 5 天
明天计划:完成登录联调(T001 明天到期)
2. 查项目(What)
问题示例:
- "CRM-V2 现在啥进度"
- "APP-V3 这周谁在干"
- "数据中台这个月投入了多少"
回复示例:
📦 CRM-V2 客户管理系统改版
整体进度 70%(月初 40%,↑30)
本周投入 22h:张三 12h / 王五 6h / 孙七 4h
里程碑:
✅ 客户列表 bug 修复(8/12 上线)
🟡 登录模块联调(计划 8/15,预计延到 8/18)
⏳ 客户详情页(等设计稿)
风险:
🔴 登录模块延期 3 天,SSO 接口比预期复杂
🟡 孙七的设计稿预计明天交,已经压了前端 2 天
下一个关键节点:8/18 登录提测
3. 查进度(How)
问题示例:
- "T001 那个登录任务怎么样了"
- "李四那个 bug 修完没"
- "哪些任务本周到期但还没做完"
回复示例:
🎯 T001 登录模块重构
负责人:张三
项目:CRM-V2
状态:🟡 进行中
进度:90%(上周 60%)
已用工时:28h(预估 16h,超了 12h)
截止:2026-08-15(明天)
最近 3 天工作:
• 8/13 对接 SSO 接口 4h
• 8/12 修复 token 并发 bug 4h
• 8/11 写单元测试 3h
卡点:SSO 文档和实际不一致,走了弯路
预计完成:8/18(延期 3 天)
4. 查工时统计(How much)
问题示例:
- "谁这周加班最多"
- "研发组这周总工时多少"
- "王五这个月休了几天假"
- "CRM-V2 到目前为止一共烧了多少工时"
回复示例:
⏱️ 研发组 · 本周工时榜
1. 张三 44h 🔥 加班 2 天
2. 王五 42h 🔥 加班 1 天
3. 李四 40h
4. 孙七 38h
5. 赵六 36h
平均 40h,总投入 200h
其中 CRM-V2 占 55%(110h),APP-V3 占 25%(50h)
⚠️ 张三连续加班 2 天,建议关注
5. 查风险/卡点(Risk)
问题示例:
- "现在有哪些阻塞任务"
- "本月有哪些延期的"
- "有什么需要我协调的吗"
回复示例:
⚠️ 当前阻塞/风险
🔴 高优
1. T004 Android 推送通道
- 卡了 5 天,等运维审批
- 影响 APP-V3 8/30 灰度
- 负责人:张三
🟡 中优
2. T003 客户详情页设计稿延期 2 天
- 负责人:孙七
- 下游王五在等
🟢 已解决(本周)
3. T002 客户列表 bug → 已上线
工作原理
第一步:识别提问者权限
lark-cli base record-list --table-id members \
--filter '{"field_name":"open_id","operator":"is","value":["ou_xxx"]}'
- 普通员工只能查自己
- leader 可以查下属(含两级)
- 总监/HR 可以查全员
- 权限不够直接回:"这个问题需要 @李四 权限,你当前只能查自己和下属 5 人"
第二步:自然语言 → 查询意图
用 LLM 把问题解析成结构化 intent:
{
"type": "member_report|project_status|task_detail|stats|risk_list",
"targets": ["张三"],
"time_range": "today|this_week|this_month|last_week|custom",
"group_by": "project|member|day|task",
"metrics": ["hours", "progress", "overtime", "blocker"],
"filters": {"is_overtime": true, "status": "blocked"}
}
第三步:查多维表
按 intent 组装 lark-cli base 查询,支持:
- 时间范围过滤
- 成员/项目/任务关联过滤
- 聚合(lark-cli base 的 data-query 支持 group by + sum/count)
lark-cli base +data-query --app-token $APP --table-id worklogs \
--query '{
"group_by":[{"field_name":"project"}],
"metrics":[{"field_name":"hours","aggregation":"sum"}]
}'
第四步:组织回复
- 200 字以内(领导没耐心看长文)
- 关键数字加粗或用 emoji
- 有风险的放最前面
- 给下钻入口:"想看明细回复'张三日报'"
设计原则
- 快:领导问完 3 秒内有答案
- 准:数据来自真实日报,不瞎编
- 短:一段话 + 一张卡片,不写小作文
- 安全:权限严格,越权不给查
- 可下钻:回复里带"回复 X 看明细"的引导
典型对话流
领导:张三这周在干啥
AI:👤 张三本周总工时 40h...(卡片)
领导:他那个登录任务呢
AI:🎯 T001 登录重构 90%,明天到期,预计延期 3 天
领导:为什么延期
AI:从 worklogs 看,主要卡在 SSO 接口...
8/11 张三在日报里写"SSO 文档与实际不一致"
8/13 又花了 4h 对接
领导:让李四帮他协调一下运维
AI:✅ 已把这条发给李四,并建了任务 T009"协调 SSO 对接",
截止今天下午
不做什么
- 不做绩效评价(只给数据,不给"这个人最近不行"这种判断)
- 不做工资/薪酬查询
- 不做跨公司数据查询
- 不替领导做决策(只提供信息)