补充安全权限日志与草稿状态约定
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
8. 接收卡片按钮回调。
|
||||
9. 支持接收人反馈已收到、处理中、已完成、有问题。
|
||||
10. 记录飞书事件、通知发送结果和回调处理结果。
|
||||
11. 旧卡片、失效卡片和重复点击必须幂等处理。
|
||||
12. 平台内“有问题反馈”页需要在飞书手机端最小可用。
|
||||
|
||||
## 3. 第一版不做
|
||||
|
||||
@@ -59,7 +61,9 @@
|
||||
-> 验签
|
||||
-> 记录 feishu_events
|
||||
-> 查找 notification / draft / task / reminder
|
||||
-> 校验 event_id 或 idempotency_key
|
||||
-> 校验操作人权限
|
||||
-> 校验通知、草稿和卡片仍有效
|
||||
-> 执行业务动作
|
||||
-> 写 operation_logs
|
||||
-> 返回飞书处理结果
|
||||
@@ -80,7 +84,7 @@
|
||||
9. `failure_records`
|
||||
10. `operation_logs`
|
||||
|
||||
字段以 `docs/contracts/数据对象约定.md` 为准。
|
||||
字段以 `docs/contracts/数据对象约定.md` 为准;权限、安全、日志脱敏、验签和幂等以 `docs/contracts/安全权限日志约定.md` 为准。
|
||||
|
||||
## 6. 接口需求
|
||||
|
||||
@@ -108,11 +112,13 @@
|
||||
|
||||
状态以 `docs/contracts/状态流转约定.md` 为准。幂等约束:
|
||||
|
||||
1. 同一个飞书 `event_id` 只处理一次。
|
||||
1. 同一个飞书 `event_id` 只处理一次;没有稳定 `event_id` 时必须使用 `idempotency_key`。
|
||||
2. 同一个通知只允许一个有效发送结果。
|
||||
3. 同一个卡片按钮重复点击不得重复创建事项、提醒或反馈。
|
||||
4. 同一个机器人消息还必须按 `source + message_id` 在老板秘书入口二次幂等,不重复追加 `secretary_messages`。
|
||||
5. 回调处理失败必须标记 `feishu_events.process_status = failed` 并写失败记录。
|
||||
4. 草稿确认类卡片必须匹配 `ai_drafts.active_card_notification_id`。
|
||||
5. 旧卡片、失效卡片、已替代草稿和已过期通知的回调只写入 `feishu_events`,标记 `ignored`,不得写业务对象。
|
||||
6. 同一个机器人消息还必须按 `source + message_id` 在老板秘书入口二次幂等,不重复追加 `secretary_messages`。
|
||||
7. 回调处理失败必须标记 `feishu_events.process_status = failed` 并写失败记录。
|
||||
|
||||
## 9. 失败和日志
|
||||
|
||||
@@ -128,9 +134,19 @@
|
||||
8. 操作人无权操作。
|
||||
9. 有问题反馈缺少原因。
|
||||
|
||||
普通日志不得打印飞书 token、App Secret、完整手机号或完整邮箱。
|
||||
普通日志不得打印飞书 token、App Secret、OAuth code/state、一次性操作 token、回调验签密钥、完整手机号或完整邮箱。
|
||||
|
||||
## 10. 给 AI 的测试样例
|
||||
## 10. 平台内反馈页
|
||||
|
||||
飞书卡片无法直接完成“有问题”原因填写时,允许跳转平台内反馈页。第一版不做完整手机网页适配,但该页在飞书手机端必须最小可用:
|
||||
|
||||
1. 能通过飞书登录态或一次性反馈 token 识别反馈人。
|
||||
2. 一次性反馈 token 只保存 hash,不保存明文。
|
||||
3. 只展示事项或提醒摘要、反馈状态选择和问题原因输入。
|
||||
4. 操作人不是接收人、链接过期、通知失效或卡片失效时,只提示不可反馈并记录事件或失败,不写业务对象。
|
||||
5. 提交成功后写入 `feedbacks` 并按状态流转更新事项或提醒。
|
||||
|
||||
## 11. 给 AI 的测试样例
|
||||
|
||||
1. 验签失败的回调应返回拒绝并写失败记录。
|
||||
2. 同一 `event_id` 重放应幂等,不重复创建反馈。
|
||||
@@ -138,11 +154,15 @@
|
||||
4. 老板点击取消草稿后,草稿不能再转换。
|
||||
5. 非老板私聊机器人不应调用 AI。
|
||||
6. 飞书通知失败时,应写 `failure_records` 并保留通知失败状态。
|
||||
7. 没有稳定 `event_id` 的卡片回调应使用 `idempotency_key` 幂等。
|
||||
8. 旧确认卡片或已失效通知的回调只记录 `feishu_events`,不得创建事项、提醒或反馈。
|
||||
9. 飞书手机端平台反馈页必须能提交“有问题”原因,并拒绝过期 token。
|
||||
|
||||
## 11. Review 重点
|
||||
## 12. Review 重点
|
||||
|
||||
1. 回调是否验签。
|
||||
2. 回调是否幂等。
|
||||
2. 回调是否使用 `event_id` 或 `idempotency_key` 幂等。
|
||||
3. 飞书身份是否没有直接绕过平台权限。
|
||||
4. 通知内容是否只发摘要和链接。
|
||||
5. 失败是否可复盘。
|
||||
6. 旧卡片、失效卡片是否不会继续写业务对象。
|
||||
|
||||
Reference in New Issue
Block a user