OKR助理源代码说明

本文为基于飞书(小程序+机器人+Python服务)实现OKR为核心的团队管理体系中前后端代码的使用说明。

背景

OKR助理是帮助团队管理者落实OKR管理的工具。它自动化使用飞书的云文档、任务、日程、群组、文本消息、卡片消息功能,提供飞阅会方法、销项管理方法、1on1会议方法、团队个人职业发展规划的模板和实践,从而完成OKR制定、周/月/季/半年/年跟踪和评价、个人职业规划制定、核心团队定期1on1沟通、日常工作销项,最终帮助团队负责人赋能团队向着一致的目标高效前进。

它是飞书OKR工具的补充,飞书OKR更着重OKR的制定(公开、对齐),OKR助理更着重OKR作为体系的有效性。

P.S. 飞书汇报工具更偏重传统的团队管理,目前与OKR的结合较少。

业务流程

bizflow4okrassistant

技术架构

techarch4okrassistant

部署架构

后端服务

  • 使用Docker Desktop运行后端服务
mac:~ songxiang$ docker ps
CONTAINER ID   IMAGE                          COMMAND                  CREATED      STATUS              PORTS                                                                    NAMES
ea121c4783ac   okr_assistant_service:latest   "celery -A oas.manag…"   7 days ago   Up About a minute                                                                            python-service-4-okr-assistant_oas_worker_2
710255cfe23a   okr_assistant_service:latest   "celery -A oas.manag…"   7 days ago   Up About a minute                                                                            python-service-4-okr-assistant_oas_worker_1
b2ff5b0fe0b8   nginx:latest                   "/docker-entrypoint.…"   7 days ago   Up About a minute   0.0.0.0:3001->80/tcp                                                     oas_nginx
e4cc03c1f55c   okr_assistant_service:latest   "python app.py"          7 days ago   Up About a minute                                                                            python-service-4-okr-assistant_oas_server_2
298d1cc7e5e5   okr_assistant_service:latest   "python app.py"          7 days ago   Up About a minute                                                                            python-service-4-okr-assistant_oas_server_1
2b102d878e0c   okr_assistant_service:latest   "celery -A oas.manag…"   7 days ago   Up About a minute                                                                            oas_beat
def071ffe39c   redis:latest                   "docker-entrypoint.s…"   7 days ago   Up About a minute   0.0.0.0:6379->6379/tcp                                                   oas_redis
93faef05756f   rabbitmq:latest                "docker-entrypoint.s…"   7 days ago   Up About a minute   4369/tcp, 5671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:5672->5672/tcp   oas_rabbitmq
33e7e46f1241   mysql:latest                   "docker-entrypoint.s…"   7 days ago   Up About a minute   0.0.0.0:3306->3306/tcp, 33060/tcp                                        oas_mysql
  • 使用内网穿透工具ngrok将后端服务开放到公网
mac:~ songxiang$ ps 677
  PID   TT  STAT      TIME COMMAND
  677 s001  S+    15:14.43 ngrok http 3001

前端应用

前端发布至飞书小程序运行环境。

快速开始

准备工作

创建飞书企业自建应用

  • 飞书开发者后台 中创建企业自建应用
  • 在应用配置页面的事件订阅中,配置Encrypt Key
  • 在应用配置页面的权限管理中,获取如下权限:
    • 以应用身份读取通讯录(免审权限)
    • 获取部门基础信息(免审权限)
    • 获取部门组织架构信息(免审权限)
    • 获取用户基本信息(免审权限)
    • 获取用户组织架构信息(免审权限)
    • 获取用户雇佣信息(免审权限)
    • 获取用户user ID(免审权限)
    • 接收群聊中@机器人消息事件(免审权限)
    • 读取用户发给机器人的单聊消息(免审权限)
    • 以应用的身份发消息(免审权限)
    • 获取企业信息(免审权限)
    • 查看、评论、编辑和管理云空间中所有文件
    • 获取与更新群组信息
    • 获取与发送单聊、群组消息

