feat: add runtime logging cors and zlinq foundation

This commit is contained in:
xiong
2026-07-26 13:39:06 +08:00
parent f0553a7919
commit f4783c5de3
10 changed files with 340 additions and 104 deletions

View File

@@ -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 存储: