forked from gongxuegit/tiku-backend.net
feat: add runtime logging cors and zlinq foundation
This commit is contained in:
39
README.md
39
README.md
@@ -27,6 +27,8 @@
|
||||
- Entity Framework Core
|
||||
- PostgreSQL
|
||||
- Npgsql
|
||||
- Serilog
|
||||
- ZLinq
|
||||
- xUnit
|
||||
|
||||
项目分层:
|
||||
@@ -42,6 +44,43 @@ Tiku.UnitTests # 单元测试
|
||||
Tiku.IntegrationTests # EF 模型/持久化约束测试
|
||||
```
|
||||
|
||||
## 运行时地基
|
||||
|
||||
这次迁移不只是把 Node/Nest/Supabase 换成 C#,而是把旧系统没有认真处理的运行时基础补起来。
|
||||
|
||||
### 数据库连接
|
||||
|
||||
- API 通过单例 `NpgsqlDataSource` 管理 PostgreSQL 连接池。
|
||||
- EF Core 使用 `AddDbContextPool<TikuDbContext>`,避免每个请求重复构造完整 DbContext 依赖图。
|
||||
- 连接池参数继续交给 PostgreSQL/Npgsql connection string 配置,例如 `Maximum Pool Size`、`Minimum Pool Size`、`Timeout`、`Command Timeout`。
|
||||
- 业务代码不直接 new 连接,不绕过统一的 EF / Npgsql 配置入口。
|
||||
|
||||
### 日志
|
||||
|
||||
- API 接入 Serilog 结构化日志。
|
||||
- 启动阶段使用 bootstrap logger,避免应用启动失败时完全没有日志。
|
||||
- 请求日志统一记录 HTTP method、path、status code、elapsed 等基础字段。
|
||||
- 请求日志会补充当前用户、租户、Session、租户角色、TraceId 等上下文,后续排查“某个机构某个用户某次请求”会比旧方案清楚很多。
|
||||
- EF SQL、Microsoft 框架日志默认降噪;开发环境可提高 EF command 日志等级。
|
||||
|
||||
### 跨域
|
||||
|
||||
- CORS 作为 API 安全边界配置,不在 Controller 里散写。
|
||||
- 生产默认不放行任何 Origin,避免开发便利配置意外带到线上。
|
||||
- 开发环境默认允许本地前端常用端口:
|
||||
- `http://localhost:5173`
|
||||
- `http://127.0.0.1:5173`
|
||||
- `http://localhost:3000`
|
||||
- `http://127.0.0.1:3000`
|
||||
- 不默认允许 credentials;如果后续需要 cookie 模式或管理后台单独域名,需要显式配置。
|
||||
- 多租户正式域名确定后,可以把 CORS 白名单从静态配置升级为“租户域名 + 平台管理域名”的集中策略。
|
||||
|
||||
### 热路径集合处理
|
||||
|
||||
- API 项目引入 ZLinq,作为低分配集合处理工具。
|
||||
- 当前先在小范围权限判断里落模板,后续题库筛选、权限集合、菜单/内容树投影等热路径再逐步使用。
|
||||
- 不是为了炫技替换所有 LINQ;只在明确高频、低收益分配明显的路径使用。
|
||||
|
||||
## 数据库策略
|
||||
|
||||
当前数据库以 PostgreSQL 为核心能力,而不是把 PostgreSQL 当成普通 KV 存储:
|
||||
|
||||
Reference in New Issue
Block a user