forked from xiongyuxing/tiku-backend.net
1.9 KiB
1.9 KiB
第四阶段:外部服务解耦
状态:已完成。
目标
- 完全移除 Supabase Auth / Storage 兼容层。
- 业务层只依赖身份、短信、对象存储、支付和通知抽象。
- 第三方 SDK、账号、bucket、密钥和 claim 结构只出现在 Infrastructure provider 边界。
结果
- Provider 配置统一为
TenantExternalProvider+TenantSecret。 Capability覆盖 Identity、ObjectStorage、Sms、Payment、Notification。- 同一租户内
Capability + Provider唯一。 ConfigPublic只保存公开配置;敏感字段必须进入TenantSecret。- 删除旧
TenantAuthProvider、TenantPaymentAccount和 Supabase storage provider 路径。 - 阿里云 OSS、阿里云短信、微信、支付宝 SDK 只允许在 Infrastructure 使用。
接口边界
IIdentityProvider:封装 password、sms、wechat_web、wechat_miniapp 身份解析,不签发 JWT。ISmsProvider:只负责发送,验证码生成、哈希、频控和校验归业务服务。IObjectStorageService:bucket/provider 从租户配置解析,业务输入不得任意覆盖。IPaymentProvider:支付账户和密钥从统一 Provider 配置加载。INotificationProvider:默认站内通知持久化,后续外发通道按 provider 扩展。
验收
- 租户 A/B Provider 配置和密钥互不读取。
ConfigPublic拒绝secret、token、key、privateKey等敏感字段。- 资产上传不能伪造 bucket/provider。
- 业务层不引用第三方 SDK namespace。
- 生产代码不回流 Supabase provider 或旧专用配置表。
dotnet build TIKU-BACKEND.slnx --no-restore
dotnet test Tiku.UnitTests/Tiku.UnitTests.csproj --no-build
dotnet test Tiku.IntegrationTests/Tiku.IntegrationTests.csproj --no-build
dotnet ef migrations script --project Tiku.Infrastructure --startup-project Tiku.DbMigrator
git diff --check