如果你的团队每周都要人工汇总成员的工作内容来写周报,WorkSwarm 的批量生成思路是可以接的:把任务记录导出作为数据源,用定时触发把生成任务拆成队列,再让WorkSwarm 把生成结果标记为草稿,最后人工复核。整个过程只负责“把已有任务记录汇总成可编辑的草稿”,生成的具体措辞以实际输出为准,不能当作无人工的终稿。
适用场景:WorkSwarm 中已有可查询的任务记录,且团队能接受生成后人工复核。操作动作:先按本周时间导出任务字段,再按成员或项目拆分队列,用 Python+Redis 做生产者消费者,最后把生成文本写回 WorkSwarm 草稿或邮件待审列表。验证方式:人工抽查生成结果是否覆盖所有已完成事项,并检查队列积压量是否接近 0。风险边界:不承诺生成文案质量,接口不支持写回时需要改用邮件流转。
从WorkSwarm导出本周任务数据
WorkSwarm 通常提供页面上的导出入口或后台接口,用来把任务列表拉成本地文件。导出时先按时间过滤出本周的任务,避免把历史数据全部带进来。如果页面没有直接的“本周”筛选,就按开始时间或完成时间去过滤。
需要带上的字段至少包括:负责人、任务状态、完成时间、任务标题(或描述)。有些系统还会带项目名称和优先级,这些可以留作后续拆分维度的备用字段。导出格式建议直接用 CSV,后续脚本处理最省事。
负责人,任务标题,状态,完成时间,项目
张三,完成订单接口联调,已完成,2026-05-14 18:30,支付项目
李四,修复首页白屏 bug,已完成,2026-05-15 09:20,官网重构
王五,整理灰度发布计划,进行中,2026-05-16 11:00,发布平台建议把导出的 CSV 放到固定目录,文件名带日期,例如 tasks_2026_05_14.csv。这样定时任务每天或每周拉取一次,后面队列只消费这个文件的数据,不重复请求接口。
设计任务队列的拆分维度
周报生成前要先决定按什么维度拆任务队列。常见两种:按成员分组、按项目分组。
| 拆分维度 | 适用场景 | 说明 |
|---|---|---|
| 按成员分组 | 周报是每个人单独提交,关注个人工作量 | 每个成员的任务归为一组,生成“张三本周完成情况” |
| 按项目分组 | 周报按项目汇总,关注项目进展 | 每个项目的任务归为一组,生成“支付项目本周进展” |
如果团队周报既需要个人维度又需要项目维度,可以拆两套队列,或者用两层结构:先按成员分,成员内再按项目分。但这样工作量会增加,建议第一版先选一种主要维度。
拆分时要注意:一个任务可能同时有多个负责人,CSV 里可以用分隔符处理,也可以在导出时拆成多行,否则队列里同一个任务会被重复消费。
用Python+Redis实现简单任务队列
用 Redis 的列表结构做先进先出队列最直接。生产者把成员 ID(或项目 ID)从左端推入,消费者从右端取出。这里用 Python + redis-py 提供骨架,依赖是 redis 和 python-dateutil(用于解析时间)。
# 生产者:把待生成周报的成员ID推入队列
import redis
import csv
r = redis.Redis(host='localhost', port=6379, db=0)
QUEUE = 'work_weekly_queue'
# 从CSV读取所有负责人并去重
with open('tasks_2026_05_14.csv') as f:
reader = csv.DictReader(f)
owners = {row['负责人'] for row in reader}
# 推入队列,一个成员一个任务
for owner in owners:
r.lpush(QUEUE, owner)
print(f'pushed {len(owners)} owners')# 消费者:取出成员ID,调用生成函数
import redis
import csv
r = redis.Redis(host='localhost', port=6379, db=0)
QUEUE = 'work_weekly_queue'
def generate_weekly_report(owner):
# 从CSV中筛出该负责人本周已完成的记录,这里省略具体实现
# 返回生成的markdown或纯文本草稿
return f'# {owner} 本周工作\n\n- 任务1\n- 任务2\n'
while True:
# 设置超时等待,避免空转
item = r.brpop(QUEUE, timeout=5)
if item is None:
break
owner = item[1].decode()
report = generate_weekly_report(owner)
# 调用WorkSwarm接口或发送邮件,写入草稿
save_draft(owner, report)上面的 save_draft 是占位函数,实际按 WorkSwarm 提供的 API 实现。如果同时运行多个消费者进程,队列会被并发消费,但要注意每个成员的周报生成过程可能依赖同一个 CSV 文件,建议把所有数据先读入内存或数据库再处理,避免文件被多个进程同时读取。
把WorkSwarm标记为草稿并人工复核
生成结果要回到 WorkSwarm 才有意义。如果官方提供 API 支持创建任务评论或新任务,就直接把生成文本作为评论内容或新任务描述发送过去,同时标记为草稿状态。示例接口可能长这样:
POST /api/tasks/{task_id}/comments
Content-Type: application/json
{
"body": "# 张三本周工作\n- 完成订单接口联调...",
"status": "draft"
}如果 WorkSwarm 的接口不支持直接写回,就用邮件把待审列表发给相关负责人。邮件里可以按成员汇总生成文本,或者附上 CSV 链接,人工审核后再复制进系统。两种方式都需要在生成结果里标明“草稿”或“待复核”,避免被误认为是正式周报。
另外要检查队列积压情况,观察是否所有成员都消费完成。用 Redis 的 llen 可以看剩余任务数:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
remain = r.llen('work_weekly_queue')
print(f'remaining: {remain}')如果积压量持续大于 0,可能是有消费者异常退出,或者某个任务的生成函数抛错。建议在消费者里加 try/except 记录失败日志,并且给每个任务设置超时时间,避免单个成员数据量过大卡住整个队列。
最后要记住:无论脚本把文本写回得多么顺畅,最终周报的准确性和措辞仍要人工确认。批量生成只是把“收集、汇总、初稿”这些重复步骤自动化,判断和润色仍然由人负责。