# 飞书打包通知脚本

用于通过飞书企业自建应用发送打包通知，并在 sandbox 部署完成后更新多维表格状态。

运行环境：

- Python 3.8+
- 无第三方 Python 依赖

脚本说明：

- `lark_notify.py`：发送飞书群卡片消息。
- `lark_bitable_update.py`：更新多维表格状态。
- `lark_list_chats.py`：获取机器人所在群的 `chat_id`。

## 系统配置变量

在执行环境中配置以下环境变量。环境变量可以通过 `.env` 文件配置，也可以通过 Azure Pipeline 的 Variables 配置；Variables 的具体配置方式可自行查阅 Azure 官方说明资料。

| 变量名 | 用途 | 获取位置 |
| --- | --- | --- |
| `LARK_APP_ID` | 飞书企业自建应用 App ID | 飞书开放平台 -> 应用凭证 -> App ID |
| `LARK_APP_SECRET` | 飞书企业自建应用 App Secret | 飞书开放平台 -> 应用凭证 -> App Secret |
| `LARK_CHAT_ID` | 目标飞书群 ID | 机器人加入目标群后，运行 `python lark_build_message\lark_list_chats.py` 获取 |
| `LARK_BITABLE_APP_TOKEN` | 多维表格 app token | 多维表格链接 `/base/{app_token}` |
| `LARK_BITABLE_TABLE_ID` | 数据表 ID | 多维表格链接参数 `table=...` |
| `LARK_BITABLE_VIEW_ID` | 视图 ID，可选 | 多维表格链接参数 `view=...` |
| `LARK_BITABLE_FILTER_FIELD` | 筛选字段名 | 当前为 `状态` |
| `LARK_BITABLE_FILTER_VALUE` | 筛选字段值 | 当前为 `修改未部署` |
| `LARK_BITABLE_UPDATE_FIELD` | 更新字段名 | 当前为 `状态` |
| `LARK_BITABLE_UPDATE_VALUE` | 更新后的字段值 | 当前为 `待验收` |
| `LARK_BITABLE_SHOW_FIELDS` | 打印字段，可选 | 不配置时默认 `问题描述,问题详情,严重程度` |

多维表格链接示例：

```text
https://q83p1nq8dm.feishu.cn/base/GPlrbEHEsaJmMZsQPSwcOJvinfg?table=tblRelru6FFaUFfS&view=vewfMfs45d
```

对应：

```text
LARK_BITABLE_APP_TOKEN=GPlrbEHEsaJmMZsQPSwcOJvinfg
LARK_BITABLE_TABLE_ID=tblRelru6FFaUFfS
LARK_BITABLE_VIEW_ID=vewfMfs45d
```

## 飞书权限

发群消息需要：

- 自建应用开启机器人能力。
- 机器人加入目标飞书群。
- 应用开通发送群消息相关权限。

更新多维表格需要：

- 应用开通多维表格相关 API 权限。
- 在目标多维表格中添加该自建应用为文档应用。
- 文档应用权限设为“可管理”。

## 发送通知

部署完成，需要传部署分支：

```powershell
python lark_build_message\lark_notify.py --method deploy --branch sandbox
```

热更完成，需要传平台：

```powershell
python lark_build_message\lark_notify.py --method hotfix --platform Android
python lark_build_message\lark_notify.py --method hotfix --platform iOS
```

分包完成，需要传平台：

```powershell
python lark_build_message\lark_notify.py --method subpack --platform Android
python lark_build_message\lark_notify.py --method subpack --platform iOS
```

## 更新多维表格

sandbox 部署完成后，执行：

```powershell
python lark_build_message\lark_bitable_update.py
```

该脚本会将多维表格中 `状态` 字段里的值为 `修改未部署` 的记录更新为 `待验收`。
默认最多更新 200 条；如果命中记录超过 200 条，脚本会停止且不更新任何记录。

## 常用组合

sandbox 部署完成后，先发通知，再更新多维表格：

PowerShell：

```powershell
python lark_build_message\lark_notify.py --method deploy --branch sandbox
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

python lark_build_message\lark_bitable_update.py
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
```

cmd：

```powershell
python lark_build_message\lark_notify.py --method deploy --branch sandbox && python lark_build_message\lark_bitable_update.py
```
