- 移除 TodoItem 中的 priority、created_at 和 updated_at 字段 - 强制每个任务都必须有唯一 id,且由用户负责生成 - 修改合并模式逻辑,merge=true 下保留未提及的旧任务 - 支持已完成和已取消任务重新激活(状态改回 pending 或 in_progress) - 禁止 in_progress 状态退回到 pending,必须标记为 completed 或 cancelled - 优化状态转换校验,允许特定状态间合法切换 - 简化任务变更消息,移除详细的新增/更新/移除统计 - 更新文档和示例,明确 id 必须由用户生成和使用 - 修复和补充测试,增强状态转换和合并模式验证 - 调整任务时间戳生成逻辑,统一使用当前时间及索引 - 该变更提供更合理的任务状态机械及管理模式,提升稳定性和易用性
88 lines
3.0 KiB
Markdown
88 lines
3.0 KiB
Markdown
# mail +share-to-chat
|
||
|
||
> **前置条件:** 先阅读 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
||
|
||
将邮件以卡片形式分享到飞书 IM 会话(群聊或个人对话)。内部两步完成:创建分享凭证 → 发送卡片到 IM。
|
||
|
||
**依赖 Scope:** `mail:user_mailbox.message:readonly`、`im:message`、`im:message.send_as_user`
|
||
|
||
## 命令
|
||
|
||
```bash
|
||
# 分享单封邮件到群聊(默认 receive-id-type=chat_id)
|
||
lark-cli mail +share-to-chat --message-id <邮件ID> --receive-id oc_xxx
|
||
|
||
# 分享整个会话到群聊
|
||
lark-cli mail +share-to-chat --thread-id <会话ID> --receive-id oc_xxx
|
||
|
||
# 通过邮箱分享给个人
|
||
lark-cli mail +share-to-chat --message-id <邮件ID> --receive-id user@example.com --receive-id-type email
|
||
|
||
# Dry Run
|
||
lark-cli mail +share-to-chat --message-id <邮件ID> --receive-id oc_xxx --dry-run
|
||
```
|
||
|
||
## 参数
|
||
|
||
| 参数 | 必填 | 说明 |
|
||
|------|------|------|
|
||
| `--message-id <id>` | 否(二选一) | 要分享的邮件 ID,与 `--thread-id` 互斥 |
|
||
| `--thread-id <id>` | 否(二选一) | 要分享的邮件会话 ID,与 `--message-id` 互斥 |
|
||
| `--receive-id <id>` | 是 | 目标接收者 ID,类型由 `--receive-id-type` 决定 |
|
||
| `--receive-id-type <type>` | 否 | 接收者 ID 类型(默认 `chat_id`)。可选:`chat_id` / `open_id` / `user_id` / `union_id` / `email` |
|
||
| `--mailbox <email>` | 否 | 邮箱地址(默认 `me`) |
|
||
| `--dry-run` | 否 | 仅打印请求,不执行 |
|
||
|
||
## 返回值
|
||
|
||
```json
|
||
{
|
||
"ok": true,
|
||
"data": {
|
||
"card_id": "550e8400-e29b-41d4-a716-446655440000",
|
||
"im_message_id": "om_dc13264520392913993dd051dba21dcf"
|
||
}
|
||
}
|
||
```
|
||
|
||
## 典型场景
|
||
|
||
### 场景 1:用户说"帮我把这封邮件分享到项目群"
|
||
|
||
```bash
|
||
# Step 1: 搜索群聊获取 chat_id
|
||
lark-cli im +chat-search --query "项目群"
|
||
# → 获取 chat_id: oc_xxx
|
||
|
||
# Step 2: 分享邮件
|
||
lark-cli mail +share-to-chat --message-id <邮件ID> --receive-id oc_xxx
|
||
```
|
||
|
||
### 场景 2:分享整个邮件会话
|
||
|
||
```bash
|
||
lark-cli mail +share-to-chat --thread-id <会话ID> --receive-id oc_xxx
|
||
```
|
||
|
||
### 场景 3:通过邮箱分享给个人
|
||
|
||
```bash
|
||
lark-cli mail +share-to-chat --message-id <邮件ID> --receive-id alice@example.com --receive-id-type email
|
||
```
|
||
|
||
## 常见错误
|
||
|
||
| 症状 | 原因 | 解决 |
|
||
|------|------|------|
|
||
| `either --message-id or --thread-id is required` | 两个参数都未传 | 传入其中一个 |
|
||
| `--message-id and --thread-id are mutually exclusive` | 两个参数同时传 | 只传一个 |
|
||
| 403 `user not in chat` | 用户不在目标会话中 | 确认用户是群成员 |
|
||
| 404 `message not found` | 邮件 ID 无效 | 确认邮件 ID 正确 |
|
||
| 403 `permission not granted` | 缺少 `im:message` 或 `im:message.send_as_user` scope | 重新授权:`lark-cli auth login --scope "im:message,im:message.send_as_user"` |
|
||
|
||
## 相关命令
|
||
|
||
- `lark-cli im +chat-search` — 搜索群聊获取 chat_id
|
||
- `lark-cli mail +message` — 查看邮件内容
|
||
- `lark-cli mail +thread` — 查看邮件会话
|