Files
tiku-backend.net/docs/migration-roadmap.md

5.0 KiB
Raw Blame History

迁移路线与剩余范围

本文档是旧 PocketBase / Supabase / NestJS 后端迁移到 ASP.NET Core + PostgreSQL 后端的状态入口。

固定原则

  • 新前端按新 REST API 对接;旧 URL 默认不兼容。
  • 旧 NestJS 只作为行为清单和验收参考。
  • 不保留 Supabase 运行时依赖、Auth/Storage provider 或 RLS 模型。
  • 数据一致性优先落 PostgreSQL FK / unique / check / index跨表租户不变量用集中 PostgreSQL guard。
  • 外部身份、短信、对象存储、支付、通知和 AI 都通过 Application 接口与 TenantExternalProvider 配置解耦。
  • 新功能按业务闭环验收,不按 endpoint 数量验收。

已完成主线

  • 仓库转正:本仓库是唯一目标后端,见 ADR 0001
  • 工程底座ASP.NET Core、EF Core、Npgsql、PostgreSQL、Serilog、RateLimiter、Options 校验。
  • 数据库greenfield InitialSchema,真实 PostgreSQL 迁移和集成测试。
  • 租户隔离Host 解析、ITenantContext、EF Query Filter、SaveChanges 拦截器、组合外键、PostgreSQL guard。
  • 共享题库:平台公共题库、租户私题、TenantQuestionReference、版本锁定练习。
  • 前端运行时自定义域名、DNS/TLS 生命周期、GET /api/runtime/bootstrap
  • 外部服务解耦:TenantExternalProvider + TenantSecret身份、短信、OSS、支付、通知 provider 边界。
  • 后台底座:平台/租户 RBAC、菜单、审计、平台后台、租户后台、交易运营、Worker 任务模型。
  • 学生体验:视频搜索/播放/进度、题目解析视频、签到、积分流水、内容导入异步化。
  • AI 基础:已引入 SK 包到 Infrastructure已固定 provider-neutral 对话存储方向;业务功能仍待实现。

阶段归档:

后续产品化开发统一按 SaaS 题库产品边界与后续接口路线 执行。该文档定义三端边界、平台 SaaS 商城与租户学生商城的双交易域、套餐能力与 RBAC 分层,以及阶段 9A9F。

剩余范围

1. AI 教师端对话与反馈审核

  • 租户教师后台基础对话。
  • function calling 只允许调用受审计的后端业务函数。
  • AI 审核题目反馈只生成建议、风险等级和人工复核标记,不直接改业务状态。
  • 租户 AI Provider 配置、API Key 托管、调用审计和成本记录。
  • 后续再做推荐报告、导出、RAG 和多模型路由。

2. 内容导出与导入增强

  • 内容导出任务创建、查询和下载。
  • 题库、题目、学生数据导出到对象存储。
  • 导入 preview/result/issue 更细化。
  • 大文件导入进度、失败行回放和重试。

3. Worker 实处理器补强

  • content_export 完整导出。
  • asset_security_scan 接真实扫描 provider。
  • statistics_aggregation 增量聚合。
  • commerce_reconciliation 接真实 provider bill downloader。
  • tenant_domain_recheck 周期调度和告警联动。

4. 后台运营细化

  • 租户 secrets 通用后台管理。
  • 租户监督规则、跟进报表和洞察报表。
  • 更细粒度 RBAC 权限点。
  • 操作审计覆盖率补齐。
  • 发票、催缴、佣金联动调账。

5. 旧路径兼容评估

只有前端明确依赖且重写成本高时,才增加薄兼容 Controller。兼容层不得恢复

  • Supabase 相关路径;
  • 旧 grant/adoption 公共题库授权模型;
  • QuestionIds JSON
  • 旧 Provider 专用配置表。

已由新接口替代的旧行为:

  • /api/profile/activity-tasks -> /api/points/tasks
  • /api/profile/exchange-items/api/profile/exchange-items/redeem -> /api/points/exchange-items/api/points/exchange-orders
  • 公共题库 adopt/sync/grant -> 平台公共题库所有权 + TenantQuestionReference

每批验收

dotnet restore TIKU-BACKEND.slnx
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
dotnet ef migrations has-pending-model-changes \
  --project Tiku.Infrastructure \
  --startup-project Tiku.DbMigrator
git diff --check
git status --short --branch