# 简介

本文介绍如何开发一个基于飞书开放平台提供的 [node-sdk](https://github.com/larksuite/node-sdk) 实现的人员及考勤管理网页系统，通过该教程，您可以了解如何实现以下功能：

- 开发一个[网页应用](https://open.feishu.cn/document/uYjL24iN/uITO4IjLykDOy4iM5gjM)
- 通过[事件订阅](https://open.feishu.cn/document/ukTMukTMukTM/uUTNz4SN1MjL1UzM)实现消息自动推送
- 通过[应用免登](https://open.feishu.cn/document/uYjL24iN/uMTMuMTMuMTM/development-guide/step-3)实现自动获取用户信息
- 通过调用[通讯录](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/resources) OpenAPI 实现部门及人员管理
- 通过互动[飞书卡片](https://open.feishu.cn/document/uAjLw4CM/ukzMukzMukzM/feishu-cards/feishu-card-overview)实现一键审批
- 通过[审批](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/approval-v4/approval-overview)一键同步日历并添加日程
- 通过[多维表格](https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/bitable-overview)实现考勤数据自动录入和一键导出
本教程融合了以下子教程的实现逻辑，覆盖了完整的全链路场景，你可以根据实际需求学习以下分场景的教程内容，快速上手飞书应用的开发:
- [基于审批实现自动考勤管理](https://open.feishu.cn/document/home/automatic-attendance-management-based-on-approval/introduction)
- [基于网页应用实现人员部门管理](https://open.feishu.cn/document/home/quick-access-to-base/department-personnel-management-based-on-web-app/overview)
- [开发一个卡片交互机器人](https://open.feishu.cn/document/uAjLw4CM/uMzNwEjLzcDMx4yM3ATM/develop-a-card-interactive-bot/introduction)
- [快速接入多维表格](https://open.feishu.cn/document/home/quick-access-to-base/preparation)
- [快速接入通讯录](https://open.feishu.cn/document/home/quick-access-to-contact-api/introduction)

## 实现效果
<md-video src="//sf3-cn.feishucdn.com/obj/open-platform-opendoc/4b02c3ab103700a66b2ac35411e1ed12_vmkEkP8miO.mp4" poster="//sf3-cn.feishucdn.com/obj/open-platform-opendoc/50eb8b580967d4e6c985bce83c4dcc54_GO4illTrsR.jpeg?lazyload=true&width=2616&height=1396" Width="80%"/>

## 操作流程

本文涉及的操作流程如下图所示：

![image.png](//sf3-cn.feishucdn.com/obj/open-platform-opendoc/f620e48b943b96d58e764cfe492076cd_b53FyOmBKe.png?height=208&lazyload=true&maxWidth=750&width=1023)

## 使用到的 OpenAPI 列表

本文需要调用以下 OpenAPI 实现所需能力。

**[方法 (API)](https://open.feishu.cn/document/ukTMukTMukTM/uITNz4iM1MjLyUzM)** | 权限要求（满足任一） | **[访问凭证](https://open.feishu.cn/document/ukTMukTMukTM/uMTNz4yM1MjLzUzM)（选择其一）**
---|---|---
[列出记录](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/list)<br>`GET` /open-apis/bitable/v1/apps/:app_token/tables/:table_id/records | 查看、评论和导出多维表格(bitable:app:readonly)<br>查看、评论、编辑和管理多维表格(bitable:app) | `tenant_access_token`<br>`user_access_token`
[创建多维表格](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app/create)<br>`POST` /open-apis/bitable/v1/apps | 查看、评论、编辑和管理多维表格(bitable:app) | `tenant_access_token`<br>`user_access_token`
[新增记录](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/create)<br>`POST` /open-apis/bitable/v1/apps/:app_token/tables/:table_id/records | 查看、评论、编辑和管理多维表格(bitable:app) | `tenant_access_token`<br>`user_access_token`
[新增数据表](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table/create)<br>`POST` /open-apis/bitable/v1/apps/:app_token/tables | 查看、评论、编辑和管理多维表格(bitable:app) | `tenant_access_token`<br>`user_access_token`
[创建部门](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/create)<br>`POST` open-apis/contact/v3/departments | 获取通讯录部门组织架构信息(contact:department.organize:readonly)<br>以应用身份读取通讯录(contact:contact:readonly_as_app)<br>获取部门基础信息(contact:department.base:readonly)<br>获取用户 user ID(contact:user.employee_id:readonly) | `tenant_access_token`<br>`user_access_token`
[获取子部门列表](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/children)<br>`GET` open-apis/contact/v3/departments/:department_id/children | 获取通讯录部门组织架构信息(contact:department.organize:readonly)<br>以应用身份读取通讯录(contact:contact:readonly_as_app)<br>获取部门基础信息(contact:department.base:readonly)<br>获取用户 user ID(contact:user.employee_id:readonly) | `tenant_access_token`<br>`user_access_token`
[获取单个部门信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/get)<br>`GET` open-apis/contact/v3/departments/:department_id | 获取通讯录部门组织架构信息(contact:department.organize:readonly)<br>以应用身份读取通讯录(contact:contact:readonly_as_app)<br>获取部门基础信息(contact:department.base:readonly)<br>获取用户 user ID(contact:user.employee_id:readonly) | `tenant_access_token`<br>`user_access_token`
[创建审批实例](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/approval-v4/instance/create)<br>`POST` /open-apis/approval/v4/instances | 查看、创建、更新、删除审批应用相关信息(approval:approval)<br>查看、创建、更新、删除原生审批实例相关信息(approval:instance) | `tenant_access_token`
[查询主日历信息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/calendar-v4/calendar/primary)<br>`POST` open-apis/calendar/v4/calendars/primary | 获取日历、日程及忙闲信息(calendar:calendar:readonly) | `tenant_access_token`<br>`user_access_token`
[创建日程](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/calendar-v4/calendar-event/create)<br>`POST` open-apis/calendar/v4/calendars/:calendar_id/events | 更新日历及日程信息(calendar:calendar) | `tenant_access_token`<br>`user_access_token`
[写入审批结果](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_approval/create)<br>`POST` open-apis/attendance/v1/user_approvals | 写入打卡数据(attendance:task) | `tenant_access_token`
[发送消息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message/create)<br>`POST` open-apis/im/v1/messages | 以应用的身份发消息(im:message:send_as_bot)<br>获取与发送单聊、群组消息(im:message)<br>发送消息V2(im:message:send) | `tenant_access_token`
[延时更新消息卡片](https://open.feishu.cn/document/ukTMukTMukTM/uMDO1YjLzgTN24yM4UjN)<br>`POST` open-apis/interactive/v1/card/update | 无 | `tenant_access_token`

