Files
gongxue-base/docs/refactor/implementation-status.md

16 KiB
Raw Blame History

Supabase 重构功能进度矩阵

更新时间2026-06-21 22:52

当前结论

当前重构已经完成了 Supabase/PostgreSQL 多租户底座、核心业务表、PocketBase 数据导入器雏形、学生端核心 API、租户后台 API、平台后台 SaaS 账务 API、内容资产/题目/单词/知识手册 JSON 批量导入基础闭环、题库入口/任意深度分类/题目集合/练习蓝图/组卷快照基础闭环,以及本地 Docker/API 构建验证。

但这还不是完整商用交付状态,也不能说旧项目核心功能已经全部重构完成。现在更准确的状态是:后端商用架构骨架已经立住,核心业务正在按模块补齐。部分功能已经有可调用 API部分功能只有数据模型和导入映射部分功能还没有前端/自动化测试闭环。

新旧项目位置

范围 路径 状态
旧 PocketBase/React 项目 F:\project\srcF:\project\pb_hooksF:\project\pb_migrations 保留作为功能参照和迁移来源
新 Node API F:\project\apps\api 已按 core/features 分层重构
Supabase/PostgreSQL 迁移 F:\project\supabase\migrations 已建立多租户和业务域表
PocketBase 数据导入 F:\project\scripts\import-pocketbase 已支持多类旧数据归一化导入与校验
共享包 F:\project\packages\configF:\project\packages\dbF:\project\packages\domain 已建立基础共享层
旧 Web 到新 API 适配 F:\project\src\services\supabaseApi.ts 已开始抽象,后续应迁到 Taro 共享 API 包

功能完成度

