动态作用域模型
Dynamic Scope Model
运行时动态生成带用户作用域的数据模型,实现多租户数据隔离
子问题
1.用户字段与核心模型动态合并
2.多租户记忆隔离
3.按 user/agent/session 维度过滤
4.字段冲突检测
5.ORM 层 scope 字段自动建索引与复合唯一约束
6.三后端 merge 变体的一致性保证
7.scope 模型缓存避免重复创建
各项目的解法1 solutions
Signals
横向对比
| 维度 | memU |
|---|---|
| 作用域声明 | Pydantic BaseModel 子类声明,UserConfig.model 传入 |
| 合并机制 | type() 多重继承 + model_fields 冲突检测 |
| 后端适配 | 三后端各自实现 merge 变体(InMemory/Postgres/SQLite) |
| 索引策略 | 自动创建 scope 索引 + unique_with_scope 复合唯一约束 |
| 过滤校验 | _normalize_where 白名单校验 + __in 操作符支持 |
| 类型安全 | 泛型 TBaseRecord 保持返回类型与 core_model 一致 |
最佳实践
1.merge_scope_model 检测字段冲突防止覆盖核心字段
2.用户模型通过 Pydantic BaseModel 定义保证类型安全
3.where 过滤器统一应用于所有 Repository 查询
4.Postgres schema 用 _MODEL_CACHE 缓存已构建的 scoped SQLModel 避免重复创建
5.build_table_model 两步创建(Base+Table)保持 SQLModel table 行为正确
6.unique_with_scope 实现租户内唯一约束而非全局唯一