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

112 lines
5.5 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.

# 迁移路线与剩余范围
本文档是旧 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](adr/0001-authoritative-dotnet-backend.md)。
- 工程底座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 商城:可售卖 Feature、不可变套餐版本、独立 PlatformBilling、租户自助账务、业务额度、订阅周期 Worker 和 onboarding 已落地。
阶段归档:
- [第一阶段:仓库转正基线](migration/phase-1-repository-baseline.md)
- [第二阶段:.NET 工程底座](migration/phase-2-engineering-foundation.md)
- [第三阶段:强租户隔离、共享题库与租户前端运行时](migration/phase-3-tenant-isolation-and-shared-question-bank.md)
- [第四阶段:外部服务解耦](migration/phase-4-external-provider-decoupling.md)
- [第五阶段:后台能力与 Worker 基座](migration/phase-5-backoffice-worker-operations.md)
- [第七阶段:学生端体验与内容消费闭环](migration/phase-7-student-experience-and-content-consumption.md)
- [第八阶段AI 底座与教师端对话](migration/phase-8-ai-foundation.md)
- [第九阶段SaaS 模块商城与租户交付闭环](migration/phase-9-saas-marketplace-and-onboarding.md)
- [API 契约基线](migration/contracts/README.md)
后续产品化开发统一按 [SaaS 题库产品边界与后续接口路线](architecture/saas-product-and-api-roadmap.md) 执行。该文档定义三端边界、平台 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. 教师教学闭环
- 作业、考试、班级发布、批阅和教学报告。
- 学生断点续答、自动交卷、主观题复核和成绩分析。
- 教学导出通过 Worker 和对象存储交付。
### 5. 后台运营细化
- 租户 secrets 通用后台管理。
- 租户监督规则、跟进报表和洞察报表。
- 更细粒度 RBAC 权限点。
- 操作审计覆盖率补齐。
- 发票、催缴、佣金联动调账。
### 6. 旧路径兼容评估
只有前端明确依赖且重写成本高时,才增加薄兼容 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`
## 每批验收
```bash
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
```