模块 数据模型 PocketBase 导入 API 自动化测试 当前状态
多租户隔离 已建 tenantstenant_domainstenant_brandingtenant_settings、RLS 基础 部分支持 租户解析、品牌、域名、支付账户、登录 provider、平台建租户已实现 核心 API 集成测试含租户隔离断言 基础可用,正式 JWT/RLS 权限闭环未完成
刷题题库 已建题库、题目、题目版本、内容入口、任意深度分类树、考试意向标记、题目集合、练习蓝图、导入任务台账 已支持核心映射JSON 导入可落到新入口/节点/集合 题目列表、内容入口、分类树、集合题目、顺序/随机/全真模拟 session、答题提交、租户后台题目录入/更新、JSON 预览/导入已实现 核心 API 集成测试含导航、组卷、导入断言 新题库导航和组卷基础闭环可跑完整交卷评分报告、Excel 导入、公题库采纳/授权仍需补齐
错题本 已建 wrong_questions 已支持旧错题归一化 错题列表、答题自动入错题、移出错题已实现 仅烟测 基础功能已实现,复习计划和统计未完成
收藏夹 已建 favorite_questions 已支持旧收藏归一化 收藏/取消收藏、收藏列表已实现 仅烟测 基础功能已实现
用户订阅/题库会员/SVIP 已建 orderspaymentsentitlementssvip_plans、激活码 已映射旧 SVIP/会员权益 下单、手动支付确认、激活码兑换、权益查询已实现 仅烟测 业务骨架可跑,真实微信/支付宝支付和 webhook 未完成
背单词 已建单词单元、单词、进度、收藏表,并可绑定 content_entries/content_nodes 已支持内容和部分用户状态映射 单元/单词只读、进度、收藏、统计、租户后台单词维护 API、旧模板/新模板 JSON 预览导入已实现 核心 API 集成测试含导入断言 学生端基础学习状态、后台维护和批量 JSON 导入已实现,复习算法和后台统计待完善
知识手册 已建手册科目、章节、条目,并可绑定 content_entries/content_nodes 已支持内容导入 只读 API、租户后台手册科目/章节/条目维护 API、嵌套 JSON 预览导入已实现 核心 API 集成测试含导入断言 学生端阅读、后台维护和批量 JSON 导入基础可用,富文本资源/版本管理待补
分数线 已建院校、专业、字段、记录表 已支持导入映射 字段、院校、专业、记录、趋势、年份、租户后台维护 API 已实现 核心 API 集成测试 查询和后台维护基础闭环已实现,复杂动态筛选/批量导入待补
题目视频讲解 已建 video_explanationsquestion_videos 已支持导入映射 单题视频、批量预加载、通用视频搜索、租户后台视频创建绑定 API 已实现 核心 API 集成测试 播放数据和后台绑定链路已实现,会员权限、签名 URL、播放统计待补
资料下载/PDF 已扩展 content_assets,新增资源台账和导入任务表 app_assets/images 兼容导入 租户后台资源管理、上传/下载签名占位、学生端资料列表/下载权限已实现 核心 API 集成测试含 SVIP 资料下载 资料资源基础闭环可跑,真实 OSS/COS 签名、PDF 预览渲染、资料下载前端待补
个人中心 已建 student_profiles、会员权益、订单、练习记录 已支持部分用户资料导入 个人资料、目标院校/专业、会员状态、最近练习、统计聚合 API 已实现 核心 API 烟测 学生端基础个人中心已实现,签到/任务/更细统计待补
活动/优惠 已建优惠券、激活码、激活码批次、banner、FAQ、公告等基础表 部分支持 banner/FAQ/公告只读与租户后台维护、激活码兑换、激活码批次、批量生成激活码、优惠券维护已实现 核心 API 集成测试 基础运营后台可用,复杂活动规则、营销自动化、核销报表待补
销售/代理客资追踪 已建推荐码、首绑客资、团队关系、小程序码缓存、CRM 队列 referral_tracks 已有映射基础 邀请码、扫码/分享事件、首绑保护、销售统计、客资明细、手动补绑、团队关系、CRM 配置/队列已实现 核心 API 集成测试 增长链路基础可用真实微信小程序码、分佣结算单、CRM worker 推送待补
租户后台 已建品牌、域名、设置、支付账户、登录 provider、私密密钥表、成员、审计日志、资源台账、导入台账、内容导航台账 不适用 概览、品牌、设置、域名、支付账户、登录配置、密钥掩码、活动内容、兑换码/优惠券、成员管理、权限矩阵、审计查询、内容入口/分类树/题目集合/练习蓝图维护、资源管理、题目 JSON 导入已实现 核心 API 集成测试含角色/权限/租户隔离/密钥不泄露/导航/组卷/资源与导入断言 租户配置与运营闭环可用,前端权限 UI、Excel 导入、真实对象存储签名待补
平台后台 已建 SaaS 套餐、订阅、账单、服务费、用量 不适用 租户管理、账单、收款确认、用量记录已实现 仅烟测 平台收费链路骨架可用,正式鉴权/审计/自动计费未完成
登录认证 已建短信验证码、会话、OAuth provider 配置表 旧用户映射已预留 短信 mock 登录、迁移期 session、OAuth 占位已实现 仅烟测 本地可测,真实短信/微信/QQ 登录未完成
数据导入 已建立 importer、risk report、validate 已覆盖多类旧集合 命令行导入/校验 pb:import:validate 基础工具可用,需用真实完整数据做多轮 dry-run
测试体系 不适用 不适用 不适用 已新增核心 API 集成测试、租户隔离测试、权限矩阵测试、资源/题目导入测试、导入校验 还不是完整覆盖,支付幂等、真实导入回归、前端端到端测试仍需补

已实现 API 范围

auth:
  POST /api/auth/sms/send
  POST /api/auth/sms/verify
  GET  /api/auth/me
  POST /api/auth/logout
  POST /api/auth/oauth/wechat
  POST /api/auth/oauth/wechat-miniapp
  POST /api/auth/oauth/qq

tenant:
  GET  /api/tenant/resolve

catalog:
  GET  /api/catalog/regions
  GET  /api/catalog/region-modules
  GET  /api/catalog/module-nodes
  GET  /api/catalog/schools
  GET  /api/catalog/majors
  GET  /api/catalog/subjects
  GET  /api/catalog/categories
  GET  /api/catalog/questions
  GET  /api/catalog/content-entries
  GET  /api/catalog/content-nodes
  GET  /api/catalog/question-collections
  GET  /api/catalog/question-collections/questions
  GET  /api/catalog/practice-blueprints
  GET  /api/catalog/assets
  GET  /api/catalog/assets/download
  GET  /api/catalog/vocabulary-units
  GET  /api/catalog/vocabulary-words
  GET  /api/catalog/handbook-subjects
  GET  /api/catalog/handbook-chapters
  GET  /api/catalog/handbook-entries
  GET  /api/catalog/banners
  GET  /api/catalog/faqs
  GET  /api/catalog/announcements
  GET  /api/catalog/products
  GET  /api/catalog/timelines
  GET  /api/catalog/svip-plans

