Focalboard 会议议程模板(Meeting Agenda Template):用看板工作流管理例会与 1:1 的实战指南
2026/9/11 1:31:39 网站建设 项目流程

Focalboard 会议议程模板(Meeting Agenda Template):用看板工作流管理例会与 1:1 的实战指南

【免费下载链接】focalboardFocalboard is an open source, self-hosted alternative to Trello, Notion, and Asana.项目地址: https://gitcode.com/GitHub_Trending/fo/focalboard

导读

本文基于 Focalboard 官方博客《Template: Meeting agenda》展开,讲解如何用 Focalboard 的看板视图为周期性会议(团队例会、1:1 等)搭建一套"会前收集议题 → 会中逐项推进 → 会后待办跟进"的轻量工作流。文中除完整还原模板的看板列设计与操作步骤外,还结合本仓库源码,剖析.boardarchive模板归档的底层结构、导入导出的完整调用链,以及内置模板的加载机制,帮助你既会用模板,也理解模板背后的实现原理。


一、为什么用 Focalboard 管理会议议程

Focalboard 官方团队在社区服务器上使用 Focalboard 数周后,发现了一些超出预期的使用场景,其中之一便是用它来承载周期性会议议程(如团队例会与 1:1)。相比专用的会议工具或纯文档式议程,Focalboard 的优势在于:

  • 看板即议程:每一张卡片就是一个议题,无需在文档与任务清单之间来回切换;
  • 状态即进度:通过拖拽卡片切换列状态,会议的推进过程自然沉淀为可视化的进展记录;
  • 议程可复用:模板可以导出为.boardarchive归档文件,跨实例分享与复用;
  • 会后有跟进:未能当场解决的议题进入"稍后回顾"列,由负责人带回到下一次会议,形成闭环。

二、模板的看板工作流设计

作者最初从Project Tasks(项目任务)模板起步,但在实际使用中调整为以下三个列,更适合会议场景:

列名含义用法
To Discuss(待讨论)议题队列与会者在会前/会中将新议题拖入此列排队
Revisit Later(稍后回顾)待跟进议题会中未能解决、需要后续跟进的议题移入此列
Done / Archived(已完成/归档)已完结议题讨论完毕、无需跟进的议题移入此列

流转闭环如下:

  1. 会议参与者把新议题放入To Discuss列排队;
  2. 会议进行中逐项讨论,大多数议题讨论完直接拖到Done / Archived
  3. 少数需要后续跟进的议题移到Revisit Later
  4. 议题负责人(owner)在下次会议前,把Revisit Later中已准备好重新讨论的议题移回To Discuss,开启下一轮循环。

这一设计与 Focalboard 看板视图(Kanban)的"按属性分组"能力天然契合:议题卡片按 Status 属性自动归入各列,拖动即更新属性值,无需手动编辑字段。

模板在仓库中的真实形态

在 server/assets/templates-boardarchive 目录下,可以找到这份模板的内置实现。其中b7wnw9awd4pnefryhq51apbzb4c目录对应的正是Meeting Agenda模板(version.json标记归档版本为 2)。从归档的board块中可以读到其真实的卡片属性定义,与博客描述完全一致:

{ "name": "Status", "options": [ { "color": "propColorPink", "value": "To Discuss 💬" }, { "color": "propColorYellow", "value": "Revisit Later ⏳" }, { "color": "propColorGreen", "value": "Done / Archived 📦" } ] }

同一归档中还包含标题为# Action Items# Notes的文本卡片,用于记录会议行动项与会议纪要——说明该模板不仅有三列看板,还内嵌了议程文档结构。仓库中其余内置模板(如Content CalendarRoadmapSprint PlannerTeam Retrospective等)也以相同方式组织在 server/assets/templates-boardarchive 下。

三、获取并导入 Meeting Agenda 模板

3.1 获取归档文件

官方在社区帖子中提供了模板的.focalboard归档文件(.boardarchive)。你可以:

  • 从社区线程中下载归档文件(默认文件名为archive-YYYY-MM-DD.boardarchive格式,见 archiver.ts 中的命名逻辑);
  • 也可以直接使用当前仓库内置的 Meeting Agenda 模板归档:server/assets/templates-boardarchive/b7wnw9awd4pnefryhq51apbzb4c。

3.2 导入步骤

按照官方博客的操作说明:

  1. 下载.boardarchive归档文件;
  2. 点击左下角Settings(设置)菜单;
  3. 选择Import Archive(导入归档)
  4. 选取下载好的归档文件;
  5. 若页面未自动刷新,手动刷新浏览器;
  6. 点击+ Add Board(添加看板),在模板选择器中选中"Meeting Agenda"