创建腾讯云免费对话机器人

安装 Docker Desktopngrok飞书开发者工具

后端服务

获取源代码

PS C:\> git clone git@gitlab.cicconline.com:songxiang/python-service-4-okr-assistant.git
Cloning into 'python-service-4-okr-assistant'...
remote: Enumerating objects: 53, done.
remote: Counting objects: 100% (53/53), done.
remote: Compressing objects: 100% (35/35), done.
remote: Total 77 (delta 21), reused 45 (delta 16), pack-reused 24
Receiving objects: 100% (77/77), 114.29 KiB | 653.00 KiB/s, done.
Resolving deltas: 100% (21/21), done.
PS C:\> cd .\python-service-4-okr-assistant\

配置环境变量文件

编辑.env

  • APP_ID:在飞书应用配置的凭证与基础信息页面,获取App ID
  • APP_SECRET:在飞书应用配置的凭证与基础信息页面,获取App Secret
  • VERIFICATION_TOKEN:在飞书应用配置的事件订阅页面,获取Verification Token
  • ENCRYPT_KEY:在飞书应用配置的事件订阅页面,获取Encrypt Key
  • TENCENT_CLOUD_AI_BOTID:在腾讯智能对话平台的Bot配置页面,获取BotId
  • TENCENT_CLOUD_API_SECRETID:在 腾讯云访问密匙 页面,获取SecretId
  • TENCENT_CLOUD_API_SECRETKEY:在 腾讯云访问密匙 页面,获取SecretKey
  • SQLALCHEMY_DATABASE_URI:mysql+pymysql://root:数据库密码@mysql:3306/okr_assistant

编译和启动后端服务

PS C:\python-service-4-okr-assistant> .\exec.ps1

使用ngrok将后端服务发布到公网

PS C:\python-service-4-okr-assistant> ngrok http 3001

前端应用

获取源代码

PS C:\> git clone git@gitlab.cicconline.com:songxiang/feishu-microapp-4-okr-assistant.git
Cloning into 'feishu-microapp-4-okr-assistant'...
remote: Enumerating objects: 14, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (14/14), done.
Receiving objects:  92% (99/107)sed 0 (delta 0), pack-reused 93Receiving objects:  88% (95/107)
Receiving objects: 100% (107/107), 52.45 KiB | 1.69 MiB/s, done.
Resolving deltas: 100% (32/32), done.
PS C:\> cd .\feishu-microapp-4-okr-assistant\

配置飞书机器人

  • 进入飞书开放平台->开发者后台,在应用配置页面的事件订阅页面,配置请求网址URL为用ngrok发布的后端服务公网地址,例如https://1cb8-223-72-47-65.ngrok.io
  • 在应用配置页面的应用功能小程序机器人页面,打开对应功能

编译发布飞书小程序

  • 飞书开发者工具打开源代码路径
  • project.config.json中,将appid改为在飞书应用配置的凭证与基础信息页面获取的App ID
  • app.js中,将appId改为在飞书应用配置的凭证与基础信息页面获取的App ID
  • app.js中,将backendService改为用ngrok发布的后端服务公网地址(保留后面/api/v1),例如https://1cb8-223-72-47-65.ngrok.io
  • 使用上传功能上传小程序包
  • 在飞书应用配置的应用发布页面中,创建应用办法并发布,联系飞书管理员审核上线

功能验证

  • 飞书机器人与应用同名,可以通过飞书全局搜索找到,可以先给它发给消息,看看AI会回复啥,不过刚开始的时候,这机器人很蠢,说的多了,会好一些
  • 飞书小程序可以在飞书工作台上找到,也可以通过飞书全局搜索得到

OKR助理使用的模板

猜你喜欢

转载自blog.csdn.net/cloudguru/article/details/125505652
OKR