learning:
  POST /api/learning/practice-sessions
  POST /api/learning/answers
  GET  /api/learning/favorites/questions
  POST /api/learning/favorites/questions
  GET  /api/learning/wrong-questions
  POST /api/learning/wrong-questions/resolve
  GET  /api/learning/vocabulary/progress
  POST /api/learning/vocabulary/progress
  GET  /api/learning/vocabulary/favorites
  POST /api/learning/vocabulary/favorites
  GET  /api/learning/vocabulary/stats

profile:
  GET   /api/profile/me
  PATCH /api/profile/me

scoreline:
  GET  /api/scoreline/fields
  GET  /api/scoreline/schools
  GET  /api/scoreline/majors
  GET  /api/scoreline/records
  GET  /api/scoreline/trend
  GET  /api/scoreline/years

video:
  GET  /api/questions/{questionId}/videos
  GET  /api/questions/videos?questionId=...
  POST /api/questions/videos/batch
  GET  /api/videos/search

tenant-content:
  GET   /api/tenant-content/content-entries
  PUT   /api/tenant-content/content-entries
  GET   /api/tenant-content/content-nodes
  PUT   /api/tenant-content/content-nodes
  GET   /api/tenant-content/question-collections
  PUT   /api/tenant-content/question-collections
  PUT   /api/tenant-content/question-collections/items
  GET   /api/tenant-content/practice-blueprints
  PUT   /api/tenant-content/practice-blueprints
  POST  /api/tenant-content/questions
  PATCH /api/tenant-content/questions
  GET   /api/tenant-content/assets
  PUT   /api/tenant-content/assets
  POST  /api/tenant-content/assets/sign-upload
  POST  /api/tenant-content/assets/sign-download
  POST  /api/tenant-content/imports/preview/questions
  POST  /api/tenant-content/imports/questions
  POST  /api/tenant-content/imports/preview/vocabulary
  POST  /api/tenant-content/imports/vocabulary
  POST  /api/tenant-content/imports/preview/handbook
  POST  /api/tenant-content/imports/handbook
  GET   /api/tenant-content/imports
  GET   /api/tenant-content/imports/issues
  GET   /api/tenant-content/videos
  PUT   /api/tenant-content/videos
  POST  /api/tenant-content/question-videos
  GET   /api/tenant-content/scoreline/schools
  PUT   /api/tenant-content/scoreline/schools
  GET   /api/tenant-content/scoreline/majors
  PUT   /api/tenant-content/scoreline/majors
  GET   /api/tenant-content/scoreline/fields
  PUT   /api/tenant-content/scoreline/fields
  GET   /api/tenant-content/scoreline/records
  PUT   /api/tenant-content/scoreline/records
  GET   /api/tenant-content/vocabulary-units
  PUT   /api/tenant-content/vocabulary-units
  GET   /api/tenant-content/vocabulary-words
  PUT   /api/tenant-content/vocabulary-words
  GET   /api/tenant-content/handbook-subjects
  PUT   /api/tenant-content/handbook-subjects
  GET   /api/tenant-content/handbook-chapters
  PUT   /api/tenant-content/handbook-chapters
  GET   /api/tenant-content/handbook-entries
  PUT   /api/tenant-content/handbook-entries

commerce:
  POST /api/commerce/orders
  GET  /api/commerce/orders
  GET  /api/commerce/entitlements
  GET  /api/commerce/entitlements/check
  POST /api/commerce/payments/manual-confirm
  POST /api/commerce/activation-codes/redeem

referral/crm:
  POST /api/referral/invite-code
  POST /api/referral/resolve
  POST /api/referral/track-event
  POST /api/referral/bind
  GET  /api/referral/stats
  GET  /api/referral/sales-stats
  GET  /api/referral/sales-clients
  POST /api/referral/manual-bind
  GET  /api/referral/team
  PUT  /api/referral/team
  POST /api/referral/qrcode
  GET  /api/crm/config
  PUT  /api/crm/config
  GET  /api/crm/queue