3.3 导入的底层实现

前端导入入口位于设置菜单组件 sidebarSettingsMenu.tsx(新版界面同样支持,见 globalHeaderSettingsMenu.tsx),菜单项触发后调用:

Archiver.importFullArchive()

Archiver.importFullArchive()在 archiver.ts 中实现:它动态创建一个input[type=file]元素(accept限定为.boardarchive),触发系统文件选择框;选中文件后调用mutator.importFullArchive(file)(见 mutator.ts),最终通过octoClient发起上传请求。

服务端对应路由注册在 server/api/archive.go:

方法路由说明
GET/boards/{boardID}/archive/export导出单个看板归档
POST/teams/{teamID}/archive/import导入看板归档(multipart/form-data,字段名为file
GET/teams/{teamID}/archive/export导出整个团队的所有看板归档

导入接口handleArchiveImport会依次执行权限校验PermissionViewTeam,且访客 guest 无导入权限)、解析上传文件r.FormFile),再以ImportArchiveOptions{TeamID, ModifiedBy}调用a.app.ImportArchive完成落库;处理成功后返回200{},审计记录为import(见 server/api/archive.go)。

注:团队级导出(handleArchiveExportTeam)在 Mattermost 插件模式下会返回"not permitted"错误(见 server/api/archive.go),单看板导出不受此限制。

四、模板归档(.boardarchive)的文件格式

归档文件的本质是JSON Lines(.jsonl:每行一个 JSON 对象,代表一个 block。以仓库内置模板为例,server/assets/templates-boardarchive/b7wnw9awd4pnefryhq51apbzb4c 中的首行定义了一个board类型的块:

{ "type": "block", "data": { "id": "b7wnw9awd4pnefryhq51apbzb4c", "rootId": "b7wnw9awd4pnefryhq51apbzb4c", "type": "board", "title": "Meeting Agenda (NEW)", "fields": { "cardProperties": [ ... ] } } }

后续每一行则定义看板内的卡片(card)、文本(text)等块,通过parentId/rootId建立层级关系。前端的Archiver.isValidBlock()校验每个块至少包含idboardId字段(见 archiver.ts)。

这也解释了为什么归档导入是跨实例迁移看板/模板的标准方式:只要归档符合 block 结构,就可以通过"Import Archive"一键还原整个看板及其卡片、属性和视图配置。

五、从模板创建看板:+ Add Board 的背后

博客操作的最后一步是点击+ Add Board并选择 "Meeting Agenda"。在前端,这一动作由 boardTemplateSelector.tsx 承载:模板选择器列出可用模板,选中后调用mutator.addBoardFromTemplate(...)(见 boardTemplateSelector.tsx),并同时上报createBoardViaTemplate遥测事件(携带boardTemplateId)。

测试用例 boardTemplateSelector.test.tsx 验证了addBoardFromTemplate(teamId, intl, showBoard, cb, templateId, teamId)的调用契约,确认"从模板新建看板"会基于模板的 block 数据复制出一份新看板。

六、使用建议

  • 每会一卡,逐项流转:会议开始时把 To Discuss 列作为唯一入口,保证讨论有优先级;
  • Revisit Later 不积压:明确每张卡片的 owner,由 owner 负责在下次会议前移回 To Discuss;
  • 配合归档功能:需要把会议模板分享给团队或迁移到新实例时,使用Export archive生成.boardarchive,对方通过Import archive即可复用(导出入口同样位于设置菜单,调用Archiver.exportFullArchive(currentTeam.id),见 sidebarSettingsMenu.tsx);
  • 参考内置模板:仓库 server/assets/templates-boardarchive 中还有Team RetrospectiveSprint PlannerContent Calendar等模板,可对比学习不同团队流程的看板设计模式。

结语

Focalboard 的 Meeting Agenda 模板用最朴素的三列看板,解决了周期性会议最常见的问题:议题收集散乱、会后跟进无主、议程不可复用。通过本文,你不仅学会了如何导入并使用该模板,也掌握了.boardarchive归档格式、导入导出 API 与模板选择器的完整实现链路——这些能力足以让你在此基础上定制属于自己的会议流程模板。

【免费下载链接】focalboardFocalboard is an open source, self-hosted alternative to Trello, Notion, and Asana.项目地址: https://gitcode.com/GitHub_Trending/fo/focalboard

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询