Files
tiku-backend.net/docs/adr/0001-authoritative-dotnet-backend.md

33 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ADR 0001以 .NET + PostgreSQL 作为唯一目标后端
- 状态:已接受
- 日期2026-07-27
## 背景
旧 NestJS 后端与 Supabase 数据库、认证、存储和规则耦合较深。新的 ASP.NET Core 后端已经具备 EF Core 模型、迁移链和业务 API。前后端尚未正式开发仍可直接收敛技术路线。
## 决策
1. 本仓库是题库 SaaS 唯一继续演进的后端。
2. 旧 NestJS 仓库冻结为业务行为、接口契约和数据迁移参考。
3. EF Core Migration 是普通数据库结构变更的权威历史;生产通过 `Tiku.DbMigrator` 显式执行迁移API 不自动同步结构。
4. 应用只依赖标准 PostgreSQL 和 Npgsql不以 Supabase 作为运行时依赖或托管目标。
5. 身份、对象存储、短信、支付、通知和 AI 通过 Application 接口隔离供应商,并通过 `TenantExternalProvider` + `TenantSecret` 配置。
6. Yudao 只参考 RBAC、租户套餐、审计和后台产品设计不作为运行时依赖。
7. 新功能按业务闭环迁移和验收,不以 Controller 或 endpoint 数量作为完成标准。
## 边界
- 认证和授权由 ASP.NET Core、JWT、数据库 Session 和应用权限策略负责。
- 多租户隔离由请求租户上下文、EF 查询/写入防护、数据库约束和真实 PostgreSQL 测试共同负责。
- 普通表、列、索引、外键和普通约束由 EF Core Migration 管理。
- EF 不能表达的跨表租户不变量使用集中 PostgreSQL guard由 migration 调用并接受测试。
- 旧 OpenAPI 用于发现能力缺口,不要求新接口逐字兼容。
## 结果
- 不建设长期双后端或双写链路。
- 不保留 Supabase 作为认证、存储或数据库运行时目标。
- 更换 PostgreSQL 托管商或外部服务供应商不要求重写业务代码。