refactor: consolidate backend into modular monolith
This commit is contained in:
16
README.md
16
README.md
@@ -1,6 +1,6 @@
|
||||
# TIKU Backend
|
||||
|
||||
TIKU Backend 是题库 SaaS 的 ASP.NET Core 后端,使用 EF Core 管理 PostgreSQL 数据,提供平台端、租户端和学生端 API,并由独立 Worker 处理后台任务。
|
||||
TIKU Backend 是题库 SaaS 的 ASP.NET Core 模块化单体,使用 EF Core 管理 PostgreSQL 数据,由同一个 API 进程提供平台端、租户端和学生端接口并处理后台任务。
|
||||
|
||||

|
||||
|
||||
@@ -10,26 +10,24 @@ TIKU Backend 是题库 SaaS 的 ASP.NET Core 后端,使用 EF Core 管理 Post
|
||||
- Entity Framework Core 10 + Npgsql 10 + PostgreSQL
|
||||
- ASP.NET Core Identity + RSA JWT + 数据库存储的 Session
|
||||
- Scalar + OpenAPI(仅 Development 暴露)
|
||||
- Redis(分布式安全频控和生产输出缓存)
|
||||
- MassTransit 8 + RabbitMQ 4 + EF Core Outbox
|
||||
- Redis(安全频控、Feature 缓存和生产输出缓存)
|
||||
- PostgreSQL 后台任务队列、租约和重试
|
||||
- Serilog + OpenTelemetry
|
||||
- xUnit 单元测试和真实 PostgreSQL 集成测试
|
||||
|
||||
## 解决方案结构
|
||||
|
||||
```text
|
||||
Tiku.Api HTTP API、中间件、认证授权、OpenAPI/Scalar、静态管理端
|
||||
Tiku.Api HTTP API、中间件、认证授权、OpenAPI/Scalar 和 Hosted Service
|
||||
Tiku.Application 用例契约、应用服务接口和安全上下文
|
||||
Tiku.Domain 领域实体、枚举和值对象
|
||||
Tiku.Infrastructure EF Core、PostgreSQL、认证、消息和外部服务实现
|
||||
Tiku.Contracts API 与 Worker 之间的版本化消息契约
|
||||
Tiku.Infrastructure EF Core、PostgreSQL、认证、后台任务和外部服务实现
|
||||
Tiku.DbMigrator 数据库迁移、内置目录 seed 和平台管理员引导
|
||||
Tiku.Worker 域名、订阅、用量和后台任务处理
|
||||
Tiku.UnitTests 单元测试
|
||||
Tiku.IntegrationTests API、授权、EF 模型、迁移和真实 PostgreSQL 测试
|
||||
```
|
||||
|
||||
依赖方向固定为:`Domain <- Application <- Infrastructure`。`Api`、`Worker` 和 `DbMigrator` 是组合根;第三方 SDK、数据库访问和密钥处理只放在 Infrastructure。
|
||||
依赖方向固定为:`Domain <- Application <- Infrastructure`。`Api` 是唯一运行时组合根,`DbMigrator` 是部署时迁移入口;第三方 SDK、数据库访问和密钥处理只放在 Infrastructure。
|
||||
|
||||
## 快速启动
|
||||
|
||||
@@ -56,7 +54,7 @@ Development 首次迁移会创建平台管理员 `admin@tiku.local`,随机临
|
||||
## 运行时边界
|
||||
|
||||
- API 不自动执行数据库迁移;部署和本地初始化都使用 `Tiku.DbMigrator`。
|
||||
- Development 可不配置 Redis 和 RabbitMQ;Production 缺少任一依赖时 API 与 Worker 会拒绝启动。
|
||||
- Development 可不配置 Redis;Production 缺少 Redis 时 API 会拒绝启动。
|
||||
- 租户由可信 Host 解析;平台 Host 上只有允许的路径可通过 `x-tenant-code` 或 `tenantCode` 指定租户。
|
||||
- 租户数据由 EF Query Filter、写入拦截器、租户限定外键/唯一索引和 PostgreSQL guard 共同隔离。
|
||||
- 普通请求默认要求认证;匿名接口必须显式声明 `[AllowAnonymous]`。
|
||||
|
||||
Reference in New Issue
Block a user