feat: enforce tenant isolation and shared question bank

This commit is contained in:
2026-07-27 16:59:12 +08:00
parent 28e9a9fa41
commit db4c7b4496
137 changed files with 6402 additions and 112274 deletions

View File

@@ -34,7 +34,8 @@ Tiku.IntegrationTests # API / EF 模型集成测试
- ASP.NET Authentication 负责身份认证。
- ASP.NET Authorization 负责权限策略。
- JWT + 数据库 `auth_sessions` 负责 access/refresh/session 闭环。
- `ICurrentUser` / `ICurrentTenant` 统一当前用户和租户上下文。
- `ICurrentUser` / 只读 `ITenantContext` 统一当前用户和请求租户上下文。
- EF Core Query Filter、写入拦截器和 PostgreSQL 组合约束共同阻断跨租户读写。
- PostgreSQL FK / unique / check / index 负责数据完整性底线。
- 审计事件表记录关键行为。
@@ -64,7 +65,7 @@ Tiku.IntegrationTests # API / EF 模型集成测试
旧版对连接池、日志、跨域、限流、配置校验这些工程底座比较薄。新后端已经补上:
- 单例 `NpgsqlDataSource` + `AddDbContextPool<TikuDbContext>`
- 单例 `NpgsqlDataSource` + scoped `AddDbContext<TikuDbContext>`,避免租户状态跨请求复用
- Serilog 结构化日志和请求上下文日志。
- 集中 CORS 配置,生产默认不放开 Origin。
- ASP.NET RateLimiter 全局限流。
@@ -89,18 +90,19 @@ Tiku.IntegrationTests # API / EF 模型集成测试
数据库模型迁移已经完成到 greenfield 初始 schema
```text
Tiku.Infrastructure/Persistence/Migrations/20260725220742_InitialSchema.cs
Tiku.Infrastructure/Persistence/Migrations/20260727084726_InitialSchema.cs
```
当前 EF 模型覆盖:
- 租户、用户、成员、认证、Session、短信验证码
- 地区、模块、院校、专业、科目、分类
- 题库、题目题目版本
- 内容入口、内容节点、题集练习蓝图
- 平台公共题库、租户私有题库、题目引用和题目版本
- 公共分类主干、租户扩展分类、内容入口、题集练习蓝图
- 词汇、手册、用户单词进度
- 资源、图片、App 资源、视频解析、导入任务
- 练习、答题、收藏、错题、报告、统计
- 版本锁定练习、答题、收藏、错题、报告、统计
- 自定义域名 DNS/TLS 生命周期和版本化前端运行时配置
- 商品、订单、支付、权益、兑换码、优惠券
- 推广、CRM、佣金
- Banner、FAQ、公告、通知、徽章、审计