tenant-admin:
  GET  /api/tenant-admin/permissions
  GET  /api/tenant-admin/overview
  PUT  /api/tenant-admin/branding
  PUT  /api/tenant-admin/settings
  GET  /api/tenant-admin/domains
  POST /api/tenant-admin/domains
  GET  /api/tenant-admin/payment-accounts
  PUT  /api/tenant-admin/payment-accounts
  GET  /api/tenant-admin/auth-providers
  PUT  /api/tenant-admin/auth-providers
  GET  /api/tenant-admin/secrets
  PUT  /api/tenant-admin/secrets
  GET  /api/tenant-admin/banners
  PUT  /api/tenant-admin/banners
  GET  /api/tenant-admin/faqs
  PUT  /api/tenant-admin/faqs
  GET  /api/tenant-admin/announcements
  PUT  /api/tenant-admin/announcements
  GET  /api/tenant-admin/code-batches
  PUT  /api/tenant-admin/code-batches
  GET  /api/tenant-admin/activation-codes
  PUT  /api/tenant-admin/activation-codes
  POST /api/tenant-admin/activation-codes/generate
  GET  /api/tenant-admin/coupons
  PUT  /api/tenant-admin/coupons
  GET  /api/tenant-admin/members
  PUT  /api/tenant-admin/members
  POST /api/tenant-admin/members/disable
  GET  /api/tenant-admin/audit-logs

platform-admin:
  GET   /api/platform-admin/overview
  GET   /api/platform-admin/plans
  GET   /api/platform-admin/tenants
  POST  /api/platform-admin/tenants
  GET   /api/platform-admin/tenants/detail
  PATCH /api/platform-admin/tenants/status
  PUT   /api/platform-admin/tenants/billing-profile
  POST  /api/platform-admin/subscriptions
  GET   /api/platform-admin/invoices
  POST  /api/platform-admin/invoices
  POST  /api/platform-admin/invoices/from-subscription
  POST  /api/platform-admin/invoices/payments/manual-confirm
  GET   /api/platform-admin/usage
  POST  /api/platform-admin/usage

商用交付缺口

上线前至少还需要完成:

  1. 正式鉴权:迁移期 x-tenant-idx-user-idx-platform-admin-key 要替换为 Supabase Auth/JWT/服务端 session并逐表验证 RLS。
  2. 国内能力接入短信、微信登录、微信小程序登录、QQ 登录、微信支付、支付宝支付的租户级配置入口已具备,但真实 provider adapter、回调验签和 webhook 幂等仍需实现。
  3. 核心缺口 API学生端个人中心、分数线、题目视频详情、背单词进度/收藏已补基础 API下一步重点是后台维护、权限、统计和真实业务验收。
  4. 后台能力:题库录入、题目/单词/知识手册 JSON 批量导入、资源台账、视频绑定、知识手册维护、分数线维护、品牌/商户/登录/活动/兑换码配置、销售客资、CRM 队列、成员权限、审计查询已补 APIExcel 导入、分数线/视频导入、真实对象存储签名和前端操作台待补。
  5. 自动化测试:已建立核心 API、租户隔离、权限矩阵、后台维护、资源/导入集成测试;仍需真实数据导入回归、支付幂等、前端端到端测试。
  6. Taro 前端:建立 apps/taro 或等价跨端应用,把 H5 和小程序统一走同一套 API client。
  7. 运维交付:生产环境变量、备份恢复、日志监控、异常告警、数据库迁移流程、灰度发布、回滚预案。

下一步优先级

为了先把旧项目核心业务补齐,再进入支付/短信等商用关键模块,建议按下面顺序继续:

  1. 完善内容导入和文件上传Excel/CSV、分数线、视频导入接真实 OSS/COS/Supabase Storage 签名,并把 JSON 导入扩展为异步 worker。
  2. 补地区/公共题库披露策略、租户套餐地区限制、主题模板系统。
  3. 补学习统计:练习历史、正确率趋势、错题复习计划、单词复习算法。
  4. 补视频商用控制SVIP 权限、签名 URL、防盗链、水印、播放次数扣减。
  5. 补 AI 择校推荐报告、排行榜、勋章自动发放。
  6. 接真实支付、短信、微信/QQ 登录 provider adapter并开始 Taro scaffold。