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

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

5.1 KiB
Raw Permalink Blame History

实现任务

  • 1. 建立飞书用户身份与权限域

    • 新增 app/modules/feishu_users/ 的模型、schema、principal、身份与管理服务。
    • 实现首次注册、初始管理员引导、角色/状态修改、最后管理员保护与审计。
    • 增加用户管理 API 和身份/权限测试。
    • Requirements: 1, 2, 8.5, 8.8, 8.9, 9.1, 10.4
  • 2. 将验证后的飞书事件接入用户主体

    • 扩展 webhook/长连接事件提取 tenant_key、sender ids、chat type 和 mentions。
    • 只有验证后的事件才能解析或创建 FeishuPrincipal;群聊始终使用发送者身份。
    • 把 principal 传入命令处理并在停用/缺身份时安全拒绝。
    • Requirements: 1, 2.2, 2.4, 8.1, 9.1
  • 3. 实现个人规则、偏好、兴趣和记忆隔离

    • 新增 app/modules/personalization/ 偏好模型与服务。
    • 为 AI 规则/记忆和市场自选增加 owner按 owner 查询、去重和安全认领。
    • 将现有 AI rule API 固定为公司规则入口;飞书个人/公司规则命令分别授权。
    • 实现个人规则、偏好、兴趣 CRUD 命令及跨用户隔离测试。
    • Requirements: 3, 4, 8.2, 8.3, 8.5, 8.7, 9.4
  • 4. 实现会话与个性化 AI 问答

    • 新增会话和消息模型、20 轮裁剪、30 天清理与重置命令。
    • 按既定优先级组装公司规则、个人规则、请求、偏好/兴趣、记忆和会话历史。
    • 隔离 provider sessionnoop/AI 不可用时不写历史、偏好或记忆。
    • 实现白名单自动偏好提取与敏感画像拒绝。
    • Requirements: 3, 4.5, 5, 8.3, 8.7, 9.2
  • 5. 实现订阅与受控中文计划解析

    • 新增订阅/投递模型、schema 和服务。
    • 支持单次、每天、工作日、每周、每月和间隔计划以及 IANA 时区。
    • 实现 15 分钟下限、50 个启用订阅、每日 96 条、安静时段。
    • 实现私聊固定 open_id、管理员当前群绑定以及订阅生命周期命令/API。
    • Requirements: 6, 8.4, 8.6, 8.7, 10.4
  • 6. 实现持久化扫描、幂等投递和重试

    • 每分钟扫描到期订阅,通过行锁和唯一投递键领取并推进下一执行时间。
    • 为 Feishu client 增加 open_id、消息 UUID 和业务状态校验。
    • 实现个人/群订阅上下文边界、1/5/15 分钟重试和无 Celery 持久化恢复。
    • 接入 scheduler、Celery task/queue helper 并保持固定群报表任务不变。
    • Requirements: 6.7, 7, 10.3
  • 7. 实现用户数据查看、忘记我和运行可观测性

    • 实现 我的数据、二次确认、事务删除和审计匿名化。
    • 增加用户/订阅/投递查询 API、活跃用户和投递状态指标。
    • 启用订阅但缺少飞书凭据时 readiness 返回 degraded。
    • Requirements: 6.2, 9, 10.2, 10.4
  • 8. 完成配置、Alembic 迁移与全量验证

    • 增加安全关闭的功能开关、管理员身份配置并更新 .env 配置。
    • 创建迁移并处理旧公司规则、旧自动记忆和旧自选延迟认领。
    • 补齐身份、隔离、权限、计划、并发、投递、删除和迁移回归测试。
    • 运行 Ruff、compileall、完整 pytest 和迁移一致性检查。
    • Requirements: 3.7, 10
  • 9. 安全协调现有混合平台数据库

    • 新增严格允许列表的 reconciliation revision 和一次性 baseline runner。
    • 实现结构指纹、advisory transaction lock、权限/行数/依赖预检和原子版本登记。
    • 用脱敏结构快照验证成功、漂移拒绝和失败回滚;不得连接或修改业务 MySQL。
    • Requirements: 10, 11
  • 10. 补齐生产运行编排和 fail-closed readiness

    • 增加明确事件 transport、生产配置校验、.env 配置和长连接服务编排。
    • 为 API、scheduler、worker、飞书事件进程增加重启/heartbeat并校验 Alembic head。
    • 支持外部 PostgreSQL 部署且不被 Compose 内部数据库 URL 意外覆盖。
    • Requirements: 12
  • 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
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