Files
JiuContinent eb8267ed18 ```
feat(feishu): 添加飞书入站事件inbox和混合数据库协调功能

- 实现飞书入站事件持久化inbox机制,支持状态管理、租约锁定和重试退避
- 添加混合数据库基线协调工具,确保平台PostgreSQL结构安全对齐
- 增加运行组件心跳检测和readiness就绪检查机制
- 实现app_ticket事件的安全轮换和验证处理
- 添加生产环境运行编排和fail-closed安全机制
- 支持webhook快速确认和长连接独立进程处理
- 完善个人数据擦除时的待处理事件清理功能
```
2026-07-27 17:14:37 +08:00

96 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 实现任务
- [x] 1. 建立飞书用户身份与权限域
- 新增 `app/modules/feishu_users/` 的模型、schema、principal、身份与管理服务。
- 实现首次注册、初始管理员引导、角色/状态修改、最后管理员保护与审计。
- 增加用户管理 API 和身份/权限测试。
- _Requirements: 1, 2, 8.5, 8.8, 8.9, 9.1, 10.4_
- [x] 2. 将验证后的飞书事件接入用户主体
- 扩展 webhook/长连接事件提取 `tenant_key`、sender ids、chat type 和 mentions。
- 只有验证后的事件才能解析或创建 `FeishuPrincipal`;群聊始终使用发送者身份。
- 把 principal 传入命令处理并在停用/缺身份时安全拒绝。
- _Requirements: 1, 2.2, 2.4, 8.1, 9.1_
- [x] 3. 实现个人规则、偏好、兴趣和记忆隔离
- 新增 `app/modules/personalization/` 偏好模型与服务。
- 为 AI 规则/记忆和市场自选增加 owner按 owner 查询、去重和安全认领。
- 将现有 AI rule API 固定为公司规则入口;飞书个人/公司规则命令分别授权。
- 实现个人规则、偏好、兴趣 CRUD 命令及跨用户隔离测试。
- _Requirements: 3, 4, 8.2, 8.3, 8.5, 8.7, 9.4_
- [x] 4. 实现会话与个性化 AI 问答
- 新增会话和消息模型、20 轮裁剪、30 天清理与重置命令。
- 按既定优先级组装公司规则、个人规则、请求、偏好/兴趣、记忆和会话历史。
- 隔离 provider session`noop`/AI 不可用时不写历史、偏好或记忆。
- 实现白名单自动偏好提取与敏感画像拒绝。
- _Requirements: 3, 4.5, 5, 8.3, 8.7, 9.2_
- [x] 5. 实现订阅与受控中文计划解析
- 新增订阅/投递模型、schema 和服务。
- 支持单次、每天、工作日、每周、每月和间隔计划以及 IANA 时区。
- 实现 15 分钟下限、50 个启用订阅、每日 96 条、安静时段。
- 实现私聊固定 open_id、管理员当前群绑定以及订阅生命周期命令/API。
- _Requirements: 6, 8.4, 8.6, 8.7, 10.4_
- [x] 6. 实现持久化扫描、幂等投递和重试
- 每分钟扫描到期订阅,通过行锁和唯一投递键领取并推进下一执行时间。
- 为 Feishu client 增加 `open_id`、消息 UUID 和业务状态校验。
- 实现个人/群订阅上下文边界、1/5/15 分钟重试和无 Celery 持久化恢复。
- 接入 scheduler、Celery task/queue helper 并保持固定群报表任务不变。
- _Requirements: 6.7, 7, 10.3_
- [x] 7. 实现用户数据查看、忘记我和运行可观测性
- 实现 `我的数据`、二次确认、事务删除和审计匿名化。
- 增加用户/订阅/投递查询 API、活跃用户和投递状态指标。
- 启用订阅但缺少飞书凭据时 readiness 返回 degraded。
- _Requirements: 6.2, 9, 10.2, 10.4_
- [x] 8. 完成配置、Alembic 迁移与全量验证
- 增加安全关闭的功能开关、管理员身份配置并更新 `.env` 配置。
- 创建迁移并处理旧公司规则、旧自动记忆和旧自选延迟认领。
- 补齐身份、隔离、权限、计划、并发、投递、删除和迁移回归测试。
- 运行 Ruff、compileall、完整 pytest 和迁移一致性检查。
- _Requirements: 3.7, 10_
- [x] 9. 安全协调现有混合平台数据库
- 新增严格允许列表的 reconciliation revision 和一次性 baseline runner。
- 实现结构指纹、advisory transaction lock、权限/行数/依赖预检和原子版本登记。
- 用脱敏结构快照验证成功、漂移拒绝和失败回滚;不得连接或修改业务 MySQL。
- _Requirements: 10, 11_
- [x] 10. 补齐生产运行编排和 fail-closed readiness
- 增加明确事件 transport、生产配置校验、`.env` 配置和长连接服务编排。
- 为 API、scheduler、worker、飞书事件进程增加重启/heartbeat并校验 Alembic head。
- 支持外部 PostgreSQL 部署且不被 Compose 内部数据库 URL 意外覆盖。
- _Requirements: 12_
- [x] 11. 实现可靠飞书入站 inbox
- 扩展事件 receipt 为持久化 inbox支持状态、租约、退避重试和终态载荷清理。
- webhook 快速 ACK长连接共用入库路径并发重复和进程重启不得重复或丢失命令。
- 命令事务原子保存 reply outbox回复失败只以稳定 UUID 重试,不重新执行命令。
- 接入 scheduler/Celery/inline 执行适配并增加运行指标。
- _Requirements: 1, 9, 13_
- [ ] 12. 应用平台迁移并完成真实运行验收
- 停止相关进程,执行 dry-run、备份/事务预检、协调迁移和零漂移验证。
- 启动 API、事件入口和 scheduler验证 health/readiness、heartbeat 与无待处理错误。
- 通过真实已验证事件绑定首位管理员,并完成私聊订阅和群订阅 smoke。
- _Requirements: 11, 12, 13_
```mermaid
flowchart LR
T1["1 身份权限"] --> T2["2 事件主体"]
T1 --> T3["3 个人数据隔离"]
T2 --> T4["4 个性化问答"]
T3 --> T4
T1 --> T5["5 订阅与计划"]
T5 --> T6["6 扫描投递"]
T3 --> T7["7 删除与可观测性"]
T5 --> T7
T2 --> T8["8 迁移与验证"]
T4 --> T8
T6 --> T8
T7 --> T8
```