feat: 添加飞书用户模块和订阅功能支持

- 新增feishu_users模块用于处理飞书用户身份验证和权限管理
- 新增subscriptions模块用于处理订阅相关功能
- 新增personalization模块用于个性化服务
- 在alembic迁移配置中注册新的模型模块
- 在API路由器中添加feishu_users和subscriptions路由
- 实现事件调度服务的改进,包括错误处理和状态更新优化
- 添加飞书命令处理的权限检查机制
- 实现飞书应用票据事件处理
- 改进审计日志记录功能
```
This commit is contained in:
2026-07-27 08:02:17 +08:00
parent db751f03b4
commit d7db84571d
148 changed files with 17110 additions and 765 deletions

View File

@@ -0,0 +1,70 @@
# 实现任务
- [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.example`
- 创建迁移并处理旧公司规则、旧自动记忆和旧自选延迟认领。
- 补齐身份、隔离、权限、计划、并发、投递、删除和迁移回归测试。
- 运行 Ruff、compileall、完整 pytest 和迁移一致性检查。
- _Requirements: 3.7, 10_
```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
```